SQL数据库及表的创建管理Word格式.docx
《SQL数据库及表的创建管理Word格式.docx》由会员分享,可在线阅读,更多相关《SQL数据库及表的创建管理Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
【实验环境】
Windows10系统+SQLServer2012
【实验内容】
1.设有一学籍管理系统,使用SSMS创建名为EDUC的数据库。
主数据文件逻辑文件名为student_data,初始大小为10MB,最大可增长到50MB,数据库自动增长,增长方式是按5%比例增长。
日志文件逻辑文件名为student_log,存放路径均为“E:
\sql_data”,初始大小为2MB,最大可增长到5MB,增长方式是按1MB自动增长。
2.在数据库EDUC中,创建如下几个表:
表2.1student表(学生信息表)
6
4
3.修改列属性将student表中的birthday字段设为Notnull。
4.添加列在course表中添加一列year,类型为varchar(4),默认置为空。
5.添加记录根据实验指导书中所给的内容添加记录。
6.根据建立的数据库EDUC,在查询分析器中使用SQL语句创建5张新表。
分别为:
student1、course1、student_course1、teacher1和teacher_course1。
7.在查询分析器中用SQL语句删除表teacher_course1和表teacher1。
8.用SQL语句将student表中的属性snochar(8)改为varchar(20)类型。
9.用SQL语句在course表中添加year字段,数据类型名为varchar(4),并添加属性值的范围为“第一、第二、第三、第四”约束。
10.用SQL语句将course表中的year字段删除。
11.以上创建表的SQL语句以.SQL文件的形式保存在磁盘上。
【实验方法和步骤】
1.在开始菜单中选中SQLServerManagementStudio,启动SSMS。
启动后,单击“连接”按钮,进入SSMS窗口。
如下图所示:
图1
2.在左侧“对象资源管理器”处,右击数据库按钮,点击新建数据库。
根据实验内容1中的要求填写数据库名称EDUC以及数据库文件中的内容,完成后点击确定。
图2
3.刷新对象资源管理器,点击展开数据库,右击“表”,选择新建表。
根据实验内容2中的要求,建立5张新表,并填写表中列名、数据类型以及是否为空值。
表1—1
填写好列名、数据类型及允许Null值三项内容后,点击sno左侧黑三角,选中该行,并点击左上方设置主键按钮,将sno(学生学号)设置为该表的主键。
关闭,保存表名为“student”。
表1—2
同表1—2一样,填写好表中内容,并将cno(课程编号)设置为该表的主键。
关闭,保存表名为“course”。
表1—3
填写好列名、数据类型及允许Null值三项内容后,点击sno左侧黑三角,选中该行,再按shift键,向下拖动鼠标,直至选中sno、tcid两行为止。
再点击左上方设置主键按钮,将(sno,tcid)(学生学号,上课编号)设置为该表的主键。
关闭,保存表名为“student_course”。
表1—4
同上述3张表一样,按照要求填写内容,并将tno(教师编号)设置为该表的主键。
关闭,保存表名为“teacher”。
表1—5
根据实验要求填写好列名、数据类型及允许Null值三项内容后,点击tcid左侧黑三角,选中该行,点击左上方设置主键按钮,将tcid(上课编号)设置为该表的主键。
右击空白处,点击“关系”,添加外键。
打开对话框后,点击“添加”,再点击右侧“表和列规范”一行处的“·
·
”,打开后,左侧主键表中选择teacher,下方的内容选择tno,右侧外键表选择teacher_course,内容选择tno,点击确定,关闭该对话框。
再点击“添加”,按同样的方法,左侧主键表中选择course,下方的内容选择cno,右侧外键表选择teacher_course,内容选择cno,点击确定。
关闭所有对话框,关闭并保存表名为“teacher_course”。
图3
4.修改student表中birthday列的属性。
右击student表子目录,单击“设计”,将属性的“允许Null值”取消勾选。
如遇以下情况:
图4
单击文本框中的“工具”,单击“选项”,再单击“设计器”,将“阻止保存要求重新创建表的更改”一项,取消勾选,即可修改表中列的属性。
修改完成后如下图所示:
图5
5.右击展开course子目录,点击“设计”,空白处点击鼠标右键,再次点击“插入列”,并向其中添加内容。
列名为year、数据类型为varchar(4)并且允许为空,保存并关闭。
如表1—1所示。
6.根据实验要求添加各表记录。
右击student,点击“编辑前200行”,即可输入数据,输入完成一项内容后,按tab键,即可输入下一内容,一个元组输入完成后,点击tab,便可保存及跳转到下一个元组继续输入。
其他表添加记录与上述操作类似。
添加记录后,各表如下图所示:
图6
图7
图8
图9
图10
7.右击EDUC数据库,点击“新建查询”,在查询分析器中根据如上表格结构,输入SQL语句创建5张新表。
代码实现如下:
创建student1表:
createtablestudent1(
snochar(8)NOTNULL,
snamechar(8)NOTNULL,
sexchar
(2),
birthdaysmalldatetime,
dnochar(6),
spnochar(4),
clssnochar(4),
entimesmalldatetime,
constraintpk_student1primarykey(sno))
创建course1表:
createtablecourse1(
cnochar(6)NOTNULL,
cnamechar(20)NOTNULL,
ctnotinyint,
experimenttinyint,
lecturetinyint,
semestertinyint,
credittinyint,
constraintpk_course1primarykey(cno))
创建student_course1表:
createtablestudent_course1(
tcidsmallintNOTNULL,
scoretinyint,
constraintpk_student_course1primarykey(sno,tcid))
创建teacher1表:
createtableteacher1(
tnochar(5)NOTNULL,
tnamechar(8)NOTNULL,
pnotinyint,
homevarchar(40),
zipcodechar(6),
telvarchar(40),
emailvarchar(40),
constraintpk_teacher1primarykey(tno))
创建teacher_course1表:
createtableteacher_course1(
tnochar(5),
classnochar(4),
cnochar(6),
semesterchar(6),
schoolyearchar(10),
classtimevarchar(40),
classroomvarchar(40),
weektimetinyint,
constraintpk_teacher_course1primarykey(tcid),
constraintak_teacher_course1foreignkey(tno)referencesteacher1tno,
constraintak_teacher_course1foreignkey(cno)referencescourse1cno)
8.在查询分析器中用SQL语句删除表tearch_course1和表teacher1。
代码如下:
droptableteacher_course1
droptableteacher1
由于表tearch_course1和表teacher1是由上述SQL语句建立而成,并未添加外键。
如表tearch_course1中已经添加外键tno,则必须按照上述顺序执行,不能调换顺序。
9.用SQL语句将student1表中的属性snochar(8)改成varchar(20)类型,由于sno为主键,则需要先删除主键,修改后再添加sno为主键并添加名为pk_student1的约束。
altertablestudent1
dropconstraintpk_student1
altercolumnsnovarchar(20)notnull
addconstraintpk_student1primarykey(sno)
所得结果,如下图所示:
图11
10.添加字段及约束。
在查询编辑窗口输入:
altertablecourse
addyearvarchar(4)constraintyearcheck(year='
第一'
or
year='
第二'
oryear='
第三'
第四'
)
然后执行。
所得结果如下图所示:
图12
11.删除列。
在查询编辑窗口输入
altertablecoursedropconstraintyear
dropcolumnyear
图13
12.将以上创建表的SQL命令以.SQL文件的形式保存在E盘sql_data文件夹里。
【实验结果】
1.实验操作1—5结果如下图所示:
上述5张图中为用可视化窗口的方法建立的表,展示其子目录和一些约束情况。
2.实验操作6—11结果如下图所示:
其他关于删除,添加,修改表属性、内容等操作已在实验过程中详细展示。
上图所示为删除表tearch_course1和表teacher1的前后对比。