外键约束 foreign key
外键:表示表与表之间的关系字段的参照关系。在后续的增删改操作中,如果遇到违反外键约束的情况时,数据库会阻止这类行为。
声明外键
| 创建子表1 | 创建子表2 |
|---|---|
| create table 子表名( ……. dept-no char(5) references dept(id) #子表中设置外键字段数据类型必须和参照的字段一样,参照字段必须是主键或唯一列 ); |
create table 子表名( ……. 父_no char(5), foreign key(dept父_no) references 父(列) ); |
表已存在,通过修改表 增加外键
| alter table 表名 add constraint 外键名 foreign key(子表字段) references 父类(字段); |
|---|
删除外键约束
| alter table 表名 drop foreign key 外键名; 【补充】 一对多关系:在多的一方设计外键参照一方的主键 多对多关系:需要新建第三方的关系表,在关系表中设计外键 一对一关系:外键可以设计在任何一张表中 注意:建立时,先父后子;删除表时,先子后父。添加数据,先父后子;删除数据时,先子后父。 |
|---|
连接查询
内连接查询 inner join
查询出左表,右表【都有】的数据记录
| select 父表.列1 别名,子表.列2 别名 from 表名1,表名2 where 父表.列=子表.父_no; #连接查询一定要有连接条件法二 |
select 父表.列1 别名,子表.列2 别名 from 父表 inner join 子表 on 父表.列=子表.父_no; |
|---|---|
左外连接查询 left join
在内连接的基础上,增加左表有,右表没有的数据
| select 父表.列1 别名,子表.列2 别名 from 父表 left join 子表 on 父表.列=子表.父_no; |
|---|
右外连接查询 right join
全外连接 full join
嵌套查询
指一个查询语句嵌套在另一个查询语句内部的查询
| 带比较运算符的子语句 <<=>>=!= select * from 子表 where 父表_no=(select 父表_no from emp where条件); 想大的,把后面的再换复杂,细致 |
|---|
| in关键字 子查询 当子查询返回结果为多行时 select * from 表 where in(select from emp where条件in); |
|---|
| any或all操作符 子查询 select * from 表 where any或all(select from emp where条件); |
|---|
