SQL Server 数据库之数据约束
数据约束
- 1. 概述
- 2. 主键约束
- 2.1 给数据表设置主键约束
- 3. 唯一性约束
- 4. 检查约束
- 5. 默认约束
- 6. 外键约束
1. 概述
在设计一张数据表的时候不仅要对表中所用字段和内容进行考虑,还有一个更加重要的问题,即对数据完整性的设计;
数据完整性是指数据的精确性和可靠性,防止表中出现不符合既定设置的数据(非法数据),这些数据库可能是用户没有根据规则输入的数据,也可能是黑客对于数据库破解做的一些特定尝试,确保数据的完整性对于整个数据库系统时非常重要的;
在 SQL Server 数据库中,常用约束来对数据表进行完整性设置,主要的约束方式有5种:主键约束、唯一性约束、检查约束、默认约束、外键约束
;
2. 主键约束
用主键约束可防止无效数据,主键约束指能在表中定义一个字段作为表的主要关键字,主键是表中记录的唯一标识,每个表中只能有一个 PRIMARY KEY
约束,并作为PRIMARY KEY
约束的字段不能为空值,也不能出现重复;
若在一个表中有多个列作为主键约束,则一列中的值可以是重复的,但被主键约束列中的组合值一定要是唯一的;
2.1 给数据表设置主键约束
右击数据表 SNo → 选择设计
在打开的dbo.SNo中选择要设置主键的列,右击选择主键,即可完成主键约束
注意: 再用 SQL 语句创建数据表时添加主键约束(PRIMARY KEY)语句;
3. 唯一性约束
唯一性约束防止重复数据,唯一性约束能确保数据表在主键列中字段的唯一性;
保证其中的数据只出现一次,不会出现重复的现象,在 SQL Server 中能对一个表中的多个字段进行 UNIQUE
约束,使用 UNIQUE
约束要注意以下几点要素:
UNIQUE
约束是允许空值的;UNIQUE
约束能在一个数据表中设立多个;- 使用了
UNIQUE
约束的字段会建立唯一性索引; - 默认情况下,
UNIQUE
约束创建的是非聚集索引;
例子 1:用对象资源管理器(SSMS)进行 UNIQUE
约束的步骤如下:
在 SSMS 中展开 LMS 数据库 → 右击dbo.S数据表 → 选择设计 → 在dbo.S数据表中右击姓名字段 → 选择索引/键;
索引/键对话框 → 添加,添加一个唯一性约束;
点击新建的IX_S索引,在常规 → 列 → 选择姓名,确定,即可完成唯一性约束的设置;
4. 检查约束
检查约束是对录入到数据表中的数据所设置的检查条件,以限制输入值,保证数据库的完整性;
通过逻辑表达式来对字段的值进行输入内容的限定;
在使用检查约束时,要注意以下几点:
- 在对列进行约束限制时,只能与字段有关;在对表限定时,只能与限制表中的字段有关;
- 在数据表中能对多个列进行检查约束的设置;
- 在使用
CREATE TABLE
时,只能对每个字段设置一个检查约束; - 若在表中对多个字段进行检查约束时,则为表级约束;
- 检查约束将在数据表进行
INSERT
和UPDATE
操作时对数据进行验证; - 设置检查约束的时候不能包含子查询;
例子 2:对学生表S 中的性别字段进行检查约束的设置,只能输入“男”或“女”,操作步骤如下:
- 右击 dbo.S数据表 → 设计 ,在表设计窗口右击性别字段 → 选择检查性约束;
- 单击添加,添加一条新的条件约束;
- 选中新建的约束,在表达式中输入条件表达式([性别]=‘男’ OR [性别]=‘女’);
注意: 包括隐式或显式数据类型转换的约束可能会导致某些操作失败;
5. 默认约束
默认约束是指当某一字段没有提供数据内容时,系统自动给该字段赋予一个设定好的值;当必须向表中加载一行数据但不知道某一段字段值的值或该值不存在时,能使用默认约束;
默认约束能使用常量、函数、空值作为默认值,使用默认约束时,要注意以下几点:
- 每个字段只能有一个默认约束;
- 若默认约束设置的值大于字段所允许的长度,则截取到字段允许长度;
- 不能加入到带有
IDENTITY
属性或TIMESTAMP 的字段上; - 若字段的数据类型为用户自定义类型,且已有默认值绑定在此数据类型上,则不允许再次使用默认值;
6. 外键约束
外键约束是在两个数据之间建立和加强链接的组合,可控制在外键表中存储的数据;
在外键引用中,当包含一个表的主键值的一个或多个列被另一个表中的一个或多个列引用时,就在这两个表之间创建了链接;
使用外键约束要注意以下几点:
- 外键约束是对字段参照完整性的设置;
- 外键约束不支持自动创建索引,需要手动建立;
- 表中最多能使用31个外键约束;
- 临时表中不能建立外键约束;
- 主键和外键的数据类型必须严格匹配;
SQL Server 数据库之数据约束相关推荐
- 了解SQL Server数据库静态数据及其如何适合数据库生命周期管理
什么是静态数据 (What is static data) Static data (aka Code, Lookup, List or Reference data), in the context ...
- c#窗体点餐系统 使用sql server 数据库保存数据
c#窗体点餐系统 使用sql server 数据库保存数据 登录界面 using System; using System.Collections.Generic; using System.Comp ...
- SQL Server数据库六种数据移动方法
1. 通过工具DTS的设计器进行导入或导出DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然, ...
- 如何找到SQL server数据库的数据源地址
1.找到数据源地址 1.先打开SQL Server数据库并连接. 2.然后找到目标数据库,右键并点击"属性". 3.在弹出的属性窗口左侧"选择页"中选择&quo ...
- SQL Server数据库--过滤数据
关键字:distinct:去重复 我们在查询数据的时候,会有许多相同的数据,这时候我们就要给它把重复的数据删除,查看不同的数据 图表 1 Distinct还可以对null值进行去重操作 关键字:Whe ...
- SQL Server 数据库中将数据表中的数据转化为Insert 语句
Use Northwind Select 'Insert Into Customer(CustomerID,CompanyName,ContactName) Values ('+'''' +Cust ...
- SQL Server数据库插入数据中文显示乱码问题
例如把下面数据插入数据中,中文会显示乱码: use testsql; if exists(select * from sysobjects where id=object_id('test')) dr ...
- 如何将数据从Excel文件导入SQL Server数据库
There are many ways to import data from an Excel file to a SQL Server database using: 有多种方法可以使用以下方法将 ...
- 5、SQL Server数据库、T-SQL
SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...
- 《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式...
数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不 ...
最新文章
- 【python】一次移动平均算法
- js实现UTC时间转为北京时间,时间戳转为时间
- 皮一皮:好的产品营销该怎么学习?看这...
- Markdown设置字体大小、颜色...,CSDN博客编写设置字体大小、颜色、粗细。字体,文字背景设置。
- nginx源码分析之变量
- ubuntu 编译php5.6,Ubuntu 16.04 源码编译 PHP5.6
- Know more about commit
- osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...
- seqlist插入java_大话数据结构(五)(java程序)——顺序存储结构的插入与删除...
- 项目之爬虫入门(豆瓣TOP250)
- 云端软件平台 如何共享自己封装的云端软件
- 黑苹果hidp显示不清楚_黑苹果开启缩放分辨率HiDPi以及字体模糊的调整方法总结...
- 如何定义一个具有返回值的函数
- 华为新系统鸿蒙何时亮相,终于!华为鸿蒙系统正式发布,P50亮相
- windows rt是什么系统
- 数字成像系统-姜卓-专题视频课程
- XSS Chanllenges笔记
- 2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)
- 知名摄影师、摄影器材专家赵嘉最新最全面的顶级摄影器材图书大系旋风上市!...
- 四川南充商会商务运作是国家支持的吗?能做吗?
热门文章
- 数据分析流程(学习)
- Android9一键安全手机
- 串口调试工具 minicom使用教程
- 应用时间序列分析案例操作--基于SAS软件,以北京市1980-2009年降水量为对象
- pe擦除服务器硬盘,如何使用老毛桃winpe的分区助手安全擦除移动硬盘或本地硬盘数据?...
- 小米官网竖直导航栏html,小米官网css3导航菜单代码_html/css_WEB-ITnose
- Linux必学书籍!五本强烈推荐,你读过几本?
- openwrt 遇到问题三 高通9531编译过程
- 如何制作一张3D复古拼贴海报 Part I
- 全网最全leafLetAPI中文版