mysql笔记7(单表查询)
文章目录
- 1. select
- ① 从伪表里查数据(可以结合第3点dual理解数据来源)
- select '文字 ';
- 做计算:select 算式;
- select '文字'( 或算式) as 别名;(as 用于起别名,可省略)
- ② 从真实表里查数据
- select * from 表名;
- select 字段名,字段名 from 表名;
- 2. from
- 3. dual 伪表
- 4. where 用于条件筛选
- 5. in
- 6. between ... and ... 和 not between ... and ...
- 7. is null 和 is not null
- 8. 聚合函数
- 9. 客户端的使用 -- navicat
- 10. like模糊查询
- 11. group by分组查询
- order by
- 12. group_concat(将分组查询的结果聚合显示)
- 13. having 也用于条件筛选
- 14. limit 限定截取数据的起始位置
- 15. distinct(去重)和all(默认情况下都是all)
- 16. 内容出处
1. select
① 从伪表里查数据(可以结合第3点dual理解数据来源)
select '文字 ';
做计算:select 算式;
select ‘文字’( 或算式) as 别名;(as 用于起别名,可省略)
as的好处:① 好看 ② 便于用having进行条件筛选>真实表里的字段查询时也可以用as起别名
② 从真实表里查数据
select * from 表名;
select 字段名,字段名 from 表名;
2. from
from 表名;
from 主要用途在于笛卡尔积(笛卡儿积:可以简单理解为两表数据交叉匹配)
3. dual 伪表
结合第1点
例如:通常情况下,我们查数据时会标明从哪张表里查。但是上述select 2+7;并没有说从哪张表里查找结果,却依然可以显示结果9,是因为此时默认从伪表dual里查询结果了
4. where 用于条件筛选
条件:>;>=;<;<=;=;!=;not;and;or
mysql中where 支持的运算符
5. in
where 字段名 in + (‘要筛选出的数据’,‘要筛选出的数据’);
6. between … and … 和 not between … and …
where 字段名 between 数据 and 数据
between … and … 直接的数据如果是字符串会按首字母范围筛选数据(字符串如果中英文结合好像会出问题)
7. is null 和 is not null
8. 聚合函数
就是mysql自带的一些主要用于做统计的函数,例如:sum avg(平均值)、max、min、count(统计次数)等
统计数据时一般不用count(*),count(1)和count( * )的争议
count(*)优化
9. 客户端的使用 – navicat
navicat:数据库管理工具(也可以简单理解为mysql数据库的图形界面)。可以方便我们建库建表以及对数据进行CRUD
输入连接名和mysql密码就可以连接到本地的mysql数据库了
点击左上角的新建查询以后,就可以在图形界面写sql语句了(当然,不使用sql语句也能操作)
10. like模糊查询
%可以替代一个或者多个字符
_可以代替一个字符
举例理解模糊查询:
查询student表中所有姓张的同学:
① select * from student where name like ‘张%’;
② 查询student表中所有名字中带”张“的同学:
11. group by分组查询
① 如果使用group by,查询字段必须是聚合函数和分组字段。
② group by默认按字段升序排序,后面加上 desc 可以改成降序排序(desc此处用法存疑,有的博客里说desc应该是跟order by连用的。但是视频教程里确实 group by address desc也运行成功了,gpt回复说可能是因为mysql版本原因)
举例理解group by:
① 查询这张表里男性的平均年龄和女性的平均年龄
② 查询这张表里北京、深圳和上海人口的平均年龄
我这里加上desc以后报错了
改成order by以后使用desc没有问题
order by
默认升序排序,后面可以加desc改为降序排序
12. group_concat(将分组查询的结果聚合显示)
group_concat()里面可以填写多个字段
13. having 也用于条件筛选
where做条件筛选时是从初始数据表里一条一条筛选出符合条件的数据。havinga可以在已经查询后的结果上继续进行条件筛选。
14. limit 限定截取数据的起始位置
select 字段名,字段名 from 表名 limit 从哪个地方开始(默认从第1条数据开始),向下截取几条数据
limit 0, 2:从第1条数据开始,向下截取2条数据
limit 1,3:从第2条数据开始,向下截取3条数据
15. distinct(去重)和all(默认情况下都是all)
写在筛选字段前
all:
distinct:
16. 内容出处
mysql