目錄
一、 連接查詢 對多個表進(jìn)行查詢
1.0 數(shù)據(jù)準(zhǔn)備
1.1 連接查詢
1.2 內(nèi)連接?INNER JOIN
1.3 左連接?LEFT JOIN
1.4 右連接?RIGHT JOIN
1.5 FULL OUTER JOIN
1.6 自連接查詢
1.7 子查詢-嵌套在查詢中
一、 連接查詢 對多個表進(jìn)行查詢
1.0 數(shù)據(jù)準(zhǔn)備
在之前的文章當(dāng)中,我們在 base_1 當(dāng)中有了一個 stu 表,記錄的是學(xué)生的name age height等信息
第一步,我們再創(chuàng)建一個班級表 class?
create table class(id int unsigned primary key not null auto_increment,name varchar(20) not null);
目前的班級表:
?
?
第二步,在班級表中插入數(shù)據(jù)
insert into class(name) values('class_1'),('class_2'),('class_3');
第三步,給 stu 表插入個字段classID,表示所在的班級
alter table stu add classID int unsigned;
第四步,給學(xué)生分班 使用 where
目前 21 個學(xué)生,3個班級,那就 7 人一個班級
mysql> update stu set classID=1 where id in(1,2,3,4,5,6,7);
mysql> update stu set classID=2 where id in(8,9,10,11,12,13,14);
mysql> update stu set classID=3 where id in(15,16,17,18,19,20,21);
?分班結(jié)果:
?
ok 到此,前期的數(shù)據(jù)準(zhǔn)備就完成了!
1.1 連接查詢
?當(dāng)中 on? 的作用是什么?
在 MySQL 中,ON 是連接查詢中的一個關(guān)鍵字,用于指定連接條件,它的作用是將兩個或多個表連接起來并返回匹配的數(shù)據(jù)行。
在連接查詢中,使用 ON 關(guān)鍵字可以指定兩個表之間的連接條件,這個條件用于匹配兩個表中的數(shù)據(jù)行。
例如:
select * from stu inner join class on stu.classID = class.id;
這個查詢語句表示將 stu和 class表連接起來,并且將它們之間的連接條件設(shè)置為 stu的 classID?字段等于 class的 id 字段。
?
MySQL連接查詢是一種用于連接多個表并獲取相關(guān)數(shù)據(jù)的查詢方法。
它將兩個或多個表中的行結(jié)合起來,根據(jù)兩個表之間的共同列或鍵(如主鍵和外鍵)進(jìn)行匹配,并返回匹配的結(jié)果。
連接查詢可以通過 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL OUTER JOIN 的方式執(zhí)行。
1.2 內(nèi)連接?INNER JOIN
上面就是內(nèi)連接的示例!
通俗一點就是:交集!
?
1.3 左連接?LEFT JOIN
左 和 右的區(qū)分,看在 join的左邊還是右邊
LEFT JOIN 返回左表中所有的行和右表中匹配的行,如果右表中沒有匹配的行,則返回 NULL 值;
?
1.4 右連接?RIGHT JOIN
RIGHT JOIN 返回右表中所有的行和左表中匹配的行,如果左表中沒有匹配的行,則返回 NULL 值;
?
1.5 FULL OUTER JOIN
FULL OUTER JOIN 返回左表和右表中所有的行,無論它們是否匹配。
?
1.6 自連接查詢
MySQL 自連接查詢是指在同一張表中進(jìn)行連接查詢。
自連接可以用來解決一些需要用到兩個相同表的情況。
例如
我們有一個員工表,其中記錄了員工的姓名、工資和上級姓名。
如果要查詢每個員工的上級姓名和上級的工資,就需要使用自連接查詢。
可以使用以下 SQL 語句進(jìn)行自連接查詢:
SELECT e.name, e.salary, m.name AS manager_name, m.salary AS manager_salary
FROM employee e
LEFT JOIN employee m ON e.manager_id = m.id;
其中,employee
是表名,e
和 m
是表的別名,id
是員工表的主鍵,manager_id
是上級員工的 ID。
這個查詢語句將 employee
表自己連接了一次,使用 LEFT JOIN
連接,將員工表 e
中的 manager_id
與同一張表中上級員工的 id
進(jìn)行匹配,然后將上級員工的姓名和工資返回。
1.7 子查詢-嵌套在查詢中
MySQL子查詢是一個嵌套在另一個查詢中的查詢。
子查詢可以用作 SELECT、FROM、WHERE 子句中的任何一部分來生成結(jié)果集合。
一個基本的子查詢語法如下:
SELECT column1, column2, column3, ...
FROM table1
WHERE column_name (?SELECT column_name FROM table_name WHERE condition? ) ;
?
子查詢會首先執(zhí)行
在上面的語句中,子查詢 (SELECT column_name FROM table_name WHERE condition)
會首先執(zhí)行,然后它的結(jié)果可以用于 WHERE 子句中的過濾條件。
另一個常見的子查詢使用方法是嵌套在 JOIN 子句中,用于連接表與執(zhí)行過濾操作。下面是一個示例:
SELECT *
FROM table1
JOIN (SELECT id, column2 FROM table2 WHERE condition) AS t2
ON table1.id = t2.id;
在上面的語句中,子查詢 (SELECT id, column2 FROM table2 WHERE condition)
被賦予別名 t2
并與 table1
表連接,結(jié)果集將包含兩個表中的所有列。
需要注意的是,如果子查詢返回大量的結(jié)果,可能會導(dǎo)致性能下降文章來源:http://www.zghlxwxcb.cn/news/detail-544037.html
因此,盡量保持子查詢返回的結(jié)果集較小,以提高查詢性能。文章來源地址http://www.zghlxwxcb.cn/news/detail-544037.html
到了這里,關(guān)于Mysql數(shù)據(jù)庫(五) Mysql命令行客戶端:內(nèi)連接查詢、左連接查詢、右連接查詢、自連接查詢、子查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!