资源描述
《数据库原理与应用》
实验报告2
题目:交互式SQL (二)数据操作班级
学号姓名
批阅教师赵宏庆
一、实验目的
1 .熟悉数据库的交互式SQL工具。
2 .熟悉通过SQL对数据库进行操作。
3 .完成作业的上机练习。
二、实验工具 MS SQL Server2012
利用MS SQLServer2012完成操作。
三、实验内容及要求
1 .在MSSQLServer2012中建立一个数据库,进行实验所要求的各种操作,所有的SQL操 作均在此建立的新库里进行。
2 .根据以下要求认真填写实验报告,记录所有的实验用例。
3 .数据操作
1)完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询)。
2)完成各类更新操作(插入数据,修改数据,删除数据)。
要求:
(-)
1、创立数据库要求:创立了一个Employee数据库
2、创立表,要求:使用SQ1语句创立一个雇员信息表person,一个月薪表salary和一个部 门表department o所创立表的结构如下所示:
3、表1雇员信息表person
字段名
数据类型
字段长度
是否允许为空
说明
Pno
Char
6
Not nul1
工人编号,主键
Pnamc
Varchar
10
Not null
姓名
Sex
Char
2
Not null
性别
Birthday
Datetime
8
Null
出生日期
Prof
Varchar
10
Null
职称
Deptno
Char
4
Notnull
部门代码,外键(参照 department 表)
表2月薪表salary
字段名
数据类型
字段长度
是否允许为空
说明
Pno
Char
6
Not null
(工人编号、month),主键
base
Dec
5
Null
基本工资(要求base>=300)
Bonus
Dec
5
Null
奖金(要求bonus>=50)
Month
Int
Not null
月份
Fact
实发工资二基本工资+奖金
表 3 部门表 department• 注:以下的实验工程都采用此Employee数据库。
字段名
数据类型
字段长度
是否允许为空
说明
Deptno
Char
4
Not null
部门代码,主键
Dname
Varchar
10
Not Null
部门名称
4、创立规那么sexjule并与sex列绑定,指定性别列的取值只能为男或者女。 ( ://blog. csdn. net/qq61394323/article/details/26091875)
5、定义约束base check和bonus check,要求salary表的base不小于300, bonus不小 于50o6、创立3个表之间的参照完整性约束,person的工人编号和salary的工人编号,以及 person的部门代码和department的部门代码之间。
7、利用sql语句创立视图要求:在雇员信息表person基础上创立员工视图personview,其中包括工人编号,姓名, 职称,性别和部门代码字段。
8、为表创立索引
要求:
(1)在出生日期和姓名列创立组合索引birth_name(2)在姓名列上创立一个唯一索引name unique
(3)在月薪表salary的Fact列上创立聚簇索引fact_idx(4)删除索引fact.idxo
(-)(1)向表中插入数据
要求:按下表所示,向表person, salary, department中插入数据 表person中的数据
Pno
Pname
Sex
Birthday
Prof
Deptno
000001
田林
男
1982-4-7
初级
001
000002
郭达
男
1953-2-14
高级
001
000003
王琳
女
1984-8-25
初级
002
000004
王辉
男
1984-5-11
初级
002
000005
罗大右
男
1968-12-10
高级
002
000006
蔡琴
女
1978-4-20
中级
003
000007
李艳
女
1960-5-14
高级
001
000008
刘德华
男
1971-2-19
高级
003
000009
黎明
男
1973-10-9
中级
002
表salary中的数据
Pno
Base
Bonus
Fact
Month
000001
2100
500
=base+bonus
1
000002
3000
600
1
000003
2800
450
1
000004
2500
340
1
000005
3200
490
1
000006
2700
600
1
000007
4000
200
1
000008
2800
350
1
000009
2760
440
1
000001
2400
600
2
000002
2800
400
2
000003
2860
350
2
000004
2540
320
2
000005
3200
480
2
000006
2700
300
2
000007
4000
250
2
000008
2800
300
2
000009
2760
480
2
000001
2200
500
3
000002
3100
400
3
000003
2800
650
3
000004
2500
540
3
000005
3200
400
3
000006
2700
680
3
000007
4100
400
3
000008
2000
330
3
000009
2760
420
3
表department中数据
Deptno
Dname
001
营销部
002
财务部
003
人事部
004
采购部
(2)将职工编号为000006的员工3月份基本工资增加为3000,奖金增加到800。
(3)员工000009已经离开公司,将该员工的数据删除
(4)向视图persinview中插入一条记录('000011',‘范伟','男'高级'004')
(5)将视图personview删除
(6)简单条件查询
'查询person表中所有不重复的职称。
’查询具有高级职称的女员工信息
/ 查询职工姓名为黎明的员工数据
/ 查询各部门的实发工资总数
(7)复杂条件查询
, 查询平均工资高于3000的部门名和对应的平均工资。
/ 查询1月份实发工资比平均实发工资高的员工姓名和实发工资额。
/ 查询2月份实发工资比一月高的员工姓名。
/ 利用sql语句将1, 2, 3月累积的员工的实发工资按降序排序
四、调试及运行结果的分析与评价
五、实验心得及建议
展开阅读全文