MySql数据库数据操纵语言(DML)—增改删

数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此有很多开发人员都把加上SQL的SELECT语句的四大指令以“CRUD”来称呼。

插入语句

一、语法

  1. 第一种插入方式(经典插入方式)
    insert into 表名(列名, ......) values (值1, ......);
  2. 第二种插入方式
    insert into 表名 set 列名1 = 值1, 列名2 = 值2, .... ;

二、两种方式的比较

  1. 经典插入方式支持多条数据的插入,第二种方式不支持;
    insert into table(id, name,phone)
    values(1, 'name1', '1111'),
    (2, 'name2', '222'),
    (3, 'name3', '3333');
  2. 经典插入方式支持子查询,第二种方式不支持;
    insert into table(id, name, phone) select 4, 'name4', '4444';

三、特点

  1. 插入的值的类型要与列的类型一致或兼容;
    示例:insert into table(id, name, sex, birthday, age) values(1, "张三", "男", "1990-11-19", null);
  2. 可以为空的字段,可以省略,但要满足1条件;
    示例:insert into table(id, name, sex, birthday) values(1, "张三", "男", "1990-11-19");// age可以为空,插入后默认为null。
  3. 插入列的值顺序可以调换,但要一一对应;
  4. 插入列的个数和值的个数必须一致;
  5. 可以省略列名,默认是所有列,而且列的顺序和个数和表的列的顺序和个数是一致的,所以插入的值必须是所有列,顺序也要一致。

修改语句

一、语法

  1. 修改单表语法
    update 表名
    set 列=新值, 列=新值
    where 筛选条件;
    如果不加where就会对整个表更新。
  2. 修改多表语法
    sql92语法:
    update 表1 别名,表2 别名
    set 列=值, ......
    where 连接条件
    and 筛选条件;
    sql99语法:
    update 表1 别名
    inner|left|right| join 表2 别名
    on 连接条件
    set 列=新值, 列=新值
    where 筛选条件;
    示例:修改张三的女朋友的手机号为123。
    update boys as boy inner join beauty as be on boy .id = be.boyfriend_id set be.phone ="123" where boy.name="zhangsan";

删除语句

一、delete语法

  1. 单表删除
    delete from where 筛选条件;
    示例:删除用户中手机尾号是9的用户信息;
    delete from user where phone like '%9';
  2. 多表删除
    sql92语法:
    delete 表别名 from 表1 as 别名1, 表2 as 别名2 where 连接条件 and 筛选条件;
    sql99语法:
    delete 表别名 from 表1 别名 [连接类型] join 表2 别名 on 连接条件 where 筛选条件;
    示例1:删除张三女朋友的信息;
    delete bo from beauty be inner join boys bo on be.boyfriend_id = bo.id where bo.name="张三";
    示例2:删除张三以及和他女朋友的信息(结果会删除两张表的信息);
    delete bo, be from beauty be inner join boys bo on be.boyfriend_id = bo.id where bo.name="张三";

二、truncate语法

  1. 删除的是整个表的内容(表还在),所以使用truncate也叫清空,不能加where条件。
    truncate table 表名;

三、delete和truncate比较

  1. delete后可跟where筛选条件,truncate不可以;
  2. truncate后面不跟筛选,所以效率比delete高;
  3. 若删除自增长列,delete删除数据后,再插入数据,自增长列从断点开始计数,而truncate从1开始;
  4. delete删除后有返回值,truncate删除没有返回值;
  5. delete删除可以回滚,truncate删除不能回滚。

你可能感兴趣的:(数据库)