MySQL数据表:对数据的基础操作(增、删、查、改)以及运算符的讲解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL数据表:对数据的基础操作(增、删、查、改)以及运算符的讲解

前言

    数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的。没有数据表就无法在数据库中存放数据。

俗语:一个仓库(数据库)没有货物单(数据表)就无法得知有什么货物(数据

    抽象理解:我们得想先拥有一份空白的采购单(空白的数据表),我们需要向其中添加我们需要的东西,再经过修改,采购后,采购单变成了货物单,代表了仓库拥有的货物。

而对应的数据表操作:增加数据、查询数据、修改数据和删除数据。

     第一步                                       第二步                                             第三步

 创建数据库                                 创建数据表                                 添加数据并进行修改

    //第一步创建一个名为商店数据库
create database shop character set utf8mb4;
   //第二步创建一个名为货物的数据表,拥有字段:商品名称、商品价格、商品库存、商品描述
create table foods(
    foods_name varchar(10) comment '货物名',
    foods_price int comment '价格',
    foods_stock  int comment '库存',
    foods_describe varchar(10) comment '用途'
);
  //第三步,使用增删查改,对数据表进行操作

一.增加数据

增添数据,有22种方法:  

    单行数据+全列插入

格式:insert   into  数据表名   values(数据1,数据2,.....,数据n);

    多行插入+指定列插入

格式:insert   into  数据表名(字段名1,字段名2)  values (数据1,数据2);(数据3,数据4);

单行数据+全列插入 代码示例:

注:单行插入,只能插入一行,并且要与字段名的数据类型相对应。


多行插入+指定列插入 代码示例:

insert into foods(foods_name,foods_stock) values('文具盒',3);('书本',5);

数据表名后面的括号里未包含的字段名,默认值为NULL,而values之后的一个括号代表了1行数据

二.查询数据

顾名思义,查看数据表中的数据。且这种有很多方法。

1.查询数据表的所有信息                                         2.展示 数据表 某列信息

    select * from 表名;                                             select 列名 from 数据表;

                3.查询通过计算的列,使用临时表展示。

                   select 列名1,列名2,...,列名n+数字/列  from 数据表;

4.用别名代表列名 用临时表展示 。                       5.消除取值重复的行,临时表展示

         select 列名 as 别名;                                       select  distinct  列名 from 表名;

6.将查询结果进行排序。                                  7.条件查询

     select 列名 from 表名  order by 列名;             使用where。

2.1查询数据表中所有信息

语法格式:select * from 表名;

使用 select *from foods;查询表中信息。

2.2查询表中指定的列信息

语法格式:select 列名 from 数据表;

例如,我们查询foods_name列信息,使用 :select foods_name  from  foods

2.3查询通过计算的列

语法格式: select 列名1,列名2,...,列名n+数字/列  from 数据表;

这种查询有限制,一定得是数字,这样相加才有意义。例如,在foods_stock上加上20;使用:select foods_stock+20 from foods;

2.4使用别名代替列名

语法格式:select 列名 as 别名;

       这个经常和计算在一起使用,计算之后的列名:本来的列名+计算数,这不太优雅,因此我们可以使用其他别名代替。

例子:newstack代替了2.3中的foods_stock+20.                                                                                  使用:select  foods_stock+20 as newstock from foods

2.5查询不带有重复值的列

语法格式:select  distinct  列名 from 表名;

将一行里的重复值删去,只保留一个。

例如:将foods_name去重  使用:select distinct foods_name from fooks;

2.6将查询的结果进行排序

排序有2种,一种是升序(ASC),另一种是降序(DESC)。当没有标注时,默认为升序

语法格式: select  列名  from 表名  order by 需要排序的列名  ASC/DESC;

    注             需要展示的列                              按照ASC/DESC排序的列

例子:对foods_price进行排序且展示所有列:select * from foods order by foods_price;

2.7条件查询

2.7.1条件查询的种类      

       条件查询使用where,且条件查询需要使用到各种各样的运算符

条件查询                         运算符
比较 = , >,  < , >=  ,=< , !=  ,<> , !> , !< ,  not
确定范围 BETWEEN  AND ,  NOT BETWEEN  AND
确定集合 IN  , NOT IN
字符匹配 LIKE , NOT LIKE
空值 IS NULL , IS NOT NULL
多重条件 AND , OR

注:and的优先级高于or

2.7.2使用运算符查询的讲解

🌹比较大小

这种运算符和编程语言的区别只有一个:  在编程语言使用:==   数据库中使用:=

实例代码:

//查询学生表中学号为202101234的学生;
SELECT * FROM Student where  Sno='202101234';
//查询年龄在201岁以下的学生的姓名和年龄;
select Sname , Sage from student where Sage<20;

 🌹确定范围

确定范围的运算符有2种,between.....and和not between.......and

使用的格式为:列名  [not] between   下限值   and  上限值;

实例代码:

//查找学生表里,年龄在20到23岁之间的学生姓名
select Sname  from Student where Sage between 20 and 23;
//查找学生表里,年龄不在20到23之间的学生姓名
select Sname  from Student where Sage not between 20 and 23;

🌹确定集合

  使用 IN运算符 用于查找某列的具体值。

使用格式:列名  [not] in (常量1,常量2,.......,常量n);

实例代码:

//查询学生表中成绩是 58 或者 59 分的同学姓名
 SELECT name FROM Student WHERE grade IN (58, 59);

 🌹字符匹配

字符匹配,是指:给一个匹配串,帮忙查找某列中含有此字符的数据;

使用格式:列名 [not] like <匹配串>;

字符匹配需要使用到:

  1.   _  这个短短的下划线。作用:可匹配任意字符
  2.   % 这个百分号。  作用是匹配任意数目字符。

 实例代码:

     查询学生表中 姓名 中 字开头的名字。%是指无论多少个字。

SELECT Sname FROM Student WHERE Sname LIKE '孙%';
//可匹配到孙悟空、孙权等名字

   查询 学生表中 姓名 中 第2字为 的名字,使用 _  一个 _ 代表一个字符

SELECT Sname FROM Student WHERE Sname LIKE '_牛';

🌹涉及到空值的查询

查询某列中的元素不为空,或者为空。

语法格式:列名 is [not] null;

实例代码:

//查询学生表中成绩不为空的姓名
SELECT Sname FROM Student WHERE grade IS NOT NULL;
//查询学生表中成绩为空的姓名
SELECT Sname FROM Student WHERE grade IS  NULL;

🌹多重查询

使用and和or逻辑运算符来组成多条件查询。

  1. and:必须满足所有条件 便为true
  2. or: 满足部分条件 便为true

实例代码:

//查询学生表中成绩大于60 和 性别为男的学生姓名;
SELECT Sname FROM Student WHERE grade >60 and Sex= '男';
//查询学生表中性别为女 或者 年龄小于20的学生姓名;
SELECT Sname FROM Student WHERE Sage<20 and Sex= '女';

2.8分页查询

就是将信息分成好几个页面来查看。

语法格式:select * from tablename limit (n-1)*m,m;

               n:求第几页的数据         m:每页显示m条数据

例如代码:

例子:
第一页数据,一页显示3行数据
select * from tablename limit 0,3;
第二页数据,一页显示3行数据   (2-1)*3,3
select * from tablename limit 3,3;

三.修改数据

修改数据使用的是update。将表中某个字段的数据进行修改。

语法格式:update 表名  set  字段名   =  新值   [ where  条件 ];

注: [ ]里的内容是选择性的,如果没有,这是修改字段里所有数据。

例如:  将书包的foods_price的值修改为1000;


四.删除数据

删除表中所有数据          或       指定的数据                                                      


语法格式:delete from 表名  [ where  条件 ];          

例如:将书包这一行的数据全部删除


总结

       在对数据表元素的操作中,最为重要的是 数据的查询中的数据库运算符的使用

运算符一定一定需要学会使用。否则查询和修改会出现问题。导致数据出错。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
5月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
3月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
157 0
|
2月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
167 10
|
3月前
|
SQL 存储 缓存
MySQL 如何高效可靠处理持久化数据
本文详细解析了 MySQL 的 SQL 执行流程、crash-safe 机制及性能优化策略。内容涵盖连接器、分析器、优化器、执行器与存储引擎的工作原理,深入探讨 redolog 与 binlog 的两阶段提交机制,并分析日志策略、组提交、脏页刷盘等关键性能优化手段,帮助提升数据库稳定性与执行效率。
|
6月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
284 28
|
4月前
|
关系型数据库 MySQL
MySQL数据表添加字段(三种方式)
本文解析了数据表的基本概念及字段添加方法。在数据表中,字段是纵向列结构,记录为横向行数据。MySQL通过`ALTER TABLE`指令支持三种字段添加方式:1) 末尾追加字段,直接使用`ADD`语句;2) 首列插入字段,通过`FIRST`关键字实现;3) 指定位置插入字段,利用`AFTER`指定目标字段。文内结合`student`表实例详细演示了每种方法的操作步骤与结构验证,便于理解与实践。
|
5月前
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
141 0
|
7月前
|
存储 SQL 关系型数据库
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为&#39;0&#39;或&#39;1&#39;,查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
|
7月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
|
7月前
|
缓存 NoSQL 关系型数据库
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,

推荐镜像

更多