MySQL表的增删查改(上)

news2024/11/28 6:27:16

作者:~小明学编程  

文章专栏:MySQL

格言:目之所及皆为回忆,心之所想皆为过往

在这里插入图片描述

        前面给大家分享了关于数据库的一些基本的操作,今天分享的是数据库的核心内容,那就是我们常说的增删查改,也是我们数据库的灵魂所在。

目录

增(Create)

单行插入

多行插入

指定列的插入

 查(Retrieve)

全列查找

指定查询列

去重

排序

条件查询

NULL问题

别名问题  

模糊查询

分页查询

 改(Update)

 删(Delete)

增(Create)

顾名思义就是向我们的表中添加数据,这里我们示范,创建一个student2的表。

 接着我们介绍我们的增添数据的语句,其中我们的 into 可以省略。

insert into 表名 values (数据);

单行插入

insert into 表名 values(数据);

多行插入

insert into 表名 values
    ('lisi',18,3.9),
    ('wangwu',19,6.8),
    ('zhangliu',20,7.6);

因为我们的单行插入比较的繁琐,插入一行的数据就需要去insert一下,所以这里我们就采用多行插入法,一个insert插入多个数据。

 指定列的插入

指定列插入就意味着我们可以只插入我们想要的那一列或者几列数据就可以了

insert into 表名 (列1,列2) values (数据,数据);

当然,在我们插入的时候我们也可以对指定的列赋上NULL值。

例如:

insert into student2 (name,age) values ('liqi',NULL);

 查(Retrieve)

在我们插入完数据之后就是搜索我们想要的数据,也就是我们所说的查,在我们查之前我们先,向我们的表中插入一些数据。

insert into exam_result (id,name, chinese, math, english) values
        (1,'小a', 67, 98, 56),
        (2,'小b', 87.5, 78, 77),
        (3,'小c', 88, 98.5, 90),
        (4,'小d', 82, 84, 67),
        (5,'小e', 55.5, 85, 45),
        (6,'小f', 70, 73, 78.5),
        (7,'小g', 75, 65, 30);

然后我么介绍我们的第一条的查找语句

全列查找

    select * from 表名;

 我们可以看到该语句可以查找出整个表的内容,但是这种写法不推荐使用,这里是因为我们的表比较的小,当我们的表比较的大的时候数据很多,这时候我们再去用全列搜索就会产生问题,首先我们从磁盘中读取我们的数据一次性也就几百兆,当数据非常多达到几个G的时候我们不能读完就会占用我们本地的IO,同时当我们从服务器中去查询数据的时候如果该次数据返回的非常多,就会占用所有的资源去返回该次指令所要的数据,那么别的请求就不能再从该服务器中获取想要的数据了。

指定查询列

查询所有的列,一般情况下属于浪费我们的资源,因为一般我们不需要那么多的东西,所以我们一般只需要查询我们想要的那几列就行了。

    select 列1,列2 from 表;

 这时我们想到一个问题,我们能不能将列表中的成绩×2呢,或者我们要查询的是math,chinese,english三个成绩之和呢?当然没问题。

 可以看到只要在我们查询的时候,对我们查询的列进行表达式的运算就能达到我们的要求了。

别名:

但是我们刚刚在计算三科成绩之和的时候我们发现列名太长了,看着就很不舒服,这时我们会想我们能不能给它起一个别名呢?

    select 列名 as 别名 from 表;

 这里我们可以看到此时的列名就简洁很多了。

去重

当我们在查询数据的时候可能会遇到一些重复的数据,此时我们想要将这些重复的数据去除该怎么操作呢?

    select distinct 列 from 表;

 我们也可以写成下面这种

 这意味着只有当我们的math和chinese都相等的时候才会去重。

排序

上述在我们查到我们想要的数据之后我们发现此时的数据是乱序的,也就是我们插入时候的顺序,这时我们想让其按顺序列出来该如何去操作呢?

