1、內連線的安全性
(1) inner join 是ansi sql-92 語法、等值聯接是ansi sql-89 的語法 ,兩者已相同方式解釋、在效能上沒有差別
(2)但是強烈建議使用ansi sql - 92 聯接語法、因為它更安全、 當忘記寫聯接條件、sql-92 語法會報錯,也就是沒有on 會報錯、這種安全實際是編碼習慣導致的
2、包含缺失值
2.1 需求
查詢tsql2102庫中、order表,要求20060101~20081231每天都有資料輸出、對於沒有包含訂單的日期,以null 標記作為訂單屬性佔位符輸出
2.2 解決思路
(1)建立數字輔助表dbo.nums , 具有n 的列,將其填充整數 123.....,使用該錶生成範圍內所有日期的序列
selectdateadd(day,n-
1,'20060101
') as
orderdate
from
dbo.nums
where n <=
datediff(day, '
20060101
', '
20081231
')+1
order
by orderdate;
(2) 通過nums 和 order 做左外連線即可
3.外部連線的邏輯順序
(1)在單錶查詢中 from 、where 後面的子句具有「同時操作」的特性,但是在外聯接中,from 後面的表連線運算子,按從左往右的邏輯順序計算
(2)由於邏輯順序的存在,在外聯結多張表是要考慮到拿null 去做比較的情況、null 做比較結果一定是unkonwn, 會被on直接過濾掉
4、外連線使用count聚合引發的乙個bug
(1) 使用外連線,若果直接使用count(*)的話,會將null也計算其中
(2) 但是如果count(col) ,且col 是外部列就不會將null的記錄計算進來
sqlserver中聯接查詢
聯接查詢 當要同時顯示多個表資料的情況下 外聯接左外聯接 右外聯接 左外聯接 改變表出現的順序有影響,因 為前面出現的是左表 左外聯接 第1種說法 第1步顯示內聯接所有資料 第2步看左表中是否有沒匹配的,有的話原樣列出,右表部分用null補齊 第2種說法 第1步列出左表所有資料 第2步右表與之匹配的...
SQL Server資料查詢之聯接查詢
四 聯接查詢 1.聯接 1.1內聯接 inner join 1.2外聯接 outer join 1.2.1左聯接 left join 1.2.2右聯接 right join 1.3交叉聯接 cross join 2.內聯接與自聯接 內聯接 作用於兩個表,一般通過兩個表中相同的字段的關係 建立聯絡 自...
SQL聯接查詢
舉例有兩表資訊如下 以上兩種查詢方式等價,如下圖所示內聯接inner join只取兩表存在關聯關係的資料 注 inner join與join相同,inner可省略不寫。查詢結果如下 如下圖所示,左聯接 左外聯接 左表 user表 資料將會完全展示,右表 dept表 只展示與左表存在關聯關係的資料。注...