5、SQL语言(3)

时间:2021-06-16 00:41:54
DML语句

DML: INSERT, DELETE, UPDATE

INSERT语句

一次插入一行或多行数据

格式参考:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE #如果重复更新之
col_name=expr
[, col_name=expr] ... ]
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
简化版本
INSERT tbl_name [(col1,...)] VALUES (val1,...), (val21,...)

5、SQL语言(3)

UPDATE语句

更新数据

语法

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

5、SQL语言(3)

注意:一定要有限制条件,否则将修改所有行的指定字段

mysql -U | --safe-updates| --i-am-a-dummy
[root@centos8 ~]#vim /etc/my.cnf
[mysql]
safe-updates
或者
mysql> SET SQL_SAFE_UPDATES=1;

5、SQL语言(3)

DELETE语句

删除表中数据,但是不会自动缩减数据文件大小。

语法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
可先排序再指定删除的行数

注意:一定要有限制条件,否则将清空表中的所有数据,限制性条件通update

5、SQL语言(3)

如果想清空表,保留表结构,可使用truncate命令,此命令会自动缩减数据文件大小,且不受限制条件,慎用

TRUNCATE TABLE tbl_name;

5、SQL语言(3)

缩减表大小

OPTIMIZE TABLE tb_name