zoukankan      html  css  js  c++  java
  • MySQL学习小记(二) 混合表

    混合表

    继续上次的内容

    MySQL学习小记(一)_☆迷茫狗子的秘密基地☆-CSDN博客添加新用户及密码查看所有用户给本地的用户赋予特权查看用户的特权工作台按照字段进行升序/降序查看指定范围有哪些人https://blog.csdn.net/qq_39391544/article/details/121354629

    新建一个表posts,将上次的users表中的id作为posts的外键

    CREATE TABLE posts(
    	id INT auto_increment,
        user_id INT,
        title VARCHAR(100),
        body text,
        publish_date DATETIME DEFAULT CURRENT_TIMESTAMP, #时间戳的默认值
        PRIMARY KEY(ID),
        FOREIGN KEY(user_id) REFERENCES users(id) #★
    );

    插入了几条记录,

    通过主键将他们关联起来

    SELECT users.first_name, users.last_name, posts.title, posts.publish_date
    FROM users
    INNER JOIN posts
    ON users.id = posts.user_id
    ORDER BY posts.title;

    再新建一个评论表,与使用者和帖子联系起来

    CREATE TABLE comments(
    	id INT AUTO_INCREMENT,
        post_id INT,
        user_id INT,
        body TEXT,
        publish_date DATETIME DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY(id),
        FOREIGN KEY(post_id) REFERENCES posts(id),
        FOREIGN KEY(user_id) REFERENCES users(id)
    );

    插入几条记录

    INSERT INTO comments(post_id, user_id, body)
    VALUES (1, 3, "1st comment by user_3"),
    (2, 3, "2nd comment by user_3"),
    (4, 5, "3rd comment by user_5"),
    (3, 4, "4th comment by user_4");

    连接多个表

    SELECT 
    comments.body, posts.title, 
    CONCAT(users.first_name,'-',users.last_name) AS 'Name'
    FROM comments
    LEFT JOIN posts ON posts.id = comments.post_id
    INNER JOIN users ON users.id = comments.user_id
    ORDER BY posts.title;

    为啥此时在右边加入会出现下面这种情况捏

    SELECT 
    comments.body, posts.title, users.first_name
    FROM comments
    LEFT JOIN posts ON posts.id = comments.post_id
    RIGHT JOIN users ON users.id = comments.user_id
    ORDER BY posts.title;

    各种JOIN之间的区别

    这就需要了解一下各种JOIN之间的区别了, 网上有张图流传的较为广泛

    以我建的两个表举例

    comments表(下面统称为C表)

    users表(下面统称为U表)

    表C左连接表U,以左为主,则表示以表C为主,关联上表U的数据,查出来的结果显示左边的所有数据,右边显示的是和左边有交集部分的数据

    SELECT 
    comments.id,comments.user_id,comments.body, users.last_name
    FROM comments
    LEFT JOIN users ON users.id = comments.user_id;
    

    若是右接U表,则会是这样

  • 相关阅读:
    #张祖德#
    不说啥,放题
    ……
    点群的判别(四)
    lougu P4180 【模板】严格次小生成树[BJWC2010]
    20190227模拟
    20190226模拟
    Triangles
    Darling
    Suspenseful
  • 原文地址:https://www.cnblogs.com/Knight02/p/15799020.html
Copyright © 2011-2022 走看看