當前位置:首頁 » 編程語言 » sql建立表的唯一約束
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql建立表的唯一約束

發布時間: 2023-05-09 15:07:57

sql怎麼在已經創建的表中插入一列,對這一列進行唯一約束。

如果已經存在的表中是有數據的,那麼你不能用一句SQL實現你的目標。
因為,如果表中已經有數據,那麼你創建的新列,在已有的記錄中要麼是空值,要麼是你設置的預設值,因此所有記錄中,該列的值都是一樣的,因此對該列不能建立唯一性約束。
可採用兩種做法:
1.刪除原表的所有數據,就可以創建;
2.先不建立唯一約束,只建立列,然後給每行記錄的該列賦於不同的值。
然後再設置該列為非空;
然後再為該列設置唯一約束。

⑵ SQL UNIQUE 約束介紹


UNIQUE 約束唯一標識資料庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。



SQL UNIQUE Constraint on CREATE TABLE
下面的 SQL 在 Persons 表創建時在 Id_P 列創建 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 NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255))
如果需要命名 UNIQUE 約談轎寬束,以及為多個列帆扒定義 UNIQUE 約束,請使用下面的 SQL 語法:
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
當表已被創建時,如需在 Id_P 列創建 UNIQUE 約束,請使用下列 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD UNIQUE (Id_P)
如需命名 UNIQUE 約束,並定含亮義多個列的 UNIQUE 約束,請使用下面的 SQL 語法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)


撤銷 UNIQUE 約束
如需撤銷 UNIQUE 約束,請使用下面的 SQL:
MySQL
ALTER TABLE Persons
DROP INDEX uc_PersonID
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

⑶ SQL中如何設置唯一性約束

alter table [protectionZone]add constraint cons_02 unique (zoneName)。

約束用於限制加入表的數據的類型。可以在創建表時規定約束(通過 CREATE TABLE 語句),或者在表創建之後也可以(通過 ALTER TABLE 語句)。

(3)sql建立表的唯一約束擴展閱讀:

SQL具有數據定義、數據操縱和數據控制。

1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式有叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。

3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

⑷ Sql Server建表多列唯一約束,求教

CREATE UNIQUE NONCLUSTERED INDEX [idx_Staffing_uid_pid] ON Staffing
(
[UID] ASC,
[PID] ASC
)

⑸ Sql中創建唯一約束

唯一約束就是設置表的主鍵,你上面是check約束,這兩個約束是不一樣的!!

⑹ SQL中如何設置唯一性約束

alter table [protectionZone]add constraint cons_02 unique (zoneName)。

約束用於限制加入表的數據的類型。可以在創建表時規定約束(通過 CREATE TABLE 語句),或者在表創建之後也可以(通過 ALTER TABLE 語句)。

(6)sql建立表的唯一約束擴展閱讀:

SQL具有數據定義、數據操縱和數據控制。

1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式有叫做視圖(View),全局模式簡稱模式( Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。

3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

⑺ 在mysql 中為表的欄位添加唯一性約束的語句怎麼寫

1、建表時加上唯一性約束

CREATE TABLE `t_user` (

`Id` int(11) NOT NULL AUTO_INCREMENT,-- 自增

`username` varchar(18) NOT NULL unique,-- 唯一性約束

`password` varchar(18) NOT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;

2、給已經建好的表加上唯一性約束

ALTER TABLE `t_user` ADD unique(`username`);

(7)sql建立表的唯一約束擴展閱讀:

注意事項

MySQL在修改完每一行數據後都驗證數據約束,而不是像SQL標准里執行完整條語句才驗證。這樣做帶來的一個問題就是,如果一條SQL語句會改動多行數據,即使改動過程中違反了數據約束但改動後並不違反數據約束,也會被MySQ判為違反數據約束從而執行失敗。

在特定情況下MySQL的SQL語句中避免數據唯一性沖突有效的解法:

1、暫時刪除相關約束,改動完數據後再加回去

2、在update語句中使用order by子句控制行改動次序,保證在任一行改動後都不違法約束。這個方法局限性比較大,有時我們是想交換兩個不相鄰行的值

3、使用一個臨時值做中轉(如一個沒有被其它任何行使用的值,有些情況下NULL是一個不錯的選擇)。類似於程序設計中典型的交換兩個變數值的方法

4、重新設計應用邏輯,盡量避免一次更改多行的情況出現

⑻ sql唯一約束

一般唯一性約束不放在CHKEK約束,定義表都時候直接加unique限制或者如下加約束是最常用的:

altertablestuinfo--stuinfo是表名
addconstraintUQ_stuIDunique(stuID)--stuID身份證欄位名

當然,CHKEK約束里也可以

check(stuIDnotin(selectstuIDfromstuinfo))

⑼ sqlyog 怎麼設置唯一約束

可以在建表時這樣寫:螞喚
create
table
persons
(
id_p
int
not
null,
lastname
varchar(255)
not
null,
firstname
varchar(255),
address
varchar(255),
city
varchar(255),
check
(id_p>0)
)
如果是多列侍物或需要check約束的話,可是這樣寫:
create
table
persons
(
id_p
int
not
null,
lastname
varchar(255)
not
null,
firstname
varchar(255),
address
varchar(255),
city
varchar(255),
constraint
chk_person
check
(id_p>0
and
city='sandnes')
)
如果老伍已經存在表persons,再需要添加check約束的話,可以這樣寫:
alter
table
persons
add
check
(id_p>0)
如果是多列需要check約束的話,可是這樣寫:
alter
table
persons
add
constraint
chk_person
check
(id_p>0
and
city='sandnes')