前言:
在上一篇文章《创建数据库》中,我们学会了如何创建数据库,使用数据库,删除数据库。这一章我们继续承接上文,在上文,我们已经建立了三张表:
create table 学生 ( 学号 char(5) not null unique, 姓名 char(8) not null, 年龄 smallint default 20, 性别 char(2) check(性别 in ('男','女')), 所在系 char(20) ) GO create table 课程 ( 课程号 char(5) primary key, 课程名 varchar(20), 先行课 char(5) ) go create table 选课 ( 学号 char(5), 课程号 char(5), 成绩 smallint check(成绩 between 0 and 100), constraint c1 primary key(学号,课程号), constraint c2 foreign key(学号) references 学生(学号), constraint c3 foreign key(课程号) references 课程(课程号) ) go
PS :
作者在理解这个reference
的时候遇到了点困难,这里我是这样理解的。我们定义两个表,两个表中含有相同属性,将表2的相同属性定义为外键foreign key
,而这个外键的取值范围可以reference
表1的相同属性。
一.增加表的列
语法:
alter
table
表名 add
属性名 数据类型 是否为空
alter table 学生 add 年级 int null
输出:
二.删除表的列
语法:
alter table
表名 drop column
属性名
alter table 学生 drop column 年级 go
输出:
三.增加表的表级约束,并使其暂时约束失效
举列子:
我们为学生表增加一个表级约束--------年龄要大于18岁,并使其暂时约束失效。
这里我们需要使用constraint
配合check
使用。
alter table 学生 add constraint 年龄约束 check(年龄>18) go
当我们在代码执行成功后,我们在年龄里输入数字进行测试。
当我们输入的年龄超过18岁了,我们就可以输入成功了。
现在我们又要使刚刚加的年龄约束暂时失效,请看代码:
alter table 学生 nocheck constraint 年龄约束 go
这里我们要学习的知识点是nocheck constraint
约束名
值得说的是这个约束名就是在上面我们设置表级约束的时候起的一个名字------“年龄约束”。
执行一下代码:
这时候我们的年龄输入的是1,小于18,输入成功,说明“年龄约束”已经被取消了。我们只要把
nocheck
改成check
就可以又恢复那个约束了。
四.删除表
语法:
drop table
表名