赞
踩
1._:代表单个任意字符
2.%:任意个数 的任意字符
select 列名 from 表名 like
多字段,想看前面,依次排序
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
MYSLQ 提供的一些方法,
count(列名),选主键列,*表示数据行的额所有字段。
max(),
min(),
sum(),
avg().
ifnull(),
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;(group后面可以跟多个字段,)
where :分组前的条件过滤,不能使用聚合函数,where关键字在group by 关键字的后面
having::select …where …group by …hanving
SELECT FROM LIMIT 起始索引,查询条目数 起始索引=(当前页码-1)*每一页 的个数 ```sql -- 条件查询 ===================== /* select 列名1, 列名2, ... 列名n from 表名 where 条件 */ -- 1.查询年龄大于20岁的学员信息 select * from stu where age > 20; -- 2.查询年龄大于等于20岁的学员信息 select * from stu where age >= 20; -- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息 select * from stu where age >= 20 and age <= 30; select * from stu where age >= 20 && age <= 30; select * from stu where age between 20 and 30; -- 4.查询入学日期在'1998-09-01' 到 '1999-09-01' 之间的学员信息 select * from stu where hire_date >= '1998-09-01' and hire_date <= '1999-09-01'; -- 5. 查询年龄等于18岁的学员信息 select * from stu where age = 18; # select * from stu where age <> 18; -- 6. 查询年龄不等于18岁的学员信息 select * from stu where age != 18; -- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息 select * from stu where age = 18 or age = 20 or age = 22 ; select * from stu where age = 18 || age = 20 || age = 22 ; select * from stu where age in (18,20,22) ; -- 8. 查询英语成绩为 null的学员信息 -- 注意: null值的比较不能使用 = != 。需要使用 is is not select * from stu where english = null; -- 错误 select * from stu where english is null; select * from stu where english is not null; -- 模糊查询 like ===================== /* 通配符: (1)_:代表单个任意字符 (2)%:代表任意个数字符 */ -- 1. 查询姓'马'的学员信息 select * from stu where name like '马%'; -- 2. 查询第二个字是'花'的学员信息 select * from stu where name like '_花%'; -- 3. 查询名字中包含 '德' 的学员信息 select * from stu where name like '%德%';
/* 排序查询: select 列名1,列名2,... from 表名 order by 排序列名1 [排序规则],排序列名2 [排序规则],... 排序规则: 升序:ASC ,默认规则 降序:DESC */ -- 1.查询学生信息,按照年龄升序排列 select * from stu order by age asc; select * from stu order by age; -- 2.查询学生信息,按照数学成绩降序排列 select * from stu order by math desc; -- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列 select * from stu order by math desc,english asc; -- 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照年龄升序排列 select * from stu order by math desc,english asc,age asc;
/* 聚合函数 什么是聚合函数 就是MySQL提供的一些方法,这些方法用于完成聚合操作 聚合操作:对一列的数据进行纵向计算 聚合函数的分类 count(列名) 统计数量(一般选用不为null的列) max(列名) 最大值 min(列名) 最小值 sum(列名) 求和 avg(列名) 平均值 */ -- 统计班级一共有多少个学生 select count(name) c from stu; -- 一般选用不为null的列,一般选用主键列 -- 使用*,表示数据行的所有字段,所有的字段不可能都为null select count(english) c from stu; select count(id) c from stu; select count(*) c from stu; -- 查询数学成绩的最高分 select max(math) from stu; -- 查询数学成绩的最低分 select min(math) from stu; -- 查询数学成绩的总分 select sum(math) from stu; -- 查询数学成绩的平均分 select avg(math) from stu; -- 查询英语成绩的最低分 -- ifnull:如果为null,就替换为指定的值 select name,ifnull(english,0) from stu; select min(english) from stu; -- 查询英语成绩的总分 select sum(english) from stu;
/* 分组查询 select 列名1,列名2,... from 表名 group by 分组列名1,分组列名2,... having 条件 注意: 1、分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义 2、having和where的区别 where:分组前的条件过滤,不能使用聚合函数 having:分组后的条件过滤,having后面的条件中可以使用聚合函数 */ -- 1. 查询男同学和女同学各自的数学平均分 select sex,avg(math) from stu group by sex; -- 2. 查询男同学和女同学各自的数学平均分,以及各自人数 select sex,avg(math),count(*) from stu group by sex; -- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组 select sex,avg(math),count(*) from stu where math >=70 group by sex; -- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。 select sex,avg(math),count(*) from stu where math >=70 group by sex;
/* 分页查询: SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数 * 起始索引:从0开始 */ -- 查询前三条 select * from stu limit 0,3; -- 1. 从0开始查询,查询3条数据 select * from stu limit 0,3; select * from stu limit 3; -- 2. 每页显示3条数据,查询第1页数据 select * from stu limit 0,3; -- 3. 每页显示3条数据,查询第2页数据 select * from stu limit 3,3; -- 4. 每页显示3条数据,查询第3页数据 select * from stu limit 6,3; -- 起始索引 = (当前页码 - 1) * 每页显示的条数 -- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于等于2个的,按照人数升序排序,取第1条数据。 select sex,avg(math),count(*) from stu where math >= 70 group by sex having count(*) >= 2 order by count(*) asc limit 0,1; select sex,avg(math),count(*) from stu where math >= 70 group by sex having count(*) >= 2 order by count(*) asc limit 0,1;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。