文章目录

  • 检索数据
  • 排序检索数据
  • 过滤数据
  • 使用WHERE子句
  • WHERE子句操作符
  • 组合WHERE子句
  • 用通配符进行过滤
  • 用正则表达式进行搜索


检索数据

从某表中检索某列或者多列:

SELECT 列名1,列名2,列名3
FROM 表名;

检索所有的列,可以在实际列名的位置使用星号通配符:

SELECT *
FROM 表名;

排序检索数据

上面检索出来的数据顺序是没有意义的,为了明确的排序,我们可以使用ORDER BY子句,ORDER BY子句必须是SELECT子句中最后一条子句

SELECT 列名1
FROM 表名
ORDER BY 列名2;

经常需要按不止一列进行数据排序,例如:如果要显示雇员清单,可能希望按姓和名排序。如果列4中的所有值都是唯一的,则不会按照列5排序:

SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 列名4,列名5;

除了可以用列名指出排序顺序外,还可以按照相对列位置进行排序:

SELECT 列名1,列名2,列名3
FROM 表名
ORDER BY 2,3;

数据排序默认是升序(ascending)排序,也可以使用ODER BY子句以降序(descendng)排序。

SELECT 列名1
FROM 表名
ORDER BY 列名2 DESC;

过滤数据

使用WHERE子句

表操作中检索出表数据的子集是经常用的,下面介绍使用WHERE子句中指定的搜索条件进行过滤:

SELECT 列名
FROM 表名
WHERE 检索条件;

WHERE子句操作符

操作符

说明

=

等于

<>

不等于

!=

不等于

<

小于

>

大于

<=

小于等于

>=

大于等于

!<

不小于

!>

不大于

BETWEEN

在指定的两个值之间

IS NULL

为NULL值

组合WHERE子句

SQL允许给出多个WHERE子句,这些子句可以以AND子句的方式或OR子句的方式使用。

  • AND操作符表示检索满足所有给定的过滤条件的行,
  • OR操作符表示检索匹配任一给定的过滤条件的行,
  • IN操作符用来指定条件范围
  • NOT操作符用来否定它之后所跟的任何条件

用通配符进行过滤

利用通配符可以创建比较特定数据的搜索模式。

  • %通配符表示任何字符出现任意次数
  • _通配符只匹配单个字符而不是多个字符
  • [ ]通配符用来指定一个字符集,它必须匹配指定位置的一个字符

下面的语句可以找出名字以B或L开头的学生名字:

SELECT student_name
FROM student
WHERE student_name LIKE "[BL]%"
ORDER BY student_name;

用正则表达式进行搜索

正则表达式是用来匹配文本的特殊的字符集合的。
我们先来看一个例子:

SELECT student_name
FROM student
WHERE student_name REGEXP "[BL][a-z]+"
ORDER BY student_name;

表示匹配以B或L开头,后面为1个或多个小写字母的student_name。

参考书籍:
《MySQL必知必会》 Ben Forta著
《SQL必知必会》 Ben Forta著