mysql 基础篇之主键和外键

本贴最后更新于 2016 天前,其中的信息可能已经事过境迁

前言

前面几篇 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;

1.png

添加主键约束

alter table emp
  add constraint pk_emp
    primary key(sid);

alter table department
  add constraint pk_department
    primary key(deptno);

2.png

查看主键

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

3.png

查看外键

输入命令:show create table 表名;

4.png

删除主键

命令:alter table emp drop primary key;

删除外键

命令:alter table emp drop foreign key deptno;

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

以上,over

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

  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    690 引用 • 535 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...