数据指令

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 增删改查插入数据,如果已有主键值则插入数据失败

数据指令

增删改查

插入数据,如果已有主键值则插入数据失败。

mysql> INSERT INTO student
    -> (ID,name,grade)
    -> VALUES(755,'王东浩',80);Copy to clipboardErrorCopied
复制代码

插入并替换数据,如果已有主键值则先删除再插入。

mysql> REPLACE INTO student
    -> (ID,name,grade)
    -> VALUES(755,'王东浩',80);Copy to clipboardErrorCopied
复制代码

更新数据

mysql> UPDATE student
    -> SET name='孙鹏',grade=60
    -> WHERE id=753;Copy to clipboardErrorCopied
复制代码

删除数据

mysql> DELETE FROM student
    -> WHERE id=754;Copy to clipboardErrorCopied
复制代码

查询数据

mysql> SELECT id,name FROM student               -- 按条件查询数据
    -> WHERE id BETWEEN 753 and 755;
mysql> SELECT * FROM student;                    -- 查询全部数据Copy to clipboardErrorCopied
复制代码

条件语句

  • DISTINCT 关键字用于对查询结果去重,必须放于所有字段前。只有多个字段全部相等才会被去重。
mysql> SELECT DINTINCE age,sex FROM student;     -- 查询数据并去重Copy to clipboardErrorCopied
复制代码
  • WHERE 语句用于指定 更新/删除/查询 的操作范围,如果不设定范围将对全部数据进行操作。
mysql> SELECT * FROM student WHERE id = 100;
mysql> SELECT * FROM student WHERE id != 100;
mysql> SELECT * FROM student WHERE id [NOT] BETWEEN 30 AND 50;
mysql> SELECT * FROM student WHERE id [NOT] IN (30, 35 ,50);
mysql> SELECT * FROM student WHERE grade IS [NOT] NULL;Copy to clipboardErrorCopied
复制代码
  • LIKE 语句用于对字符串进行模糊匹配:%代表任意多个字符 _代表一个字符 /代表转义
mysql> SELECT * FROM student WHERE name LIKE 'Tom%';Copy to clipboardErrorCopied
复制代码

分组排序

数据分组

分组函数 功能
count 个数
sum 总和
max 最大值
min 最小值
avg 求平均值
group_concat 组内字符串拼接
  1. GROUP 语句指定数据的分组方式,如果不含则默认把全部数据合并为一条数据。(本质是生成临时表)
  2. AS 关键字为表或者列起别名,可省略。
  3. HAVING 语句对分组后的结果进行筛选。
-- 查询班级总数
mysql> SELECT COUNT(*) FROM class;                    -- 全部合并
-- 查询各年级人数
mysql> SELECT grade, SUM(class.student_num) AS nums 
    -> FROM class 
    -> GROUP BY grade                                 -- 各班数据按年级合并
    -> HAVING SUM(class.student_num) > 200;           -- 筛选人数大于 200 的年级Copy to clipboardErrorCopied
复制代码

数据排序

  • ORDER 语句指定数据显示顺序,ASC 为升序 / DESC 为降序。
  • LIMIT 语句对排序后的数据进行筛选,指定起始序号和总数量。
-- 查询学生信息
mysql> SELECT * 
    -> FROM student 
    -> ORDER BY grade DESC, ID ASC                   -- 按成绩降序排列,若相同按学号升序排列
    -> LIMIT 10,20;                                  -- 筛选第 11 - 30 名Copy to clipboardErrorCopied
复制代码

多表查询

嵌套查询

  1. FROM 型:子语句返回一个表,且必须给子查询结果取别名。
  2. WHERE 型:子语句返回一个值,不能用于 UPDATE。
-- FROM 型
mysql> SELECT * 
    -> FROM (SELECT * FROM tb WHERE id > 0) AS subfrom 
    -> WHERE id > 1;
-- WHERE 型
mysql> SELECT * 
    -> FROM tb
    -> WHERE money = (SELECT max(money) FROM tb);Copy to clipboardErrorCopied
复制代码

合并查询

  1. 默认为 DISTINCT 形式,不同表查询到的相同数据只展示一个。
  2. 设置为 ALL 则不同表查询到的相同结果重复展示。
-- DISTINCT 形式
mysql> (SELECT * FROM student WHERE id < 10) 
    -> UNION
    -> (SELECT * FROM student WHERE id > 20);
-- ALL 形式
mysql> (SELECT * FROM student1) 
    -> UNION ALL 
    -> (SELECT * FROM student2);Copy to clipboardErrorCopied
复制代码

连表查询

  • 内连接 INNER JOIN:(默认)未指定连接条件时,自动查找相同字段名匹配连接条件。
mysql> SELECT s.id,s.name,c.name
    -> FROM student s JOIN class c
    -> ON e.cid = c.id;
mysql> SELECT * 
    -> FROM student s, class c 
    -> WHERE s.id = c.id; Copy to clipboardErrorCopied
复制代码
  • 交叉连接 CROSS JOIN:未指定连接条件时,视为无连接条件。
mysql> SELECT *
    -> FROM boy CROSS JOIN girl;                 -- 显示所有交配可能
mysql> SELECT *
-> FROM boy, girl;                               -- 等价写法Copy to clipboardErrorCopied
复制代码
  • 外连接 OUTER JOIN:如果数据不存在,也会出现在连接结果中。
  • LEFT JOIN:左表数据一定显示,没有匹配右表数据用 null 填充。
  • RIGHT JOIN:右表数据一定显示,没有匹配左表数据用 null 填充。
  • FULL JOIN:两表数据一定显示,没有匹配数据用 null 填充。
mysql> SELECT s.id,s.name,c.name                   -- 显示学生的班级信息
    -> FROM student s LEFT JOIN class c            -- 没有班级的学生也会显示
    -> ON s.cid = c.id;
-- 先筛选再连接(效率等价,但如果有大量重复值提前筛选可以提高效率)
mysql> SELECT s.id,s.name,c.name    
    -> FROM student s LEFT JOIN (SELECT DINTINCT id, name FROM class) c       
    -> ON s.cid = c.id;



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
3
分享
相关文章
flink cdc 同步问题之如何同步多张库表
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
33 多文件上传及文件下载
路老师分享PHP语言知识,涵盖多文件上传和文件下载功能。多文件上传只需将表单中的文件域名称改为数组形式,文件下载则通过`header()`函数实现强制下载。详细代码示例和操作步骤,助你轻松掌握PHP核心技术。
111 1
|
9月前
|
Java“StringIndexOutOfBoundsException”解决
Java中“StringIndexOutOfBoundsException”异常通常在字符串索引超出其边界时抛出。解决方法包括检查字符串长度、确保索引值有效,以及使用条件语句避免越界访问。
490 2
|
10月前
|
CentOS 7.x时间同步服务chrony配置详解
文章详细介绍了在CentOS 7.x系统中如何安装和配置chrony服务,以及它与ntpd服务的对比,强调了chrony在时间同步方面的高效性和准确性。
734 2
CentOS 7.x时间同步服务chrony配置详解
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
本文介绍了在Spring Boot中如何实现文件上传,包括单文件和多文件上传的实现,文件上传的表单页面创建,接收上传文件的Controller层代码编写,以及上传成功后如何在页面上遍历并显示上传的文件。同时,还涉及了`MultipartFile`类的使用和`@RequestPart`注解,以及在`application.properties`中配置文件上传的相关参数。
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
19911 7
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
flink cdc 提交问题之提交任务异常如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问