首先需要准备好数据,新建数据库python_test_1并创建两个表:students表和classes表。
3.1 mysql查询
- 查询所有字段
- 查询指定字段
-
使用 as 给字段起别名
-
select 表名.字段 .... from 表名;
-
可以通过 as 给表起别名!!!
注意:给表起了别名就要用。
反例:select students.name, students.age from students as stu;
-
消除重复行(查性别)!!!
distinct字段的使用
3.2 条件查询
where关键字的使用
比较运算
比较运算符
- 等于: =
- 大于: >
- 大于等于: >=
- 小于: <
- 小于等于: <=
- 不等于: != 或 <>
==查询大于18岁的信息
==查询小于18岁的信息
==查询小于或者等于18岁的信息
查询年龄为18岁的所有学生的名字
查询年龄不等于18岁的所有学生的名字
逻辑运算(与或非)
and
18和28之间的所有学生信息
失败反例:
select * from students where age>18 and <28;
18岁以上的女性
注意:逻辑运算符前后的限制字段可以不一致。
or
18以上或者身高高过180(包含)以上
not
不在 18岁以上的女性 这个范围内的信息
注意:利用括号来达到指定的运算优先级顺序。
年龄不是小于或者等于18 并且是女性
3.3 模糊查询(where name like 要查询的数据)
*where... like...
- % 替换任意个
- _ 替换1个
查询姓名中 以 "小" 开始的名字
查询姓名中 有 "小" 所有的名字
查询有2个字的名字
查询有3个字的名字
查询至少有2个字的名字
3.4 范围查询
- in
-
between...and...
in (1, 3, 8)表示在一个非连续的范围内
查询 年龄为18、34的姓名
not in 不非连续的范围之内(注意:not后直接跟关键字in)
年龄不是 18、34岁之间的信息
between ... and ...表示在一个连续的范围内
查询 年龄在18到34之间的的信息
not between ... and ...表示不在一个连续的范围内
查询 年龄不在在18到34之间的的信息
3.5 空判断
判空is null
查询身高为空的信息
判非空is not null
失败反例:select * from students where height not is null;
3.6 排序
- order by 字段
- asc从小到大排列,即升序
- desc从大到小排序,即降序
查询年龄在18到34岁之间的男性,按照年龄从小到大到排序
查询年龄在18到34岁之间的女性,身高从高到矮排序
order by 多个字段
查询年龄在18到34岁之间的女性,身高从高到矮排序, 如果身高相同的情况下按照年龄从小到大排序
查询年龄在18到34岁之间的女性,身高从高到矮排序, 如果身高相同的情况下按照年龄从小到大排序,
如果年龄也相同那么按照id从大到小排序
按照年龄从小到大、身高从高到矮的排序
3.7 聚合函数
为了快速得到统计数据,经常会用到如下5个聚合函数
(1)总数
count
查询男性有多少人,女性有多少人
(2)最大值
max
查询最大的年龄
查询女性的最高 身高
(3)最小值
min
查询未删除的学生最小编号
(4)求和
sum
计算所有人的年龄总和
(5)平均值
avg
计算平均年龄
四舍五入 round(123.23 , 1) 保留1位小数
计算所有人的平均年龄,保留2位小数
计算男性的平均身高 保留2位小数
3.8 分组
- group by
按照性别分组,查询所有的性别
注意:分组查询 select 的后面只能有两种值,一个值分组字段,一个是聚合函数
计算每种性别中的人数
注意:
count(1)和count(*)作用是一致的。
计算男性的人数
group_concat(...)
查询同种性别中的姓名
查询每组性别的平均年龄
having
查询平均年龄超过30岁的性别平均年龄, having avg(age) > 30
注意 having 后面一定是聚合函数
having和where的区别:
having是对子表的筛选;where是对记录的筛选。
查询每种性别中的人数多于2个的信息
with rollup 汇总













网友评论