T_SQL與子查詢的一些用法
- T_SQL
- 定義變數:(區域性變數)
- Declare @變數名 資料型別
- 系統變數:(全域性變數)
- 以@@變數名 開始
- 賦值
- Set @變數名 = ‘我是值’
- Select @變數名 = ‘我是值’
- 獲取值
- Select @變數名
- 變數的作用域:
- 在結束符go之前裡面,就是go~go之間
- 定義變數:(區域性變數)
- T_SQL條件判斷語句
- If……else……語句
- 語法:
- If(條件)
- 語法:
- If……else……語句
Begin
SQL語句
End
例如:
If exists (select * from sys.databases where name = ‘資料庫名’)
Begin
Drop database ‘資料庫名’
End
- 資料型別的轉換
- 關鍵字:convert
- 語法:convert(int,’列名’,style), 第一個引數是資料型別,第二個引數是要轉換的列名,第三個引數是規定時間、日期輸出的格式;
- while迴圈:
- While(條件)
Begin
sql語句
End
例如:
Declare @i int
Set @i = 5
While(@i<10)
Begin
Print @i
Set @i = @i + 1
End
- case……when……then……語句
- 語法:
Select *,case 列名 when 0 then ‘男’
When 1 then ‘女’
End
From student
這樣寫的話是在表後面新增一列,如果是想查詢出來的資料只有‘男’與‘女’
需要這樣寫
Select name,age,address,case 列名 when 0 then ‘男’
When 1 then ‘女’
End
From student
就是將0與1的那一列沒有查詢出來,用case語句代替了
注意:不要忘記end,如果條件中存在中文,最好是用if……else……;這裡只是查詢出來的資料,表的本質是沒有變的
- 函式isnull()用於處理空值
- 第一個引數就是列名,第二個引數是將該列中的空值替換成的字元
例如:
Select * from where isnull(name,’’) = zz;
Select 8 from where name = ‘zz’
第一種寫法比第二種寫法好些,第一種寫法可以將null轉換成空字串在判斷,為什麼只有自己去用來才能夠體會
- 子查詢:將查詢出來的結果當作其他查詢語句的條件
- 標量值:當只有條件只有只有一個值時,用where進行篩選時,可以用”=”進行判斷
- In與not in :就是當條件有多個值時就用這個
例如;
Select * from student where stuno in (1,2,3,4)
查詢學生學號為1,2,3,4的學生資訊
-
- Exists 與 not exists
- 使用場景,子查詢結果結果較大時與有索引時
- Exists 與 not exists
例如:
Select * from student as stu where exists (select * from class as cla where stu.stuid = cla.classid)
查詢學生ID與班級裡學生ID相同的學生資訊
- 檢視
- 建立檢視
Create view 檢視名
As
SQL語句
Go
檢視名以V_開頭
作用:提高程式碼的重用率
當檢視建立好後就可以將該檢視當作物理表來用