跳至内容

数据查询

SELECT 是使用最频繁的语句。这篇讲基础查询、WHERE 条件、CASE 判断、模糊查询、逻辑与范围条件、空值判断、排序、TOPDISTINCT 与别名。

基础查询

SELECT 字段名
FROM 目标表
  • * 表示选择表的所有列。
  • 用逗号 , 分隔多个列名,即查询多列。

WHERE 条件

USE 数据库名
SELECT 字段名
FROM 目标表
WHERE 字段名 = '内容'
GO

注意:字符类型和时间类型的数据需要加引号标识。

CASE 判断

CASE 可以根据条件返回不同的值:

SELECT *,
    (CASE
        WHEN 性别 = '男' THEN 1
        WHEN 性别 = '女' THEN 0
        ELSE NULL
     END) AS '性别码'   -- AS 指定临时列的列名
FROM 学生表
GO

模糊查询 LIKE

SELECT 字段名
FROM 目标表
WHERE 字段名 LIKE 条件

通配符:

通配符含义
%代表任意多个字符
_代表一个字符

用法举例:

  • %N% 表示包含 N
  • N% 表示以 N 开头
  • %N 表示以 N 结尾
  • [^...] 中的 ^ 代表对限制条件取反

逻辑与范围条件

  • AND / OR / NOT:逻辑与、或、非。
  • BETWEEN … AND …:对查找范围进行限定。
  • IN:等价于多个 OR,用于简化条件相同但取值多个的表达式。
-- 这两种写法等价
WHERE 年龄 = 18 OR 年龄 = 20 OR 年龄 = 22
WHERE 年龄 IN (18, 20, 22)

空值判断

WHERE 字段名 IS NULL       -- 为空
WHERE 字段名 IS NOT NULL   -- 不为空

表示"为空"不能用 ''' '(空格),必须用 IS NULL

排序 ORDER BY

SELECT 字段名 FROM 目标表
ORDER BY 字段1 ASC, 字段2 DESC
  • ASC 升序(默认,可省略)、DESC 降序。
  • 以第一列为主序,第一列相等时再按第二列排序。

TOP、DISTINCT 与别名

  • TOP:限制返回结果集中的记录数目。TOP n 返回前 n 行;TOP n WITH TIES 会把与第 n 行并列的记录也一并返回。
  • DISTINCT:消除重复的记录。
  • AS:为列起别名(AS 可用空格代替)。
SELECT TOP 5 DISTINCT 姓名 AS 学生姓名 FROM 学生表
最后更新于