zoukankan      html  css  js  c++  java
  • 【mysql插入&修改&删除 06】

    DML语言
    数据操作语言:
    插入:insert
    修改:update
    删除:delete
    一、插入语句
    语法:insert into 表名(列名,...)value(值1,....);
    #方式1:
    #1、插入的值得类型要与列的类型一致或兼容

    INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUE(13,'赵丽颖','','1988-3-23','18988888888',NULL,'2');

    #2、不可以为null的列必须插入值,可以为null的列如何插入值
    -- 上面的那种情况,字段写出来,但是值可以为null

    -- 字段和值都不写,只写非空
    INSERT INTO beauty (id,NAME,phone)
    VALUE(14,'倪妮','13988888888');

    #3、列的顺序是可以调整,但是的列和值是一一对应的

    INSERT INTO beauty (NAME,id,phone)
    VALUE('蒋欣',15,'15988888888');

    #4、列数和值得个数必须一致,否则就会报错
    #5、可以省略列名,默认是所有列,而且列的顺序和表中列的顺序一致

    INSERT INTO beauty VALUE(18,'关晓彤','',NULL,'119',NULL,NULL);

    #方式2:
    语法:insert into 表名 set 列名=值,列名= 值,...

    INSERT INTO beauty SET id=19,NAME='刘涛',phone='110';

    #两种方式对比
    #1、方式一支持插入多行

    INSERT INTO beauty
    VALUE(20,'赵丽颖1','','1988-3-23','18988888888',NULL,'2'),
    (21,'赵丽颖2','','1988-3-23','18988888888',NULL,'2'),
    (22,'赵丽颖3','','1988-3-23','18988888888',NULL,'2');

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

    INSERT INTO beauty(id,NAME,phone)
    SELECT 26,'宋茜','1568888888';

    #二、修改语句
    1、修改单表的记录
    语法:

    update 表名 set=新值,列= 新值,...  where 筛选条件;

    2、修改多表的记录

    sql92语法:
    update 表1 别名,表2 别名
    set=值,...
    where 链接条件
    and 筛选条件;

    sql99语法:

    update 表1 别名
    inner/left/right join 表2 别名
    on 链接条件
    set=值,...
    where 链接条件

     #1、修改单表记录
    # 案例1:修改beauty表中姓赵的女神的电话为13888886666

    UPDATE beauty SET phone='13888886666' WHERE NAME LIKE '赵%'

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

    UPDATE boys SET `boyName`='张飞',`userCP`=2 WHERE id = '2';

    #2、修改多表的记录
    #案例1:修改张无忌的女朋友的手机号为114

    -- 先查询张无忌的女朋友的电话
    SELECT be.name,be.`phone`,b.`boyName` FROM beauty be JOIN boys b ON be.`boyfriend_id`=b.`id` WHERE b.`boyName`='张无忌'
    
    UPDATE  beauty be JOIN boys b ON be.`boyfriend_id`=b.`id`
    SET be.`phone`='114'
    WHERE b.`boyName`='张无忌';

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

    UPDATE beauty be LEFT JOIN boys b ON be.`boyfriend_id`=b.`id`
    SET be.`boyfriend_id`=2 WHERE b.`id` IS NULL;

    #三、删除语句
    语法:
    1、单表的删除

    delete from 表名 where 筛选条件

    2、多表的删除【补充】
    sql92语法:

    delete 表1的别名 from 表1 别名,表2 别名 where 链接条件 and 筛选条件;

    sql99语法:

    delete 表1的别名 from 表1 别名 inner/left/right join 表2 别名 on 链接条件 where 筛选条件;

    方式二:truncate

    语法:truncate table 表名;   删除了表中所有数据

    两者区别:

    1. delete 可以加where条件,truncate不能加
    2. 假如要删除的表中有自增长列

        如果delete删除后,在插入数据,自增长的列的值从断点开始

        而truncate删除后,在插入数据,自增长的列的值从1开始。

           3、truncate删除后没有返回值,delete删除有返回值

      4、truncate删除不能回滚,delete删除可以回滚

    #单表删除
    #案例1:删除手机号以9结尾的女神信息

    DELETE FROM beauty WHERE phone LIKE '%9';

    #多表删除
    #案例:删除张无忌的女朋友信息

    SELECT be.* FROM boys  b INNER JOIN beauty be ON b.`id`=be.`boyfriend_id` WHERE b.`boyName`='张无忌';
    
    DELETE be.* FROM boys  b INNER JOIN beauty be ON b.`id`=be.`boyfriend_id` WHERE b.`boyName`='张无忌';

    #案例:删除张飞的信息以及他女朋友的信息

    DELETE b.*,be.* FROM boys b INNER JOIN beauty be ON b.id = be .boyfriend_id WHERE b.boyname='张飞';

    案例实际操作

    USE myemployees;
    CREATE TABLE my_employees(
        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
    );
    
    DESC my_employees;

    #向my_employees表中插入数据

    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);

    #4.     向users表中插入数据
    1    Rpatel    10
    2    Bdancs    10
    3    Bbiri    20
    4    Cnewman    30
    5    Aropebur    40

    INSERT INTO users
    SELECT 1 ,'Rpatel',10 UNION
    SELECT 2 ,'Bdancs',10 UNION
    SELECT 3 ,'Bbiri',20 UNION
    SELECT 4 ,'Cnewman',30 UNION
    SELECT 5 ,'Aropebur',40 ;
    
    UPDATE users SET department_id=40 WHERE id =5;

    #将3号员工的last_name修改为’drelxer‘

    UPDATE my_employees SET Last_name = 'drelxer' WHERE id =3;

    #将所有工资少于900的员工的工资修改为1000

    UPDATE my_employees SET Salary=1000 WHERE Salary<=900;

    #7.将userid 为Bbiri的users表和my_employees表的记录全部删除

    DELETE b.*,m.* FROM my_employees m INNER JOIN users b ON m.`Userid`=b.`userid` WHERE b.userid = 'Bbiri';
  • 相关阅读:
    如何设置nginx日志格式来查看负载分担结果
    Nginx缓存使用官方教程及常见问题解答
    nginx缓存和flask_cache
    flask_wtf/wtforms几个坑点,先简单记此
    maven-dependency-plugin插件的使用
    maven+jenkins+jmeter性能测试:maven把项目依赖拷贝到项目指定位置
    sudo:抱歉,您必须拥有一个终端来执行 sudo 解决办法;ssh执行sudo命令的方法;给用户增加sudo免密权限
    innerHTML引起IE的内存泄漏
    innerHTML与IE浏览器内存泄露问题
    IE内存泄露与无法回收研究小结
  • 原文地址:https://www.cnblogs.com/frankruby/p/14573386.html
Copyright © 2011-2022 走看看