關於SQL92與SQL99語法的區別與PK

2021-10-21 06:10:05 字數 1442 閱讀 2894

sql分類

1.笛卡爾積 (表乘表)

2.等值連線 表的連線條件使用「=」

3.非等值連線 表的連線條件使用「>、>=、

4.自連線 自己連線自己

5.外連線

1.左外連線,「(+)」在等號右邊

2.右外連線,「(+)」在等號左邊

3.「(+)」在哪一邊的列,該錶就補充null

sql分類

1.cross join 交叉連線 (笛卡爾積) ,不需要on關鍵字

2.natural join 自然連線 (找兩個表中相同的列,進行等值匹配),不需要on關鍵字

3.inner join 內連線

1)必須有on關鍵字,on表示連線條件

2)inner關鍵字可以省略

4.outer join 外連線,outer關鍵字可以省略

一、單錶查詢:根據where條件過濾表中的記錄,形成中間表(這個中間表對使用者是不可見的);然後根據select的選擇列選擇相應的列進行返回最終結果。

第二、兩表連線查詢:對兩表求積(笛卡爾積)並用on條件和連線連線型別進行過濾形成中間表;然後根據where條件過濾中間表的記錄,並根據select指定的列返回查詢結果。

第三、多表連線查詢:先對第乙個和第二個表按照兩表連線做查詢,然後用查詢結果和第三個表做連線查詢,以此類推,直到所有的表都連線上為止,最終形成乙個中間的結果表,然後根據where條件過濾中間表的記錄,並根據select指定的列返回查詢結果。

理解sql查詢的過程是進行sql優化的理論依據。

on條件:是過濾兩個鏈結表笛卡爾積形成中間表的約束條件。

where條件:在有on條件的select語句中是過濾中間表的約束條件。在沒有on的單錶查詢中,是限制物理表或者中間查詢結果返回記錄的約束。在兩表或多表連線中是限制連線形成最終中間表的返回結果的約束。

從這裡可以看出,將where條件移入on後面是不恰當的。推薦的做法是:

on只進行連線操作,where只過濾中間表的記錄。

連線查詢是sql查詢的核心,連線查詢的連線型別選擇依據實際需求。如果選擇不當,非但不能提高查詢效率,反而會帶來一些邏輯錯誤或者效能低下。下面總結一下兩表連線查詢選擇方式的依據:

1、 查兩表關聯列相等的資料用內連線。

2、 col_l是col_r的子集時用右外連線。

3、 col_r是col_l的子集時用左外連線。

4、 col_r和col_l彼此有交集但彼此互不為子集時候用全外。

5、 求差操作的時候用聯合查詢。

sql92語法,sql99語法,連線查詢

連線查詢的分類 按年代分為sql192標準僅僅支援內連線,sql199標準支援內連線,左外連線,右外連線,交叉連線 按功能分為內連線,外連線,交叉連線 sql92標準 內連線包括1.等值連線 select name,boyname form boys,beauty where beauty.boyf...

MySQL連線查詢 sql92語法

含義 當查詢結果涉及到多個表的字段時,需要使用連線查詢 分類 按年代分 sql92標準 sql99標準 通常使用sql99標準 按功能分 內連線 等值連線 非等值連線 自連線 外連線 左外連線 右外連線 全外連線 交叉連線 等值連線特點 1 多表等值連線的結果為多表的交集部分 2 n表連線,至少需要...

oracle筆記三(Sql99語法)

1.交叉連線cross join 相當於笛卡爾積效果 select e.ename,d.dname from emp e cross join dept d 2.自然連線 natural join select e.ename,d.dname from emp e natural join dept...