SQL 约束-外键约束简介外键约束(FOREIGN KEY,缩写 FK)是用来实现数据库表的参照完整性的。...它是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须且有主键约束或者唯一约束。被依赖的表通常称之为父表或者主表,设置外键约束的表称为子表或从表。...相关概念主键:可以唯一标识一条记录的列外键:从表中与主表的主键对应的字段主表:外键所指向的表,约束其他表的表从表:外键所在的表,被约束的表价值:建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性建立外键约束创建表时添加外键约束...:CONSTRAINT [外键约束的名称] FOREIGN KEY (外键字段) REFERENCES [主表名称(主键字段)]添加外键约束:ALTER TABLE [表名] ADD CONSTRAINT...DELETEFROMdeptWHEREid=2#查看从表中的数据是否同时被删除SELECT*FROMemp_part总结SQL 中的外键约束是一种参照完整性约束,它用于确保两个表之间的数据一致性,构建了一种父子关系
目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1、数据更新有可能和约束冲突; 2、当前的数据库设计如此灵活,以至于不支持引用完整性约束...反模式:无视约束,即不使用约束 省略外键约束能使得数据库设计更加简单、灵活,或者执行更加高效,但是你不得不在其他方面付出相应的代价, 必须增加额外的代码来手动维护引用完整性...1、假设无暇代码:要避免在没有外键约束的情况下产生引用的不完整状态,需要再任何改变生效前执行额外的Select查询, 以此来确保这些改变不会导致引用错误。...合理使用反模式: 如果数据库产品不支持外键约束功能,则不得不使用别的方法来保持引用完整性,比如使用监控脚本。 同样也存在一些极度灵活的数据库设计,外键无法用来表示其对应的关系。...2、外键约束的确需要多那么一点额外的系统开销,但相比于其他的一些选择,外键确实更高效一点: (1)不需要在更新或删除记录前执行Select检查; (2)在同步修改时不需要再锁住整张表
外键约束(foreign key) 外键约束是保证一个表或者两个表之间数据一致性和完整性的约束 工作中除非特殊情况,一般不使用外键约束,通过代码逻辑进行限制,避免测试时不必要的麻烦 外键的值通常是另外一张表的主键...外键可以重复,可以为null,但不能是另外一张表中不存在的数据 - 使用外键约束的条件: 必须保证两张表使用相同的引擎(engine) 引擎必须是innodb,myisam不支持外键约束 外键和关联字段必须是相同的数据类型...,比如一张表的主键id的外键,那么这个外键一定要是int类型 外键所对应的关联字段如果不是主键,会自动为该字段创建索引 创建外键约束 格式 : create table t(id int primary...t_emp中关联的数据字段deptid设置为null,此时在删除才会成功 外键总结 保证一个表或两个表之间的数据一致性和完整性,工作不怎用,外键的值是关联表的主键,值可以是null可以重复,不能是不存在的数据...sql语句的工作单元或者最小单元,写在事务里面的sql要么同时成功,要么同时失败 事务的ACID性质(重要,面试常考) Automicity : 原子性 : 执行的sql语句要么同时成功,要么同时失败
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字段都是第二张表中的cno的100和101,需要给cno字段添加外键约束...那么cno字段就是外键字段,cno字段中的每一个值都是外键值 当使用了外键约束的时候两张表就有了父子关系,被引用的是父表,引用的是子表 删除的顺序:先删子表再删父表 创建表的顺序:...不一定是主键,但至少具有unique约束 测试:外键可以为NULL吗? 外键值可以为NULL。
、数据表的基本操作 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称为从表。...外键是用来 实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或删除的级联操作将使 得日常维护更轻松。外键主要用来保证数据的完整性和一致性。
InnoDb: (1)支持 ACID 的事务,支持事务的四种隔离级别; (2)支持行级锁及外键约束:因此可以支持写并发; (3)不存储总行数: (4)一个 InnoDb 引擎存储在一个文件空间(共享表空间...6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...(4)事务处理 (5)锁定表、优化事务处理 (6)适用外键,优化锁定表 (7)建立索引 (8)优化查询语句 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响...主键、外键和索引的区别 定义: 主键——唯一标识一条记录,不能有重复的,不允许为空 外键——表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49、你可以用什么来确保表格里的字段只接受特定范围里的值
InnoDb: (1)支持 ACID 的事务,支持事务的四种隔离级别; (2)支持行级锁及外键约束:因此可以支持写并发; (3)不存储总行数: (4)一个 InnoDb 引擎存储在一个文件空间(共享表空间...6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...(4)事务处理 (5)锁定表、优化事务处理 (6)适用外键,优化锁定表 (7)建立索引 (8)优化查询语句 31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响...主键、外键和索引的区别 定义: 主键——唯一标识一条记录,不能有重复的,不允许为空 外键——表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49
(前提是:字段允许NULL值) 2.修改数据:update(在有外键的表中不能查询的同时,再进行修改) 格式:update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... ,...2).设置外键约束: alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键); 例如:ALTER...: 保证数据完整性(在有外键的表中不能查询的同时,再进行修改表中数据) 如何删除外键?..., 说出外键约束的作用 作用:强制外键字段的值必须参考主表中主键字段的值。...(cid); c, 通过sql语句能够建立多表及其关系 创建表的外键,并且创建外键约束。
InnoDb:支持ACID的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发;不存储总行数;一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里...6.主键和候选键有什么区别?表格的每一行都由主键唯一标识,一个表只有一个主键。主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。7.myisamchk是用来做什么的?...,尽量把字段设置NOTNULL,例如’省份’、’性别’最好适用ENUM使用连接(JOIN)来代替子查询适用联合(UNION)来代替手动创建的临时表事务处理锁定表、优化事务处理适用外键,优化锁定表建立索引优化查询语句...1、从定义上却分主键:唯一标识一条记录,不能有重复的,不允许为空外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值索引:该字段没有重复值,但可以有一个空值2、从作用上区分主键:用来保证数据完整性外键...:用来和其他表建立联系用的索引:是提高查询排序的速度3、从个数上区分主键:主键只能有一个外键:一个表可以有多个外键索引:一个表可以有多个唯一索引52.SQL语句优化方法Where子句中:where表之间的连接必须写在其他
总结:约束关系是针对双方的 添加了外键约束后,主表的修改和删除数据受约束。 添加了外键约束后,从表的添加和修改数据受约束。 在从表上建立的外键,要求主表必须存在。...关于约束的开发建议 MySQL虽然提供了外键约束,但我们一般不使用,通常会在Java中进行约束,因为在sql中约束,当外键关联过多时,会对系统造成阻塞,影响系统性能。...问题1:如果两个表之间有关系(一对一、一对多),比如:员工表和部门表(一对多),它们之间是否一定要建外键约束? 答:不是的 问题2:建和不建外键约束有什么区别?...例如:在员工表中,可以添加一个员工的信息,它的部门指定为一个完全不存在的部门。 问题3:那么建和不建外键约束和查询有没有关系?...答:没有 在 MySQL 里,外键约束是有成本的,需要·消耗系统资源·。对于大并发的 SQL 操作,有可能会不适合。 比如大型网站的中央数据库,可能会 因为外键约束的系统开销而变得非常慢 。
(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.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 一对多关系
MySQL常用存储引擎: MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。 InnoDB:支持事务,支持外键,支持行级锁定,性能较低。...外键约束:FOREIGN KEY,A表中的外键列. A表中的外键列的值必须参照于B表中的某一列(B表主 键)。 6.5.1、主键约束 主键值是这行记录在这张表中的唯一标识,就如同身份证号。...字段添加外键约束,引用的是t_calss的no字段 ); 6.5.3、唯一性约束(unique) 唯一约束修饰的字段具有唯一性,不可以重复,但是可以为NULL,也可以同时为NULL。...设计从表可以有两种方案: 在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束; 给t_card表的主键添加外键约束(相对t_user表),即t_card表的主键也是外键。...例如再创建一张表t_stu_tea表,给出两个外键,一个相对t_stu表的外键,另一个相对t_teacher表的外键。
(primary key)、外键(foreign key)、替代键(alternate key)、复合键(composite key)以及代理键(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂的过程,并不是简单的写一个源SQL查询并与目标进行比较来实现的。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接的大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量的有用的信息。...主要验证数据是否遵循了设计预定的数据模式规则或标准 2 验证数据经过业务转换后是否满足预定的转换逻辑以及验证源和目标数据计算是否一致 主要表的主、外键等越苏是否正常 3 验证ETL过程数据表的主外键关系是否保存...写SQL或数据库操作代码完成实现各种测试场景 等等其他工作内容 下半年总体目标是:编撰译ETL测试系列和Python3接口测试系列
(primary key)、外键(foreign key)、替代键(alternate key)、复合键(composite key)以及代理键(surrogate key)。...Data Transformation Testing(数据转换测试) 测试数据转换是一个复杂的过程,并不是简单的写一个源SQL查询并与目标进行比较来实现的。...ETL测试人员需要更为优美的SQL查询语句,因为在ETL测试各阶段可能需要编写具有多个连接的大查询来验证数据。ETL映射表在为数据验证编写查询时提供大量的有用的信息。...主要验证数据是否遵循了设计预定的数据模式规则或标准 2 验证数据经过业务转换后是否满足预定的转换逻辑以及验证源和目标数据计算是否一致 主要表的主、外键等越苏是否正常 3 验证ETL过程数据表的主外键关系是否保存...梳理业务需求和设计测试策略 写SQL或数据库操作代码完成实现各种测试场景 等等其他工作内容
InnoDB: 支持 ACID 的事务, 支持事务的四种隔离级别; 支持行级锁及外键约束: 因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间( 共享表空间, 表大小不受操作系统控制...6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识 ,一个表只有一个主键。 主键也是候选键。 按照惯例, 候选键可以被指定为主键, 并且可以用于任何外键 引用。...’ 、’ 性别 ’ 最好适用 ENUM 2、 使用连接 (JOIN)来代替子查询 3、 适用联合 (UNION)来代替手动创建的临时表 4、 事务处理 5、 锁定表、 优化事务处理 6、 适用外键,...主键、 外键和索引的区别 定义: 主键 – 唯一标识一条记录, 不能有重复的, 不允许为空 外键 – 表的外键是另一表的主键 , 外键可以有重复的 , 可以是空值 索引 – 该字段没有重复值, 但可以有一个空值...作用: 主键 – 用来保证数据完整性 外键 – 用来和其他表建立联系用的 索引 – 是提高查询排序的速度 个数: 主键 – 主键只能有一个 外键 – 一个表可以有多个外键 索引 – 一个表可以有多个唯一索引
但是如果长连接过多,会占用过多的内存,从而导致OOM。 b. 查询缓存:命中则直接返回结果 一般不建议使用,因为查询缓存的失效非常频繁,往往是弊大于利。...InnoDb: 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数...事务处理 锁定表、优化事务处理 适用外键,优化锁定表 建立索引 优化查询语句 24....定义: 主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引–该字段没有重复值,但可以有一个空值 作用: 主键–用来保证数据完整性 外键...–用来和其他表建立联系用的 索引–是提高查询排序的速度 个数: 主键–主键只能有一个 外键–一个表可以有多个外键 索引–一个表可以有多个唯一索引
、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 字段 二十二、表连接查询 什么是表连接查询 需要联合多张表才能查到想要的数据 表连接的类型
领取专属 10元无门槛券
手把手带您无忧上云