基本表的创建
最简单的创建数据库语句——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;