实验一创建数据库及关系表数据完整性约束.docx
《实验一创建数据库及关系表数据完整性约束.docx》由会员分享,可在线阅读,更多相关《实验一创建数据库及关系表数据完整性约束.docx(10页珍藏版)》请在冰豆网上搜索。
实验一创建数据库及关系表数据完整性约束
实验一-创建数据库及关系表、数据完整性约束
实验一 创建数据库及关系表、数据完整性约束
网工1203熊健羲2012011438
一、实验目的
1. 掌握SQLServer数据库管理系统的使用,能够在该环境中进行日常数据库操作;
2. 掌握在SQLServer中使用图形化工具创建数据库的方法;
3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;
4.掌握修改表结构的语句。
5.掌握数据完整性约束的功能。
二、实验内容和步骤
1.创建符合如下条件的数据库:
数据库的名字为:
Students
数据文件的逻辑文件名为:
Students_dat,存放在用户盘某目录下;
文件的初始大小为:
5MB;增长方式为自动增长,每次增加1MB。
实验结果:
2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。
实验结果:
3.写出实现如下操作的SQL语句,并查看执行结果:
(1)在选课表中添加一个新的修课类别列:
列名为:
选课类别,类型为char(4)。
(2)将课程表中的学分列的类型改为:
tinyint(微整型,取值范围在0~255)。
(3)删除学生表的专业列。
(4)为教师表添加主码约束,其主码列为:
教师号。
实验结果:
4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。
(1)图书表,结构如下:
书号:
统一字符编码定长类型,长度为6,主码,
书名:
统一字符编码可变长类型,长度为30,非空,
第一作者:
普通编码定长字符类型,长度为10,非空,
出版日期:
小日期时间型,小于等于当前系统日期,(用getdate()实现)
印刷数量:
小整型,取值范围:
1000~5000,默认为4000,
价格:
定点小数,小数部分一位,整数部分3位。
实验结果:
(2)书店表,结构如下:
书店编号:
统一字符编码定长类型,长度为6,主码,
店名:
统一字符编码可变长类型,长度为30,非空,
电话:
普通编码定长字符类型,12位长,取值形式:
010-8位数字
地址:
普通编码可变长字符类型,40位长。
前两个字符必须是:
北京。
实验结果:
(3)图书销售表,结构如下:
书号:
统一字符编码定长类型,长度为6,非空,
书店编号:
统一字符编码定长类型,长度为6,非空,
销售日期:
小日期时间型,非空,默认值为系统当前日期,
销售数量:
微整型,取值大于0,主码(书号,书店编号,销售日期);
书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。
实验结果:
5.执行下列两条数据插入语句,是否都能执行成功?
为什么?
INSERTINTOBook
VALUES('T0001','数据库系统基础','张三','2010-2-1',3000,28.0)
实验结果:
能执行
INSERTINTOBook
VALUES('T0002','计算机网络','张三','2010-1-1',500,36.0)
实验结果:
不能执行,原因:
印刷数量小于1000
6.执行下列数据插入语句,是否执行成功?
为什么?
INSERTINTOStoreVALUES('S001','新华书店','12345678','北京市海淀区')
实验结果:
不能执行,原因:
电话号码不符合标准
7.执行一条数据插入语句,是否执行成功?
为什么?
INSERTINTOSale(书号,书店编号,销售数量)VALUES('T0001','S001',20)
实验结果:
不能执行,原因:
store是sale外键,其中store并没有添加进数据。
三、实验源码
CREATEtableStudent(
学号CHAR(7)primarykey,
姓名NCHAR(5)notnull,
性别NCHAR
(1),
年龄TINYINT,
所在系NVARCHAR(20),
专业NVARCHAR(20)
)
CREATEtableCourse(
课程号CHAR(6)primarykey,
课程名NVARCHAR(20)NOTNULL,
学时数TINYINT,
学分TINYINT
)
CREATETABLESC(
学号CHAR(7)NOTNULL,
课程号CHAR(6)NOTNULL,
成绩TINYINT,
PRIMARYKEY(学号,课程号),
FOREIGNKEY(学号)REFERENCESStudent(学号),
FOREIGNKEY(课程号)REFERENCESCourse(课程号)
)
CREATEtableTeather(
教师号CHAR(7)notnull,
教师名NCHAR(5)notnull,
所在部门NVARCHAR(20),
工资Smallmoney,
出生日期Smalldatetime
)
select*fromStudent
select*fromCourse
select*fromSC
select*fromTeather
ALTERTABLESC
ADD选课类别char(4)
ALTERTABLECourse
ALTERCOLUMN学分tinyint
ALTERTABLEStudent
DROPCOLUMN专业
ALTERTABLETeather
ADDconstraintysprimarykey(教师号)
CREATEtableBook(
书号NCHAR(6)primarykey,
书名Nvarchar(30)notnull,
第一作者CHAR(10)notnull,
出版日期smalldatetimecheck(出版日期印刷数量Smallintcheck(印刷数量<5000and印刷数量>1000)default(4000),
价格decimal(3,1)
)
CREATEtableStore(
书店编号NCHAR(6)primarykey,
店名NVARCHAR(30)NOTNULL,
电话Char(12)check(电话like'010-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
地址Varchar(40)check(地址like'北京%')
)
CreatetableSale
(
书号NCHAR(6)notNULL,
书店编号Nchar(6)notNULL,
销售日期Smalldatetimedefaultgetdate(),
销售数量tinyintcheck(销售数量>0),
primarykey(书号,书店编号,销售日期),
foreignkey(书号)referencesBook(书号),
foreignkey(书店编号)referencesStore(书店编号)
)
INSERTINTOBook
VALUES('T0001','数据库系统基础','张三','2010-2-1',3000,28.0)
INSERTINTOBook
VALUES('T0002','计算机网络','张三','2010-1-1',500,36.0)
INSERTINTOStoreVALUES('S001','新华书店','12345678','北京市海淀区')
INSERTINTOSale(书号,书店编号,销售数量)VALUES('T0001','S001',20)
四、实验心得
经过这次实验 掌握SQLServer数据库管理系统的基本使用,复习了建立关系表的语句,定义主码约束及外码约束的语句,和修改表结构的语句。
了解了数据完整性约束的功能。
希望下次实验能够学到更多数据库的知识。