当前位置:首页 » 编程语言 » 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')