zoukankan      html  css  js  c++  java
  • MySQL-3-DML

    DML 数据操作语言

    插入insert

    • 语法一:insert into 表名(列名,...)values(值1,...);
    • 语法二:insert into 表名 set 列名=值,列名=值,...
    • 插入的值的类型要与列的类型一致或兼容
    # 语法一:支持多行插入;语法二不支持
    INSERT INTO beauty VALUES
    	(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2),
            (24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2),
            (25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2);
    # 语法一:支持子查询,语法二不支持
    INSERT INTO beauty(id,NAME,phone)
    SELECT 26,'宋茜','11809866';
    
    INSERT INTO beauty(id,NAME,phone)
    SELECT id,boyname,'1234567' FROM boys WHERE id<3;
    

    删除delete,truncate

    • 删除-->语法1:delete from 表名 where 筛选条件
    • 删除-->语法2:truncate(截断) table 表名:删除整张表
    # 删除手机号带9的女生信息
    DELETE FROM beauty WHERE phone LIKE '%9%';
    
    • 多表删除,语法:
          sq192语法:
    # 删除表1的信息就是 delete 表1的别名 ...
    # 删除表2的信息就是 delete 表2的别名 ...
    # 两个表信息都删除则 delete 表1的别名 表2的别名 ...
    delete 表1的别名,表2的别名 from 表1 别名,表2 别名 where 连接条件 and 筛选条件;
    
          sq199语法:
    delete 表1的别名,表2的别名 from 表1 别名 inner|left|right join 表2别名 on 连接条件 where 筛选条件;
    
    ## 例子:
    # 多表删除:删除张无忌的女朋友 只删除女朋友信息
    DELETE b 
    FROM beauty b
    INNER JOIN boys bo
    ON b.`boyfriend_id` = bo.`id`
    WHERE bo.`boyName` = '张无忌';
    # 删除黄晓明的信息以及他女朋友的信息
    DELETE bo,b
    FROM boys bo
    INNER JOIN beauty b 
    ON b.`boyfriend_id` = bo.`id`
    WHERE bo.`boyName` = '黄晓明';
    

    truncate和delete区别

    • delete 可以加where条件,truncate不能加
    • truncate删除,效率高一点
    • 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
    • truncate删除没有返回值,delete删除有返回值
    • truncate删除不能回滚,delete删除可以回滚
    CREATE TABLE major(
    	id INT,
    	mName VARCHAR(20)
    );
    # 使用delete 删除后 同时用回滚操作,则数据没有被删除
    SET autocommit = 0;
    START TRANSACTION;
    DELETE FROM major
    ROLLBACK
    # 使用truncate 删除后 同时用回滚操作,则数据被删除
    SET autocommit = 0; # 关闭事务的自动提交
    START TRANSACTION; # 开始事务
    TRUNCATE TABLE major; #删除表中所有数据
    ROLLBACK # 回滚
    

    修改update

    • 修改单表,语法:update 表名 set 列=新值,列=新值,... where 筛选条件;
    • 修改多表,语法:
    /*
       sq192语法:
    update 表1 别名,表2 别名 
    set 列=值,.…
    where 连接条件 and 筛选条件;
       sq199语法:
    update 表1 别名
    inner|left|right join 表2 别名 
    on 连接条件
    set 列=值,.…
    where 筛选条件
    */
    
    # 修改多表 例子:
    # 修改
    # 1. 修改张无忌的女朋友的手机号为110
    UPDATE boys bo, beauty b
    SET phone = 110
    WHERE bo.`id` = b.`boyfriend_id` AND b.`boyfriend_id`= (
    	SELECT `id` FROM boys WHERE boyName = '张无忌'
    );
    # 2. 修改没有男朋友的女生,让其男朋友编号都为2号
    UPDATE beauty b
    LEFT JOIN boys bo 
    ON b.`boyfriend_id` = bo.`id`
    SET b.`boyfriend_id` =  2
    WHERE b.`boyfriend_id` IS NULL
    
  • 相关阅读:
    集群项目总结和思考
    centos7安装zabbix
    string方法中字符与Unicode编码的相互转化:fromCharCode(),charCodeAt()
    element-ui @change添加自定义参数
    js ES6字符串的新功能
    js 去除字符串中的空格
    五月份,是金色的
    夏天快要到来了,2019年还有一半多的时间
    自定义element-ui中的图标
    js下拉框:从数组中筛选出匹配的数据
  • 原文地址:https://www.cnblogs.com/huyuqing/p/14406833.html
Copyright © 2011-2022 走看看