SQL SERVER 基礎功法(內功增強)
http://newerdragon.iteye.com/blog/1666157
sql serversqlSQL Server
--資料操作select --從資料庫表中檢索資料行和列insert --向資料庫表添加新資料行delete --從資料庫表中刪除資料行update --更新資料庫表中的資料--資料定義create table --建立一個資料庫表drop table --從資料中刪除一個表alter table --修改資料庫表結構create view --建立一個視圖drop view --從資料中刪除視圖create index --為資料庫表建立一個索引drop index --從資料庫中刪除索引create procedure --建立一個預存程序drop procedure --從資料庫中刪除預存程序create trigger --建立一個觸發器drop trigger --從資料庫中刪除觸發器create schema --向資料庫添加一個新模式drop schema --從資料庫中刪除一個模式create domain --建立一個資料範圍drop domain --從資料庫中刪除一個域alter domain --改變域定義--資料控制grant --授予使用者存取權限deny --拒絕使用者訪問revoke --解除使用者存取權限--程式化SQLdeclare --為查詢設定遊標explan --為查詢描述訪問計劃open --檢索查詢結果開啟一個遊標fetch --檢索一行查詢結果close --關閉遊標prepare --為動態執行準備SQL語句execute --動態執行SQL語句describe --描述準備好的查詢--局部變數--全域變數 (必須以@@開頭)declare @id char(10) --定義一個變數set @id = '10010001' --為變數賦值select @id = '10010001' --為變數賦值-- if else 的使用declare @x int @y int @z intselect @x = 1 @y = 2 @z = 3if @x > @yprint 'x>y' --列印字串else if @y > @zprint 'y>z'elseprint 'z>y'-- caseuse panguupdate employee set e_wage = case when job_leve1 = '1' then e_wage*1.08case when job_leve1 = '2' then e_wage*1.07case when job_level = '3' then e_wage*1.06else e_wage*1.05end --while continue breakdeclare @x int @y int @c intselect @x = 1 @y = 1while @y < 3begin select @c = 100*@x+@yprint @c --列印變數c的值end select @x = @x+1select @y = 1end --waitfor 例如: 等待1小時2分零3秒後 才執行select 語句waitfor delay '01:02:03'select * from employee-- 例: 等到晚上23點零8分後才執行select語句waitfor time '23:08:00'select * from employee-- 只能在使用like關鍵字的where子句中使用萬用字元select * from table where s_name like '[a-zA-z]%' --[]指定值的範圍select * from table where s_name like '[^F-M]' -- ^排除指定範圍select * from table order by s_name asc -- asc 升序select * from table order by s_name desc --desc降序-- 子查詢-- 除非能確保內層select只能返回一個行的值-- 否則應在外層where子句中使用 in 限定符s_name = (select s_name from table where id = 1)-- distinct 去除重複的欄位列select distinct s_name from table-- 左外部連結,t1中有的而t2中沒有的以null表示select * from t1,t2 where t1.id *= t2.idselect * from t1,t2 where t1.id =* t2.id -- 右外部連結-- union 合并查詢結果集,all 儲存重複行select s_name from t1 union [all] insert into table(s_name,s_number) value('xxx','xxx')value(select s_name,s_number from table) --從select語句中查詢值進行添加update table set s_name = default -- 將s_name更改為預設值truncate table -- 刪除表中所有行,仍保持表的完整性drop table -- 完全刪除表