SQL Sever 資料庫視訊 (四)
內連線:
是將兩個表中符合條件的共同的行相連線起來;消除與另外一個表的任何不匹配的行,而外連線會返回FROM自居中提到的至少一個表或檢視的所行。
SELECT select list (查詢目標列)
FROM table1 INNER JOIN table2 [ON join_conditions] (ON後跟連線條件)
[WHERE search_conditions]
[ORDER BY ORDER_expression]
左外連線:
外連線參與連線的表中有主從之分,以主表的每行資料去匹配從表中的資料化,如果符合連線條件,則直接返回到查詢結果中去; 加入主表的的行在從表中沒有找到所匹配的行,主表的行依然保留,並返回到查詢結果中,相應的從表的行中被天上空值後也返回到查詢結果中去。
LEFT OUTER join (關鍵語句)
右外連線:
RIGHT OUTER join (關鍵語句)
全連線:
FULL OUTER jion (關鍵語句)
交叉連線:
SELESCT select_list
FROM table1 CROSS JOIN table2 -- CROSS JION 關鍵字
[WHERE search_conditions]
[OPDER BY order_expression]
自連線:
在同一個表上進行多表連線
聯合查詢:
就是將多個查詢結果合併到一個結果集中。
語法格式:
SELECT selece_list
FROM table_source
[WHERE search_conditions]
{UNION [ALL] -- 關鍵字兩查詢並和到一起 如果使用ALL就會把重複的部分給儲存
SELECT select_source
[WHERE search_conditions]}
[ORDER BY order_expression]
使用UNION查詢時,連線的兩個結果集必須在目標列表中有相同數目的表示式,且資料內容儘量保持一致。
Transact - SQL 概述
是SQL 的語言增強版本,與許多ANSISLQ標準相容,而且在標準基礎上還進行了許多擴充套件。 Transact - SQL 程式碼已成為SQL Server的核心。 Transact - SQL 在關係資料庫關係系統中是i先資料的檢索,操縱和新增功能。
可以用來建立,維護,保護資料庫物件,並且可以操作物件的資料,所以Transact - SQL語言是一種完整的語言。
分類: (1) 資料定義語言
(2) 資料操縱語言
(3) 資料控制語言
其他: (1)事務管理語言
(2) 流程控制語言
(3) 附加的語言元素
運算子:
字串函式:
宣告變數:
declare @str narchar(50)
set @str = 'hello word !'
print ascii (str) (來獲取第一個母:h)
declare @str narchar(50)
set @str = 'hello word !'
print left (@str,5) -- 使用left函式返回結果就是 “hello”
declare @str narchar(50)
set @str = 'hello word !'
print substring (@str,7,11) -- substring -- 擷取中間值 需要三個引數1.變數 2.起始位置 3.結束位置
字串函式使用示例:
1.CHARINDEX () -- 返回字串中某個指定的字串出現的開始位置。
CHARINDEX (<'substring_expression'>, <expression>)
其中'substring_expression 是所要查詢的字元表示式,expression 可為字串也可為列名錶達式。如果沒有發現字串,則返回O值。
2. PATINDEX () -- 返回字串中某個指定的字串出現的開始位置。
PATINDEX (<'%osubstring_expression%>, <column_name>) 其中字串表示式前後必須有 % 否則返回值為0.
標量值函式:
CREATE FUNCTION function_name -- 建立使用者自定義函式
([{@parameter_name scalar_parameter_data_type [ = default ]}[,...n]]) -- 引數列表
RETURNS scalar_reture_data_type -- 具體返回值的型別
[WITH ENCRYPTION] -- 是否要採取加密的形式
[AS]
BEGIN 具體函式體:
function body
RETURN scalar_expression
END
表值函式
CREATE FUNCTION function_name -- 建立使用者自定義函式
([{@parameter_name scalar_parameter_data_type [ = default ]}[,...n]]) -- 引數列表
RETURNS TABLE -- 具體返回值的型別
[WITH ENCRYPTION] -- 是否要採取加密的形式
[AS]
具體函式體:
RETURN (select_statement)
遊標:
概述:是一種資料訪問機制,允許使用者訪問單獨的資料行,而不是對整個行級進行操作。使用者可以通過單獨處理每一行逐條收集資訊並對資料逐行進行操作,這樣可以降低系統開銷和潛在的阻隔情況。
主要有兩部分 (1) 遊標結果集,定義遊標SELECT語句返回的行集合
(2) 有表位置 只想這個結果集中的某一行的指標
特點:* 允許返回一個完整的結果集,但允許程式設計語言只調用集合中的一行。
* 允許定位在結果集的特定行
* 從結果集的當前位置檢索一行或多行
* 支援對結果集中當前位置的行進行資料修改
* 提供指令碼,儲存過程和觸發器中使用的訪問結果集中資料的 T - SQL 語句
遊標宣告:
* DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
* FOR select_statement
* [FOR{REAN ONLY | UPDATE [OF column_name [,...n]]}] -- 語句設定遊標的屬性 UP...是可修改的遊標,後邊跟列名可以修改
操作遊標:
開啟:
OPEN{{[GLOBAL] CURSOR_name} | curcor_variable_name}
關閉:CLOSE { { [GLOBAL] corsor_name} | cursor_variable_name}
釋放:DEALLOCATE { { [ GLOBAL] cursor_name} | @cursor_variable_name
系統與元資料函式:
(1) CONVERT() 將一個數據型別的資料轉變為另一種資料型別的資料。
(2) CURRENT USER 返回當前使用者的名稱。
(3) INSATE() 判斷它的輸入是不是一個有效日期。
(4) INULL() 用一個指定替換任何控制
(5) ISNUMERIC () 判斷它是不是一個空值