MySQL多表查詢

2021-10-07 22:12:25 字數 2217 閱讀 9429

先建立表然後加入資料

create table user_info(

id int(2) primary key,

user_name varchar(12) unique,

password varchar(15) not null,

real_name varchar(8) not null,

age int(3)

); create table address(

id int(2) primary key,

user_id int(2) not null,

real_name varchar(8),

mobile char(11),

address varchar(150)

); insert into user_info values(1,'淺唱灬幸福','8912@321','王曉明',12);

insert into address values(1,1,'王小明','15516472282','山西太原');

insert into address values(2,1,'王鑫','18404905139','山西大同');

insert into address values(3,1,'任建','15333021730','山西晉城');

insert into user_info values(2,'ぅ浮生若夢〤','56701wz','王楠',36);

insert into address values(4,2,'王楠','15010303314','北京海淀');

insert into address values(5,2,'趙婕','18435224278','山西長治');

insert into user_info values(3,'街角の風鈴','27w4921','李曉飛',9);

insert into address values(6,6,'劉倩','13159775555','吉林長春');

多個表關聯查詢需要依據多表之間列關係將其連線起來,這種連線方式分為兩大類:內連線

(inner join)

、外連線

(outer join)

內連線:在連線條件中使用等號

(=)運算子比較被連線列的列值是否相等,如下面的sql語句

select ui.*,addr.* from user_info ui,address addr where ui.id = addr.user_id
執行結果如下

得到的是他們的資料的交集,即id相等的資料

外連線:如果依據多表之間列關係進行外連線,查詢結果集不僅僅包括滿足

on連線條件的資料行

,還包括不滿足

on連線條件的資料行。 外連線分為左外連線和右外連線

左外連線返回的結果集中不僅包含表之間滿足

on連線條件的全部資料行,還包含左表(「

left [outer] join」

關鍵字左邊的表)不滿足

on連線條件的資料行,如執行下面sql語句:

select ui.*,addr.* 

from user_info ui

left join address addr on ui.id=addr.user_id

輸出結果如下

右外鏈結返回的結果集中不僅包含表之間滿足

on連線條件的全部資料行,還包含右表(即「

right [outer] join」

關鍵字右邊的表)不滿足

on連線條件的資料行,如執行下面sql語句:

select ui.*,addr.* 

from user_info ui

right join address addr on ui.id=addr.user_id

輸出結果如下:

根據left和right關鍵字:left-查詢出該關鍵字左邊表的所有資料;right-查詢出該關鍵字右邊表的所有資料;

mysql多表 MySQL 多表查詢

多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...

mysql多表查詢方式 MySQL多表查詢方式問題

你的 sql 沒有用到任何索引,對 a b 兩個表都是全表掃瞄,在資料量小的時候是沒有問題的,但是如果資料量超過 100 萬,效能問題就會突顯出來。這裡不清楚你的 created at 欄位是什麼型別,不過從你的 date format created at,y m d 看來,應該是 datetim...

mysql 多表查詢or MySQL 多表查詢

前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...