查询的语法
SELECT <目标列名> FROM <数据源表>
[WHERE <查询条件>]
[GROUP BY <分组列>]
[HAVING <组选择条件>]
[ORDER BY <排序列>]
SELECT语句中必须有:
SELECT子句、FROM子句
其余子句可选:
WHERE子句、GROUP BY子句、
HAVING子句、ORDER BY子句
标题一.单表查询
一.查询满足条件的元祖
a)比较大小的关系符:> <
b)逻辑运算:and,not,or;
c)范围运算:between…and , in;
二 .聚集函数
a)sum()求和
b)count()统计梳理
c)max()最大值,min()最小值
d)avg()平均值
三.查询牌序
使用ORDER BY子句
可以按一个或多个属性列排序
升序:ASC;降序:DESC;
例如 查询3号课程学生成绩,查询结果按分数降序排列
SELECT 成绩 FROM 选修信息表
WHERE 课程号= ' 3 '
ORDER BY 成绩 DESC
四.group by 和having 子句
a)有时我们需要把FROM、WHERE子句产生的表按某种原则分
成若干组,然后再对每个组进行统计,一组形成一行,最后把所有这些行组成一个表
b) HAVING子句指定GROUP BY生成的组表的选择条件。
它的一般形式为:HAVING <组选择条件>
HAVING子句必须与GROUP BY子句一起使用。
五 .分页查询
a) top 分页 (每页显示M条数据,显示前N页内容)
Select top M 查询内容 from 表 where id not in (
select top (N-1)*M id from 表)
b) limit 分页(每页显示M条数据,显示前N页内容)
select 内容 from 表 id limit (N-1)*M,M;
c)伪列查询
1.Select rowed,列表列名 from 表 where rowed between 起始编号 and 结束编号;
2.Select * from(
Select rownum num * from(
任何子查询
)t1 where rownum<=N*M
)t2 where t2.num>(N-1)*M;
多表联查
一笛卡尔集查询
Select 列名列表 from 表1,表2
二 内联查询
Select 列名列表 from 表1 ,表2 where 两表关联列表达式;
Select 列名列表 from 表1 inner join on 两表关联列表达式;
参加条件比较的两个列必须是相同的,即同名同类型;
结果集中的列是参加连接的两个表的列的并集,即去掉了重复的列。
三。外联
左: Select 列名列表 from 表1 left outer join 表2 on 两表关联列表达式
左外连接就是将左表的所有记录分别与右表的每一条记录进行连接组合,结果集中除返回内部连接的记录以外,还在查询结果中显示出左表中不符合条件的记录并在右表的相应列中填上NULL值
右: Select 列名列表 from 表1 right outer join 表2 on 两表关联列表达式
右外连接就是将左表的所有记录分别与右表的每一条记录进行连接组合,结果集中除返回内部连接的记录以外,还在查询结果中显示出右表中不符合条件的记录并在左表的相应列中填上NULL值。
三 全联接查询
Select 列名列表 from 表1 full join 表2 on 两表关联列表达式;
全外连接就是将左表的所有记录分别与右表的每一条记录进行连接组合,结果集中除返回内部连接的记录以外,还在查询结果中显示出两个表中不符合条件的记录并在左表或右表的相应列中填上NULL值。
子查询
.where子句子查询 将一个结果作为另一个查询的操作条件
Select 列表列名 from 表名 where 条件列 = | in | not in (子查询)[条件..其他];
将一个SELECT语句嵌入另一个SELECT语句的查询
例 查询和编号为1008的商品的折扣相同的商品信息
– ①: 根据商品编号1008去查询出该商品的折扣
select discount from i_goods where goods_id=1008;
– ②: 去查询折扣为0.6的商品信息
select * from i_goods where discount=0.6;
– 将①和②两步进行整合
select * from i_goods where discount=(
select discount from i_goods where goods_id=1008
二…将一个查询看做虚拟表 并和其他查询进行组合
Select 列名列表 from (
子查询
)临时表名 from 表名
例:查询最近10条订单信息,要求显示订单编号、商品标题、商品单价、商品数量、订单日期、订单总价
依然分成两步 并运用上面的分页查询 与多表联查 将其组合