首页 > 数据库 > SQL Server >

SQL查询语句总结

2015-08-06

ps:老本行,复习一下 SQL 查询语句总结 列名 Select Sname AS 姓名 from Student; ·这里AS可以省略。 去重:distinct Select distinctSno from sc; WHERE条件查询 比较

ps:老本行,复习一下
SQL 查询语句总结

列名

Select Sname AS 姓名 from Student;

·这里AS可以省略。

去重:distinct

Select distinctSno from sc;

WHERE条件查询

比较 =/>/=/<=

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

确定集合 IN/NOT IN

字符匹配 LIKE/NOT LIKE

空值 IS NULL/IS NOTNULL

多重条件 AND/OR

LIKE匹配

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

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

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

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

SQL Server中的库函数

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

Select Sname from Student WHERE RTRIM(Sname)LIKE &lsquo;王__&rsquo;

涉及空值NULL的查询

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

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

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

查询结果排序

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

·默认按照升序

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

聚合函数

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

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

·SUM:计算列值的和;

·AVG:平均值

·MAX:最大值

·MIN:最小值

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

分组GROUP BY

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

GROUPBY 分组依据

HAVING组条件

要求:

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

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

带WHERE分组的子句

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

按多列分组

GROUP BYSdept,Ssex

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

使用HAVING子句

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

如:

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

GROUP BY Sno

HAVINGCOUNT(*)>3

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

分组总结:

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

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

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

普通多表连接查询

如:

SelectSname,Cno,Grade FROM Student S

JOIN SC

ON S.Sno =SC.Sno

WHERE Sdep = &lsquo;计算机系&rsquo;

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

自连接

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

外连接

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

SelectStudent.Sno,Sname,Cno,Grade

From StudentLeft OUTER JOIN SC

ON Student.Sno =SC.Sno

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

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

常用到IN、NOT IN。

相关文章
最新文章
热点推荐