431.chapter3.创建表,约束和用户自定义类型

 

2 约束 就是用户输入超出允许范围的数据

(1)check约束:通过限制列的可接受值,强制域的完整性。通过任何基于逻辑运算符号返回true或者false的逻辑值创建check约束。
一个列可以有多个check约束,按照约束的创建顺序进行验证
搜索条件必须为逻辑表达式,并且不能引用其他表
列级别的check约束只能引用被约束的列,表级别的约束只能引用用一个表中的列
不能再text,ntext或image上定义check约束

(2)规则(Rule):执行和check相同的功能。使用check约束是限制列值的首要方法。一个列只能应用一个规则,可以应用多个check约束。check约束和表或者表的某一列绑定在一起。而规则作为数据库对象而单独存在。

ContractedBlock.gifExpandedBlockStart.gifRule sample
create rule chk_id as @id between 10000 and 99999
go

create table rule_sample
(rule_id 
int primary key)
go

sp_bindrule chk_id, 
'rele_sample.rule_id'


(3)unique约束:禁止出现重复的值
如果没有为unique指定clustered或者nonclustered,默认使用nonclustered
每个unique约束都会生成一个索引。unique约束的数目不会使表中的nonclustered索引超过249个,clustered索引超过1个

ContractedBlock.gifExpandedBlockStart.gifCode
create table unique_sample
(
unique_column 
nvarchar(10) unique nonclustered
)


(4)主键约束
一个表只能包含一个主键约束
由主键约束生成的索引不会使表中的nonclustered索引超过999个,clustered索引超过1个
如果没有为主键指定clustered或者nonclustered,并且没有为unique约束指定clustered索引,主键约束将默认采用clustered
主键约束定义中的所有列必须定义为not null

ContractedBlock.gifExpandedBlockStart.gifmutiple primary key
CREATE TABLE [Multiple_PK_Sample]
(
    columnA 
[nvarchar](20) NOT NULL,
    columnB 
[nvarchar](20) NOT NULL,
 
CONSTRAINT [PK_Multiple_PK_Sample] PRIMARY KEY CLUSTERED 
 (columnA, columnB)
)

(5)外键约束:保证引用的完整性。确保用户输入的值存在于一个指定的表的对应的列里。
如果FK约束输入非null值,则此值必须在被引用的列中存在。
FK仅能用于同一服务器上同意数据库中的表。跨数据库应用完整性必须通过触发器实现。
FK可以引用同一表中的其他列,此行为成为自引用。比如AdventureWork中HumanResources.Employee的外键FK_Employee_Employee_MangerID
列级别的FK只能引用一个列。两者数据类型必须相同
表级别的FK的引用中列的数目比月和约束列中的列数相同,数据类型也必须相同
FK约束只能引用所引用表的PK或者unique约束中的列或所引用的表中unique index中的列

ContractedBlock.gifExpandedBlockStart.gifForeign Key Sample
CREATE TABLE [FK_Sample]
(
    columnA 
[nvarchar](20) NOT NULL,
    
foreign key(columnA) references referencetable(columnA) 
)


(6)default约束:当用户未指定值是,sql server自动为其赋值

ContractedBlock.gifExpandedBlockStart.gifdefault constraint
create table default_value_sample
(
create_date 
datetime default getdate()
)

 

所有的约束的完整sql

ContractedBlock.gifExpandedBlockStart.gifOvarall sample
-- create the class table
create table testing_class
(
class_id 
int primary key,
class_name 
nvarchar(50) not null
)

-- create the student table
create table testing_student
(
--pk
student_id int identity(1,1) primary key,
-- check and unique
student_no nvarchar(50) constraint chk_no check(student_no between 10000 and 99999) unique,
-- check
student_gendar nvarchar(6) constraint chk_gendar check(student_gendar='male' or student_gendar='female'),
-- fk
class_id int foreign key(class_id) references testing_class(class_id),
-- default
create_date datetime default getdate()
)


insert into testing_class (class_id, class_name) values(1, 'AAA')
insert into testing_class (class_id, class_name) values(2, 'BBB')

-- test the student no check constraint
insert into testing_student
(student_no, student_gendar, class_id)
values ('123','male','1')

-- test the student gendar check constraint
insert into testing_student
(student_no, student_gendar, class_id)
values ('10001','xmale','1')

-- test the class id check foreign constraint
insert into testing_student
(student_no, student_gendar, class_id)
values ('10001','male','3')

-- testing the student no check unique constraint
--
(1)insert into one valid record
insert into testing_student
(student_no, student_gendar, class_id)
values ('10001','male','1')
--(2)insert into one same student no record
insert into testing_student
(student_no, student_gendar, class_id)
values ('10001','female','1')

 

 

