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

【重学 MySQL】六十六、外键约束的使用

它强制子表中的每个记录都引用主表中的一个现有的记录,从而维护数据的一致性完整性。 外键约束的概念 外键约束是作用于表中字段上的规则,用于限制存储在表中的数据。...关键字 FOREIGN KEY 主表从表/父表子表 主表(父表):被引用的表,被参考的表 从表(子表):引用别人的表,参考别人的表 例如:员工表的员工所在部门这个字段的值要参考部门表:部门表是主表,...外键约束的约束等级 在MySQL中,外键约束的约束等级决定了当主表中的记录被更新或删除时,子表中相应的外键记录将如何响应。...NO ACTION 或 RESTRICT: 含义:这两种约束等级在MySQL中的行为是相似的。它们都会阻止对主表中被引用的记录进行删除或更新操作,如果子表中存在引用该记录的外键记录。...SET DEFAULT: 含义:这个约束等级在MySQL的InnoDB存储引擎中是不被支持的。理论上,它意味着当主表中的记录被删除或更新时,子表中所有引用该记录的外键记录会被设置为一个默认值。

7810

mysql分区表_MySQL分区分表

merge分表,分为主表子表主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表中的。 我们可以通过主表插入查询数据,如果清楚分表规律,也可以直接操作子表。...count(*) | +———-+ | 16384 | +———-+ 1 row in set (0.00 sec) 2)对上面完整的表进行分表 **分表注意事项:** * 子表主表的字段定义需要一致...member where id%2=1; Query OK, 8192 rows affected (0.02 sec) Records: 8192 Duplicates: 0 Warnings: 0 5)查看主表两个子表中的数据...第一个子表部分数据如下: 第二个子表部分数据如下: 主表部分查询的部分数据如下: 数据总行数如下: 注意:总表只是一个外壳,存取数据发生在一个一个的子表里面。...每个子表都有自已独立的相关表文件,而主表只是一个壳,并没有完整的相关表文件,当确定主表中可以查到的数据分表之前查到的数据完全一致时,就可以将原来的表删除了,之后对表的读写操作,都可以对分表后的主表进行

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

    MySQL 之分区分表

    merge分表,分为主表子表主表类似于一个壳子,逻辑上封装了子表,实际上数据都是存储在子表中的。 我们可以通过主表插入查询数据,如果清楚分表规律,也可以直接操作子表。...count(*) | +----------+ | 16384 | +----------+ 1 row in set (0.00 sec) 2)对上面完整的表进行分表 分表注意事项: 子表主表的字段定义需要一致...where id%2=1; Query OK, 8192 rows affected (0.02 sec) Records: 8192 Duplicates: 0 Warnings: 0 5)查看主表两个子表中的数据...第二个子表部分数据如下: ? 主表部分查询的部分数据如下: ? 数据总行数如下: ? 注意:总表只是一个外壳,存取数据发生在一个一个的子表里面。...每个子表都有自已独立的相关表文件,而主表只是一个壳,并没有完整的相关表文件,当确定主表中可以查到的数据分表之前查到的数据完全一致时,就可以将原来的表删除了,之后对表的读写操作,都可以对分表后的主表进行

    1.6K21

    2024Mysql And Redis基础与进阶操作系列(4)作者——LJS

    1.2 关键字 FOREIGN KEY 1.3 主表从表/父表子表 主表(父表):被引用的表,被参考的表 从表(子表):引用别人的表,参考别人的表 例如:员工表的员工所在部门这个字段的值要参考部门表...例如:学生表、课程表、选课表:选课表的学生课程要分别参考学生表课程表,学生表课程表是 主表,选课表是从表。 1.4 特点 从表的外键列,必须引用/参考主表的主键或唯一约束的列 为什么?...添加了外键约束后,从表的添加修改数据受约束 在从表上建立外键,要求主表必须存在删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除 1.7 约束等级 Cascade方式 在父表上...update/delete记录时,同步update/delete掉子表的匹配记录 Set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为...问题3:那么建和不建外键约束查询有没有关系? 答案:没有 在 MySQL 里,外键约束是有成本的,需要消耗系统资源。对于大并发的 SQL 操作,有可能会不适合。

    9610

    ​「免费开源」基于VueQuasar的crudapi前端SPA项目实战之业务数据(七)

    CTableNew(一对一主子表CTableList(一对多主子表)。...CTableEdit 编辑数据时候采用该组件,CTableEdit把主表字段平铺展示,然后可以嵌套CTableNew(一对一主子表)、CTableEdit(一对一主子表)、CTableList(一对多主子表...,默认查询全部字段关联子表 expand string 选择需要展开的关联主表,默认关联主表字段只查询idname search string 全文检索关键字,通过内置的系统字段全文索引fullTextBody...int32 每页数量 字段1 Object 最终转换成mysql中=操作符 字段2 Object 最终转换成mysql中=操作符 .........Object 最终转换成mysql中=操作符 字段1,字段2,...之间的关系为并且AND关系,更多内容可以参考之前的一篇文章 数据条件查询分页 小结 本文主要介绍了介绍业务数据的增删改查功能,

    71330

    MySql---外键复习

    外键复习 MySQL外键约束(FOREIGN KEY) 主表从表 选取设置 MySQL 外键约束的字段 在创建表时设置外键约束 部门员工案例演示 如果添加不符合外键约束的数据,会报错 小总结 注意事项...级联操作 格式 测试级联操作 ---- MySQL外键约束(FOREIGN KEY) MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。...---- 主表从表 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。...> 主键列1 [,主键列2,…] 其中:外键名为定义的外键约束的名称,一个表中不能有相同名称的外键;字段名表示子表被外健约束的字段名;主表名即被子表外键所依赖的表的名称;主键列表示主表中定义的主键列或者列组合...---- 部门员工案例演示 创建父表从表 USE test1; #部门表--父表先创建 #主表: 可以约束其他表的字段值的表 CREATE TABLE depart( id INT(4) PRIMARY

    5.2K30

    MySQL 的3个小知识点,你知道吗?

    常见的外键约束关键字有:cascade、restrict、no actionset defaultset null,其中, cascade:表示级联,父表的动作会级联到主表中; restrict:表示严格模式...,它是MySQL特有的关键字,表示父表的上不能直接删除或者更新有外键关联的记录; no action:表示严格模式,标准SQL关键字,在MySQL中,它restrict的意思相同; set default...:父表上的记录删除后,关联的子表记录会设置成默认值; set null:父表上的记录删除后,关联的子表记录会设置成null值。...从字面意思来看,no action似乎代表主表数据删除之后,子表上不发生任何动作;而restrict看起来是严格禁止主表删除数据的,但是实际上,二者在MySQL中,意思是一样的。...> select * from parent; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 2、创建一个child的子表,并插入数据 mysql>

    66220

    【重学 MySQL】六十九、揭秘级联约束,让你的数据库关系更智能、更强大!

    【重学 MySQL】六十九、揭秘级联约束,让你的数据库关系更智能、更强大! 在MySQL数据库中,级联约束是维护数据完整性一致性的重要机制。...级联约束的定义 级联约束是指在定义外键时,指定当主表中的数据发生变化时,引用这些数据的子表会自动进行相应的更新或删除操作。这种机制有助于防止数据不一致和孤立数据的存在。...级联约束的类型 在MySQL中,级联约束主要通过ON DELETEON UPDATE子句来实现,具体类型包括: CASCADE: ON DELETE CASCADE:当主表中的数据被删除时,关联表中的相关数据也会被自动删除...SET NULL: ON DELETE SET NULL:当主表中的数据被删除时,关联表中的相关数据会被设置为NULL。需要注意的是,子表的外键列不能为NOT NULL约束。...SET DEFAULT: 在父表有变更时,子表将外键列设置成一个默认值。然而,在MySQL的InnoDB存储引擎中,SET DEFAULT并不被支持。

    12410

    360 Atlas生产环境使用心得

    子表总表都在一个Mysql实例上。...实例,多项以,(逗号)分隔 pwds 密码,必须Mysql实例的密码一样,用安装目录 bin目录下的加密程序encrypt加密 event-threads 工作线程数,对性能影响大 sql-log SQL...,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘 proxy-address Atlas监听的工作接口IP端口...:后端Mysql实例地址 tables:分表参数,格式: 数据库名.表名.分表字段.子表数量 举1个栗子,假如我们在做社区,社区主要功能是发帖回帖,那主要是2张表(只是为了演示,不会把真实实际场景所有字段加上...分表后,如果删掉主表,则不带分表字段的查询会报错(如下图);如果保留主表,则查询的是主表数据。 ? 4.

    2.1K41

    MySQL存储引擎 InnoDB 介绍

    外键约束    mysql 支持外键的存储引擎只有innodb,在创建外键的时候,要求父表必须有对应的索引,子表创建外键的时候也会自动创建对应的索引  下面演示两个表 country 父表country_id...在删除更新父表时,对子表相应的操作包括restrict,cascade,set null no action。   ...set null则表示在更新或者删除时,子表对应字段被设置为null。 了解后在看on delete ,restrict 是指:主表删除记录时,如果子表有对应记录,则不允许删除。   ...on update cascade 是指:主表更新记录时,如果子表有对应记录,则子表对应更新; --先维护下数据 INSERT INTO country(country) VALUES('中国'); INSERT...country WHERE country_id=1 -- 再试下on update cascade 是指主表更新记录时,如果子表有对应记录,则子表对应更新; UPDATE country SET country_id

    1.2K20

    MySql数据库列表数据分页查询、全文检索API零代码实现

    [listapi] API为/api/business/{name},其中name为对象名称复数形式(兼容对象名称),查询参数如下: 参数 类型 描述 select string 选择查询需要的字段关联子表...,默认查询全部字段关联子表 expand string 选择需要展开的关联主表,默认关联主表字段只查询idname search string 全文检索关键字,通过内置的系统字段全文索引fullTextBody...int32 每页数量 字段1 Object 最终转换成mysql中=操作符 字段2 Object 最终转换成mysql中=操作符 .........字段选择select [select1] 默认情况下会选择所有字段,select如果不指定表示所有的意思 [select2] 如果指定了字段,就查询部分字段,比如只查询id,namemobile,其它字段子表...关联表扩展expand [expand1] 子主关系中,默认只查询主表idname,避免主表查询层次太深。

    1.6K11

    MySQL】04_约束

    在创建唯一约束的时候,如果不给唯一约束命名,就默认列名相同。 MySQL会给唯一约束的列上默认创建一个唯一索引。...FOREIGN KEY 约束 别名:外键约束 主表从表/父表子表 主表(父表):被引用的表,被参考的表 从表(子表):引用别人的表,参考别人的表 例如:员工表的员工所在部门这个字段的值要参考部门表:...例如:学生表、课程表、选课表:选课表的学生课程要分别参考学生表课程表,学生表课程表是主表,选课表是从表。 特点: 从表的外键列,必须引用/参考主表的主键或唯一约束的列。为什么?...KEY: 在表级指定子表中的列 -- REFERENCES: 标示在父表中的列 create table dept( #主表 did int primary key, #部门编号 dname varchar...添加了外键约束后,从表的添加修改数据受约束 在从表上建立外键,要求主表必须存在 删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除 约束等级 Cascade方式 :在父表上update

    2.4K20

    【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询

    文章目录 前言 一、基于SqlSugar的多库多表融合查询 1.安装包 2.订单表 3.添加连接 3.1 初始化添加 3.2 动态添加 4.查询 4.1 子表主表(一对一)查询 4.2 主表子表...,51JobBoss直招简历数超过国外框架 Nhibernate PetaPoco, 仅次于DapperEF Core , 占Dapper 40% 。...一般比较大型复杂的系统都会遇到如下问题: 多库查询:比如 MYSQL一个SQLSERVER进行联表查询 ,或者SQLITEMYSQL进行联表查询 多服务器查询:A服务器B服务器查询 SqlSugar...; 4.查询 4.1 子表主表(一对一)查询 1、通过Tenant自动映射 //通过实体类特性Tenant自动映射不同数据库进行查询 var list=db.QueryableWithAttr<OrderItem...typeof(Order), "db1")//Order是db2 .Includes(z => z.Order) .ToList(); 4.2 主表子表

    1.1K30

    第13章_约束

    在创建唯一约束的时候,如果不给唯一约束命名,就默认列名相同。 MySQL 会给唯一约束的列上默认创建一个唯一索引。...# 6.2 关键字 FOREIGN KEY # 6.3 主表从表 / 父表子表 主表(父表):被引用的表,被参考的表 从表(子表):引用别人的表,参考别人的表 例如:员工表的员工所在部门这个字段的值要参考部门表...例如:学生表、课程表、选课表:选课表的学生课程要分别参考学生表课程表,学生表课程表是主表,选课表是从表。...KEY: 在表级指定子表中的列 -- REFERENCES: 标示在父表中的列 create table dept( #主表 did int primary key, #部门编号 dname...添加了外键约束后,从表的添加修改数据受约束 在从表上建立外键,要求主表必须存在 删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除 # 6.7 约束等级 Cascade

    37930

    MySQL约束详接

    在创建唯一约束的时候, 如果不给唯一约束命名,就默认列名相同。 MySQL会给唯一约束的列上默认创建一个唯一索引。...作用 某个字段的值自增 关键字 auto_increment 如何指定自增约束   建表后 alter table 表名称 modify 字段名 数据类型 auto_increment;  MySQL...FOREIGN KEY关键字  主表从表/父表子表 主表(父表):被引用的表,被参考的表从表(子表):引用别人的表,参考别人的表 例如:员工表的员工所在部门这个字段的值要参考部门表:部门表是主表,员工表是从表...例如:学生表、课程表、选课表:选课表的学生课程要分别参考学生表课程表,学生表课程表是主表,选课表是从表。...总结:约束关系是针对双方的添加了外键约束后,主表的修改删除数据受约束添加了外键约束后,从表的添加修改数据受约束在从表上建立外键,要求主表必须存在删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除

    1.8K10

    MySQL

    编辑的内容会有text或longtext进行存储 longtext 超大文本 3、日期型 名称 取值范围 datetime 内部以日期格式存放数据 , 是以系统的时间为准 timestamp 时间戳 , 是以mysql...有外键的表是子表,没有外键的表是主表,一般情况下主表的数据信息会相对于少于子表(这不是绝对的)。主要还是看有没有关联字段(外键)。 设置主外键关系是在子表上进行设置....设置完主外键关系之后,子表中添加数据时的外键字段中的数据在主表中必须存在,如果不存在将会引发异常。...add constraint FK_ 外键名称 foreign key(子表中的关联字段) references 主表名(主表中的主键字段); 案例: alter table student add...constraint FK_GRADE_ID1 foreign key (gradeid) references grade(gradeid) 2) 第二种在建表的时候指定主外键关系 mysql> create

    17720
    领券