zoukankan      html  css  js  c++  java
  • DML语言

    数据操作语言

    插入:insert into 表名(列名1,....)values (值1,...);
    修改:update 表名 set=值
    删除:delete from 表名 where 筛选条件
    truncate table 表名;不能加条件,整张表删除

    1.插入语句

    方式一:经典插入
    表已经存在了,往里面添加数据
    
    语法:
    insert into 表名(列名1,....)
    values (值1,...);
    
    注意点:
    1.插入值的类型 要与列的类型 一致或 兼容(隐式的转换)例如:列是int可以插入123也可以插入'123''john'就不行
    2.不可以为null的列必须要插入值
    3.可以为空的列插入数据时
    ①可以写列名插入值为null
    ②也可以不写列名不写值。有默认值里面就填默认值,没有默认值就为null
    
    插入的顺序和原始表中的顺序
    4.列的顺序无所谓,但值要一一对应
    5.列和值的个数必须一致
    6.省略列名,默认所有列,列的顺序和插入的顺序一致
    
     
    
    方式二:
    INSERT INTO 表名
    set 列名=值,列名=值...
    SELECT *
    FROM beauty;
    
    #2.可以为null列如何插入值?
    #方式1:
    INSERT INTO beauty(id,`name`,sex,borndate,phone,photo,boyfriend_id)
    VALUES (13,'冈吉里帆','','1993-1-15','18209943008',NULL,5);
    
    INSERT INTO beauty(id,`name`,sex,borndate,phone,boyfriend_id)
    VALUES (14,'桥本环奈','','1999-2-3','18209943008',5);
    
    INSERT INTO beauty(`name`,sex,id,phone,boyfriend_id,borndate)
    VALUES('清野菜名','',15,'18209943008',5,'1994-10-14')
    UPDATE beauty SET borndate='1994-10-14' WHERE id=15;

    可以省略列名

    INSERT INTO beauty
    VALUES(16,'张均甯','','1982-9-4','18209943008',NULL,5);
    方式二:
    INSERT INTO beauty
    SET id=17,`name`='唐艺昕',sex='',borndate='1989-12-9',phone='18209943008',boyfriend_id=5;
    UPDATE beauty SET borndate='1989-12-9' WHERE id=17;

    两种方式pk

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

    INSERT INTO beauty(id,`name`,sex,borndate,phone,boyfriend_id)
    VALUES (18,'桥本环奈1','','1999-2-3','18209943008',5),
    (19,'桥本环奈2','','1999-2-3','18209943008',5),
    (20,'桥本环奈3','','1999-2-3','18209943008',5);

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

    INSERT INTO beauty(id,`name`,phone)
    SELECT 26,'宋茜','118'
    /*
    执行的过程:先执行查询语句的到一个结果集,按对应的顺序插入到表中
    */
    -- 子查询
    -- 含义:出现在其它语句中的select语句,称为子查询或内查询
    -- 外部的语句可以是 insert、update、delete、select
    INSERT INTO beauty(id,`name`,phone)
    SELECT id,boyName,'1118'
    FROM boys
    WHERE id<26;

    2.修改语句

    1.修改单标的记录
    
    语法:
    update 表名
    set=值(类型 一致或 兼容(隐式的转换) )
    
    还可以修改多列,中间用逗号隔开
    update 表名
    set=值,列=值....
    如果不加筛选条件所有的值都会发生改变
    where 筛选条件;
    执行顺序是:先找到表名,再筛选,最后修改值
    
    2.修改多表的记录(级联更新)【补充】

    #案例:修改beauty表中姓唐的女神的电话为138

    UPDATE beauty
    SET phone='138'
    WHERE `name` LIKE '唐%'

    #案例:修改鹿晗的名字,魅力值改为1000

    UPDATE boys
    SET boyName="张飞",userCP=1000
    WHERE id=2;

    修改多表的记录,用到了连接

    语法:支持92和99
    SQL92
    update 表1 别名,表2 别名
    set=值,....
    where 连接条件
    and 筛选条件
    
    SQL99
    update 表1 别名
    inner|left|right join 表2 别名
    on 连接条件
    (以上会形成一个虚拟表)
    set=值,....
    where 筛选条件

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

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

    #修改没有男朋友的女神的男朋友编号都为2号

    UPDATE boys bo
    RIGHT JOIN beauty b
    ON bo.id=b.boyfriend_id
    SET b.boyfriend_id=2
    WHERE bo.id IS NULL;
    /*
    有的匹配,没有的就为null
    */

    3.删除语句

    方式一:delete
    
    注意:删除是整行删除 
    没有筛选一张表都会被删掉
    
    语法:
    1.单表删除【主要】
    delete from 表名
    where 筛选条件
    
    单表删除【主要】
    delete from 表名
    where 筛选条件
    limit 条目数
    
    2.多表的删除【补充】级联删除
    SQL92
    delete 表1的别名,表2的别名
    from 表1 别名,表2 别名
    where 连接条件
    and 筛选条件;
    
    SQL99
    delete 表1的别名,表2的别名
    FROM 表1 别名
    inner|left|right join 表2 别名 on 连接条件        #会产生一个新表
    where 筛选条件;
    
    
    方式二:truncate,清空数据
    语法:truncate table 表名:
    不能加条件,整张表删除
    
    删除语句的特点
    1.delete 可以加where条件,truncate不能加
    2.truncate删除,效率稍高
    3.要删除表中有 自增长列,
    用delete删除后,再插入数据,自增长的列从断点开始
    用truncate删除后,再插入数据,自增长列的值从1开始
    4.truncate没有返回值,delete删除有返回值。(返回受影响的行数)
    5.truncate删除不能回滚,delete删除可以回滚。

    #方式一,单标删除

    #案例1:删除手机号以9结尾的女神信息
    DELETE FROM beauty WHERE phone LIKE '%9';
    #案例:删除张无忌的女神信息
    DELETE b
    FROM beauty b
    JOIN boys bo
    ON b.boyfriend_id=bo.id
    WHERE bo.boyName='张无忌';
    #案例:删除黄晓明的信息以及他女朋友的信息
    DELETE b,bo
    FROM beauty b
    JOIN boys bo
    ON b.boyfriend_id=bo.id
    WHERE bo.boyName='黄晓明';

    #方式二:truncate语句

    TRUNCATE TABLE admin;
    DELETE FROM boys;
    TRUNCATE TABLE boys;
    INSERT INTO boys(boyName,userCP)
    VALUES('张飞',100),('刘备',100),('关羽',100)

     单表删除【主要】

    delete from 表名
    where 筛选条件
    limit 条目数
    DELETE FROM beauty WHERE boyfriend_id=2 LIMIT 1; 满足条件删几条,1就是删第一条,2就是删前两条
  • 相关阅读:
    [CF1299B] Aerodynamic
    [CF1338B] Edge Weight Assignment
    [CF689C] Mike and Chocolate Thieves
    [CF729C] Road to Cinema
    [CF735C] Tennis Championship
    [CF766C] Mahmoud and a Message
    [CF797C] Minimal string
    [CF798C] Mike and gcd problem
    [CF818D] Multicolored Cars
    《剑指Offer》面试题55:字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12380298.html
Copyright © 2011-2022 走看看