-
2021-01-16 23:24:36
1:什么是主键
在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。举例来看:
学生表(学号, 姓名, 性别,专业编号),这里学号是主键,一个学号id就可以唯一标识一个学生的信息。另一个表:学生选课表(学号, 课程号, 成绩),这里(学号, 课程号)是主键,因为一个学号(即一个学生)可以选择多门课程,一个课程号(即一个课程)可以被多个学生选择,无法用一个字段来标识一条学生选课的信息记录,而使用(学号, 课程号)这两个字段作为关键字就可以唯一标识学生的选课信息。
2:什么是外键?
一张表的非主属性是另一个表的主属性就是这个表的外键。这里有两个分别为: 学生表(学号, 姓名, 性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。学生表中主键是学号,专业信息表中主键是专业编号。学生表中的非主属性专业编号恰好是专业信息表中的主键。我们就称这个专业编号是学生表的外键。像这样,一个表的非主属性是另一个表的主属性,该非主属性就是外键。
概念定义:什么是父表和子表?
有两张表A表和B表,表A中的一个字段id是外键,表B中的一个字段id是主键,那么称B为父表,A为子表。就是说一个表中外键字段(相当于这里的A表)是另一个表中(相当于这里的B表)的主键。 还是上面的两个表来举例理解:学生表(学号, 姓名, 性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。这里学生表是子表,专业信息表是父表。
设置表的外键的作用在于建立与父表的联系,比如在专业信息表中某个专业编号的id为'1001',删除这个id后,则学生表中的专业编号id为'1001'的记录也随着删除,这样做的目的在于保证表的完整性。
数据库的三种约束
1.实体完整性约束指的是主键不能为空,如果主键为空了还怎么唯一标识一条记录。
2.参照完整性约束,即外键的约束,某一外键的值必须在它引用的主键字段中存在。如,学生表中专业编号属性的值,必须都存于专业信息表中的专业编号属性中。想一想也就明白了,一个学生(大学生)怎么可能属于一个不存在的专业。
3.用户自定义完整性约束,指的是一些用户自己设定的约束,例如字段是否可以为空,字段值的取值范围(如:人的性别只能取男、女)。
更多相关内容 -
如何区分SQL数据库中的主键与外键
2021-01-19 22:14:13一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 : 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一... -
数据库的主键和外键
2021-02-08 16:30:591、成绩表主键:学号和课程号的属性组是一个主键 。 主键是能确定一条记录的唯一标识。 2、外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,...学生表(学号,姓名,性别,班级)
课程表(课程编号,课程名,学分)
成绩表(学号,课程号,成绩)1、成绩表主键:学号和课程号的属性组是一个主键 。
主键是能确定一条记录的唯一标识。2、外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
-
MySQL数据库中的外键约束详解_数据库的主键和外键
2020-09-21 06:49:26[导读 ] 使用 MySQL 开发过数据库驱动的小型 web 应用程序的人都知道对关系数据库 的表进行创建 检索更新和删除等操作都是些比较简单的过程 理论上 只要掌握了最常 见的 SQL 语句的用法并熟悉您选择使用的服务器端... -
MySQL 创建主键,外键和复合主键的语句
2020-12-15 08:17:17创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一... -
数据库的主键和外键设计方法
2020-04-27 19:20:47关于数据库主键和外键 https://blog.csdn.net/bingqingsuimeng/article/details/51595560 外键设计 https://blog.csdn.net/xianyu_0418/article/details/4469072目录
一 外键概念
如果公共关键字在一个表中是主关键字,那么这个公共关键字被称为另一个表的外键。由此可见,外键表示了两个表之间的相关联系。以另一个表的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
在实际操作中,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。
二 外键作用
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。使两张表形成关联,外键只能引用外表中的列的值或使用空值。
三 实战
1 创建外键的方式一 : 创建子表同时创建外键
-- 年级表 (id\年级名称) CREATE TABLE `grade` ( `gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级ID', `gradename` VARCHAR(50) NOT NULL COMMENT '年级名称', PRIMARY KEY (`gradeid`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 -- 学生信息表 (学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号) CREATE TABLE `student` ( `studentno` INT(4) NOT NULL COMMENT '学号', `studentname` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名', `sex` TINYINT(1) DEFAULT '1' COMMENT '性别', `gradeid` INT(10) DEFAULT NULL COMMENT '年级', `phoneNum` VARCHAR(50) NOT NULL COMMENT '手机', `address` VARCHAR(255) DEFAULT NULL COMMENT '地址', `borndate` DATETIME DEFAULT NULL COMMENT '生日', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', `idCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号', PRIMARY KEY (`studentno`), KEY `FK_gradeid` (`gradeid`), CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`) ) ENGINE=INNODB DEFAULT CHARSET=utf8
2 创建外键方式二 : 创建子表完毕后,修改子表添加外键
ALTER TABLE `student` ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);
3 删除外键
操作:删除 grade 表,发现报错
注意: 删除具有主外键关系的表时 , 要先删子表 , 后删主表
-- 删除外键 ALTER TABLE student DROP FOREIGN KEY FK_gradeid; -- 发现执行完上面的,索引还在,所以还要删除索引 -- 注:这个索引是建立外键的时候默认生成的 ALTER TABLE student DROP INDEX FK_gradeid;
四 说明
以上操作的都是物理外键,数据库级别的外键,我们不建议使用,避免数据库过多造成困扰。
五 最佳实践
数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
我们要想使用多表的数据,想使用外键(程序去实现)
六 参考
1 关于数据库主键和外键
https://blog.csdn.net/bingqingsuimeng/article/details/51595560
2 外键设计
https://blog.csdn.net/xianyu_0418/article/details/4469072
3 sql中一个表设置两个主键是将两个字段联合起来设置为主键,一个表只能有一个主键
https://blog.csdn.net/qq_42664961/article/details/83271026
-
SQL数据库中主键和外键的应用实例
2021-01-19 06:01:02数据库主键(Primary Key):指的是一个列或多列的属性组合,其属性值能唯一标识一条记录,通过它可强制表的实体完整性。例如:(tb_Book表:BookName、Author、Publishing、ISBN、BookClass、Count......)其中每本图书...数据库
什么是数据库主键(Primary Key)?
数据库主键(Primary Key):指的是一个列或多列的属性组合,其属性值能唯一标识一条记录,通过它可强制表的实体完整性。
例如:
(tb_Book表:BookName、Author、Publishing、ISBN、BookClass、Count......)
其中每本图书的ISBN号是唯一的,ISBN即可为一个主键。 (key-ISBN)
主键的类型:单一主键(Single Key): 唯一的键做主键
属性组合主键(Property Group Keys):一个属性组合标识一条记录。
主键的设置方法:要设置的主键列属性-右键-设置主键。
主键的功能:1、保证数据库实体的完整性;
主键是能确定一条记录的唯一标识,不能重复。2、 加快数据库的操作速度;
提供标识,方便索引。3、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
主键的设置sql语句:
新建SQL Query1.sql 查询:然后添加如下语句---F5(运行)--执行即可得到一个带有主键的表格,STUDENT,主键为:StudentNo。
代码如下:
--这是SQL中的注释信息,使用两个减号来注释。drop table STUDENT --删除表STUDENTcreate table STUDEN --创建表STUDENT(StudentNo char(4) primary key, --设置StudentNo为主键StudentName char(8),Age int(4),Dept char(20))
外键(Foreign Key):外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。
SC表中的StudentNo不是SC表的主键,但它和S表中的StudentNo相对应,并且S表中的StudentNo是S表的主键,则称SC表中的StudentNo是S表的外键。
主键和外键所起约束作用:外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
主键、外键和索引的区别:
-
数据库的主键与外键
2021-03-05 17:14:58主键保证了数据的唯一性,外键保证了数据的一致性、完整性,具有约束性。 1.主键 主键是能确定一条记录的唯一标识,比如,一条记录包括身份证号,姓名,年龄。 身份证号 是唯一能确定你这个人的,其他都可能有重复... -
MySQL数据库的主键和外键详解
2020-03-20 20:15:42MySQL数据库的主键和外键详解 主键 主键的定义 主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 ... -
简单演示Oracle数据库针对表主键列并发导致行级锁 电脑资料_数据库的主键和外键
2020-08-30 00:32:14简单演示Oracle数据库针对表主键列并发导致行级锁 电脑资料 简单演示Oracle数据库针对表主键列并发导致行级锁 本文内容 软件环境 简单演示 Oracle 数据库并发导致行级锁 本文简单演示针对表主键并发导致的行级锁 ... -
数据库入门-主键和外键设置
2022-03-28 00:20:18一:)在所想要设置为主键的列上单击右键,点击设置为...二:)设置外键单击右键选择 点击添加 点击设计器 点击表和列规范 后面的框中点一下,就会出现后面的三个点的按钮,点击三个点图标的那个按钮。 ... -
(转载)MySQL数据库的主键和外键详解
2022-03-13 17:27:25主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 ... -
数据库中的主键和外键的关系
2019-09-23 11:28:15什么是数据库? (百度百科):数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行... -
理解数据库中主键、外键以及索引是什么
2021-01-21 05:43:14理解数据库中主键、外键以及索引是什么发布时间:2020-...数据库中的主键指的是能够唯一标识一条记录的属性或属性组,外键指的是另一张表中的主键起到与其他表建立联系的作用,索引是用来快速查找具有特定值的记录数... -
数据库主键与外键的区别
2019-05-30 01:13:44数据库主键与外键 我们知道,好的数据结构会影响速度,当然,好的数据库表设计会影响数据库操作效率。 特别是数据特别多的时候如果表的结构不好的话,操作将会变得特别复杂。其中,主键和外键值得我们去了解。 在... -
怎么分辨数据库的主键和外键?
2018-05-10 17:35:00二、 主键、外键和索引的区别 主键、外键和索引的区别? 主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的... -
关于数据库主键和外键(终于弄懂啦)
2019-06-18 15:59:59转 关于数据库主键和外键(终于弄懂啦) 2018年07月16日 19:44:24 f45056231p 阅读数 19385 ... -
数据库之主键、外键和索引
2018-09-17 23:09:341、主键: 若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。...外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键... -
数据库表中的主键和外键
2020-04-01 20:36:53那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢? 因为,你想一想班级表内如果放学生那么记录可能就是这样: 1班ID 1班 xx同学id 1班ID 1班 xx同学id .. 这是不允许的,... -
SQL数据库中主键和外键
2020-11-30 21:08:10主键和外键 主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位)。主键... -
MySQL数据库的主键和外键详解3
2021-01-19 02:57:56MySQL数据库的主键和外键详解主键主键的定义主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY ... -
数据库中的主键与外键的关系
2021-09-25 10:56:58文章目录一、主键、外键:1.概念2....比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。 2.区别 主键——一个 -
数据库主键、外键和唯一键的区别
2019-10-24 17:37:29数据库主键、外键和唯一键的区别 现在我们想建立学生表,用来存储,一个系统的登陆信息。建表如下: create table student4 ( stu_id int primary key identity,--identity表示自增 stu_name nvarchar(10) unique ... -
关系型数据库和主键外键
2021-01-11 21:55:07一对一:既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键(一个人只有一把钥匙,一把钥匙只给一个人) 一对多:把表A的主键充当表B的外键(一个父亲有几个孩子,一个孩子只有一个父亲) 多对多:...