(之前在hexo上写的MySQL笔记,还是放到CSDN看比较方便一点)
Hexo上的地址:https://genmcai.github.io/2019/08/17/MySqlDML2/
INSERT语句
◆ INSERT语句可以向数据表写入记录,可以是一条记录,也可以是多条记录
INSERT INTO 表名(字段1,字段2,......)
VALUES (值1,值2,......);
PS: 虽然INSERT语句可以不带字段名,但是不写字段名,MySql无法快速的写入。
INSERT INTO 表名(字段1,字段2)
VALUES(值1,值2,......),(值1,值2,......);
方言
◆ MYSQL的INSERT语句还有一种方言语法
INSERT INTO 表名 SET 字段1=值1,字段2=值2,......;
IGNORE关键字
◆ IGNORE关键字会让INSERT只插入数据库不存在的记录
INSERT [IGNORE] INTO 表名......;
例:
INSERT IGNORE INTO t_dept(deptno,dname,loc)
VALUES(40,"技术部","北京")
UPDATE语句
◆ UPDATE语句用于修改表的记录
UPDATE [IGNORE] 表名 # IGNORE遇到冲突的忽略
SET 字段1=值1,字段2=值2,......
[WHERE 条件1 ......] # 有无条件修改
[ORDER BY ......] # 对数据排序,防止与不可重复约束的冲突
[LIMIT ......]; # 取分页数据,只能写一个参数,也就是前几条记录
# SET是最后执行的语句
UPDATE语句的表连接(一)
◆ 因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造UPDATE语句
UPDATE 表1 JOIN 表2 ON 条件
SET 字段1 = 值1,字段2 = 值2, ......;
◆ 表连接的UPDATE语句可以修改多张表的记录
UPDATE语句的表连接(二)
◆ UPDATE语句的表连接可以演变成下面的样子
UPDATE 表1,表2
SET 字段1 = 值1,字段2 = 值2,......
WHERE 连接条件;
UPDATE语句的表连接(三)
◆ UPDATE语句的表连接既可以是内连接,又可以是外连接
UPDATE 表1 [LEFT|RIGHT] JOIN 表2 ON 条件
SET 字段1 = 值1,字段2 = 值2, ......;
DELETE语句
◆ DELETE语句用于删除记录,语法如下:
DELETE [IGNORE] FROM 表名
[WHERE 条件1,条件2, .......]
[ORDER BY ......]
[LIMIT ......];
# FROM -> WHERE -> ORDER BY -> LIMIT
◆ DELETE语句无法删除子查询获取数据的表中的数据,但可以使用表连接来删除。
DELETE语句的表连接(一)
◆ 因为相关子查询效率非常低,所以我们可以利用表连接的方式来改造DELETE语句
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件
[WHERE 条件1, 条件2, ......]
[ORDER BY ......]
[LIMIT ......];
DELETE语句的表连接(二)
◆ DELETE语句的表连接既可以是内连接,又可以是外连接
DELETE 表1, ...... FROM 表1[LEFT|RIGHT] JOIN 表2 ON 条件......;
快速删除数据表全部记录
◆ DELETE语句是在事务机制下删除记录,删除记录之前,先把将要删除的数据保存到日志文件里,然后再删除记录。
◆ TRUNCATE语句在事务机制之外删除记录,速度远超过DELETE语句
TRUNCATE TABLE 表名;