精华内容
下载资源
问答
  • 员工表的主键和外键
    2021-10-28 15:47:47

    主键概念:主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
    外键概念:外键(foreign key)能保持数据的一致性、完整性
    主键用力啊标识数据的唯一性,而外键主要保证多张表的数据一致性,也就是需要保持多表同一数据的一致性,也许直接晦涩的解释其概念,对于起步接触数据库的人来说不太友好可以看如下实际用例。
    建一张department表,也可以把其理解为主表,这张主表用于记录部门id的唯一性。

    create table department(
    id int primary key auto_increment,
    dep_name varchar(20),
    dep_location varchar(20)
    );
    

    建一张employee表,也可以把其理解为从表,这张表用于记录员工所在部门的一致性

    create table employee(
    id int primary key auto_increment,
    name varchar(20),
    age int,
    dep_id int foreign key -- 外键对应主表的主键
    );
    

    向这两张表中添加数据

    -- 添加 2 个部门
    insert into department values(null, '研发部','广州'),(null, '销售部', '深圳');
    select * from department;
    -- 添加员工,dep_id 表示员工所在的部门
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);
    select * from employee;
    

    比如想把研发部的id改为5,这时直接修改是改不了的,因为表employee中有三个数据dep_id都是1,如果直接修改表department中的id,那个前面说的三个数据就会找不到对应的键值,所以数据库会在你修改后直接报错来阻止这种事情的发生。要改的话只能先把表employee中dep_id是1的数据设为null,再把department的id列中1改成5,最后还得再把表employee中dep_id的null设为5,才能修改成功。显然这样是非常麻烦的,这时候我们就需要一种操作叫做级联操作。级联操作是能在修改和删除主表的主键时,同时更新或删除副表的外键值。
    因为级联操作是作用在外键上的,所以无法单独添加。因为我们之前已经添加了外键,想要再在外键上添加级联的话要先把外键删除了,然后再在添加外键的语句后面加上ON UPDATE CASCADE \ON DELETE CASCADE即可。
    alter table employee drop foreign key ed_fk; --删除外键
    ALTER TABLE employee ADD CONSTRAINT ed_fk FOREIGN KEY ( dep_id ) REFERENCES department ( id ) ON UPDATE CASCADE; --添加外键和级联更新。此时我们再更新主表的部门id那么我们从表的员工所在部门id也就直接跟着变了,这就保证了数据的一致性。

    更多相关内容
  • SQL的主键和外键

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

    1.定义主键外键主要是为了维护关系数据库的完整性。
    总结一下:
    (1)主键是能确定一条记录的唯一标识。
    eg:一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
    (2)外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
    eg:A表中的一个字段,是B表的主键,那它就可以是A表的外键。

    2.主键、外键和索引的区别?
    在这里插入图片描述

    3.数据库的主键,外键等之间的关系
    主键:一般情况下,满足第一范式的表都有一个主键Primary key,用于唯一标示数据库中的一个字段。
    外键:外键是相对于数据库设计中的参考完整性而言,它与主键之间是彼此依赖的关系。假设现在有两个表,产品分类表ProductCategory(主键c_id)和产品表Product(主键p_id),每类产品都属于一个分类。那么如果产品信息表肯定需要参考产品分类表进行定义。因为如果没有产品分类表,又何谈产品分类呢。所以产品信息表Product(从表)需要引用ProductCategory(主表)中的主键CategoryId 进行产品分类定义,Product表中引用c_id的字段就是外键。
    外键可以为空值(除了SQLServer等一些数据库),但如果有值的话一定是你参照的那个主表中的主键值。换句话说,从表需要用到主表的属性,没有主表就没有从表。

    4.主表与从表
    (1)主表(父表):
    在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。被作为外键引用的表。
    (2)从表(子表):
    以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。有外键引用的表。

    注意:(#_#)/–关系及用法概述:
    从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。

    展开全文
  • 前言前面几篇 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

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

    展开全文
  • 主键,是中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识中的每一条记录,可以结合外键来定义与不同数据之间的关系。 怎么理解主键呢?...

    参考:https://blog.csdn.net/qq_44745905/article/details/107702120

    MySql主键&外键

    主键用法&意义

    主键,是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。
    怎么理解主键呢?我们知道数据库中的表可以存放很多数据,如果把表中的每一个数据比作一个人的话,那么表的主键就可以看做是人的身份证。

    (1) 在定义列的同时指定主键:

    create table if not exist usr_info(
    mid int primary key,
    uname  varchar(40)
    );

    (2) 在定义完所有列之后指定主键。

    create table if not exists user_info(
    mid int,
    uname  varchar(20),
    primary key(mid)
    );

    多字段联合主键

    在开发中还有一种情况很常见,就是将几个字段联合在一起作为主键,那这个在代码中怎么实现呢?
    举个例子,我们将员工的名字和部门ID联合起来作为主键:
    下面展示一些

    CREATE TABLE t_emp2
    (
        name VARCHAR(32),
        deptId INT,
        salary FLOAT,
        PRIMARY KEY(name,deptId)
    )
    

    语句执行后,会将namedeptId字段组合成为表t_emp2的多字段组合主键。

    主外键键用法&意义

    外部关键字

    在以后我们统一将外部关键字叫做外键,外键就是另一张表中的主键

    问:外键有啥用啊?
    答:外键的主要作用就是保持数据的一致性,完整性。

    再问:怎么保证的呢?
    答:看图。

    如图有两张表,classIdT_Student的外键,是T_class 表的主键, 如果我们要删除T_class 表中classId1的字段,程序是会报错的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

    继续问: 那怎么才能删除呢?
    接着答: 需要先删除T__student表中classId为1的两个字段。

    如何给表添加外部关键字

    在MySQL中给表中字段添加外键约束的语法规则如下:

    1. CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)

    举个例子:现在有两张表,t_empt_dept如下。

    t_dept表

    字段名称	    数据类型	    备注
    deptld	    INT	            部门编号
    name	    VARCHAR(22)	    部门名称
    location    VARCHAR(50)	    部门位置

    t_emp表

    字段名称	        数据类型	        备注
    id	        INT	        员工编号
    name	        VARCHAR(22)	员工名称
    location	VARCHAR(50)	部门ID(外键类型必须和对应主键类型一致)

    我们来创建两张表,并给员工表(t_emp)添加外键:

    CREATE TABLE t_dept
    (
        deptId INT PRIMARY KEY,
        name VARCHAR(22),
        location VARCHAR(50)
    );
    CREATE TABLE t_emp
    (
        id INT PRIMARY KEY,
        name VARCHAR(22),
        deptId INT,
        CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
    );
    

    实际操作如图:

     

    展开全文
  • 主键外键

    千次阅读 2017-08-03 10:55:01
    一个关系事实上是具有共同属性的一类实体的集合。按照集合的定义,集合中元素不能重复。同样,关系中也不应该有重复记录。例如在学生中,存有两条...但学生表和之间是有联系的:每个学生都属于一个系,而每
  • 数据库中的主键外键的关系,通俗易懂

    万次阅读 多人点赞 2017-12-16 16:13:08
    一、什么是主键外键: 关系型数据库中的一条记录中有若干个...课程名,学分)其中课程编号是唯一的,课程编号就是一个主键成绩(学号,课程号,成绩)成绩中单一一个属性无法唯一标识一条记录,学号课程号的组合...
  • 数据表主键外键

    2019-09-22 15:13:15
    1.主键分为:逻辑主键和业务主键 逻辑主键:没有任何的含义,只是为了标识当前列在当前数据库表里的唯一标识; 业务主键:业务主键就是具有真实意义的,就比如身份证,银行卡号,员工编号,一旦变化,难以维护。 ...
  • 关系型数据库和主键外键

    千次阅读 2021-01-11 21:55:07
    一对一:既可以把A的主键充当B的外键,也可以把B的主键充当A的外键(一个人只有一把钥匙,一把钥匙只给一个人) 一对多:把A的主键充当B的外键(一个父亲有几个孩子,一个孩子只有一个父亲) 多对多:...
  • (父)对于两个具有关联关系的而言,相关联字段中主键所在的那个是主。从(子)对于两个具有关联关系的而言,相关联字段中外键所在的那个是从
  • 2设置主键和外键

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

    2019-07-10 15:01:04
    有时候为了表和表之间联系方便,通常会增加主键外键 可以这样理解,比方说有两个表,一个员工表,一个部门表 员工表中有其表的主键id,员工名name 部门表中有其表的主键depid,部门depart 那么我在员工表中可以...
  • 主从表主键外键

    2021-03-07 10:56:03
    A主键在B中充当外键,谁是主,谁是子?A为主B为从个人认为:外键是约束的一种。不存在主从关系,只存在引用关系,如部门员工表。每个员工都属于某个部门,必须与某个部门资料对应。主从的情况:...
  • 每日测验 你都了解哪些MySQL存储引擎,简单说说它们的特点 创建的完整语法及注意事项 MySQL基本数据类型有哪些 ... 支持事务 行锁 外键 数据更加的安全 创建会生成两个文件 结构文件 ...
  • 1.是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性2.外键,用来其他建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张。建立之间的关系,保证数据库的完整性。...
  • 以上五种约束条件针对中字段进行限制从而保证数据中数据的正确性唯一性。换句话说,的约束实际上就是中数据的限制条件。 下面对这五种约束进行详细介绍: 主键约束 主键约束(primary key):每一行记录的...
  • 转自:http://blog.csdn.net/duck_arrow/article/details/8264686概念:主键(primary key)能够...主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。外键(f...
  • 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如:   学生(学号,姓名,性别,班级)   其中每个学生的学号是唯一的,学号...
  • 1、主键约束通常具有包含唯一标识中每一行的值的一列或一组列。这样的一列或多列称为主键 (PK),用于强制的实体完整性。由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束。如果为指定了...
  • MySQL添加主键和外键

    千次阅读 2021-02-02 09:02:41
    删除表中已有的主键约束 (1… 目录 part1:数据类型 part2:约束 part3:主键索引 PRI &唯一索引 UNI &普通索引 MUL part4:外键:foreign key part5:在外键中设置联级删除和联级更新 part6:表和表之间的关系 part7:存储...
  • 查询emp中所有的工资 SELECT DISTINCT ename, sal FROM emp; 查看雇员的月薪与佣金之 sal+comm两列值相加并且组成一个新的字段,值null相加只能返回null 给查询的字段起别名 关键词as 可以省略 SELECT ename, ...
  • 主键外键,创建外键表

    千次阅读 2014-09-14 22:11:03
    一个关系事实上是具有共同属性的一类实体的集合。按照集合的定义,集合中元素不能重复。同样,关系中也不应该有重复记录。例如在学生中,存有两条一样的...但学生表和之间是有联系的:每个学生都属于一个系,
  • 什么是外键表,什么是主键表

    千次阅读 2017-03-17 17:04:42
    1属性有:typeid(主键...1是主键表1的主键字段在2中做外键、而1自己却没有外键表2是外键表有一个依赖1typeid的字段、作为外键、取值必须是其依赖主键表表1中主键字段有的值 ---------------------------
  • 在 MySQL 中,约束是指对表中数据的一种约束,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性有效性。
  • MYSQL--主键 外键

    2021-10-31 17:40:06
    文章目录添加主键外键 添加主键 相关知识 主键,是中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识中的每一条记录,可以结合外键来定义与...
  • 2,一对多关系:A中的一个字段可以对应B中的多个字段,例如部门表和员工表,一个部门可以对应多个员工,但是一员工只对应一个部门,这种多关系很常见。 3,多对多关系:A中的多个字段可以与B的多个字段...
  • 主键外键

    2018-01-05 20:43:47
    主键和外键
  • 外键必须是另一个主键吗? 答: 不一定是主键,但必须是唯一性索引。 主键约束唯一性约束都是唯一性索引。 FOREIGN KEY 约束 外键 (FK) 是用于建立加强两个数据之间的链接的一列或多列。当创建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,915
精华内容 9,966
热门标签
关键字:

员工表的主键和外键