SQL基礎—約束

今天在學習的時候,突然對SQL約束的概念有點模糊,現在學習完記下來。SQL約束有五大約束

  1、主鍵約束(Primay Key Coustraint) 唯一性,非空性
  2、唯一約束 (Unique Counstraint)唯一性,可以空,但只能有一個
  3、檢查約束 (Check Counstraint)對該列數據的範圍、格式的限制(如:年齡、性別等)
  4、默認約束 (Default Counstraint)該數據的默認值
  5、外鍵約束 (Foreign Key Counstraint)需要建立兩表間的關係並引用主表的列

,非空性,具體用法如下:

Create Table Persons//非空性  id和name值必須非空否則不得寫入
{
 id int not null,
 name varchar(255) not null,
adress varchar(255) 
}

唯一約束:UNIQUE 約束唯一標識數據庫表中的每條記錄。(也就是數據值必須唯一), PRIMARY KEY 約束均爲列或列集合提供了唯一性的保證。(PRIMARY KEY爲主鍵約束),使用如下圖

//當表格還未創建的時候
CREATE TABLE Persons//對Id_P進行約束(單個約束語法)
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

CREATE TABLE Persons//對Id_P LastName進行約束,約束名爲uc_PersonID(也就是多個約束語法)
(
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)
)

//當表格創建的時候

ALTER TABLE Persons//單個約束
ADD UNIQUE (Id_P)

ALTER TABLE Persons//多個約束,意思跟上面一樣
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)


//刪除約束  uc_PersonID爲之前做的約束名
ALTER TABLE Persons
DROP INDEX uc_PersonID

主鍵約束  約束唯一標識數據庫表中的每條記錄。主鍵必須包含唯一的值。主鍵列不能包含 NULL 值。使用方式如下:

//當未創建表時
CREATE TABLE Persons//單個約束,將Id_P進行主鍵約束
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
PRIMARY KEY (Id_P)
)

CREATE TABLE Persons//多個約束,將Id_P,LastName進行主鍵約束,約束名爲pk_PersonID 
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)

//當表格已創建時
ALTER TABLE Persons//將Id_P設置爲主鍵
ADD PRIMARY KEY (Id_P)

ALTER TABLE Persons//將Id_P,LastName設置爲主鍵,主鍵名pk_PersonID 
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)


//撤銷約束
ALTER TABLE Persons//撤銷單個約束
DROP PRIMARY KEY

ALTER TABLE Persons//撤銷一組約束
DROP CONSTRAINT pk_PersonID

外鍵約束 一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY,代碼如下:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

請注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。

"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。

"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。

FOREIGN KEY 約束用於預防破壞表之間連接的動作。

FOREIGN KEY 約束也能防止非法數據插入外鍵列,因爲它必須是它指向的那個表中的值之一。

//當未創建表時
CREATE TABLE Orders//這段語句中Id_O設置爲主鍵 Id_P爲外鍵對應Persons表中的Id_P主鍵
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

CREATE TABLE Orders// Id_P爲外鍵對應Persons表中的Id_P主鍵,別名爲fk_PerOrders 
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

//當已創建表時
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

//撤銷約束
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章