UNIQUE 限制唯一辨別資料庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 限制均為列或列集合提供了唯一性的保證。
PRIMARY KEY 限制擁有自動定義的 UNIQUE 限制。
請注意,每個表可以有多個 UNIQUE 限制,但是每個表隻能有一個 PRIMARY KEY 限制。
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
PRIMARY KEY 限制唯一辨別資料庫表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 NULL 值。
每個表都應該有一個主鍵,并且每個表隻能有一個主鍵。
一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY。
CREATE TABLE Orders
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
DROP CONSTRAINT fk_PerOrders
DEFAULT 限制用于向列中插入預設值。
如果沒有規定其他的值,那麼會将預設值添加到所有的新記錄。
City varchar(255) DEFAULT 'Sandnes'
CREATE TABLE Orders11
O_Id int NOT NULL,
P_Id int,
OrderDate smalldatetime DEFAULT GETDATE(),
ALTER COLUMN City DROP DEFAULT
索引是一種特殊的查詢表,可以被資料庫搜尋引擎用來加速資料的檢索。簡單說來,索引就是指向表中資料的指針。資料庫的索引同書籍後面的索引非常相像。
例如,如果想要查閱一本書中與某個特定主題相關的所有頁面,你會先去查詢索引(索引按照字母表順序列出了所有主題),然後從索引中找到一頁或者多頁與該主題相關的頁面。
索引能夠提高 SELECT 查詢和 WHERE 子句的速度,但是卻降低了包含 UPDATE 語句或 INSERT 語句的資料輸入過程的速度。索引的建立與删除不會對表中的資料産生影響。
建立索引需要使用 CREATE INDEX 語句,該語句允許對索引命名,指定要建立索引的表以及對哪些列進行索引,還可以指定索引按照升序或者降序排列。
同 UNIQUE 限制一樣,索引可以是唯一的。這種情況下,索引會阻止列中(或者列的組合,其中某些列有索引)出現重複的條目。
子查詢(Sub Query)或者說内查詢(Inner Query),也可以稱作嵌套查詢(Nested Query),是一種嵌套在其他 SQL 查詢的 WHERE 子句中的查詢。
子查詢用于為主查詢傳回其所需資料,或者對檢索資料進行進一步的限制。
子查詢可以在 SELECT、INSERT、UPDATE 和 DELETE 語句中,同 =、<、>、>=、<=、IN、BETWEEN 等運算符一起使用。
使用子查詢必須遵循以下幾個規則:
子查詢必須括在圓括号中。
子查詢的 SELECT 子句中隻能有一個列,除非主查詢中有多個列,用于與子查詢選中的列相比較。
子查詢不能使用 ORDER BY,不過主查詢可以。在子查詢中,GROUP BY 可以起到同 ORDER BY 相同的作用。
傳回多行資料的子查詢隻能同多值操作符一起使用,比如 IN 操作符。
SELECT 清單中不能包含任何對 BLOB、ARRAY、CLOB 或者 NCLOB 類型值的引用。
子查詢不能直接用在集合函數中。
BETWEEN 操作符不能同子查詢一起使用,但是 BETWEEN 操作符可以用在子查詢中。