l 用戶自定義函數實便 create function dbo.FunctionTest(@para nvarchar(50))returns nvarchar(50) returns nvarchar
begin
if @para is null
set @para =’空值’
return @para
end;
以上定義完整,注意的時在函數參數後面的是returns+返回數類型(返回類型不能為text,ntext,image,cursor,timestamp) 我們可以對一表的一列進行選擇.如 select dbo. FunctionTest(OneFieldName) from TableName 可以得到此列的所有值,其中”空值”取代 null 值.
修改已定義的函數方法: alter function dbo.FunctionTest <New function content> 執行一個自定義函數至少應有個select再加上函數名(參數)
begin
if @para is null
set @para =’空值’
return @para
end;
以上定義完整,注意的時在函數參數後面的是returns+返回數類型(返回類型不能為text,ntext,image,cursor,timestamp) 我們可以對一表的一列進行選擇.如 select dbo. FunctionTest(OneFieldName) from TableName 可以得到此列的所有值,其中”空值”取代 null 值.
修改已定義的函數方法: alter function dbo.FunctionTest <New function content> 執行一個自定義函數至少應有個select再加上函數名(參數)
l 我們除了經常可以用觸發器一實現數據的統一性.也可以用約束來實現.如有兩個表:create table test1(id1 int primary key) create table test2(id2 int,name nvarchar(20)).如果我們建立一個外鍵約束的話就可以實現了如:alter table dbo.test2 add constraint FK_test2_test1 foreign key (id2) references dbo.test1(id1) on delete cascade on update cascade 這樣可以實現更新和刪除上的同步而不用涉及到使用觸發器.
l 為了克服簡繁體出現亂碼的情況,我們可以在寫入數據時在漢字前加字母N.如: insert tb values(N’漢字’) .
l DELETE TEST2 FROM TEST2 T,DELETED D WHERE T.VAR21=D.VAR11 AND T.VAR22=D.VAR12 創建一個同時滿足有兩個字段值相同的一筆記錄.
l create trigger t1 on testtable for update as
if update(col2) and (select count(*) from inserted) > 0
begin
print "Trigger t1 has detected an update of col2" update testtable set col3 = col3 + 10
end
if update(col2) and (select count(*) from inserted) > 0
begin
print "Trigger t1 has detected an update of col2" update testtable set col3 = col3 + 10
end
l 創建數據庫:Create DataBase DataBaseName
on primary(Name=DataBaseName,FileName=’filePath.mdf’,size=10MB,maxsize=15MB,filegrowth=20%)log on(Name=DataBaseLog,FileName=’filePath.ldf’,size=3MB,maxsize=5MB,filegrowth=1M)Collate SQL_Latin1_General_Cpl_Cl_cI_AS
on primary(Name=DataBaseName,FileName=’filePath.mdf’,size=10MB,maxsize=15MB,filegrowth=20%)log on(Name=DataBaseLog,FileName=’filePath.ldf’,size=3MB,maxsize=5MB,filegrowth=1M)Collate SQL_Latin1_General_Cpl_Cl_cI_AS
l sp_add_job [@job_name =] 'job_name' ----創建一個工作計劃
[,[@enabled =] enabled]
[,[@description =] 'description']
[,[@start_step_id =] step_id]
[,[@category_name =] 'category']
[,[@category_id =] category_id]
[,[@owner_login_name =] 'login']
[,[@notify_level_eventlog =] eventlog_level]
[,[@notify_level_email =] email_level]
[,[@notify_level_netsend =] netsend_level]
[,[@notify_level_page =] page_level]
[,[@notify_email_operator_name =] 'email_name']
[,[@notify_netsend_operator_name =] 'netsend_name']
[,[@notify_page_operator_name =] 'page_name']
[,[@delete_level =] delete_level]
[,[@job_id =] job_id OUTPUT]
l 數據的完整性有三种:域完整性(列:default,check,referentail),實體完整性(行:primary,unique)及參考完整性(多表之間:foreign key,check).實現這些完整性的方法有兩種:公佈數據的完整性(即在創建發佈數據列時定義規則)及過程數據完整性(利用觸發器及存儲過程及其它腳本實現).
l Use northwind
alter table TableName
[with check|with nocheck] --使得對某些規則有效或是無效 對於已經存在編輯好的約,用此功能時則不要用with
add Constraint ConstraintName <expression>
for ColumnName 專門為某一列添加一個約束條件,如果沒有這一行的話,則是對整個表的一個約束.
alter table TableName
[with check|with nocheck] --使得對某些規則有效或是無效 對於已經存在編輯好的約,用此功能時則不要用with
add Constraint ConstraintName <expression>
for ColumnName 專門為某一列添加一個約束條件,如果沒有這一行的話,則是對整個表的一個約束.
l 創建默認值,創建規則的方法 Create rule[default] ruleName[defaultName] as expression
在創建完默認值和規則後我們還要把它綁定到相應的對象上才生效.sp_binddefault[bindrule] defaultName[ruleName],’TableN.conlumnName’
綁定了默認值之後如果要解除綁定的話應使用sp_unbinddefault和sp_unbindrule方法.
在創建完默認值和規則後我們還要把它綁定到相應的對象上才生效.sp_binddefault[bindrule] defaultName[ruleName],’TableN.conlumnName’
綁定了默認值之後如果要解除綁定的話應使用sp_unbinddefault和sp_unbindrule方法.
l 預存程序:Create Procedure dbo.ProName
@varName1 SqlDbType1,@varName2 SqlDbType2 output,@varName3 SqlDbType3 output (默認為input)
as
begin
statement
end
@varName1 SqlDbType1,@varName2 SqlDbType2 output,@varName3 SqlDbType3 output (默認為input)
as
begin
statement
end