精华内容
下载资源
问答
  • 1、准备测试工作 MySQL外键约束删除时和更新时各取值的含义,创建2个表,分别为studnet 学生表和...并插入数据如图: 2、删除时属性,可能取值如上图为:默认(RESTRICT),RESTRICT,No ACTION,CASCAD...

    1、准备测试工作

    MySQL外键约束删除时和更新时各取值的含义,创建2个表,分别为studnet 学生表和monitor 班长表:

    学生表有学号和姓名2个属性;

    班长表有班级和学号2个属性。

    班长表设置外键学号,连接主表学生表的学号属性。

    并插入数据如图:

     

     

    2、删除时属性,可能取值如上图为:默认(RESTRICT),RESTRICT,No ACTION,CASCADE,SET NULL属性。

    取值为No Action或者Restrict时,则当在父表(即外键的来源表student)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

     

     

    当取值为Cascade时,则当在父表(即外键的来源表student)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表monitor)中的记录。

     

     

    当取值为Set Null时,则当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

     

    3、更新时属性,可能取值如上图为:默认(RESTRICT),RESTRICT,No ACTION,CASCADE,SET NULL属性。

    当取值为No Action或者Restrict时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。

    当取值为Cascade时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。

    当取值为Set Null时,则当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

    更新时同理!!!不测试了!

    4、总结

    外键的使用对于减少数据库冗余性,以及保证数据完整性和一致性有很大作用。

    另外注意,如果两张表之间存在外键关系,则MySQL不能直接删除表(Drop Table),而应该先删除外键,之后才可以删除。

    所以一般默认就好(RESTRICT)。

    展开全文
  • 1.已知两个表格之间的关系如图所示,我们可以知道stucou表中的couno为course表中couno的外键(这里可以查看外键的相关知识)现在我们要往stucou表中插入数据。1.由于外键的约束,我们首先必须在course表中插入相应的...

    1.已知两个表格之间的关系如图所示,我们可以知道stucou表中的couno为course表中couno的外键(这里可以查看外键的相关知识)


    现在我们要往stucou表中插入数据。

    1.由于外键的约束,我们首先必须在course表中插入相应的数据(也就是两个表格对应的couno值必须一致)

    insert into Course values('110','课程名','课程类别','4.0','老师名','01','上课时间','22','44','1')

    2.此时便可以在stucou中添加数据了

    insert into StuCou values('10000012','110','4','报名','null')


    3.这里给stucou添加一个触发器,当给stucou添加数据时,相应的,course表中的willnum也会增加(这里的触发器只给出了增加数据时给的反应的示例)

    go
    create trigger T_stt on stucou
    for insert,update,delete
    as
    update course set willnum=willnum+(select count(couno) from inserted) where couno=(select couno from inserted)
    go


    结果如图所示(这里willnum=49是因为测试时多加了几条数据)



    ps:有时依然无法添加数据的原因可能在于触发器:

    内存中只有存在deleted表和inserted表,如果要修改,先把要修改的记录放在deleted表里,然后再把修改后的记录放在inserted里才行。把这个触发器删除之后恢复正常。


    展开全文
  • mysql数据库表格添加外键

    千次阅读 2019-05-22 12:58:17
    一个表格建好以后,需要和两一个表关联,添加外键代码: 将表格studentInfo中的rid字段设置为外键,与表格room关联(room中的rid为主键) ALTER TABLE studentInfo ADD CONSTRAINT FOREIGN KEY(rid) REFERENCES room...

    一个表格建好以后,需要和两一个表关联,添加外键代码:
    将表格studentInfo中的rid字段设置为外键,与表格room关联(room中的rid为主键)

    ALTER TABLE studentInfo ADD CONSTRAINT  FOREIGN KEY(rid) REFERENCES room(rid)  
    

    另:补充一个更改表名的代码操作

    ALTER TABLE studentInfo RENAME studentInfo2; 
    
    展开全文
  • 数据库中添加外键的两种方式

    千次阅读 2019-08-09 11:37:27
    article">MySQL数据库中添加外键的两种方式 ...
      article">MySQL数据库中添加外键的两种方式

      关于MySQL数据表中添加外键的两种方式:

      • 第一种方式(创建表之后添加)
                 alter table user add foreign key(pid) references province(pId);

                      alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称(父表的主键名称);

      • 第二种方式 (创建表时添加)
          CREATE TABLE my_foreign1(
             id INT PRIMARY KEY AUTO_INCREMENT,
             NAME VARCHAR(20) NOT NULL COMMENT ‘学生姓名’,
             c_id INT COMMENT ‘班级id’,
             FOREIGN KEY(c_id) REFERENCES t_class(id)
        )CHARSET utf8;

      注意:外键必须是主键

                                      </div>
                  <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">
                      </div>
      </article>
      
      			<span class="desc oneline">在大型系统中(性能要求不高,安全要求高),最好使用外键(外键可以增强数据库数据的完整性和一致性)在大型系统中(性能要求高,安全自己控制),不用外键(有外键约束的话,插入字段会进行检查,影响效率)小系统...</span>
      		</a>
      		<span class="blog_title_box oneline ">
      								<span class="type-show type-show-blog type-show-after">博文</span>
      										<a target="_blank" href="https://blog.csdn.net/qq_41793222">来自:	<span class="blog_title"> qq_41793222的博客</span></a>
      											</span>
      	</p>
      </div>
      </div>
      

      sql server2008如何创建外键

      03-06 阅读数 3万+

      以前创建数据库时就是有主键的创建了主键,但是表之

      展开全文
    • MySQL数据库——外键约束

      千次阅读 2019-05-06 16:47:23
      文章目录方案一:单张表方案二:两张表方案三:两张表并添加外键约束 把用户信息及其收货地址保存在数据中 方案一:单张表 创建表 create table user_info( id char(36) primary key, user_name varchar(30) not ...
    • 数据库外键SQL语句的编写

      千次阅读 2021-01-16 22:05:54
      数据库外键SQL语句的编写 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2. 对于已经存在的字段添加外键约束...
    • 数据库主键外键联合主键 主键类型 所有数据库表必须具有一个主键列。 主键唯一地标识表中的一行,因此它受到以下约束的约束: 独特 非空 不可变的 选择主键时,我们必须考虑以下方面: 主键可用于通过...
    • 所谓的数据库物理外键与逻辑外键

      千次阅读 2020-07-17 19:55:52
      所谓的数据库物理外键与逻辑外键 当看到物理外键的时候,第一反应是有物理外键那一定有逻辑外键,那我熟悉的外键是什么? 物理外键指的是使用foreign key 作为外键关联另一张的字段的连接方法,而且限定了引擎为...
    • oracle数据库外键的定义与使用

      千次阅读 2020-05-08 17:21:42
      oracle数据库中的六大约束中,外键约束的写法最多,也最不好理解,所以作者在下面的内容中整理了oracle中外键约束的使用方法 一.外键约束存在的意义 在一个软件项目中,会产生大量的用户数据,平台数据,这些数据...
    • 数据库添加外键出错

      2019-04-08 14:46:43
      原因一:两张表的字段类型、长度不同,是不是unsigned 原因二:可能是因为数据库表中有数据,而作为主键的表中没有该数据,则添加外键失败。此时清空掉外键表中的数据即可。 ...
    • 2.检查是否已经建立了索引,一个外键必然会有一个索引。3.检查是否表内已经存有数据,导致约束失败4.检查被参考键和参考键的类型是否相同5.检查是否重建了同名的索引,比如第一次建立失败,再次建立可能会因为索引...
    • 数据库主键外键总结

      2019-09-26 20:36:32
      主键、外键和索引的区别 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键,外键可以有重复的,可以是空值 该字段没有...
    • 关系型数据库外键约束与关联

      千次阅读 热门讨论 2020-10-07 18:22:57
      外键用于支持关系型数据库的 “参照完整性”,外键具有保持数据完整性和一致性的机制,对业务处理有着很好的校验作用。 举例说明:假设 Table user 的 Column user.id 为主键(Primary key),Table profile 的 ...
    • 数据库中的外键使用详解

      千次阅读 2020-07-14 11:14:21
      数据库中的外键使用详解: 1.外键简介 定义:用于建立表与表之间关联关系的字段称为外键。 简介:外键用于建立表与表之间的关联关系,外键所在的表称为从(子)表。外键所关联的表称为主(父)表。 外键若要创建...
    • 为什么不建议数据库外键

      千次阅读 2020-01-16 20:52:21
      有人可能在面试的时候被问到过,你觉得为什么不建议数据库通过构建外键做约束?你可以回答说,在《阿里Java开发手册》中是这样说的:不得使用外键与级联,一切外键概念必须在应用层解决。而且这个规约是强制的。但是...
    • 关于数据库不用外键的想法

      千次阅读 2018-07-26 10:42:47
      后来有作业要让做网页项目,需要自己建立数据库,我严格按照书中创建,那时表中创有一大堆外键利用SSH框架映射,因为关系模型设计不规范 从而简单的insert的语句插入都报错,费了很大的时间,后来了解的有同学根本就...
    • 今天对已存在的两个表中的一个表添加另一个表的主键为外键,遇到以下错误: sql 1452 Cannot add or update a child row:a foreign key constraint fails 原因: 设置的外键和对应的另一个表的...
    • java-数据库——外键约束

      千次阅读 2018-06-19 09:33:20
      外键约束是很常用的一种保证数据完整性的约束具体表现是: 在从表中保存主表的主键先有的是主表 后有的是从表比如 部门和员工 实例创建 部门表create table dept ( dept_id int primary key auto_increment, dept_...
    • 数据库外键约束方式

      2012-04-11 19:33:56
      本文档是数据库外键约束方式指南 需要的朋友请下载 保证可用
    • 数据库中的外键

      2019-09-09 16:38:14
      关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程...
    •  建立外键约束的语句:constraint `外键名` foreign key(ab_id) references `a`(a_id);  foreign key(ab_id) references `a`(a_id); 默认给予外键名,不会重复。   删除外键: alter table `b` drop ...
    • 为什么禁用数据库外键外键带来的好处带来的不便 一带来的不便 二带来的不便 三带来的不便 四最后说下 外键带来的好处 数据一直性检查由数据库保证 带来的不便 一 每次增删改时都要考虑到外键约束,在调试接口的时候...
    • 创建一个表,表中有一个外键,这个外键指向自己的主键,在创建表的时候是被允许的,但是在插入数据的时候,我用正常的sql语句插入数据,但报错了,如下 INSERT INTO course (cno,cname,ccredit) VALUES (1,'数据库'...
    • MySQL数据库中添加外键的两种方式

      千次阅读 2019-04-11 17:02:42
      关于MySQL数据表中添加外键的两种方式: 第一种方式          Alter table 表名 add [constraint 外键名字] foreign key [外键字段] references 父表(主键字段);...
    • 数据库外键 附数据和代码

      千次阅读 2018-05-14 23:46:06
      数据库外键定义: 数据库外键作用: 数据库外键和主键的区别: 数据库外键demo; DROP schema IF EXISTS `demo`; CREATE schema demo;
    • 数据库外键设计

      2014-03-21 09:48:55
      一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中 某一个属性组(注意是组)能唯一标识一条记录 ,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是...
    • 我是小白,学生表的主键和班级表外键发生冲突!!! CL1具体语句是这样的 alter table class add constraint CL1 foreign key(StNum) references Student(StNum) go 当时建库就是这样的。想请各位看看哪里出错了,...
    • 数据库外键约束删除与更新

      千次阅读 2017-12-04 15:36:33
      1、准备测试工作 MySQL外键约束删除时和更新时各取值的含义,创建2个表,分别为studnet 学生表...并插入数据如图:       2、删除时属性,可能取值如上图为:默认(RESTRICT),RESTRICT,No ACTION,C...
    • 你好,这是【一文一点】的第1篇文章,不拘泥于篇幅字数,用一篇文章说清一个知识点。有的SQL规约是这么说的:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。那先复习下是什么...
    • 主要介绍了在Oracle数据库中添加外键约束的方法,需要的朋友可以参考下

    空空如也

    空空如也

    1 2 3 4 5 ... 20
    收藏数 97,603
    精华内容 39,041
    关键字:

    数据库怎么插入外键