数据库实验指导Word格式.docx
- 文档编号:22490087
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:29
- 大小:272.30KB
数据库实验指导Word格式.docx
《数据库实验指导Word格式.docx》由会员分享,可在线阅读,更多相关《数据库实验指导Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
如图1-2所示。
图1-2
3.设置事务日志选项卡
(1)在"
文件名"
字段中键入事务日志文件的逻辑文件名"
TestDB_log"
设置该文件初始大小为5MBo
(2)选中"
文件属性"
对话框中复选框"
文件自动增长"
,并选中"
按兆字节"
设置文件容量递增值为1。
(3)在"
最大文件大小"
对话框中选择"
将文件增长限制为(MB)"
为10。
如图1-3所示。
(4)单击"
确定"
按钮,完成数据库的创建。
图1-3设置事务日志选项卡
4.修改事务日志文件属性
(1)从树状目录窗口中找到刚刚创建的数据库TestDB,单击鼠标右键,从弹出菜单中选择命令"
属性"
,打开数据库TestDB的属性窗口。
(2)选择数据文件选项卡。
在该选项卡中添加数据文件TestDB2_data,方法是:
在"
字段中键入数据文件逻辑文件名"
TestDB2_data"
,设置该文件初始大小为1MB,然后选中"
设置文件容量递增值为1,最后在"
将文件增长限制为(MB)6。
如图1-4所示。
图1-4
(3)选择事务日志选项卡,在该选项卡中将事务日志文件的最大容量改为15,递增量改为2。
如图1-5所示。
图1-5
方法二:
使用Transact-SQL语句创建和修改数据库TestDB
1.创建数据库TestDB
CREATEDATABASETestDB
ON
(
NAME=TestDB_data,
FILENAME=“D:
\Programfiles\Microsoftsqlserver\mssql\data\TestDB_data.mdf”,
SIZE=5,
MAXSIZE=15,
FILEGROWTH=1
)
LOGON
NAME=TestDB_log,
\Programfiles\Microsoftsqlserver\mssql\data\TestDB_log.ldf”,
MAXSIZE=10,
2.修改数据库TestDB
ALTERDATABASETestDB
ADDFILE
NAME=TestDB2_data,
\Programfiles\Microsoftsqlserver\mssql\data\TestDB2_data.ndf”,
SIZE=1,
MAXSIZE=6,
GO
MODIFYFILE
NAME=TestDB_log,
MAXSIZE=15
FILEGROWTH=2
[习题]
建立学生选课的数据库stuDB,逻辑文件名为stuDB_data,磁盘文件名为stuDB_data.mdf,文件初始容量为10MB,最大容量为15MB,文件容量递增值为2MB。
事务日志文件,逻辑文件名为stuDB_log,磁盘文件名为stuDB_log.ldf,文件初始容量为5MB,最大容量为10MB,文件容量递增值为1MB。
[体会]
实验二创建和修改数据表
熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用,熟练掌握使用企业管理器和CREATETABLE、ALTERTABLE等Transact-SQL语句对数据表的操作方法。
分别使用企业管理器和Transact-SQL语旬按下列要求创建两个数据表:
表B1项目数据表,表B2员工数据表,并按照步骤完成对表的相关修改和约束设置。
项目表(Project)
字段名
数据类型
字段长度
注释
项目编号
int
主键
名称
varchar
长度为50
负责人
客户
开始日期
datetime
结束日期
员工数据表(Employee)
编号
姓名
性别
所属部门
工资
money
长度为8
使用企业管理器创建数据表并添加约束
1.打开企业管理器,在树状目录窗口中找到数据库节点TestDB,并选中下一级节点"
表"
2.单击鼠标右键,从弹出菜单中选择命令"
新建表"
,打开表设计窗口,在窗口中按照"
上机任务"
中所列的"
项目数据表"
的字段及要求键入列名、数据类型、长度等属性,并将"
项目编号"
设置为主键。
如图2-l所示。
图2-l创建"
3.单击"
保存"
按钮,在弹出的对话框中输入表名称"
,关闭表设计窗口,完成表"
的刨建。
4.重复1-3步,创建另一个数据表"
员工数据表"
,表设计窗口如图2-2所示。
图2-2创建"
5.添加外键约束:
的"
负责人"
字段上添加外键约束,参照字
段为"
中的字段"
编号"
,约束名为FK_pm。
实现方法为:
首先在企业管理器中选中"
并单击鼠标右键,在弹出菜单中选择命令"
设计表"
打开设计表窗口。
然后在该窗口中单击按钮"
表和索引属性"
按钮,打开表的"
对话框。
最后选择"
关系"
选项卡,在改选项卡中做如下的操作。
单击"
新建"
按钮;
从"
主键表"
中选择"
,并选择字段"
;
外键表"
关系名"
中输入FK_pm。
关闭"
按钮,完成外键约束的设置。
6.添加检查约束:
将"
工资"
的值限定在1000-10000,约束名CK_Salary。
操作方法为:
CHECK约束"
选项卡,在改选项卡中做如下的操作:
单击标签中"
约束表达式"
文本框中输入一个条件表达式;
(工资>
=1000AND工资<
=10000)
约束名"
对话框中输入所建核查约束名"
CK_Salary"
如图2-3所示。
图2-3
方法二:
使用Transact-SQL语句创建数据表并添加约束
1.创建项目数据表
USETestDB
CREATETABLE项目数据表
(项目编号intPRIMARYKEY,
名称varchar(50),
负责人int,
客户int,
开始日期datatime,
结束日期datatime
2.创建员工数据表
编号intPRIMARYKEY,
姓名varchar(50),
性别varchar(50),
所属部门varchar(50)
工资money(8)
3.添加外键约束
ALTERTABLE项目数据表
ADDCONSTRAINTPK_pm
FOREIGNKEY(负责人)
REFERENCES员工数据表(编号)
添加检查约束
ALTERTABLE员工数据表
ADDCONSTRAINTCK_pm
CHECK(工资>
建立学生的基本信息表student、课程表course和选修课成绩表sc.
实验三添加记录并建立查询
熟练掌握查询语句。
向数据库TestDB中的两个数据表"
和"
中添加记录,如表Cl,C2所示。
然后在查询分析器中书写Transact-SQL语句完成"
实现步骤"
中所列的任务。
表c1项目数据表
1
SiS
2
03/12/2000
06/12/2000
SiS项目2
04/06/2000
05/01/2000
3
Pet
06/17/2000
08/17/2000
4
Pet项目2
09/01/2000
09/18/2000
5
CCH
6
CCH_LXF
7
CCH_ZHS
8
CCH_LY
9
CCH_LYAN
19
10
PETER
11
REALIDEA
12
REALIDEA1
13
REALIDEA2
14
REALIDEA3
15
PPA
16
NBA
表C2员工数据表
陈有朋
男
项目部
2000
孙晓晴
女
3000
张晓峰
录入部
1000
慕容雪
检验部
1500
陈秋萍
王理斌
周晴晴
办公室
杨亭亭
2500
马明宇
4000
刘燕
[实验要求]
1·
书写语句查询项目数据表中客户字段的唯一值,并查看查询结果。
参考答案:
SELECTUNIQUE客户FROM项目数表;
2·
书写语句查询工资高于2000的项目部的人员的姓名。
SELECT姓名
FROM员工数据表
WHERE所属部门=“项目部"
AND工资>
2000;
3·
书写查询语句查询来自CCH公司的项目名称(以CCH开始)和负责人姓名。
SELECTa.名称,b.姓名
FROM项目数据表ASa,员工数据表ASb
WHEREa.负责人=b.编号
ANDa.名称LIKE“CCH%”;
4.书写语句查询每个部门的平均工资,结果按照平均工资的多少排序
SELECT所属部门,AVG(工资)
FROM员工数据表
GROUPBY所属部门
ORDERBYAVG(工资);
5.使用外向联接输出所有的员工姓名和负责人的项目名称
SELECT员工数据表.姓名,项目数据表.名称
FROM员工数据表LEFTJOIN项目数据表
ON员工数据表.编号=项目数据表.负责人;
6.使用子查询输出所有负责CCH公司项目(以CCH开始)的员工姓名,以及没有
负责REALIDEA公司(以REALIDEA开始)项目的员工姓名。
SELECT姓名
FROM员工数据表
WHERE编号IN
(SELECTDISTINCT负责人
FROM项目数据表
WHERE名称LIKE'
CCH%'
SELECT姓名
WHERE编号NOTIN
(SELECTDISTINCT负责人
REALIDEA%'
);
7·
将所有REALIDEA公司的项目的结束日期更改为2002年1月8日。
UPDATE项目数据表
SET结束日期='
January8,2002'
WHERE名称LIKE'
REALIDEA%’;
8·
录入部的张晓峰决定辞职,请将员工数据库中有关他的记录删除,并将他负责的项目移交给杨亭亭。
书写语句对数据表做相应的更改。
DELETE员工数据表
WHERE姓名=“张晓峰”
SET负责人=8
WHERE负责人=3;
[习题]创建如下数据库:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
1)在S,C,SC中添加元组
2)从S,C,SC表中选择出当年年龄在20岁以上的学生的学号和姓名。
3)统计平均年龄。
4)“张三”同学要退学,请删除他的所有信息。
5)检索LIU老师所授课程的课程号和课程名。
6)检索年龄大于23岁的男学生的学号和姓名。
7)检索学号为S3学生所学课程的课程名与任课教师名。
8)检索至少选修LIU老师所授课程中一门课程的女学生姓名。
9)检索WANG同学不学的课程的课程号。
10)检索至少选修两门课程的学生学号。
11)检索全部学生都选修的课程的课程号与课程名。
12)检索选修课程包含LIU老师所授课程的学生学号。
13)求年龄大于女同学平均年龄的男学生姓名和年龄。
14)把低于所有课程总平均成绩的女同学成绩提高5%。
15)往关系C中插一个课程元组('
C8'
,'
VC++'
BAO'
)。
16)检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY(TNAME)。
实验四创建视图
掌握使用T-SQL语句创建视图的方法,包括视图的建立、删除、修改;
了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。
在数据库Company_Data中,基于表"
创建视图,要求为:
(1)视图名为"
员工项目"
(2)包含字段"
、"
姓名"
开始日期"
(3)字段别名分别是"
员工编号"
、”员工姓名"
项目名称"
项目开始日期"
(1)打开查询分析器。
在查询窗口书写CREATEVIEW语句创建视图,并指定字段别名:
CREATEVIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期)
AS
SELECTa.编号,a.姓名,b.名称,b.开始日期,
FROM员工数据表ASaINNERJOIN项目表ASb
ONa.编号=b.负责人
WHEREa.编号=b.负责人
GO
(2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"
字段值
为"
马中兴"
USETestDB
INSERTINTO员工项目(员工姓名)
VALUES('
马中兴'
(3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"
马中新"
UPDATE员工项目
SET项目负责人='
马中新’,
WHERE项目负责人=’马中兴’
(4)执行系统存储过程sp_rename将视图更名为"
employee_project_VIEW"
EXECsp_rename'
员工项目'
'
emp1oyee_project_VIEW'
【习题】:
在实验三习题中所创建的数据库中,创建下面的视图:
1)视图1,包含所有平均成绩>
85的同学的学号姓名,平均成绩,且按升序排序。
2)视图2,包含所有选修了liu老师所授课程的学生学号,姓名,课程名,成绩。
实验五创建索引
掌握创建索引的方法。
分别使用企业管理器和Transact-SQL语句在实验四的数据表"
中基于"
创建索引,要求索引名为"
IDX_Name"
,索引类型为非聚集索引。
实现步骤
方法一,使用企业管理器
(1)打开企业管理器,在树状目录中展开数据表"
所在的数据库节点TestDB,并选择其下一级节点"
(2)选择表"
,并单击鼠标右键。
在弹出菜单中选择命令"
所有任务〉管理索引"
,打开"
管理索引"
(3)在"
对话框中的"
下拉菜单中选择数据库表。
(4)选择"
按钮,弹出"
新建索引"
(5)在"
对话框的"
索引名"
文本框中输入索引名称"
,然后选择字段"
并设置索引属性。
如图5-l所示。
图5-l创建索引
(6)设置索引选项以后,单击"
按钮,返回到"
(7)单击"
按钮,退出"
对话框,完成索引的创建。
使用T-SQL语旬
CREATEINDEXIDX_NameON员工数据表(姓名)
【习题】
1)在实验三习题中创建的数据库中,对表S的SName字段建升序索引。
2)对类似性别这样的字段建索引,合算吗?
实验六创建触发器
理解触发器的触发过程和类型,掌握创建触发器的方法。
在数据库Company_Data的表"
中分别创建触发器。
(2)在查询窗口书写CREATETRIGGER语句,基于表"
创建AFTERINSERT触发器Tigger_NewEmployeeSalary,将插入员工的工资额限制在5000以内。
USETestDB.
CREATETRIGGERTrigger_NewEmployeeSalary
ON员工数据表
AFTERINSERT
IF(SELECT工资FROMinserted)>
5000
BEGIN
PRINT'
新员工工资不能超过5000'
ROLLBACK
END
(3)在查询窗口书写CREATETRIGGER语句,基于表"
创建AFTERUPDATE触发器Trigger_SalaryChange,将员工工资变动额限制在2000以内。
CREATETRIGGERTrigger_SalaryChange
ON员工数据表
AFTERUPDATE
IFUPDATE(工资)
IF(SELECTMAX(ABS(inserted.工资一deleted.工资))
FROMinsertedJOINdeleted
ONinserted.编号=deleted.编号)>
2000
PRINT‘工资变动不能超过2000'
ROLLBACKTRANSACTION
【习题】在实验三所建数据库中,假设系统需要记录学生的成绩历史-----删除一条记录之前,先要把这条记录写入历史成绩表,同理,修改一条记录之前需要先把待修改记录写入历史成绩表。
请大家为这样的需求创建触发器[先建历史成绩表,再写触发器]。
实验七创建存储过程
了解存储过程的概念和作用,掌握创建存储过程的方法。
在数据库Company_Data中创建存储过程Procedure_SalaryByDept,要求返回某一特定部门所有员工的工资总和,其中特定部门的名称以存储过程的输入参数进行传递。
(2)在查询窗口书写CREATEPROCEDURETransact-SQL语句创建存储过程
Procedure_SalaryByDept,并带有一个输入参数@Department用于传递部门名称,一个输出参数@TotalSalary用于传递输出结果。
CREATEPROCEDUREProcedure_SalaryByDept@Departmentvarchar(40),
@TotalSalarymoneyOUTPUT
(3)选择所属部门为该参数传递的部门名称的所有记录,并对其工资字段求和。
SELECT@Tota1Sa1ary=sum(工资)
WHERE所属部门=@Department
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 指导