zoukankan      html  css  js  c++  java
  • MySql的回顾七:DDL增/删/改

      连绵不断的降雨冲洗着四散的灰尘,顺便也将树叶洗的绿油油的。

      雨只会越下越小,知识也会越学越少。(在一定范围)

      漫长的查询过去,今天将带领读者们走进DDL语言的大厅,感受别致SQL语句吧!

    #DML语言
    数据操作语言
    插入:INSERT
    修改:UPDATE
    删除:DELETE
    
    #一.插入语句
    #方式一:经典的插入
    语法:
    INSERT INTO 表名(列名,....)
    VALUES(值1,...)
    插入三要素:表名,列名,新值
    
    #1.插入的值的类型要与列的类型一致或兼容
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUES(13,'糖稀','女','1990-2-2','18699888880',NULL,2);
    #photo照片,二进制文件,暂未空

    #2.不可以为NULL的列必须插入值,可以为NULL的列如何插入值?
    方式一:用NULL
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUES(13,'糖稀','女','1990-2-2','18699888880',NULL,2);
    
    #方式二:跳过字段
    INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
    VALUES(14,'河绪','女','1990-2-2','19952111333',9);

    #跳过,省略插入
    INSERT INTO beauty(id,NAME,sex,phone)
    VALUES(15,'绪淼','女','13700156035');

    #3.列的顺序是否可以调换
    INSERT INTO beauty(NAME,sex,id,phone)
    VALUE('仁忻','女','16','12345');

    #4.列数和值的个数必须一致

    #5.可以省略列名,默认所有列,而且列的顺序和表的顺序一致,但要遵守第四点。
    INSERT INTO beauty
    VALUES(17,'李玉婷','女',NULL,'19999999999',NULL,NULL);

    #方式二:
    语法:
    INSERT INTO 表名
    SET 列名=值,列名=值,...
    
    #1.插入
    INSERT INTO beauty
    SET id=19,NAME='凛',phone='119';

    #两种插入方式对比
    #1.方式一支持插入多行,方式二不支持
    INSERT INTO beauty
    VALUES(20,'清水','女','1990-5-20','19899990000',NULL,2),
    (21,'清淼','女','1990-5-20','19899991111',NULL,2),
    (22,'妙法','女','1210-2-20','19899991111',NULL,2);

     

    #2.方式一支持子查询,方式二不支持
    INSERT INTO beauty(id,NAME,phone)
    SELECT 23,'丹止','12315';

    #二:修改语句
    1.修改单表的记录★
    语法:
    ①        UPDATE 表名
    ③        SET 列=新值,列=新值...
    ②        WHERE 筛选条件;【如果不加筛选条件,表内所有数据都会被修改】
    执行顺序①②③
    2.修改多表的记录【补充】
    语法:
    SQL1992语法
      UPDATE 表1 别名,表2 别名
      SET 列=值...
      WHERE 连接条件
      AND 筛选条件
    SQL1999语法
      UPDATE 表1 别名
      INNER|LEFT|RIGHT JOIN 表2 别名
      ON 连接条件
      SET 列=值,...
      WHERE 筛选条件;
    
    #修改单表的记录
    #案例1.修改beauty表中清开头的电话为13322333
    UPDATE beauty SET phone='1332233'
    WHERE NAME LIKE '清%';
    SELECT * FROM beauty;

    #案例2.修改boys表中id号为4的名称为伯纳德,魅力值200
    UPDATE boys SET boyname='伯纳德',usercp=200
    WHERE id = 4;

    #2.修改多表的记录
    #案例1.修改光头强的朋友的手机号为116。【1999语法】
    UPDATE boys bo
    INNER JOIN beauty be
    ON be.boyfriend_id=bo.id
    SET be.phone='116'
    WHERE bo.boyName='光头强';

    #案例2.修改没有男朋友的女朋友的男朋友编号都为4号。
    UPDATE boys bo
    RIGHT JOIN beauty be
    ON be.boyfriend_id=bo.id
    SET be.boyfriend_id=4
    WHERE bo.id IS NULL;

    #三.删除语句
    方式一:DELETE
    语法:
    1.单表的删除★
    DELETE FROM 表 WHERE 筛选条件;
    
    2.多表的删除【补充】
    SQL1992语法
      DELETE 表1的别名,表2的别名【删那个表的数据写那个表,全删要写全部】
      FROM 表1 别名,表2 别名
      WHERE 连接条件
      AND 筛选条件;
    SQL1999语法
      DELETE 表1的别名,表2的别名
      FROM 表1 别名
      INNER|LEFT|RIGHT JOIN 表2 别名
      ON 连接条件
      WHERE 筛选条件;
    
    方式二: TRUNCATE
    语法:
    TRUNCATE 表名;
    
    #方式一:DELETE
    #1.单表的删除
    #案例1.删除手机号以3结尾的女生信息。
    DELETE FROM beauty
    WHERE phone LIKE '%3';
    
    #案例:删除喜羊羊的朋友信息
    DELETE b    #删哪个表的信息就写哪个表,
    FROM beauty b
    INNER JOIN boys bo ON b.boyfriend_id=bo.id
    WHERE bo.boyName='喜羊羊';
    
    #案例:删除伯纳德的信息以及他朋友的信息。【级联删除】
    DELETE b,bo   #两张表里的信息满足条件的都删除
    FROM beauty b
    INNER JOIN boys bo ON b.boyfriend_id=bo.id
    WHERE bo.boyName='伯纳德';
    
    #方式二:TRUNCATE删除
    #案例:把魅力值>100的男神删除。
    TRUNCATE TABLE boys
    WHERE userCP>100;
    #最终结果报错,TRUNCATE后面不能加WHERE条件。所以一般用来清空整张表的数据。
    #删除一张表内的数据
    DELETE FROM boys;

    #插入数据,查看ID
    INSERT INTO boys(boyname,usercp)
    VALUES('喜羊羊','200'),('灰太狼','150'),('虹猫','300');

    先清空表格
    TRUNCATE boys;
    #插入数据,查看ID

    DELETE与TRUNCATE的区别
    1.delete 可以加WHERE 条件,TRUNCATE不能加
    2.TRUNCATE删除,效率高一些
    3.假如要删除的表中有自增长列,如果用DELETE删除后,再插入数据,
    自增长列从断点开始,而TRUNCATE删除后,再插入数据,自增长从1开始。
    4.TRUNCAT删除没有返回值,DELETE删除有返回值【 Affected rows: 3 三行受影响】。
    5.TRUNCATE删除不能回滚,DELETE删除可以回滚。
    练习
    #1.建立两个表
    CREATE TABLE my_eployees(
    Id INT(10),
    First_name VARCHAR(10),
    Last_name VARCHAR(10),
    Userid VARCHAR(10),
    Salary DOUBLE(10,2)
    );
    =================
    CREATE TABLE users(
    id INT,
    userid VARCHAR(10),
    department_id INT
    );

    #2.查看表结构
    DESC my_employees;
    DESC users;
    #3.插入数据
    #方式一:
    INSERT INTO my_employees
    VALUES(1,'patel','Ralph','Rpatel',895),
    (2,'Dancs','Betty','Bdancs',860),
    (3,'Biri','Ben','Bbiri',1100),
    (4,'Newman','Chad','Cnewman',750),
    (5,'Ropeburn','Audrey','Aropebur',1550);
    DELETE FROM my_employees;
    
    #方式二: 子查询,UNION连接成为一条SQL语句
    INSERT INTO my_employees
    SELECT 1,'patel','Ralph','Rpatel',895 UNION
    SELECT 2,'Dancs','Betty','Bdancs',860 UNION
    SELECT 3,'Biri','Ben','Bbiri',1100 UNION
    SELECT 4,'Newman','Chad','Cnewman',750 UNION
    SELECT 5,'Ropeburn','Audrey','Aropebur',1550;

    #4.插入数据
    INSERT INTO users
    VALUES (1,'Rpatel',10),
    (2,'Bdancs',10),
    (3,'Cnewman',20),
    (4,'Bbiri',30),
     (5,'Aropebur',40);
    #5.将3号员工的last_name修改为"drelxer"
    UPDATE my_employees
    SET last_name='drelxer'
    WHERE Id=3;

    #6.将所有工资少于900的员工的工资修改为1000
    UPDATE my_employees
    SET Salary=1000
    WHERE Salary<900;

    #7.将userid为Bbiri的user表和my_employees表的记录全部删除。
    DELETE u,m
    FROM users u
    INNER JOIN my_employees m ON u.userid=m.Userid
    WHERE u.userid='Bbiri';
    
    #8.删除所有数据
    DELETE FROM my_employees;
    DELETE FROM users;

    #9.检查所作的修正
    SELECT * FROM my_employees;
    SELECT * FROM users;
    #10.清空my_employees
    TRUNCATE TABLE my_employees;
    TRUNCATE TABLE users;
  • 相关阅读:
    [转]学会Python可以有以下几类工作方向:
    Jrebel 6.2.1破解
    Jrebel 6.2.1破解
    Eclipse快捷键 10个最有用的快捷键
    Eclipse快捷键 10个最有用的快捷键
    Eclipse快捷键 10个最有用的快捷键
    Solarized Colorscheme for IntelliJ IDEA
    Solarized Colorscheme for IntelliJ IDEA
    Solarized Colorscheme for IntelliJ IDEA
    Spring Boot——开发新一代Spring应用
  • 原文地址:https://www.cnblogs.com/jxearlier/p/13416957.html
Copyright © 2011-2022 走看看