SQLServer完整性实验

  1. 检验是否存在指定数据库
if exists(select * from sysdatabases where name='XSGL')
  1. 检验是否存在指定列
if exists(select *from syscolumns where id='student' and name='uid')
  1. 检验是否存在指定表
if exists(select * from sysobjects where name='teacher')

添加和删除

添加

  1. 为student表新增一列id
    identity(m,n)表示标识类型,标识种子是1,增量为1,当用户删掉某一行后,标识号并不会被删掉
alter table student
add  id int identity(1,1); 
  1. 为student表新增一列入学日期
alter table student
add en_date date; 

删除

  1. 删除日期的约束
alter table student
drop constraint df_en_date;
  1. 删除student表中的uid列
alter table student drop column uid;

一、实体完整性

  1. not null 非空 字段默认允许为空
alter table student
alter column sno char(5) not null;   
--将student表中的sno设置为非空,因为默认状态下为“允许为空”
  1. primary key 主键约束 主键非空且唯一
alter table student
add constraint pk_sno primary key(sno);
  1. unique 唯一值,不允许重复
alter table student
add constraint uq_sname unique(sname);
  1. 将sc表中的sno,cno设置为非空,然后设置成主键,并将其设置为外键
    主码是多个属性时一定要进行表级约束
alter table sc
alter column sno char(5) not null;
alter table sc
alter column cno char(2) not null;

alter table sc
add constraint pk_snocno primary key(sno,cno);

二、域完整性

  1. check约束,设置ssex的取值
alter table student
add constraint ck_ssex check(ssex in('男','女'));
  1. check约束,设置sage取值范围
alter table student
add constraint ck_sage check(sage between 15 and 50);
//或者  check(sage>15 and sage<50)
  1. default约束,给ssex设置默认值
alter table student
add constraint df_ssex default('女') for ssex;
  1. 添加一身份证号字段,设置其惟一性
alter table student add uid char(18) unique (uid);

设置身份证号的输入格式:

alter table student add constraint 
ck_uid_format check ((uid like '[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_') 
or (uid like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'));

设置18位身份证号的第7位到第10位为合法的年份(1900-2050)
convert()函数是把日期转换为新数据类型的通用函数;可以用不同的格式显示日期/时间数据。
详细见W3C-convert()函数

alter table student add constraint 
ck_uid_format2 check ( not len(uid)=18 
or ( (convert(smallint,substring(uid,7,4) )>=1900) 
and(convert(smallint,substring(uid,7,4) )<=2050)) );

参照完整性

  1. 将sc表中的sno,cno设置为外键
alter table sc
add constraint fk_sno
foreign key(sno) references student(sno);
alter table sc
add constraint fk_cno
foreign key(cno) references course(cno);

猜你喜欢

转载自blog.csdn.net/iTaylorfan/article/details/106448829