&9多表观察
一、分表的重要性
*设计表的时候,一定要注意数据冗余问题。
如果两张表存在关联关系,则存在以下三种关系:
1.一对一————外键可以放在任何一方
2.一对多————外键只能放在多的一方
3.多对多
二、多表关联查询
1、交叉关联查询——一一匹配,形成笛卡尔积
内连接就是表间的主键与外键相连,只取得键值一致的,可以获取双方表中的数据连接方式。
1、select 字段 from表一,表二
2、select 字段 from 表一 cross join 表二
2、内连接
1、select 字段 from 表一,表二 where 关联表之间的联系 and xxx
2、select 字段 from 表一 inner join 表二 on(关联关系)where 条件
3、外连接(左外连接|右外连接)
1.左外连接
select * from emp left join dept(emp.dept_id=dept.id)
,
*以join为中心,emp、dept分别在join的左右侧
2.右外连接
select * from right[outer]left join dept on(emp.dept_id=dept.id)
3.自连接——表自身与自身关联
*子查询——将第一次查询的结果做成一个表参与到第二次查询
三、外键约束——用来保证两张表外键关联时,不出错(保证数据可靠性)
1、逻辑外键:
2、物理外键:
#创建表的时候添加(多对一的表,先创建一的表,创建外键表落后)
create table if not exists dept(
id int PRIMARY KEY auto_increment,
name VARCHAR(255) not NULL UNIQUE,
intro text
);
create table emp (
id int PRIMARY KEY auto_increment,
`name` VARCHAR(255) not NULL UNIQUE,
gender char(10) DEFAULT '女',
email VARCHAR(255),
dept_id INT,
# 添加外键约束 约束 对应表位置
constraint foreign key(dept_id) references dept(id)
);
————————————————