oralce之复杂查询举例

表结构:

S(SNO,SNAME) 代表 学号。学生姓名;

C(CNO,CNAME,CTEACHER) 代表 课号,课程名称。授课老师

SC(SNO,CNO,SCGRADE) 代表 学号。课号。课程成绩

1 查询没选过“黎明”老师的全部学生姓名。

select s.sname
from s
join sc
on sc.sno=s.sno
join c
on c.cno=s.cno
where c.cteacher<>'黎明'

2 查询出2门以上(包括2门)不及格学生的姓名及平均成绩。

select s.sname,c.a_grade
from
(select a.sno,count(cno)
from
(select sno,cno
from sc
where sc.scgrade<60)
group by a.sno
having count(cno)>1)b
join s
on b.sno=s.sno
join
(select avg(scgrade) a_grade,sno
from sc
group by sno)c
on c.sno=s.sno

3 既学过1号课程又学过2号课程的学生姓名;

select s.sname
from s
join
(select count(*),sno
from
(select * from
sc
where sc.cno in(1,2))
grout by sno
having cout(*)>1)a
on a.sno=s.sno
时间: 2024-10-14 20:15:40

oralce之复杂查询举例的相关文章

数据库查询语句

插入数据 INSERT 语法结构 INSERT [INTO] <表名>  [列名] VALUES <值列表> 参数解释 [INTO]和[列名]是可选的 <表名>是必需的 如果省略[列名],<值列表>与表中字段的顺序保持一致 多个列名和多个值列表用逗号分隔 向student表中插入一行数据 insert into student (姓名,身份证号,所在班级,成绩) values('王兰', '126125199008222446', 2,90) 更新数据 UP

140824●语句应用举例

//降序排序 Console.Write("请输入数据的个数:"); int n = Convert.ToInt32(Console.ReadLine()); int []sz=new int[n]; //输入数值 for (int i = 0; i < n; i++) { Console.Write("请输入第{0}个数:",i+1); sz[i] = Convert.ToInt32(Console.ReadLine()); } //1.冒泡排序,方法易记

mongoDB查询及游标

find文档 1.find简介 使用find查询集合中符合条件的子集合 1 db.test.blog.find(); 类似于sql查询 1 select * from test.blog 上面的查询是返回多有多有集合,并且是所有键.有时我们也会指定返回部分键,这样方式可以减少IO 1 > db.test.blog.find({},{"age":1,"name":1}); 2 { "_id" : 1, "age" : 1,

HQL和SQL查询

转自http://blog.csdn.net/aaa1117a8w5s6d/article/details/7757097 HQL和SQL的区别 标签: sqlhibernatejavasessionuser数据库 2012-07-17 22:03 11614人阅读 评论(0) 收藏 举报 目录(?)[+] hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在

T-SQL查询语句

SQL语言中最主要.最核心的部分是它的查询功能.查询语句用来对已经存在于数据库的数据按照特定的组合.条件表达式或次序进行检索,使用SELECT语句来完成. 使用SELECT查询数据 1. SELECT语法结构 T-SQL中查询基本格式是有SELECT子句.FROM子句.WHERE子句组成的查询块: select 列名 from 表名 where 查询限定条件 其中 * select 指定了想要查看哪些列的数据 * from 指定这些数据来自于哪些表 * where 指定了想要查看哪些行 SELE

SQL常用语句积累

SQL 常用语句积累: 一. SQL 基本语句 SQL 分类: DDL -数据定义语言 (Create , Alter , Drop , DECLARE) DML -数据操纵语言 (Select , Delete , Update , Insert) DCL -数据控制语言 (GRANT , REVOKE , COMMIT , ROLLBACK) 首先 , 简要介绍基础语句: 1 .说明:创建数据库 Create DATABASE database-name 2 .说明:删除数据库 drop d

Elasticsearch增、删、改、查操作深入详解

引言: 对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义.尤其对"索引"二字更是与关系型数据库混淆的不行.本文通过对比关系型数据库,将ES中常见的增.删.改.查操作进行图文呈现.能加深你对ES的理解.同时,也列举了kibana下的图形化展示. ES Restful API GET.POST.PUT.DELETE.HEAD含义: 1)GET:获取请求对象的当前状态. 2)POST:改变对象的当前状态. 3)PUT:创建一个对象. 4)DELETE:销毁对象. 5)HEAD:请求获取

数据库复习⑥

2016年6月18日 18:16 Main SQL 增删改查 1.SQL 核心内容 DDL(Data Definition Language)数据定义语言 Query Language 数据查询语句 DML(Data Manipulation language)数据操纵语言 DCL(DataControl language)数据控制语言 2.Queries 查询 Single-relation queries 单表查询 Multi-relation queries 多表查询 Subqueries

关于SQL语言的优化(Oracle)

SQL优化的原则 尽量使用列名 --SQL 优化2: where解析的顺序 : 右--> 左 Select * from zl_yhjbqk   where   dy_dj = '1K以下'  and   xh_bz=1 Select * from zl_yhjbqk   where   xh_bz=1         and   dy_dj = '1K以下' 第二条的效率要低于第一条. --SQL优化 尽量使用where 在where和having都能使用的时候.使用where. where和