MySQL查询

select基础语法

  1. select * from 表名字;
  2. select * from students;

select完整语法

  1. select 去重选项 字段列表 [as 字段别名] from 数据源 [where子句] [group by 子句] [having子句] [order by 子句] [limit子句];
  2. - 查询所有字段
  3. - 查询指定字段
  4. - 使用 as 给字段起别名
  5. - 可以通过 as 给表起别名

条件查询where

  1. 使用where子句对表中的数据筛选,结果为true的行会出现在结果集中
  2. --语法
  3. select * from 表名 where 条件;
  4. 例:
  5. select * from students where id=1;
  6. ---------------------------------------------------------
  7. --比较运算符
  8. - 等于: =
  9. - 大于: >
  10. - 大于等于: >=
  11. - 小于: <
  12. - 小于等于: <=
  13. - 不等于: != <>
  14. --逻辑运算符
  15. - and
  16. - or
  17. - not
  18. --模糊查询
  19. - like
  20. - %表示任意多个任意字符
  21. - \_表示一个任意字符
  22. --范围查询
  23. - in表示在一个非连续的范围内
  24. - between ... and ...表示在一个连续的范围内
  25. --空判断
  26. - 注意:null(占用空间地址的)与""(空字符串,不占空间地址的)是不用的
  27. - 判断空`is null`,这里注意不能用等于(=)
  28. - 判断非空`is not null`

比较运算符

  1. #select .... from 表名 where .....
  2. #查询 大于18岁 的信息
  3. select * from students where age > 18;
  4. #查询小于18岁的信息
  5. select * from students where age < 18;
  6. #查询小于或者等于18岁的信息
  7. select * from students where age <= 18;
  8. #查询年龄为18岁的所有学生的名字
  9. select * from students where age = 18;
  10. #查询姓名不是影的
  11. select * from students where name != '影';

逻辑运算符

  1. #18到28之间的所有学生信息
  2. select * from students where age >18 and age < 28;
  3. #18岁以上的女性
  4. select * from students where age > 18 and gender='女';
  5. # 查询编号小于4或没被删除的学生
  6. select * from students where id < 4 or is_delete = 0;
  7. #查询年龄不是18岁的 女性 这个范围内的信息
  8. select * from students where not (age = 18 and gender = '女'); -- 可读性 更高
  9. select * from students where age != 18 and gender = '女';
  10. #年龄不是小于或者等于18 并且是女性
  11. select * from students where (not age <= 18) and gender = 2;
  12. select * from students where age > 18 and gender = 2;
  13. #MySQL数据库中优先级:not>and>or

模糊查询

  1. -- like
  2. -- % 替换任意多个
  3. -- _ 替换1
  4. #查询姓名中 以 "小" 开始的名字
  5. select * from students where name like '小%'; -- '小于' '小张' '小xx'
  6. #查询姓名中 有 "小" 所有的名字
  7. select * from students where name like '%小%'; -- '小于' '小张' '小xx' 'x小x'
  8. #查询有2个字的名字
  9. select * from students where name like '__'; -- xx xx
  10. #查询至少有2个字的名字
  11. select * from students where name like '__%';
  12. #rlike 正则
  13. #查询以 周开始的姓名
  14. select name from students where name rlike "^周.*";
  15. #查询以 周开始、伦结尾的姓名
  16. select name from students where name rlike "^周.*伦$";

范围查询

  1. #in (1, 3, 8)表示在一个非连续的范围内
  2. #查询 年龄为18、34的姓名
  3. select name from students where age in (18,34);
  4. #查询 姓名为影,老王的
  5. select * from students where name in ('影','python');
  6. #not in 不非连续的范围之内
  7. #年龄不是 18、34岁之间的信息
  8. select name from students where age not in (18,34);
  9. #between ... and ...表示在一个连续的范围内
  10. #查询 查询id是3到8的学生
  11. select * from students where id between 3 and 8;
  12. select * from students where id between 3 and 8;
  13. #查询学生id是3到8的男生
  14. select * from students where id between 3 and 8 and gender=1;
  15. select * from students where (id between 3 and 8) and gender=1; -- 可读性高
  16. #not between ... and ...表示不在一个连续的范围内
  17. #查询 年龄不在在18到34之间的的信息
  18. select * from students where age not between 18 and 34;
  19. select * from students where not age between 18 and 34;

空判断

  1. #判空is null 不能用 =
  2. #查询身高为空的信息
  3. select * from students where name is null;
  4. #判非空is not null
  5. select * from students where name is not null;

聚合函数

  1. - count(\*)表示计算总行数,括号中写星与列名,结果是相同的
  2. - max(列)表示求此列的最大值
  3. - min(列)表示求此列的最小值
  4. - sum(列)表示求此列的和
  5. - avg(列)表示求此列的平均值
  6. #总数
  7. #count查询学生总数
  8. select count(*) from students;
  9. #查询男性有多少人,女性有多少人
  10. select count(*) as 男性人数 from students where gender = 1;
  11. select count(*) as 女性人数 from students where gender = 2;
  12. #最大值max
  13. #查询最大的年龄
  14. select max(age) from students;
  15. #查询女性的最大编号
  16. select max(id) from students where gender = 2;
  17. #查询最大年龄的女性id
  18. select max(age) from students where gender=2;
  19. #最小值min
  20. #查询未删除的学生最小编号
  21. select min(id) from students where is_delete=0;
  22. #求和sum
  23. #查询男生的年龄和
  24. #求和字段 是varchar则为0 如果字段内容是数字的话会进行相加
  25. select sum(age) from students where gender = 1;
  26. #平均值avg
  27. #查询未删除女生的年龄的平均值
  28. select avg(age) from students where gender=2 and is_delete = 0; -- 默认保留4位小数
  29. #计算平均年龄 sum(age)/count(*)
  30. #四舍五入 round(123.23 , 1) 保留1位小数
  31. #计算所有人的平均年龄,保留2位小数
  32. select round(avg(age),2) from students;
  33. select round(sum(age)/count(*),2) from students;