连接查询
1. 等值连接
方式一
select * from 表1,表2 where 表1.列=表2.列
select * from 表1,表2这一句话出现笛卡尔积的现象。一个表的数目和另一个表的数据相乘。通过where进行筛选。
例1:查询学生信息及学生的成绩
select * from students stu, scores sc where stu.studentno=sc.studentno
出现问题,后个字段多了一个1,因为两个学号字段相同
2. 内连接
方式二(又称内连接)
select * from 表1 inner join 表2 on 表1.列=表2.列
select * from students inner join scores on students.studentno=scores.studentno
区别:
等值连接是先连接成大表这时会产生笛卡尔积现象,生成临时表在内存中,然后在根据筛选条件进行筛选。
内连接是先判断在连接成表。节省内存。
练习题
统计2班男女生各有多少人
select sex,count(*) from students where class='2班' group by sex
统计每个班级中每种性别的学生人数,并按照班级升序排序
select class,sex,count(*) from students group by class,sex order by class asc
查询年龄最小的学生的全部信息
select * from students order by age desc limit 1