SQL 查询语句总结

SQL 查询语句总结

1. 列名

Select Sname AS 姓名 from Student;

·这里AS可以省略。

2. 去重:distinct

Select distinctSno from sc;

3.  WHERE条件查询

比较               =/>/</>=/<=

确定范围        between … and …/notbetween … and …

确定集合        IN/NOT IN

字符匹配        LIKE/NOT LIKE

空值               IS NULL/IS NOTNULL

多重条件        AND/OR

4. LIKE匹配

_下划线:匹配任意一个字符

%百分号:匹配0个或多个字符;

[]:匹配[]中的任意一个字符。如[acgd]表示匹配a/c/g/d中的任何一个,对于连续的,可以写成[a-d];

[^]:不匹配[]中的任何一个字符。写成[^abgd]。

5. SQL Server中的库函数

如:RTRIM,去掉尾随空格的干扰(默认保存时,多余位补充空格。)

Select Sname from Student WHERE RTRIM(Sname)LIKE ‘王__’

6.  涉及空值NULL的查询

这里注意不能使用=/!=等符号,需要使用 ISNULL/IS NOT NULL。

7. 多重查询条件,使用AND、OR

Select Snamefrom Student WHERE Sdept=’计算机系’ AND Sage<20;

8.  查询结果排序

·ASC从小到大、DESC从大到小

·默认按照升序

·可以按多个列进行排序,首先按前面的列排序,遇到相同记录再按照第二列排序。

9. 聚合函数

·COUNT(*):统计表中元素的个数;

·COUNT(DISTINCT 列名):统计本列中非空列值的个数;(DISTINCT表示不包括列重复值)

·SUM:计算列值的和;

·AVG:平均值

·MAX:最大值

·MIN:最小值

上述函数中除了COUNT(*)外,其他函数在计算过程中均忽略NULL值。

10. 分组GROUP BY

比如需要统计每个学生的考试成绩,而不是全体学生的考试平均成绩时,就需要现将学生进行分组。(按每个人)

       GROUPBY 分组依据

       HAVING组条件

要求:

(1)查询表中的每个列必须要么是分组依据列(在GROUP BY后边的列),要么是聚合函数;

(2)GROUP BY后不能使用别名;

11. 带WHERE分组的子句

过程:先执行WHERE子句,再对筛选出的满足条件的数据执行GROUP BY操作。

12. 按多列分组

GROUP BYSdept,Ssex

多列分组,多列值合在一起唯一的分组。

13. 使用HAVING子句

用于对分组后的结果进行再筛选。

如:

SelectSno,COUNT(*) 选课门数 FROM SC

GROUP BY Sno

HAVINGCOUNT(*)>3

最后筛选出统计结果满足大于3的组。

14. 分组总结:

·WHERE子句用来筛选FROM子句中指定的数据源所产生的行数据;

·GROUP BY子句用来对经WHERE子句筛选后的结果数据进行分组;

·HAVING子句用来对分组后的结果数据再进行筛选。

普通多表连接查询

如:

SelectSname,Cno,Grade FROM Student S

JOIN SC

ON S.Sno =SC.Sno

WHERE Sdep = ‘计算机系’

注意:当为表指定了表名,在查询语句中的其他地方,所有用到表名的地方都要使用别名,而不能再使用原表名。

15. 自连接

一种特殊的内连接,指互相连接的表在物理上为同一张表。

16. 外连接

如:查询学生的选课情况,包括选了课程的学生和没有选课程的学生。

SelectStudent.Sno,Sname,Cno,Grade

From StudentLeft OUTER JOIN SC

ON Student.Sno =SC.Sno

有部分不满足表连接条件,但进行左外连接时也将它们显示出来,并将不满足连接条件的结果在相应列上放置NULL值。

17.  子查询一个Select嵌套在另一个Select中。

常用到IN、NOT IN。
--------------------- 
转载:https://blog.csdn.net/Songjs19931206/article/details/47300853 

猜你喜欢

转载自blog.csdn.net/LMAKE_nbsp/article/details/83505725