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来看一下外键有没有添加成功:
上图中,选中表employee,单击红框部分的“设计表”按钮,界面如下:
上图中就可以看到我们新建的外键了,而且系统默认给这个外键起了个名字:employee_ibfk_1。默认规则是RESTRICT。紧接着来给外键设置值:
上图中,我们打开员工表,然后给外键设置值,1代表宣传部,2代表秘书部。
然后我们回到主表(部门表),此时如果想删除id为1的宣传部,会弹出如下提示:(因为外键的默认规则为restrict)
4、删除外键:(通过sql语句的方式)我们在navicat中可以通过图形界面的方式删除外键,也可以通过sql语句来删除。
(1)获取外键名:
如果在命令行中不知道外键的名字,可以通过查看表的定义找出外键的名称:
show create table emp;
运行效果如下:
其实我们在表的信息中也可以看到:(注意书写命令的格式)
(2)删除外键:
alter table employee drop foreign key 外键名;
二、表连接(join)我们以下面的两张表举例:作为本段内容的例子
department部门表:
employee员工表:
其中,外键对应关系为: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;
运行效果: