SELECT … FROM … LIMIT 起始位置,偏移量;
如果limit子句中只有一个参数,它表示的是偏移量,起始值默认为0。
select goods_id,goods_name FROM goods LIMIT 0,5;
select goods_id,goods_name FROM goods LIMIT 5,5;
select goods_id,goods_name FROM goods LIMIT 3;
SELECT … FROM … ORDER BY 列名 [ASC|DESC] (默认asc);
ASC代表升序(默认),DESC代表降序
如果排序是数字类型,按数字大小排序;如果是日期类型,则按日期大小排序,如果是字符串就按字符集序号排序。
SELECT * FROM sale ORDER BY sale_money DESC;
可以使用order by 规定首要排序条件和次要排序条件。
数据库会按照首要排序条件接着排序,如果首要排序内容相同的记录,则启用次要排序条件接着排序。
若还相同则按主键排序。
select * from sale ORDER BY sale_money DESC,sale_money2 DESC;
SELECT DISTINCT 字段 FROM …;
select DISTINCT real_name FROM sale;
SELECT … from … WHERE 条件 [AND | OR] 条件 … ;
四类运算符
表达式 | 意义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 求模 |
任何数字跟Null做加减乘除运算,结果都是null。
IFNULL(expr1,expr2)若expr1是null时,就返回expr2;
SELECT 10*IFNULL(null,0)
DATEDIFF(expr1,expr2) 返回结果为expr1-expr2
select DATEDIFF(NOW(),sale_date) ,real_name,(sale_money + IFNULL(sale_money2,0))
FROM sale
WHERE sale_id>4
now()是当前时间
表达式 | 意义 | 例子 |
---|---|---|
> | 大于 | age>18 |
< | 小于 | age<18 |
< = | 小于等于 | age<=18 |
>= | 大于等于 | age>=18 |
= | 等于 | age=18 |
!= | 不等于 | age!=18 |
IN | 包含 | id IN(1,3,4) |
表达式 | 意义 | 例子 |
---|---|---|
IS NULL | 为空 | name IS NULL |
IS NOT NULL | 不为空 | name IS NOT NULL |
BETWEEN AND | 范围 | age BETWEEN18 AND 46 |
LIKE | 模糊查询 | name LIKE “L%” |
REGEXP | 正则表达式 | id REGEXP “[a-zA-Z]{4}” |
SELECT * FROM sale
WHERE sale_id IN(2,4,5,6,7) AND sale_note != "个人购买"
AND sale_date < "2021-05-10"
select * from goods where goods_pl is NULL
AND goods_count BETWEEN 10 AND 200
AND goods_no LIKE "%1";
select * from goods where goods_pl is NULL
AND goods_count BETWEEN 10 AND 200
AND goods_no LIKE "G00_";
select * from goods where goods_pl is NULL
AND goods_count BETWEEN 10 AND 200
AND goods_id REGEXP "^[1-5]$";
select * from goods where goods_pl is NOT NULL;
表达式 | 意义 | 例子 |
---|---|---|
AND | 与关系 | name =“kusa” AND age>30 |
OR | 或关系 | name =“kusa” OR age>30 |
NOT | 非关系 | NOT age=20 |
XOR | 异或关系 | name =“kusa” XOR age>30 |
select * FROM goods
WHERE (goods_id NOT IN(1,2,3,4,5,6,7)) XOR goods_count >200
表达式 | 意义 | 例子 |
---|---|---|
& | 位与关系 | 3&7 |
| | 位或关系 | 3|7 |
~ | 位取反 | ~20 |
^ | 位异或 | 3^7 |
<< | 左移(右侧补0) | 10<<1 |
>> | 右移 | 10>>1 |
where子句中,条件执行的顺序是从左到右的。所以我们应该把索引条件,或者筛选掉记录最多的条件写在最左侧。
from -> where ->select ->order by ->limit