zoukankan      html  css  js  c++  java
  • 八、mysql DML语言

    参考url:https://www.bilibili.com/video/BV12b411K7Zu

    数据操作语言:

      插入:insert

      修改:update

      删除:delete

    1、插入语句(方式一)

      语法:

        Insert into 表名(列名,...)  Values(值1,...);

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

          INSERT INOT

          Beauty(id,name,sex,borndate,phone,photo,boybriend_id)

          VALUES(13,’唐宜兴’‘女’,‘1996-2-3,’1999999’,NULL,2);

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

          方式一:

            INSERT INOT

            Beauty(id,name,sex,borndate,phone,photo,boybriend_id)

            VALUES(13,’唐宜兴’‘女’,‘1996-2-3,’1999999’,NULL,2);

          方式二:

            INSERT INOT

            Beauty(id,name,sex,borndate,boybriend_id)

            VALUES(13,’唐宜兴’‘女’,‘1996-2-3,2);

        3) 列的顺序可以调换

            INSERT INTO

            beauty(name,sex,id,phone)

            VALUES(‘将星’‘女’,16,’11000002’)

        4) 列数和值的个数必须一致

        5) 可以省略列名,默认为所有列,而且列的顺序和表中列的顺序一致

    2、插入语句(方式二)

      语法:

        Insert into 表名

        Set 列名=值,列名=值,...

      例子:

        INSERT INTO beauty

        SET id=19,name=’刘涛’,phone=’999’

    3、插入方式比较

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

        INSERT INTO

        beauty(name,sex,id,phone)

        VALUES(‘将星1’‘女’,16,’11000002’)

        VALUES(‘将星2’‘女’,16,’11000002’)

        VALUES(‘将星3’‘女’,16,’11000002’);

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

        INSERT INTO beauty(id,name,phone)

        SELECT 26,‘宋强’,’112134’

    4、修改语句

      1) 修改单表的记录

        语法:

          Update 表名

          Set 列=新值,列=新值,...

          Where 筛选条件;

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

            UPDATE beauty

            SET phone=’123456789’

            WHERE name LIKE ‘%’;

        案例2:修改boys表中id号为2的名称为张飞,魅力值为10

            UPDATE boys

            SET name=’张飞’usercp=10

            WHERE id=2;

      2) 修改多表的记录

        语法:

          SQL92语法

            Update  表1 别名,表2 别名

            Set 列=值,...

            WHERE  连接条件

            AND 筛选条件;

          SQL99语法

            UPDATE 表1 别名

            INNER|LEFT|RIGHT JOIN 表2 别名

            ON 连接条件

            SET 列=值,...

            WHERE 筛选条件;

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

            UPDATE boys AS bo

            INNER JOIN beauty AS b

            ON bo.id=b.boyfirend_id

            WHERE bo.boyname=’张无忌’;

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

            UPDATE boys AS bo

            RIGHT JOIN beauty AS b

            ON bo.id=b.boyfriend_Id

            SET b.boyfriend_id=2

            WHERE b.id IS NULL;

    5、删除语句

      1) 方式一:delete(删除单行)

        语法:

          i) 单表的删除

          Delete from 表名 where 筛选条件;

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

            DELETE FROM beauty WHERE phone LIKE ‘%9’;

          ii) 多表的删除

            语法:

              Sql92语法:

              Delete 表1的别名,表2的别名

              FROM 表1 别名,表2 别名

              WHERE 连接条件

              AND 筛选条件;

              Sql99语法:

              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

                INNNER JOIN boys bo

                ON b.boyfriend_id=bo.id

                WHERE bo.boyname=’黄小名’;

      2) 方式二:truncate(删除表中所有数据)

        语法:

          Truncate table 表名;

        案例:将魅力值>100的男神信息删除

            TRUNCATE TABLE boys;

      3) Deletetruncate对比分类:

          i. Delete可以加where条件,truncate不能加

          ii. Truncate删除效率高一些

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

          iv. Truncate删除没有返回值,delete删除有返回值。

          v. Truncate删除不能回滚,delete删除可以回滚

  • 相关阅读:
    Redis从入门到精通:初级篇(转)
    Spring配置中的"classpath:"与"classpath*:"的区别研究(转)
    maven常用命令
    JUC-线程池调度-ScheduledThreadPool
    JUC-线程池
    JUC-线程八锁
    JUC-ReadWriteLock
    JUC-Condition和Lock实践-线程按序交替执行
    Linux 查看.so中导出函数
    nginx配置反向代理
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12583941.html
Copyright © 2011-2022 走看看