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 '產品資料.倉儲地點'
如有錯誤 歡迎指正