实验内容版权所有,转载请注明来源2020-01-03by黄玉兰实验二基本表的创建与约束机制1、约束的类别Primarykey主键约束Foreignkey外键约束Unique唯一值约束Default默认值约束Check检查约束2、约束的创建方式举例(请按要求完成以下实验任务)创建方式有两种,一种是SQL,一种是SSMS,所有操作请在以自己姓名命名的数据库下进行,并及时刷新对象资源管理器查阅执行结果。代码按照“实验须知”中要求的命名方式存储在.sql文件中。注:遇到问题时可查阅实验2-1和2-2文档中的示例。创建以“自己姓名_library”为名的数据库,并在此数据库中创建“图书”、“出版社”、“学生”以及“借阅”四张表(不指定创建方式,自由选择)。表结构如下“图书”表结构列名数据类型是否为空约束书号Char(6)否主键书名Varchar(20)否数量int大于0位置Varchar(20)出版社编号Char(6)外键“出版社”表结构列名数据类型是否为空约束出版社编号Char(6)否主键出版社名称Varchar(30)否唯一约束电话Char(11)邮编Char(6)六位纯数字地址Varchar(30)“学生”表结构列名数据类型是否为空学号Char(8)否姓名Varchar(20)否性别Char(2)院系Char(20)实验内容版权所有,转载请注明来源2020-01-03by黄玉兰“借阅”表结构列名数据类型是否为空学号Char(8)否书号Char(6)否借书日期datetime还书日期datetimeT-sql语句实现约束(实践部分)完成以下实验要求,并在实验报告上认真如实记录实验数据。(第二次要求写成报告的实验)1、利用T-SQL语句在library数据库中做出以下修改。(1)利用T-SQL语句在“学生”表中增加列“民族”,数据类型为varchar(6),默认值为“汉”。(2)在“学生”表中修改列“姓名”,数据类型为char(20)。(3)在“借阅”表中增加列“到期日期”,数据类型为datetime。说明,datetime为日期型。2、利用T-SQL语句在library数据库中添加以下约束:(自行验证约束是否设置成功)(1)为“学生”表定义主键列,主键列为“学号”。(2)在“借阅”表中添加一默认约束default,借书日期默认值为getdate()。(3)为“借阅”表的“学号”列设置foreignkey约束,“学号”列外键约束于“学生”表中的“学号”列。(4)为“学生”表中“学号”列设置check约束,要求输入的学号是必须数字形式。说明:以上各约束名可自定义。原则知名达意。3、利用t-sql语句在library数据库中做以下数据操作:(1)在“学生”表中插入一条记录,记录信息为(“08010110”,“张敏”,“女”,“计算机系”)。(2)对于library数据库中的学生,图书,出版社,借阅四个表,注意相应的约束条件,自行插入不少于2条记录。(3)更新学号为08021102同学的院系为“电子系”。(更新记录不可为空,自己想办法!)实验要求:1、本次实验中所有代码保存在一个.sql文件中,每位同学以“实验须知”中的命名方式命名文档,并将电子档提交给学习委员,由学委收集整理,以专业和班级命名打包文件,并另建一个文档注明未交者的学号及姓名,一并提交到黄老师邮箱958865887@qq.com。2、根据实验内容和每一步骤实验的结果,按课程实验报告的撰写规范完成实验报告。报告可用手写或打印,格式一定要规范。3、实验报告至少包括以下内容:①实验目的;②实验环境;③实验内容、步骤、结果和实验过程中出现的问题;④实验过程中主要使用的Transact-SQL语句。4、实验报告由每班学习委员统一收齐,并于下一次上课前上交。实验内容版权所有,转载请注明来源2020-01-03by黄玉兰示例2-1-1为学生表的sno字段创建一个主键约束示例2-1-2为学生表的sno字段增加一个主键约束【思考】在实际操作中,增加主键约束时,对于最初建表中的字段有什么限制条件?并进一步思考在缺省状态下,系统默认在建表时字段允许为空还是不允许为空?示例2-1-3利用SSMS工具Primarykey实验内容版权所有,转载请注明来源2020-01-03by黄玉兰示例2-2-1为选修表的sno字段创建一个外键约束示例2-2-2为选修表的cno字段增加一个外键约束【思考】在实际操作中,增加外键约束时,系统有无报错?找出原因并改正。示例2-2-3利用SSMS工具Foreignkey实验内容版权所有,转载请注明来源2020-01-03by黄玉兰示例2-3-1为学生表的sname字段创建一个唯一值约束示例2-3-2为课程表的cname字段增加一个唯一值约束【思考】唯一值和主键的区别?示例2-3-3利用SSMS工具Unique实验内容版权所有,转载请注明来源2020-01-03by黄玉兰示例2-4-1为学生表的ssex字段创建一个默认值为‘男’的约束示例2-4-2为上述学生表的nation字段增加一个默认值为‘汉族’的约束示例2-4-3利用SSMS工具Default实验内容版权所有,转载请注明来源2020-01-03by黄玉兰示例2-5-1为选修表的grade字段创建一个检查约束,其取值范围0-100示例2-5-2为学生表的sno字段增加一个检查约束,只能由纯数字充当学号。示例2-5-3利用SSMS工具Check实验内容版权所有,转载请注明来源2020-01-03by黄玉兰【课后作业】根据下列各表中的说明部分,自行设置相应约束。设置完后插入合理的原始数据。各表中原始数据不可少于10条。Department名称数据类型可否为空说明DepartmentIDChar(3)否系部编号DepartmentNameVarchar(30)否系部们称DepartmentHeadChar(8)是部门负责人Teacher名称数据类型可否为空说明TeacherIDChar(8)否教师编号teacherNameVarchar(10)否教师姓名departmentIDChar(3)是教师所在系部IDsexChar(2)是性别technicalPostchar(16)是职称TelephoneChar(16)是电话homeAddrVarchar(50)是家庭住址pwdVarchar(16)是密码remarknvarchar(200)是备注Course名称数据类型可否为空说明courseIDChar(8)否课程编号coursenameVarchar(20)否课程名称coursetypeIDChar(3)是课程类型编号totalperiodtinyint是总课时weekperiodtinyint是周课时credithourtinyint是学分(0)remarkVarchar(50)是备注Student名称数据类型可否为空说明studentIDChar(10)否学生编号studentNameVarchar(10)否学生姓名nationChar(10)是民族sexChar(2)是性别(默认男或女,默认男)birthdaydatetime是出生日期classIDChar(7)是班级编号telephoneVarchar(16)是联系电话credithourtinyint否已修学分(0)ru_dateChar(4)是入学年份实验内容版权所有,转载请注明来源2020-01-03by黄玉兰Speciality名称数据类型可否为空说明SpecialityidChar(5)否专业编号SpecialityNameVarchar(30)否专业名称DepartmentidChar(3)是专业所在系部IDCoursetype名称数据类型可否为空说明CoursetypeidChar(3)否课程类型编号TypenameVarchar(18)否课程类型名称Class名称数据类型可否为空说明classIDChar(7)否班级编号classNameVarchar(12)否班级名称SpecialitynameChar(5)是专业编号specialtityNameVarchar(30)是专业名称entranceYearChar(4)是入学年份MonitoridChar(10)是班长编号Grade名称数据类型可否为空说明StudentidChar(10)否学生编号Courseidchar(8)否课程编号Termnvarchar(20)否学期Gradetinyint是学生成绩(在0-100之间)User名称数据类型可否为空说明usernameChar(10)否登录用户名(仅为英文字母)mypasswordvarchar(50)否密码usertypevarchar(20)是用户类型