多表设计

多表设计
关系型数据库,实体与实体

一对多:
用户和订单:一个用户可以有多个订单,一个订单只属于一个用户
部门和员工:一个部门有多个员工,一个员工属于一个部门
多对多:
学生和课程:一个学生可以选择多门课程,一门课程被多个学生选择
运动员与体育项目:一个运动员可以报多个项目,一个项目有多个运动员
一对一:
公司与地址:一个公司有一个地址,一个地址也只能被一个公司占据

一对多:

在多的一方设置一个字段,当外键指向一的一方的主键
多对多:

建立中间表,至少有两个字段作为外键指向多对多双方的各自主键
一对一:

任意一方的主键作为另外一方的主键

建立外键的2种方式
1.建表的时候使用:
FOREIGN KEY(cid) REFERENCES customer(cid)
foreign key (cid) references customer(表名)(cid)
2.表已经创建好了:
ALTER TABLE orders ADD CONSTRAINT FOREIGN KEY(cid) REFERENCES customer(cid);
alter table orders(表名) add constraint foreign key (cid) references customer(表名)(cid)
多表查询
1.交叉连接
select * from customer,orders 表名;
获取的是两个表的笛卡尔积
2.内连接
inner join -----inner省略
显示内连接
select * from A表名 inner join B表名 on 条件

隐式内连接
select * from A表名,B表名 where条件

3.外连接
outer join
左外连接:
select * from A 表名 left outer join B表名 on条件

右外连接:
select * from A表名 right outer join B表名 on 条件

子查询:
一条SQL语句的查询,依赖另一条SQL查询语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值