【从零开始设计一个数据库】基本表的定义

本文详细介绍了如何从零开始设计数据库的基本表,包括创建、修改和删除操作。创建基本表涉及数据类型的选取和完整性约束条件,如主键、外键、唯一性、默认值和检查约束。修改表内容包括增加列、修改列类型,而删除操作则涵盖删除列和完整性约束。整个过程详细阐述了SQL语句的使用方法,为数据库设计提供了基础指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本表的创建

最简单的创建数据库语句——CREATE DATABASE <数据库>

打开数据库——USE <数据库名>

基本表创建的一般格式:
CREATE TABLE <表名>
(
<属性名1><数据类型>[列级完整性约束条件]
[,<属性名2><数据类型>[列级完整性约束条件],
…[,<表级完整性约束条件>]
)

数据类型

数据类型含义
CHAR(n)长度为n的定长字符串
VARCHAR(n)最大长度为n的变长字符串
SMALLINT短整数
REAL取决于机器精度的浮点数
FLOAT(n)浮点数,精度至少为n位
NUMERIC(p,d)定点数,由p位数字(符号,小数点除外)组成,小数后面由d位数字
DECIMAL(p,d)定点数,由p位数字(符号,小数点除外)组成,小数后面由d位数字
DATE日期,包含年、月、日,格式为YYYY-MM-DD
TIME时间,包含一日的时、分、秒,格式为HH:MM:SS

列级完整性约束条件
PRIMARY KEY [(<属性列(组)>)]——定义主键约束,保证属性值的唯一性和非空性

定义外键约束
FOREIGN KEY (<外键>)
REFERENCES <被参照表名> (<与外键对应的主键名>)

  • ON UPDATE{CASCADE| NO ACTION}:

当修改被参照表中元组的主键值时,级联修改参照表中的所有关联元组对应外键值或拒绝执行修改操作。

  • ON DELETE{CASCADE | NO ACTION}:

当删除被参照表中元组时,级联删除参照表的所有关联元组或拒绝执行删除操作。
例子:创建一个表

CARATE TABLE SC
(
SNO CHAR(6),
CNO CHAR(6),
GRADE DEC(4,1),
PRIMARY KEY(SNO,CNO)
FOREIGN KEY(SNO) REFERENCES S(SNO),
FOREIGN KEY(CNO) REFERENCES C(CNO)
);
用户定义完整性定义
  • NOT NULL 或 NULL约束

允许属性值是否为空,默认为“NULL”,对关系的主属性必须限定为“NOT NULL”
,以满足实体完整性

  • UNIQUE约束

唯一性约束,即不允许属性列中出现重复的属性值

  • DEFAULT约束

默认值约束

  • CHECK约束

检查约束,通过约束条件表达式设置属性值列值应满足的条件

例子:

CREATE TABLE S
(
SNO CHAR(6) PRIMARY KEY,
SN CHAR(10) NOT NULL,	//项目不能为空值
SD CHAR(16),
SB DATE,
SEX CHAR(2) DEFAULT '男',	//性别默认为男
CHECK (SEX IN('男','女'))		//性别取值只能为男和女
);

基本表的修改

增加列或表约束规则

ALTER TABLE <表名>
ADD < 属性列名><数据类型>[完整性约束 | 完整性约束]
例子:

  • 在学生表S中加入一属性列表示学生的籍贯
ALTER TABLE S ADD SH CHAR(30);
  • 在学生关系表S补充定义SNO为主键
LTER TABLE S ADD PRIAMRY KEY (SNO);
修改原有列的类型

ALTER TABLE <表名>
ALTER COLUMN <属性列名><数据类型>;
例子:

  • 将基本表S中的学生姓名SN长度修改为12
ALTER TABLE S
ALTER COLUMN SN CHAR(12);

基本表的删除

删除原有的列或约束规则

ALTER TABLE <表名>
DROP {[CONSTRAINT] <完整性约束> | COLUMN <列名> [CASCADE | RESTRICT]};
解释什么是RESTRICT: 在没有视图或约束引用该属性时,该属性列才能被删除
解释什么是CASCADE: 表示删除某列时,所有引用该列的视图和约束也被自动删除。

例子:

  • 删除基本表S中学生的性别SEX属性列
ALTER TABLE S
DROP COLUMN SEX;

删除基本表

DROP TBALE <表名> [CASCADE | RESTRICT]

例子:

  • 删除基本表S
DROP TBALE S CASCADE;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值