1、实验三 表创立、管理和数据操纵(4学时) 【实验目】 理解SQL语言使用,进一步理解关系运算,巩固数据库基本知识。 【实验规定】 运用SQL语言进行数据库表各种操作: 1.数据库表创立、修改和删除操作。 2.向表中进行数据插入、删除和修改操作。 【实验内容】 1. 运用数据定义语句在实验一创立stu_DB库中建立学生管理系统三个表:Student、Course、SC。 2.运用INSERT、UPDATE和DELETE语句对上述三张表数据进行插入、更新和删除操作。 3.在stu_DB库中添加Teacher和TC表,对已建立学生管理系统中表添加充分数据(每个表不少于
2、20条),以便完毕本实验后继操作。 【实验环节】 一、数据定义 (一)表创立 在实验一创立数据库stu_DB中分别用公司管理器和查询分析器,按下面表构造创立学生管理系统表。 表3-1 Student表构造 列名 阐明 数据类型 约束 Sno 学号 字符串,长度为8 主码 Sname 姓名 字符串,长度为10 非空 Ssex 性别 字符串,长度为2 ’男’或 ’女’ Sage 年龄 整数 15~45 Sdept 所在系 字符串,长度为20 默以为’计算机系’ 表3-2 Course表构造 列名 阐明 数据类型 约束 Cno
3、 课程号 字符串,长度为8 主码 Cname 课程名 字符串,长度为20 非空 Cpno 先修课程号 字符串,长度为8 Ccredit 学分 整数 取值:1~6 Semster 学期 整数 取值:1~8 Period 学时 整数 取值:≥0 表3-3 SC表构造 列名 阐明 数据类型 约束 Sno 学号 字符串,长度为8 主码,引用student外码 Cno 课程号 字符串,长度为8 主码,引用course外码 Grade 成绩 整数 取值:0~100 1.运用公司管理器创立表 (1)打开公司管理器。
4、 (2)选中实验一创立好数据库stu_DB,单击数据库中表对象,然后右击窗口右侧选取新建表,弹出如图所示窗体。 图3-1 新建表窗体 (3)在这个窗体中,列名列就示表字段名,可以在这个窗体中为字段选取数据类型和长度以及与否可觉得空值。 (4)在此处可觉得表选取文献组,在表中单击右键,选取属性,如果已经为数据库创立了一种次要组,可以在属性窗体表文献组中为此表选取文献组。应当把某些竞争使用表放于不同文献组中,并且让文献组属于不同磁盘,这样可以在表竞争读写时提高并发性能。 (5)创立完毕后,单击磁盘图标,并为表取一种名字。注意,应当为表取一种故意义名字。 2.用Transact_SQ
5、L语句创立表 语法为: CREATE TABLE [ database_name.[owner].] table_name ( {column_name data_type [DEFAULT ‘default_value’]| [CONSTRAINT CONSTRAINT_name] },[…n] [IDENTITY [(seed,increment )]] ) [ON { filegroup | DEFAULT }] [TEXTIMAGE_ON {filegroup | DEFA
6、ULT }] 【例1】生成一种表名为student表 create table student ( sno CHAR(8) primary key, sname CHAR(10) not null, ssex CHAR (2) check (ssex='男'or ssex='女'), sage smallint, sdept CHAR (20) default ('计算机系'), ) 图3-2查询分析器窗体——创立表 【例2】 创立一张名为Ta1表,此表中有3列,第一列Pid定义为主键,并且自动增长。第二列Name默认值为Unknown,第三列
7、定义一种约束(日期不能不不大于输入当天日期),插入一条记录并进行查询,显示如下图。
CREATE TABLE ta1
(
pid int identity(1,1) primary key,
[name] CHAR(10) default ('unknow'),
birthday datetime CHECK( birthday 8、中4个表。
(二)表修改
1. 用公司管理器修改表
⑴ 右键点击所要修改学生表,选取“设计表”,会弹出如图3-4所示窗体,在这个窗体中可以更改数据表字段。在空白处点右键,选取“属性”,弹出另一窗体,在此可以更改约束,也可以增长约束。
图3-4 修改表窗体
(2)运用Transact-SQL语句修改表
l 向表中添加新字段:在学生表中添加一种“班级”字段,数据类型为字符型。
ALTER TABLE student ADD class CHAR(6)
l 删除表中旧列:将学生表中“Sdept”字段删除。
ALTER TABLE student DROP COL 9、UMN Sdept
l 更改表以添加具备约束列。
给学生表增长“grade”字段并加上CHECK约束,让其不可以不不大于100。
ALTER TABLE student ADD grade int CONSTRAINT ch_grade CHECK(grade<100)
EXEC sp_help ch_grade
给学生表中添加“birthday”字段,并且这个日期不能在录入当天日期之后。
ALTER TABLE student ADD birthday DATETIME NULL
CONSTRAINT ch_birthday CHECK(birthday 10、))
l 添加具备默认值可为空列:
在学生表中加入“matriculationday”字段,并且这一字段默认值为录入当天日期。
ALTER TABLE student ADD matriculationday smalldatetime NULL
CONSTRAINT adddateflt DEFAULT getdate()
请参照上面所给例子:
(1) 自行设计表构造修改操作(不少于8个语句),并进行实验验证。
(2) 修改表student,成果如表3-4。
(3) 创立表3-5、表3-6,为后续实验建立基本。
表3-4 更新后student表构造
11、列名
阐明
数据类型
约束
Sno
学号
字符串,长度为8
主码
Sname
姓名
字符串,长度为10
非空
Ssex
性别
字符串,长度为2
’男’或 ’女’
Sdept
所在系
字符串,长度为20
默以为’计算机系’
Sbirth
出生日期
日期
自定义
sclass
班级
字符串,长度为20
sremark
评语
变长字符串,长度为100
saddress
家庭住址
变长字符串,长度为40
szipcode
邮编
字符串,长度为6
sphone
电话
字符串,长度为15
semail
电 12、子邮箱
变长字符串,长度为40
表3-5 Teacher表构造
列名
阐明
数据类型
约束
tno
工号
字符串,长度为8
主码
tname
姓名
字符串,长度为10
非空
tsex
性别
字符串,长度为2
’男’或 ’女’
tdept
所在系
字符串,长度为20
默以为’计算机系’
tbirth
出生日期
日期
自定义
tposition
职称
字符串,长度为12
tsalary
工资
整数
取值:0~10000
texperience
简历
变长字符串,长度为200
tamount
工作量
整数
13、
取值:0~1000
tphone
电话
字符串,长度为15
temail
电子邮箱
变长字符串,长度为40
taddress
家庭住址
变长字符串,长度为40
表3-6 TC表构造
列名
阐明
数据类型
约束
Tno
工号
字符串,长度为8
主码,引用Teacher外码
Cno
课程号
字符串,长度为8
主码,引用Course外码
Classroom
教室
变长字符串,长度为30
(三)表删除
可以在公司管理器中选取要删除表直接删除,也可以通过Transact-SQL语句DROP 删除表定义及表中所有数据、索引、出发器 14、约束和权限规范。
如要删除ta1表,语句如下: DROP TABLE ta1
请参照上面例子完毕对表Student 、Course 、SC删除操作,它们删除顺序如何?并进行实验验证。
二、数据操纵
(一)查看、重命名及删除顾客定义数据类型
1.使用公司管理器创立一种名为newtype1、长度为6、可变长字符、容许为空自定义数据类型。
进入公司管理器,进入stu_DB数据库,用鼠标右键单击“顾客定义数据类型”后选取“操作”菜单中“新建顾客定义数据类型”或点击“新建”按扭,将弹出下图所示窗体:
图3-4 数据类型定义窗体
输入要定义数据名称newtype1,选取数据类型var 15、CHAR,输入长度为6,在“容许NULL值”复选框中打个“√”,单击“拟定”按钮即可。
2.使用T-SQL语句创立一种名为newtype2,数据长度为6,定长字符型,不容许为空自定义数据类型。
USE stu_DB
EXEC sp_addtype newtype2,‘CHAR(6)’,‘not null’
3.命名顾客自定义数据类型
⑴ 使用系统存储过程sp_rename将自定义数据类型newtype1重新命名为a1。
EXEC sp_rename newtype1,a1
⑵ 使用公司管理器再将自定义数据类型a1重新命名为newtype1。
4.删除顾客自定 16、义数据类型
⑴ 使用系统存储过程sp_droptype来删除顾客自定义数据类型。
EXEC sp_droptype newtype1
⑵ 使用公司管理器删除顾客自定义数据类型
进入公司管理器,进入stu_DB数据库,单击“顾客定义数据类型”后,右边窗口将浮现所有顾客定义数据类型,再用鼠标右键单击newtype2,在弹出快捷菜单上单击“删除”按钮即可。
注意:正在被表或其她数据库对象使用顾客定义类型能不能删除?请进行实验验证。
(二)数据更新
1. 运用公司管理器更新数据
打开公司管理器,右键点击所要修改表,选取“打开表”,单击“返回所有行”,会弹出如图3-5所示窗 17、体,在该窗体中可以修改表中数据内容。这里修改内容是自动存储,修改完之后,直接关闭该窗体,数据内容即修改成功。
图3-5数据修改窗体
2.运用查询分析器更新数据
在关系数据库中,常用数据更新语句有三条:INSERT、UPDATE和DELETE
⑴INSERT语句
向student表中插入一行数据,详细数据如下:
学号:04265005,姓名:刘辉,性别:男,年龄:21,系别:计算机系
USE stu_DB
INSERT INTO student (Sno,Sname,Ssex,Sage,Sdept)
VALUES (‘04265005’,‘刘辉’,‘男’,21,‘计算机系 18、’)
INSERT INTO student (Sno,Sname,Ssex,Sage)
VALUES (‘04265006’,‘李慧’,‘女’,21)
向ta1表中插入数据如下:
INSERT ta1([name],birthday) values (‘lan’,’1977-03-02’)
INSERT ta1 values (‘lan’,’1977-03-02’)
INSERT ta1(birthday) values (‘1977-03-02’)
请依照上述例子,自行设计不同状况下数据插入语句(不少于10个语句),并进行实验验证,验证规定如下:
l 不满足唯一性 19、约束数据插入。
l 不满足顾客自定义约束数据插入。
l 不满足外键约束数据插入。
l 运用缺省值数据插入。
l 不合理数据与否能进入数据库。
⑵UPDATE语句
更改(学生)表数据,将学号为‘04265005’学生所在系改成‘机械工程系’。
UPDATE student SET Sdept=‘机械系’ WHERE Sno=‘04265005’
请依照上述例子,自行设计数据修改语句(不少于10个语句),并进行实验验证,验证规定同INSERT语句。
⑶DELETE语句删除行
删除student表中学号为‘04265005’记录。
DELETE FROM stude 20、nt WHERE Sno =‘04265005’
如果想清除表中所有数据但不删除这个表,可以使用TRUNCATE TABLE语句。该语句相称于没有条件DELETE语句,并且该语句不记录日记。
请依照上述例子,自行设计不同状况数据删除语句(不少于10条语句),并进行实验验证不满足外键约束数据删除操作。
对数据定义中创立学生管理系统(Student, Course,SC,Teacher,TC表)每个表添加充分数据(每个表不少于20条),以便完毕本实验后继操作。详细表信息可参照如下:
Student表:
Sno
sname
Sbirthday
Sdept
0426100 21、1
王冬梅
1982.02.07
计算机系
……
04261002
王田田
1982.03.04
计算机系
……
04261003
吴畏
1982.06.06
计算机系
……
04261004
马丽
1982.04.03
计算机系
……
04261005
杨乾坤
1982.03.23
计算机系
……
0426
刘乐
1983.01.16
计算机系
……
0426
夏天
1983.02.08
计算机系
……
0426
杨致远
1982.07.22
计算机系
……
04561001
陶然
1982.01.12
数 22、学系
……
04563001
姚远
1982.03.21
数学系
……
……
……
……
……
……
course表:
Cno
Cname
Cpno
Credit
C001
数据库原理
C005
3
……
C002
高等数学
4
……
C003
管理信息系统
C001
2
……
C004
操作系统
C006
3
……
C005
数据构造
C007
3
……
C006
计算机文化基本
2
……
C007
C语言程序设计
C006
3
……
……
……
……
……
……
sco 23、re表:
Sno
Cno
Score
04261001
C001
90
04261002
C001
85
04261003
C001
73
04261004
C001
98
04261005
C001
96
0426
C001
97
0426
C001
83
0426
C001
85
04561001
C007
92
04563001
C007
97
……
……
……
teacher表:
Tno
Tname
Tsex
Department
T001
石云丹
女
计算机系
……
T002
罗莉 24、
女
计算机系
……
T003
王国强
男
计算机系
……
T004
吴栋
男
计算机系
……
T005
高鸿轩
男
数学系
……
T006
张怀良
男
数学系
……
T007
刘晓伟
男
数学系
……
T108
马莉莲
女
物电学院
……
……
……
……
……
TC表:
Tno
cno
classroom
T001
C005
22号楼405
T002
C007
7号楼406
T003
C001
17号楼504
T004
C006
17号楼401
T005
C004
8号楼201
T006
C002
8号楼202
……
……
……
【思考题】
1.表Student 、Course 、SC应按何种顺序删除?为什么?
2.正在被表或其她数据库对象使用顾客定义类型能不能删除?为什么?






