zoukankan      html  css  js  c++  java
  • MySQL进阶10--DML数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别

    /* DML -- 数据操纵预言: insert/delete/update */
    
    #一: 插入语句
    /*
    语法1: insert into 表名(列名,..,列名....)
          values(值1,值2,...),(值1,值2,...),(值1,值2,...);
    语法2: insert into 表名
        set 列名1=值1,列名2=值2,....;
    */
    /*二: 修改语句
    
    1.修改单表的记录
        语法: update 表名
        set  列1=新值1,列2=新值2,列2=新值2...
        where 筛选条件 ;  #如果省略,结果就是对全部数据进行了操作
        
    2.修改多表的记录[补充]
        SQL92语法:
        update 表1 别名,表2 别名
        set 列1=新值1,列2=新值2,列2=新值2...
        where 连接条件
        and 筛选条件;
        
        SQL99语法:
        update 表1 别名
        inner/left/right join 表2 别名
        on 连接条件
        set 列=值,...
        where 筛选条件;
    
    */
    #二: 修改语句
    /*
    1.修改单表的记录
        语法: update 表名
        set  列1=新值1,列2=新值2,列2=新值2...
        where 筛选条件 ;  #如果省略,结果就是对全部数据进行了操作
        
    2.修改多表的记录[补充]
        SQL92语法:
        update 表1 别名,表2 别名
        set 列1=新值1,列2=新值2,列2=新值2...
        where 连接条件
        and 筛选条件;
        
        SQL99语法:
        update 表1 别名
        inner/left/right join 表2 别名
        on 连接条件
        set 列=值,...
        where 筛选条件;
    */
    #三 删除条件
    /*
      方式1:delete
        语法:
        1.单标删除
          delete from 表名 where 筛选条件
        2.多表的删除
            SQL92 语法:
            delete 表1的别名,表2的别名...
            from 表1 别名,表2 别名
            where 连接条件
            and 筛选条件;
             SQL99 语法:
                delete 表1的别名,表2的别名...
            from 表1 别名
            inner/left/right join 表2 别名
            on 连接条件
            where 筛选条件;
      方式2:truncate语句
        清空table数据 : truncate table; #不可以加任何条件
      ----------------------------
      两者的区别和联系:
        1.使用where 筛选条件
        2.整表删除效率
        3.面对自增长列, 用delete清空数据后,再插入数据,自增列从断点开始(删前的最大序号);
                用truncate清空数据后,再插入数据,自增长列从0开始;
        4.delete 删除,有返回值;可以回滚;
          truncate删除,无返回值; 不能回滚;
          
    */
    
    #1.插入的values值的类型与列的一致或兼容
    INSERT    INTO beauty (id,NAME,sex,borndate,phone)
    VALUES(13,'唐艺昕','','1990-4-23','1895555555');
    
    #2.可以为null 的列可以不用插入,插入顺序可以颠倒,但必须一一对应,剩余所有列为默认值(NULL等)
    
    INSERT    INTO beauty (id,NAME,borndate,sex)
    VALUES(14,'娜扎','1990-4-23','');
    
    #3:可以省略列名,默认需要插入所有的列的信息,而且顺序和表中数据信息一致
    INSERT INTO beauty
    VALUES(15,'信小呆','','1998-9-14','154666',NULL,NULL);
    
    #---------------------
    #4.方法2
    INSERT INTO beauty
    SET id=16,NAME='刘涛',sex='';
        
        #表间插入
    INSERT INTO beauty(NAME,phone)  #从boy表选择全部数据插入beauty表
    SELECT boyname,'34543564'
    FROM boys;
        #再删除上面的插入的数据
    DELETE
    FROM beauty
    WHERE phone='34543564';
    
    
    
    #2 修改多表的数据 
        
        #案例1 :修改张无忌的女朋友们的手机号都为114
    UPDATE boys bo
    INNER JOIN beauty b
    ON bo.`id`=b.`boyfriend_id`
    SET b.`phone`='11114'
    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;
    
    #3 多表的删除
        #案例1: 删除张无忌的女朋友的信息
        DELETE b
        FROM beauty b
        INNER JOIN boys bo 
        ON b.`boyfriend_id` = bo.`id`
        WHERE bo.`boyName`='张无忌';
  • 相关阅读:
    安装Hadoop单机版
    Linux的en33没有IP地址
    idea导入spring源码
    CSS 选择器之基础选择器
    CSS 简介和代码风格
    JavaScript 中 双感叹号 !! 的作用
    VS Code 中的settings.js 配置
    项目中使用 vuex 实现(状态)数据共享
    VS Code 相关设置
    Node.js 的简单了解
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9861373.html
Copyright © 2011-2022 走看看