Inner Join (Join) inner join:內部結合,兩張表都有的數據才會顯示,可以理解為「有效連結」(兩表的交集)。 (inner join 可以省略 inner,只寫join) --結合販賣資料與商品清單,並取得處理日、商品ID、商品名稱的列表 select T2.處理日, T1.商品ID, T1.商品名稱 from [商品清單] as T1 join [販賣...
[SQL] IS NOT NULL 的使用方式
Null概念 在SQL當中,NULL 代表「未定」、「不明」。 要與null來比較時,要用IS這個比較運算子,不能使用=、!=、<>等作比較,不然將無法得到正確的結果。 條件為「不是Null」,只要在Null前面加上一個否定的邏輯運算子Not即可。 範例 取得已設定販賣單價的商品名稱(販賣單價不為null的商品) --取得已設定販賣單價的商品名稱(販賣單價不為nu...
[SQL] 指定搜尋條件[LIKE(%、_)、特殊字元(Escape)、日期(Between And)、複數條件(AND、OR)]
指定搜尋條件 符合條件 LIKE(%、_) --取得商品名稱含有「電腦」的商品名稱 select [商品名稱] from [dbo].[商品清單] where [商品名稱] like '%電腦%' --取得商品名稱以「電腦」開頭的商品名稱 select [商品名稱] from [dbo].[商品清單] where [商品名稱] like '電腦%' --取得商品名稱以「電腦」結尾的商品...
[SQL] IS NULL 的使用方式
Null概念 在SQL當中,NULL 代表「未定」、「不明」。 要與null來比較時,要用IS這個比較運算子,不能使用=、!=、<>等作比較,不然將無法得到正確的結果。 範例 取得已設定販賣單價的商品名稱(販賣單價為null的商品) select [商品名稱] from [商品清單] where [販賣單價] is null 如果將 Where改成下面這樣,就無...
[SQL] NOT IN 的使用方式 (同等 Where Not ...)
IN可能存在的效能疑慮(效能差),可以使用EXISTS取代。 範例一 --取得負責人ID不是1、2、3的負責人姓名 select [負責人姓名] from [負責人清單] where [負責人ID] not in (1,2,3) 執行結果 負責人姓名 藤本 小林 伊藤 佐瀨 宇賀神 岡田 Where Not Not In與下面 where not敘述方式相同: sel...
[SQL] IN 的使用方式
IN可能存在的效能疑慮(效能差),可以使用EXISTS取代。 範例一 取得負責人ID為1、2、3的負責人姓名 --取得負責人ID為1、2、3的負責人姓名 select [負責人姓名] from [負責人清單] where [負責人ID] in (1,2,3) 執行結果 負責人姓名 鈴木 小野 齋藤 in所指定之括弧內的值為「符合其中任一數值」的意思,與使用or的意思是...
[SQL] 測試用Script
Table /* * 製作表單指令檔(SQL Server 版) * * 已確認可在SQL Server 2005 + Windows XP Service Pack 2中執行 */ -- 製作表單:商品清單 CREATE TABLE 商品清單 ( 商品ID NUMERIC NOT NULL, 商品名稱 VARCHAR(30) NOT NULL, ...
[SQL筆記] 預存程序(stored procedure) 二
模擬銀行業務 [SQL筆記] 預存程序(stored procedure) 一 寫SP輸入參數:@參數名 資料型態 寫SP輸出參數:@sum 資料型態 ouput,輸出參數後面加上ouput 調用輸出參數SP:exec proc_sp名稱 輸入參數的值,@sum output,輸出參數後面加上ouput floor(rand()*10)隨機數:sele...
[SQL筆記] 預存程序(stored procedure) 一
模擬銀行業務 預存程序(stored procedure) 跟函數概念很像,他們的本質區別在:函數特點是在SQL語句中被調用,而SP預存程序是可以由外面來調用,例如在C#、Java中調用。 建立SP:create proc proc_SP名稱 刪除SP:drop porc proc_SP名稱 調用SP:exec proc_SP名稱 SQL的SP返回值必須整數 語法...
[SQL筆記] Trigger 觸發程序(觸發器)
在開發過程中,最好不要有過多的觸發器,要謹慎使用,因為觸發器會有不同觸發的渲染效果,不停的觸發下去。 例如:假設我們做了一個觸發器,刪A自動刪B,但如果有人在B表也寫了一個觸發器,刪B自動刪C,又有一個人也寫了刪C自動刪D,這樣一系列的觸發,就會發生不好的事情,你刪了A表的一個數據,結果BCD表都被觸發了,BCD的數據也都被刪了,這樣就造成了數據的丟失了。業務邏輯可能本身只是希望A刪掉的同...