查询数据3种方法,排序查询,分组查询,嵌套查询,多表查询,分
2017-01-22 本文已影响0人
孤岛渔夫
-- 查询数据1 查询表中的所有数据
-- * 通配符 代表所有字段
-- select * from 表名
select * from student;
-- 查询数据2 带条件式的查询
-- select * from 表名 where 条件表达式
select * from student where sex=2;
select * from student where sex=2 and age = 17;
-- 查询数据3 指定字段查询 (推荐 .. 效率高, 目的明确)
-- select `字段名1`, `字段名2`, .... `字段名N` from 表名 [ where 条件表达式 ]
select id,name, age, sex from student where id > 2;
-- 排序查询
-- select 字段名 ... from 表名 [wherer ...] order by 字段名 asc(默认升序)/desc(降序)
select id,name,sex,age from student order by age;
-- 分组查询
-- select 字段名 from 表名 group by 字段名
select `class`, max(`score`) from student group by `class`;
-- 嵌套查询
-- 查询每个班里面成绩最高的人
-- select `class`, name, max(`score`) from student group by `class`;
-- 查询每个班的最大成绩
select max(score) from student group by class;
-- 查询in条件里每个人的班级,姓名,成绩
select `class`,`name`,`score` from student where score in (90,59);
-- 把两个查询条件嵌套使用
select `class`,`score`,`name` from student where score in ( select max(score) from student group by class );
-- 多表查询
select name, hobby from student , life where sid = studentId
-- 给不同的表 取别名(小名) 主要为了 区分 不同的表里有相同的字段名
select s.id, name, sex, hobby
from student s, life l
where s.sid = l.studentId and sex=2
-- 分页查询
-- limit rows
-- limit offset,rows
-- offset 偏移量(从哪开始)
-- rows 行数(显示多少条数据)
select id,name,sex,regtime
from student
limit 3;
select id,name,sex,regtime
from student
limit 2,3;
select id,name,sex,regtime
from student
limit 0,3;
create table if not exists `life`(
`id` int unsigned auto_increment primary key,
`studentId` int(10) unsigned comment '学号',
`hobby` varchar(20) default null comment '爱好'
)engine=MyISAM default charset=utf8;
insert into life values
(null,1,'唱歌'),
(null,1,'嫖'),
(null,1,'赌'),
(null,1,'抽'),
(null,1,'吹箫'),
(null,3,'学霸'),
(null,3,'拍片'),
(null,3,'撸'),
(null,3,'美女'),
(null,6,'看片'),
(null,6,'打手枪'),
(null,6,'打飞机'),
(null,6,'学习PHP')