MySQL实用语句及小技巧

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 前言我们在之前已经过了一遍sql的基本操作, 那么那些基本操作如何使用、如何排列才能最大程度发挥服务器的性能呢?如何才能把他们连接起来成为能为我们所服务的强大数据库系统呢?本期我们就将引入一些配合sql核心语句的使用技巧和一些灵活的理解

前言


我们在之前已经过了一遍sql的基本操作,那么那些基本操作如何使用、如何排列才能最大程度发挥服务器的性能呢?如何才能把他们连接起来成为能为我们所服务的强大数据库系统呢?

本期我们就将引入一些配合sql核心语句的使用技巧和一些灵活的理解


1.插入或替换


当我们需要插入一条记录,我们第一反应是用insert命令。但如果此时已经有相关记录了(如主键重复等)。这时候我们一般会采用先删除再添加的方法。但这样显然比较麻烦,我们可能还需要先查询是否已经存在记录了再决定是否需要删除再插入数据。

但如果我们引入replace语句,就可以简化我们的操作流程:

REPLACE INTO jueyou (id, user_id, nick, gender, score) VALUES (1, 775, '掘金酱', 'F', 99);

如上,我们尝试向jueyou数据表插入一条数据,此时replace会先判断id=1的记录是否存在,不存在的话会直接插入,存在的话会先删除原有记录再进行插入。


2.插入或更新


如果我们不希望原因数据直接被删除,我们可以考虑使用如下语句进行插入或更新操作:

INSERT INTO ... ON DUPLICATE KEY UPDATE ...

比如还是上面的例子:

INSERT INTO jueyou (id, user_id, nick, gender, score) VALUES (1, 1, '掘金酱', 'F', 99) ON DUPLICATE KEY UPDATE name='掘金酱', gender='F', score=99;

具体要更新的数据即为update之后的数据。


3.插入或忽略


如果我们只是希望尝试插入一条数据,如果已经有相关数据存在,我们不用做任何的事,那便可以用到我们的insert ignore into...语句。

我们仍然可以使用上面的例子来看看这个语句如何使用:

INSERT IGNORE INTO jueyou (id, user_id, nikc, gender, score) VALUES (1, 1, '小明', 'F', 99);


4.数据表快照


快照,即复制品。我们需要复制一份表的数据到一份新表,只需要使用create table 和 select 即可:

CREATE TABLE jueyou_copy SELECT * FROM jueyou WHERE gender="F";

以上命令即可将jueyou表中的所有性别为F(female女性)的数据复制到新的表jueyou_copy。也就是建立了一份名为jueyou_copy的快照,快照中储存的是jueyou中女性的数据


5.查询结果写入


我们可能经历了一通复杂的查询操作,用了不知道多少where字句。然后在查询完之后呢?我们只是看一看或者拿脑子来记忆吗?

当然不是,我们可以把查询结果储存到我们的数据表中结合insert和select即可

比较典型的案例就是:已经有了一个班级的成绩数据grade,我们需要计算并插入这个班级的平均成绩:

CREATE TABLE AVGgrade (
    id BIGINT NOT NULL AUTO_INCREMENT,
    class_id BIGINT NOT NULL,
    average DOUBLE NOT NULL,
    PRIMARY KEY (id)
);

如上,假设我们以这样的方式创建一个数据表。表名为grade,拥有自动标号的数值型id,不能为空的数值型class_id,不能为空的浮点数类型double,并在最后把id设置为主键。这个表用来存储我们最后的平均成绩

如果此时我们已经有一个表为grade,里面存了class_id和的每次考试的score,那么我们就可以用一个语句完成平均成绩的计算与存储:

INSERT INTO AVGgrade (class_id, average) SELECT class_id, AVG(score) FROM grade GROUP BY class_id;

在select语句中我们使用了之前遇到过的groupby,按照classid分类后求平均值,最后存入AVGgrade表。


小结


今天这篇文章我们主要了解并实战了5项实用技巧。分别是

插入替换

插入更新

插入忽略

快照

查找储存

希望路过的朋友都能有所收获~ 跑码丝滑~


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
安全 关系型数据库 MySQL
MySQL数据库高效秘籍:10个小技巧,让你轻松应对各种场景!
【8月更文挑战第25天】本文介绍了十个提升MySQL数据库效率与安全性的实用技巧。涵盖查询性能分析、索引优化、慢查询日志利用、图形化工具如MySQL Workbench的应用、性能分析工具、主从复制实现、备份与恢复策略、数据库迁移方法及安全性保障等多个方面。通过具体的示例代码展示每个技巧的实际操作方式,帮助读者深入理解并有效运用MySQL数据库。
100 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL查询语句优化的十个小技巧!
查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率。最近在对项目中的一些sql进行优化,总结整理了一些方法。
77 1
|
6月前
|
关系型数据库 MySQL
日常工作小技巧—MySQL展示
日常工作小技巧—MySQL展示
|
2月前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
24 0
|
3月前
|
SQL 关系型数据库 MySQL
SQL语句编写的练习(MySQL)
这篇文章提供了MySQL数据库中关于学生表、课程表、成绩表和教师表的建表语句、数据插入示例以及一系列SQL查询练习,包括查询、排序、聚合和连接查询等操作。
|
3月前
|
SQL 数据可视化 关系型数据库
平时MySQL开发时,经常用到的小技巧
MySQL开发过程中常用的一些技巧,包括使用MD5函数、创建带逻辑删除标识和时间戳的表、多行合并为一行、时间差计算、不走索引的查询优化、多表连接更新等操作的SQL语句示例。
59 0
|
6月前
|
SQL 存储 缓存
SQL语句在MySQL中是如何执行的
SQL语句在MySQL中是如何执行的
79 0
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
SQL 存储 缓存
MySQL数据库使用的10个小技巧
当涉及到使用MySQL数据库,掌握一些小技巧能够提高工作效率,优化查询性能,以及避免一些常见的错误。以下是10个关于MySQL使用的小技巧
|
存储 SQL 关系型数据库
MySQL数据库系列(八)-------高级语句二
可以被当作是虚拟表或存储查询
91 0
MySQL数据库系列(八)-------高级语句二