检索数据/排序检索数据/过滤数据/高级过滤/用通配符进行过滤
1.检索单个列
select 列名 from 表名;
2.检索多个列
select 列名1,列名2 from 表名;
3.检索所有列
select * from 表名;
4.检索不同的值(我理解就是去重)
注:distinct关键字必须直接放在列名前
select distinct 列名 from 表名;
5.限制结果
1)limit n 表示返回结果不超过n行,默认从首位0开始检索
select 列名 from 表名 limit n;
2)指定从哪开始以及检索的行数,n 代表检索的行数,m代表从哪儿开始
select 列名 from 表名 limit n offset m;
3)简化版的limit n offset m,逗号前的值对应offset,逗号后值对应limit
select 列名 from 表名 limit m,n; 即 select 列名 from 表名 limit n offset m;
6.注释
1)行内注释
select 列名--这是行内注释内容
from 表名;
2)整行注释
#这是整行注释内容
select 列名 from 表名;
3)多行注释
/* select 列名1,列名2
from表名*/
select 列名 from 表名;
7.排序数据
1)按单个列排序
select 列名1 from 表名order by 列名1;
2)按多个列排序
select 列名1,列名2,列名3 from 表名 order by 列名1,列名2;
3)按列的位置排序(n 、m代表列的位置)
select 列名1,列名2,列名3 from 表名 order by n,m;
8.指定排序方向
1)升序(一般很少用,默认排序方向)
select 列名 from 表名order by 列名 asc;
2)降序(很常用)
注:desc 关键字值应用到直接位于其前面的列名
select 列名1,列名2 from 表名 order by 列名1 desc;
像下面语句中只对列名1指定desc,对列名2没指定,则列名1以降序排序,列名2仍按标准的升序排序
select 列名1,列名2,列名3 from 表名 order by 列名1 desc,列名2;
9.使用Where子句
注:where 子句在表名(from子句)之后给出
1)where子句的操作符
a. =等于 b. <> 不等于 c. != 不等于 d. < 小于 e. <= 小于等于 f. !< 不小于
g. > 大于 h. >= 大于等于 i. !> 不大于 j. between 在指定的两个值之间
k. is null为null值
2)检索单个值
从表名中检索列名的值等于n的行
select * from 表名 where 列名= n;
3)不匹配检查
select * from 表名 where 列名 <> n; 即 select * from 表名 where 列名 != n;
4)范围值检查
使用between关键字时,必须指定范围内的低值与高值,且必须用and关键字分隔,between匹配范围中所有的值,包括指定的开始值和结束值。
select * from 表名 where 列名 between n and m;
5)空值检查
空值:是指一个列中不包含值时称其包含空值null
注:null无值,它与字段包含0、空字符串或仅仅包含空格不同
1)确定值是否为null,不能简单检查是否=null。确实值是null的正确语法如下:
select 列名1 from 表名 where 列名2 is null;
2)确定值不是null
select 列名1 from 表名 where 列名2 is not null;
10. 组合where子句
1)and 操作符
select 列名1,列名2,列名3 from 表名 where 列名1 = n and 列名2 > m;
2)or操作符
select 列名1,列名2,列名3 from 表名 where 列名1 = n or 列名2 = m;
3)求值顺序
select * from 表名 where 列名1 = n or 列名1 = m and 列名3 > t;
select * from 表名 where (列名1 = n or 列名1 = m) and 列名3 > t;
注:上面的语句与下面语句的返回结果是不同的,and 操作符的优先级要高于or操作符,故根据不同的场景用不同的语句。
11. in 操作符
in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。
in 取一组由逗号分隔、括在圆括号中的合法值。n、mu均为列名3中的某个值。
select 列名1,列名2 from 表名 where 列名3 in ('n','m') order by 列名1;
where子句中用来指定要匹配值的清单的关键字,in 功能与 or 相当。
之所以使用in操作符的优点:
a. 在有很多合法选项时,In 操作符的语法更清楚,更直观。
b.在与其他and 和 or 操作符组合使用 In时,求值顺序更容易管理。
c.in 操作符一般比一组 or 操作符执行的更快。
d.in的最大优点是可以包含其他select 语句,能够更动态地建立where 子句。
12. not 操作符
where 子句中用来否定其后条件的关键字。not关键字可以用在要过滤的列前,而不仅是在其后。n 代指值。
select 列名1 from 表名 where not 列名2 = 'n' order by 列名1;
13.使用通配符过滤
1)Like 匹配文本
select * from 表名 where 列名 like '关键字%'; 例如:查询名字是魏开头的,'魏%'
2)% 匹配一个或多个字符
select * from 表名 where 列名 like '一百%章'; 例如查询一百零六章或者一百章等
3)下划线_ 只匹配单个字符
select * from 表名 where 列名 like '-000'; 例如查询结果为1000、2000等
select * from 表名where 列名 like '--00'; 例如查询结果为2600、3100等
4)方括号[]
select * from 表名 where 列名 like ' [JM]%'; 例如查询结果为Jone、Mike、Json等
数据源来自:SQL必知必会书籍 今日学习至此 2019.03.20