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
分享到:
相关推荐
本文档中提供的五个Oracle存储过程练习题,正好能帮助开发者加深对Oracle存储过程应用的理解和实践。 首先,创建用户和分配权限是Oracle数据库管理中的基础工作。通过创建特定的用户并为其分配适当的权限,可以确保...
从文件内容中,我们可以看到涉及Oracle数据库查询的相关知识点,具体如下: 1. 连接查询(Join Query):文件中大量使用了内连接(INNER JOIN)的...通过这些练习题,我们可以深入理解Oracle SQL的复杂性与实用性。
"Oracle分节练习题"着重于考察对Oracle数据库系统中SQL(结构化查询语言)和PL/SQL(Oracle的编程扩展)的理解和应用能力。在这个练习集中,你将有机会深入学习并实践这两门技术。 SQL,全称Structured Query ...
根据提供的Oracle数据库练习题及其描述,我们可以逐一解析并总结出其中涉及的重要知识点: ### 一、多表查询 1. **子查询与多表连接**: - 练习题目中涉及到了`emp`表与`dept`表的关联查询。 - 例如:“获取在同...
本资源"Oracle 入门及提高练习题"旨在帮助用户从基础开始,逐步深入到高级实践,提升在Oracle领域的技能。 一、Oracle基础 1. 数据库概念:了解数据库是什么,它的作用以及Oracle数据库的特点,如ACID属性(原子性...
在本实验中,我们将通过一系列练习题来深入理解Oracle的多表连接操作。 1. 第一个练习展示了如何通过内连接(INNER JOIN)来获取员工的姓名、部门名称和工资。`WHERE`子句中的`e.deptno=d.deptno`确保了只有当员工...
### Oracle 认证介绍 Oracle认证是Oracle公司推出的一系列技术认证项目,旨在评估和确认IT专业人士在...以上是对Oracle认证介绍及其相关练习题的详细解释,希望能帮助到正在备考或有兴趣深入了解Oracle认证的读者。
这份"Oracle练习题初学者适用"的压缩包提供了一系列的DOC文件,旨在帮助初学者系统地学习和巩固Oracle的相关知识。 首先,我们可以从“Oracle习题”这个文件名推测,这些文档可能包含了各种类型的题目,如选择题、...
在“组函数.txt”和“单行函数.txt”文件中,可能包含了更多关于这些函数的实际示例和练习题。通过这些练习,你可以加深对Oracle SQL的理解,提升你的查询技能。记得实践是检验理论的最好方式,尝试解决这些练习,你...
这些题目涵盖了Oracle数据库查询的基本操作,包括了对多个表的联接、聚合函数的应用、条件过滤、排序以及复杂的逻辑运算。下面将逐一解析这些练习题所涉及的知识点: 1. **查询部门及其平均工资、最低工资和最高...
"Oracle培训练习题和相关环境"这个资源显然是为那些希望深入学习Oracle技术,尤其是初学者设计的。在这个压缩包中,有两个子文件夹:"fundationII"和"fundationI",它们可能包含了逐步学习Oracle的基础内容。 ...
文件"习题一(答案).txt"和"习题一.txt"分别提供了练习题的题目和答案,可以作为自我测试和学习的参考。在实际操作中,可以先尝试自己编写SQL语句,然后再对比答案,以确保理解并掌握了每种查询方法。 总之,通过...
本文档“Oracle数据库练习题”显然旨在帮助用户深入理解和掌握Oracle数据库的相关知识。通过解决这些练习题,你可以提升你在SQL查询、表管理、索引优化、存储过程、触发器以及数据库安全性等方面的能力。 1. **SQL...
【Oracle复杂查询与面试练习详解】 在Oracle数据库中,复杂查询是数据分析和业务处理的关键技能。以下是对给定文档中13道SQL题目及其解答的详细解析: 1. **列出所有员工的姓名及其直接上级的姓名** ```sql SELECT...
Oracle数据库是世界上最流行的数据库管理系统...通过解决这个"oracle练习题关于触发器的作业",你将深化对Oracle触发器的理解,并提升数据库管理技能。请仔细研究每个题目,逐步解答,不断实践,相信你会从中受益匪浅。
根据提供的Oracle练习题及其背景信息,我们可以逐一分析并解释这些SQL查询语句背后的逻辑和实现方式,以便更好地理解和掌握相关的数据库操作技巧。 ### 1. 查询“001”课程比“002”课程成绩高的所有学生的学号 这...
Oracle经典练习题中涵盖了多种知识点,包括 Oracle 实例系统、SQL 语言、数据定义、数据控制、查询优化、存储结构、权限管理、备份恢复等。 1. Oracle 实例系统:在多进程 Oracle 实例系统中,进程分为用户进程、...
7. **查询重写**:通过数据库的查询重写功能,可以将复杂查询转化为更简单的形式,比如利用物化视图或索引组织表。 8. **资源管理**:通过设置SQL Profile、SQL Plan Baseline和资源限制(如pga_aggregate_target和...