数据库实验报告1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验报告1
一、实验目的
熟悉sql数据定义语言,能够熟练使用sql语句来创建和更改基本表,创建和取消索引。
二、实验内容
1、创建数据库表CUSTOMERS(CID,CNAME,CITY,DISCNT)数据库表
AGENTS(AID,ANAME,CITY,PERCENT)、数据库表PRODUCTS(PID,PNAME),其中,CID,AID,PID 分别是各表的主键,具有唯一性约束。
createtable CUSTOMERS(
CID char(8)notnull primarykey,
CNAME char(16),
CITY char(16),
DISCNT int
)
createtable AGENTS(
AID char(8)notnull primarykey,
ANAME char(16),
CTIY char(16),
PERCENTS float,
)
createtable PRODUCTS(
PID char(8)notnull primarykey,
PNAME char(16),
)
2、创建数据库表ORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS)。
其中ORDNA是主键,具有唯一性约束。
CID,AID,PID分别是外键引用自表
CUSTOMERS、AGENTS、PRODUCTS。
createtable ORDERS( ORDNA char(8)notnull primarykey,
MONTHS int,
CID char(8)notnull unique,
AID char(8)notnull unique,
PID char(8)notnull unique,
foreignkey(CID)references CUSTOMERS ondeletecascade,
foreignkey(AID)references AGENTS,
foreignkey(PID)references PRODUCTS,
)
3、增加数据库表PRODUCTS三个属性列,CITY,QUANTITY,PRICE。
altertable PRODUCTS add CITY char(16)
altertable PRODUCTS add QUANTITY int
altertable PRODUCTS add PRICE float
4、为以上各表建立各自的按主键增序排列的索引。
createindex XSCNO on CUSTOMERS(CID)
createindex XSCNO on AGENTS(AID)
createindex XSCNO on PRODUCTS(PID)
createindex XSCNO on ORDERS(ORDNA)
5、取消4建立的四个索引。
dropindex CUSTOMERS.XSCNO dropindex AGENTS.XSCNO dropindex PRODUCTS.XSCNO dropindex ORDERS.XSCNO
实验1.2 数据查询
一、实验目的
熟悉sql数据查询语言,能够使用sql语句对数据库进行单表查询,连接查询,嵌套查询,集合查询和统计查询。
二、实验内容
1.查询全部课程的详细记录。
select*
from COURSES
(50 行受影响)
2.查询所有有选课学生的编号。
selectdistinctsid
from CHOICES
3.查询课时<88(小时)的课程的编号。
select cid
from COURSES
wherehour<88
4.请找出总分超过400分的学生。
selectsid
from CHOICES
groupbysid
having SUM(score)>400
5.查询课程的总数。
select COUNT(cid)
from COURSES
6.查询所有课程和选修课程的总数。
select cid,count(sid)
from CHOICES
groupby cid
7.查询选修成绩合格的课程超过两门的学生编号。
selectsid
from CHOICES
where score>60
groupbysid
having count(cid)>2
8.统计各个学生的选修课程数目和平均成绩。
selectsid,COUNT(cid),AVG(score)
from CHOICES
groupbysid
9.查询选修java的所有学生的编号和及姓名。
select STUDENTS.sid,sname
from CHOICES,STUDENTS,COURSES
where CHOICES.sid=STUDENTS.sid and CHOICES.cid=COURSES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='Java'
10.分别使用等值连接和谓词in两种方式查询姓名为sssht的学生所选的课程的编号和成
绩。
等价连接
select STUDENTS.sid,score
from STUDENTS,CHOICES
where STUDENTS.sid=CHOICES.sid and sname='sssht'
谓词IN
selectsid,score
from CHOICES
wheresid in(
selectsid
from STUDENTS
where sname='sssht'
)
11.查询课时比课程C++多的课程的名称。
select
/doc/12d1bfcab7360b4c2e3f64fc.html ame from COURSESc1,COURSESc2
where c1.hour>c2.hour and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='C++'
12.查询选修C++课程的成绩比姓名为znkoo的学生高的所有学生的编号和姓名。
selectsid,sname
from STUDENTS
wheresid in(
select c1.sid
from CHOICESc1,CHOICESc2,STUDENTS
where c1.score>c2.score and c1.cid=c2.cid and c2.sid=STUDENTS.sid and ST UDENTS.sname='znkoo' and c2.cid in(
select CHOICES.cid
from CHOICES,COURSES
where CHOICES.cid=COURSES.cid and cname='C++'
)
)
13.找出和学生883794999或学生850955252的年级一样的学生的姓名。
select sname
from STUDENTS
where grade in(
select grade
from STUDENTS
where STUDENTS.sid=883794999 or STUDENTS.sid=850955252
)
14.查询没有选修java的学生姓名。
select sname
from STUDENTS,CHOICES
where STUDENTS.sid=CHOICES.sid and CHOICES.cid notin( select CHOICES.cid
from CHOICES,COURSES
where CHOICES.cid=COURSES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='Java'
)
15.找出课时最少的课程的详细信息。
select*
from COURSES
wherehour<=all(selecthour
from COURSES
)
16.查询工资最高的教师的编号和开设的课程号。
select TEACHERS.tid,cid
from TEACHERS,CHOICES
where CHOICES.tid=TEACHERS.tid and salary>=(select MAX(salary) from TEACHERS)
17.找出选修课程ERP成绩最高的学生编号。
selectsid
from CHOICES,COURSES
where CHOICES.cid=COURSES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='ERP'and score=( select MAX(score)
from CHOICES,COURSES
where CHOICES.cid=COURSES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='ERP'
)
18.查询没有学生选的课程的名称。
select Cname
from COURSES
where cid notin(
select cid
from CHOICES
)
19.找出讲授课程UML的教师讲授的所有课程名称。
select cname
from COURSES
where cid in(
select cid
from CHOICES
where tid in(
select tid
from COURSES,CHOICES
where cname='UML'and COURSES.cid=CHOICES.cid
)
)
20.查询选修了编号200102901的教师开设的所有课程的学生编号。
select STUDENTS.sid
from STUDENTS,CHOICES
where CHOICES.sid=STUDENTS.sid and cid in(
select cid
from CHOICES
where tid='200102901'
)
21.查询选修课程database的学生集合与选修课程uml的学生的并集。
selectdistinctsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='database'
union
selectsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='UML'
22.实现集合交运算。
查询既选修课程database又选修课程uml 的学生编号。
selectdistinctsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='database'
intersect
selectsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='UML'
23.实现集合减运算。
查询选修课程database没有选修课程uml 的学生编号。
selectdistinctsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='database'
except
selectdistinctsid
from CHOICES,COURSES
where COURSES.cid=CHOICES.cid and /doc/12d1bfcab7360b4c2e3f64fc.html
ame='UML'
实验1.3 数据更新
一、实验目的
熟悉数据库的数据更新操作,能够使用sql语句对数据库进行数据的插入、更新、删除操作。
二、实验内容
1.向STUDENTS表中插入编号是800022222且姓名是WangLan 的元组。
insertinto STUDENTS(sid,sname)
values('800022222','WangLan')
2.向TEACHERS表插入元组(200001000,LXL,s4zrck@/doc/12d1bfcab7360b4c2e3f64fc.h tml .3024)。
insertinto TEACHERS
values('200001000','LXL','s4zrck@/doc/12d 1bfcab7360b4c2e3f64fc.html ','3024')
3.将TEACHERS表中编号为200010493的老师工资改为4000。
update TEACHERS
set salary=4000
where tid='200010493'
4.将TEACHERS表中所有工资小于2500的老师工资改为2500。
update TEACHERS
set salary=2500
where salary<2500
5.将由编号200016731老师讲授的课程全部改为由姓名rnupx的老师讲授。
update CHOICES
set tid=(select tid
from TEACHERS
where tname='rnupx'
)
where tid='200016731'
6.更新编号800071780的学生年级为2001。
update STUDENTS
set grade=2001
wheresid=800071780
7.删除没有学生选修的课程。
deletefrom COURSES
where cid notin(
select cid
from CHOICES groupby cid
)
8.删除年级高于1998的学生信息。
deletefrom STUDENTS
where grade>1998
9.删除没有选修课程的学生信息。
deletefrom STUDENTS
wheresid notin(
selectsid
from CHOICES groupbysid
)
10.删除成绩不及格的选课记录。
deletefrom CHOICES where score<60。