(四):数据库表和列中的约束的使用示例

--列约束
--表约束
--列约束 :针对表中一个列的约束
--表约束 :针对表中一个或多个列的约束


--SQL中的约束分类 : primary key 、foreign key 、unique 、check 、default
--在定义表的同时设置primary key 约束
create table 学生
(
 学号 char(7) primary key,
 姓名 char(8) not null,
 性别 char(2) ,
 年龄 int ,
 专业 char(8)
)


--在创建主键约束的同时自己指定约束名
create table 选课
(
 学生号 char(4) ,
 课程号 char(7),
 constraint pk_yyc primary key (学生号,课程号)
)


//
--使用alter table 的add constraint 语句添加约束
create table yyc
(
 xuehao char(7),
 xingbie char(2),
 nianling int
)
--修改列添加not null 约束
alter table yyc 
alter column xuehao char(7) not null
--修改列添加primary key约束 使用alter table 的add constraint 语句
alter table yyc 
add constraint pk_y primary key(xuehao)


--删除主键约束
alter table yyc 
drop constraint pk_y


//
--创建和删除unique约束
--unique唯一性约束,主键自动具有唯一性约束,另外指定具有unique约束的列都是候选主键
--唯一性约束可以同时使用在几个列的组合上,这些组合的值必须唯一
--unique和primary key 的区别 :unique约束的列可以取空值,但是主键的列必须设置为not null


--在创建表的时候设置唯一性约束
create table mm
(
  aa char(2) primary key,
  bb int constraint nu_mm unique
)
alter table mm
add cc int 
--在修改表的时候添加unique唯一性约束
alter table mm
add constraint nu2_mm unique(cc)
--删除表中的唯一性约束
alter table mm
drop constraint nu2_mm


//
--创建和删除外键约束foreign key
--在Create table时添加外键约束
Create table nn
(
 学号 char(7) foreign key references  学生(学号),
 身份证号 char(10) primary key
)
Create table oo
(
 学号 char(7) constraint fk_oo foreign key references  学生(学号),
 身份证号 char(10) primary key
)
--删除外键约束
alter table oo
drop constraint fk_oo
--使用alter table 时添加外键约束
use test 
go
alter table oo
add constraint fk_oo1 foreign key (学号) references 学生(学号)


alter table oo
drop constraint fk_oo1




//
--创建和删除check约束


--创建表时创建check约束
create table yyy
(
 aa int primary key,
 bb int not null check(bb>=135)
)
create table ccc
(
 aa int primary key,
 bb int constraint ck_oi check(bb>=135)
)
--check与in结合指定参数范围的指定集合
create table yu
(
 aa int primary key,
 bb char(2) constraint ck_oi1 check (bb in (‘男‘,‘女‘))
)
--删除check约束
alter table yu
drop constraint ck_oi1
--在alter table 的同时添加check约束
alter table yu
add constraint ck_ooo check(bb in (‘男‘,‘女‘))


//
--创建和删除default约束
--default约束作用 :当使用insert语句插入数据时如果没有为某一列指定数据,那么default约束就在该列中输入一个默认值
--default约束只能应用于insert语句
 --在创建表时指定default约束
create table ww
(
 aa int primary key,
 sex char(2) default ‘男‘,
)
create table hh
(
 aa int primary key,
 sex char(2)constraint df default ‘男‘,
)
--删除default约束
alter table hh
drop constraint df
--在alter table 时指定default约束  
--此时需要用到default 默认值 for 列名
alter table hh
add constraint ddf default ‘男‘ for sex

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。