数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(33页珍藏版)》请在冰豆网上搜索。
![数据库实验报告.docx](https://file1.bdocx.com/fileroot1/2022-11/16/ba83d472-8451-4bcb-857f-539148b894a3/ba83d472-8451-4bcb-857f-539148b894a31.gif)
数据库实验报告
数据库设计实验报告
学院:
计算机科学与软件学院
班级:
姓名:
学号:
实验一
实验1.1数据定义
一、实验目的
熟悉SQL的数据定义语言,能够熟练的使用SOL语句来创建和更改基本表,创建和取消索引。
二、实验内容
本实验的主要内容包括:
使用CREATE语句创建基本表。
更改基本表的定义,增加列,删除列,修改列的数据类型。
创建表的升降序索引、
取消表、表的索引或表的约束。
三、习题
(1)AGENTS(AID,ANAME,ITY,PERCEN).数据库表PRODUCTS(PID,PNAME)。
其中,CID,AID,PID分别是各表的主键,具有唯一性约束。
创建CUSTOMERS表:
CREATETABLECUSTOMERS(
CIDINTNOTNULL,
CNAMECHAR(8),
CITYCHAR(8),
DISCNTCHAR(8),
PRIMARYKEY(CID))
创建AGENTS表:
CREATETABLEAGENTS(
AIDINTNOTNULL,
ANAMECHAR(8),
CITYCHAR(8),
PERCENCHAR(8),
PRIMARYKEY(AID))
创建PRODUCTS表:
CREATETABLEPRODUCTS(
PIDINTNOTNULL,
ANAMECHAR(8),
PRIMARYKEY(PID))
(2).创建数据库表ORDERS(ORDNA,MANTH,CID,AID,PID,QTY,DOLLARS).其中,ORDNA是主键,具有唯一性约束。
CID,AID,PID分别是外键引用自表CUSTOMERS,AGENTS,PRODUCTS.
CREATETABLEORDERS(
ORDNAINTNOTNULL,
MONTHINT,
CIDINT,
AIDINT,
PIDINT,
QTYCHAR(8),
DOLLARSCHAR(8),
PRIMARYKEY(ORDNA),
FOREIGNKEY(CID)REFERENCESCUSTOMERS,
FOREIGNKEY(AID)REFERENCESAGENTS,
FOREIGNKEY(PID)REFERENCESPRODUCTS)
(3).增加数据库表PRODUCTS三个属性列:
CITY,QUANTITY,PRICE.
ALTERTABLEPRODUCTSADDCITYCHAR(8)
ALTERTABLEPRODUCTSADDQUANTITYCHAR(8)
ALTERTABLEPRODUCTSADDPRICECHAR(8)
(4).为以上四个表建立各自的按组建增序排列的索引
CREATEINDEXXCNOONCUSTOMERS(CID)
CREATEINDEXXCNOONAGENTS(AID)
CREATEINDEXXCNOONPRODUCTS(PID)
CREATEINDEXXCNOONORDERS(ORDNA)
(5)取消(4)建立的四个索引
DROPINDEXAGENTS.XCNO
DROPINDEXCUSTOMERS.XCNO
DROPINDEXPRODUCTS.XCNO
DROPINDEXORDERS.XCNO
实验1.2数据查询
一、实验目的:
熟悉SQL语句的数据查询语言,能够使用SQL语句对数据库进行单表查询、链接查询、嵌套查询和统计查询。
二、实验内容
实验内容主要是对数据库进行查询操作,包括如下四类查询方式:
(1)单表查询
查询的目标表达式为所有列,指定的列或指定的列的运算三种不同。
使用DISTINCT保留字消除重复列。
对查询结果排序和分组。
集合分组使用集函数进行各项统计。
(2)连接查询
笛卡尔连接和等值连接。
自连接。
外连接。
复合条件连接,
多表连接。
(3)嵌套查询
通过实验验证对子查询的两个限制条件。
体会相关子查询和不相关子查询的不同。
考察四类谓词的用法,包括:
第一类,IN、NOTIN;
第二类,带有比较运算符的查询;
第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值的情况;
第四类,带有EXISTS谓词的子查询,实现“所有”等情况。
(4)集合运算
使用保留字UNION进行集合或运算。
采用逻辑运算符AND或OR来实现集合交和减运算。
三、习题
1STUDENTS:
2TEACHERS:
3COURSES:
4CHOICES:
(1)查询全部课程的详细记录:
结果:
(2)查询所有有选课的学生的编号:
结果:
(3)查询课时<88(小时)的课程的编号:
结果:
(4)请找出总分超过400分的学生
结果:
(5)查询课程的总数:
结果:
(6)查询课程和选修课程的学生总数:
(7).查询选修成绩合格的课程超过两门的学生编号
SELECTSID
FROMCHOICES
WHERESCRCE>60
GROUPBYSID
HAVINGCOUNT(CID)>2
(8)统计各个学生的选修课程数目和平均成绩
selectSID,COUNT(CID),AVG(SCRCE)
FROMCHOICES
GROUPBYSID
(9)
SELECTSTUDENTS.SID,SNAME
FROMSTUDENTS,CHOICES,COURSES
WHERESTUDENTS.SID=CHOICES.SIDAND
CHOICES.CID=COURSES.CIDAND
COURSES.cname='java'
(10)
SELECTCHOICES.CID,CHOICES.SCRCE
FROMCHOICES,STUDENTS
WHEREsname='SSSTH'AND
CHOICES.SID=STUDENTS.sid
SELECTCID,SCRCE
FROMCHOICES
WHERESIDIN(
SELECTSTUDENTS.SID
FROMSTUDENTS
WHEREsname='sssTH')
(11)
SELECTC1.CNAME
FROMCOURSES
ASC1,COURSESASC2
WHEREC1.hour>C2.hourANDCame='C++'
(12)
SELECTSID,SNAME
FROMSTUDENTS
WHEREsidIN(
SELECTC1.SID
FROMCHOICESASC1,CHOICESASC2
WHEREC1.SCRCE>C2.SCRCEANDC1.CID=C2.CIDAND
C2.SID=(SELECTSIDFROMSTUDENTSWHEREsname='ZNKOO')AND
C1.CID=(SELECTCIDFROMCOURSESWHEREcname='C++'))
(13)
SELECTSNAME
FROMSTUDENTS
WHEREGRADEIN(
SELECTGRADE
FROMSTUDENTS
WHERESIDIN(
'883794999','850955252'))
(14)
SELECTSNAME
FROMSTUDENTS
WHERESIDNOTIN(
SELECTSID
FROMCHOICES
WHERECID=(
SELECTCID
FROMCOURSES
WHERECNAME='JAVA'))
(15)
SELECT*
FROMCOURSES
WHEREHOUR<=ALL(
SELECTHOUR
FROMCOURSES)
(16)
SELECTCHOICES.TID,CHOICES.CID
FROMCHOICES
WHERETID=(
SELECTTID
FROMTEACHERS
WHEREsalary=(
SELECTMAX(SALARY)
FROMTEACHERS
WHEREsalaryIN(
SELECTSALARY
FROMTEACHERS
WHEREtidIN(
SELECTTEACHERS.tid
FROMCHOICES,TEACHERS
WHERECHOICES.TID=TEACHERS.tid))))
(17)
SELECTSID
FROMCHOICES
WHERESCRCE=(
SELECTMAX(SCRCE)
FROMCHOICES
WHERECID=(
SELECTCID
FROMCOURSES
WHERECNAME='ERP'))
(18)
SELECTCNAME
FROMCOURSES
WHERECIDNOTIN(
SELECTCID
FROMCHOICES)
(19)
SELECTCNAME
FROMCOURSES
WHERECID=SOME(
SELECTCID
FROMCHOICES
WHERETID=SOME(
SELECTTID
FROMCOURSES,CHOICES
WHERECNAME='UML'AND
COURSES.CID=CHOICES.CID))
(20)
SELECTSNAME
FROMSTUDENTS
WHERESIDIN(
SELECTSID
FROMCHOICES
WHERECIDIN(
SELECTCID
FROMCHOICES
WHERETID='200102901'))
(21)
SELECTSID
FROMCHOICES,COURSES
WHERECOURSES.CID=CHOICES.CIDAND
COURSES.CNAME='DATABASE'
UNION
SELECTSID
FROMCHOICES,COURSES
WHERECOURSES.CID=CHOICES.CIDAND
COURSES.CNAME='UML'
(22)
SELECTX.SID
FROMCHOICESASX,CHOICESASY
WHERE(
X.CID=(
SELECTCID
FROMCOURSES
WHERECNAME='DATEBASE')AND
Y.CID=(
SELECTCID
FROMCOURSES
WHERECNAME='UML'))
ANDX.SID=Y.SID
(23)
SELECTX.SID
FROMCHOICESASX,CHOICESASY
WHERE(
X.CID=(
SELECTCIDFROMCOURSES
WHERECNAME='DATE