精华内容
下载资源
问答
  • MySQL的外键约束

    2021-03-04 21:43:24
    外键是指引用另外一个表中的一或多数据,被引用的应该具有主键约束或者唯一性约束。外键用来建立和加强两个表数据之间的连接。 2.建立两张表 /*===========================================================...

    1. 外键的定义

    外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立和加强两个表数据之间的连接。

    2.建立两张表

    • 从表
    /*==============================================================*/
    /* Table: claim_voucher    报销单表                                     */
    /*==============================================================*/
    create table claim_voucher
    (
       id                   int not null auto_increment,-- 编号
       cause                varchar(100),  -- 事由
       create_sn            char(5),	   --创建人
       create_time          datetime,      --创建时间
       next_deal_sn         char(5),       --待处理人
       total_amount         double,        --总金额
       status               varchar(20),   --状态
       primary key (id)
    );
    
    • 主表
    /*==============================================================*/
    /* Table: employee         员工表                                     */
    /*==============================================================*/
    create table employee
    (
       sn                   char(5) not null,--编号
       password             varchar(20),--密码
       name                 varchar(20),--名字
       department_sn        char(5),--所属部门
       post                 varchar(20),--职务
       primary key (sn)
    );
    

    3.建立外键

    alert table 表名 add constraint FK_ID foreign key(外键字段名) references 外表表名(主键字段名)
    
    alter table claim_voucher add constraint FK_Reference_2 foreign key (next_deal_sn)
    references employee (sn) on delete restrict on update restrict;
    
    

    4.外键约束On Delete和On Update的使用

    On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。
    

    1.ON DELETE

    • restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。
    • no action:意思同restrict.即如果存在从数据,不允许删除主数据。
    • cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。
    • set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)

    2.ON UPDATE

    • restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。
    • no action:意思同restrict.
    • cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。
    • set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。
      注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。
    展开全文
  • 查询外键字段信息,

    2021-05-03 07:13:21
    查询外键字段信息,查询外键字段信息SET pagesize 1000COL 外键拥有者 FOR A20COL 外键表 FOR A30COL 外键 FOR A20COL 主键拥有者 FOR A20COL 主键表 FOR A30COL 主键 FOR A20COL 外键名 FOR A30COL 主键名 FOR ...

    查询外键字段信息,

    查询外键字段信息

    SET pagesize 1000

    COL 外键拥有者 FOR A20

    COL 外键表 FOR A30

    COL 外键列 FOR A20

    COL 主键拥有者 FOR A20

    COL 主键表 FOR A30

    COL 主键列 FOR A20

    COL 外键名 FOR A30

    COL 主键名 FOR A30

    SELECT A.OWNER 外键拥有者,

    A.TABLE_NAME 外键表,

    C.COLUMN_NAME 外键列,

    B.OWNER 主键拥有者,

    B.TABLE_NAME 主键表,

    D.COLUMN_NAME 主键列,

    C.CONSTRAINT_NAME 外键名,

    D.CONSTRAINT_NAME 主键名

    FROM DBA_CONSTRAINTS A,

    DBA_CONSTRAINTS B,

    DBA_CONS_COLUMNS C, --外键表

    DBA_CONS_COLUMNS D --主键表

    WHERE A.R_CONSTRAINT_NAME = B.CONSTRAINT_NAME

    AND A.CONSTRAINT_TYPE = 'R'

    AND B.CONSTRAINT_TYPE = 'P'

    AND A.R_OWNER = B.OWNER

    AND A.CONSTRAINT_NAME = C.CONSTRAINT_NAME

    AND B.CONSTRAINT_NAME = D.CONSTRAINT_NAME

    AND A.OWNER = C.OWNER

    AND A.TABLE_NAME = C.TABLE_NAME

    AND B.OWNER = D.OWNER

    AND B.TABLE_NAME = D.TABLE_NAME

    AND B.OWNER IN ('OWNERNAME');

    http://www.dengb.com/oracle/1355841.htmlwww.dengb.comtruehttp://www.dengb.com/oracle/1355841.htmlTechArticle查询外键字段信息, 查询外键字段信息 SET pagesize 1000 COL 外键拥有者 FOR A20 COL 外键表 FOR A30 COL 外键列 FOR A20 COL 主键拥有者 FOR A20 COL 主键表...

    展开全文
  • MySQL外键(详解)

    2021-11-17 17:13:28
       外键是指引用另外一个表中的一或多数据,被引用的应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接 ...

    MySQL外键(详解)

    什么是外键:
       外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束(简单来说外键是另一个表的主键或者唯一约束)。外键可以有重复的, 可以是空值,用来建立和加强两个表数据之间的连接
    在这里插入图片描述

    一、主外键关系
    在上图上涉及的两个表中,学生信息表 (stuInfo)为主表,学生
    成绩表(score)为从表;那么主从表之间有什么关系呢?

    1、当主表中没有对应的记录时,不能将记录添加到子表
      --------学生成绩表中不能出现学生信息表中没有的学号

    2、不能更改主表中的值而导致子表中的记录孤立
      --------学生信息表中的id变化了,学生成绩表中的id也要随着发生改变

    3、子表存在与主表对应的记录,不能从主表中删除该行
      --------不能把部门表中的数据删除

    4、删除主表前,先删子表
      --------先删除成绩表、后删除学生信息表

    二、外键的使用
    外键的使用需要满足下列的条件:
    1、两张表必须都是InnoDB表,并且它们没有临时表。

    2、建立外键关系的对应列必须具有相似的InnoDB内部数据类型。

    3、建立外键关系的对应列必须建立了索引。

    创建外键的两种方式:
    方式一:在创建表的时候进行添加
    方式二:表已经创建好了,继续修改表的结构来添加外键。

    在创建表的时候添加外键
    表1:

    create table stuInfo(	
    		Scode int primary key,   --学生的学号
    		Sname char(10),    --学生的姓名
    		Saddress varchar(50),    --学生的住址
    		Sgrade int,    --学生所在班级
    		Semail varchar(50),    --学生的邮箱地址
    		Sbrith date	
    )DEFAULT CHARSET='utf8';	
    

    表2:

    create table score(
    studentID	int,
    coureseID int,	
    score int,	
    scoreID int primary key,	
    foreign	key(studentID) references stuInfo(Scode)  --添加外键 )
    DEFAULT charset='utf8';
    

    建表以后添加外键:
    语法:alter table 表名称 add foreign key (列名称) references
    关联表名称(列名称);
    例:

    alter table stuInfo	add foreign key (scode) references score(studentID);
    

    三、删除外键
    语法:alter table 表名称 drop foreign key 外键名称;
    例:

    alter table score drop foreign key score_ibQk_1;	
    

    注意:如果没有在建表的时候标明外键名称,
    可以通过:

    show create table 表名;
    

    进行查看外键名称


    请添加图片描述

    感谢每一个认真阅读我文章的人!!!
    如果下面这些资料用得到的话可以直接拿走:

    1、自学开发或者测试必备的完整项目源码与环境

    2、测试工作中所有模板(测试计划、测试用例、测试报告等)

    3、软件测试经典面试题

    4、Python/Java自动化测试实战.pdf

    5、Jmeter/postman接口测试全套视频获取

    我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接点击此链接进群询问,群里也会有大神帮忙解答,也可以手动添加群号 743262921 备注222

    展开全文
  • MySQL删除外键列

    2021-02-10 01:17:23
    今天遇到一个要删除外键列的问题,我发现:Sql代码show create table userfans;Java代码| userfans | CREATE TABLE `userfans` (`id` int(11) NOT NULL AUTO_INCREMENT,`status` int(11) DEFAULT NULL,`update_time`...

    今天遇到一个要删除外键列的问题,我发现:

    Sql代码

    show create table userfans;

    Java代码

    | userfans | CREATE TABLE `userfans` (

    `id` int(11) NOT NULL AUTO_INCREMENT,

    `status` int(11) DEFAULT NULL,

    `update_time` datetime DEFAULT NULL,

    `user` int(11) DEFAULT NULL,

    `fllower` int(11) DEFAULT NULL,

    `follower` int(11) DEFAULT NULL,

    PRIMARY KEY (`id`),

    KEY

    `FKF025E60B81E8743E

    ` (`fllower`),

    KEY `FKF025E60BAFF2360E` (`user`),

    KEY `FKF025E60BC1B86A61` (`follower`),

    CONSTRAINT

    `FKF025E60B81E8743E

    ` FOREIGN

    KEY

    (`fllower`) REFERENCES `user` (`id`),

    CONSTRAINT `FKF025E60BAFF2360E` FOREIGN KEY (`user`) REFERENCES `user` (`id`),

    CONSTRAINT `FKF025E60BC1B86A61` FOREIGN KEY (`follower`) REFERENCES `user` (`id`)

    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |

    刚开始我想:是不是先删除KEY,再删除constraint,最后删除列?因为MySQL的外键列和不一样,MySQL的都是有KEY的;结果试了半天一直失败,最后发现,删除外键列竟然出奇的简单:

    Sql代码

    alter table userfans drop foreign key FKF025E60B81E8743E

    ;

    显示:

    Sql代码

    Query OK, 2 rows affected (0.32 sec)

    Records: 2  Duplicates: 0  Warnings: 0

    真的是踏破铁鞋,白费功夫!

    作者“绝尘”

    展开全文
  • MySQL添加外键报错:不匹配 报错信息 referencing column ‘xx’ and referenced column ‘xx’ in foreign key constraint ‘xx’ are incompatible 原本想将下面两个表的两个字段外键关联,在使用Navicat...
  • 对于两个通过外键关联的表,相关联字段中主键所在的表是主表,也称之为父表,外键所在的表是从表,也称之为子表,定义外键的时候需要遵守几个规则: 1、父表必须已经存在于数据库中,或者是当前正在创建的表。如果是...
  • 该篇主要介绍数据表在使用时的约束。空属性,默认值,描述,zerofill,主键,自增长,唯一键,外键。 其中详细介绍主键,自增长,唯一键,外键的使用方法。
  • MySQL 之 约束 (主键、唯一、非空、自增、外键) 目的:使得数据更准确,更...2、特点:增加主键约束的字段)的值必须是非空 + 唯一的,一个表只有一个主键约束 3、作用:保证表中不会出现两条无法区分的记录 ...
  • 外键字段
  • 概念:主键(primary key)能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但...外键(foreign key)是用于建立和加强两个表数据之间的链接的一或多外键约束主要用来维护两个表之间数据的一致性...
  • MySQL外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一或者多。一个表可以有一个或多个外键外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表...
  • select * from user_cons_columns cl where cl.column_name = 外键的名称
  • oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助:1、查询出所有的用户表select * from user_tables 可以查询出所有的用户表 select owner...
  • 这篇博客介绍如何在只知道外键名称的情况下查找到关联的表与。 环境:Oracle select * from dba_constraints where constraint_name='FK_CONSTRAINT_NAME' and constraint_type = 'R'; 注意外键名称为全大写格式
  • 外键

    2021-03-03 20:16:08
    如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。...
  • 创建了两个表:t_test1 t_test2 create table t_test1( id_1 varchar2(4), ...--主键含两个字段 ...设置t_test2的外键 t_test2....注:从表的外键应对应主表的唯一主键字段(主键字段唯一)。
  • Mysql 外键的详解和实例

    千次阅读 2018-01-06 10:31:00
    摘要: 外键具有保持数据完整性和一致性的机制,目前MySQL只在InnoDB引擎下支持,下面实例下一个小操作来说明下外键的关联操作,用来保持数据的完整性和一致性。 外键具有保持数据完整性和一致性的机制,对业务处理...
  • MySQL怎么设置外键约束?

    千次阅读 2021-01-18 19:07:52
    MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一或者多。一个表可以有一个或多个外键外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个...
  • 引入 1.什么是完整性约束, 为什么使用 为了规范数据格式, 在用户进行插入、修改...表完整性约束条件与字段数据类型的宽度一样, 都是可选参数,分为以下几种: 完整性约束关键字 含义 NULL 标识字段
  • 主键和外键的作用

    2021-04-07 08:18:32
    而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从...
  • 外键(foreign key):外面的键(键不在自己表中),如果一张表中有...创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) reference 外部表(主键字段) 在新增表之后增加外键:修改表结构Alter tabl...
  • navicat怎么查看表中的外键

    千次阅读 2021-01-19 21:08:27
    2、选中右边 的区域的某张表查看表中的外键,具体操作如下图所示:3、接上一步继续操作,在单击表之后,在上方的菜单栏上选中菜单 单击 设计表 选项 如下图所示:4、最后一步 查看表中的外键字段,操作接第3步,操作...
  • mysql外键详解

    2021-01-19 06:43:21
    不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。2.2、外键可以是一对一的,一个表的记录...
  • 如何在MySQL中设置外键约束

    千次阅读 2021-01-18 21:31:24
    (1) 外键的使用:外键的作用,主要有两个:一个是让数据库自己通过外键来保证数据的完整性和一致性一个就是能够增加ER图的可读性有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有...
  • Django中外键使用详解

    万次阅读 2018-10-31 00:21:00
    在写项目的过程中我们不可避免的会使用到外键这个东西,那么Django中是怎样来使用外键的呢? 了解外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键...
  • MySQL主键跟外键

    千次阅读 2021-01-19 05:46:35
    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:1.主键是能确定一条记录的唯一...比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。数据库中主键和外键的设计原则主键和外键是把多个表组织...
  • 2. 外键和被引用键必须是索引中的第一,InnoDB 不会自动为外键和被引用键建立索引,必须明确创建它们。3. 外键与对应的被引用键在 InnoDB 内必须 有相似的内部数据类型,以便他们不需要一个类型转换就可以进行比较...
  • 解决:Navicat for mysql 设置外键出错

    千次阅读 2019-08-29 21:21:27
    1 看下是不是外键允许为空,不唯一等约束条件不满足 2 或者外键设置删除时为 restrict 1. 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能...
  • MySQL入门(alter语法 与 外键

    千次阅读 2021-02-03 13:02:44
    MySQL入门(三)字段的修改、添加、与删除修改表字段使用alter table语句,谨记!create table tf1(id int primary key auto_increment,x int,y int);# 修改alter table tf1 modify x char(4) default '';alter table ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,233
精华内容 9,293
关键字:

外键字段所在列