Mysql資料庫連線查詢

2021-08-17 20:44:12 字數 2951 閱讀 4412

連線查詢:將多張表(可以大於等於2)進行記錄的連線(按照某個指定的條件進行資料的拼接):最終結果:記錄數可能有變化,字段數一定會增加(至少是兩張表的合併)

連線查詢的意義:在使用者檢視資料的時候,需要顯示的資料來自多張表。

連線查詢:join ,使用方式:左表 join 右表

左表:join關鍵字左邊的表;

右表:join關鍵字右邊的表;7

連線查詢的分類:

sql中將連線查詢分為4類:內連線,外連線,自然連線,交叉連線

交叉連線:

交叉連線:cross join,從一張表中迴圈取出每一條記錄,每條記錄都去另外一張表進行匹配;匹配一定保留(沒有條件的匹配),而連線本身欄位就會增加(保留),最終形成的結果叫做:笛卡爾積。

基本語法:左表 cross join 右表;*****from 左表,右表;

· -- 交叉連線

select * from my_student cross join my_class;

笛卡爾積沒有意義:應該盡量避免(交叉連線沒用)

交叉連線存在的意義:保證連線這種結構的完整性

內連線

內連線:【inner】 join,從左表中取出每一條記錄,去右表中與所有的記錄進行匹配;

匹配繼續是某個條件在座標中與右表中相同最終才會保留結果,否則不保留。

基本語法

左表 【inner】join 右表 on 左表.欄位 = 右表.欄位;

on表示連線條件:條件字段 就是代表相同的業務含義(如my_student.c_id和my_class.id表示的是同乙個東西)

-- 內連線

select * from my_student inner join my_class on my_student.c_id=my_class.id;

select * from my_student inner join my_class on c_id=my_class.id;

select * from my_student inner join my_class on c_id=id; -- 錯誤

(直接寫字段必須要保證欄位的唯一性,如果這個字段兩個表都有,那麼就會發生錯誤)

字段別名以及表別名的使用:在查詢資料的時候,不同表有同名字段,這個時候需要加上表名才能區分,而表名太長,通常可以使用別名

-- 欄位和表別名

select s.*,c.name as c_name,c.room -- 字段別名

from my_student as s inner join my_class as c -- 表別名

on s.c_id=c.id;

內連線可以沒有連線條件(沒有on之後的東西),這個時候系統會保留所有的結果(笛卡爾積)

-- 欄位和表別名

select s.*,c.name as c_name,c.room

from my_student as s inner join my_class as c ;

內連線還可以使用where代替on關鍵字(但是一般不用where,where沒有on的效率高)

-- where代表on

select s.*,c.name as c_name,c.room

from my_student as s inner join my_class as c

where s.c_id=c.id;

外連線

外連線 outer join,以某張表為 主,取出裡面的所有記錄,然後每條與另外一張表進行連線,不管能不能匹配上條件,最終都會保留:能匹配,正確保留;不能匹配,另外那張表的字段都置空null

外連線分為兩種:是以某張表為主,所以有主表

left join:左外連線(左連線),以左表為主表

right join :右外連線(右連線),以右表為主表

基本語法:左表 left/right join 右表 on 左表. 字段=右表. 字段;

-- 左連線

select s.*,c.name as c_name,c.room from

my_student as s left join my_class as c -- 左表為主表:最終記錄數至少不少於左表已有的記錄數

on s.c_id=c.id;

-- 右連線

select s.*,c.name as c_name,c.room from

my_student as s right join my_class as c -- 右表為主表:最終記錄數至少不少於右表已有的記錄數

on s.c_id=c.id;

雖然左連線和右連線有主表差異,但是顯示的結果永遠左表的資料在左邊,右表的資料在右邊

左連線和右連線可以互轉

自然連線

自然連線:natural join,自然連線就是自動匹配連線條件:系統以欄位名字作為匹配模式(同名字段就作為條件,多個同名字段都作為條件)

自然條件:可以分為自然內連線和自然外連線

自然內連線:左表 natural join 右表;

-- 自然內連線

select * from my_student natural join my_class ;

自然連線自動使用同名字段作為連線條件,連線之後會合併同名條件。

自然外連線:左表 natural left/right 右表

-- 自然左外連線

select * from my_student natural left join my_class;

其實,內連線和外連線都可以模擬自然連線:使用同名字段,合併字段。

左表 left/right/inner join 右表 using(欄位名); -- 使用同名字段,自動合併字段

-- 外連線模擬自然外連線

select * from my_student left join my_class using(id);

golang連線mysql資料庫查詢

確認位址是否有效 err db.ping if err nil var id int name string 將查詢傳送到資料庫。像往常一樣,我們檢查錯誤 其次,只要有乙個開放的結果集 由行表示 底層連線就會繁忙,不能用於任何其他查詢。這意味著它在連線池中不可用。如果您使用row next 迭代所有...

PHP連線 查詢MySQL資料庫

conndb.php link mysqli connect localhost root password database 連線資料庫 mysqli select db link,database 選擇資料庫 mysqli query link,set name gb2312 index.php...

MySQL資料庫 多表連線查詢

多表連線查詢 注意 使用連線技術建議將表經行重新命名!explain 檢索連線是否達標 內連線 語法1 from 表1 inner join 表2 on 主鍵字段 外來鍵字段 where 條件表示式 語法2 from 表1,表2 where 主鍵字段 外來鍵字段 and 條件表示式 三個表連線 fr...