文章目录
- 检索数据
- 排序检索数据
- 过滤数据
- 使用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著