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