mysql数据操作语言DML
插入insert
插入方式1
语法: insert into 表名(列名,....) values(值1,....)
说明:
1.插入的值的类型要与列的类型一致或兼容
2.可以为null的值:①列写了值为NULL②列值都不写
3.列和值的个数需要对应
4.可以省略列名,默认所有列,列的顺序和表中列的顺序一致
int类型写成了字符型,会自动转换为int类型
插入方式2
语法:
insert into 表名
set 列名=值,列名=值...
两种方式的区别
1.方式一支持一次性插入多行values(),(),..
2.方式一支持子查询,方式二不支持,insert into.. select
修改update
修改单表的记录
语法:
update 表名
set 列=新值,列=新值..
where 筛选条件;
修改多表的记录
sql92语法只支持内联:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件
sql99语法:
update 表1 别名,
inner|left|right join 表2 别名
on 连接条件 (这相当于连接成了新表)
set 列=值...
where 筛选条件
删除delete
delete
单表记录的删除
语法:delete from 表名 【where 筛选条件|limit 条目数】
说明:删除整行
多表记录的删除
sql92语法
delete 表1别名,表2别名(需要删除的表)
from 表1 别名,表2 别名
where 连接条件
and 筛选条件
sql99语法
delete 表1别名,表2别名(需要删除的表)
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件
truncate
语法:truncate table 表名;
说明:清空整个表
对比
区别 | DELETE FROM | TRUNCATE TABLE |
---|---|---|
删除的表中有自增长列 | 插入数据从自增长列的断点开始 | truncate从1开始 |
是否可以回滚 | √ | × |
返回值 | 有返回值(受影响的行数) | 没有返回值 |
是否可以加where条件(删除部分数据) | √(不加where就是删除所有数据 ) | × |
DDL和DML
区别 | DDL | DML |
---|---|---|
具体操作 | create、表的管理 | 增删(delete)改 |
是否可以回滚 | 操作一旦执行,不可回滚 | 默认情况下,一旦执行,不可回滚 如果在执行DML之前,修改默认提交行为SET autocommit = FALSE,则执行的DML操作就可以回滚 |