美文网首页小白学习编程
小白学前端(七) 数据库 SQL JOIN 两个或者多个表进行结

小白学前端(七) 数据库 SQL JOIN 两个或者多个表进行结

作者: OKOK熊 | 来源:发表于2018-12-05 14:56 被阅读0次

    总是会忘记,于是就mark下

    inner join :交集 | WHERE
    left join :以指定的左表列进行交集
    right join :以指定的右表列进行交集
    full outer join / union :并集
    cross join :笛卡尔积 / A x B 的映射

    以下为详解:

    1. inner join :交集 | WHERE


      交集/inner join
    SELECT (字段们) FROM (表们) WHERE [条件](表A.字段A = 表B.字段B)
    
    DELETE (表们) FROM (表们) WHERE [条件](表A.字段A = 表B.字段B)
    或 DELETE FROM (表们) USING (表们) WHERE [条件](表A.字段A = 表B.字段B)
    
    1. left join :以指定的左表列进行交集


      左连接/left join
    SELECT (字段们) FROM (表A) LEFT JOIN (表B) ON [条件](表A.字段A = 表B.字段B)
    
    // 找出2个表中的相同记录,并同时删除2个表的数据
    DELETE (表们) FROM (表A) LEFT JOIN (表B) ON [条件](表A.字段A = 表B.字段B) WHERE [条件](表X.字段=值)
    

    right join :以指定的右表列进行交集
    full outer join / union :并集
    cross join :笛卡尔积 / A x B 的映射


    附:如何创建关联表
    // CONSTRAINT 外键名称(fk_xxx) FOREIGN KEY (关联字段) REFERENCES 被关联表(被关联表的关联字段)

    CREATE TABLE accounts(
        account_id INT NOT NULL AUTO_INCREMENT,
        customer_id INT( 4 ) NOT NULL ,
        account_type ENUM( 'savings', 'credit' ) NOT NULL,
        balance FLOAT( 9 ) NOT NULL,
        PRIMARY KEY ( account_id ), 
        FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 
    ) ENGINE=INNODB;
    
    CREATE TABLE customers(
        customer_id INT NOT NULL AUTO_INCREMENT,
        name VARCHAR(20) NOT NULL,
        address VARCHAR(20) NOT NULL,
        city VARCHAR(20) NOT NULL,
        state VARCHAR(20) NOT NULL,
        PRIMARY KEY ( customer_id )
    )
    

    参考列表

    1. SQL left join query
    2. How to update one table based on another table's values on the fly?

    相关文章

      网友评论

        本文标题:小白学前端(七) 数据库 SQL JOIN 两个或者多个表进行结

        本文链接:https://www.haomeiwen.com/subject/hqxwcqtx.html