首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

轻松学习SQL约束核心原理和实用技巧

SQL 约束-约束简介约束(FOREIGN KEY,缩写 FK)是用来实现数据库表参照完整性。...它是指表中某个字段值依赖于另一张表中某个字段值,而被依赖字段必须且有主键约束或者唯一约束。被依赖表通常称之为父表或者主表,设置约束表称为子表或从表。...相关概念主键:可以唯一标识一条记录:从表中与主表主键对应字段主表:所指向表,约束其他表表从表:所在表,被约束表价值:建立主表与从表关联关系,为两个表数据建立连接,约束两个表中数据一致性和完整性建立约束创建表时添加约束...:CONSTRAINT [约束名称] FOREIGN KEY (字段) REFERENCES [主表名称(主键字段)]添加约束:ALTER TABLE [表名] ADD CONSTRAINT...DELETEFROMdeptWHEREid=2#查看从表中数据是否同时被删除SELECT*FROMemp_part总结SQL约束是一种参照完整性约束,它用于确保两个表之间数据一致性,构建了一种父子关系

20210

SQL反模式学习笔记5 约束【不用钥匙入口】

目标:简化数据库架构 一些开发人员推荐使用引用完整性约束,可能不使用原因有一下几点: 1、数据更新有可能和约束冲突; 2、当前数据库设计如此灵活,以至于不支持引用完整性约束...反模式:无视约束,即不使用约束 省略约束能使得数据库设计更加简单、灵活,或者执行更加高效,但是你不得不在其他方面付出相应代价, 必须增加额外代码来手动维护引用完整性...1、假设无暇代码:要避免在没有约束情况下产生引用不完整状态,需要再任何改变生效前执行额外Select查询, 以此来确保这些改变不会导致引用错误。...合理使用反模式: 如果数据库产品不支持约束功能,则不得不使用别的方法来保持引用完整性,比如使用监控脚本。 同样也存在一些极度灵活数据库设计,无法用来表示其对应关系。...2、约束的确需要多那么一点额外系统开销,但相比于其他一些选择,确实更高效一点: (1)不需要在更新或删除记录前执行Select检查; (2)在同步修改时不需要再锁住整张表

81230
您找到你想要的搜索结果了吗?
是的
没有找到

SQL操作六

约束(foreign key) 约束是保证一个表或者两个表之间数据一致性和完整性约束 工作中除非特殊情况,一般不使用约束,通过代码逻辑进行限制,避免测试时不必要麻烦 值通常是另外一张表主键...可以重复,可以为null,但不能是另外一张表中不存在数据 - 使用约束条件: 必须保证两张表使用相同引擎(engine) 引擎必须是innodb,myisam不支持约束 和关联字段必须是相同数据类型...,比如一张表主键id,那么这个一定要是int类型 所对应关联字段如果不是主键,会自动为该字段创建索引 创建约束 格式 : create table t(id int primary...t_emp中关联数据字段deptid设置为null,此时在删除才会成功 总结 保证一个表或两个表之间数据一致性和完整性,工作怎用,值是关联表主键,值可以是null可以重复,不能是不存在数据...sql语句工作单元或者最小单元,写在事务里面的sql要么同时成功,要么同时失败 事务ACID性质(重要,面试常考) Automicity : 原子性 : 执行sql语句要么同时成功,要么同时失败

80510

MySQL入门学习笔记(上)

2.约束分类 3.非空约束:not null 4.唯一性约束: unique 5.主键约束: primary key 6.约束:foreign key 五、DML语句 (一)插入数据 1.语法格式...name varchar(255) ); 6.约束:foreign key 约束涉及到相关术语: 约束:一种约束( foreign key) 字段:该字段上添加了约束 键值...约束作用 但第一张表字段没有任何约束时候,可能会导致数据无效,原本cno只能取100,101但可能出现一个102,所以为了保证cno字段都是第二张表中cno100和101,需要给cno字段添加约束...那么cno字段就是字段,cno字段中每一个值都是键值 当使用了约束时候两张表就有了父子关系,被引用是父表,引用是子表 删除顺序:先删子表再删父表 创建表顺序:...不一定是主键,但至少具有unique约束 测试:可以为NULL吗? 键值可以为NULL。

1.7K10

MySQL 数据库基础知识(系统化一篇入门)

