一、 实验目的
熟悉sql数据定义语言,能够熟练使用sql语句来创建和更改基本表,创建和取消索引。 二、实验内容
1、创建数据库表CUSTOMERS(CID,CNAME,CITY,DISCNT)数据库表
AGENTS(AID,ANAME,CITY,PERCENT)、数据库表PRODUCTS(PID,PNAME),其中,CID,AID,PID分别是各表的主键,具有唯一性约束。
createtableCUSTOMERS(
CIDchar(8)notnullprimarykey, CNAMEchar(16), CITYchar(16), DISCNTint )
createtableAGENTS(
AIDchar(8)notnullprimarykey, ANAMEchar(16), CTIYchar(16), PERCENTSfloat, )
createtablePRODUCTS(
PIDchar(8)notnullprimarykey, PNAMEchar(16), )
2、创建数据库表ORDERS(ORDNA,MONTH,CID,AID,PID,QTY,DOLLARS)。其中ORDNA是主键,具有唯一性约束。CID,AID,PID分别是外键引用自表CUSTOMERS、AGENTS、PRODUCTS。
createtableORDERS(
ORDNAchar(8)notnullprimarykey, MONTHSint,
CIDchar(8)notnullunique, AIDchar(8)notnullunique, PIDchar(8)notnullunique,
foreignkey(CID)referencesCUSTOMERSondeletecascade, foreignkey(AID)referencesAGENTS, foreignkey(PID)referencesPRODUCTS, )
3、增加数据库表PRODUCTS三个属性列,CITY,QUANTITY,PRICE。
altertablePRODUCTSaddCITYchar(16) altertablePRODUCTSaddQUANTITYint altertablePRODUCTSaddPRICEfloat
4、为以上各表建立各自的按主键增序排列的索引。
createindexXSCNOonCUSTOMERS(CID) createindexXSCNOonAGENTS(AID) createindexXSCNOonPRODUCTS(PID) createindexXSCNOonORDERS(ORDNA)
5、取消4建立的四个索引。
dropindexCUSTOMERS.XSCNO dropindexAGENTS.XSCNO dropindexPRODUCTS.XSCNO dropindexORDERS.XSCNO
实验1.2 数据查询
一、 实验目的
熟悉sql数据查询语言,能够使用sql语句对数据库进行单表查询,连接查询,嵌套查询,集合查询和统计查询。 二、实验内容
1. 查询全部课程的详细记录。
select* fromCOURSES
(50 行受影响)
2. 查询所有有选课学生的编号。
selectdistinctsid fromCHOICES
3. 查询课时<88(小时)的课程的编号。
selectcid fromCOURSES wherehour<88
4. 请找出总分超过400分的学生。
selectsid fromCHOICES groupbysid
havingSUM(score)>400
5. 查询课程的总数。
selectCOUNT(cid) fromCOURSES
6. 查询所有课程和选修课程的总数。
selectcid,count(sid) fromCHOICES groupbycid
7. 查询选修成绩合格的课程超过两门的学生编号。
selectsid fromCHOICES wherescore>60 groupbysid
havingcount(cid)>2
8. 统计各个学生的选修课程数目和平均成绩。
selectsid,COUNT(cid),AVG(score) fromCHOICES groupbysid
9. 查询选修java的所有学生的编号和及姓名。
selectSTUDENTS.sid,sname fromCHOICES,STUDENTS,COURSES
whereCHOICES.sid=STUDENTS.sidandCHOICES.cid=COURSES.cidand COURSES.cname='Java'
10. 分别使用等值连接和谓词in两种方式查询姓名为sssht的学生所选的课程的编号和成
绩。
等价连接
selectSTUDENTS.sid,score fromSTUDENTS,CHOICES
whereSTUDENTS.sid=CHOICES.sidandsname='sssht'
谓词IN
selectsid,score fromCHOICES wheresidin(
selectsid fromSTUDENTS wheresname='sssht' )
11. 查询课时比课程C++多的课程的名称。
selectc1.cname
fromCOURSESc1,COURSESc2
wherec1.hour>c2.hourandc2.cname='C++'
12. 查询选修C++课程的成绩比姓名为znkoo的学生高的所有学生的编号和姓名。
selectsid,sname fromSTUDENTS wheresidin(
selectc1.sid
fromCHOICESc1,CHOICESc2,STUDENTS
wherec1.score>c2.scoreandc1.cid=c2.cidandc2.sid=STUDENTS.sidandSTandc2.cidin( )
selectCHOICES.cid fromCHOICES,COURSES
whereCHOICES.cid=COURSES.cidandcname='C++' )
UDENTS.sname='znkoo'
13. 找出和学生883794999或学生850955252的年级一样的学生的姓名。
selectsname fromSTUDENTS wheregradein(
selectgrade fromSTUDENTS
whereSTUDENTS.sid=883794999 orSTUDENTS.sid=850955252
)
14. 查询没有选修java的学生姓名。
selectsname
fromSTUDENTS,CHOICES
whereSTUDENTS.sid=CHOICES.sidandCHOICES.cidnotin( )
selectCHOICES.cid fromCHOICES,COURSES
whereCHOICES.cid=COURSES.cidandCOURSES.cname='Java'
15. 找出课时最少的课程的详细信息。
select* fromCOURSES
wherehour<=all(selecthour
fromCOURSES )
16. 查询工资最高的教师的编号和开设的课程号。
selectTEACHERS.tid,cid fromTEACHERS,CHOICES
whereCHOICES.tid=TEACHERS.tidandsalary>=(selectMAX(salary)
fromTEACHERS)
17. 找出选修课程ERP成绩最高的学生编号。
selectsid
fromCHOICES,COURSES
whereCHOICES.cid=COURSES.cidandCOURSES.cname='ERP'andscore=( )
selectMAX(score) fromCHOICES,COURSES
whereCHOICES.cid=COURSES.cidandCOURSES.cname='ERP'
18. 查询没有学生选的课程的名称。
selectCname fromCOURSES wherecidnotin( )
selectcid fromCHOICES
19. 找出讲授课程UML的教师讲授的所有课程名称。
selectcname fromCOURSES wherecidin(
selectcid fromCHOICES wheretidin(
selecttid
fromCOURSES,CHOICES
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库数据库实验报告1在线全文阅读。
相关推荐: