MySQL 约束、表连接、表关联、索引 (2)

alter table employee add [constraint] foreign key(`dept_id`) references department(`id`) on delete cascade; 

代码解释:

alter table employee:在从表employee中进行操作;

add foreign key(dept_id):将从表的字段dept_id添加为外键;

references department(id):映射到主表department当中为id的字段。

运行上方代码后,我们通过navicat来看一下外键有没有添加成功:

MySQL 约束、表连接、表关联、索引

上图中,选中表employee,单击红框部分的“设计表”按钮,界面如下:

MySQL 约束、表连接、表关联、索引

上图中就可以看到我们新建的外键了,而且系统默认给这个外键起了个名字:employee_ibfk_1。默认规则是RESTRICT。紧接着来给外键设置值:

MySQL 约束、表连接、表关联、索引

上图中,我们打开员工表,然后给外键设置值,1代表宣传部,2代表秘书部。

然后我们回到主表(部门表),此时如果想删除id为1的宣传部,会弹出如下提示:(因为外键的默认规则为restrict)

MySQL 约束、表连接、表关联、索引

4、删除外键:(通过sql语句的方式)

我们在navicat中可以通过图形界面的方式删除外键,也可以通过sql语句来删除。

(1)获取外键名:

如果在命令行中不知道外键的名字,可以通过查看表的定义找出外键的名称:

show create table emp;

运行效果如下:

MySQL 约束、表连接、表关联、索引

其实我们在表的信息中也可以看到:(注意书写命令的格式)

MySQL 约束、表连接、表关联、索引

(2)删除外键:

alter table employee drop foreign key 外键名;  

二、表连接(join)

我们以下面的两张表举例:作为本段内容的例子

department部门表:

MySQL 约束、表连接、表关联、索引

employee员工表:

MySQL 约束、表连接、表关联、索引

其中,外键对应关系为:employee.dept_id=department.id。employee.leader中的数字的含义为:生命壹号的leader是生命二号,生命二号没有leader,生命叁号的leader是生命壹号。

1、内连接(默认):

只列出匹配的记录。

语法:

select … from table1  [inner] join  table2

[on condition]

where definition

解释:只列出这些连接表中与连接条件相匹配的数据行。INNER可以不写,则默认为内连接。[ON condition]里面写的是连接的条件。

举例:

select e.name,d.name from employee e inner join department d on e.dept_id=d.id; 

等价于:

select e.name,d.name from employee e,department d where e.dept_id=d.id; 

运行效果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypzpy.html