数据库实验报告1

2020-04-13 22:41

一、 实验目的

熟悉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


数据库实验报告1.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:学校创建平安校园工作领导小组的组成及职责分工

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: