mysql之数据库操作进阶(三)
2023-09-11 14:14:08 时间
环境信息
-
数据库:mysql-5.7.20
-
操作系统:Ubuntu-16.04.3
查询
条件查询
# 使用where关键字
select * from 表名 where 条件
# 比较运算符
>,>=,<,<=,!=,=,<>
# 逻辑运算符
or,and,not
# 模糊查询like
select * from 表名 where name like '%' # %代表任意多个字符
select * from 表名 where name like 'T_' # _代表任意一个字符
# 范围查询
select * from 表名 where id in(1,2,3) # in在一个非连续的范围内
select * from 表名 where id between 1 and 3 # between ... and ... 在一个连续的范围内,全闭区间;
# 判空
select * from 表名 where name is null # 没有填写
select * from 表名 where name is not null # 判断非空
- 注意
运算的优先级由高到低的顺序为小括号,not,比较运算符,逻辑运算符
分组
# 关键字group by
select age,count(*) from 表名 group by age # 通过年龄分组
# 关键字having,后面的条件和where一样
select age,count(*) from 表名 group by age having age>20 # 通过年龄分组,然后对分组后的结果进行筛选
分页
# 关键字limit
select * from 表名 limit start,count
# start 索引从0开始,得到count条数据,其按默认的id排序
排序
# 关键字order by
# asc 按从小到大排序
# desc 按从大到小排序
# 规则为先按列1排序,如果有相同的按列2排序,否则按默认
select * from 表名 order by 列1 asc|desc,列2 asc|desc;
常用聚合函数
说明:聚合函数不能加载where的后面
count(*):求列的总数;当count()内的字段一定没有null值时,统计的是列表的行数;如果有null值,统计的是该字段非null的个数;
select count(name) from 表名 where age > 20;
max(age):求该列的最大值,指定列名,忽略NULL值;对于非数字,得到的是通过该列名排序后的最后一个
select max(age) from 表名 where age > 20;
min(age):求该列的最小值,指定列名,忽略NULL值,对于非数字,得到的是通过该列名排序后的第一个
select min(age) from 表名;
sum(age):该列之和,指定列名,忽略NULL值;如果指定的列不是可运算的值,结果为0
select sum(age) from 表名;
avg(name):求列的平均值,对于非数字结果为0;
select avg(age) from 表名;
连接查询
# 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
# 内连接inner join
# 左连接left join
# 右连接right join
select * from 表1 inner或left或right join 表2 on 表1.列=表2.列
自关联
# 表中的某一列,关联了这个表中的另外一列
# 采用的依然是连接查询的方式;
子查询
# 标量子查询
# 列级子查询
# 行级字查询
# 表级字查询
格式:select * from 表名 where 条件+(子查询)
关键字:
in:在范围内;
any:任何一个;
all:等于所有;
相关文章
- Python——MySQL操作,使用mysql.connector
- 【MySql】mysql 数据库数据订正
- MySQL更改数据库数据存储目录
- mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid) 的解决方法
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- 远程连接Mysql数据库问题(ERROR 2003 (HY000))
- MySQL数据库下.frm .MYD .MYI损坏恢复操作
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
- 数据库内核月报 - 2015 / 08-MySQL · 功能分析 · 5.6 并行复制实现分析
- 数据库内核月报 - 2015 / 09-MySQL · 引擎特性 · InnoDB Adaptive hash index介绍
- php同步mysql两个数据库中表的数据
- mysql数据库架构设计与优化
- Linux启动/停止/重启Mysql数据库的方法
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续
- MySQL普通索引与唯一索引__mysql中唯一索引和普通索引的用途及区别
- MySQL数据库创建及删除操作
- MySql数据库连接池专题
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
- 使用Qt操作MySQL数据库中的表格
- 在Qt中操作MySQL数据库
- 〖Python 数据库开发实战 - MySQL篇㉖〗- 数据删除操作 - DELETE语句
- 〖Python 数据库开发实战 - Python与MySQL交互篇⑱〗- 项目实战 - 实现用户管理 - 删除用户
- C++Qt开发——操作MySQL数据库
- websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用
- Python:mysql-connector-python模块对MySQL数据库进行增删改查
- MYSQL导入数据报错|MYSQL导入超大文件报错|MYSQL导入大数据库报错:2006 - MySQL server has gone away
- SpringBoot(Spring、SpringMVC)集成Mybatis操作Mysql数据库
- 第55讲:MySQL数据库视图中数据的更新操作
- 接口自动化之操作mysql数据库
- MYSQL提权之反弹SHELL——数据库提权属于webshell到管理员的纵向提权,本质还是利用udf提权,无非是在mysql自定义函数中使用了反弹shell而已
- ASP.NET Core使用EF Core操作MySql数据库
- MySQL数据库管理系统安装部署——Linux