SQL从零到迅速精通查询利器
Posted osmondwang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL从零到迅速精通查询利器相关的知识,希望对你有一定的参考价值。
1.【列选取】从fruits表中获取f_name和f_price两列,T-SQL语句如下。
SELECT f_name,f_price FROM fruits;
2.【去重】查询fruits表中s_id字段的值,并返回s_id字段值不得重复。
SELECT DISTINCT s_id FROM fruits;
3.【列改名】查询fruits表,为f_name取别名‘名称’,f_price取别名‘价格’,T-SQL语句如下:
SELECT f_name AS ‘名称’,f_price AS ‘价格’
FROM fruits;
4.【查询显示的注释添加】
(1)查询fruits表,对表中的s_id和f_id添加说明信息。
SELECT ‘供应商编号:’,s_id,‘水果编号’,f_id FROM fruits;
(2)查询fruits表中所有水果的名称和价格,并对价格打八折
SELECT f_name,f_price 原价,f_price * 0.8 折扣价 FROM fruits; --相当于省略了AS
5.EXISTS
查询suppliers表中是否存在s_id=107的供应商,如果存在则查询fruits表中的记录,T-SQL语句如下。
SELECT * FROM fruits
WHERE EXISTS
(SELECT s_name FROM suppliers WHERE s——id =107);
6.多列排序
查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序,T-SQL语句如下。
SELECT f_name,f_price FROM fruits ORDER BY f_name,f_price;
7.***GROUP BY分组
(1)根据s_id对fruits表中的数据进行分组,T-SQL语句如下。
SELECT s_id,COUNT(*) AS Total FROM fruits GROUP BY s_id;
(2)根据s_id和f_name字段对fruits表中的数据进行分组,T-SQL语句如下。
SELECT s_id,f_name FROM fruits group by s_id,f_name;
8.HAVING对分组结果过滤【和GROUP BY联合使用】
根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,语句如下:
SELECT s_id,COUNT(*) AS Total FROM fruits
GROUP BY s_id HAVING COUNT(*)>1;
9.使用COMPUTE子句对查询结果小计
GROUP BY子句返回的结果集中只有合计数据,而没有原始的详细记录,但是COMPUTE可以显示详细的记录、
使用COMPUTE子句产生fruits表中f_price字段的总和,要求将查询结果按s_id字段进行排序之后,再返回f_price字段的总和。
USE test
SELECT s_id,f_price,f_name
FROM fruits
ORDER BY s_id
COMPUTE SUM(f_price);
10.使用COMPUTE BY子句分组小计
11.使用UNION合并查询结果集
查询所有价格小于9的水果的信息,查询s_id等于101的所有水果的信息,使用UNION ALL连接查询结果,语句如下。
SELECT s_id,f_name,f_price
FROM fruits
WHERE f_price <9.0
UNION ALL
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id = 101;
12.****使用COUNT()统计
(1)COUNT(*):计算表中总的行数,不管某列有数值或者为空值;
(2)COUNT(字段名):计算指定列下总的行数,计算时将忽略字段值为空值的行。
以上是关于SQL从零到迅速精通查询利器的主要内容,如果未能解决你的问题,请参考以下文章