文本来自自己做的幕布笔记 MySQL 数据操作
这里只是简单排版了下,直接阅读幕布笔记体验更好。
添加记录
INSERT tbl_name VALUE(value…);
需要按照建表时的顺序为每一个字段赋值(设置为 AUTO_INCREMENT的字段可以赋值为 NULL,其值会符合自增长的规范)
INSERT tbl_name(字段名称,…) VALUES(字段值,…);
可以一次加入多条记录,写法为:INSERT tbl_name() VALUES(), (),…;
INSERT tbl_name SET 字段名称=值,…;
修改记录
UPDATE tbl_name SET 字段名称=值,… [WHERE 条件];
WHERE 条件可以不添加,那么整个表的记录都会被更新
删除记录
DELETE FROM tbl_name [WHERE 条件];
若不添加 WHERE 条件,表中的所有记录都会被删除
删除表中记录后可能需要重置 AUTO_INCREMENT 的值
通过语句:ALTER TABLE tbl_name AUTO_INCREMENT=1; 设置
如上篇博客所述,可以通过语句:SHOW CREATE TABLE tbl_name; 查看数据表信息从而得知当前 AUTO_INCREMENT 的值
TRUNCATE [TABLE] tbl_name;
清空指定的数据表:清楚表中所有记录并重置 AUTO_INCREMENT 的值
查询记录
基本语法
SELECT select_expr,… FROM tbl_name
[WHERE 条件]
[GROUP BY {col_name|position} HAVING 二次筛选]
[ORDER BY {col_name|position|expr} [ASC|DESC]]
[LIMIT 限制结果集显示条数]
SELECT * FROM tbl_name;
SELECT 字段名,… FROM tbl_name;
SELECT 字段名,… FROM db_name.tbl_name;
指定某个数据库中的某个数据表
SELECT 字段名 [AS] 字段别名 FROM tbl_name;
给表名起别名形式一致,在 tbl_name 后加上 AS… 即可(多表查询常需要使用别名)
- WHERE 条件语句
例如 WHERE id<=5; id 小于或等于 5 的数据
>, <, >=, <=, !=, <>
=
不可检测 NULL 值
<=>
用于检测 NULL 值:WHERE name<=>NULL;
IS, IS NOT
WHERE name IS [NOT] NULL;
BETWEEN... AND...
WHERE age [NOT] BETWEEN 18 AND 30;
IN (值,...)
WHERE id [NOT] IN (1, 3, 5, 7,…);
AND, OR
可用于连接多个条件语句,使条件同时满足或是其中一个满足
LIKE 匹配字符
WHERE name LIKE ‘Allen’; 直接使用等同于 ‘=’ 号
‘%’, 匹配任意个任意字符
WHERE name LIKE ‘%5%’; 表示含有 5 的字符串(前后可以有任意个(包括没有)任意字符)
‘’, 匹配一个任意字符
必须且只匹配一个字符,如可以用作筛选出字符串长度为 3 的:’__’(3 个下划线)
-
GROUP BY
配合聚合函数
COUNT
COUNT(字段名) 不计入 NULL 值,COUNT(*) 则计入 NULL 值
SUM
MAX
MIN
AVG
使用 GROUP_CONCAT(字段名称) 可以查看组内某个字段的所有值
使用 HAVING 子句对结果进行二次筛选 -
ORDER BY
可以按照一个字段,也可以按照多个字段排序,前面的字段优先级更高
ORDER BY id DESC
按 id 降序排序
ORDER BY id ASC
按 id 升序排序
ORDER BY RAND()
随机对结果记录排序 -
LIMIT
LIMIT limit
在这里 limit 即限制显示的记录数(仅显示前 limit 条记录)
LIMIT offset, limit
从第 offset 条记录开始,显示 limit 条记录