SQL支持数据库系统的三级模式结构,其模式、外模式和内模式中的基本对象有表、视图和索引,因此,SQL的数据定义功能包括定义表、定义视图和定义索引。
前面【数据库系统概论】SQL是什么?它有什么特点?提到,SQL中只有三个数据定义动词,分别是:CREATE(创建)、DROP(删除)ALTER(修改)。虽然只有三个动词,但通过灵活的使用能够发挥强大的作用。
本篇文章介绍如何定义/创建、修改和删除基本表。
定义表需要定义表名、列名、列的数据类型。还可以定义与该表有关的完整性约束条件。
CREATE TABLE <表名>(
<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
定义表的各个属性时需要指明数据类型和长度。不同的RDBMS中支持的数据类型不完全相同
SQL Server中常用的完整性约束:
建立一个学生表Student,其中包括学号(Sno),姓名(Sname),性别(Ssex),年龄(Sage),入学时间(Sdate)5个属性。其中学号为主键,姓名唯一,入学时间不能为空。
CREATE TABLE Student
(Sno CHAR(6) PRIMARY KEY,
Sname CHAR(10) UNIQUE,
Ssex CHAR(2) CHECK(Ssex IN (’男’,’女’)),
Sage SMALLINT,
Sdate DATE NOT NULL);
建立一个课程表Course,其中包括课程号(Cno),课程(Cname),先修课(Cpno),学分(Ccredit)4个属性。其中课程号为主键,学分不能为空。
CREATE TABLE Course
(Cno CHAR(3) PRIMARY KEY,
Cname CHAR(20),
Cpno CHAR(3),
Ccredit SMALLINT NOT NULL);
建立学生选课表SC,其中包括学号(Sno),课程号(Cno)和成绩(Grade)。学号和课程号为主键。
CREATE TABLE SC
(Sno CHAR(6),
Cno CHAR(3),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno), /*表级完整性约束条件,(Sno,Cno)为主键*/
FOREIGN KEY (Sno) REFERENCES Studnet(Sno),
/*表级完整性约束条件,Sno为外键,参照Student表中的Sno*/
FOREIGN KEY (Cno) REFERENCES Course(Cno)
/*表级完整性约束条件,Cno为外键,参照Course表中的Cno*/
);
修改表包括:添加新的属性列、删除列、添加完整性约束、删除完整性约束、修改列的数据类型。
ALTER TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN ] <列名> ]
[DROP CONSTRAINT <完整性约束名>]
[ALTER COLUMN <列名> <数据类型> ];
向Student表中增加 “所在系(Sdept)”列:
ALTER TABLE Student ADD Sdept CHAR(20);
/* 注意当向表中新增加一列后,表中相应列的值为空值 */
将年龄的数据类型改为长整型:
ALTER TABLE Student ALTER COLUMN Sage INT;
基本表删除后,表中的数据以及此表上建立的索引、视图、触发器等都将自动被删除。另外,DROP TABLE不能用于删除由外键约束引用的表,必须先删除有外键约束条件的表,然后才能删除其引用的表。
DROP TABLE <表名>;
删除Student表:
DROP TABLE Student;
好啦,这次的分享就到这里,感谢大家看到这里