一、模式(Schema)的概念
当我刚学到模式这个概念时,特别不理解。其实,schema就是把数据库分成许多集合,每个集合包含了各种对象,如:表、视图、储存过程和索引等。不同的集合有不同的名字,默认情况下用户名就是模式名。如果把一个数据库看成是一个幢楼,大楼里面的每个房间就是一个模式,而房间里面的各种物品就是表、索引等。这样解释,应该比较容易理解。在MySQL中,模式的概念与database差不多。
二、定义基本表
这里以创建学生选课基本表为例子
建立学生表Student
CREATE TABLE Student
-> ( Sno CHAR(9) PRIMARY KEY,/*列级完整性约束,主键约束*/
-> Sname CHAR(20) UNIQUE,/*列级完整性约束,唯一约束*/
-> Sage SMALLINT
-> );
建立课程基本表Course
CREATE TABLE Course
-> (Cno CHAR(4) PRIMARY KEY, /*列级完整性约束,主键约束*/
-> Cname CHAR(40) NOT NULL, /*列级完整性约束,非空约束*/
-> Cpno CHAR(4),/*先行课*/
-> FOREIGN KEY(Cpno) REFERENCES Course(Cno)/*表级完整性约束,外码,被参照表示Course,参照列是Cno*/
-> );
建立学生选课表SC
CREATE TABLE SC
-> (
-> Sno CHAR(9),
-> Cno CHAR(4),
-> PRIMARY KEY(Sno,Cno),/*主码有两个属性构成,必须作为标记完整性定义*/
-> FOREIGN KEY(Sno) REFERENCES Student(Sno),/*表级完整性约束,Sno是外码,被参照表为Student*/
-> FOREIGN KEY(Cno) REFERENCES Course(Cno) /*表级完整性约束,Cno是外码,被参照表为Course*/
-> );
这里要重点注意的是PRIMARY KEY和UNIQUE都强制实施唯一性,但是PRIMARY KEY不允许NULL的唯一。还要注意何时要用表级约束,何时用列级约束。
三、修改基本表
ALERT TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束] ] /*新增列*/
[ADD <表级完整性约束>] /*添加表级完整性约束*/
[DROP [COLUMN] <列名> [CASCADE|RESTRICT] ] /*删除表中的列*/
[DROP CONSTRAINT<完整性约束名> [RESTRICT|CASCADE] ] /*删除指定的约束*/
[ALTER COLUMN <列名> <数据类型>];/*修改原有列的定义,包括修改列名和数据类型*/
注意:[ ]中的都是可选的,CASCADE代表级联,若删除的列选了这个选项,则删除所有引用该列的其他对象,如视图,而如果选择了RESTRICT且删除列,若该列被其他对象引用,则拒绝删除。
四、删除基本表
DROP TABLE<表名> [RESTRICT|CASCADE]