外键

TP5 hasOne 和 belongsTo

天大地大妈咪最大 提交于 2019-11-29 13:59:34
一对一关系,存在主从关系(主表和从表 ),主表不包含外键,从表包含外键。 hasOne 和 belongsTo 都是一对一关系,区别: 在主表的模型中建立关联关系,用 hasOne 在从表模型中建立关联关系,用 belongsTo 转自 https://blog.csdn.net/github_37512301/article/details/75675054 http://www.cnblogs.com/xiaoliwang/p/9348950.html 来源: CSDN 作者: Oneshop商城 链接: https://blog.csdn.net/wsxc451/article/details/82456103

MySQL 如何删除有外键约束的表数据

会有一股神秘感。 提交于 2019-11-29 11:34:06
在MySQL中删除一张表或一条数据的时候,出现 [Err] 1451 -Cannot deleteorupdatea parent row: aforeignkeyconstraintfails (...) 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。 禁用外键约束,我们可以使用: SETFOREIGN_KEY_CHECKS=0; 然后再删除数据 启动外键约束,我们可以使用: SETFOREIGN_KEY_CHECKS=1; 查看当前FOREIGN_KEY_CHECKS的值,可用如下命令: SELECT @@FOREIGN_KEY_CHECKS; 来源: https://www.cnblogs.com/yuhuameng/p/11516652.html

Mybatis 级联插入更新

柔情痞子 提交于 2019-11-29 09:58:14
刚开始接触Mybatis,在进行级联插入更新时发现不是很方便: 现有表A和B,B表的主键为A表的外键,先有需求是,插入一条B,并且与B关联的A也随之更新其外键。 所做的方式是先Save一条B, 然后查找出来B。 然后通过A的Set 方法把B set进去 然后UPDATE A 过程比较繁琐,不知大家有没有什么好的做法 转载于:https://my.oschina.net/u/580135/blog/612282 来源: https://blog.csdn.net/chuteng3602/article/details/100773057

mysql 利用外键级联删除、更新

