zoukankan      html  css  js  c++  java
  • SQL之join

    QL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

    有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

    数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起

    INNER JOIN 

    在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

    1 SELECT column_name(s)
    2 FROM table_name1
    3 INNER JOIN table_name2 
    4 ON table_name1.column_name=table_name2.column_name

    LEFT JOIN 

    LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

    1 SELECT column_name(s)
    2 FROM table_name1
    3 LEFT JOIN table_name2 
    4 ON table_name1.column_name=table_name2.column_name

    RIGHT JOIN 

    RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

    1 SELECT column_name(s)
    2 FROM table_name1
    3 RIGHT JOIN table_name2 
    4 ON table_name1.column_name=table_name2.column_name

    FULL JOIN

    只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

    SELECT column_name(s)
    FROM table_name1
    FULL JOIN table_name2 
    ON table_name1.column_name=table_name2.column_name
    
    

    实战

     1 #连表更新
     2 UPDATE table_name1
     3 INNER JOIN table_name2 
     4 ON  table_name1.col=table_name2.col SET 列名称 = 新值 WHERE 列名称 = 某值
     5 
     6 
     7 #删除名字重复的数据,留下id最小的
     8 DELETE t1 FROM `user` t1 LEFT JOIN (
     9 SELECT * FROM `user`GROUP BY user_name 
    10 HAVING COUNT(user_name)>=2
    11 ) t2 ON t1.user_name = t2.user_name 
    12 WHERE t1.user_id > t2.user_id
    13 
    14 
    15 #创建表同时插入数据
    16 CREATE TABLE 表名称
    17 (
    18 列名称1 数据类型,
    19 列名称2 数据类型,
    20 列名称3 数据类型,
    21 ....
    22 )
    23 SELECT 列名称 FROM 表名称;
  • 相关阅读:
    MySQL中的内置系统函数
    Mysql导出表结构及表数据 mysqldump用法
    MySQL事务处理案例演示
    mysql中int、bigint、smallint 和 tinyint的区别详细介绍
    mysql 获取上个月,这个月的第一天或最后一天
    ★MySQL一些很重要的SQL语句
    remix的使用
    nodejs部署智能合约的方法-web3 0.20版本
    js同步-异步-回调
    ganache与metamask
  • 原文地址:https://www.cnblogs.com/brokencolor/p/9858678.html
Copyright © 2011-2022 走看看