转载于:https://www.cnblogs.com/yang_sy/archive/2009/02/25/1397786.html

强大的数据库特性:CHECK约束 通过使用CHECK约束,可以确保数据库中的数据始终符合预期的规则和限制,提高数据的完整性和一致性。CHECK约束可以应用于表的列级别或表级别。在列级别,可以对每个列定义单独的CHECK约束,而在表级别,可以对整个表应用CHECK约束。在上述示例中,我们使用CONSTRAINT关键字定义了一个名为CHK_Age的CHECK约束,它确保Age列的值在18到25之间。在上述示例中,我们使用了两个条件来定义名为CHK_Quantity的CHECK约束,它确保Quantity列的值大于0且小于等于Stock列的值。 阅读详情

相关推荐

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

SQLServer之CHECK约束

CHECK约束添加规则 1、CHECK 约束用于限制列中的值的范围。 2、Check约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围,在列中更新数据时,所要输入的内容必须满足Check约束的条件,否则将无法正确输入。 3、如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 4、如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。 使用SSMS数...

weixin_33969116的博客 4888

在 Ansys Mechanical 中使用“螺栓工具”插件自动生成螺栓

在有限元分析 (FEA) 中,高效创建螺栓连接对于确保机械装配的结构完整性和性能至关重要。螺栓是连接组件不可或缺的一部分,它们在负载下的精确建模会影响整个系统。快速高效的螺栓建模使工程师能够快速优化设计,满足紧迫的期限,并通过为其他关键设计任务释放资源来提高整体生产力。此外,螺栓建模的精度可以最大限度地降低模型创建过程中出错的风险,这对于获得可靠和准确的分析结果至关重要。因此,在 FEA 中快速且无错误地创建螺栓连接对于高效、可靠和成功的工程结果至关重要。

jkh920184196的博客 3103

SQL研习录(24)——CHECK约束

SQL研习录(24)——CHECK约束版权声明一、CHECK约束1、基本语法 版权声明 本文原创作者:清风不渡 博客地址:https://blog.csdn.net/WXKKang 一、CHECK约束   在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式,如果对单个列定义 CHECK 约束,那么该列只允许特定的值;如果对一个表定义 CHECK 约束,那么...

清风不渡 5303

基于MATLAB实现的克里金插值的代码

参考代码 克里金插值matlab代码 youwenfan.com/contentcsb/81657.html。

jghhh01的博客 484

hCaptcha Enterprise绕过方案对比:四种Capsolver任务类型怎么选?

本文深入评测了hCaptcha Enterprise的四种Capsolver任务类型(HCaptchaEnterpriseTask、HCaptchaEnterpriseTaskProxyLess、HCaptchaTurboTask和HCaptchaTurboTaskProxyLess),分析其技术架构、性能表现及适用场景。通过基准测试和成本模型比较,帮助技术团队选择最优解决方案,提升自动化流程的验证通过率与成本效益。

rrr55的博客 325

SQL语法之 CHECK 约束

CHECK约束

Redhat_yan 1万+

Nvidia Tesla A100 驱动安装方法

Nvidia Tesla A100 驱动安装方法 遇到的问题:以前安装tesla系列、geforce系列等gpu 驱动的时候,只需执行nvidiaxxxx.run驱动包或者安装nvidiaxxxx.rpm包即可,但遇到新的GPU Nvidia Tesla A100的时候,安装完驱动似乎不起作用,找了半天资料,原来需要以下步骤才可以使用;

qq_24343177的博客 2万+

SQL server 中设置CHECK约束

1、启动Management Studio,连接到数据库 在对象资源管理器中展开你想选择的数据库并创建表 2、创建好表后 对表的数据类型等进行设置 3、将设计好的表保存 在表内对想设置CHECK约束的属性右击, 在弹出的选项卡中选择CHECK约束 4、在检查约束的窗口中 点击添加 在右侧的界面进行约束设置 写入约束表达式 关于约束表达式的3个例子: 1....

烟敛寒林的博客 4万+

十年芯片资深IC设计工程师面经系列(四)SDC约束

set_driving_cell:当我们的设计是模块级(Block level)的design时,我们的设计前面一般还有其他的设计,那么前面模块的输出便是我们模块的输入,5.1set_false_path:可以单独的时钟或者路径进行约束。set drive :当我们的设计是芯片级(Chip level)的顶层设计时,芯片外围电路要驱动的是负载较大的IO单元,故需要的驱动能力较强,:set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。

weixin_47349046的博客 1774

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

DTI-ALPS 指标计算(附代码),评估脑类淋巴系统功能

xxx 1052

MySQL CHECK约束

MySQL 中,直到 MySQL 8.0.16 版本之前,标准 SQL 的 CHECK 约束并未被完全支持。然而,从 MySQL 8.0.16 开始,CHECK 约束在表定义中得到了支持,允许你定义列中必须满足的条件。

zxrhhm的博客 4012

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

本文主要介绍了FP16、INT8、INT4精度模型加载占用显存大小的分析,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 模型加载显存占用大小 3. 不同精度是否与硬件适配

herosunly的博客 23万+

6、检查约束(CHECK)

MySQL 检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。 选取设置检查约束的字段 检查约束使用 CHECK 关键字,具体的语法格式如下: CHECK <表达式> 其中,“表达式”指的就是 SQL 表达式,用于指定需要检查的限定条件。 若将 CHECK 约束子句置于表中某个列的定义之后,则这种约束也称为基于列的 CHECK 约束。 在更新

you can you up up up的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

MySQL13-约束

一. 约束(constraint)概述 1.1. 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑: 实体完整性(Entity Integrity) :例如,同一个表中,不能存在两条完全相同无法区分的记录。 域完整性(Domain Int

qq_43117059的博客 1169

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SQL中:check与 contriate语句约束的区别

SQL中:check与 contriate语句约束的区别

悟道子HD 1935

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

约束

总结:在建表的时候没有给约束是可以的,但是到插入数据的时候数据会产生混乱,为什么这样说呢,因为数据表开始的时候就没有给约束是代表着数据默认值,这样写的话也不是很规范,所以我们一般都是在建表的同时也要给表添加约束,让表得到完整性,插入数据将不会有误。如果发生了忘记添加约束,可以像我在last_name里面插入约束那样,这样也是可以添加约束的。3、 定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。2、 表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)

weixin_44543349的博客 624

数据库约束

2 约束 就是用户输入超出允许范围的数据(1)check约束:通过限制列的可接受值,强制域的完整性。通过任何基于逻辑运算符号返回true或者false的逻辑值创建check约束。一个列可以有多个check约束,按照约束的创建顺序进行验证搜索条件必须为逻辑表达式,并且不能引用其他表列级别的check约束只能引用被约束的列,表级别的约束只能引用用一个表中的列不能再text,ntext或image上

copooo的专栏 1686

创建和使用约束Constraint

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constr...

weixin_33915554的博客 1744

MySql系列04:MySql表的完整性约束

为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,MySQL提供了一种机制来检查数据库中的数据是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制就是完整性约束。 MySQL中主要支持以下几种种完整性约束,如表所示。 其中Check约束是MySQL8中提供的支持。 约束条件 约束描述 PRIMARY KEY 主键约束,约束字段的值可唯一地标识对应的记录 NOT NULL 非空约束,约束字段的值不能为空 UNIQUE 唯一约束,约束字段的值是唯一的

weixin_40964170的博客 1138

SQL Server Check 约束用法详解

一、定义:        CHECK 约束用于限制列中的值的范围。        如果对单个列定义 CHECK 约束,那么该列只允许特定的值。        如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。   做数据库,就必须要会写约束。 运算符 含义   = 等于  

Mindy的专栏 8万+

第04期:列 CHECK 约束

check 约束意思,就是对一列或者多列按照一定的预先设置好的规则进行过滤,条件为真,则过滤成功;条件为假,则过滤失败,返回失败代码给客户端。 为什么要把这个单独列出来写呢,经常遇到不规范的 SQL,很多时候只能靠数据库层来过滤,代码端不过滤,就只能在数据库端过滤了。 一、常见过滤方式 假设表 f1,字段 r1 类型为 3 的倍数,否则拒绝写入。又假设 r1 的输入不规范,只能靠数据库来过滤,那怎么办?无非有几种: 1)写前置触发器 示例 1 mysql> create table f1 (r1 i.

ActionTech的博客 2929

SQL 用户自定义约束check的三种添加方式

SQL 用户自定义约束check的三种添加方式,or、in、constraint,以及如何查询表的所有约束。

arrow.light的博客 9900

SQL Server -- Check 约束(MSSQL,Oracal,Access,MySQL)

From: http://www.w3school.com.cn/sql/sql_check.asp SQL CHECK 约束CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。SQL CHECK Constraint on CREATE TABLE下...

weixin_33757911的博客 282

05|Oracle学习(CHECK约束)

就是检查约束,用于限定每一列能够输入的值,以保证数据的正确性。

技术小白=-=的博客 2404
上一篇: 431.chapter2.configure log and datafiles
下一篇: 431.chapter2.configure database recovery model
aoding8407
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值