、数据表基本操作 4.1、数据库基本操作 4. 2、数据表基本操作 1、创建、查看数据表 2、修改数据表 五、数据表字段约束 5.1、主键约束 5.2、约束 5.3、唯一性约束 5.4、...2.1、SQL优点 1、简单易学,具有很强操作性 2、绝大多数重要数据库管理系统均支持SQL 3、高度非过程化;用SQL操作数据库时大部分工作由DBMS自动完成 2.2、SQL分类 1、DDL...常见约束约束条件 说明 PRIMARY KEY 主键约束用于唯一标识对应记录 FOREIGN KEY 约束 NOT NULL 非空约束 UNIQUE 唯一性约束 AUTO_INCREMENT..., name varchar(20), primary key(id) ); 5.2、约束 如果表A主键是表B中字段,则该字段称为表B;另外表A称为主表,表B称为从表。...是用来 实现参照完整性,不同约束方式将可以使两张表紧密结合起来,特别是修改或删除级联操作将使 得日常维护更轻松。主要用来保证数据完整性和一致性。

3.6K60

2020年MySQL数据库面试题总结(50道题含答案解析)

InnoDb: (1)支持 ACID 事务,支持事务四种隔离级别; (2)支持行级锁及约束:因此可以支持写并发; (3)不存储总行数: (4)一个 InnoDb 引擎存储在一个文件空间(共享表空间...6、主键和候选有什么区别? 表格每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选。按照惯例,候选可以被指定为主键,并且可以用于任何引用。...(4)事务处理 (5)锁定表、优化事务处理 (6)适用,优化锁定表 (7)建立索引 (8)优化查询语句 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引区别,对数据库性能有什么影响...主键、和索引区别 定义: 主键——唯一标识一条记录,不能有重复,不允许为空 ——表是另一表主键, 可以有重复, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 ——用来和其他表建立联系用 索引——是提高查询排序速度 个数: 主键—— 主键只能有一个 —— 一个表可以有多个 索引—— 一个表可以有多个唯一索引 49、你可以用什么来确保表格里字段只接受特定范围里

3.9K20

MySQL 给你问懵了?50 道 MySQL 高频面试题详解来了

InnoDb: (1)支持 ACID 事务,支持事务四种隔离级别; (2)支持行级锁及约束:因此可以支持写并发; (3)不存储总行数: (4)一个 InnoDb 引擎存储在一个文件空间(共享表空间...6、主键和候选有什么区别? 表格每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选。按照惯例,候选可以被指定为主键,并且可以用于任何引用。...(4)事务处理 (5)锁定表、优化事务处理 (6)适用,优化锁定表 (7)建立索引 (8)优化查询语句 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引区别,对数据库性能有什么影响...主键、和索引区别 定义: 主键——唯一标识一条记录,不能有重复,不允许为空 ——表是另一表主键, 可以有重复, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 ——用来和其他表建立联系用 索引——是提高查询排序速度 个数: 主键—— 主键只能有一个 —— 一个表可以有多个 索引—— 一个表可以有多个唯一索引 49

2.6K11

MySQL经典52题

InnoDb:支持ACID事务,支持事务四种隔离级别;支持行级锁及约束:因此可以支持写并发;不存储总行数;一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里...6.主键和候选有什么区别?表格每一行都由主键唯一标识,一个表只有一个主键。主键也是候选。按照惯例,候选可以被指定为主键,并且可以用于任何引用。7.myisamchk是用来做什么?...,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM使用连接(JOIN)来代替子查询适用联合(UNION)来代替手动创建临时表事务处理锁定表、优化事务处理适用,优化锁定表建立索引优化查询语句...1、从定义上却分主键:唯一标识一条记录,不能有重复,不允许为空:表是另一表主键, 可以有重复, 可以是空值索引:该字段没有重复值,但可以有一个空值2、从作用上区分主键:用来保证数据完整性...:用来和其他表建立联系用索引:是提高查询排序速度3、从个数上区分主键:主键只能有一个:一个表可以有多个索引:一个表可以有多个唯一索引52.SQL语句优化方法Where子句中:where表之间连接必须写在其他

8110

MySQL基础及原理

总结:约束关系是针对双方 添加了约束后,主表修改和删除数据受约束。 添加了约束后,从表添加和修改数据受约束。 在从表上建立,要求主表必须存在。...关于约束开发建议 MySQL虽然提供了约束,但我们一般不使用,通常会在Java中进行约束,因为在sql约束,当关联过多时,会对系统造成阻塞,影响系统性能。...问题1:如果两个表之间有关系(一对一、一对多),比如:员工表和部门表(一对多),它们之间是否一定要建约束? 答:不是的 问题2:建和约束有什么区别?...例如:在员工表中,可以添加一个员工信息,它部门指定为一个完全不存在部门。 问题3:那么建和约束查询有没有关系?...答:没有 在 MySQL 里,约束是有成本,需要·消耗系统资源·。对于大并发 SQL 操作,有可能会不适合。 比如大型网站中央数据库,可能会 因为约束系统开销而变得非常慢 。

3.8K20

ETL测试或数据仓库测试入门

(primary key)、(foreign key)、替代(alternate key)、复合(composite key)以及代理(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂过程,并不是简单写一个源SQL查询并与目标进行比较来实现。...可能需要为每个行运行多个SQL查询,来验证转换规则 Data Quality Testing(数据质量测试) 数据质量测试包含语法和基准测试。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...主要验证数据是否遵循了设计预定数据模式规则或标准 2 验证数据经过业务转换后是否满足预定转换逻辑以及验证源和目标数据计算是否一致 主要表主、等越苏是否正常 3 验证ETL过程数据表主外关系是否保存

1.4K61

Web-第六天 MySQL回顾学习

注意:插入该字段时 使用默认值 2.5.6 约束FOREIGN KEY FOREIGN KEY 表示约束,将在多表中学习 2.6 创建表加入约束示例: id 主键自增长 username 字符串...4.1 约束 现在我们有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常情况下,我们将在商品表上添加一列,用于存放分类cid信息,此列称为: ? ?...“商品表products”称为:从表,category_id称为。我们通过主表主键和从表来描述主外关系,呈现就是一对多关系。 特点: 从表值是对主表主键引用。...声明约束 语法:alter table 从表 add [constraint] [键名称] foreign key (从表字段名) references 主表 (主表主键); [键名称]...用于删除外约束,一般建议“_fk”结尾 alter table 从表 drop foreign key 键名称 使用目的: 保证数据一致性和完整性 4.2 表与表之间关系 4.2.1 一对多关系

80520

定了!MySQL基础这样学

MySQL常用存储引擎: MyISAM:拥有较高插入,查询速度,但不支持事务,不支持。 InnoDB:支持事务,支持,支持行级锁定,性能较低。...约束:FOREIGN KEY,A表中列. A表中值必须参照于B表中某一列(B表主 )。 6.5.1、主键约束     主键值是这行记录在这张表中唯一标识,就如同身份证号。...字段添加约束,引用是t_calssno字段 ); 6.5.3、唯一性约束(unique)     唯一约束修饰字段具有唯一性,不可以重复,但是可以为NULL,也可以同时为NULL。...设计从表可以有两种方案: 在t_card表中添加列(相对t_user表),并且给添加唯一约束; 给t_card表主键添加约束(相对t_user表),即t_card表主键也是。...例如再创建一张表t_stu_tea表,给出两个,一个相对t_stu表,另一个相对t_teacher表

2.2K20

ETL测试或数据仓库测试入门

(primary key)、(foreign key)、替代(alternate key)、复合(composite key)以及代理(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂过程,并不是简单写一个源SQL查询并与目标进行比较来实现。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...主要验证数据是否遵循了设计预定数据模式规则或标准 2 验证数据经过业务转换后是否满足预定转换逻辑以及验证源和目标数据计算是否一致 主要表主、等越苏是否正常 3 验证ETL过程数据表主外关系是否保存...写SQL或数据库操作代码完成实现各种测试场景 等等其他工作内容 下半年总体目标是:编撰译ETL测试系列和Python3接口测试系列

1.4K50

大数据测试之ETL测试入门

(primary key)、(foreign key)、替代(alternate key)、复合(composite key)以及代理(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂过程,并不是简单写一个源SQL查询并与目标进行比较来实现。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...主要验证数据是否遵循了设计预定数据模式规则或标准 2 验证数据经过业务转换后是否满足预定转换逻辑以及验证源和目标数据计算是否一致 主要表主、等越苏是否正常 3 验证ETL过程数据表主外关系是否保存...梳理业务需求和设计测试策略 写SQL或数据库操作代码完成实现各种测试场景 等等其他工作内容

2.9K92

2022 最新 MySQL 面试题

InnoDB: 支持 ACID 事务, 支持事务四种隔离级别; 支持行级锁及约束: 因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间( 共享表空间, 表大小不受操作系统控制...6、主键和候选有什么区别? 表格每一行都由主键唯一标识 ,一个表只有一个主键。 主键也是候选。 按照惯例, 候选可以被指定为主键, 并且可以用于任何 引用。...’ 、’ 性别 ’ 最好适用 ENUM 2、 使用连接 (JOIN)来代替子查询 3、 适用联合 (UNION)来代替手动创建临时表 4、 事务处理 5、 锁定表、 优化事务处理 6、 适用,...主键、 和索引区别 定义: 主键 – 唯一标识一条记录, 不能有重复, 不允许为空 – 表是另一表主键 , 可以有重复 , 可以是空值 索引 – 该字段没有重复值, 但可以有一个空值...作用: 主键 – 用来保证数据完整性 – 用来和其他表建立联系用 索引 – 是提高查询排序速度 个数: 主键 – 主键只能有一个 – 一个表可以有多个 索引 – 一个表可以有多个唯一索引

8710

ETL测试或数据仓库测试入门

(primary key)、(foreign key)、替代(alternate key)、复合(composite key)以及代理(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂过程,并不是简单写一个源SQL查询并与目标进行比较来实现。...可能需要为每个行运行多个SQL查询,来验证转换规则 Data Quality Testing(数据质量测试) 数据质量测试包含语法和基准测试。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...主要验证数据是否遵循了设计预定数据模式规则或标准 2 验证数据经过业务转换后是否满足预定转换逻辑以及验证源和目标数据计算是否一致 主要表主、等越苏是否正常 3 验证ETL过程数据表主外关系是否保存

1.7K61

Mysql面试题

但是如果长连接过多,会占用过多内存,从而导致OOM。 b. 查询缓存:命中则直接返回结果 一般建议使用,因为查询缓存失效非常频繁,往往是弊大于利。...InnoDb: 基于磁盘资源是InnoDB表空间数据文件和它日志文件,InnoDB 表大小只受限于操作系统文件大小,一般为 2GB; 支持行级锁及约束:因此可以支持写并发; 不存储总行数...事务处理 锁定表、优化事务处理 适用,优化锁定表 建立索引 优化查询语句 24....定义: 主键–唯一标识一条记录,不能有重复,不允许为空 –表是另一表主键, 可以有重复, 可以是空值 索引–该字段没有重复值,但可以有一个空值 作用: 主键–用来保证数据完整性 ...–用来和其他表建立联系用 索引–是提高查询排序速度 个数: 主键–主键只能有一个 –一个表可以有多个 索引–一个表可以有多个唯一索引

1.1K51

SQLite 基础

SQL语句 如何在程序运行过程中操作数据库中数据 那得先学会使用SQL语句 什么是SQL SQL(structured query language):结构化查询语言 SQL是一种对关系型数据库中数据进行定义和操作语言...name 和 age 字段值都一样时,那么就没法区分这些数据,造成数据库记录唯一,这样就不方便管理数据 良好数据库编程规范应该要保证每条记录唯一性,为此,增加了主键约束,也就是说,每张表都必须有一个主键...create table t_student (id integer primary key autoincrement, name text, age integer) ; 二十一、约束 利用约束可以用来建立表与表之间联系...一般情况是:一张表某个字段,引用着另一张表主键字段 新建一个 create table t_student (id integer primary key autoincrement...这个作用是用 t_student 表中 class_id 字段引用 t_class 表 id 字段 二十二、表连接查询 什么是表连接查询 需要联合多张表才能查到想要数据 表连接类型

2.1K40

ETL测试或数据仓库测试入门

(primary key)、(foreign key)、替代(alternate key)、复合(composite key)以及代理(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂过程,并不是简单写一个源SQL查询并与目标进行比较来实现。...可能需要为每个行运行多个SQL查询,来验证转换规则 Data Quality Testing(数据质量测试) 数据质量测试包含语法和基准测试。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接查询来验证数据。ETL映射表在为数据验证编写查询时提供大量有用信息。...主要验证数据是否遵循了设计预定数据模式规则或标准 2 验证数据经过业务转换后是否满足预定转换逻辑以及验证源和目标数据计算是否一致 主要表主、等越苏是否正常 3 验证ETL过程数据表主外关系是否保存

2.3K50
领券