SQL语句使用记录

说明
表1 用 T1 表示
T1.T1CODE 表示编号
T1.T1NAME 表示名称
表2 用 T2表示
T2.T2CODE 表示编号
T2.T2NAME 表示名称

1.group by

GROUP BY必须得配合聚合函数来用,分组之后你可以
count() 计数
sum() 求和
avg() 平均数
max() 最大值
min() 最小值
HAVING 是对于GROUP BY对象进行筛选,where是聚合前的筛选,having是聚合后对筛选

count使用,查询对应编号有多少条数据

select s1.T1CODE,count(s1.T1CODE) codecount from T1  s1 group by T1CODE

having使用,查询编号总数数据大于四十的数据

select s1.T1CODE,count(s1.T1CODE) codecount from T1  s1 group by T1CODE having count(s1.T1CODE)>40

2.其他查询

连接查询:
连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据;
如:SELECT * from T1,T2; 返回结果将两个表的所有组合结果返回

1、内连接查询:
内连接查询是一种最常用的连接查询。内连接查询可以查询两个或者两个以上的表;
SELECT * from t1 b,t2 t where t.T2CODE=b.T1CODE;
或SELECT * from t1 ,t2 where t1.T1CODE=t2 .T2CODE;

也可这么写来查询需要的字段:SELECT t1Name,t2name from t1 ,t2 where t1 .T1CODE=t2.T2CODE;

注意:如果查询的字段(如id)中两个表都有时这种写法会出错,因为无法得知id是哪个表的字段,所以平时多表查询时要写别名

修改为:SELECT tb.bookName,tb.author,tby.id from t1 tb ,t2 tby where tb.id=tby.id;

2、外连接查询
外连接可以查出某一张表的所有信息;
SELECT 属性名列表 FROM 表名 1 LEFT|RIGHT JOIN 表名 2 ON 表名 1.属性名 1=表名 2.属性名 2;
•左连接查询:
可以查询出“表名 1”的所有记录,而“表名 2”中,只能查询出匹配的记录;如:
select * from t1tb left JOIN t2 tby on tb.bookTypeId=tby.id; 查询结果:

•右连接查询:
可以查询出“表名 2”的所有记录,而“表名 1”中,只能查询出匹配的记录;如:
select * from t1tb right JOIN t2 tby on tb.bookTypeId=tby.id; 查询结果:

•多条件连接查询

 即where后面有多个条件and连接查询
子查询

1 、带 In 关键字的子查询
一个查询语句的条件可能落在另一个 SELECT 语句的查询结果中。
根据条件查询数据

select s1.t1code ind from t1 s1  where s1.t1code in('2','1')

根据另一个sql的条件查询数据

select s1.t1code ind from t1 s1  where s1.t1code in(
select t2code ind from t2
)

2 、带比较运算符的子查询
子查询可以使用比较运算符。

3 、带 (not)Exists 关键字的子查询
假如子查询查询到记录,则进行外层查询,否则,不执行外层查询;not exists表示内层没有内容时才查询外层
如:SELECT * from t1where EXISTS(select * from t2);//表示t2中返回的有内容时才执行外层t_book的查询

4 、带 Any 关键字的子查询
ANY 关键字表示满足其中任一条件;如:SELECT * FROM t1WHERE price>= ANY (SELECT price FROM t2);//表示筛选价格大于任意t2表中选出的价格的结果,即比最小的大的价格就满足条件

5 、带 All 关键字的子查询
ALL 关键字表示满足所有条件;如:SELECT * FROM t1WHERE price>= ALL (SELECT price FROM t2);//表示筛选价格大于所有t2表中选出的价格的结果,即比最大的价格大的才满足条件

合并查询
•UNION
使用 UNION 关键字是,数据库系统会将所有的查询结果合并到一起,然后去除掉相同的记录;

select s1.t1code ind from t1 s1  
union select g.t2code ind from t2 g

•UNION ALL
使用 UNION ALL,不会去除掉相同的记录;

select s1.t1code ind from t1s1  
union all select g.t2code ind from t2 g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcLeigh

万水千山总是情,打赏两块行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值