八、mysql DML语言

参考url:https://www.bilibili.com/video/BV12b411K7Zu

 

数据操作语言:

  插入:insert

  修改:update

  删除:delete

1、插入语句(方式一)

  语法:

    Insert into 表名(列名,...)  Values(值1,...);

    1) 插入的值的类型要与列的类型一致或兼容

      INSERT INOT

      Beauty(id,name,sex,borndate,phone,photo,boybriend_id)

      VALUES(13,’唐宜兴’,‘女’,‘1996-2-3’,’1999999’,NULL,2);

    2) 不可以为null的列必须插入值,可以为null的列如何插入值?

      方式一:

        INSERT INOT

        Beauty(id,name,sex,borndate,phone,photo,boybriend_id)

        VALUES(13,’唐宜兴’,‘女’,‘1996-2-3’,’1999999’,NULL,2);

      方式二:

        INSERT INOT

        Beauty(id,name,sex,borndate,boybriend_id)

        VALUES(13,’唐宜兴’,‘女’,‘1996-2-3’,2);

    3) 列的顺序可以调换

        INSERT INTO

        beauty(name,sex,id,phone)

        VALUES(‘将星’,‘女’,16,’11000002’)

    4) 列数和值的个数必须一致

    5) 可以省略列名,默认为所有列,而且列的顺序和表中列的顺序一致

2、插入语句(方式二)

  语法:

    Insert into 表名

    Set 列名=值,列名=值,...

  例子:

    INSERT INTO beauty

    SET id=19,name=’刘涛’,phone=’999’

3、插入方式比较

  1) 方式一支持插入多行,方式二不支持

    INSERT INTO

    beauty(name,sex,id,phone)

    VALUES(‘将星1’,‘女’,16,’11000002’),

    VALUES(‘将星2’,‘女’,16,’11000002’),

    VALUES(‘将星3’,‘女’,16,’11000002’);

  2) 方式一支持子查询,方式二不支持

    INSERT INTO beauty(id,name,phone)

    SELECT 26,‘宋强’,’112134’

 

4、修改语句

  1) 修改单表的记录

    语法:

      Update 表名

      Set 列=新值,列=新值,...

      Where 筛选条件;

    案例1:修改beauty表中姓唐的女孩的电话为123456789

        UPDATE beauty

        SET phone=’123456789’

        WHERE name LIKE ‘唐%’;

    案例2:修改boys表中id号为2的名称为张飞,魅力值为10

        UPDATE boys

        SET name=’张飞’,usercp=10

        WHERE id=2;

  2) 修改多表的记录

    语法:

      SQL92语法

        Update  表1 别名,表2 别名

        Set 列=值,...

        WHERE  连接条件

        AND 筛选条件;

 

      SQL99语法

        UPDATE 表1 别名

        INNER|LEFT|RIGHT JOIN 表2 别名

        ON 连接条件

        SET 列=值,...

        WHERE 筛选条件;

    案例1:修改张无忌的女朋友的手机号为114

        UPDATE boys AS bo

        INNER JOIN beauty AS b

        ON bo.id=b.boyfirend_id

        WHERE bo.boyname=’张无忌’;

    案例2:修改没有男朋友的女孩的男朋友编号都为2号

        UPDATE boys AS bo

        RIGHT JOIN beauty AS b

        ON bo.id=b.boyfriend_Id

        SET b.boyfriend_id=2

        WHERE b.id IS NULL;

 

5、删除语句

  1) 方式一:delete(删除单行)

    语法:

      i) 单表的删除

      Delete from 表名 where 筛选条件;

    案例1:删除手机号以9结尾的女生信息

        DELETE FROM beauty WHERE phone LIKE ‘%9’;

      ii) 多表的删除

        语法:

          Sql92语法:

          Delete 表1的别名,表2的别名

          FROM 表1 别名,表2 别名

          WHERE 连接条件

          AND 筛选条件;

 

          Sql99语法:

          Delete 表1的别名,表2的别名

          From 表1 别名

          INNER|LEFT|RIGHT JOIN 表2 别名

          ON 连接条件

          WHERE 筛选条件

        案例1:删除张无忌女朋友的信息

            DELETE b

            FROM beauty b

            INNER JOIN boys bo

            ON b.boyfriend_id=bo.id

            WHERE bo.boyname=’张无忌’;

        案例2:删除黄小名的信息以及他女朋友的信息

            DELETE b,bo

            FROM beauty b

            INNNER JOIN boys bo

            ON b.boyfriend_id=bo.id

            WHERE bo.boyname=’黄小名’;

 

  2) 方式二:truncate(删除表中所有数据)

    语法:

      Truncate table 表名;

    案例:将魅力值>100的男神信息删除

        TRUNCATE TABLE boys;

 

  3) Delete和truncate对比分类:

      i. Delete可以加where条件,truncate不能加

      ii. Truncate删除效率高一些

      iii. 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。

      iv. Truncate删除没有返回值,delete删除有返回值。

      v. Truncate删除不能回滚,delete删除可以回滚

上一篇:Mysql修改字段为默认空


下一篇:3.2 DML 修改