六、MySQL中DML语言(增删改)

MySQL系列目录:

上一篇:五、MySQL中DQL语言

下一篇:七、MySQL中DDL语言(数据定义语言)


MySQL的DML语言

    • 一、插入语句 insert
    • 二、修改 update
    • 三、删除 delete

DML语言:数据操纵语言
插入:insert
修改:update
删除:delete

一、插入语句 insert

  1. 语法:
    方式一:insert into 表名(列名, ...) values (值1, ...);
    方式二:insert into table set field1 = value1, field2 = value2
  2. 特点:
    1. 插入的值的类型要和表的field的类型一致或兼容
    2. 不可以为null的列必须插入值,可以为null的列如何插入值?
      1. field给出来,value用null填充。
      2. 不给出field,value略过这个field。
    3. 列的顺序可以颠倒。
    4. field和values的个数必须一致。
    5. 可以省略列名,默认就是所有列,列的顺序和表中一致。
  3. 两种插入方式比较:
    1. 方式一支持插入多行insert into beauty values (值1,yyy), (值2,yyy);
    2. 方式一支持subquery,方式二不支持。栗子:INSERT INTO beauty (id, NAME, phone) SELECT 26, 'songqian', '118119118';

二、修改 update

  1. 修改单表的记录
    1. 语法:UPDATE tablename SET filed = value, field2 = value2 WHERE ...
  2. 修改多表的记录【补充】(例如:修改张无忌的女朋友的信息)
    1. 语法:
      1. sql92: UPDATE table1 别名. table2 别名 set 列=值, where 连接条件 and 筛选条件
      2. sql99: UPDATE table1 nickname inner | left | right join table2 nickname2 on joincondition set filed = value where 筛选条件

三、删除 delete

  1. 方式一:
    1. 单表删除(重点):delete from tablename where condition [limit] (单表);可以加上limit,限定删除的条数。
    2. 多表删除(补充):
      1. sql92语法:delete 表1的别名或表2的别名(取决于你想要删除哪个表或者都删除)from 表1 别名,表2 别名 where 连接条件 and 筛选条件
      2. sql99语法:delete 表1的别名或者表2 from 表1 别名 inner | left | right join 表2 别名 on 连接条件 where 筛选条件
  2. 方式二:truncate 清空所有数据
    1. 语法:truncate table 表名; 不能加条件,整个表删除。
  3. delete 对比 truncate
    1. delete 可以加where条件,truncate不可以加where条件
    2. 如果删除全部,truncate效率高一些。
    3. 假如要删除的表中有自增长列,用delete删除后,再插入数据,自增长列会从断电开始。而truncate删除后,再插入数据,自增长列的值从1开始。
    4. truncate删除没有返回值,delete有返回值。
    5. truncate删除不能回滚rollback,delete删除可以rollback。

你可能感兴趣的:(#,MySQL,mysql)