mysql 基础知识

发布时间 2023-05-17 11:03:50作者: 黄光跃
-- _ 在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 NULLISNULL 为空运算符
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 不支持标准的语法,但是有提代方案)

内连接