-
2021-01-18 18:41:25
一、什么是主键、外键:
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
二、 主键、外键和索引的区别
sql语句会自动判定查询字段有无索引,继而使用索引去检索
主键、外键和索引的区别?
主键
外键
索引
定义:
唯一标识一条记录,不能有重复的&#
更多相关内容 -
MySQL数据库中指定的两个主键
2021-01-27 07:07:41我正在尝试创建一个测试数据库,它是预先存在的数据库的副本....在模型中,表中的一个表有两列标识为主键.column1 = models.IntegerField(primary_key = True)column2 = models.IntegerField(prima...我正在尝试创建一个测试数据库,它是预先存在的数据库的副本.我正在使用Django模型(理论上与原始数据库一起使用的模型)来执行此操作.我最近继承了其他人的代码,并试图弄清楚代码到底发生了什么.
在模型中,表中的一个表有两列标识为主键.
column1 = models.IntegerField(primary_key = True)
column2 = models.IntegerField(primary_key = True)
column3 = models.CharField(max_length = 30)
当我尝试将此模型同步到测试数据库时 – 发生错误:
File “/somePathHere/MySQLdb/connections.py”, line 36, in defaulterrorhandler raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1068, ‘Multiple primary key defined’)
在django docs中写的是Django不允许多个主键.但是,查看原始MySQL数据库中DESCRIBE [tablename]的输出,看起来就是这里正在发生的事情:
+------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| IDENTIFIER | bigint(20) | NO | PRI | NULL | |
| TIMESTAMP_ | bigint(20) | NO | PRI | NULL | |
| VALUE_ | longtext | YES | | NULL | |
+------------+------------+------+-----+---------+-------+
请注意,IDENTIFIER和TIMESTAMP_都列为主键.
我在SO(Example 1,Example 2和Example 3)上看到很多关于基于多列创建主键的主题 – 我看到的是复合键吗?在这种情况下,如何通过Django模型进行中继,即如何复制它?
如果它不是复合键,它是什么?
-
mysql数据库,多个字段的主键之间是否可以重复?
2021-11-27 00:03:541.主键的定义 主关键字(primary key): 是表中的一个或者多个字段,它的值用于唯一的标识表中的某一条记录。 问题:一张表,有多个主键,不同主键之间是否可以重复? 答案:可以的1.主键的定义
主关键字(primary key): 是表中的一个或者多个字段,它的值用于唯一的标识表中的某一条记录。
问题:一张表,有多个主键,不同主键之间是否可以重复?
答案:可以的如下,图id字段3 和age字段3
-
MySQL索引之主键索引
2020-12-15 16:43:01主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL中,InnoDB数据表的主键设计我们... -
MySQL 创建主键,外键和复合主键的语句
2020-12-15 08:17:171.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name ...使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式 ①创建时:create table sc ( student -
mysql数据库添加非主键自增字段
2019-06-16 11:10:46前些天在项目上遇到一个坑,根据业务要求在指定的表中个不为空的自增非主键字段,我直接向表中添加自增的非主键字段时会报错,错误信息如下: 翻译上面错误提示:表定义不正确;只能有一个自动列,必须将其定义...前些天在项目上遇到一个坑,根据业务要求在指定的表中个不为空的自增非主键字段,我直接向表中添加自增的非主键字段时会报错,错误信息如下:
翻译上面错误提示:表定义不正确;只能有一个自动列,必须将其定义为键 (不一定是主键)
所以我们可以这样做:
(1)先添加字段,设置字段类型等基本属性:
alter table 表名 add 新增字段 BIGINT(10) not Null ;
(2)为该字段添加任意key:
alter table 表名 ADD KEY test(新增字段); // test为任意的key名称
(3)将该字段修改为自增属性:
ALTER TABLE 表名 MODIFY 新增字段 BIGINT(20) auto_increment设置完后去数据库检查相应字段,发现ok了。
-
sql新建数据库表,及添加多个主键
2021-01-19 08:50:09create table tb_Modules ( module_id int, model_Name varchar(50), page_id int(外键) ) drop table tb_Modules 删除表 ----------------------------------------------(sql语句添加多个主键) create table tb_... -
MySQL数据库中主键和唯一键有什么区别
2021-01-26 00:23:39MySQL数据库中主键和唯一键有什么区别发布时间:2020-12-03 13:14:23来源:亿速云阅读:90作者:小新小编给大家分享一下MySQL数据库中主键和唯一键有什么区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去... -
myMySQL数据库如何设置数据表的主键及自增长 MySQL数据库使用教程
2021-03-16 02:03:29mysql设置数据表的主键及自增长的方法:首先启动MySQL...更多相关免费学习推荐:(视频)mysql设置数据表的主键及自增长的方法:1、启动MySQL,打开navicat,新建数据库aaa,右键点击Tables,选择new table,建立一个... -
数据库表中主键的设置
2021-01-21 14:07:042.使用自增主键的场景:a:表中找不出3个以内字段可以表示的业务主键b:没有集中大量的插入操作c:不使用自增id作为外键(即id变化不影响系统逻辑和功能)此外自增主键的规律很明显,为了不让别... -
解决mysql数据库表自增主键id删除记录后主键值不连续的问题
2020-12-23 08:16:14在mysql数据库中,当数据表的主键值设置为自增时,在使用过程中如果删除了最新的一条或多条记录后,新增记录的主键值没有像我们想象的那样紧接着已有的值自增,而是紧接着删除前的最大id值自增.这样就导致主键的值看起来... -
sqlserver数据库主键的生成方式小结(sqlserver,mysql)
2020-12-15 05:58:06其优点在于使用时完全将并发任务交于数据库引擎管理,你不用担心存在多用户使用的时候会产生两个相同的ID的情况。其缺点也在于此,多数的数据库不提供直接获取标识ID的方式,对于开发人员来说产生ID的方式是透明的,... -
Mysql 增加主键或者修改主键的sql语句操作_Mysql_数据库
2021-02-12 08:27:07-- 如果只存在一个主键列 ELSEIF ((SELECT count(*) FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA ='cbs' AND table_name='mailbox' AND CONSTRAINT_NAME ='PRIMARY' AND (COLUMN_NAME ='email_... -
数据库 - 我可以在一个表中有多个主键吗?
2021-02-01 22:39:35主键是非常不幸的符号,因为“初级”的内涵和与逻辑模型有关的潜意识联想。 因此我避免使用它。 相反,我指的是物理模型的代理键和逻辑模型的自然键。重要的是,每个实体的逻辑模型至少具有一组“业务属性”,其包括... -
MySql数据库主键外键与数据库设计
2019-05-20 01:38:57MySql数据库主键外键与数据库设计 -
myMySQL数据库建表时怎么设置主键? MySQL数据库使用教程
2021-03-04 03:29:25设置方法:在“CREATE TABLE”语句中,通过“PRIMARY KEY”...主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个... -
MySQL数据库面试题(2020最新版)
2020-03-10 17:20:40数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4... -
MySQL数据库的主键和外键详解
2020-03-20 20:15:42MySQL数据库的主键和外键详解 主键 主键的定义 主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 ... -
如何用sql语句创建具有多个主键(--联合主键)的表阿
2021-01-19 07:53:15--上面這句一定要用到 ) check_id,check_no是这个表的联合主键 一个表只允许有一个主键 但一个主键可以允许由多个字段构成复合主键 所以楼主的写法是不行的,用了多个主键 冒牌的可以,由多个字段构成一个主键 而一个... -
MySQL 主键与索引的联系与区别分析
2021-01-19 22:24:35所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述... -
MySQL数据库主键冲突的三种解决方案
2021-01-18 20:57:19业务中为了避免重复数据的产生,除了在代码层级做处理之外,还会在数据库表中增加唯一索引来做最后的校验,项目中唯一索引在冲突的时候是以代码抛异常的形式来阻止脏数据的产生,而异常这个东西,说好也好,说不好也... -
MySQL数据库总结
2019-11-25 13:26:13一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、...主流的关系型数据库产品:Oracle(Oracle)、DB2(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数... -
Mysql数据库根据主键关联更新指定字段
2019-11-26 18:24:53Mysql数据库根据主键关联更新指定字段 需求: 两张表的主键相同,将一张表的某个字段copy到另一张表中 语句: update person2 a inner join person b on a.id=b.id set a.name = b.name; 知识点扩展 inner ... -
MySQL为什么需要一个主键
2021-01-28 17:40:58主键表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号。...虽然并不总是都需要主键,但大多数数据库设计人员... -
MySQL数据库约束(非空,唯一,默认,主键,外键约束)
2022-03-16 18:03:194.PRIMARY KEY:主键约束(auto) 5.FOREIGN KEY:外键约束 一. 约束类型概览 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证这一列的每个数据都不能重复。 DEFAULT - 规定没有给列赋值时的默认值。... -
Mysql数据库设计三范式实例解析
2021-01-19 21:48:29三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子性 字段不可再分,否则就不是关系数据库;...如果实体中的某个属性有多个值时,必须拆分为不同的 -
数据库设计中主键字段类型的选择
2021-01-18 18:44:21从最后一次发表的文章到现在已经是两个多月的时间了,一直都想写点什么,可一直没有时间(其实都是借口),随笔内容无疑就是工作学习中的总结,经验的分享,也是自己成长的一面镜子,好了,言规正传,这次谈谈在数据库... -
数据库MySQL之主键约束和唯一约束是什么?
2018-12-21 21:21:33数据库MySQL之主键约束、...每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL,也就是说必须要为主键赋值。但如果主键选择了AUTO_INCREMENT,那么不需要手动赋值。 auto_increment必须和主键pr... -
MySQL数据库-表操作-SQL语句(一)
2021-01-18 20:31:281. 数据库操作与存储引擎1.1 数据库和数据库对象数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件等。数据库:存储数据库对象的容器。数据库分两种:①系统数据库(系统... -
为什么数据库表只有一个主键?
2021-02-03 09:41:01一个(关系)表"超级键"...规范化和其他关系理论关注候选键并且不关心主键。就查询,更新和约束的含义而言,没有必要或基础来选择一个候选密钥并将其称为“#34; primary" (和其他人#...