join on
#一对多:一个表里的一行关联,对应另一个表的多行关联。在表中通过外键实现。即一个表的主键,是另一个表的外键
create table salesman(
id int(10),
name varchar(20)
);
create table performerce(
#commment ‘’ ,添加注解
pid int(10) comment '销售记录id',
id int(10) comment '销售员id',
gid int(10) comment '商品id',
good varchar(20),
#decimal 六位数,保留两位小数
bonus decimal(6,2) comment '奖金'
);
#查询,将两表的内容合为一表的内容:
select s.id,pid,bonus from salesman s join performerce p on p.id=s.id;
这里在表名后面添加的字符是起的别名,只在这个查询的过程中起作用,方便后面的进行比较。
这里的条件是两个id相同。
这两个id其实都是销售员的id,所以可以相同,能满足这个条件。
当然,我没有插入数据,意思就是这么个意思..
#多对多的关系 A表的一行对应B表的多行,B表的一行也对应A表的多行
#这需要三个表来实现,首先两个表是可以不存在关系,第三张表将第一二张表联系起来
#在上表的基础上创建一个商品表
create table goods(
id int(10) comment '商品id',
good varchar(20) comment '商品名',
);
#查询商品id为1的商品被哪些销售员卖掉,以及奖金各是多少
select g.id,s.id,bonus from performerce p
join goods g on g.id=p.gid
join salesman s on p.id=s.id
where g.id=1;
#关键在于将数据表联系起来,存在关系的表一定要先写,然后找出对应的A表和B表的关系,A表和C表的关系