我的SQL学习篇

本文介绍了SQL Server中自定义函数的创建与使用,包括处理NULL值的方法及函数的修改方式。此外,还详细讲解了如何通过约束实现数据一致性,避免乱码问题,并探讨了触发器的应用、数据库创建技巧、工作计划的设置、数据完整性的概念及其实施方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
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再加上函數名(參數)
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
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
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  
專門為某一列添加一個約束條件,如果沒有這一行的話,則是對整個表的一個約束.
l           創建默認值,創建規則的方法 Create rule[default] ruleName[defaultName] as expression
在創建完默認值和規則後我們還要把它綁定到相應的對象上才生效.sp_binddefault[bindrule] defaultName[ruleName],’TableN.conlumnName’
綁定了默認值之後如果要解除綁定的話應使用sp_unbinddefaultsp_unbindrule方法.
l           預存程序:Create Procedure dbo.ProName
@varName1 SqlDbType1,@varName2 SqlDbType2 output,@varName3 SqlDbType3 output    (
默認為input)
as
begin
statement
end
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值