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

数据库外键的作用,以及和主键的区别

例如有两个表      A(a,b)   :a为主键,b为外键(来自于B.b)      B(b,c,d)   :b为主键       如果我把字段b的外键属性去掉,对编程没什么影响。  ...http://www.cnblogs.com/ywb-lv/archive/2012/03/12/2391860.html 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一、主键是能确定一条记录的唯一标识...比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。...二、主键、外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值...作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 索引--是提高查询排序的速度 个数: 主键--主键只能有一个 外键--一个表可以有多个外键 索引--一个表可以有多个唯一索引

6K21

MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)

目录 1 表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。 【概念】什么是外键约束?...外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。 注意:外键可以为NULL,但是不能是不存在的外键值。 ?...外键列                    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表主键名称)         ); -- 创建部门表...id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联: 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY

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

    oracle基础|数据库如何设计|数据库的六种范式|数据库的主键和外键|数据库的约束

    目录 一、数据库设计 二、数据库六种范式 第一范式: 第二范式: 第三范式: 三、主键和外键 主键: 外键: 四、完整性约束 五、建表 六、oracle数据库中的多种数据结构 ---- 一、数据库设计...数据建模完成之后,可以把ER图转换成数据中的表 1.实体的名字转换为表的名字 2.实体的属性转换为表中的列 3.具有唯一特点的属性设置为表中的主键 4.根据实体之间的关系设置为表中某列为外键列(主外键关联...,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的 三、主键和外键 主键: 1.能做主键的列必要满足非空唯一的特点 2.只要满足非空唯一的列都可以做主键 3.可以让表中一个有意义的列做主键...,要求这几个列的值联合在一起是非空唯一的 外键: 1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列) 2.另外一张表的主键列中出现过的值都可以在外键列中使用...3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以) 4.如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B

    72940

    SQL中什么是主键和外键,它们之间的区别是什么?

    SQL主键和外键:结论主键和外键是数据库设计中的重要概念,因为它们有助于建立表之间的关系并帮助确保数据的完整性。...什么是主键主键是表中的一个列(或一组列),用于唯一地识别表中的每一行。它不能包含空值,并且在表中的所有行中必须是唯一的。一个表中只允许有一个主键。...什么是外键外键是一个表中的一个列(或一组列),指的是另一个表中的主键。它被用来在两个表之间建立联系,并被用来在数据库中执行参考完整性。外键基本上是一个表中的字段/列,类似于其他表的主键。...与主键不同,一个表可以有一个以上的外键。而且,在关系数据库中,外键可以包含重复值和空值。一个外键的值可以从子表中删除。...数据库中主键和外键的重要区别下表强调了主键和外键之间的所有重要区别Key主键外键Basic它用于唯一地识别表中的数据。它用于维护表之间的关系。Null它不可能是NULL。它可以接受NULL值。

    94340

    Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

    1. django中的常用字段 1. AutoField 映射到数据库中是int类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主键,那么模型会自动的生成一个叫做id的自动增长的主键。...4. primary_key 是否为主键。默认是False。 5. unique 在表中这个字段的值是否唯一。一般是设置手机号码/邮箱等。...外键和表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。...比如有一个Category和一个Article两个模型。一个Category可以有多个文章,一个Article只能有一个Category,并且通过外键进行引用。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个外键,记录着对应的作者的主键。

    4K30

    内连接与外连接的区别是什么?_数据库外连接和内连接的区别

    有两个表A和表B。...表A结构如下:Aid:int;标识种子,主键,自增IDAname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据 表B结构如下:Bid:int;...标识种子,主键,自增IDBnameid:int 数据情况,即用select * from B出来的记录情况如下图2所示: 图2:B表数据 为了把Bid和Aid加以区分,不让大家有误解,所以把Bid的起始种子设置为...下图3说明了连接的所有记录集之间的关系: 图3:连接关系图 现在我们对内连接和外连接一一讲解。...2.外连接:外连接分为两种,一种是左连接(Left JOIN)和右连接(Right JOIN) (1)左连接(Left JOIN):即图3公共部分记录集C+表A记录集A1。

    1.3K20

    如何使用 Python 和 SQLAlchemy 结合外键映射来获取其他表中的数据

    在使用 Python 和 SQLAlchemy 时,结合外键映射可以让你在查询时轻松地获取其他表中的数据。...SQLAlchemy 提供了丰富的 ORM(对象关系映射)功能,可以让你通过定义外键关系来查询并获取关联的数据。下面我会演示如何设置外键关系,并通过 SQLAlchemy 查询获取其他表中的数据。...字段,customer 字段是 Customer 表的 uid 字段的外键。...2.3 添加另一个外键如果我们需要在 Order 表中添加另一个外键,例如 product_id 字段,并且希望获取该订单所属产品的信息,那么我们可以在 Order 类中定义一个新的关系属性,使用 relationship...总结结合外键映射,你可以通过 SQLAlchemy 轻松地获取不同表之间关联的数据。你可以使用:relationship:设置表之间的关系(如外键),并通过 ORM 获取关联的数据。

    14310

    2018-11-26 oracle查询表信息(索引,外键,列等)1、查询出所有的用户表2、查询出用户所有表的索引3、查询用户表的索引(非聚集索引):4、查询用户表的主键(聚集索引):5、查询表的索引6

    oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1、查询出所有的用户表 select * from user_tables...: select * from user_cons_columns cl where cl.constraint_name = 外键名称 查询引用表的键的列名: select * from user_cons_columns...cl where cl.constraint_name = 外键引用表的键名 9、查询表的所有列及其属性 方法一: select * from user_tab_columns where table_name..., a.table_name 主键表, b.column_name 主键列, c.owner 外键拥有者, c.table_name...外键表, d.column_name 外键列 FROM user_constraints a LEFT JOIN user_cons_columns b ON a.constraint_name

    3K20

    Python面试题大全(四):数据库篇

    目录 数据库 MySQL 198.主键 超键 候选键 外键 199.视图的作用,视图可以更改么?...---- 数据库 MySQL 198.主键 超键 候选键 外键 主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。...超键包含候选键和主键。 候选键:是最小超键,即没有冗余元素的超键。 外键:在一个表中存在的另一个表的主键称此表的外键。 199.视图的作用,视图可以更改么?...视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。...truncate只能对table,delete可以是table和view 5.truncate和delete只删除数据,而drop则删除整个表(结构和数据) 6.truncate与不带where的delete

    56110

    MySQL【学习笔记】整理一

    在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。...行一行:(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键:主键是唯一的。一个数据表中只能包含一个主键。...你可以使用主键来查询数据。 外键:外键用于关联两个表。 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 索引:使用索引可快速访问数据库表中的特定信息。...查看数据库创建的语句是什么 show create database bookshop; # ====查询数据库==== # 查询所有数据库 show DATABASES; # 模糊匹配 show...数据表的基础知识-03 结语 未完待续… ️ 免责声明 本站提供的所有内容仅供学习、交流和分享用途,只供参考、转载请保留署名以及原文链接,谢谢。

    50430

    《深入浅出SQL》问答录(六)

    A:外键为NULL,表示在父表中没有相符的主键。但我们可以确认外键包含有意义、已经存储在父表中的值,请通过约束实现。...是什么意思? A:外键约束能确保引用完整性(换句话说,如果表中的某行有外键,约束能确保该行通过外键与另一张表中的某一行一一对应)。...如果我们试着删除主键表中的行或者是改变主键值,而这个主键是其他表的外键约束时,你就会收到错误警告。 ---- Q:所以上面说的那种,我就不能删除了是吗?...插入外键列的值必须已经存在与父表的来源中,这是引用完整性。 创建外键作为表的约束提供了明确的优势,如果违反了规则,约束会阻止我们破坏表。 外键不一定要是父表的主键,但是要具有唯一性。...Junction table(连接表) 范式(NF) 第一范式(1NF) 数据列只包含具有院子性的值 没有重复的数据组 组合键 组合键就是有多个数据列构成的主键。

    1.1K20

    SQL岗位30个面试题,SQL面试问题及答案「建议收藏」

    表是在具有列和行的模型中设计的数据集合。在表中,指定了列数称为字段,但未定义行数称为记录。 什么是数据库? 数据库是有序形式的一组信息,用于访问、存储和检索数据。 DBMS的类型是什么?...它包含来自一个或多个表的行和列,可以定义为虚拟表。它消耗的内存较少。...· PrimaryKey(主键)——它是表中的一个或多个字段的集合。它们不接受空值和重复值。并且表中只存在一个主键。...· ForeignKey(外键)——在一个表中定义主键并在另一个表中定义字段的键被标识为外键。...· UniqueKey(唯一键)——除了主键之外,表中还有更多键,它们只标识记录,但唯一的区别是它们只接受一个空值但不接受重复值。

    4.5K31

    SQL重要知识点梳理!

    MySQL数据库-基础知识 1.说说主键、外键、超键、候选键的差别并举例 超键(super key): 在关系中能唯一标识元组的属性集称为关系模式的超键。...主键:就是用户从很多候选键选出来的一个键就是主键,比如你要求学号是主键,那么身份证号就不可以是主键了! 外键:宿舍号就是学生信息表的外键。 2.为什么一般用自增列作为主键?...第二范式:(确保表中的每列都和主键相关)在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中,数据表里的非主属性都要和这个数据表的候选键有完全依赖关系。...左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。 右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行。...全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。

    82120

    MySQL引擎和视图的点

    二.常用的存储引擎有以下 InnoDB引擎:InnoDB引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。...MyIASM引擎(原本MySQL的默认引擎):不提供事务的支持,也不支持行级锁和外键。 MEMORY引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。...MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。 InnoDB:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。...为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。 所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。...视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。 二.视图有哪些特点?

    1K20

    C# .NET面试系列十:数据库概念知识

    3、关联性主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 4、数据完整性主键的存在有助于确保数据的完整性。...3、确保数据完整性主键的唯一性和非空性特性有助于确保数据的完整性和一致性。通常,在创建数据库表时,会选择一个或多个合适的列作为主键,并使用数据库管理系统提供的相应命令来定义主键。10. 什么是外键?...外键(Foreign Key)是数据库表中的一列或多列,其值必须与另一个表中的主键或唯一键的值相匹配。外键用于建立表与表之间的关联关系,从而实现数据的完整性和一致性。...外键列的值必须是引用表中相应列的值之一,或者是 NULL(如果允许的话)。外键在数据库设计中是非常重要的,它有助于维护数据的一致性和关联性。...外键通常连接到另一个表的主键。

    1.1K10

    干货 | 新手请速戳!30个精选SQL面试问题Q&A集锦

    表是在具有列和行的模型中设计的数据集合。在表中,指定了列数称为字段,但未定义行数称为记录。 3. 什么是数据库? 数据库是有序形式的一组信息,用于访问、存储和检索数据。 4. DBMS的类型是什么?...它包含来自一个或多个表的行和列,可以定义为虚拟表。它消耗的内存较少。...主键,唯一键和备用键是超级键的子集。 PrimaryKey(主键)——它是表中的一个或多个字段的集合。它们不接受空值和重复值。并且表中只存在一个主键。...ForeignKey(外键)——在一个表中定义主键并在另一个表中定义字段的键被标识为外键。...UniqueKey(唯一键)——除了主键之外,表中还有更多键,它们只标识记录,但唯一的区别是它们只接受一个空值但不接受重复值。

    1.5K10

    2020年MySQL数据库面试题总结(50道题含答案解析)

    6、主键和候选键有什么区别? 表格的每一行都由主键唯一标识,一个表只有一个主键。 主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。...外连接  其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。...使用 IS NULL 来进行 NULL 判断 48、主键、外键和索引的区别?...主键、外键和索引的区别 定义: 主键——唯一标识一条记录,不能有重复的,不允许为空 外键——表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引——该字段没有重复值,但可以有一个空值 作用:...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49、你可以用什么来确保表格里的字段只接受特定范围里的值

    4K20

    2020最新版MySQL数据库面试题(二)

    数据库的乐观锁和悲观锁是什么?...为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。...超键、候选键、主键、外键分别是什么? 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。...候选键:是最小超键,即没有冗余元素的超键。 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。...一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 外键:在一个表中存在的另一个表的主键称此表的外键。 SQL 约束有哪几种?

    63520

    2020最新版MySQL数据库面试题(二)

    gap锁:(除了外键约束和唯一性检查外,其余情况仅使用record lock) A....数据库的乐观锁和悲观锁是什么?...超键、候选键、主键、外键分别是什么? 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。...候选键:是最小超键,即没有冗余元素的超键。 主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。...外键:在一个表中存在的另一个表的主键称此表的外键。 SQL 约束有哪几种? NOT NULL: 用于控制字段的内容一定不能为空(NULL)。

    64121
    领券