例如上面的数据我们想要查看math从低到高的排序

此时我们可以看到,我们拿到了我们想要的结果了,但是我们如果想要从高到底去排序呢?

 我们只需要在最后面加上desc就可以了,其实从小到大也有关键字那就是asc,可以省略但是不推荐,所以我们暂时可以总结出来我们的查询排序操作为

    select 列 from 表 order by 列 asc -- 从小到大排序
    select 列 from 表 order by 列 desc -- 从大到小排序

注意:

1.我们的order by 后面也可以用别名进行排序

select name, chinese + english + math total from exam_result
    order by total desc;

 2.我们排序的时候可以指定多个标准

select 列 from 表 order by 列1 desc 列2 asc -- 先按照列1从大到小排序当遇到相同的时候就按照列2从小到大排序

条件查询

前面我们说到的查询都是查询的指定的列,那么我们能不能查询指定的行呢?

这就要用到我们的条件查询了,例如我们想要查询,在查询之前我们要俩姐MySQL中的运算符。

    select 列 from 表 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 个)任意字符;_ 表示任意一个s

这是我们原表的所有的数据,现在我们对其进行一系列的条件查询来示范怎么去使用条件查询。

首先我们可以查询一下,所有的数学成绩在80分以上的人的姓名和数学成绩,

select name,math from exam_result where math>80;

 当然我们也可以加入我们前面的排序语句, 这样我们就得到了数学成绩大于80并且从小到大排序的一个表。

between and 的左闭右闭需要注意一下,

这里我们采用的是左右都是闭区间,和我们一般的语法规则有些不同需要注意一下。

 NULL问题

1.

首先先说一下带有NULL的排序问题,当我们排序的时候我们数据中如果有NULL那么NULL会排在哪里呢?

 可以看到,这里我们这里采用的是asc从小到大的排序,然后NULL是放在最前面的也就是最小。

2.

当我们查找的时候想查找谁的数据为NULL时该怎么办呢?

 直接等于是办不到的查找结果也是NULL,上面的表中我们也提到了,所以我们要用一些其它的语句。

别名问题  

 这里我们想要查询总成绩大于200的人和成绩,并且给和起了个别名total,但是我们where后面的条件依然没用别名,这里我们用别名岂不是更方便

 但是事实却不是这样,这里给我们报错了,意思是不认识total,因为我们是首先执行后面where的所以我们当时还没有起上别名,就导致了我们找不到别名这个关键字。

模糊查询

LIKE关键字主要用于我们的模糊查询,当我们只知道我们字符串的某些部位的时候,这时我们可以查询该列数据中带有此关键字的所有的数据。

例如:我们现在查询名字中头一个字符是小的

其中%表示匹配多个字符,也就是此时我们可以匹配小a,小aaaa都没问题,当我们想要查询name中带有小的话就可以写成%小%。

 当我们要查找指定位置有某一个字符的时候,可以用_字符例如:

 这就意味着我们的d的前面必须有一个字符来让我们去匹配。

分页查询

我们前面谈到select * 查询会出现一些问题一般不建议这样去使用,因为一次性返回的数据太多了,所以现在我们想一次性返回指定规模的数据。

这就要用到我们的分页查询了,

select 列 from 表 limit 一次显示数据的数量 offset 指定小标开始;

 

注意:这里我们需要注意的是我们以上的查询操作只是把我们数据库里面的数据按照我们的需要展示出来并不会修改数据库里面的数据,同时我们也没有生成一个表,在我们数据展示的那一刻起就已经释放掉了。

 改(Update)

接下来要介绍的是修改我们的数据,

update 表 set 列1,列2 where 修改的对象;

