分页 语法:select * from 表名 limit start,count; 说明从start开始,获取count条数据 例句1:select * from 表名 where gender=1 limit 0,3; 获取性别为男的前三条数据 例句2:每页显示m条数据,当前显示第n页 求第n页的数据:select * from 表名 where is_delete=0 limit(n-1)*m,m;
连接查询 分为:内连接、外连接(左连接,右连接)
内连接查询:查询结果为两个表匹配到的数据 - inner join
右连接查询:查询结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充 - right join
左连接查询:查询结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充 - left join
语法:select * from 表1 inner/right/left join 表2 on 表1.列 = 表2.列
例句1:使用内连接查询班级表和学生表(这里学生属于班级 所以查询学生表 on后面的条件使用到外键关联) select * from students inner join classes on students.cls_id = classes.id;
例句2:使用左连接查询班级表和学生表(使用as为表另起别名) select * from students as s left join classes as c on s.cls_id = c.id;
例句3:使用右连接查询班级表和学生表 select * from students as s right join classes as c on s.cls_id = c.id;
例句4:查询学生姓名以及班级姓名 select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;
标量子查询(一行一列) 例句:查询班级学生平均年龄,查询大于平均年龄的学生 select * from students where age > (select avg(age) from students);
列级子查询(一列多行) 例句:查询还有学生在班级的所有班级名称 -- 1.找出学生表中所有的班级id 2.找出班级表中对应的名字 select name from classes where id in (select cls_id from students);
行级子查询(一行多列) 例句:查询班级年龄最大,身高最高的学生 行元素:将多个字段合成一个行元素,在行级子查询中会使用到的行元素 select * from students where (height,age) = (select max(height),max(age) from students);