主键和外键举例_mysql 基础篇之主键和外键

主键和外键举例_mysql 基础篇之主键和外键前言前面几篇 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;

主键和外键举例_mysql 基础篇之主键和外键

添加主键约束

alter table emp

add constraint pk_emp

primary key(sid);

alter table department

add constraint pk_department

primary key(deptno);

主键和外键举例_mysql 基础篇之主键和外键

查看主键

语句: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);

主键和外键举例_mysql 基础篇之主键和外键

查看外键

输入命令:show create table 表名;

主键和外键举例_mysql 基础篇之主键和外键

删除主键

命令:alter table emp drop primary key;

删除外键

命令:alter table emp drop foreign key deptno;

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

以上,over

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232306.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月19日 下午4:01
下一篇 2025年10月19日 下午4:22


相关推荐

  • 腾讯元宝ai头像功能使用教程

    腾讯元宝ai头像功能使用教程

    2026年3月13日
    3
  • git删除本地分支和删除远程分支

    git删除本地分支和删除远程分支引言 注 本人一直都是用的 gitbash 窗口完成日常的开发工作 事情是这样的 切换分支的时候命令打错了 gitcheckout 后面没有跟分支名 结果 gitstatus 很多 delete 的文件 直接冒冷汗 gitadd commit 之后发现本地与远程确实是删除了很多文件 我本地没有修改的代码 于是选择直接删除本地的分支 然后重新从远程拉分支 具体操作 我现在在 dev 分支上 想删除 dev 分支 1 先切换到别的分支 gitchec

    2026年3月17日
    2
  • ASP.NET 如何使用 SqlTransaction

    ASP.NET 如何使用 SqlTransactiontransaction属性: 1.原子性:事务是一个完整的操作,事务的各元素师不可分的。2.一致性:事务开始时和完成时,数据必须处于一致的状态。3.隔离性:对数据进行修改的所有并发事务是彼此隔离的。4.持久性:事务完成后,它对系统的影响是永久的。  ASP.NET使用SqlTransaction处理事务操作 SqlTransaction类是对SQLSe

    2022年5月1日
    37
  • 举例说,在命令模式(Command Pattern)

    举例说,在命令模式(Command Pattern)

    2022年1月1日
    50
  • 小波变换 完美通俗解读

    小波变换 完美通俗解读申明 小波变换完美通俗解读 是 小波变换和 motion 信号处理 系列中的第一篇 原始出处为 windstorm 的网站 http www kunli info 并非本站原创 但这位大师深入浅出的讲解了小波变换 是你在学习小波的过程中 必看之作 小波变换和 motion 信号处理 系列共包含三篇 nbsp nbsp 第一篇 基础普及 小波变换完美通俗解读 nbsp nbsp 第二篇 深入小波 nbsp nbsp 第三篇 小波应用限于篇幅关系

    2026年3月19日
    2
  • loadrunner12安装教程_word入门基础教程视频

    loadrunner12安装教程_word入门基础教程视频Loadrunner安装_简单使用基础教程,包括VirtualUserGenerator、Controller、Analysis的简单使用以及对Loadrunner的介绍。

    2022年10月14日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号