zoukankan      html  css  js  c++  java
  • mySQL__DML课堂笔记和练习

    #DML语言
    /*
    数据操作语言:
    插入:insert
    修改:update
    删除:delete
    */
    
    

    一、【插入语句】

    【方式1】:经典插入
    /*
    语法:insert into 表名(列名,...) values(值,...);
    */
    
    #1、插入的值的类型要和列的类型一致或兼容
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUES(13,'唐艺昕','女','1990-4-23','16666666666',NULL,2)
    
    SELECT * FROM beauty;
    
    #2、不可以为null的列必须插入值。可以为null的列如何插入值
    #方式1:
    INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
    VALUES(13,'唐艺昕','女','1990-4-23','16666666666',NULL,2)
    
    #方式2:直接不写列名和列值
    INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
    VALUES(14,'唐艺昕','女','1990-4-23','16666666666',2)
    
    
    #3、列的顺序可以调换,只要保证列名和值是一一对应的就行
    INSERT INTO beauty(NAME,sex,id,phone)
    VALUES('娜扎','女','15','110');
    
    #4、列数和值的个数要一样
    #5、可以省略列名,默认是所有列,且列的顺序和表中列的顺序一致
    INSERT INTO beauty
    VALUES(16,'张飞','男',NULL,'119',NULL,NULL)
    
    
    【方式2】:
    /*
    语法:
    insert into 表名
    set 列名=值,列名=值,...
    */
    INSERT INTO beauty
    SET id=17,NAME='刘涛',phone='999';
    
    SELECT * FROM beauty;
    
    
    【两种方式大PK】
    #(1)方式1支持插入多行,方式2不支持
    INSERT INTO beauty
    VALUES(23,'唐艺昕1','女','1990-4-23','16666666666',NULL,2)
    ,(24,'唐艺昕','女','1990-4-23','16666666666',NULL,2)
    ,(25,'唐艺昕','女','1990-4-23','16666666666',NULL,2);
    
    
    #(2)方式1支持子查询,方式2不支持
    INSERT INTO beauty(id,NAME,phone)
    SELECT 26,'宋茜','10086'#等效于values(27,'宋茜','10086')
    
    INSERT INTO beauty(id,NAME,phone)
    SELECT id,boyname,'10080'
    FROM boys WHERE id<3;
    
    
    # 二、【修改语句】
    /*
    1.修改单表的记录【重点】
    
    语法:
    update 表名  (1)
    set 列=新值,列=新值,...(3)
    where 筛选条件;(2)
    
    
    
    
    2.修改多表的记录【补充】
    
    语法:
    sql92语法(仅仅支持内连)
    update 表1 别名,表2 别名
    set 列=值,...
    where 连接条件
    and 筛选条件
    
    sql99语法:
    update 表1 别名
    inner|left|right| join 表2 别名
    on 连接条件
    set 列=值,...
    where 筛选条件
    */
    
    
    1.修改单表的记录【重点】
    
    #案例1:修改beauty表中姓唐的女神的电话为666
    SELECT * FROM beauty;
    
    UPDATE beauty SET phone='666'
    WHERE NAME LIKE '唐%';
    
    #案例2:修改boys表中id为2的名称为张飞,魅力值为10
    SELECT * FROM boys;
    
    UPDATE boys SET userCP=10
    WHERE id=2;
    
    
    
    2.修改多表的记录【补充】
    
    #案例1:修改张无忌的女朋友的手机号为114
    SELECT * FROM beauty
    #99
    UPDATE boys bo
    INNER JOIN beauty b ON bo.id=b.boyfriend_id
    SET b.phone='114'
    WHERE bo.boyName='张无忌';
    #92
    UPDATE boys bo,beauty b
    SET b.phone='116'
    WHERE bo.id=b.boyfriend_id
    AND bo.boyName='张无忌';
    
    
    #案例2:修改没有男朋友的女神的男朋友编号都为2
    UPDATE beauty b
    LEFT OUTER JOIN boys bo ON bo.id=b.boyfriend_id
    SET b.boyfriend_id=2
    WHERE b.boyfriend_id NOT BETWEEN 1 AND 4
    OR b.boyfriend_id IS NULL;
    
    SELECT * FROM beauty;
    
    
    #三、【删除语句】
    /*
    方式一:delete
    
    
    1.单表的删除【★】
    语法:
    delete from 表名 where 筛选条件
    
    2.多表的删除【补充】
    sql92语法:
    delete 表1的别名,表2的别名     【注意:要删除表1的记录就写表1的别名,删除表2的记录就写表2的别名】 
    from 表1 别名,表2 别名
    where 连接条件
    and 筛选条件
    
    sql99语法:
    delete 表1的别名,表2的别名
    from 表1 别名
    inner|left|right join 表2 别名
    on 连接条件
    where 筛选条件
    
    
    
    方式二:truncate
    语法:truncate table 表名;  删除整张表,且truncate语句不允许加where
    */
    
    
    【方式1:DELETE】
    1. 单表的删除
    #案例:删除手机号以9结尾的女神信息
    DELETE FROM beauty 
    WHERE phone LIKE '%9';
    
    SELECT * FROM beauty;
    
    
    2.多表的删除【补充】
    #案例1:删除张无忌的女朋友的信息
    DELETE b
    FROM beauty b
    INNER JOIN boys bo
    ON bo.id=b.boyfriend_id
    WHERE bo.id=1
    
    #案例2:删除黄晓明的信息以及他女朋友的信息
    DELETE b,bo
    FROM beauty b
    INNER JOIN boys bo
    ON bo.id=b.boyfriend_id
    WHERE bo.boyName='黄晓明';
    
    SELECT * FROM beauty;
    SELECT * FROM boys;
    
    
    面试题【DELETE PK TRUNCATE】
    /*
    1.truncate不能加where条件,而delete可以加where条件
    
    2.truncate的效率高一丢丢
    
    3.truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始
      delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始
    
    4. truncate删除没有返回值,delete删除有返回值(返回多少列收到影响)
    
    5.truncate删除不能回滚,delete删除可以回滚
    */
    
    #对于3  关注下id值
    SELECT * FROM boys;
    
    #(1)
    DELETE FROM boys;
    INSERT INTO boys(boyname,usercp)
    VALUES('张飞',100),('刘备',80),('关云长',60)
    
    #(2)
    TRUNCATE TABLE boys;
    INSERT INTO boys(boyname,usercp)
    VALUES('张飞',100),('刘备',80),('关云长',60)
    
    

    练习

    #练习:运行以下脚本,创建my_employees
    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
    );
    
    
    #显示my_employees表结构
    DESC my_employees;
    
    
    #向my_employees中插入语句
    #方式1
    INSERT INTO my_employees
    VALUES(1,'patel','Ralph','Rpatel',895),
    (2,'Dance','Betty','Bdance',860),
    (3,'Biri','Ben','Bbiri',1100),
    (4,'Newman','Chad','Cnewman',750),
    (5,'Ropeburn','Audrey','Aropebur',1550);
    
    DELETE FROM my_employees;
    #方式2
    INSERT INTO my_employees
    SELECT 1,'patel','Ralph','Rpatel',895 UNION
    SELECT 2,'Dance','Betty','Bdance',860 UNION
    SELECT 3,'Biri','Ben','Bbiri',1100 UNION
    SELECT 4,'Newman','Chad','Cnewman',750 UNION
    SELECT 5,'Ropeburn','Audrey','Aropebur',1550;
    
    
    #在users表中插入数据
    INSERT INTO users
    VALUES(1,'Rpatel',10),
    (2,'Bdance',10),
    (3,'Bbiri',20)
    
    
    #将三号员工的last_name修改为drelxer
    UPDATE my_employees SET Last_name='drelxer'
    WHERE Id=3;
    
    #将所有工资少于900的员工的工资修改为1000
    UPDATE my_employees SET Salary=1000
    WHERE salary<900;#salary无所谓大小写
    
    
    #将useried为Bbiri的users表和my_employees表的记录全部删除
    DELETE u,e
    FROM users u
    JOIN my_employees e ON u.userid=e.userid
    WHERE u.userid='Bbiri';
    
    
    #删除所有数据
    DELETE FROM my_employees;
    DELETE FROM users;
    
    
    #检查所有修正
    SELECT * FROM my_employees;
    SELECT * FROM users;
    
    #清空my_employees
    TRUNCATE TABLE my_employees;
    
    
  • 相关阅读:
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    [Java数据结构与算法]简单排序之插入排序
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    字符串转化为 List 集合
    IO流读写文件中文乱码的解决
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12724729.html
Copyright © 2011-2022 走看看