SQL 查询语句总结

来源:互联网 发布:张博士医考网络课试听 编辑:程序博客网 时间:2024/05/16 12:54

ps:老本行,复习一下



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. 多重查询条件,使用ANDOR

    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后边的列),要么是聚合函数;

    2GROUP BY后不能使用别名;

     

  11. WHERE分组的子句

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

     

  12. 按多列分组

    GROUP BYSdept,Ssex

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

     

  13. 使用HAVING子句

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

    如:

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

    GROUP BY Sno

    HAVINGCOUNT(*)>3

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

     

    分组总结:

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

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

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

     

  14. 普通多表连接查询

    如:

    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中。

    常用到INNOT IN

     



0 0