zoukankan      html  css  js  c++  java
  • SQL学习笔记系列(三)DML语言的学习

    插入

    插入方式一语法

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

    特点

    #1.字段类型和值类型一致或兼容,而且一一对应(插入的值的类型要与列的类型一致或兼容)
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUE(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2);
    SELECT *
    FROM beauty
    
    #2.不可以为null的列必须插入值,可以为空的字段,可以不用插入值,或用null填充
    #用null填充
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUE(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2);
    
    #不插入
    INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)#直接删去photo,没有输入的会自动输入默认值
    VALUE(14,'金星','女','1990-4-23','1398888888',2);
    
    #3.列的顺序可以调换,需要一一对应
    INSERT INTO beauty(NAME,sex,id,phone)
    VALUES('蒋欣','女',16,'110')
    
    #4.列数和值的个数必须一致
    INSERT INTO beauty(NAME,sex,id,phone,boyfriend_id)
    VALUES('关晓彤','女',17,'110');#会报错,列数和值的个数不一致
    
    #5.可以省略列名,默认所有列,而且列的顺序和表中的顺序一致
    INSERT INTO beauty
    VALUES(18,'张飞','男',NULL,'119',NULL,NULL);
    

    插入方式二语法

    insert into 表名(字段名/列名,...)
    set 列名=值,列名=值,...
    
    INSERT INTO beauty
    SET id=19,NAME='刘涛',phone=999
    

    两种方式pk

    #1.方式一支持插入多行,方式二不支持
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUE(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2),(24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2),(25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2);
    
    #2.方式一支持子查询,方式二不支持
    insert into beauty(id,name,phone)
    select 26,'宋茜','11809866';
    

    修改

    修改单表语法(重点)

    update 表名 
    set 字段=新值,字段=新值;
    【where 筛选条件】
    
    #案例1 修改beauty表中姓唐的女神的电话为13899888899
    UPDATE beauty 
    SET phone='13899888899'
    WHERE NAME LIKE'唐';
    
    #案例2 修改boys表中的id号为2的名称为张飞,魅力值为10
    UPDATE boys
    SET boyname='张飞',usercp=10
    WHERE id=2;
    

    修改多表语法(补充用,量力而为)

    #92语法
    update 表1 别名1,表2 别名2
    set 字段=新值,字段=新值
    where 连接条件
    and 筛选条件
    
    #99语法
    update 表1 别名1
    inner/left/right joiin 表2 别名2
    on 连接条件
    set 列=新值,列=新值
    where 筛选条件
    and 筛选条件
    
    #案例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 b.`id` IS NULL;
    

    删除

    方式1:delete语句

    单表的删除 ★

    delete 
    from 表名 
    【where 筛选条件】
    
    #案例1 删除手机号以9结尾的女神信息
    DELETE 
    FROM beauty
    WHERE phone LIKE'%9';
    

    多表的删除

    #92语法
    delete 别名1,别名2
    from 表1 别名1,表2 别名2
    where 连接条件
    and 筛选条件;
    
    #99语法
    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
    INNER JOIN boys bo
    ON b.`boyfriend_id`=bo.`id`
    WHERE bo.`boyName`='黄晓明';
    

    方式2:truncate语句

    truncate table 表名#全部表的数据都删除
    
    #案例:将魅力值>100的男神信息删除
    TRUNCATE TABLE boys;#实际上这样行不通,	truncate table不能加where,只能全删
    

    两种方式的区别【面试题】

    #1.truncate不能加where条件,而delete可以加where条件
    
    #2.truncate的效率高一丢丢
    
    #3.truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始(truncate 删除再插入可以理解为删除后创建新表)
    #delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始(delete 删除再插入可以理解为删除后续表)
    
    #4.truncate删除没有返回值,delete删除有返回值,告诉你有多少行受影响)
    
    #5. truncate删除不能回滚,delete删除可以回滚
  • 相关阅读:
    【蛙蛙推荐】GridView和ObjectDataSource更新数据的一个Bug
    忙的顾不上写博客了
    重新启动开源的CRM项目,招募开源精英
    设计一个简单的缓存服务类
    hive的multidistinct可能带来性能恶化
    Linux tail 命令详解
    MapReduce:默认Counter的含义
    hive join
    Linux Top 命令解析 比较详细
    Hive优化总结(转)
  • 原文地址:https://www.cnblogs.com/HLBBLOG/p/14248912.html
Copyright © 2011-2022 走看看