1. 程式人生 > >SQL 巢狀查詢 建立約束

SQL 巢狀查詢 建立約束

------------------------巢狀查詢------------------------
use student
select *
from dbo.stu   ----not in
where StudentName not in (select Student from dbo.students)
--- 在這裡還有一個關鍵字  exists  有記錄的時候返回true  否則就是返回false 不知道怎麼用

--下面介紹了一些巢狀用到的一些修改的比較操作符
-- >all  大於最大值
-- >any  大於列表中的最小值
-- =any  與in關鍵字一樣的意思
-- <>any 表示不等於列表中的值  ??
-- <>all 表示不等於列表中的所有值 它與not in 一樣的意思

--使用巢狀查詢 最高可以喲32級 當然前提是你伺服器的記憶體足夠大

----------其次的就是使用相關子查詢
  --例如:
 use AdventureWorks
 select EmployeeID,Title,VacationHours
 from HumanResources.Employee e1
 where e1.VacationHours > (
  select avg(e2.VacationHours)
  from HumanResources.Employee e2 where e1.Title = e2.Title)


-----------------------建立約束-----------------------------
use student
drop table ss

create table ss
(
 [name] varchar(50) not null,
 [id] int identity(1,1) not null,
 startTime datetime not null default getDate(),--預設約束
 constraint aa primary key clustered--主鍵約束
 (id ),
 constraint bb unique --唯一約束
 ([name]),
 constraint cc  --外來鍵約束
 foreign key ([name])
 references dbo.tt, --指定表dbo.tt中的主鍵name來作為這個表的外來鍵
 constraint ee check ([name] in ('a','b','c','d'))--檢查約束
)