Sql Server 2008 資料庫設計與應用 筆記 (SQL Server 2008)
SQL Server 2008資料庫設計與應用
集合
由於空值(Null)是一個很特殊的值,若是利用空值與其他字串連接在一起,
最後結果仍會是空值。例如以下範例
declare @mystr varchar(10) -- 未指定初始值,預設將為Null
set @mystr=@mystr+'abc'
select @mystr
go
區域變數 宣告與指派動作一次進行
declare @myintvariable int=10,@todaydate date=getdate()
set @myintvariable=@myintvariable+8
SELECT @myintvariable
SELECT @todaydate
go
使用TABLE資料的區域變數
DECLARE @vEMP table(empno int primary key,
empname varchar(20) not null,
empgender varchar(2))
insert @vEMP
select 員工編號,姓名,姓別 from 員工 where 姓別='女'
--p11-12
declare @catname varchar(100),@prdname varchar(100)
set @catname=''
set @prdname=''
if (select COUNT(產品編號) from 產品資料
where 類別編號='1')>2
begin
select @catname=類別名稱 from 產品類別 --逐一回傳,結果就是最後一筆資料
select @prdname=@prdname+'['+ 產品名稱 +']'--會將回傳資料 串在一起
from 產品資料
where 類別編號=1
print '類別名稱:'+@catname
print '產品表列:'+@prdname
end
go
--P11-42
--P11-41
WHEN MATCHED THEN -- 兩者皆有的資料
WHEN NOT MATCHED BY TARGET THEN --目標資料表沒有,而來源有的資料
WHEN NOT MATCHED BY SOURCE THEN --目標資料表有,而來源沒有的資料
--P12-4 規則物件
ALTER TABLE 員工
ADD CHECK (性別 IN ('男','女')),
CHECK (出生日期>='1911/01/01' AND 出生日期<=GETDATE()),
CHECK (住家電話 IS NOT NULL OR 手機電話 IS NOT NULL)
--利用範圍建立規則
CREATE RULE RULE_PRICE
AS
@PRICE>=10 AND @PRICE<=50
--利用清單建立規則
CREATE RULE RULE_CATEGORYNAME_01
AS
@CATEGORYNAME IN ('茶類','果汁')
CREATE RULE RULE_CATEGORYNAME_02
AS
@CATEGORYNAME NOT IN ('酒類')
--繫結 規則物件至資料行
EXEC sp_bindrule Rule_Price,'產品資料.單價'
--解除與資料表資料行的繫結
EXEC sp_unbindrule '產品資料.單價'
--繫結 預設值 至資料行
EXEC sp_bindefault df_city '產品資料.倉儲地點'
--解除與資料表資料行的繫結
EXEC sp_unbindefault '產品資料.倉儲地點'
如有錯誤 歡迎指正