1.删除重复记录(当表中无主键时)
-
createtableTESTTB(
-
bmvarchar(4),
-
mcvarchar2(20)
-
)
-
insertintoTESTTBvalues(1,'aaaa');
-
insertintoTESTTBvalues(1,'aaaa');
-
insertintoTESTTBvalues(2,'bbbb');
-
insertintoTESTTBvalues(2,'bbbb');
-
/*方案一*/
-
deletefromTESTTBwhererowidnotin
-
(selectmax(rowid)fromTESTTBgroupbyTESTTB.BM,TESTTB.MC)
-
-
/*方案二*/
-
deletefromTESTTBawherea.rowid!=(
-
selectmax(rowid)fromTESTTBbwherea.bm=b.bmanda.mc=b.mc
-
)
2.bookEnrol是用来登记的,不管你是借还是还,都要添加一条记录。
请写一个SQL语句,获取到现在状态为已借出的所有图书的相关信息,
ID为3的java书,由于以归还,所以不要查出来。要求查询结果应为:(被借出的书和被借出的日期)
-
createtablebook(
-
idint,
-
namevarchar2(30),
-
PRIMARYKEY(id)
-
)
-
insertintobookvalues(1,'English');
-
insertintobookvalues(2,'Math');
-
insertintobookvalues(3,'JAVA');
-
-
createtablebookEnrol(
-
idint,
-
bookIdint,
-
dependDatedate,
-
stateint,
-
FOREIGNKEY(bookId)REFERENCESbook(id)ONDELETECASCADE
-
)
-
insertintobookEnrolvalues(1,1,to_date('2009-01-02','yyyy-mm-dd'),1);
-
insertintobookEnrolvalues(2,1,to_date('2009-01-12','yyyy-mm-dd'),2);
-
insertintobookEnrolvalues(3,2,to_date('2009-01-14','yyyy-mm-dd'),1);
-
insertintobookEnrolvalues(4,1,to_date('2009-01-17','yyyy-mm-dd'),1);
-
insertintobookEnrolvalues(5,2,to_date('2009-02-14','yyyy-mm-dd'),2);
-
insertintobookEnrolvalues(6,2,to_date('2009-02-15','yyyy-mm-dd'),1);
-
insertintobookEnrolvalues(7,3,to_date('2009-02-18','yyyy-mm-dd'),1);
-
insertintobookEnrolvalues(8,3,to_date('2009-02-19','yyyy-mm-dd'),2);
-
-
/*方案一*/
-
selecta.id,a.name,b.dependdatefrombooka,bookenrolbwhere
-
a.id=b.bookid
-
and
-
b.dependdatein(selectmax(dependdate)frombookenrolgroupbybookid)
-
andb.state=1
-
-
/*方案二*/
-
selectk.id,k.name,a.dependdate
-
frombookenrola,BOOKk
-
wherea.idin(selectmax(b.id)frombookenrolbgroupbyb.bookid)
-
anda.state=1
-
anda.bookid=k.id;
3.查询每年销量最多的产品的相关信息
-
createtablet2(
-
year_varchar2(4),
-
productvarchar2(4),
-
salenumber
-
)
-
-
insertintot2values('2005','a',700);
-
insertintot2values('2005','b',550);
-
insertintot2values('2005','c',600);
-
insertintot2values('2006','a',340);
-
insertintot2values('2006','b',500);
-
insertintot2values('2007','a',220);
-
insertintot2values('2007','b',350);
-
insertintot2values('2007','c',350);
-
-
/**方案一*/
-
selecta.year_,a.sale,a.productfromt2ainnerjoin(
-
selectmax(sale)asslfromt2groupbyyear_)b
-
ona.sale=b.slorderbya.year_
-
-
/*方案二*/
-
selectsa.year_,sa.product,sa.sale
-
fromt2sa,
-
(selectt.year_pye,max(t.sale)maxcout
-
fromt2t
-
groupbyt.year_)tmp
-
wheresa.year_=tmp.pye
-
andsa.sale=tmp.maxcout
4.排序问题,如果用总积分做降序排序..因为总积分是字符型,所以排出来是这样子(9,8,7,6,5...),要求按照总积分的数字大小排序。
-
createtablet4(
-
姓名varchar2(20),
-
月积分varchar2(20),
-
总积分char(3)
-
)
-
-
insertintot4values('WhatIsJava','1','99');
-
insertintot4values('水王','76','981');
-
insertintot4values('新浪网','65','96');
-
insertintot4values('牛人','22','9');
-
insertintot4values('中国队','64','89');
-
insertintot4values('信息','66','66');
-
insertintot4values('太阳','53','66');
-
insertintot4values('中成药','11','33');
-
insertintot4values('西洋参','257','26');
-
insertintot4values('大拿','33','23');
-
-
/*方案一*/
-
select*fromt4orderbycast(总积分asint)desc
-
-
/*方案二*/
-
select*fromt4orderbyto_number(总积分)desc;
5.得出所有人(不区分人员)每个月及上月和下月的总收入
-
createtablet5(tmonthint,
-
tnamevarchar2(10),
-
incomenumber
-
)
-
insertintot5values('08','a',1000);
-
insertintot5values('09','a',2000);
-
insertintot5values('10','a',3000);
-
-
/*方案一*/
-
selecto.tmonth,sum(o.income)ascur,(selectsum(t.income)fromt5twheret.tmonth=(o.tmonth+1)groupbyt.tmonth)asnext,
-
(selectsum(t.income)fromt5twheret.tmonth=(o.tmonth-1)groupbyt.tmonth)aslast
-
fromt5owhereo.tmonth=2groupbyo.tmonth
-
-
/*方案二*/
-
selecttmonthas月份,tnameas姓名,sum(income)as当月工资,
-
(selectsum(income)
-
fromt5
-
wheretmonth=to_number(substr(to_char(sysdate,'yyyy-mm-dd'),7,1))-1)AS上月工资,
-
(selectsum(income)
-
fromt5
-
wheretmonth=to_number(substr(to_char(sysdate,'yyyy-mm-dd'),7,1))+1)AS下月工资
-
fromt5wheretmonth=substr(to_char(sysdate,'yyyy-mm-dd'),7,1)
-
groupbytmonth,tname
6.根据现有的学生表,课程表,选课关系表,查询一。没有修过李明老师的课的学生,查询二,既学过a课程,又学过b课程的学生姓名
-
S表[SNO,SNAME]
-
C表[CNO,CNAME,CTEATHER]
-
SC表[SNO,CNO,SCGRADE]
-
-
查询一:没有修过李明老师的课的学生的姓名
-
selectsnamefromswherenotexists
-
(select*fromsc,cwheresc.cno=c.cnoandc.cteather='李明'andsc.sno=s.sno)
-
-
查询二:既学过a课程,又学过b课程的学生姓名
-
SELECTS.SNO,S.SNAME
-
FROMS,(
-
SELECTSC.SNO
-
FROMSC,C
-
WHERESC.CNO=C.CNO
-
ANDC.CNAMEIN('a','b')
-
GROUPBYSNO
-
)SCWHERES.SNO=SC.SNO
-
-
查询三:列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
-
SELECTS.SNO,S.SNAME,AVG(SC.SCGRADE)
-
FROMS,SC,(
-
SELECTSNO
-
FROMSC
-
WHERESCGRADE<60
-
GROUPBYSNO
-
HAVINGCOUNT(DISTINCTCNO)>=2
-
)AWHERES.SNO=A.SNOANDSC.SNO=A.SNO
-
GROUPBYS.SNO,S.SNAME
分享到:
相关推荐
1、查询“001”课程比“002”课程成绩高的所有学生的学号 1. select a.S# from (select S#,score from SC where C#='001')a, 2. (select s#,score from SC where c#='002')b Where a.score>b.score and a.s# = b.s#...
对oracle数据库中(scott)用户 表的高级复杂查询的练习题
数据库面试题 oracle笔试 oracle例题
如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。 美国国家标准局(ANSI)与国际...
第9章 复杂查询 第10章 管理常用对象 第三部分 pl/sql 第11章 pl/sql基础 第12章 访问oracle 第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态...
第9章 复杂查询 第10章 管理常用对象 第三部分 pl/sql 第11章 pl/sql基础 第12章 访问oracle 第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态...
1 动态SQL简介 14.2 处理非查询语句 14.3 处理多行查询语句 14.4 在动态SQL中使用BULK子句 14.5 习题第15章 使用对象类型 15.1 对象类型简介 15.2 建立和使用简单对象类型 15.3 建立和...
第9章复杂查询 第10章管理常用对象 第三部分PL/SQL 第11章PL/SQL基础 第12章访问Oracle 第13章编写控制结构 第14章使用复合数 据类型 第15章使用游标 第16章异常处理 . 第17章本地动态SQL 第18章...
第9章 复杂查询 第10章 管理常用对象 第三部分 pl/sql 第11章 pl/sql基础 第12章 访问oracle 第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态...
本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。 本书全面覆盖了1z0-051、1z0-052和1z0-...
第9章 复杂查询 第10章 管理常用对象 第三部分 pl/sql 第11章 pl/sql基础 第12章 访问oracle 第13章 编写控制结构 第14章 使用复合数据类型 第15章 使用游标 第16章 异常处理 . 第17章 本地动态...
基本的sql查询语句,从简单到复杂,每个章节后都有练习题,适合初学者使用。
本书的每一章都提供吸引人的练习题、实践问题和本章知识点回顾以强化所学的知识。本书既是帮助读者轻松地通过oca/ocp认证考试的好帮手,也是oracle从业人员必备的参考书。 本书全面覆盖了1z0-051、1z0-052和1z0-...
教学内容 分区,索引,触发器(了解),表空间,临时表,用户,权限,约束,备份,恢复 看知识点PPT同时练习上面的习题,装LINUX操作系统(掌握20个命令) 看知识点PPT 时间 第四天 备份 上午(9:00至...
程序员练习题 什么是OCAJP? Oracle Certified Professional Java Programmer 1 (OCAJP) 是 Java 技术的入门级程序员认证。 如果您是一名新手并且想要获得基础级别认证的程序员,那么 OCAJP 是适合您的考试。 为什么...