目录
知识点
在SQL Server 2012中有6种约束 ,它们分别是:
分为:列约束和表约束
完整性约束的基本语法格式:
[CONSTRAINT constraint_name(约束名)]<约束类型>
约束不指定名称时,系统会给定一个名称。
alter database [数据库名]
add file -----添加数据文件
alter database [数据库名]
add log file -----添加日志文件
alter database [数据库名]
modify file -----修改指定文件
alter database [数据库名]
remove file -----删除指定文件
问题举例
现对数据完整性提出以下的要求,请创建这三张表。
tb_student表
tb_course表
tb_score表
代码
create table tb_student
(sno nchar(10)constraint pk_tb_student primary key,
sn nvarchar(10)not null,
sex nchar(2)null,
dept nchar(10)default'软件学院',
polity char(20)null,
constraint ck_sex check(sex='男'or sex='女'),
constraint ix_sn unique(sn)
)
create table tb_course
(
cno nchar(10) primary key,
cn nchar (10) not null,
xf float not null
)
create table tb_score
(sno nchar(10),
cno nchar(10),
score float not null,
constraint fk_tb_score_tb_student foreign key(sno)
references tb_student(sno),
constraint fk_tb_score_tb_course foreign key(cno)
references tb_course(cno),
constraint pk_student primary key(sno, cno)
)
题目
实验内容:
--仔细阅读数据表1-表 4,考虑各字段添加约束是否合理。
--编写 T-SOL 语句,创建表以及约束。
--查看创建表的信息。通过向表中插入数据验证数据完整性,并回答相应问题。
实验任务 1
利用T-SQL完成书籍信息表(tbBookInfo)的设计与创建
实验任务2
按要求完成数据表完整性的设计,要求利用T-SQL在书籍信息表(tbBookInfo)中添加以下约束:
1)在书籍编号字段上添加主键约束
2)在类别编号字段上添加外键约束
3)在登记日期字段上添加当前日期
4)在是否借出字段上默认值为0
试验数据:
在数据表中可以添加两个编号都是’0002’的书吗
在数据表中添加一条数据时,如果不给COLDJRQ字段值,该字段的值是多少?
将cLBBH字段内的数据输入一个在书籍类别信息表中不存在的类别编号可以吗?
试验数据:
--写出“应还书日期>借书日期约束语句
--在数据表中应还书日期可以比借书日期小吗
--在读者编号字段可以输入10个以上长度字符吗
实验任务 3
利用 T-SQL 完成数据表 2、数据表3的设计与创建
实验任务 4
利用 T-SQL语句,在借书信息表(tbLentInfo)表中加入一列co1BZ(备注),数据类型varchar,长度100
实验任务 5
利用T-SQL语句删除coBZ(备注)列
实验任务6
利用T-SQL语句删除借书信息表(tb_LentInfo)中应还书日期字段上的检查约束
代码
--实验二
--创建读者基本信息表tb_ReaderInfo
create table tb_ReaderInfo
(
--编号
DZBH char(10) constraint tb_ReaderInfo primary key,
--姓名
DZMC varchar(10)not null,
--办证日期
BZSJ Datetime default getdate(),
--联系电话
LXDH varchar(30) not null,
)
--创建书籍类别表tb_BookType
create table tb_BookType
(
--类别编号
LBBH char(2) constraint tb_BookType primary key,
--类别名称
LBMC char(30) not null,
)
--书籍信息表tb_BookInfo
create table tb_BookInfo
(
--书籍编号
SJBH char(10)not null,
--书籍名称
SJMC varchar(20)not null,
--类别编号
LBBH char(2),
--出版社
CBS varchar(30),
--作者
ZZ varchar(20),
--登记日期
--在登记日期字段上添加当前日期
--创建类别表tb_BookType
DJRQ Datetime default getdate(),
--是否借出
SFJC bit default 0,
primary key(SJBH),
--创建类别编号的外键约束
-- 创建类别表tb_BookType
-- 修改书籍信息表
constraint FK_LBBH_Category foreign key (LBBH) references tb_BookType (LBBH),
)
--借书信息表tb_LentInfo
create table tb_LentInfo
(
--读者编号
DZBH char(10),
--书籍编号
SJBH char(10),
primary key (DZBH,SJBH),--复合主键约束
--借书日期
JSRQ Datetime not null,
--应还书日期
YHSRQ Datetime not null,
--实还书日期
HSRQ Datetime,
constraint CHK_YHSRQ_JSJSRQ check (YHSRQ > JSRQ),
--在此表中加入一行colBZ(备注),数据类型varchar,长度100
)
alter table tb_LentInfo
add colBZ varchar(100);
-- 修改借书信息表,删除colBZ列
alter table tb_LentInfo
drop column colBZ;
-- 删除tb_LentInfo表的检查约束
alter table tb_LentInfo
drop constraint CHK_YHSRQ_JSJSRQ;
--拓展
--产品表
create table tb_CP
(
--产品编号
CPBH char(6)not null,
--产品名称
CPMC char(30)not null,
--价格
JG float(8),
--库存量
--设置库存量大于0
KCL int,
constraint CHK_KCL check (KCL > 100 and KCL<=350),
--把产品编号定义为主键
primary key(CPBH),
-- 给产品名称设置唯一性约束
constraint UQ_CPMC unique(CPMC)
)
--删除产品库存量的限制约束
alter table tb_CP
drop constraint CHK_KCL
--销售商
create table tb_XSS
(
--销售商编号
XSBH char(6)not null,
--销售商名称
XSMC char(30)not null,
--地区
DQ char(10),
--负责人
FZR char(8),
--电话
DH char(12),
--备注(16)
BZ text,
--把销售商编号设置为主键
primary key (XSBH),
--给销售商名称设置唯一性约束
constraint UQ_XSMC unique(XSMC)
)
--产品销售
create table tb_XSCP
(
--产品编号
CPBH char(6),
--销售商编号
XSBH char(6),
--销售时间(8)
XSSJ Datetime default getdate(),
--数量(4)
SL int,
constraint CHK_SL check(SL>0),
--金额(8)
--设置默认金额为0
JE float default 0,
--把产品编号和销售商编号设置为联合主键
primary key(CPBH,XSBH),
--创建外键
--销售商表的主键(销售商编号)设置为产品销售表的外键
constraint fk_tb_XSCP_tb_CP foreign key(CPBH) references tb_CP,
--产品销售表的主键(产品编号)设置为产品销售表的外键
constraint fk_tb_XSCP_tb_XSS foreign key(XSBH)references tb_XSS
)