- 检验是否存在指定数据库
if exists(select * from sysdatabases where name='XSGL')
- 检验是否存在指定列
if exists(select *from syscolumns where id='student' and name='uid')
- 检验是否存在指定表
if exists(select * from sysobjects where name='teacher')
添加和删除
添加
- 为student表新增一列id
identity(m,n)表示标识类型,标识种子是1,增量为1,当用户删掉某一行后,标识号并不会被删掉
alter table student
add id int identity(1,1);
- 为student表新增一列入学日期
alter table student
add en_date date;
删除
- 删除日期的约束
alter table student
drop constraint df_en_date;
- 删除student表中的uid列
alter table student drop column uid;
一、实体完整性
- not null 非空 字段默认允许为空
alter table student
alter column sno char(5) not null;
--将student表中的sno设置为非空,因为默认状态下为“允许为空”
- primary key 主键约束 主键非空且唯一
alter table student
add constraint pk_sno primary key(sno);
- unique 唯一值,不允许重复
alter table student
add constraint uq_sname unique(sname);
- 将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);
二、域完整性
- check约束,设置ssex的取值
alter table student
add constraint ck_ssex check(ssex in('男','女'));
- check约束,设置sage取值范围
alter table student
add constraint ck_sage check(sage between 15 and 50);
//或者 check(sage>15 and sage<50)
- default约束,给ssex设置默认值
alter table student
add constraint df_ssex default('女') for ssex;
- 添加一身份证号字段,设置其惟一性
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)) );
参照完整性
- 将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);