例如我们现在要将我们小a的math成绩修改为80,english成绩修改为60,就可以写成

 这里我们就修改完毕了,当但是一般情况下我们用到修改的时候会比较的复杂将会和多个语句一起使用,例如:将总成绩倒数前三的 3 位同学的数学成绩加上 10 分这样的语句我们该怎么去写呢?

 这是我们要找的三个人,注意 :我们的NULL进行运算结果还是NULL,如NULL+10=NULL

update exam_result set math = math+10 order by chinese+math+english asc limit 3;

按照当前需求写出来的sql语句,我们执行之后看看结果, 我们可以看到数据已经更改了。

下面我们再进行一个操作,将我们所有人的语文成绩加上10,

update exam_result set chinese = chinese+10;

 删(Delete)

delete from 表 where 条件;

我们可以看到我们操作完毕之后,数据库中就没有id=9的数据了,当我们没有where的时候就是删除该表里面的所有的数据。 

以上就是本章给大家分享的MySQL的一些基本的增删改查的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

达梦数据库,备份目录冲突

问题描述 达梦数据库执行全库备份&#xff0c;BACKUP DATABASE FULL BACKUPSET ‘/data_share/data_back’; 提示备份目录冲突 解决办法 指定的目录必须为一个空目录。 下图&#xff0c;我指定的目录下有一个test文件夹&#xff0c;所以导致失败&#xff0c;把test文件删除m

[附源码]Python计算机毕业设计SSM基于WEB的网上零食销售系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python OpenCV中的图像阈值处理

1 前言 上一篇介绍了用C如何对一幅图像进行阈值处理&#xff0c;本篇接着用python来做同样的事情。 图像阈值处理是很多高级算法的底层逻辑之一&#xff0c;比如在做图形检测&#xff0c;轮廓识别时&#xff0c;常常会先对图像进行阈值处理&#xff0c;然后再进行具体的检测或…

FreeRTOS使用 — 合理使用内存 “ 任务中创建任务 ”

前言 在我们学习 RTOS 的过程中&#xff0c;很多朋友都不会遇到内存不够的问题&#xff0c;因为大部分的开发板使用的芯片对学习来说&#xff0c;内存 “足够大” 。所以基本上很多人学会了基本功能&#xff0c;到了实际工作中使用&#xff0c;往往会遇到内存不够的问题&#…

pikachu靶场-10 XXE漏洞

XXE漏洞 概述 XXE -“xml external entity injection” 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严…

shell语法总结一(持续补充)

文章目录一、变量1、变量的命名规则2、查看变量3、删除命令4、变量的作用域4.1、局部变量4.2、全局变量4.3、环境变量5、自定义变量6、只读变量二、字符串1、单引号2、双引号&#xff08;用的多&#xff09;3、拼接字符串4、获取字符串的长度5、提取子字符串三、shell数组1、定…

必须掌握的数据库面试问题

一、为什么用自增列作为主键 1、如果我们定义了主键(PRIMARY KEY)&#xff0c;那么InnoDB会选择主键作为聚集索引。 如果没有显式定义主键&#xff0c;则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。 如果也没有这样的唯一索引&#xff0c;则InnoDB会选择内置…

1990-2021年全国各省产业高级化 数据

1990-2021年全国各省产业高级化数据 1、来源为&#xff1a;统计NJ、各省NJ 2、包括&#xff1a;全国31个省份 3、时间&#xff1a;1990-2021年 4、指标包括&#xff1a; 各地区经纬度、第三产业增加值、第二产业增加值、高级化水平 高级化水平第三产业增加值(亿元) / 第二…

HTTP协议【报文格式】

文章目录HTTP协议什么是HTTP协议HTTP协议格式抓包工具的使用HTTP请求URLURL的组成URL encodeHTTP请求的报文格式HTTP响应的报文格式HTTP方法GET方法POST方法POST方法与GET方法的区别请求报头HTTP响应状态码状态码的组成状态码的类别HTTP协议 什么是HTTP协议 HTTP协议即Hyper T…

