CREATE TABLE学生信息表 学号 CHAR(5 NOT NULL, 姓名 CHAR(10) NOT NULL, 性别 CHAR(2) 院系 CHAR(20) 出生年月 DATE, 户籍地 CHAR(10) 是否党员 CHAR(2) 当前绩点(GPA)REAL, 备注 CHAR(255) PRIMARY KEY(学号 算机基础教研蜜
计算机基础教研室 • CREATE TABLE 学生信息表 • (学号 CHAR(5) NOT NULL, • 姓名 CHAR(10) NOT NULL, • 性别 CHAR(2), • 院系 CHAR(20), • 出生年月 DATE, • 户籍地 CHAR(10), • 是否党员 CHAR(2) • 当前绩点(GPA)REAL, • 备注 CHAR(255), • PRIMARY KEY(学号)); 21
CREATE TABLE成绩表 学号 CHAR(5), ·课程代码 CHAR(12), 成绩 REAL, PRIMARY KEY(学号,课程代码) FOREIGN KEY(学号) REFERENCES学生信息表学 号) FOREIGN KEY(课程代码) REFERENCES选课表课 程代码) ); 22 计算机基础教研室
计算机基础教研室 • CREATE TABLE成绩表 • (学号 CHAR(5), • 课程代码 CHAR(12), • 成绩 REAL, • PRIMARY KEY(学号, 课程代码), • FOREIGN KEY(学号) REFERENCES学生信息表(学 号), • FOREIGN KEY(课程代码) REFERENCES选课表(课 程代码) • ); 22
在基本表成绩表的定义中说明了主键是学号,课程代 码),还定义了两个外键,并指出外键学号和学生信息 表中学号列对应,外键课程代码和选课表中的课程代 码列相对应 在上例中,每个语句结束时加了分号;”。但读者应注 意,在SQL标准中,分号不是语句的组成部分。在具 体DBMS中,有的系统规定必须加分号,表示语句结 束,有的系统规定不加。本书为了醒目,特在每个语 句结束后加分号。 在用 CREATE语句创建基本表中,最初只是一个空的 框架,接下来,用户可使用 NSERT命令把数据插入基 本表中。关系数据库产品都有数据装载程序,可以把 大量原始数据载入基本表。 计算机基础教研室
计算机基础教研室 • 在基本表成绩表的定义中说明了主键是(学号, 课程代 码),还定义了两个外键,并指出外键学号和学生信息 表中学号列对应,外键课程代码和选课表中的课程代 码列相对应。 • 在上例中,每个语句结束时加了分号“;”。但读者应注 意,在SQL标准中,分号不是语句的组成部分。在具 体DBMS中,有的系统规定必须加分号,表示语句结 束,有的系统规定不加。本书为了醒目,特在每个语 句结束后加分号。 • 在用CREATE语句创建基本表中,最初只是一个空的 框架,接下来,用户可使用INSERT命令把数据插入基 本表中。关系数据库产品都有数据装载程序,可以把 大量原始数据载入基本表。 23
2.基本表结构的修改 在基本表建立并使用一段时期后,可以根据实际需要 对基本表的结构进行修改,即增加新的列、删除原有 的列或修改数据类型、宽度等。 (1)增加新的列用“ ALTERADD.语句,其语法 如下: ALTER TABLE<基本表名>ADD<列名><类型> 算机基础教研蜜
计算机基础教研室 • 2. 基本表结构的修改 • 在基本表建立并使用一段时期后,可以根据实际需要 对基本表的结构进行修改,即增加新的列、删除原有 的列或修改数据类型、宽度等。 • (1)增加新的列用“ALTER…ADD…”语句,其语法 如下: • ALTER TABLE <基本表名> ADD <列名> <类型> 24
例92:在基本表学生信息表中增加一个地址 ( ADDRESS)列,可用下列语句 ALTER TABLE学生信息表 ADD ADDRESS VARCHAR( 30); 应注意,新增加的列不能定义为“ NOT NULLS。基本 表在增加一列后,原有元组在新增加的列上的值都被 定义为空值(NULL (2)删除原有的列用“ ALTER.DROP,”语句,其句 法如下: ALTER TABLE<基本表名>DROP<列名> [CASCADERESTRICT] 此处 CASCADE方式表示:在基本表中删除某列时, 所有引用到该列的视图和约束也要一起自动地被删除。 而 RESTRICT方式表示在没有视图或约束引用该属性 时,才能在基本表中删除该列,否则拒绝删除操作。 25 计算机基础教研室
计算机基础教研室 • 例9.2:在基本表学生信息表中增加一个地址 (ADDRESS)列,可用下列语句: • ALTER TABLE 学生信息表 ADD ADDRESS VARCHAR(30); • 应注意,新增加的列不能定义为“NOT NULL”。基本 表在增加一列后,原有元组在新增加的列上的值都被 定义为空值(NULL)。 • (2)删除原有的列用“ALTER…DROP…”语句,其句 法如下: • ALTER TABLE <基本表名> DROP <列名> [CASCADE|RESTRICT] • 此处CASCADE方式表示:在基本表中删除某列时, 所有引用到该列的视图和约束也要一起自动地被删除。 而RESTRICT方式表示在没有视图或约束引用该属性 时,才能在基本表中删除该列,否则拒绝删除操作。 25