实验二通过SQL语句创建与管理数据表word版本.docx
《实验二通过SQL语句创建与管理数据表word版本.docx》由会员分享,可在线阅读,更多相关《实验二通过SQL语句创建与管理数据表word版本.docx(16页珍藏版)》请在冰点文库上搜索。
实验二通过SQL语句创建与管理数据表word版本
实验二
一、实验目的
(1)掌握查询分析器的使用。
(2)掌握通过SQL语句创建表的方法。
(3)掌握通过SQL语句修改表结构的方法。
(4)掌握通过SQL语句添加、修改、删除表数据的方法。
二、实验内容
1、通过SQL语句删除表
用SQL语句在数据库Student_info中删除实验一创建的Student表、Course表、SC表。
1、选择Student_info数据库,在该数据库环境中“新建查询”,然后完成删除操作
2、分别填写如下SQL语言
、droptableStudent
、droptableCourse
、droptableSC
3、删除操作完成
2、通过SQL语句创建表
用SQL语句在数据库Student_info中创建实验一中的Student表、Course表、SC表,结构如实验一中表2、表3、表4(即创建出空表即可)所示
、创建Student表
createtableStudent(
Snochar(8)primarykey,
Snamevarchar(8)notnull,
Sexchar
(2)notnull,
Birthsmalldatetimenotnull,
Classnochar(3)notnull,
Entrance_datesmalldatetimenotnull,
Home_addrvarchar(40)
)
、创建Course表
createtableCourse(
Cnochar(3)primarykey,
Cnamevarchar(20)notnull,
Total_periorsmallintcheck(Total_perior>0),
Credittinyintcheck(Credit<=6andcredit>0)
)
、创建SC表
createtableSC(
Snochar(8)notnull,
Cnochar(3)notnull,
Gradetinyintcheck(Grade>=0andGrade<=100),
primarykey(Sno,Cno),
foreignkey(Sno)referencesStudent(Sno),
foreignkey(Cno)referencesCourse(Cno)
)
3、通过SQL语句管理表结构
(1)添加和删除列
a.给Student表增加身高(以米单位)Stature列,类型为numeric(4,2),允许为空值,且身高值需小于3.0米。
altertableStudent
addStaturenumeric(4,2)
check(Stature<=3.0andStature>=0)
b.给Student表增加所在系Sdept列,字符型,长度2,不允许为空值。
altertableStudent
addSdeptchar
(2)notnull
c.给Student表增加邮政篇码Postcode列,字符型,长度为6,可以为空,若不为空时,则要求其值只能出现数字,不能是其它字符。
altertableStudent
addPostcodechar(6)
check(PostcodeLike'[1-9][0-9][0-9][0-9][0-9][0-9]')
d.删除Student表中身高Stature列。
、添加Stature列时就已知该列存在约束条件,若要删除该列,必须先删除约束条件,则首先必须先找出约束条件的约束名称。
以下有两种方法:
1、写入SQL语句找出
altertableStudent
dropcolumnStature
2、运用企业管理器找出
a、打开Student表
b、选择Stature行,单击右键,选择“CHECK约束”
c、约束名称显而易见
、其次删除Stature约束
altertableStudent
dropconstraintCK__Student__Stature__1A14E395
、最后删除Stature列,完成
altertableStudent
dropcolumnStature
(2)添加和删除约束
a.在Student表添加约束:
入学时间必须在出生年月之后
altertableStudent
addconstraintbirth1
check(Birthb.给SC表的成绩Grade列增加默认值约束,默认值为0
altertableSC
addconstraintgrade1
default('0')forgrade
c.删除Grade列的默认值约束
锁定Grade列的约束名即可
altertableSC
dropconstraintgrade1
(grade1为约束名)
4、通过SQL语句添加、修改、删除表中数据
(1)插入数据
a.Student表、Course表、SC表的记录见实验一的表5、表6、表7,其它数据可自行添加。
要求Student表和SC表中数据包括了每位同学自己的学号。
、向Student表中添加数据
insertintoStudentvalues('20110001','张虹','男','1992-09-01','051','2011-09-01','南京','CS','200413');
insertintoStudentvalues('20110002','林红','女','1991-11-12','051','2011-09-01','北京','CS','100010');
insertintoStudentvalues('20110103','赵青','男','1993-05-11','061','2011-09-01','上海','MS','200013');
注意:
Sdept的类型为char
(2),添加数据是不能写“计算机系”和“软件工程”,应改为“CS”和“MS”
、向Course表中添加数据
insertintoCoursevalues('001','高数','96','6');
insertintoCoursevalues('002','C语言程序设计','80','5');
insertintoCoursevalues('003','JAVA语言程序设计','48','3');
insertintoCoursevalues('004','VisualBasic','48','4');
、向SC表中添加数据
insertintoSCvalues('20050001','001',89);
insertintoSCvalues('20110001','001',89);
insertintoSCvalues('20110001','002',78);
insertintoSCvalues('20110001','003',89);
insertintoSCvalues('20110002','002',60);
insertintoSCvalues('20110103','001',80);
上面截图所示的外键约束可不予考虑
b.执行如下语句:
insertintoStudent(Sno,Sname,Sex)values(‘20101101’,’赵青’,’男’),该语句能成功执行吗?
为什么?
答:
不能成功执行,因为不能将值NULL插入列'Sdept'中
c.执行如下语句:
insertintoscvalues(‘20110103’,’005’,80),该语句能成功执行吗?
为什么?
答:
不能成功执行,因为SC表中的学号“005”的同学在Course表中不存在。
而SC表中的Cno是作为Course表的外键存在的,所以不能成功执行。
(2)修改数据
a.使用T-SQL语句,将Course表中的课程号为’002’的学分改为4,总学时改为64。
updateCourse
setCredit=4
whereCno='002'
updateCourse
setTotal_perior=64
whereCno='002'
结果:
b.使用T-SQL语句,将SC表中的选修了‘002’课程的同学的成绩*80%。
updateSC
setGrade=Grade*0.8
whereCno='002'
结果:
(3)删除数据
a.使用T-SQL语句,删除选修了“C语言程序设计”的学生的选课记录。
删除时,发现存在外键约束,且约束名为FK__SC__Cno__1920BF5C,则先删除约束
删除约束:
altertableSC
dropconstraintFK__SC__Cno__1920BF5C
删除记录:
deletefromCourse
whereCnoin
(selectCnofromCourse
whereCname='c语言程序设计')
结果:
b.使用T-SQL语句,删除所有的学生选课记录。
deletefromSC
结果:
说明:
删除后,请重新插入SC表中的记录。
同第4题
所示步骤相同,
insertintoSCvalues('20050001','001',89);
insertintoSCvalues('20110001','001',89);
insertintoSCvalues('20110001','002',78);
insertintoSCvalues('20110001','003',89);
insertintoSCvalues('20110002','002',60);
insertintoSCvalues('20110103','001',80);
结果: