欧美日韩国产一区,亚洲一区视频,色综合久久久久,私密按摩师舌头伸进去了,99re6这里只有精品,夜夜性日日交xxx性hd

13.聯表查詢-左聯

  • • 發表于 6年前
  • • 作者 大妖怪
  • • 11186 人瀏覽
  • • 1 條評論
  • • 最后編輯時間 6年前
  • • 來自 [技 術]

原創聲明:本文為作者原創,未經允許不得轉載,經授權轉載需注明作者和出處

今天開始講一點高級點的內容。我們的數據庫,在生產環境中肯定不是只有一張表,有可能有用戶表,商品表,訂單表等等等等。這里我們有這樣一個場景,有一個班級表,班級表里有班級id,班級名稱,還有一個學生表,學生表里有學生id,學生姓名,學生性別,學號,班級id(這個主要用于將班級和學生關聯起來)。

CREATE DATABASE coupletDemo;
USE coupletDemo;
CREATE TABLE class(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(10) NOT NULL,
    PRIMARY KEY(id)    
);
INSERT INTO class (name) VALUES('妖怪班');
INSERT INTO class (name) VALUES('神仙班');

CREATE TABLE student(
   id INT NOT NULL AUTO_INCREMENT,
   name VARCHAR(5) NOT NULL,
   gender VARCHAR(1) NOT NULL,
   stu_no VARCHAR(10) NOT NULL,
   class_id INT NOT NULL,
   PRIMARY KEY(id)
);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('大妖怪','男','00001',1);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('二妖怪','女','00002',1);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('三妖怪','男','00003',1);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('四妖怪','女','00004',1);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('小妖怪','男','00005',1);

INSERT INTO student (name,gender,stu_no,class_id) VALUES('神仙1','男','00006',2);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('神仙2','女','00007',2);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('神仙3','男','00008',2);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('神仙4','女','00009',2);
INSERT INTO student (name,gender,stu_no,class_id) VALUES('神仙5','男','00010',2);

運行上述SQL打開表:


在這些數據的前提下,有個需求,查詢所有學生信息以及每個學生所在的班級。這個需求可以用左聯實現:

SELECT s.id sid, s.name sname, s.gender sgender,s.stu_no sno,c.name cname FROM student s LEFT JOIN class c ON s.class_id = c.id;


結果就是這樣。
這條sql看起來這么長是有點恐怖,其實也很簡單,左聯的基本語法是:

  • SELECT 要查詢的內容 FROM 表1 LEFT JOIN 表2 ON 聯表條件。

在上述的表結構中設計中,我們可以把student表中的class_i當做是一個外鍵(當然,這并不是mysql上真正的外鍵),這個字段主要是用來存放用戶所在班級class的id,這樣就相當于將班級和學生關聯起來了,這種表與表之間關系叫做一對多,班級是一的一方,學生是多的一方。

通俗來講,聯表就是把兩張表通過特定的字段進行關聯然后合并成一張大表。其大概過程是這樣:

上圖僅顯示了妖怪班的查詢結果,其查詢語句應該是:
SELECT c.name, s.name FROM class c LEFT JOIN student s ON c.id = s.class_id WHERE c.name=’妖怪班’;

  • 左聯查詢的定義:首先取出表1(LEFT JOIN左邊的表格)中所有數據和表2(LEFT JOIN右邊的表格)中與表1所取數據相對應的所有數據,合成新的表格,沒有數據則顯示NULL。表1的數據為主,并顯示在合成表格的左邊。
  • 如上面合成表,左聯是可以帶上條件查詢的,更多例子比如:
    SELECT s.id sid, s.name sname, s.gender sgender,s.stu_no sno,c.name cname FROM student s LEFT JOIN class c ON s.class_id = c.id WHERE s.gender = '男';
    
    SELECT s.id sid, s.name sname, s.gender sgender,s.stu_no sno,c.name cname FROM student s LEFT JOIN class c ON s.class_id = c.id WHERE s.gender = '男' AND c.name = '神仙班';
    
    當然也可以在此用上前面的排序、分組,以及以后要學到的分頁等等。
分享到:
1條評論
Ctrl+Enter
作者

大妖怪

大妖怪

APP:1 帖子:76 回復:200 積分:7517

已加入社區[2952]天

夢里巷口,可有你倚門回首

作者詳情》
Top