8.Mysql 常用函数和基础查询

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 8.Mysql 常用函数和基础查询

Mysql 函数参考和扩展: Mysql 官网

Mysql 语法执行顺序如下,一定要清楚!!!运算符相关,可前往 Mysql 基础语法和执行顺序扩展。

(8) select (9) distinct (11)<columns_name list>
(1) from <left_table>
(3) <join_type> join <right_table>
(2) on <join_condition>
(4) where <where_condition>
(5) group by <group_by columns_name list>
(6) with <rollup>
(7) having <having_condition>
(10) order by <order_by columns_name list>
(12) limit <[offset,] rows>
;

Mysql 常用函数

数学函数

字符串函数

日期函数

json 函数

聚合函数

简单查询

数据准备

create database sql_test1;
use sql_test1;
create table if not exists `user_info`
(
    `id`                    int         not null,
    `device_id`             int         not null comment '用户id',
    `gender`                varchar(14) not null comment '性别',
    `age`                   int comment '年龄',
    `university`            varchar(32) not null comment '大学',
    `gpa`                   float comment '得分',
    `active_days_within_30` int comment '30天内活跃天数'
);
truncate table user_info;
insert into user_info values(1,2138,'male',21,'北京大学',3.4,7);
insert into user_info values(2,3214,'male',null,'复旦大学',4.0,15);
insert into user_info values(3,6543,'female',20,'北京大学',3.2,12);
insert into user_info values(4,2315,'female',23,'浙江大学',3.6,5);
insert into user_info values(5,5432,'male',25,'山东大学',3.8,20);
insert into user_info values(6,2131,'male',28,'山东大学',3.3,15);
insert into user_info values(7,4321,'male',28,'复旦大学',3.6,9);

直接查询

查询所有列、指定字段和字段起别名

select * from user_info; -- 查询所有列
+----+-----------+--------+------+--------------+------+-----------------------+
| id | device_id | gender | age  | university   | gpa  | active_days_within_30 |
+----+-----------+--------+------+--------------+------+-----------------------+
|  1 |      2138 | male   |   21 | 北京大学     |  3.4 |                     7 |
|  2 |      3214 | male   | NULL | 复旦大学     |    4 |                    15 |
|  3 |      6543 | female |   20 | 北京大学     |  3.2 |                    12 |
|  4 |      2315 | female |   23 | 浙江大学     |  3.6 |                     5 |
|  5 |      5432 | male   |   25 | 山东大学     |  3.8 |                    20 |
|  6 |      2131 | male   |   28 | 山东大学     |  3.3 |                    15 |
|  7 |      4321 | male   |   28 | 复旦大学     |  3.6 |                     9 |
+----+-----------+--------+------+--------------+------+-----------------------+
select device_id,gender,age,university 
from user_info;-- 查询指定字段
+-----------+--------+------+--------------+
| device_id | gender | age  | university   |
+-----------+--------+------+--------------+
|      2138 | male   |   21 | 北京大学     |
|      3214 | male   | NULL | 复旦大学     |
|      6543 | female |   20 | 北京大学     |
|      2315 | female |   23 | 浙江大学     |
|      5432 | male   |   25 | 山东大学     |
|      2131 | male   |   28 | 山东大学     |
|      4321 | male   |   28 | 复旦大学     |
+-----------+--------+------+--------------+
select device_id,gpa,
       round(gpa*rand(),1) as gpa_adj
from user_info; -- 生成新计算列并起别名
+-----------+------+---------+
| device_id | gpa  | gpa_adj |
+-----------+------+---------+
|      2138 |  3.4 |     2.3 |
|      3214 |    4 |     2.3 |
|      6543 |  3.2 |     2.8 |
|      2315 |  3.6 |     2.4 |
|      5432 |  3.8 |     2.4 |
|      2131 |  3.3 |     0.9 |
|      4321 |  3.6 |     1.3 |
+-----------+------+---------+

去重查询

