实验一创建数据库及关系表、数据完整性约束一、实验目的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.执行下列两条数据插入语句,是否都能执行成功?为什么?INSERTINTOBookVALUES('T0001','数据库系统基础','张三','2010-2-1',3000,28.0)实验结果:能执行INSERTINTOBookVALUES('T0002','计算机网络','张三','2010-1-1',500,36.0)实验结果:不能执行,原因:印刷数量小于10006.执行下列数据插入语句,是否执行成功?为什么?INSERTINTOStoreVALUES('S001','新华书店',,'北京市海淀区')实验结果:不能执行,原因:电话号码不符合标准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*fromStudentselect*fromCourseselect*fromSCselect*fromTeatherALTERTABLESCADD选课类别char(4)ALTERTABLECourseALTERCOLUMN学分tinyintALTERTABLEStudentDROPCOLUMN专业ALTERTABLETeatherADDconstraintysprimarykey(教师号)CREATEtableBook(书号NCHAR(6)primarykey,书名Nvarchar(30)notnull,第一作者CHAR(10)notnull,出版日期smalldatetimecheck(出版日期getdate()),印刷数量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(书店编号))INSERTINTOBookVALUES('T0001','数据库系统基础','张三','2010-2-1',3000,28.0)INSERTINTOBookVALUES('T0002','计算机网络','张三','2010-1-1',500,36.0)INSERTINTOStoreVALUES('S001','新华书店',,'北京市海淀区')INSERTINTOSale(书号,书店编号,销售数量)VALUES('T0001','S001',20)四、实验心得经过这次实验?掌握SQLServer数据库管理系统的基本使用,复习了建立关系表的语句,定义主码约束及外码约束的语句,和修改表结构的语句。了解了数据完整性约束的功能。希望下次实验能够学到更多数据库的知识。