alter table student add constraint pk_student primary key (sno)
2.4.3 创建唯一性约束
操作:在student表中,创建“sphone”字段惟一性约束,并且将约束命名为uq_sphone
alter table student
add constraint uq_sphone
unique (sphone)
2.4.4 创建外键约束
create table sc ( sno char ( 6 ) not null references student ( sno ), cno char ( 3 ), grade tinyint primary key (sno,cno), foreign key ( cno ) references course ( cno ) )
2.4.5 创建检查约束
操作1:在student表中,设置名为ck_student的检查约束,该约束限制“性别”为man或woman
alter table student
add constraint ck_student
check (sex=man or sex=woman) 操作2:在学生与课程表sc中,添加名ck_sc j的检查约束,该约束限制“成绩”在0到100之间
alter table sc add constraint ck_sc check (grade>=0 and grade<=100)
2.4.6 设置默认约束
操作1:新建表时添加
create table student ( name char(6) not null, age int(10) null, sex char(5) default 'man' )操作2:修改已有的表
alter table student
add constraint df_student
default 'man' for sex
2.4.7 创建约束小结
create table student
(sno char (6) not null ,
sname char (8) not null ,
ssex bit , 电话 char(11) )
alter table xsqk
add constraint pk_xsqk_xh primary key (学号),
constraint df_xsqk_xb default 1 for 性别,
constraint ck_xsqk_xb check (性别=1 or 性别=0 ),
constraint uq_xsqk_dh unique (电话)
create table student ( sno char (6) primary key (学号) check (学号 like '[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]'), sname char (8) not null , ssex bit default 1 check (ssex=0 or ssex=1) , sphone char(11) unique (sphone) )
2.4.8 删除约束
alter table student drop constraint pk_xsqk_xh alter table student drop constraint uq_xsqk_dh alter table student drop constraint ck_xsqk _xb alter table student drop constraint ck_xsqk _xh alter table student drop constraint df_xsqk_xb
2.5 修改基本表
2.5.1 增加列
语法: alter table 表名 add <列定义>[<列约束>][ ,……n ]关于“标识列”: 每个表中都可以有一个标识列,其作用是由系统自动生成能标识表中每一行数据的惟一序列值。(其实可以理解为行号)
“标识列”定义格式: identity [ (seed, increment) ] 说明:seed为初始值,increment为增长的步长。意思就是你从几开始增长,每次增长几。省略时,初始值为1,步长为1.
操作:在student表中,增加三列
alter table student
add address char(10) constraint df_xsqk_jg default ‘shanghai’ ,
email varchar(30),
number int identity
go
2.5.2 修改列
语法: alter table 表名 alter column 列名 新类型[(长度[,小数位数])]
操作1:将sc表的grade列的数据类型修改为numeric(4,1)
alter table sc alter column grade numeric(4,1)
操作2:将sc表的grade列的数据类型修改为int
alter table sc alter column grade int
注意:
1.不能修改text、image、ntext、gimestamp类型的列;
2.不能修改类型是varchar、nvarchar、varbinary的列的数据类型,但可增加其长度。
3.不能修改是主键、外键列的类型,但可增加其长度;
4.不能修改包含索引、有默认值、检查约束和惟一性约束列的类型,但可增加其长度。
5.不能修改用列表达式定义或被引用在列表达式中的列。
6.不能修改复制列。
2.5.3 修改表中的数据
语法:
update 表名
set {列名 = 表达式 | null | default } [ , … n ] )
[ where 逻辑表达式 ]
操作:将sc表中的课程号为101的成绩不及格的学生的成绩都加上10分
update sc set grade = grade + 10 where ( cno = '101' and grade < 60)
2.6 删除基本表
2.6.1 删除列
注意:若列上有约束,所以应先删除该约束后,再删除该列。语法: alter table 表名 drop column 列名
操作:
--先删除表中的约束 Alter table student drop constraint df_xsqk_jg --再删除表中的列 Alter table student drop column address,email,number
2.6.2 删除行
语法: delete [from]表名
[ where 逻辑表达式 ]
操作:删除student表中姓名为zhangsan的数据记录
delete from student where name = 'zhangsan'
2.6.3 重命名数据表
语法: exec sp_rename '表名','新表名'
操作:将student表重命名为rename_student
exec sp_rename ‘student’,'rename_student'
2.6.4 删除数据表
注意:如果要删除的表T1是其他表T2的参照表,即如果T2有外键约束,参照了T1的数据项,则不能删除。需要先取消T2表中的外键约束载删除T1,或者先删除T2表再删除T1表。语法: drop table 表名[ ,……n ]
操作:已知sc表设置了外键约束,参照了表student和表course,现在要删除student表和course表。
Drop table sc go Drop table student ,cour