MySQL对表操作(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL对表操作(上)

结束了上一章内容,我们对数据库的操作有一定的了解,本章内容就是针对表中的数据进行操作的。


针对表中数据的操作绝大部分都是增删改查(CRUD),CRUD也就是四个单词的缩写:


增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete);


这也是数据库存在的主要目的。


CRUD


增加(Create)


增加即向表中插入数据,上一章中已经提到过了,基本语法如下:


insert into 表名 value(值1,值2......);【单行插入】

insert into 表名 values(值1,值2......),(值1,值2......);【多行插入】


例如:


f2adf2da45444b75b164949b9c2316c2.png


02bf385bf85243edaa731698b8d0d62d.png


values 方式插一行,插多行都可以,但是value每次只能插入一行记录。


查询(Retrieve)


全列查询


如上图,我们用的是 *  的方式是全列查询,上一章也提到,对于大数据的查询是非常危险的,带宽会被这一条语句占满,服务器不可能只服务一个用户端。


指定列查询


有时候呢,我们一张表有很多的数据,比如一个人,有年龄,性别,名字,是否已婚,等等....;但是我们有时候又不是需要全部信息,我们只需要取一部分,那么这就需要我们的指定列查询了。

还是拿 student 表来举例:我们拿出所有学生的名字:

aad38142a57e41e9b71b3f3bb829ad34.png


否则就会报错:

17ea2dbe730c4f6a98ccbfef566793d2.png

查询字段为表达式


select 表达式 对比结果如下:


cbf07b51375344eeb66b41dfa501bfde.png


别名


为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:


SELECT column [AS] alias_name [...] FROM table_name;

就是有时候我们不想让列名那么奇怪,或者我们像简单点表示列名,那就需要用到别名。


例如,我们设置一个成绩表,并添加数据:


63a69457096f4b948b6861989d14bf3e.png

39fc6bcafe3e4ea7ad43e1a3919a6acd.png

我想查询每个人的总分数:

我们可以怎么写:

5bd2db238f8b4cc8bc345bc95b24ca74.png


这时候我们看这个总分的列名非常不好,于是可以用到别名:


a9546e61f2ab41fe970cf418bf67209d.png


这下舒服多了!


去重:DISTINCT


使用DISTINCT关键字对某列数据进行去重;

就拿上面的分数表来说,我再次添加一个数据:

0a5a68c5015a4749b3292f24e4835cdd.png


我们现在查询数学成绩看看结果:


26203f9f076640eb83012b9927cf34bd.png

去重也就是取出重复数据,我们来试试看:

9e1184f012044edc82b241f1531d4dd1.png

结果的确是将重复数据剔除了。


排序:ORDER BY


上学时期每次考完试,班主任总会对学生的总分进行排序,我们这里也不例外;

我们也可以对上面总成绩进行一个排序;

语法如下:

-- ASC 为升序(从小到大)

-- DESC 为降序(从大到小)

-- 默认为 ASC

SELECT ... FROM table_name [WHERE ...]

ORDER BY column [ASC|DESC], [...];


结果如下:

d7adcc1896ac4b2aad0a7b1776c3999e.png

我们也可以升序排序:


10167a07a2c441e190e0ffca8c32ae93.png

asc 是升序,默认也是升序; desc 的 全拼是 descend(下降)。


条件查询:WHERE


我们在查询的时候会对一些数据进行筛选,并非全部数据都是我们需要的,而 where 条件查询也分很多:

比较运算符:


运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN a0 AND
a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...) 如果是 option 中的任意一个,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字


举个例子:

比如我想查找,总分大于250 分的所有同学,我们可以这么写:

821d8c3ed03f489daf78eabc5f972468.png


但是我觉得怎么写,sum 总分不好看,我们再换一种写法:

d9a6c38639d344379687b3efbe7da0be.png


这里我们发现,sum是未定义的,为什么呢?

起别名是在进行排序的时候起的,而排序是在 where 筛选之后才有的,当然找不到sum列了

1516b2e939694326b6ec437d821e471e.png

我们发现这样的写法也是错误的,那么只能:

7fd913cddf2c4ba9aae980483cda3162.png


除了比较运算符,还有其他的的运算符:

逻辑运算符


运算符 说明
AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 条件为 TRUE(1),结果为 FALSE(0)


相信大家对逻辑运算符是不陌生的,在Java中不知道写过多少了。

举例:

我要查询数学和语文都大于90 分的全部信息:

我们就可以用and语句来执行:


02b83b1822de475892ceefa965a8f754.png


或者,我要查询,语文或数学大于 90 的人:


5fd19d231bc6412c8bb766b67ea04f8b.png


对条件查询做个小结:


1. WHERE条件可以使用表达式,但不能使用别名。

2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分


对上面的查询,我就不一一举例了,没事的时候,可以自己动手试一试,光是看无法提升自己的能力,不会的时候可以动手查;反正现在是学习时间,有足够的时间试错!


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之用CTAS从mysql同步数据到hologres,改了字段长度,报错提示需要全部重新同步如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
45 8
|
3天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之程序初始化mysql没有完成就报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
14 4
|
3天前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之sqlserver mysql都用的胖包,sqlserver的成功了,mysql报这个错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
20 6
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错合集之连接器换成2.4.2之后,mysql作业一直报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
16 3
|
5天前
|
SQL 关系型数据库 MySQL
Mysql忘记密码操作
Mysql忘记密码操作
28 1
|
6天前
|
SQL 关系型数据库 MySQL
DQL操作MySql
DQL操作MySql
13 0
|
6天前
|
SQL Java 关系型数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库
|
6天前
|
SQL 存储 关系型数据库
【MySQL】DDL的表操作详解:创建&查询&修改&删除
【MySQL】DDL的表操作详解:创建&查询&修改&删除
|
6天前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
36 0
|
6天前
|
关系型数据库 MySQL Java
使用shardingjdbc执行MySQL游标操作时报错
使用shardingjdbc执行MySQL游标操作时报错