mysql之增删改查和集合操作

mysql学习

创建表的时候 尽量加上 create_time字段,为create_time设置默认值CURRENT_TIMESTAMP

CRUD操作
  • Create( 增 )

    • 单条插入

      INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...)
      
      INSERT INTO class_1(name) VALUES('张三');
      
    • 多条插入

      INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...),(值1,值2,...)
      
      INSERT INTO class_1(name) VALUES('张三'),('李四')
      
  • Retreve ( 查 )

    • 获取所有记录

      SELECT 字段1,字段2(可以用 * 代替全部) FROM 表名
      
      SELECT * FROM class_1
      SELECT name FROM class_1
      
    • 条件查询 ( WHERE,AND,OR

      SELECT 字段1,字段2(可以用 * 代替全部) FROM 表名 WHERE 表达式
      
      SELECT * FROM class_1 WHERE name="张三"
      SELECT * FROM class_1 WHERE name="张三" AND id=3
      
    • 模糊匹配 (LIKE,%

      n%   %n   %n%    n为要模糊查询的内容,%为不确定因素  
      
      
      SELECT * FROM class_1 WHERE name LIKE "%四%";
      
    • 限制返回条数 (LIMIT)

      LIMIT 需要几条数据   (数量)
      
      SELECT * FROM class_1 WHERE name LIKE "%四%" LIMIT 2;
      
    • 过滤重复值 (distinct) 去重

      对查询的结果进行过滤

      如果指定多个字段,会对多个字段联合进行过滤

      SELECT distinct 字段1,字段2,... FROM class_1 可以加表达式
      
      SELECT distinct name FROM class_1;
      
      (可以加入任意表达式)
      SELECT distinct name FROM class_1 WHERE name LIKE "%四%";
      
    • 排序问题

      对查询的结果进行排序

      • 升序 (ASC) ORDER BY

        									ORDER BY  排序字段 ASC 默认
        
        SELECT name,create_time FROM class_1 ORDER BY create_time
        

        数据库默认是升序

      • 降序 (DESC)

        									  ORDER BY  排序字段 desc
        
        SELECT name,create_time,id FROM class_1 ORDER BY id desc
        
    • 获取查询结果的数量(count

      SELECT count(字段) FROM 表名;
      
      SELECT count(*) FROM class_1;
      SELECT count(name) FROM class_1;
      
  • Update(更新)

    UPDATE 表名 SET 字段1=新值,字段2=新值,... WHERE 表达式
    											(需要确定要修改那一条数据)
    		!!!不加表达式 就会 更改全部的数据!!!
    
    UPDATE class_1 SET name='王五' WHERE id=1
    
  • Delete (删除)

    DELETE FROM   表名   表达式
    				(需要确定要删除那一条数据)
    	    !!!不加表达式 就会 删除全部的数据!!!!
    
    DELETE FROM class_1 WHERE id=11
    

    集合操作

    • 并集 UNION

      子语句 SELECT 必须拥有相同数量的列(字段),且列的数据类型也相同

      SELECT name FROM class_1 WHERE name is not NULL
      UNION
      SELECT name FROM class_2 WHERE name is not NULL
      
    • 交集 JOIN,INNER

      1 先将需要求交集的 表 的 字段 提取出来 放到变量里
      2 中间添加 JOIN  交集操作
      3 添加 ON表达式 表1中的字段 和 表2中的字段  相同的值
      4 SELECT s1.name FROM   s1和s2都可以  因为值是相同的
      
      
      -- 交集
      SELECT s1.name FROM
      (SELECT name FROM class_1 WHERE name is not NULL) as s1
      JOIN
      (SELECT name FROM class_2 WHERE name is not NULL) as s2
      ON s1.name = s2.name
      
    • 差集(LEFT JOIN,RIGHT JOIN)

      A对B的 差集 就是 LEFT JOIN

      -- 差集
      SELECT A.name FROM
      (SELECT name FROM class_1 WHERE name is not NULL) as A
      LEFT JOIN
      (SELECT name FROM class_2 WHERE name is not NULL) as B
      ON A.name = B.name
      WHERE B.name is NULL   // 限定A有  B没有的记录
      

      B对A的 差集 就是 RIGHT JOIN

      -- 差集
      SELECT B.name FROM
      (SELECT name FROM class_1 WHERE name is not NULL) as A
      RIGHT JOIN
      (SELECT name FROM class_2 WHERE name is not NULL) as B
      ON A.name = B.name
      WHERE A.name is NULL  // 限定A没有,B有的记录
      
    • 补集

      A与B的补集 = A与B的并集 - A与B的交集

      A与B的补集 = A与B的差集 + B对A的 差集 √

      -- 差集
      -- A->B
      SELECT A.name FROM
      (SELECT name FROM class_1 WHERE name is not NULL) as A
      LEFT JOIN
      (SELECT name FROM class_2 WHERE name is not NULL) as B
      ON A.name = B.name
      WHERE B.name is NULL   
      
      UNION  -- 两个差集相加 就是 补集
      
      -- B->A
      SELECT B.name FROM
      (SELECT name FROM class_1 WHERE name is not NULL) as A
      RIGHT JOIN
      (SELECT name FROM class_2 WHERE name is not NULL) as B
      ON A.name = B.name
      WHERE A.name is NULL
      
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值