北战南征 提交于 2019-11-29 08:41:57
mysql 利用外键级联删除、更新 MySql支持外键的存储引擎只有InnoDB 在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。 在创建子表索引的时候,可以指定在删除、更新父表时,对子表进行相应的操作,包括 restrict no action set null cascade. 其中restrict 和 no action 相同 :在子表有关联记录的情况下父表不能更新; cascade: 父表在跟新或者删除时,更新或者删除子表对应的记录; set null: 表示父表在更新或者删除的时候,子表对应的字段被set null. 创建数据库: Create databvase test; 创建两个表,其中第一个表的“id”是第二个表(userinfo)的外键: CREATE TABLE `user` ( `id` int ( 4 ) NOT NULL , `sex` enum( 'f' , 'm' ) DEFAULT NULL , PRIMARY KEY ( `id` ) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table `userinfo` ( `sn` int ( 4 ) not null auto_increment, `userid` int ( 4 ) not null ,

MySql数据库约束

折月煮酒 提交于 2019-11-29 08:36:26
    《MySQL技术内幕:InnoDB存储引擎》本书从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量实践,本着将书读薄的思想,循序渐进的记录对本书学习的读书笔记。   关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制。当前几乎所有的关系型数据库都提供了约束(constraits)机制,该机制提供了一条强大而简易的途径来保证数据库中的数据完整性,一般来说,数据完整性有以下三种形式: (1)实体完整性保证表中有一个主键,在InnoDB存储引擎中,用户可以通过定义Primary Key或Unique Key约束来保证实体的完整性,用户还可以编写一个触发器来保证数据完整性、 (2)域完整性保证数据每列的值满足特定的条件。在InnoDB存储引擎中,域完整性可以通过以下途径来保证:   a. 选择适合的数据类型确保一个数据值满足条件   b. 外键(Foreign Key)约束   c. 编写触发器   d. 还可以考虑用default约束作为强制域完整性的一个方面 (3)参照完整性保证两张表之间的关系,InnoDB存储引擎提供了以下几种约束:   a. primary key   b. unique key   c. foreign key   d. default  

MySql常见约束

青春壹個敷衍的年華 提交于 2019-11-29 08:35:57
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。 分类:六大约束   1.NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。   2.DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别   3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。   4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。   5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。   6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。例如学生表的专业编号 添加约束的实际:   1.创建表时   2.修改表时 约束的添加分类:   列级约束:六大约束语法上都支持,但外键约束没有效果   表级约束:除了非空、默认、其它的都支持。   示例:     ①添加列级约束    1 create table if not exists t_stuinfo( 2 id int primary key, #主键 3 stuName varchar(20) not null, #非空 4 gender char(1) check(gender=

MySQL.常见表选项及约束

孤人 提交于 2019-11-29 08:35:21
1.create table 选项   1.指定列选项 default、comment   2.指定表选项 engine、auto_increment、comment 2.create table 约束   1.非空约束:not null   2.唯一约束:unique   3.主键约束: primary key   4.外键: foreign key   5.检查enum、set:chect 一、create table 选项  a. 定义列的时候,指定列选项   1.default<literal>:定义列的默认值    当插入一个新行到表中并且没有给该列明确赋值,如果定义了列的默认值,将自动得到默认值,如果没有,则为null    也可以在insert和 update 语句中使用 default 关键字给默认值赋值,函数default(column)也得到一个列的默认值   2.comment 用来给列添加注释,最多为255个字符,注释将会保存在数据字典中   b.  在create table 语句中的表选项    1.engine :指定表使用的储存引擎    #储存引擎:决定了表中的数据如何存储以及如何访问,还有事务如何处理                       MySQL中允许对每个表使用不同的储存引擎,如果在create table 中没有使用储存引擎

MySQL常见建表选项及约束

扶醉桌前 提交于 2019-11-29 08:35:08
阅读目录---MySQL常见的建表选项及约束: 1、 create table选项   1、 指定列选项 : default 、 comment   2、 指定表选项 : engine 、auto_increment、comment 2、 create table约束     1、 not null :非空约束   2、 unique :唯一约束   3、 primary key :主键约束   4、 foreign key :外键   5、 check :检查---enum、set 一、CREATE TABLE 选项 1、在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值   当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没有,则为null。 当然,也可以在INSERT和UPDATE语句中使用DEFAULT关键字显式地给列赋默认值: 函数default(column)可以得到一个列的默认值: 2)comment:用来给列添加注释,最多255个字符,注释会保存到数据字典中。   创建带有列注释的表stu_comment 从数据字典查询注释信息 2、在CREATE TABLE语句中的表选项 1)engine:指定表使用的存储引擎 存储引擎:决定了数据如何存储以及如何访问,还有事务如何处理

0607mysql基础:常用属性、约束

只愿长相守 提交于 2019-11-29 08:34:58
一、常用属性 1、auto_increment:自增长   auto_increment能为新插入的行赋一个唯一的整数标识符。为列赋此属性将为每个新插入的行赋值为上一次插入的ID+1。   MySQL要求将auto_increment属性用于作为主键的列。此外,每个表只允许有一个auto_increment列。 2、binary:区分大小写 binary属性只用于char和varchar值。当为列指定了该属性时,将以区分大小写的方式排序。与之相反,忽略binary属性时,将使用不区分大小写的方式排序。 3、default:默认值 default属性确保在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为MySQL不允许插入函数或表达式值。此外,此属性无法用于BLOB或TEXT列。如果已  经为此列指定了NULL属性,没有指定默认值时默认值将为NULL,否则默认值将依赖于字段的数据类型。 4、index:索引 如果所有其他因素都相同,要加速数据库查询,使用索引通常是最重要的一个步骤。索引一个列会为该列创建一个有序的键数组,每个键指向其相应的表行。以后针对输入条件  可以搜索这个有序的键数组,与搜索整个未索引的表相比,这将在性能方面得到极大的提升   create table employees   (   id varchar(9) not null,  

mysql 表的完整性约束

戏子无情 提交于 2019-11-29 08:32:12
目录 mysql 表的完整性约束 约束概念 unsigned 设置某一个数字无符号 (整数类型 ,浮点类型不能是unsigned) not null 某一个字段不能为空(严格模式会影响非空设置的效果) default 给某个字段设置默认值(设置默认值) unique 设置某一个字段不能重复 (唯一约束) auto_increment 设置某一个int类型的字段 自动增加 (自增字段 必须是数字 且 必须是唯一的) primary key 设置主键 (这一个字段非空且唯一) foreign key 外键 (外键,涉及到两张表,数据类型一样,且有唯一约束) references 级联删除和更新 mysql 表的完整性约束 约束概念 为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测, 使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。 约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 # FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 unsigned