-- _ 在mysql中是表示任一字符,下面查的是名字等于 *Aaaa 的
SELECT * FROM USER WHERE NAME = '_Aaaa';
-- 如果就要查名字是 _Aaaa 的人需要使用转移字符,把_当成普通字符
SELECT * FROM USER WHERE NAME = '\_Aaaa';
-- 或者自定义字符
SELECT * FROM USER WHERE NAME = '$_Aaaa' ESCAPE '$';
SELECT NAME, AGE aage -- 3,过滤字段,起别名(这个步骤之后才能使用别名)
FROM USER -- 1,mysql 查询时先查这个表的所有字段
WHERE AGE > 12 -- 2,过滤 age > 12
ORDER BY aage DESC -- 4,根据 AGE(aage) 排序
数据定义语言分类
| 类型 | 解释 | 备注 |
|---|---|---|
| DDL | 数据定义语言 | 创建修改库、表、视图、索引、约束等 CREATE、DROP、ALTER 等 |
| DML | 数据操作语言 | 数据行的增删改 INSERT 、 DELETE 、 UPDATE 等 |
| DQL | 数据查询语言 | SELECT 语句 |
| DCL | 数据控制语言 | 安全控制,比如创建用户,给用户分配权限,回滚数据等 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等 |
别名
-- USER_AGE 指定别名,要不要 AS 都行
SELECT USER_AGE AS AGE FROM USER;
-- 对运算结果起别名要加双引号
SELECT USER_AGE+10 "AGE" FROM USER;
去重
使用 DISTINCT,只能对行去重
运算符
| 符号 | 解释 | 备注 |
|---|---|---|
| 算术运算符 | +、-、*、/、%=、<、>、>=、<= |
|
<==> |
安全等于 | 和 = 的区别是可以和 null 做对比效果和 IS NULL 相同 |
<> |
不等于 | 和!= 没区别,不能和 null 做对比 |
IS NULL、ISNULL |
为空运算符 | |
IS NOT NULL |
不为空运算符 | |
LEAST |
最小值运算符 | SELECT LEAST(1,2,3) |
GREATEST |
最大值运算符 | |
BETWEEN...AND... |
范围运算符 | 包含临界值 |
IN |
属于运算符 | |
NOT IN |
不属于运算符 | |
LIKE |
模糊匹配 | |
REGEXP |
正则运算符 | |
RLIKE |
判断正则是否合法 |
-- _ 在mysql中是表示任一字符,下面查的是名字等于 *Aaaa 的
SELECT * FROM USER WHERE NAME = '_Aaaa';
-- 如果就要查名字是 _Aaaa 的人需要使用转移字符,把_当成普通字符
SELECT * FROM USER WHERE NAME = '\_Aaaa';
-- 或者自定义字符
SELECT * FROM USER WHERE NAME = '$_Aaaa' ESCAPE '$';
排序和分页
ASC:顺序;DESC:倒叙
多列排序:先以第一个字段排序,然后根据排序的结果再次以第二个字段排序
分页:LIMIT [偏移量] 行数,偏移量公式:(pageNum-1)*pageSize。limit 2,10 从下标2开始,查10条
- select...where … group by … having … order by … limit
- GROUP BY 中的字段必须在 SELECT 中
连接查询
分为联表查询和子查询
联表查询,分为两个版本:sql92 和 sql95。支持的查询方式有内连接,外连接(左右外连接),全连接(MySql 不支持标准的语法,但是有提代方案)
内连接