詳解MySQL的多表連線查詢

2021-08-28 02:19:40 字數 2113 閱讀 9227

在這裡我準備了乙個簡單的省市縣的mysql資料庫,進行簡單的案例分析

create table province(

pro_id int primary key,

pro_name varchar(10)

);insert into province values(1,'廣東省'),(2,'廣西省'),(3,'河南省'),(4,'河北省');

create table city(

city_id int primary key,

pro_id int references province(pro_id),

city_name varchar(10)

);insert into city values(1,1,'珠海市'),(2,1,'廣州市'),

(3,3,'鄭州市'),(4,3,'洛陽市');

create table district(

dis_id int primary key,

city_id int references city(city_id),

dis_name varchar(10)

);insert into district values(1,1,'斗門區'),(2,1,'金灣區'),(3,1,'香洲區'),

(4,3,'二七區'),(5,3,'中原區'),(6,3,'新鄭區'),(7,3,'鞏義區'),

(8,5,'天河區'),(9,5,'白雲區');

select p.pro_name,c.city_name,d.dis_name from province p 

inner join city c on p.pro_id = c.pro_id

inner join district d on d.city_id = c.city_id;

結果:

select p.pro_name,c.city_name,d.dis_name from province p 

left join city c on p.pro_id = c.pro_id

left join district d on d.city_id = c.city_id;

結果

select p.pro_name,c.city_name,d.dis_name from province p 

right join city c on p.pro_id = c.pro_id

right join district d on d.city_id = c.city_id;

結果

ps:mysql不支援全連線(full join)和交叉連線(across join)

select p.pro_name,c.city_name,d.dis_name from province p 

inner join city c on p.pro_id = c.pro_id

inner join district d on d.city_id = c.city_id

union

select p.pro_name,c.city_name,null from province p

inner join city c on p.pro_id = c.pro_id;

結果

select p.pro_name,c.city_name,d.dis_name from province p 

inner join city c on p.pro_id = c.pro_id

inner join district d on d.city_id = c.city_id

union all

select p.pro_name,c.city_name,d.dis_name from province p

inner join city c on p.pro_id = c.pro_id

inner join district d on d.city_id = c.city_id;

結果

mysql多表連線查詢

查詢姓名 部門名 地點 select emp.ename dept.dname,dept.loc from emp,dept where emp.deptno emp.deptno 簡化select ename dname,loc,emp.deptno from emp,dept where emp...

MySQL 連線查詢(多表查詢)

mysql 連線查詢 多表查詢 連線就是指兩個或2個以上的表 資料來源 連線起來成為乙個資料來源 實際上,兩個表的完全的連線是這樣的乙個過程 左邊的表的每一行,跟右邊的表的每一行,兩兩互相 橫向對接 後所得到的所有資料行的結果。注意 連線之後,並非形成了乙個新的資料表,而只是一種 記憶體形態 fro...

mysql多表連線查詢過程 mysql多表連線查詢

二 內連線 join 或 inner join sql語句 select from student inner join course on student.id course.id 執行結果 inner join 是比較運算子,只返回符合條件的行。此時相當於 select from student...