GO ON----(SQL高級(jí))
SQL UNIQUE 約束
UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證檬嘀。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束槽驶。
請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束鸳兽,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束掂铐。
SQL UNIQUE Constraint on CREATE TABLE
下面的 SQL 在 "Persons" 表創(chuàng)建時(shí)在 "Id_P" 列創(chuàng)建 UNIQUE 約束:
MySQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULLUNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)揍异;
如果需要命名 UNIQUE 約束全陨,以及為多個(gè)列定義 UNIQUE 約束,請(qǐng)使用下面的 SQL 語(yǔ)法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)
SQL UNIQUE Constraint on ALTER TABLE
當(dāng)表已被創(chuàng)建時(shí)蒿秦,如需在 "Id_P" 列創(chuàng)建 UNIQUE 約束烤镐,請(qǐng)使用下列 SQL:
MySQL / SQL Server / Oracle / ?MS Access:
ALTER TABLE Persons ? ADD UNIQUE (Id_P)
如需命名 UNIQUE 約束蛋济,并定義多個(gè)列的 UNIQUE 約束棍鳖,請(qǐng)使用下面的 SQL 語(yǔ)法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons ? ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
撤銷 UNIQUE 約束
如需撤銷 UNIQUE 約束,請(qǐng)使用下面的 SQL:
MySQL:
ALTER TABLE PersonsDROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE PersonsDROP CONSTRAINT uc_PersonID
SQL UNIQUE 約束
UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄碗旅。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證渡处。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意祟辟,每個(gè)表可以有多個(gè) UNIQUE 約束医瘫,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
在 "Persons" 表創(chuàng)建時(shí)在 "Id_P" 列創(chuàng)建 UNIQUE 約束
MySQL
CREAT TABLE Persons
(
Id_p int NOT NULL,
Lastname varchar(255) NOT NULL,
Firstname varchar(255),
Address varchar(255),
UNIQUE (Id_p)
)
SQL Server / Oracle / MS Access
CREAT TABLE Persons
(
Id_p int NOT NULL UNIQUE,
Lastname varchar(255),
Firstname varchar(255),
Address varchar(255)
)
需要命名 UNIQUE 約束旧困,以及為多個(gè)列定義 UNIQUE 約束:
MySQL / SQL Server / Oracle / MS Access
CREAT TABLE Persons
(
Id_p int NOT NULL,
Lastname varchar(255),
Firstname varchar(255),
Address varchar(255),
CONSTRAINT uc_PersonID UNIQUE (Id_p,Lastname)
)
SQL UNIQUE Constraint on ALTER TABLE
當(dāng)表已被創(chuàng)建時(shí)醇份,如需在 "Id_P" 列創(chuàng)建 UNIQUE 約束時(shí)
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD UNIQUE (Id_p)
如需命名 UNIQUE 約束稼锅,并定義多個(gè)列的 UNIQUE 約束時(shí)
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Lastname,Id_p)
撤銷 UNIQUE 約束
MySQL
ALTER TABLE Persons
DROP INDEX uc_PersonsID
SQL Server / Oracle / MS Access
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
SQL PRIMARY KEY 約束
PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
主鍵必須包含唯一的值僚纷。
主鍵列不能包含 NULL 值矩距。
每個(gè)表都應(yīng)該有一個(gè)主鍵,并且每個(gè)表只能有一個(gè)主鍵怖竭。
SQL PRIMARY KEY Constraint on CREATE TABLE
在 "Persons" 表創(chuàng)建時(shí)在 "Id_P" 列創(chuàng)建 PRIMARY KEY 約束
MySQL:
CREAT TABLE Persons
(
Id_p int NOT NULL,
Lastname varchar(255),
Firstname varchar(255),
Address varchar(255),
PRIMARY KEY (Id_p)
)
SQL Server / Oracle / MS Access:
CREAT TABLE Persons
(
Id_p int NOT NULL PRIMARY KEY,
Lastname varchar(255),
Firstname varchar(255),
Address varchar(255)
)
需要命名 PRIMARY KEY 約束锥债,以及為多個(gè)列定義 PRIMARY KEY 約束時(shí)
MySQL / SQL Server / Oracle / MS Access
CREAT TABLE Persons
(
Id_p int NOT NULL,
Lastname varchar(255),
Firstname varchar(255),
Address varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Lastname,Id_p)
)
SQL PRIMARY KEY Constraint on ALTER TABLE
在表已存在的情況下為 "Id_P" 列創(chuàng)建 PRIMARY KEY 約束,
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE Persons
ADD PRIMARY KEY (Id_p)
需要命名 PRIMARY KEY 約束痊臭,以及為多個(gè)列定義 PRIMARY KEY 約束時(shí)
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonsID PRIMARY KEY (Id_p,Lastname)
注釋:如果使用 ALTER TABLE 語(yǔ)句添加主鍵哮肚,必須把主鍵列聲明為不包含 NULL 值(在表首次創(chuàng)建時(shí))。
撤銷 PRIMARY KEY 約束
如需撤銷 PRIMARY KEY 約束广匙,請(qǐng)使用下面的 SQL:
MySQL:
ALTER TABLE Persons DROP PRIMARY KEY;
SQL Server / Oracle / MS Access:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID;
SQL FOREIGN KEY 約束(數(shù)據(jù)庫(kù)外鍵允趟。表與表之間的某種約定的關(guān)系,由于這種關(guān)系的存在艇潭,能夠讓表與表之間的數(shù)據(jù)拼窥,更加的完整,關(guān)連性更強(qiáng))
一個(gè)表中的 FOREIGN KEY 指向另一個(gè)表中的 PRIMARY KEY
FOREIGN KEY 約束用于預(yù)防破壞表之間連接的動(dòng)作蹋凝。
FOREIGN KEY 約束也能防止非法數(shù)據(jù)插入外鍵列鲁纠,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有鳍寂,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處改含。