首页 > 其他分享 >UNIQUE约束添加规则

UNIQUE约束添加规则

时间:2023-01-18 16:44:56浏览次数:27  
标签:name dbo -- 约束 索引 添加 UNIQUE

UNIQUE约束添加规则

1、唯一约束确保表中的一列数据没有相同的值。

2、与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束。

使用SSMS数据库管理工具添加UNIQUE约束

1、连接数据库,选择数据库,选择数据表-》右键点击-》选择设计。

2、在表设计窗口中-》选择要添加约束的数据列-》右键点击-》选择索引/键。

3、在索引/键窗口中-》点击添加。

4、选择新增的索引/键-》在常规窗口中-》类型选择唯一键。

5、在常规窗口中-》点击列。

 

6、在索引列窗口中-》先选择约束列-》然后选择约束列排序规则-》点击确定。

7、在索引/键弹出框中常规窗口中-》在名称中输入约束名称-》在说明中输入约束描述-》其他可以选择默认-》点击关闭。

8、点击保存按钮(或者ctrl+s)-》刷新表,查看结果。

 使用T-SQL脚本添加UNIQUE约束

当表结构已存在时

给一列或者多列添加唯一约束时,先判断要添加的约束是否存在,如果存在则先删除再添加,如果不存在则直接添加。

语法:

if exists(select * from sysobjects where name=约束名)
alter table 数据库名.[dbo].表名 drop constraint 约束名;
go
alter table 数据库名.[dbo].表名 add constraint 约束名 unique(列名1,列名2);
go

示例:

if exists(select * from sysobjects where name='unique_t_name')
alter table [testss].[dbo].[test1] drop constraint unique_t_name;
go
alter table [testss].[dbo].[test1] add constraint unique_t_name unique(name,sex);
go

当表结构不存在时

当表结构不存在时,需要在建表语句中添加,添加一列唯一索引和多列唯一索引语法相同。

语法:

--当表结构不存在时添加唯一约束
if exists( select * from sysobjects where name=数据库名.[dbo].表名 and type ='U')
drop table 数据库名.[dbo].表名;
go

--当表结构不存在时
--建表语法声明
create table 数据库名.[dbo].表名
(
--字段声明
列名1 int identity(1,1) not null,
列名2 nvarchar(50) null,
列名3 int not null,
primary key clustered(列名1 asc) with(ignore_dup_key=off) on [primary], --主键索引声明
constraint unique_name_sex unique(列名2,列名3)
)on [primary]

--字段注释声明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述1' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名1';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述2' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名2';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'描述3' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名3';
go

示例:

--当表结构不存在时添加唯一约束
if exists( select * from sysobjects where name='test1'and type ='U')
drop table test1;
go

--当表结构不存在时
--建表语法声明
create table test1
(
--字段声明
id int identity(1,1) not null,
name nvarchar(50) null,
age int not null,
primary key clustered(id asc) with(ignore_dup_key=off) on [primary], --主键索引声明
constraint unique_name_sex unique(name,age)
)on [primary]

--字段注释声明
exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';
go

UNIQUE索引优缺点

优点:

1、唯一性约束所在的列允许空值。

2、可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的。

 3、唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。

缺点:

1、创建唯一约束时会创建索引,占用磁盘空间。

2、插入或者修改约束列的值时,会存在校验规则,会比较费事。

标签:name,dbo,--,约束,索引,添加,UNIQUE
From: https://www.cnblogs.com/jushen7925/p/17060169.html

相关文章

  • Servlet13 - 实现删除和添加
    3.点击删除按钮从数据库中删除数据点击按钮调用js中的delFruit(fid)方法,需要传入fid调用js中的方法以及传入参数的thymeleaf语法<!--方法1字符串拼接......
  • linux jenkins添加windows节点
    1.添加jenkinsnode2.下载jar包上面提供两种方法,第一种下载文件,默认java去启动和运行程序。第二个,你可以拷贝这个命令,放到一个记事本文件,然后保存为bat文件,双击bat文件也......
  • jmeter添加全局变量,跨线程组传递参数
    在软件测试中,当我们想把某个变量值想设置为全局变量,也就是在任何一个线程组都可以使用该变量时,我们就要用到BeanShell取样器,示例如下:1.拿到某个接口的变量值2.通过BeanSh......
  • LeetCode Top 100 Liked Questions 62. Unique Paths (Java版; Medium)
    ​​welcometomyblog​​LeetCodeTop100LikedQuestions62.UniquePaths(Java版;Medium)题目描述Arobotislocatedatthetop-leftcornerofamxngrid(......
  • 《SQL基础》07. 约束
    目录约束常见约束案例外键约束删除/更新行为约束概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的:保证数据库中数据的正确性、有效性和完整性。分类:......
  • IDEA:自动生成方法注释并添加 @param 参数(Java+Kotlin)
    在用 Java 或 Kotlin 编写方法时建议编写完善的注释,包含每个参数的意义和返回的内容,下面介绍在 IDEA 中自动生成方法注释的技巧。    第二张图按照图片填写......
  • IntelliJ插件笔记(二) 运行插件---添加Actions
    本文内容主要流程按照官网手册展开,也是较为准确的翻译。原文可见:CreatingActions|IntelliJPlatformPluginSDK(jetbrains.com)Actions插件可以在IDE的菜单或者工具......
  • jdbc连接mysql简单实例,在java项目中添加数据库驱动包
    傻瓜式教学从创建项目,到数据库建立,访问一步到位打开eclipse,newjavaProject创建一个普通的java项目右击刚才新建的项目,选择BuildPath—>ConfigureBuilePath选择addExte......
  • C++11 智能指针 unique_ptr
    C++11智能指针unique_ptrWrittenon2023-01-17std::unique_ptr称为独享智能指针,它独占某个对象管理的所有权,与shared_ptr可以同时有多个共享智能指针拥有某个对象管......
  • Axure 绘制表格添加删除
    1、添加按钮:白底黑框,80X30,文本和命名均为“添加”;2、数据表格(表头):1行5列,灰底黑框的表格作为表头,从左到右每个格子的文字分别为:姓名、性别、年龄、电话和操作:3、数......