13_MySQL学习笔记(十三)_DML语言

DML语言

数据操作语言

插入:insert

修改:update

删除:delete

一、插入语句

方式一:

语法:

insert into 表名(列名,...)
values(值1,...);

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

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23', '1898888888',NULL,2);

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

方式一:(photo可以为null)

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23', '1898888888',NULL,2);

方式二:(photo可以为null)(直接省略photo)

INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23', '1898888888',2);

3.列的顺序可以调换

INSERT INTO beauty(NAME,id,sex,borndate,phone,boyfriend_id)
VALUES('唐艺昕',13,'女','1990-4-23', '1898888888',2);

方式二:

语法:

insert into 表名
set 列名=值,列名=值,...

例:

INSERT INTO beauty
SET id=19,NAME='刘涛',phone='999';

两种插入方式比较:

  1. 方式一 支持插入多行但方式二不支持(批量插入)

    INSERT INTO beauty
    VALUES ('唐艺昕',13,'女','1990-4-23', '1898888888',2),
    ('唐艺昕',14,'女','1990-4-23', '1898888888',2),
    ('唐艺昕',15,'女','1990-4-23', '1898888888',2);
    
  2. 方式一支持子查询,方式二不支持

    INSERT INTO beauty(id,NAME,phone)
    SELECT 26,'宋茜','11809866';
    
    INSERT INTO beauty(id,NAME,phone)
    SELECT id,boyname
    FROM boys WHERE id<3
    

二、修改语句

  1. 修改单表的记录

    语法:

    update 表名
    set 列=新值,列=新值,...
    where 筛选条件;(不加筛选条件则对表中所有的行进行修改)
    

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

    UPDATE beauty
    SET phone = 13899888899
    WHERE name like '唐%'
    

    案例2:修改男生表中id=2的男生的姓名为张飞,userCP为10

    UPDATE boys
    SET boyName='张飞',userCP=10
    WHERE id = 2;
    
  2. 修改多表的记录

    1. sq192语法:

      update 表1,别名,表2,别名
      set 列=值,...
      where 连接条件
      and 筛选条件;
      
    2. sq199语法

      update 表1 别名
      inner|left|right join 表2 别名
      on 连接条件
      set 列=值,...
      where 筛选条件;
      

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

      UPDATE boys bo
      INNER JOIN beauty b
      ON bo.id = b.boyfriend_id
      SET b.phone = '114'
      WHERE bo.boyName = '张无忌';
      

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

      UPDATE boys bo
      RIGHT JOIN beauty b 
      ON bo.id = b.boyfriend_id
      SET b.boyfriend_id = 2
      WHERE bo.id IS NULL;
      

    三、删除语句

    1. 单表的删除

      方式一:delete(删整行)

      delete from 表名 where 筛选条件
      

      方式二:truncate(删除整个表,不能加筛选条件)

      truncate table 表名  
      
    2. 多表的删除(补充)

      1. sq192语法:

        delete 表1的别名,表2的别名
        from 表1 别名,表2 别名
        where 连接条件
        and 筛选条件
        
      2. sq199语法

        delete 表1的别名,表2的别名
        from 表1 别名
        inner|left|right join 表2 别名 on 连接条件
        where 筛选条件;
        

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

    DELETE FROM beauty WHERE phone LIKE '%9';
    

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

    DELETE b
    FROM beauty b
    INNER JOIN boys bo
    ON b.boyfriend_id = bo.id
    WHERE bo.boyName = '张无忌';
    

    案例3:删除黄晓明的信息以及他女朋友的信息

    DELETE b, bo
    FROM beauty b
    INNER JOIN boys bo
    ON b.boyfriend_id = bo.id
    WHERE bo.boyName = '黄晓明';
    

    【面试题*】

    delete与truncate比较:

    1. delete可以加where条件,truncate不能加

    2. truncate删除,效率高一点点

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

      而truncate删除后,再插入数据,自增长列的值从1开始

    4. truncate删除没有返回值,delete删除有返回值

    5. truncate删除不能回滚,delete删除可以回滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值