sql server实验一到实验七Word文档格式.docx
- 文档编号:19044502
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:29
- 大小:573.89KB
sql server实验一到实验七Word文档格式.docx
《sql server实验一到实验七Word文档格式.docx》由会员分享,可在线阅读,更多相关《sql server实验一到实验七Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
2.实验内容:
1)使用sql语言建立student,course和sc共三张表格(包括主键,外码的指定),分析具体情况适当给出一些用户自定义的约束.
2)使用Insert语句向这四张表格里添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因
3)在“对象资源管理器”中实现
(1)题中的三张表
4)在“对象资源管理器”中向这
(1)题中的三张表添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因
3.主要仪器设备及软件:
Sql语言
代码
createdatabasesd
droptablecourse
createtablesc
(snochar(9),
cnochar(4),
gradesmallint,
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno)
insertintostudent(sno,sname,ssex,sage,sdept)
values('
95001'
'
李勇'
20'
CS'
)
95002'
刘晨'
女'
17'
IS'
95003'
王敏'
18'
95004'
张利'
19'
MA'
95005'
张华'
95006'
李好'
21'
95007'
李花'
95008'
李立'
95009'
何兰'
950010'
张洁'
select*fromstudent
insertintocourse(cno,cname,cpno,credit)
1'
数据库'
'
4'
2'
数学'
3'
信息系统'
操作系统'
6'
5'
C语言'
数据结构'
7'
数据处理'
8'
PASCAL语言'
9'
微积分'
10'
市场营销'
select*fromcourse
insertintosc(sno,cno,grade)
92'
85'
97'
60'
79'
66'
96'
78'
77'
88'
select*fromsc
资源管理器中的截图:
资源管理器
实验三修改表格结构,修改和删除表格中的数据
(验证型实验4学时)
用ALTER语句修改表结构:
添加列,修改列定义,删除列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据。
如下所示,创建表s,并完成随后的操作
Createtables(snochar
(2)primarykey,snamechar(10));
1)向表中添加属性列status,数据类型为int
altertablesaddstatusint
2)向表中添加属性列city,数据类型为varchar(20),并限定其取值范围为“上海”,“北京”,“天津”之一
altertablesaddcityvarchar(20)constraintsscheck(cityin('
上海'
北京'
天津'
))
3)修改属性列status的数据类型为smallint
altertablesaltercolumnstatussmallint
4)删除
(2)题中取值范围的约束
altertablesdropss
5)删除属性列status
altertablesdropcolumnstatus
如教材85页所示,建立student,sc,course等表,并插入若干数据,完成如下操作:
建表及插入数据代码
createdatabasesc
creditsmallint,
foreignkey(cpno)referencescourse(cno));
insertintostudent(sno,sname,ssex,sdept)
20050411'
李华'
cs'
20050112'
李丽'
20040101'
张三'
20040501'
李晨'
20060301'
李小'
math'
20060401'
张红'
20070401'
李金'
is'
null,'
Pascal语言'
null)
80'
72'
1)列出没有成绩的学生的学号和课程号
selectsc.sno,o
fromsc
wheregradeisnull;
2)列出2号课程成绩在70分到80分学生的学号
selectsno
wherecno='
andgradebetween70and80
1)查询所有2005级的学生的姓名,性别和所在系
selectsname,ssex,sdept
fromstudent
wheresnolike'
2005%'
2)查询计科系2004级全体学生的所有信息
select*
2004%'
3)查询计科系2006级3班和4班学生的姓名和性别
selectsname,ssex
200603%'
orsnolike'
200604%'
4)查询所有以“数”打头的课程的名称和学分
selectcname,credit
fromcourse
wherecnamelike'
数%'
5)查询数学系所有学生的姓名,性别和出生年份
selectsname,ssex,2011-sage
wheresdept='
6)将course表中名为PASCAL语言的课程更名为“C语言”
updatecourse
setcname='
wherecname='
select*fromcourse
7)将所有课程的学分增加1分
setcredit=credit+1
8)删除没有选课成绩的选课记录
deletefromscwheregradeisnull
select*fromsc
8)删除“IS”系的所有学生信息
deletefromstudentwheresdept='
select*fromstudent
9)删除所有的课程信息
deletefromcoursewherecnameisnotnull
实验四查询(多表查询,嵌套查询,分组查询)
(验证型实验12学时)
实现单表和多表的普通查询和嵌套查询。
包括返回单值的子查询和返回多值的子查询。
使用5个聚合函数以及GROUPBY子句和HAVING子句实现分组查询.
2.实验内容
有如下关系模式,分析每个关系模式的主码,外码,完成后面的查询
职员表:
Emp(eid:
integer;
ename:
string,salary:
real)
部门表:
Dept(did:
integer,dname:
string,managerid:
integer,floornum:
integer)
职员与部分的关系表:
Works(eid:
integer,did:
integer);
Works表表示:
一个职员可以在多个部门工作,一个部门有多个职员
Dept表中managerid可以取值null,表示尚未任命部门经理,floornum可以取值null,表示尚未分配工作地点
用单表查询完成如下操作:
1)输出所有员工的姓名和工资
selectename,salaryfromemp
2)输出薪水少于10000或者大于100000的雇员的名字
selectename
fromemp
wheresalary<
10000orsalary>
100000
3)输出所有姓“欧阳”,且全名为四个字的雇员的姓名和工资
selectename,salary
whereenamelike'
欧阳__'
4)输出薪水在20000和50000之间的雇员的名字
wheresalary>
=20000andsalary<
=50000
5)输出部门名字中含有“_”的所有部门的名字和楼层号
selectdname,floornum
fromdept
wherednamelike'
%\_%'
escape'
\'
;
6)查询公司的员工数
selectcount(eid)
7)查询所有还没有部门经理的部门的名字和编号
selectdname,did
wheremanageridisnull;
8)查询所有已分配楼层的部门的所有信息
wherefloornumisnotnull;
用连接查询完成如下操作:
1)查询“电视”部门的职工人数
selectcount(works.eid)
fromworks,dept
whereworks.did=dept.didanddept.dname='
电视'
2)输出每个部门的名字和平均工资
selectdept.dname,avg(salary)
fromemp,dept,works
whereemp.eid=works.eidanddept.did=works.did
groupbydept.dname
3)查询每个部门的部门编号,及其拥有的雇员的人
selectdept.did,count(eid)
fromdept,works
wheredept.did=works.did
groupbydept.did
4)查询在第10层工作,同时薪水少于¥50000的所有雇员的名字
fromdept,emp,works
wheredept.floornum='
andemp.salary<
50000andworks.eid=emp.eidanddept.did=works.did
5)输出同时管理三个或者更多部门的管理者的名字
selectemp.ename
wheredept.managerid=emp.eidanddept.did=works.did
groupbyename
havingcount(dept.did)>
=3;
6)输出管理在同一层上2个以上部门的所有管理者的名字(因为十个元组太多,所以改成两个)
selectename,count(did)
fromemp,dept
whereeid=managerid
havingcount(did)>
2
7)输出雇员“刘丽”工作的部门的名字
selectdept.dname
whereemp.enamelike'
刘丽'
anddept.did=works.didandemp.eid=works.eid;
用嵌套查询完成如下操作:
1)查询工资最高的雇员的名字
selectemp.ename
whereemp.salary=(selectmax(salary)
fromemp);
2)查询工资最低的雇员的名字及其所在部门的编号和名字
selectename,dname,dept.did
whereemp.eid=works.eidanddept.did=works.didandemp.salary=(selectmin(salary)
fromemp);
3)输出与Santa工作部门相同的所有雇员的所有信息
4)找出薪水在20000以上,并且在电视部门或者玩具部门工作的雇员的名字
whereeidin(selecteid
fromworks
wheredidin(selectdid
fromdept
wheredname='
ordname='
玩具'
5)输出与刘丽在同一层工作的雇员的名字
whereemp.eid=works.eidand
dept.did=works.didand
floornumin(selectfloornum
fromdept
where(didin(selectdid
whereeidin(selecteid
fromemp
whereename='
))))
6)输出比所在部门的经理挣的还要多的雇员的名字
7)输出满足如下条件的各个部门的名字:
经理的姓为张,同时他的薪水既不是本部门最高也不是最低
8)输出比“玩具”部门所有职工工资都高的雇员的姓名
wheresalary>
all(selectsalary
fromemp,d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql server实验一到实验七 server 实验