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从零到迅速精通查询利器的主要内容,如果未能解决你的问题,请参考以下文章

SQL从零到迅速精通实用函数

SQL从零到迅速精通基本语句

SQL从零到迅速精通实用函数

SQL从零到迅速精通数据更新

SQL从零到迅速精通规则和约束

SQL从零到迅速精通触发器