select distinct university 
from user_info;-- 查看去重后有哪些大学
+--------------+
| university   |
+--------------+
| 北京大学     |
| 复旦大学     |
| 浙江大学     |
| 山东大学     |
+--------------+

条件查询

select * 
from user_info 
where age is null;-- 查询年龄不为null的数据
+----+-----------+--------+------+--------------+------+-----------------------+
| id | device_id | gender | age  | university   | gpa  | active_days_within_30 |
+----+-----------+--------+------+--------------+------+-----------------------+
|  2 |      3214 | male   | NULL | 复旦大学     |    4 |                    15 |
+----+-----------+--------+------+--------------+------+-----------------------+
select device_id
from user_info
where university = '北京大学' 
  and gender = 'male';-- 查询北京大学男性有哪些用户
+-----------+
| device_id |
+-----------+
|      2138 |
+-----------+

排序查询

select *
from user_info
order by gender,age desc;-- 查询性别升序,年龄降序的记录
+----+-----------+--------+------+--------------+------+-----------------------+
| id | device_id | gender | age  | university   | gpa  | active_days_within_30 |
+----+-----------+--------+------+--------------+------+-----------------------+
|  4 |      2315 | female |   23 | 浙江大学     |  3.6 |                     5 |
|  3 |      6543 | female |   20 | 北京大学     |  3.2 |                    12 |
|  6 |      2131 | male   |   28 | 山东大学     |  3.3 |                    15 |
|  7 |      4321 | male   |   28 | 复旦大学     |  3.6 |                     9 |
|  5 |      5432 | male   |   25 | 山东大学     |  3.8 |                    20 |
|  1 |      2138 | male   |   21 | 北京大学     |  3.4 |                     7 |
|  2 |      3214 | male   | NULL | 复旦大学     |    4 |                    15 |
+----+-----------+--------+------+--------------+------+-----------------------+

分页查询

select *
from user_info
limit 1;-- 查询出一条数据
+----+-----------+--------+------+--------------+------+-----------------------+
| id | device_id | gender | age  | university   | gpa  | active_days_within_30 |
+----+-----------+--------+------+--------------+------+-----------------------+
|  1 |      2138 | male   |   21 | 北京大学     |  3.4 |                     7 |
+----+-----------+--------+------+--------------+------+-----------------------+
select *
from user_info
order by gpa desc
limit 1;-- 查询得分最高的一个用户
+----+-----------+--------+------+--------------+------+-----------------------+
| id | device_id | gender | age  | university   | gpa  | active_days_within_30 |
+----+-----------+--------+------+--------------+------+-----------------------+
|  2 |      3214 | male   | NULL | 复旦大学     |    4 |                    15 |
+----+-----------+--------+------+--------------+------+-----------------------+

分组查询

select university,
       count(distinct device_id) as user_cnt,
       round(avg(gpa),2) as avg_gpa,
       max(gpa) as max_gpa,
       min(gpa) as min_gpa,
       group_concat(distinct age order by age separator '、') as age_distr
from user_info
group by university;-- 查询每个大学的用户数、平均得分、最大的分、最小得分和年龄分布情况
+--------------+----------+---------+---------+---------+-----------+
| university   | user_cnt | avg_gpa | max_gpa | min_gpa | age_distr |
+--------------+----------+---------+---------+---------+-----------+
| 北京大学     |        2 |     3.3 |     3.4 |     3.2 | 20、21    |
| 复旦大学     |        2 |     3.8 |       4 |     3.6 | 28        |
| 山东大学     |        2 |    3.55 |     3.8 |     3.3 | 25、28    |
| 浙江大学     |        1 |     3.6 |     3.6 |     3.6 | 23        |
+--------------+----------+---------+---------+---------+-----------+

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
13天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
44 9
|
14天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
43 3
|
16天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
20天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
86 1
|
24天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
21天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
40 1
|
19天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
19天前
|
SQL NoSQL 关系型数据库
|
21天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
30 0