SQL UNIQUE
UNIQUE约束唯一标识数据库表中的每一条记录。
UNIQUE和PRIMARY KEY约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的UNIQUE约束。
请注意,每个表可以有多个UNIQUE约束,但是每个表只能有一个PRIMARY KEY 约束。
SQL UNIQYE CONSTRAINT ON CREATE TABLE
在STAFF表创建时在”IDNUMBER”列创建UNIQUE约束:
MySQL
CREATE TABLE STAFF(IDUNMBER NUMBER(6) NOT NULL,NAME VARCHAR2(20) NOT NULL,ADDRESS VARCHAR2(255),UNIQUE(IDUNMBER));
SQL Server / Oracle / MS Access:
CREATE TABLE STAFF(IDUNMBER NUMBER(6) NOT NULL UNIQUE,NAME VARCHAR2(20) NOT NULL,ADDRESS VARCHAR2(255));
如需要命名UNIQUE约束,以及为对个列定义UNIQUE约束,
MySQL / SQL Server / Oracle / MS Access
CREATE TABLE STAFF(IDUNMBER NUMBER(6) NOT NULL,NAME VARCHAR2(20) NOT NULL,ADDRESS VARCHAR2(255),CONSTRAINT UC_IDUNIQUE(IDNUMBER,NAME));
其中的“UC 是一个约束名 !上面建的是唯一约束,为了方便区别约束名一般起得有规律点比如UC(就是UNIQUE CONSTRAINT的缩写意思是唯一约束)UC 就是对表中的STAFFID 建唯一约束,强制约束IDUNMBER和NAME唯一
SQL UNIQUE CONSTRAINT ON ALTER TABLE
当表已经被创建时,需要在”IDNUMBER”l列创建UNIQUE约束:
MySQL / SQL Server / Oracle / MS Access
ASLTER TABLE STAFF ADD UNIQUE(IDNUMBER,NAME)
如需命名UNIQUE约束,并定义多个列的UNIQUE约束
MySQL / SQL Server / Oracle / MS Access
ALTER TABLE STAFF ADD CONSTRAINT UC_ID UNIQUE(IDNUMBER,NAME)
撤销UNIQUE约束
如需撤销UNIQUE约束
MySQL
ALTER TABLE STAFF DROP INDEX UC_ID
ALTER TABLE STAFF DROP COLUMN COLUMN_NAME
SQL Server / Oracle / MS Access
ALTER TABLE STAFF DROP CONSTRAINT UC_ID
ps:不给约束起名字系统会默认起名字,通过下面的SQL查询名称:
SELECT T.*,I.INDEX_TYPE FROM USER_IND_COLUMN T,USER_INDEXES I WHERE T.INDEX_NAME = I.INDEX_NAME AND T.TABLE_NAME = I.TABLE_NAME AND T.TABLE_NAME = 'STAFF';