首页
mysql
Mysql MariaDB常用命令
清理 zabbix 历史数据, 缩减 mysql 空间
Mysql增
Mysql删
Mysql改
Mysql查
收藏夹
mysql-表操作(增删查改)
Mysql备份
influxdb
Grafana
Grafana-InfluxDB
grafana接入openldap认证
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
Mysql查
查询表内所有内容 `select * from table_name;` * 可以换成任意的一个或多个字段名称 #### where 表达式 (按条件查询) ``` select * from table_name where ID=1; where 后面可以是 1.比较运算符 > < >= <= = 不等于:!= 或 <> select * from test where age > 5; 2.成员运算符 in not in 后面是一个set select * from test where age in (5, 12); 3.逻辑运算符 为了查询结果更加精确,需要多个限条件,这时就需要 and(&&) 来连接条件;只需要数据满足某些条件中的某一个,这时就需要使用 or(||) 来连接条件;在查询时,and 的优先级高于 or and or not not 要放在表达式的前面 and 和 or 放到两个表达式中间 查询某个在给定范围内的记录 select 查询内容 from 表名 where 条件 between 值1 and 值2; select * from test where age between 5 and 12; 4.模糊查询 like % 表示 任意个数的任意字符 _ 表示一个任意字符 # 查询某些为空NULL 或 非空的记录 select 查询内容 from 表名 where 条件 is(not) NULL; select * from test where age is NULL; 请查询 姓小的 数学小于 80 分 并且 英语 > 20分 的人的 数学成绩 select math,name from stu where math < 80 and english > 20 and name like "小%"; ``` 在查询时过滤掉重复的值:select distinct 字段名 from 表名;字段名表示要过滤重复记录的字段 `select distinct num from a;` 在使用distinct指定多个字段时,只有被指定的这些字段的值都相同,才会被认为是重复的 ##### where中用regexp 正则来匹配查询数据 `SELECT My_num,callno FROM VoipList123 WHERE CallNo REGEXP '[5][2][8][0]';` ``` 查找name字段中以'st'为开头的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st'; 查找name字段中以'ok'为结尾的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$'; 查找name字段中包含'mar'字符串的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar'; 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$'; ``` 参考: [MySQL正则表达式](https://blog.csdn.net/qq_22238021/article/details/80929518 "MySQL正则表达式") [MySql正则](https://www.runoob.com/mysql/mysql-regexp.html "MySql正则") #### like关键字 模糊查询 在查询具有一类相同特征的数据时,需要用到模糊查询,这是就需要使用like关键字 select 查询内容 from 表名 where 内容 (not) like ‘匹配的字符串’ 百分号通配符 %:表示匹配任意长度的任意字符串 `select name from 表名 where name字段名 like '11%';` #查询name值是11开头的 下划线通配符 _ :表示匹配任意单个字符,如果需要匹配多个字符,则需要使用多个 _ `select name from name where name like '11__';` 如果需要查询带有 % 或 _ 的数据,由于 % 和 _ 是通配符,则需要使用 \ 进行转义 `\% `表示 %,`\_ `表示 _ #### 聚合函数 count 统计记录的条数 统计记录条数 select count(记录) from 表名 ``` mysql> select * from test; +------+------+------+ | id | name | age | +------+------+------+ | 1 | A | 4 | | 2 | B | 7 | | 3 | C | 5 | | 4 | D | 12 | | 5 | E | 0 | | 6 | F | NULL | +------+------+------+ 6 rows in set (0.01 sec) mysql> select count(name) from test; +-------------+ | count(name) | +-------------+ | 6 | +-------------+ 1 row in set (0.09 sec) ``` #### sum()函数 计算表中某个字段值的总和 select sum(字段名) from 表名 ``` mysql> select sum(age) from test; +----------+ | sum(age) | +----------+ | 28 | +----------+ 1 row in set (0.00 sec) ``` #### avg()函数:计算表中某个字段的平均值 select avg(字段名) from 表名 ``` mysql> select avg(age) from test; +----------+ | avg(age) | +----------+ | 5.6000 | +----------+ 1 row in set (0.00 sec) ``` #### max()函数:返回表中某个字段中的最大值 ``` mysql> select max(age) from test; +----------+ | max(age) | +----------+ | 12 | +----------+ 1 row in set (0.04 sec) ``` #### min()函数:返回表中某个字段中的最小值 ``` mysql> select min(age) from test; +----------+ | min(age) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) ``` #### 分组查询 在对数据表中的数据进行统计时,需要将数据按照一定的特征分组统计,此时就需要使用分组查询 select 查询内容 from 表名 group by 分组依据 [having表达式条件] ``` mysql> select * from test; +------+------+------+-------+ | id | name | age | class | +------+------+------+-------+ | 1 | A | 4 | 1 | | 2 | B | 7 | 1 | | 3 | C | 5 | 1 | | 4 | D | 12 | 2 | | 5 | E | 0 | 2 | | 6 | F | 8 | 3 | +------+------+------+-------+ 6 rows in set (0.00 sec) #class值分成不同组,列出最大值 mysql> select max(age) from test group by class; +----------+ | max(age) | +----------+ | 7 | | 12 | | 8 | +----------+ 3 rows in set (0.03 sec) ``` #### 对查询结果进行排序 select 查询内容 from 表名 order by 排序条件 asc/desc,asc表示升序 desc表示降序 ``` mysql> select name, age from test order by age asc; +------+------+ | name | age | +------+------+ | E | 0 | | A | 4 | | C | 5 | | B | 7 | | F | 8 | | D | 12 | +------+------+ 6 rows in set (0.00 sec) mysql> select name, age from test order by age desc; +------+------+ | name | age | +------+------+ | D | 12 | | F | 8 | | B | 7 | | C | 5 | | A | 4 | | E | 0 | +------+------+ ``` #### 使用 LIMIT 限制查询结果的数量 在查询时,可能需要只显示部分数据,这是需要限制查出来的数据数量`select 查询字段名 from 表名 limit 偏移量m 记录数n`,表示从第m+1个记录开始查询出n条记录 `LIMIT [ OFFSET ,] 记录数` LIMIT 后面可以跟两个参数,第一个参数“ OFFSET ”表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1则从查询结果中的第二条记录开始,以此类推。**OFFSET为可选值,默认值为0**,第二个参数“记录数”表示指定返回查询记录的条数。 ``` mysql> select name, age from test order by age asc limit 2, 2; +------+------+ | name | age | +------+------+ | C | 5 | | B | 7 | +------+------+ 2 rows in set (0.00 sec) ``` 查询student2表中的前四条记录 `SELECT * FROM student LIMIT 4;` where 与 having: where 与 having关键字都用于设置条件表达式对查询结果进行过滤,区别是having后面可以跟聚合 函数,而where不能,通常having关键字都与group by 一起使用,表示对分组后的数据进行过滤 参考:[简单查询与按条件查询](https://www.cnblogs.com/lnlin/p/6953404.html "简单查询与按条件查询")
local
2021年9月6日 19:14
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码