m基于GA遗传优化的多因素加权竞价博弈频谱分配算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 假设有M个用户均为MIMO Full Duplex&#xff0c;N个频率&#xff0c;1<N<M&#xff0c;设计算法实现M个用户与N个频率的匹配。 由于在一个MIMO系统中&#xff0c;用户数量M大于可用的频谱个…

web自动化测试入门篇04——selenium+python基础方法封装

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

记录一次解决centos不定时触发oom的经历

前言 前一段时间&#xff0c;业务部门的系统不定时的反馈&#xff0c;系统打开不了&#xff0c;提示&#xff1a; 等技术开发同学反应过来去查看业务状态时&#xff0c;服务又恢复了&#xff0c;由于不是核心的业务&#xff0c;并且出问题差不多1分钟左右&#xff0c;没太在意…

【Vue 快速入门系列】todoList案例小总结

文章目录一、案例效果二、项目介绍三、版本更新迭代末、项目素材1.css样式2.html一、案例效果 如下图所示&#xff0c;制作一个这样的记事本&#xff0c;可以使用这个记事本进行数据的存储以及管理&#xff0c;样式是天禹老师写好的我们直接使用就好了&#xff0c;主要在这个小…

[UE][UE5]零基础学习-学习记录1-UE5安装与基本使用方法

[UE5]学习1-UE5安装与基本使用方法写在前面01.作者碎碎念2.UE5安装方法01.UE5需要的电脑配置02.UE5安装方法001.Epic下载002.下载安装UE503.基本使用方法001.创建项目打开现有的项目&#xff1a;002.文件目录结构003.用户界面介绍1).3D画面视窗2).菜单栏3).内容浏览器4).属性面…

关于CM3/CM4位带操作的总结

1.位带操作定义 STM32的存储器映射中的内存区域和外设区域有一段地址空间&#xff08;都是最低1MB&#xff09;是位带区域&#xff0c;跟这个区域相对应的有一段位带别名区域&#xff0c;位带别名区的大小是位带区的32倍&#xff0c;位带别名区的每一个地址都对应位带区域的一个…

C. Hamiltonian Wall edu139 div2

Problem - C - Codeforces 题意是给你一个2*n的网格&#xff0c;让你一笔把所有的B涂满&#xff0c;并且只能涂一次&#xff0c;问你是否可行 分析&#xff1a; 其实分析的时候我想到了转移。每一次的结果是由上一次转移而来&#xff0c;所以如果前后矛盾的话&#xff0c;即…

人工智能:智能语音技术应用场景介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

虹科QA | SWCF2022 12月6日演讲笔记:C波段卫星与5G之间的干扰排查及解决方案

虹科2022年度SWCF卫星通信与仿真测试研讨会正在进行中。昨日精彩演讲&#xff1a;C波段卫星与5G之间的干扰排查及解决方案&#xff0c;感谢大家的观看与支持&#xff01; 昨晚的直播间收到一些粉丝的技术问题&#xff0c;虹小科汇总了热点问题并请讲师详细解答&#xff0c;在此…

目前UI设计薪资待遇怎么样?工作好找吗?

UI设计的火爆&#xff0c;导致有很多年轻人都愿意投身于这个行业。有很多年轻的朋友都在问&#xff0c;UI设计的薪资待遇怎么样&#xff1f;工作难找吗&#xff1f;本文统一解答一下。 1、UI设计的薪资水平 UI设计的薪资待遇一直很好&#xff0c;学习UI设计之前没有任何相关基础…

PMP每日一练 | 考试不迷路-12.13(包含敏捷+多选)

被延期考试的宝子 一定要坚持刷题 每日5道PMP习题助大家上岸PMP&#xff01; ​题目1-2&#xff1a; ​1.一位主要相关方要求将每日站立会议的持续时间人15分钟增加到1小时。Scrum主管应该做什么? ( ) A.接受建议并建议团队更改会议时间表 B.安排与产品负责人和团队开…