精华内容
下载资源
问答
  • 主键和外键
    千次阅读
    2020-10-28 12:30:47

    数据库设计
    三范式: 列不可以拆分,唯一标识,引用主键
    关系及存储: 1对1 , 1对多,多对多

    主键:primary key
    主键就是数据行的唯一标识。不会重复的列才会当主键
    一个表中只能有一个主键.
    当建立主键后,默认会建立索引,而实际数据在磁盘上存储的顺序和主键列的顺序是一致的。

    主键选择策略:
    1.业务主键:有业务意义的字段
    2.逻辑主键:完全给程序看的,业余人员不会看的数据
    推荐逻辑主键
    组合主键:
    选择单列作为主键(当通过多列共同唯一标识表中的一条记录的时候,此时可以选择多列来工作组成一个主键,这种主键叫做:组合主键、联合主键)一般不推荐使用。

    尽量选择数字类型作为主键,不要选择字符串,或者数据类型比较大的列作为主键。

    外键 ForeignKey

    数据冗余的问题: 造成存储空间的浪费
    更新异常、删除异常。
    不希望数据冗余,该怎么解决?
    把原来表中的数据拆分为多个表来存储。
    当把表中的信息拆分成多个表来存储的时候会有一个问题:如何将这两张表中的数据关联起来?
    使用主键和外键来进行关联。使用主外键就能将不同表中的数据关联起来。

    外键: 把一张表中的主键添加到另一张表中,另一张表中的列就是数据的外键列,有外键列的表就叫做“外键表”,相对来说,主键被引用的那张表就叫做“主键表”。

    学习永无止尽。

    更多相关内容
  • 一、什么是主键外键: 关系型...所以 学号姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的主键,但它学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
  • 主要介绍了MySQL中主键外键的区别联系,是MySQL入门学习中的基础知识,需要的朋友可以参考下
  • 创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一...
  • 主键主键外键和索引 Primary and foreign keys are a way in which to constrain related data together to ensure data in your database remains consistent and to ensure no redundant data is in the database...

    主键主键外键和索引

    Primary / Foreign Keys

    Primary and foreign keys are a way in which to constrain related data together to ensure data in your database remains consistent and to ensure no redundant data is in the database as a result of deleting a table or row in one table that affects data in other tables that may perhaps rely on that information. It can cause both data integrity problems as well as problems with your application that makes use of such database.

    主键和外键是一种将相关数据约束在一起的方式,以确保数据库中的数据保持一致,并确保由于删除一个表中的表或行而影响其他表中的数据,从而导致数据库中没有冗余数据也许依赖于这些信息。 它可能导致数据完整性问题,也可能导致使用此类数据库的应用程序出现问题。

    什么是主键? (What’s a primary key used for?)

    A primary key is used to ensure data in the specific column is unique. You can only set constraints with primary keys, by setting a foreign key to another column which creates a relationship with the column that has the primary key set. A prime use of a primary key is in the case of a users table. The id column is likely to be a primary key because is needs to be unique. You may also set this column to auto increment; but the most important component is the primary key.

    主键用于确保特定列中的数据唯一 。 您只可以设定主键约束,通过设置一个外键 ,它创建了一个具有主键设置的关系的另一列。 对于用户表,主键的主要用途。 id列可能是主键,因为它需要唯一。 您也可以将此列设置为自动递增。 但最重要的组成部分是主键。

    为什么需要使用主键? (Why do I need to use a primary key?)

    Well, even though the column set as a foreign key may have duplicate data in multiple rows, it is still relying on the unique information in the primary key. If there was non-unique rows in the primary key column, there would not be a use for a foreign key because you would be mapping one row in the foreign key to two rows in the primary key. In essence, primary to foreign keys ensure that:

    好的,即使设置为外键的列可能在多行中都有重复的数据,它仍然依赖于主键中的唯一信息。 如果主键列中存在不唯一的行,则不会使用外键,因为您会将外键中的一行映射到主键中的两行。 本质上,外键的主键确保:

    • the data that can be inserted in the table that has the foreign key can only be information thatuniquely exists in the primary key column.

      具有外键的表中可以插入的数据只能是主键列中唯一存在的信息。
    • if a DELETE or UPDATE occurs, the action you specified will be undertaken to ensure data integrity and prevent data redundancy in your database. Two primary actions are CASCADE and RESTRICT. CASCADE means any affected data will be deleted as well (hence, cascading), in the case of an UPDATE execution; in order to keep data consistent and prevent data redundancy.

      如果发生DELETE或UPDATE,则将执行您指定的操作以确保数据完整性并防止数据库中的数据冗余。 两个主要动作CASCADE和RESTRICT。 CASCADE表示在执行UPDATE的情况下,所有受影响的数据也将被删除(因此, 级联 ); 为了保持数据一致并防止数据冗余。

    什么是外键? (What’s a foreign key used for?)

    How do you actually ensure that data stays integral, consistent and updated? You make use of foreign keys. A primary key ensures that data is unique in one column, but the foreign key is what makes the data stay consistent, as that is where the important data lies that needs to stay consistent and integral. It’s inevitable that in most database-driven applications you create, you’ll need to have multiple tables that are for different areas of your application that makes a reference to an id or some unique data in another table. For example, a profile comments table – your application needs to understand what user id the profile comment is for. You can make use of a foreign key here that maps to the primary key that, as well as keeping data consistent, it also means that you can set the foreign key to CASCADE and any DELETE and UPDATE actions will be cascaded down to any affected row (such as the foreign key).

    您实际上如何确保数据保持完整,一致和更新? 您使用外键 。 主键可确保数据在一列中是唯一的,但是外键是使数据保持一致的原因,因为重要数据所在的位置需要保持一致和完整。 不可避免的是,在您创建的大多数数据库驱动的应用程序中,您将需要具有多个表,这些表用于应用程序的不同区域,这些表引用了另一个表中的ID或某些唯一数据。 例如, 配置文件注释表–您的应用程序需要了解配置文件注释的用户ID 。 您可以在此处使用映射到主键的外键,并使数据保持一致,这还意味着您可以将外键设置为CASCADE,并且任何DELETE和UPDATE操作将被级联到任何受影响的行(例如外键)。

    翻译自: https://www.eukhost.com/blog/webhosting/whats-the-purpose-use-primary-foreign-keys/

    主键主键外键和索引

    展开全文
  • 前言前面几篇 blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键主键含义:...

    前言

    前面几篇 blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键

    主键

    含义:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键

    举例说明:

    学生表(学号,姓名,性别,班级)

    其中每个学生的学号是唯一的,学号就是一个主键

    创建两张表,并插入数据

    1 员工表emp(student)

    字段如下:

    员工号(sid)

    姓名(sname)

    年龄(sage)

    工资(sal)

    部门号(deptno)

    2 部门表(department)

    1 部门号(deptno)

    2 部门地址(address)

    3 部门电话(detel)

    可能遇到的问题

    在给部门表插入数据的时候,address 字段插入的是中文,但最后显示为?

    解决方法:在创建部门表的时候指定编码

    create table department

    (deptno int,address varchar(100),detel char(20)

    )DEFAULT CHARSET=utf8;

    添加主键约束

    alter table emp

    add constraint pk_emp

    primary key(sid);

    alter table department

    add constraint pk_department

    primary key(deptno);

    查看主键

    语句:desc 表名;

    外键

    含义:外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性

    举例说明

    员工表emp(员工号,姓名,性别,薪水,部门号) (主键员工号,外键部门号)

    部门表department(部门号,部门地址,部门电话) (主键部门号)

    添加外键约束

    alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

    添加外键约束实例

    小插曲:笔者昨日搞好久都无法创建外键,当时也没百度,今天才发现原来是自己的外表 department 没有插入数据。。。。

    alter table emp add constraint FK_ID foreign key(deptno) REFERENCES department(deptno);

    查看外键

    输入命令:show create table 表名;

    删除主键

    命令:alter table emp drop primary key;

    删除外键

    命令:alter table emp drop foreign key deptno;

    注意:删除外键 deptno 后,才能修改主表 emp 的数据

    以上,over

    原创申明:以上内容都是笔者个人经验,仅供参考,如需转载,请注明出处

    展开全文
  • MySQL添加主键和外键

    2021-03-15 21:53:47
    添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) referen....

    查看表的字段信息:desc 表名;

    查看表的所有信息:show create table 表名;

    添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);

    添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);

    (alter table 主表名 add foreign key (字段 ) references 从表名(字段) on delete cascade)

    添加唯一约束:

    ALTER table 表名 add unique key 约束名 (字段);

    删除主键约束:alter table 表名 drop primary key;

    删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);

    修改表名:alter table t_book rename to bbb;

    添加列:alter table 表名 add column 列名 varchar(30);

    删除列:alter table 表名 drop column 列名;

    修改列名MySQL: alter table bbb change nnnnn hh int;

    修改列名SQLServer:exec sp_rename‘t_student.name‘,‘nn‘,‘column‘;

    修改列名Oracle:alter table bbb rename column nnnnn to hh int;

    修改列属性:alter table t_book modify name varchar(22);

    sp_rename:SQLServer 内置的存储过程,用与修改表的定义。

    展开全文
  • 简要介绍了数据的主键和外键,在实践的生产中主键和外键的作用异常的重要
  • MySQL主键和外键使用及说明

    千次阅读 2021-03-04 00:28:15
    MySQL主键和外键使用及说明一、外键约束MySQL通过外键约束来保证表与表之间的数据的完整性准确性。外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持)...
  • SQL的主键和外键

    2021-06-26 22:16:46
    1.定义主键和外键主要是为了维护关系数据库的完整性。 总结一下: ...2.主键外键和索引的区别? 3.数据库的主键,外键等之间的关系 主键:一般情况下,满足第一范式的表都有一个主键Primary key,用于唯
  • MySQL的主键和外键

    千次阅读 2021-02-04 14:45:16
    概念表能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。插入相同主键的两条记录是不被允许的。MySQL主键设计原则:不使用任何业务相关的字段作为主键永远也不要更新MySQL主键,修改主键会造成一系列的...
  • 关于数据库主键和外键(终于弄懂啦)

    万次阅读 多人点赞 2019-06-18 15:59:59
    转 关于数据库主键和外键(终于弄懂啦) 2018年07月16日 19:44:24 f45056231p 阅读数 19385 ...
  • 一:)在所想要设置为主键的列上单击右键,点击设置为...二:)设置外键单击右键选择 点击添加 点击设计器 点击表列规范 后面的框中点一下,就会出现后面的三个点的按钮,点击三个点图标的那个按钮。 ...
  • 主键和外键的定义

    2021-09-29 09:29:30
    主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 。 外键(foreign key)外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系
  • 主键是本张表的主键,是唯一且非空的,而外键是另一张表中与这张表的某个字段的类型,字段名相同的字段,一般是用作关联两张或两张以上的数据表时用的。以下面三张表为例:有三张表,一张表是读者信息,有一个属性为...
  • 数据库-主键和外键及其约束

    千次阅读 2021-01-16 23:24:36
    1:什么是主键在一张表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段或者多个字段来表示。举例来看:学生表(学号, 姓名, 性别,专业...
  • 外键的插入或者更新不能插入或更新主键表中没有的值,切记删除主键表中的数据时,要先去外键表中接触关系,也可以在建立外键时设置好更新或者删除的外键表中的数据是否更改。设置外键的语法:CONS...
  • 数据库的主键和外键

    千次阅读 2021-02-08 16:30:59
    1、成绩表主键:学号课程号的属性组是一个主键主键是能确定一条记录的唯一标识。 2、外键:用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,...
  • 在MySQL中如何设置主键和外键

    千次阅读 2021-01-19 12:59:41
    工具/原料电脑 MySQL方法/步骤设置主键:1、通过终端进入到mysql命令行工具。2、通过use关键字进行到目标数据库里。3、如原表已有主键,先把原来的主键删除掉,通过DROP PRIMARY KEY命令:ALTER TABLE `jingyan` ...
  • 主键和外键的区别 主键是定义一个表中起主要作用的数据项,这些数据项的数据在表中是唯一的,同时系统按主键为表建立索引。 外键是定义一个表中的某数据项的数据,要参照另一个表的主键数据。既没有在另一个表的...
  • 1、主键:若某一个属性组(注意...外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。3、索引:索引是对表中一个或多个列的值进行排序的结构。1)应该创建索引的列的特...
  • 2设置主键和外键

    2020-10-14 19:13:40
    表已经创建成功的情况,如何设置主键和外键:alter table 表名 add primary key(字段名); alter table 从表名 add constraint fk_xx_xx foreign key(外键字段名) references 主表名(主键);删除主键和外键alter table...
  • 主键和外键(MySQL)

    2021-09-09 16:42:22
    1.主键不允许为空且不重复,外键可以为空也可以重复 2.主键用来唯一标识一行数据,外键用来将子表和主表产生关联 3.子表的外键必须关联在主表的主键或者唯一属性上(唯一属性可以空) create table major( int ...
  • sql主键和外键的区别:1、主键是唯一标识一条记录,不能有重复,不允许为空,而外键可以重复,可以是空值;2、主键是用来保持数据完整性,外键是用来建立与其他表联系用的;3、主键只有一个,外键可以有多个。sql...
  • 数据库什么是数据库主键(Primary Key)?数据库主键(Primary Key):指的是一个列或多列的属性组合,其属性值能唯一标识一条记录,通过它可强制表的实体完整性。例如:(tb_Book表:BookName、Author、Publishing、ISBN...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 178,942
精华内容 71,576
关键字:

主键和外键