第四章,Transact-SQL
P80
cast和convert
直接在查詢分析器裡輸入
select cast(12345 as char),convert(int,3.14),convert(bit,12.33)
select cast(100+88 as char),convert(varchar(10),getdate())
select getdate(),
convert(char(12),getdate(),1), --幾種時間格式
convert(char(24),getdate(),100),
convert(char(12),getdate(),112)
串連查詢
1.等值串連
from t1,t2 where t1.id=t2.id
from t1 join t2 on t1.id=t2.id
2.非等值串連
from t1,t2 where t1.id<t2.id
3.自串連
select a.id,b.id from t1 a,t1 b
where a.uid=b.id
4.外部串連
內串連,是指挑選出符合串連條件的資料,參與串連的表是平等的。
外串連,Outer Join,外串連,參與串連的表有主從之分。
以主表中的每行資料去匹配從表的資料列,對於不合格,
以NULL填充,如果是bit類型,則用0
5.以主表的位置,分左串連和右串連。
6.巢狀查詢
select * from table where id in
(select id from table1)
7.謂詞exists
select * from table1 where exists
(select id from orders where id>222)
8.having
select * from table1 having id<11
*************group by理解
select id,avg(uid) from ttest group by id
這裡select後面,只能跟一個彙總函式,比如avg(uid),
或者要分組的欄位本身,比如id。
*************having理解
having後面必須跟一個彙總函式,比如avg(id)
P232合并查詢止
081205
select id1 as 編號,name1 as 姓名
from table1 where lever=2
union
select id2,name2
from table2
order by 1或order by 編號
注意這裡,必須要多個表中查詢的欄位類型一致。
P234
1.儲存查詢結果
use pangu
exec sp_dboption'pangu','select into',true
select id,name
into table1
from table2,table3
where id=uid
select * from talbe1
//這裡需要設定select into為ture
2.儲存查詢結果到變數中
declare @name varchar(50)
declare @account varchar(30)
use pangu
select @name=fname,@account=num
from firms
where id='1001'
select @name as fname,@account as num --居然可以這樣顯示?
P235全文檢索索引止
P245第11章,資料更新
1.用預存程序插入資料
use pangu
insert into table(id,name)
execute('
select id,sum(num) from table1
')
2.帶子查詢的刪除語句
delete from table1
where id=(
select id from table2 where..)
3.刪除當前遊標行資料
delete from t1
where current of d_cursor
4.truncate table t1
5.帶子查詢的更新語句
update t1
set wage=wage+100
where id=(
select id from t2 where lever=3)
6.使用串連資訊更新資料
update t1
set wage=wage+50
from t1,t2
where t1.id=t2.id
P257事務止
P265預存程序和觸發器
1.兩類,系統預存程序和使用者自訂過程。
系統過程儲存在master資料庫中,以sp_為首碼。
P270止