1、首先我們打開Workbench創一個建數據庫(這里都使用閃電1執行選定命令行)。
創新互聯是一家業務范圍包括IDC托管業務,虛擬空間、主機租用、主機托管,四川、重慶、廣東電信服務器租用,四川服務器托管,成都網通服務器托管,成都服務器租用,業務范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區的互聯網數據服務公司。
2、先創建Student學生表。
3、再創建course課程表。
4、然后就可以創建sc關聯表了我們先寫上Student的主鍵和course的主鍵,并寫上sc自己的屬性成績。
5、再寫上主鍵約束,以及把sc表的學號屬性和Studnet的學號關聯、課程號屬性和course的課程號關聯。
6、再次運行就可以看到我們成功創建了學生表和課程表的關聯表sc。
方法和操作步驟如下:
1、首先,創建一個測試表,如下圖所示,然后進入下一步。
2、其次,插入測試數據,如下圖所示,然后進入下一步。
3、接著,完成上述步驟后,查詢表中的數據,“select t.* from test_tbl2 t?”,如下圖所示,然后進入下一步。
4、最后,完成上述步驟后,編寫sql,兩個表通過pid與id關聯, “select t1.*, t2.* from test_tbl1 t1 join test_tbl2 t2 on t1.p_id = t2.id;”,如下圖所示。這樣,問題就解決了。
來自MySQL的學習筆記,寫的不對的地方大家多多指教哦
什么是外鍵?
假設有 2 個表,分別是表 A 和表 B,它們通過一個公共字段“id”發生關聯關系,我們把這個關聯關系叫做 R。如果“id”在表 A 中是主鍵,那么,表 A 就是這個關系 R 中的主表。相應的,表 B 就是這個關系中的從表,表 B 中的“id”,就是表 B 用來引用表 A 中數據的,叫外鍵。所以,外鍵就是從表中用來引用主表中數據的那個公共字段。
語法結構:
在創建表時添加外鍵約束:
在修改表時定義外鍵約束:
例子1:創建表時添加外鍵約束
首先創建主表:importhead
創建從表:test_mysql.importdetails
查詢外鍵約束的相關信息:
查詢結果為:
例子2:修改表時定義外鍵約束
修改表時定義從表test_mysql.importdetails的外鍵約束
刪除外鍵約束使用DROP,語法結構為:
例子:刪除從表test_mysql.importdetails的外鍵約束
在 MySQL 中,有 2 種類型的連接,分別是內連接(INNER JOIN)和外連接(OUTER JOIN)。
在 MySQL 里面,關鍵字 JOIN、INNER JOIN、CROSS JOIN 的含義是一樣的,都表示內連接。我們可以通過 JOIN 把兩個表關聯起來,來查詢兩個表中的數據。
例子:有一張銷售表,如下圖:
有一張會員信息表,如下圖:
通過內連接,查詢會員的銷售記錄:
運行語句,結果如下:
根據上面的結果,其實可以得知:內連接查詢到結果集為兩個表的交集部分。
跟內連接只返回符合連接條件的記錄不同的是,外連接還可以返回表中的所有記錄,它包括兩類,分別是左連接和右連接。
例子1:左外連接
如果需要查詢所有銷售記錄,則可以使用左外連接
運行語句,結果為:
從上面的結果可以得知,LEFT JOIN左邊的表會返回全部記錄,而右邊的表只返回符合連接條件的記錄
例子2:右外連接:
運行語句,結果為:
從上面的結果可以得知,RIGHT JOIN右邊的表會返回全部記錄,而左邊的表只返回符合連接條件的記錄
mysql
兩個表中的信息關聯起來使用方法:
1、創建主表:
create
table
UserInfo(
UserID
int
identity(1,1)
primary
key,
--遞增主鍵
UserAccounts
varchar(20),
UserName
varchar(20),
UserPwd
varchar(10));
2、創建附表(含外鍵)
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;
left join
join
主外鍵是兩種對表的約束。
例如:
學生表student(學號(id),姓名(name),性別(sex))
表內有:1,aa,女
課程表subject(課程編號(id),課程名(name))
表內有:1,語文
成績表grade(成績編號(id),學號(stu_id),課程號(sub_id),成績(grade))
表內有:1,1,1,90
成績表的學號就是學生表的學號相對應,并且為學生表的主鍵,這樣就稱成績表中的學號是學生表的外鍵,同理,成績表中的課程號是課程表的外鍵。
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) 子句用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。連接的結果可以在邏輯上看作是由SELECT語句指定的列組成的新表。
左連接與右連接的左右指的是以兩張表中的哪一張為基準,它們都是外連接。外連接就好像是為非基準表添加了一行全為空值的萬能行,用來與基準表中找不到匹配的行進行匹配。
假設兩個沒有空值的表進行左連接,左表是基準表,左表的所有行都出現在結果中,右表則可能因為無法與基準表匹配而出現是空值的字段。
不同的 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
第一:內聯(inner join)
如果想把用戶信息、積分、等級都列出來,那么一般會這樣寫:
select * from T1, T3 where T1.userid = T3.userid
(其實這樣的結果等同于select * from T1 inner join T3 on T1.userid=T3.userid )。
把兩個表中都存在userid的行拼成一行(即內聯),但后者的效率會比前者高很多,建議用后者(內聯)的寫法。
SQL語句:
select * from T1 inner join T2 on T1.userid = T2.userid
運行結果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
第二:左聯(left outer join)
顯示左表T1中的所有行,并把右表T2中符合條件加到左表T1中;
右表T2中不符合條件,就不用加入結果表中,并且NULL表示。
SQL語句:
select * from T1 left outer join T2 on T1.userid = T2.userid
運行結果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
2 owen owenpwd NULL NULL NULL
第三:右聯(right outer join)。
顯示右表T2中的所有行,并把左表T1中符合條件加到右表T2中;
左表T1中不符合條件,就不用加入結果表中,并且NULL表示。
SQL語句:
select * from T1 right outer join T2 on T1.userid = T2.userid
運行結果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
NULL NULL NULL 3 50 6
第四:全聯(full outer join)
顯示左表T1、右表T2兩邊中的所有行,即把左聯結果表 + 右聯結果表組合在一起,然后過濾掉重復的。
SQL語句:
select * from T1 full outer join T2 on T1.userid = T2.userid
文章標題:mysql怎么關聯,mysql怎么關聯兩個表
文章網址:http://vcdvsql.cn/article26/dsdjocg.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、營銷型網站建設、用戶體驗、App開發、微信小程序、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