oracle查询练习.docx
- 文档编号:6618406
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:16
- 大小:282.92KB
oracle查询练习.docx
《oracle查询练习.docx》由会员分享,可在线阅读,更多相关《oracle查询练习.docx(16页珍藏版)》请在冰豆网上搜索。
oracle查询练习
--建立外码
foreignkey(sno)referencesstudent(sno);
--添加外码
altertablestudentaddforeignkey(sno)referencesstudent(sno);
--添加主码
altertablestudentaddprimarykey(sno);
--为Student表添加籍贯(50个长度的变长字符串)列
altertablestudentaddaddressvarchar(50);
--将Student表中的“籍贯”列的类型精度改为100
altertablestudentmodifyaddressvarchar(100);
--删除Student表的“籍贯”列
altertablestudentdropcolumnaddress;
--删除这三张表
droptablestudent;
droptablesc;
droptablecourse;
--为Student(10行以上),Course(8行以上),SC(25行以上)表
--添加记录
--为Student表添加列“班级号”
altertablestudentaddclassnovarchar(10);
--为学生填写班级号(数字);
updatestudentsetclassno=round(dbms_random.value(1,2),0);
--将每个同学的班级号前面加上“T”
updatestudentsetclassno='T'||trim(classno);
--删除班级号前面的“T”
updatestudentsetclassno=substr(classno,2,10);
--删除班级号为空的学生
deletefromstudentwhereclassnoisnull;
--删除成绩低于50分的学生的选课信息
deletefromscwheregrade<=50;
--查询选修‘c05’课程,并且年龄不大于26岁的学生的学号和成绩
,并按成绩降序排列。
(只选出第3个学生?
)
selects.sno,gradefromstudents,scwheres.sno=sc.sno
andsage<=26andcno='c05'orderbygradedesc;
select*from
(selectrownumrn,a.*from
(selects.sno,gradefromstudents,scwheres.sno=sc.sno
andsage<=26andcno='c05'orderbygradedesc)a)where
rn=3;
--查询MA系的女同学
select*fromstudentwheresdept='MA';
--查询CS系姓李的学生选修的课程,列出学号,课程号和成绩
selectsc.sno,cno,gradefromstudents,scwheres.sno=sc.snoandsname='李%'andsdept='CS';
--查询选修了数据库课程的学生的学号,成绩,按成绩降序排列
selectsno,gradefromsc,coursecwhereo=o
andcname='数据库'orderbygradedesc;
--找出学分为4分以上的课程的选修情况,列出学号,课程名,成绩
selectsno,o,gradefromsc,coursecwhere
o=oandccredit>=4;
--检索数据库的成绩在90分以上的学生的学号和姓名
selects.sno,snamefromsc,coursec,studentswhere
s.sno=sc.snoandcname='数据库'andgrade>=90;
--练习(使用嵌套查询)
--查询和数据库相同学分的课程。
selectcno,cname,ccreditfromcoursewhereccredit=
(selectccreditfromcoursewherecname='数据库');
--查询选修了数据库课程的学生的学号。
selectsc.snofromsc,coursecwhereo=oand
o=(selectcnofromcoursewherecname='数据库');
--查询成绩最高的学生的姓名。
selectsnamefromsc,studentswheresc.sno=s.snoand
grade=(selectmax(grade)fromsc);
--查询CS系成绩最高的学生的学号、姓名以及成绩。
selects.sno,sname,gradefromsc,studentswhere
sc.sno=s.snoandsdept='CS'andgrade=(selectmax(grade)
fromsc);
--查询数据库课程成绩最高的学生的姓名。
selectsname,cname,gradefromsc,students,coursecwhere
sc.sno=s.snoando=o
andgrade=(selectmax(grade)fromscwhereo=
(selectcnofromcoursewherecname='数据库'));
--查询每门课程的平均成绩。
selectcno,avg(grade)fromscgroupbycnoorderbycno
asc;
--查询每门课程不及格的学生人数。
selectcno,count(sno)fromscwheregrade<60groupby
cno;
--查询每个系学生的最高成绩。
selectsdept,max(grade)fromstudents,scwhere
s.sno=sc.snogroupbysdept;
--查询平均分在75以上的课程。
selectcno,avg(grade)fromscgroupbycnohavingavg
(grade)>75;
--查询女同学中成绩最高的学生所在的系。
selectsdeptfromstudents,scwheres.sno=sc.snoand
grade=(selectmax(grade)fromsc,studentswhere
sc.sno=s.snoandssex='女');
--查询选课人数最多的课程。
selectcno,count(sno)fromscgroupbycnohavingcount
(sno)>=all(selectcount(sno)fromscgroupbycno);
--1、检索所有学生中年龄最大的学生的姓名及年龄。
selectsname,sagefromstudentwheresage=(selectmax
(sage)fromstudent);
--2、求每一个学生的最高分和最低分。
selectsno,max(grade),min(grade)fromscgroupbysno;
--3查询CS系所有男同学考C05课程的成绩,列出这些学生的学号,姓
名,成绩,并按成绩降序排列。
selects.sno,sname,gradefromstudents,sc,coursecwhere
sc.sno=s.snoando=oandsdept='计算机'andssex='
男'andcname='数据库';
--4检索选修了“C语言”课程的学生的姓名(可用子查询—IN或Exists)
selectsnamefromstudents,sc,coursecwheresc.sno=s.sno
ando=oandcname='C语言';
--5、检索选修了课程号为C1或C2课程,且成绩高于或等于70分的学
生的姓名,课程名和成绩。
selectsname,cname,gradefromstudents,sc,coursecwhere
sc.sno=s.snoando=oand(o='C1'oro='C2')andsc.grade>=70;
--正确
selectstudent.sname,ame,sc.gradefrom
student,sc,course
wheresc.grade>70ando=oand
sc.sno=student.snoandoin('c01','c02');
--6、检索所有学生的姓名、所选课程的课程名和成绩以及课程号,并
且按成绩的降序和课程号的升序进行排列。
selectsname,cname,grade,ofromstudents,sc,coursec
wheresc.sno=s.snoando=oorderbygrade
desc,cnoasc;
--7.列出没有选课的学生姓名
selectsnamefromstudents,scwheres.sno=sc.snoand
cno=null;
--8.列出平均分最高的学生所在系的所有学生的姓名
selectsnamefromstudentwheresdept=(selectsdeptfrom
students,scwheres.sno=sc.snoandgrade=(selectmax
(grade)fromsc,studentswheresc.sno=s.sno));
selectsno,snamefromstudentwheresdept=(selectsdeptfromstudent
wheresno=(selectsnofromscgroupbysnohavingavg(grade)>=all(selectavg(grade)fromscgroupbycno)))
--2、查询平均分最高的女同学的学号,姓名,平均成绩。
selectsc.sno,sname,avg(grade)fromstudent,scwherestudent.sno=sc.snoandssex='女'groupbysname,sc.snohavingavg(grade)>=all(selectavg(grade)fromsc,studentswheressex='女'andsc.sno=s.snogroupbysc.sno);
--9.查询CS系C01课程的成绩比C01课程的平均分高的学生学号
selects.snofromstudents,sc,coursecwhereo=o
andsc.sno=s.snoandsdept='CS'andcno='C01'andgrade>
(selectavg(grade)fromsc,coursecwhereo=oand
cname='C01');
--10.查询既选修了C01又选修了C02的学生
selectsnofromscwherecno='C01'andsno=(selectsnofrom
scwherecno='C02');
--11.统计及格的课程数在四门以上的学生所选课程的平均成绩。
最
后按降序列出平均成绩名次名单来。
selectsno,avg(grade)fromscwheregrade>=60groupby
snohavingcount(*)>=4orderbyavg(grade)desc;
--12.检索所有学生都选修了的课程(列出课程号)
selectcnofromscgroupbycnohavingcount(*)>=(select
count(*)fromstudent);
--13.查询年龄高于其所在系的平均年龄的学生姓名(不完整,学院太
多)
selectsnamefromstudentwheresage>(selectavg(sage)
fromstudentwheresdept='cs')andsdept='cs';
selectsnamefromstudentawheresage>(selectavg(sage)fromstudentwheresdept=a.sdept);
--14.为MA系学生选修必修课C05
insertintosc(sno,cno)selectsno,'c05'fromstudent
wheresdept='MA'andnotexists(select*fromsc
wheresno=student.snoandcno=‘c05’);
--15.将CS系,C01课程学生的成绩加10分
updatescsetgrade=grade+10wherecno='c01'andsnoin
(selectsnofromstudentwheresdept='CS');
--16.将”数据库”的选课记录全部删除
deletefromscwherecno=(selectcnofromcoursewhere
cname='数据库');
--1、查询C01课程成绩不为Null的学生的姓名和成绩
selectsname,gradefromstudents,coursec,scwhere
sc.sno=s.snoando=oando='c01'andgradeis
notnull;
--2、查询平均分高于85分的女同学的学号,姓名,平均成绩。
selects.sno,sname,avg(grade)fromstudents,scwhere
s.sno=sc.snoandssex='女'groupbys.sno,snamehaving
avg(grade)>85;
--3、查询CS系学生“数据库”课程的最高分,列出姓名和最高分。
selectsname,max(grade)fromstudents,sc,coursecwhere
s.sno=sc.snoando=oandsdept='CS'andcname='数
据库'groupbysname;
--4、查询总学分在8分以上的学生的平均成绩,列出学号,平均成绩
selects.sno,avg(grade),sum(ccredit)fromstudent
s,sc,coursecwheres.sno=sc.snoando=ogroupby
s.snohavingsum(ccredit)>8;
--5、查询所有18岁以上学生的选课门数,列出学号,姓名,年龄,
选课门数。
selects.sno,sname,sage,count(s.sno)fromstudents,sc
wheres.sno=sc.snoandsage>18groupbys.sno,sname,sage;
--6、建立一个用户U1,给用户赋予Connect和DBA权限,并用该用户
登录数据库。
createuseru1identifiedbyu1;
grantconnect,resource,dbatou1;
connu1/u1;
--7、用System用户登录,收回用户U1的DBA权限。
connsystem/oracle;
revokedbafromu1;
--8、删除所有CS系不及格的选课信息。
deletefromscwheresno=(selectsnofromstudentwhere
sdept='CS')andgrade<60;
--9、将平均分不及格的学生成绩修改为空。
updatescsetgrade=nullwheresnoin(selectsnofromsc
groupbysnohavingavg(grade)<60);
/*现有下面三个关系:
商店S(Sno,Sname,City)
商品P(Pno,Pname,Color)
销售SP(Sno,Pno,Number)
创建表格,并填写数据。
*/
createtables(snochar(10)primarykey,snamechar(20),citychar
(10));
createtablep(pnochar(10)prinmarykey,pnamechar(20),colorchar
(10));
createtablesp(snochar(10)primarykey,pnochar(10),spnumberchar
(10));
--查询没有在北京销售的商品名
selectpnamefroms,p,spwheres.sno=sp.snoand
p.pno=sp.pnoands.snonotin(selectsnofromswhere
city='beijing');
--查询只在北京销售的商品名(不会)
--查询在所有北京商店销售的商品名
selectpnamefrompwherep.pnoin(selectpnofromsp
wheresp.snoin(selectsnofromswherecity='北京'));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 查询 练习
![提示](https://static.bdocx.com/images/bang_tan.gif)