精华内容
下载资源
问答
  • oracle数据库六大约束中,外键约束写法最多,也最不好理解,所以作者在下面内容中整理了oracle中外键约束使用方法 一.外键约束存在意义 在一个软件项目中,会产生大量用户数据,平台数据,这些数据...

    oracle数据库中的六大约束中,外键约束的写法最多,也最不好理解,所以作者在下面的内容中整理了oracle中外键约束的使用方法

    一.外键约束存在的意义

    在一个软件项目中,会产生大量的用户数据,平台数据,这些数据都会被保存在不同的表中,例如一个电商网站,有用户表user

    订单表order,订单表中会保存订单号,订单信息,以及对应的用户id,订单表中的user_id必须要来自user表,也就是说在生成订单时使用的user_id必须是在user表中存在的,随意这两个表就通过user_id字段产生了关联关系,order表中的user_id需要引用user表中的user_id ,并且user_id一般作为user表的主键,现在成为了order表中的外键,就是我们常说的外键约束

    二.外键约束的类型

    1.普通外键约束:如果子表引用父表,则无法删除父表记录

    2.级联外键约束:可以删除存在引用的父表记录,同时删除子表中所有引用父表的数据

    3.置空外键约束:可以删除存在引用的父表记录,同时将子表中索引引用父表数据的列设置为null(该字段允许空值的前提)

    三.外键约束的使用方法

    1.创建表时定义外键

    在创建表时定义的外键,可以直接使用references关键字,例如

    create table user_info(

    user_id primary key number,

    user_name varchar(2)

    )

    create table order_info(

    order_id number primary key,

    user_id number references user_info(user_id)   --- 创建表时直接引用user_info表中的user_id作为外键

    )

    注意事项:1.user_id列作为外键的前提,user_id必须为某个表的主键

                      2.必须先创建user_info表,再创建order_info表

                      3.向order_info表中插入数据时,所使用的user_id必须存在于user_info表中

    2.向表中添加外键约束(创建表时没有设计外键,可以修改表的结构,添加外键约束)

          1.alter table order_info add constraint fk_user_id foreign key(user_id) references user_info(user_id);(黄色字体为外键约束的名字,需要删除外键约束时,可以直接删除fk_user_id,名字没有具体的要求)

          2.alter table order_info add constraint fk_user_id foreign key(user_id) references user_info(user_id) on delete cascase;

           可以删除存在引用的父表记录,同时删除子表中所有引用父表的数据

          3.alter table order_info add constraint fk_user_id foreign key(user_id) references user_info(user_id) on delete set null;

           可以删除存在引用的父表记录,同时将子表中索引引用父表数据的列设置为null(该字段允许空值的前提)

    3.删除外键约束

    alter table order_info drop fk_user_id;  (fk_user_id)为创建外键时定义的外键名

     

    展开全文
  • 和所有开源项目参考文档一样,mysql文档中SQL...定义数据表假如某个电脑生产商,它的数据库中保存着整机和配件产品信息。用来保存整机产品信息表叫做 pc;用来保存配件供货信息表叫做 parts。http://www....

    和所有开源项目的参考文档一样,mysql文档中的SQL语法说明让我等初学者看起来头大。这不,今天我花了大半天的工夫,才把在MySQL中设置外键的语法弄明白,所以赶紧写下来,一来加深一下印象,二来万一过两天忘了,自己也好回来查一下。

    定义数据表

    假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 pc;用来保存配件供货信息的表叫做 parts。

    http://www.gaodaima.com/47700.html学习入门:在MySQL中定义外键_php

    在 pc 表中有一个字段,用来描述这款电脑所使用的CPU型号;

    在 parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。

    很显然,这个厂家生产的电脑,其使用的 cpu 一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)―― pc 表中的 cpu 型号受到 parts 表中型号的约束。

    首先我们来创建 parts 表:

    CREATE TABLE parts (

    ... 字段定义 ...,

    model VARCHAR(20) NOT NULL,

    ... 字段定义 ...

    );

    接下来是 pc 表:

    CREATE TABLE pc (

    ... 字段定义 ...,

    cpumodel VARCHAR(20) NOT NULL,

    ... 字段定义 ...

    };

    设置索引

    若要设置外键,在参照表 (referencing table,即pc表) 和被参照表 (referenced table,即parts表) 中,相对应的两个字段必须都设置索引 (index)。

    对parts表:

    ALTER TABLE parts ADD INDEX idx_model (model);

    这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。

    对pc表也类似:

    ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

    事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。

    定义外键

    下面为两张表之间建立前面所述的那种“约束”。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将pc表的cpumodel字段设置为“外键”(FOREIGN KEY),即这个键的参照值来自于其他表。

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model);

    第一行是说要为pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;第二行是说将本表的cpumodel字段设置为外键;第三行是说这个外键受到的约束来自于parts表的model字段。

    这样,我们的外键就搞好了!如果我们试着CREATE一台pc,它所使用的 cpu 的型号是 parts 表中不存在的,那么 MySQL 会禁止这台 PC 被 CREATE 出来。

    级联操作

    一切看起来都挺好的,不是吗?

    考虑以下这种情况:

    技术人员发现,一个月之前输入到 parts 表中的某个系列的 cpu (可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当 parts 表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。

    可以在定义外键的时候,在最后加入这样的关键字:

    ON UPDATE CASCADE; 即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。:)

    如果把这语句完整的写出来,就是:

    ALTER TABLE pc ADD CONSTRAINT fk_cpu_model

    FOREIGN KEY (cpumodel)

    REFERENCES parts(model)

    ON UPDATE CASCADE;

    除了 CASCADE 外,还有 RESTRICT(禁止主表变更)、SET NULL(子表相应字段设置为空)等操作。

    欢迎大家阅读《学习入门:在MySQL中定义外键_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

    e7ce419cf2d6ad34d01da2ceb8829eed.png

    微信 赏一包辣条吧~

    023a57327877fb4402bcc76911ec18ea.png

    支付宝 赏一听可乐吧~

    展开全文
  • 使用的时候谁做为谁的外键,主要从以下两点考虑: 1,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表; 2,记录必须先存在的是父表; 外键的用途 1, 最常用的一种: 减...

    数据库外键的设计

    子表,父表的定义

    拥有外键的表是子表,主键被其他表引用的表是父表
    因为父表的标识被很多子表中的记录引用,所以叫父表。
    拥有外键关系,并且可以随便删除数据,不影响其他表的数据的那个表叫子表。
    使用的时候谁做为谁的外键,主要从以下两点考虑:
    1,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;
    2,记录必须先存在的是父表;

    外键的用途

    1, 最常用的一种: 减少重复数据.表A中拥有外键,表B的数据基本是不允许删除的.这时选择对 INSERT 和 UPDATE 强制关系即可.
    2,其次,是增加一个从属表. 如果表A删除一条记录时,表B中也随着删除一条相关联的记录,那么外键关系中,表A的主键是表B的外键。这种关系,实际上表B是表A的从属表(即表A是父表),选择对 INSERT 和 UPDATE 强制关系时,如果向表B中插入数据,表A中必须已经存在对应的记录。选择级联删除相关的字段时,删除表A中的一条记录,就会删除对应的表B中的一条记录。

    数据库的三范式

    第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项
    第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关
    第一范式的关键词是列的原子性》第二范式的关键词是不能包含部分依赖》第三范式的关键词是不能包含传递依赖
    ForeignKey就是一个多对一的字段,而被ForeignKey关联的字段就是一对多字段

    展开全文
  • 数据库主键和外键定义

    千次阅读 2015-07-07 15:01:24
    主键用于唯一标识表中行数据,不能为空,一个主键值对应一行数据。...约束内表数据更新,从定义外键时可以发现 外键是和主键表联系,数据类型要统一,长度(存储大小)要统一。这样在更新数据时候会保持一致性。
    主键用于唯一标识表中的行数据,不能为空,一个主键值对应一行数据。另外,会自动在主键上创建索引,用于加快查询。


    外键用于两个表的联系。两个表必须具有相同类型的属性,在该属性上有相同的值。该属性应为其中一个表的主键,在另外一个表设置为外键。约束内表的数据的更新,从定义外键时可以发现 外键是和主键表联系,数据类型要统一,长度(存储大小)要统一。这样在更新数据的时候会保持一致性。

    展开全文
  • 数据库外键定义的一个可选项,用来设置当主键表中被参考列数据发生变化时,外键表中响应字段变换规则。 update 是主键表中被参考字段值更新,delete则是指在主键表中删除一条记录: on update 和 on ...
  • 数据库主键外键总结

    2019-09-26 20:36:32
    一.主键、外键和索引的区别 ...表的外键是另一表的主键,外键可以有重复的,可以是空值 该字段没有重复值,但可以有一个空值 作用: 用来保证数据完整性 用来和其他表建立联系用的 ...
  • 主、外键定义 主键:保证数据唯一性。 外键:和第二范式有关,保证数据一致性。传递依赖:A→B→C,则对于同一个B可能存在不同C,此时将B作为外键,重新设计数据库。外键是空值或等于R1关系中某个主键值。 ...
  • 数据库主键外键

    2016-06-11 14:24:00
    数据库主键是指表中一个列或列组合,其值能唯一地标识表中每一行。这样一列或多列称为表主键,通过它可强制表实体完整性。当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键。一个表只能有一个 ...
  • django外键关键值可以自己定义,也可以使用默认值。(推荐教程:python基础教程)定义模型类模型类被定义在"应用/models.py"文件中。模型类必须继承自Model类,位于包django.db.models中。1) 数据库表名模型类如果未...
  • 一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。...二、主键、外键和索引的区别定义:主键--唯一标识一条记录,不能有重复的,不允许为空外键--表的外键是另一表的主键,...
  • 数据库外键及其约束理解)

    万次阅读 2019-04-18 10:25:38
    如果一个字段X在一张表(表一)中是主关键字,而在另外一张表(表二)中不是主关键字,则字段X称为表二的外键;换句话说如果关系模式R1中的某属性集不是自己的主键,而是关系模式R2的主键,则该属性集称为是关系...
  • 本文介绍了在MySQL数据库定义外键的方法。
  • 数据库外键关联

    万次阅读 2011-01-26 16:49:00
    子表,父表的定义: 拥有外键的表是子表。主键被其它表引用的表...使用的时候谁做为谁的外键,主要从以下两点考虑:  1/,删除是如何相互影响的,删除记录受约束的那个是父表,不受约束的那个是子表;  2/,记录必
  • 外键定义添加条件: (1)外键对应字段数据类型保持一致 (2)所有tables必须是InnoDB型,它们不能是临时表.因为在MySQL中只有InnoDB类型表才支持外键(两张表存储引擎一致)。 (3)设置外键时“删除
  • 如何在 MySQL 数据库定义外键本文给出 了 MySQL 数据库定义外键的必要性 、具体定 义步骤和相关 一些基本操 作 ,供大家参 考!定义数 据表假如某个 电脑生产商 ,它数据 库中保存着 整机和配 件产品信...
  • 了解了外键的基础定义,那么我们怎么来创建外键呢?下面我们就通过简单示例给大家介绍下,如何创建mysql外键。首先我们可以通过cmd命令打开管理工具,登录mysql数据库。然后通过show database语句查...
  • 定义一张 员工部门表- 将所有数据存放在一张表中弊端:拆分表解决以上问题.如何确认表与表之间关系是 (一对多、多对多、一对一)注意:总结:外键: 语法:创建两张表关联表:插入数据:报错插入更新数据或删除数据先...
  • title: 数据库的主键外键索引 date: 2018-04-08 16:03:01 uodated: 2020-03-07 14:05:24 categories: 数据库 tags: - 数据库 这是一篇数据库的主键、外键、索引的学习笔记 ...表的外键是另一表...
  • 数据库外键 附数据和代码

    千次阅读 2018-05-14 23:46:06
    数据库外键定义数据库外键作用: 数据库外键和主键区别: 数据库外键demo; DROP schema IF EXISTS `demo`; CREATE schema demo;
  • 外键的具体定义如果一个表中若干个字段是来自另外若干个表主键或唯一键,则这若干个字段就是外键。(我们讲多对多时候,一个表里面就有两个外键。)设计外键要注意问题 外键通常是来自另外表主键而不是...
  • 定义主键主要是为了维护关系数据库的完整性。2、外键外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。3...
  • 一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号...比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 二、主键、外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,...
  • 主键:主键是数据表唯一索引,比如学生表里有学号和姓名,姓名可能有重名,但学号确是唯一,你要从...外键定义数据表假如某个电脑生产商,它的数据库中保存着整机和配件产品信息。用来保存整机产品信息...
  • 本文给出 了 MySQL 数据库定义外键的必要性 、具体定 义步骤和相关 一些基本操 作 , 供大家参 考! 定义数 据表 假如某个 电脑生产商 ,它数据 库中保存着 整机和配 件产品信 息。用来保存 ...
  • User.user_id') 这个model中定义的外键,和 CREATE TABLE `teaching_trains` ( `train_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(40) NOT NULL DEFAULT '' COMMENT '名称', `user_id` int...
  • 数据库的外键使用详解

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

    千次阅读 2019-01-09 15:59:26
    外键指定一个字段或字段组合作为一个外键(即外来主键或唯一键),该外键和另一个表主键或唯一键建立起一个关系,只能定义为表级约束。MySQL数据库使用外键条件:两个表存储引擎必须是InnoDB,MyISAM暂时不支持...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,019
精华内容 807
关键字:

数据库的外键定义