day08数据库多表查询

1.报表查询

        count       个数

        sun          总数

        avg          平均值

        max         最大值

        min          最小值  

统计班级里边有多少学生

select count(*)from student;

统计总成绩大于250分的人数

select count(*)from student where (math+english+chinese)>250;

统计班级里边各科总成绩

select sum(math),sum(english),sum(chinese) from student

统计所有科目的总成绩

select sum(math+english+chinese) from student;

统计一下语文平均成绩

select sum(chinese)/count(*) from student;

select avg(chinese) from student;

统计一下班级语文最高分和最低分

select max(chinese) from student;

select min(chinese) from student;

报表查询订单根据名称合并后,总价格>10000的商品

select * from orders group by product having sum(price) >7000

2.多表设计

        一对一

                一张表的一条记录只能与另外一张表的一条记录进行对应,反之亦然

                有时候,为了业务,或者避免一张表中数据量过大,过复杂,在开发中会进行一对一方式来设计表

        一对多

                指的是一个实体的某个数据与另外一个实体的多个数据有关联关系, 一对多的关系在设计的时候,需要设计表的外键

 

         多对多           

                一个实体的数据对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据。

                一个学生可以有多个老师,一个老师可以教多个学生

                解决方案:创建一个中间表,专门用来维护多表之间的对应关系,通常是能够唯一标识出数据的字段(主键)

 3.内连接查询

        内连接,inner join on 查询两张表,设定条件,将两张表中对应的数据查询出来

不会产生笛卡尔积,不会产生临时表,性能高

select * from customer c inner join orders o on c.id=o.customer_id;

select * from customer,orders where customer.id=orders.customer_id;

select * from customer c,orders o where c.id=o.customer_id;

4.左连接查询

        左外连接  left join   on 设定条件,将两张表对应的数据查询出来,同时将左表自己没有关联的数据也查询出来

        注意:join前面是左,后面是右

select * from customer c left join orders o on c.id=o.customer_id;

5.右连接查询

        右外连接 right join  on 设定条件,将两张表对应的数据查询出来,同时将右表自己没有关联的所有数据查询出来

select * from customer c right join orders o on c.id=o.customer_id;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值