left join
創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10余年品質(zhì),值得信賴!
join
主外鍵是兩種對表的約束。
例如:
學生表student(學號(id),姓名(name),性別(sex))
表內(nèi)有:1,aa,女
課程表subject(課程編號(id),課程名(name))
表內(nèi)有:1,語文
成績表grade(成績編號(id),學號(stu_id),課程號(sub_id),成績(grade))
表內(nèi)有:1,1,1,90
成績表的學號就是學生表的學號相對應(yīng),并且為學生表的主鍵,這樣就稱成績表中的學號是學生表的外鍵,同理,成績表中的課程號是課程表的外鍵。
select * from ?student as s inner join subject as su on su.stu_id=s.id inner join grade as g on g.sub_id=su.id where 1.
擴展資料:
注意事項
SQL 連接(JOIN) 子句用于把來自兩個或多個表的行結(jié)合起來,基于這些表之間的共同字段。連接的結(jié)果可以在邏輯上看作是由SELECT語句指定的列組成的新表。
左連接與右連接的左右指的是以兩張表中的哪一張為基準,它們都是外連接。外連接就好像是為非基準表添加了一行全為空值的萬能行,用來與基準表中找不到匹配的行進行匹配。
假設(shè)兩個沒有空值的表進行左連接,左表是基準表,左表的所有行都出現(xiàn)在結(jié)果中,右表則可能因為無法與基準表匹配而出現(xiàn)是空值的字段。
不同的 SQL JOIN可以使用的不同的 SQL JOIN 類型:
INNER JOIN:如果表中有至少一個匹配,則返回行
LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN:只要其中一個表中存在匹配,則返回行(MySQL不支持FULL JOIN)
例如:
mysql select * from access_log;
+-----+---------+-------+------------+
| aid | site_id | count | date? ? ? ?|
+-----+---------+-------+------------+
|? ?1 |? ? ? ?1 |? ? 45 | 2016-05-10 |
|? ?2 |? ? ? ?3 |? ?100 | 2016-05-13 |
|? ?3 |? ? ? ?1 |? ?230 | 2016-05-14 |
|? ?4 |? ? ? ?2 |? ? 10 | 2016-05-14 |
|? ?5 |? ? ? ?5 |? ?205 | 2016-05-14 |
|? ?6 |? ? ? ?4 |? ? 13 | 2016-05-15 |
|? ?7 |? ? ? ?3 |? ?220 | 2016-05-15 |
|? ?8 |? ? ? ?5 |? ?545 | 2016-05-16 |
|? ?9 |? ? ? ?3 |? ?201 | 2016-05-17 |
+-----+---------+-------+------------+
9 rows in set
mysql 兩個表中的信息關(guān)聯(lián)起來使用方法:
1、創(chuàng)建主表:
create table UserInfo(
UserID int identity(1,1) primary key, --遞增主鍵
UserAccounts varchar(20),
UserName varchar(20),
UserPwd varchar(10));
2、創(chuàng)建附表(含外鍵)
create table News(
NewsID int identity(1,1) primarykey,
UserID int,
NewsTitle varchar( 50 ),
NewsRelease varchar( 200 ),
NewsReleaseTime datetime,
FOREIGN KEY (UserID) REFERENCES UserInfo(UserID)); --外鍵約束
如果附表已存在,但沒外鍵,可采用以下方法:
alter table profession add constraint fk_prov_id foreign key(prov_id) references province(prov_id) on update cascade on delete cascade;
當有兩張表,其中一張是中的某一個字段是另外一張表的外鍵的時候,這樣查詢數(shù)據(jù)的時候需要用到這兩張表的中的這個字段相同的數(shù)據(jù),這樣就可以用聯(lián)接查詢
來自MySQL的學習筆記,寫的不對的地方大家多多指教哦
什么是外鍵?
假設(shè)有 2 個表,分別是表 A 和表 B,它們通過一個公共字段“id”發(fā)生關(guān)聯(lián)關(guān)系,我們把這個關(guān)聯(lián)關(guān)系叫做 R。如果“id”在表 A 中是主鍵,那么,表 A 就是這個關(guān)系 R 中的主表。相應(yīng)的,表 B 就是這個關(guān)系中的從表,表 B 中的“id”,就是表 B 用來引用表 A 中數(shù)據(jù)的,叫外鍵。所以,外鍵就是從表中用來引用主表中數(shù)據(jù)的那個公共字段。
語法結(jié)構(gòu):
在創(chuàng)建表時添加外鍵約束:
在修改表時定義外鍵約束:
例子1:創(chuàng)建表時添加外鍵約束
首先創(chuàng)建主表:importhead
創(chuàng)建從表:test_mysql.importdetails
查詢外鍵約束的相關(guān)信息:
查詢結(jié)果為:
例子2:修改表時定義外鍵約束
修改表時定義從表test_mysql.importdetails的外鍵約束
刪除外鍵約束使用DROP,語法結(jié)構(gòu)為:
例子:刪除從表test_mysql.importdetails的外鍵約束
在 MySQL 中,有 2 種類型的連接,分別是內(nèi)連接(INNER JOIN)和外連接(OUTER JOIN)。
在 MySQL 里面,關(guān)鍵字 JOIN、INNER JOIN、CROSS JOIN 的含義是一樣的,都表示內(nèi)連接。我們可以通過 JOIN 把兩個表關(guān)聯(lián)起來,來查詢兩個表中的數(shù)據(jù)。
例子:有一張銷售表,如下圖:
有一張會員信息表,如下圖:
通過內(nèi)連接,查詢會員的銷售記錄:
運行語句,結(jié)果如下:
根據(jù)上面的結(jié)果,其實可以得知:內(nèi)連接查詢到結(jié)果集為兩個表的交集部分。
跟內(nèi)連接只返回符合連接條件的記錄不同的是,外連接還可以返回表中的所有記錄,它包括兩類,分別是左連接和右連接。
例子1:左外連接
如果需要查詢所有銷售記錄,則可以使用左外連接
運行語句,結(jié)果為:
從上面的結(jié)果可以得知,LEFT JOIN左邊的表會返回全部記錄,而右邊的表只返回符合連接條件的記錄
例子2:右外連接:
運行語句,結(jié)果為:
從上面的結(jié)果可以得知,RIGHT JOIN右邊的表會返回全部記錄,而左邊的表只返回符合連接條件的記錄