MySQL基础实例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 总结了一些个人觉得比较常用且重要的mysql sql语句基础操作,不全待续

我们可以对多个column 进行排序
image

DATE_FORMAT(DATE,format) 函数,可以让日期以指定格式输出
SELECT name, birth, DATE_FORMAT(now(),"%Y-%m-%d %T") as curDate FROM pet;
image

不能在NULL 列上做算数比较,不起作用
SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
image

查询具体以特定字符串开头,用REGEXP_LIKE()函数, 并且表达式以“^”符号开始
SELECT * FROM pet WHERE REGEXP_LIKE(name, '^bu');
image

当然,有从开头查询,就有从结尾匹配查询,如查找以“fy”结尾的name,需要用到‘$’符号
SELECT * FROM pet WHERE REGEXP_LIKE(name, 'fy$');
image
REGEXP_LIKE(name, 'w') 匹配包含‘w’的字符串
REGEXP_LIKE(name, '^.{5}$') 匹配长度为5的字符串

Group by 可以针对多列进行分组行为
SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
image

@@global 可以进行全局访问
SELECT @@global.sql_mode;
set @@global.sql_mode ='’;

SELECT DATABASE(); 显示当前使用的数据库
SHOW TABLES; 当前库包含的表
DESCRIBE pet; 显示表pet的具体表描述

用户自定义变量
SELECT @min_weight:=MIN(weight),@max_weight:=MAX(weight) FROM pet;
SELECT * FROM pet WHERE weight=@min_weight OR weight=@max_weight;
image

连接mysql数据库
shell> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"
Enter password:

连接mysql server,利用 SHOW BINARY LOGS; 可以查看当前所有binlog的二进制文件
image

mysqlbinlog 利用--hexdump 参数可以将二进制日志内容生成十六进制dump
如已配置mysqlpath,binlog.000001 文件在目录C:installmysql-8.0.16-winx64data 下
执行命令 C:installmysql-8.0.16-winx64data>mysqlbinlog --hexdump binlog.000001
image

登录msyql 终端,
日志文件路径show variables like 'general_log_file';
image
错误日志show variables like 'log_error';
image
慢查询日志文件show variables like 'slow_query_log_file';
image

可以告诉mysqlbinlog为行事件禁用BINLOG语句
先执行sql: update pet set sex='f' where id=9; 看看log里面干了什么事
mysqlbinlog -v --base64-output=DECODE-ROWS binlog.000001
image

显示log文件中慢查询的语句:shell> mysqldumpslow [options] [log_file ...]
如 mysqldumpslow -v binlog.000001

查看当前mysql运行的一些变量,可以执行命令 mysql> SHOW VARIABLES;
查看当前mysql运行的一些统计和状态指标,执行命令 mysql> SHOW STATUS;

SQL modes 影响Mysql支持的语法以及数据验证。它使得在不同环境使用mysql或者和其他数据库服务变得更加容易。
Sql mode很重要,比如一些 mode是至关重要的,拿 strict mode 来说
先查看 SELECT @@global.sql_mode;
image

修改sql mode 来支持严格的校验,如截图
image

And条件的优化
先执行 show index from pet; 查看索引
image

explain select * from pet where sex='f' and card_no > 201912020001;
image
使用了card_no_name 的索引,type为范围查询,共找到8行数据。
可以清晰看到,where 后的条件以“and” 连接,条件会根据索引等进行优先过滤,不受条件在and的位置顺序影响。
另外,range compare 范围比较,根据情况进行具体分析,也会走索引查询。

几个比较常用且特殊的操作符Comparison Operators
<=> NULL-safe equal to operator
!=, <> Not equal operator
NOT LIKE Negation of simple pattern matching
IS NOT NULL 判断不是NULL 返回1

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;

    -> 1, 1, 0

mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;

    -> 1, NULL, NULL

mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;

    -> 1, 1, 0

流控制方法
mysql> SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;

    -> 'one'

mysql> SELECT IF(1<2,'yes','no');

    -> 'yes'

mysql> SELECT IF(STRCMP('test','test1'),'no','yes');

    -> 'no'

IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2.

mysql> SELECT IFNULL(NULL,10);

    -> 10

查看mysql 引擎
mysql> SHOW ENGINES;
mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES;

停止自动提交
SET autocommit=0;

LOCK INSTANCE FOR BACKUP
UNLOCK INSTANCE
LOCK INSTANCE FOR BACKUP 获取一个实例级备份锁,该锁允许在联机备份期间使用DML,同时防止可能导致不一致快照的操作

Index
索引分为聚簇索引和二级索引
为什么聚簇索引查询快,是因为索引搜索直接到存有数据的叶子结点。

二级索引是如何关联聚簇索引?
二级索引上的每个记录都包含了行数据的主键以及二级索引指定的列。二级索引用此主键去聚簇索引上搜索数据。当然,因为二级索引存储primary Key, 所以key越短越好。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
85 1
|
24天前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
41 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
26天前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
57 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
23天前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
19 0
|
24天前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
27 0
|
24天前
|
算法 关系型数据库 MySQL
复购率 mysql 实例(sample database classicmodels _No.1 )
复购率 mysql 实例(sample database classicmodels _No.1 )
25 0
|
6月前
|
Prometheus 监控 Cloud Native
使用mysqld_exporter监控所有MySQL实例
使用mysqld_exporter监控所有MySQL实例
254 2
|
2月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
168 0
|
4月前
|
Prometheus 监控 Cloud Native
Prometheus结合Consul采集多个MySQL实例的监控指标
将 Prometheus 与 Consul 结合使用,实现对多个 MySQL 实例的自动发现与监控,不仅提高了监控的效率和准确性,也为管理动态扩缩容的数据库环境提供了强大的支持。通过细致配置每一部分,业务可以获得关键的性能指标和运行健康状况的即时反馈,进而优化资源配置,提高系统的稳定性和可用性。
149 3