【Hello mysql】 mysql的基本查询

news2024/9/23 13:20:55

Mysql专栏:@Mysql
本篇博客简介:介绍mysql的基本查询

mysql的基本查询

    • create
      • 单行插入+全列插入
      • 多行查询+指定列查询
      • 插入否则更新 (不常用)
      • 替换
    • Retrieve
      • select列
        • 全列查询
        • 指定列查询
        • 查询字段为表达式
        • 结果去重
      • where条件
        • 找到英语小于60分的人及其英语成绩
        • 语文成绩在 [80, 90] 分的同学及语文成绩
        • 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
        • 筛选出叫孙某某的同学及叫孙某的同学(模糊搜索)
        • 总分在 200 分以下的同学
        • 语文成绩 > 80 并且不姓孙的同学
        • 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80
        • null的查询
      • order by asc/desc(对结果进行升序/降序)
        • 同学及数学成绩,按数学成绩升序/降序显示
        • 查询同学各门成绩,依次按 数学降序,英语降序,语文升序的方式显示
        • 查询同学及总分,由高到低
        • 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
      • limit
    • update
      • 将孙悟空的数学成绩变更为 80 分
      • 将曹孟德的数学成绩变更为 60 分,语文成绩变更为 70 分
      • **将总成绩倒数前三的 3 位同学的数学成绩加上 30 分**
      • 将所有同学的语文成绩更新为原来的 2 倍
    • delete
      • 删除孙悟空的考试成绩
      • 删除整张表
    • 总结

一般来说对于数据的操作可以分为四种 :CURD

  • C Create(创建
  • U Update(更新)
  • R Retrieve(读取)
  • D Delete(删除)

我们下面会分别介绍这四种操作 其中R操作(读取)为重点

create

语法:

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value]

实例:

我们创建一张学生表

在这里插入图片描述

单行插入+全列插入

简单来说就是我们不用指定插入的列插入全部列的一条记录

下面是示例

在这里插入图片描述

多行查询+指定列查询

我们这里插入两条记录 指定除邮箱以外其他列

下面是示例

在这里插入图片描述

插入否则更新 (不常用)

我们插入一条数据的时候可能会因为主键或者唯一键已经存在而产生冲突从而导致插入失败

下面是示例

在这里插入图片描述

此时我们可以选择同步更新语法

INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...

其中ON DUPLICATE KEY的意思是如果发生冲突 update后面更上需要更新的选项以及值

下面是使用实例

在这里插入图片描述

我们发现此时数据更新成功

当我们使用该更新语句的时候会有下面的三种情况发生

  • 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
  • 1 row affected: 表中没有冲突数据,数据被插入
  • 2 row affected: 表中有冲突数据,并且数据已经被更新

如何查看受到影响的行数

  1. 在使用语句后下方会显示
  2. 通过row_count()函数显示

替换

语法

REPLACE INTO students (id, name) VALUES (105, '曹阿瞒');

替换时会有以下两种情况发生

  • 主键 或者 唯一键 没有冲突,则直接插入
  • 主键 或者 唯一键 如果冲突,则删除后再插入

下面是实例

在这里插入图片描述

Retrieve

语法:

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

下面是实例

-- 创建表结构
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese float DEFAULT 0.0 COMMENT '语文成绩',
math float DEFAULT 0.0 COMMENT '数学成绩',
english float DEFAULT 0.0 COMMENT '英语成绩'
);
-- 插入测试数据
INSERT INTO exam_result (name, chinese, math, english) VALUES
('唐三藏', 67, 98, 56),
('孙悟空', 87, 78, 77),
('猪悟能', 88, 98, 90),
('曹孟德', 82, 84, 67),
('刘玄德', 55, 85, 45),
('孙权', 70, 73, 78),
('宋公明', 75, 65, 30);
Query OK, 7 rows affected (0.00 sec)
Records: 7 Duplicates: 0 Warnings: 0

select列

全列查询

语法:

SELECT * FROM exam_result

在这里插入图片描述

指定列查询

语法

SELECT id, name, english FROM exam_result

在这里插入图片描述

查询字段为表达式

表达式不包含字段

语法

SELECT id, name, 10 FROM exam_result;

在这里插入图片描述

这里解释下 单个数字也算是一个表达式 但是由于并没有这一列 所以说该列的所有记录都默认为该数字

表达式包含一个字段

在这里插入图片描述

此时english+10列中就会显示英语成绩+10的数据 但是该列并不会影响数据库中原有的数据

表达包含多个字段

语法

SELECT id, name, chinese + math + english FROM exam_result;

在这里插入图片描述

为查询结果取别名

我们可以直接在表达式后面加上一段字符作为该表达式的别名

需要注意的是 该别名只能在选择阶段取
在这里插入图片描述

结果去重

语法:

SELECT **DISTINCT** math FROM exam_result;

在这里插入图片描述

where条件

比较运算符

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

逻辑运算符

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

找到英语小于60分的人及其英语成绩

在这里插入图片描述

语文成绩在 [80, 90] 分的同学及语文成绩

查询在区间中的数据有两种用法

用法一:
在这里插入图片描述
用法二:
在这里插入图片描述

数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

在这里插入图片描述

筛选出叫孙某某的同学及叫孙某的同学(模糊搜索)

在这里插入图片描述

总分在 200 分以下的同学

在这里插入图片描述

我们这里发现在前面给三门成绩取了别名总分之后在后面缺并不能使用 这是为什么呢?

这里本质上其实是因为sql语句中每句话的执行顺序不同所引起的

我们想一想 是不是首先要筛选出总分低于200分成绩的人 然后才能选择他们的名字和成绩啊

也就是说 where语句实际上是比select语句要先执行的 所以自然不能使用select语句中取的别名了

在这里插入图片描述

语文成绩 > 80 并且不姓孙的同学

在这里插入图片描述

孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

在这里插入图片描述

null的查询

我们查询NULL的时候不能使用等于号 我们这里推荐的用法是IS 或者 NOT IS

order by asc/desc(对结果进行升序/降序)

  • ASC 为升序(从小到大)
  • DESC 为降序(从大到小)
  • 默认为 ASC
  • NULL 视为比任何值都小

同学及数学成绩,按数学成绩升序/降序显示

在这里插入图片描述

在这里插入图片描述

查询同学各门成绩,依次按 数学降序,英语降序,语文升序的方式显示

在这里插入图片描述

解释下数学降序,英语降序,语文升序的方式显示这句话的含义 我们首先按照数学降序的方式排序 如果数学成绩相同就按照英语成绩降序 如果数学英语成绩还相同就按照语文成绩升序

查询同学及总分,由高到低

在这里插入图片描述

大家看到这里的sql语句是不是有点奇怪 为什么一会儿能用别名一会儿不能用别名呢?

这里能够使用别名的原因其实是因为排序这个阶段要在选择了数据之后

查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

在这里插入图片描述

limit

对于未知表查询的时候我们最好加上一条limit 1 避免表中数据过大数据库卡死的情况

在这里插入图片描述

在这里插入图片描述

update

语法

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

将孙悟空的数学成绩变更为 80 分

在这里插入图片描述

将曹孟德的数学成绩变更为 60 分,语文成绩变更为 70 分

在这里插入图片描述

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

在这里插入图片描述

将所有同学的语文成绩更新为原来的 2 倍

在这里插入图片描述

如果没有where的话是直接更新全表 实际上where就是加上了一个限制条件

delete

语法

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除孙悟空的考试成绩

在这里插入图片描述

删除整张表

删除整张表有两种方式

第一种就是用delete删除整张表
在这里插入图片描述
第二种就是使用truncate截断整张表

在这里插入图片描述

两种删除方式有何区别

  • delete删除整表可以回滚 truncate整表不可以回滚
  • delete删除表的时候不会清空auto_incement truncate删除表的时候会清空auto_incement

总结

在这里插入图片描述

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

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

相关文章

Unity 分块延迟渲染01 (TBDR)

现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU。 CPU被用于处理需要低内存延迟的序列、大量分支的数据集&#xff0c;其晶体管用于流控制和数据缓存。 GPU为处理大型&#xff0c;未分支的数据集&#xff0c;如3D渲染。晶体管专用于寄存器和算术逻辑单元&…

Django_内置的用户认证系统

目录 一、用户对象 1. 创建用户 2. 修改密码 3. 用户验证 二、权限与授权 1. 默认权限 2. 用户组 3. 在代码中创建权限 4. 权限缓存 三、在视图中认证用户 1、登录用户 2、注销用户 3、用户登录的访问限制 3.1、原始的办法 3.2、函数视图使用login_required装饰…

【前端】网页开发精讲与实战 CSS Day 1

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;前端 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对你有…

Go 并发模型—Goroutine

前言 Goroutines 是 Go[1] 语言主要的并发原语。它看起来非常像线程&#xff0c;但是相比于线程它的创建和管理成本很低。Go 在运行时将 goroutine 有效地调度到真实的线程上&#xff0c;以避免浪费资源&#xff0c;因此您可以轻松地创建大量的 goroutine&#xff08;例如每个请…

快速排序—C语言实现

目录 前言 快速排序 实现逻辑 1. hoare版本​编辑 2. 挖坑法 3. 前后指针版本 快速排序优化 1. 三数取中法选key 2. 递归到小的子区间时&#xff0c;可以考虑使用插入排序 快速排序非递归&#xff08;用栈实现&#xff09; 快速排序的特性总结 全部代码 前言 &#…

idea-spring boot开发

安装maven与配置配置maven安装插件 已经装好了idea与jdk 安装maven与配置 下载地址: https://maven.apache.org/download.cgi 下载合适的版本 配置maven 打开设置: 直接搜索 :maven 配置变量: 此电脑->属性->高级系统设置->环境变量 新建系统变量 MAVEN_HOME&#xff…

Web安全——渗透测试基础知识下

渗透测试基础 Web安全一、VMware虚拟机学习使用1、虚拟机简单介绍2、网络模式2.1 桥接网络&#xff08;Bridged Networking&#xff09;2.2 NAT模式2.3 Host-Only模式 3、通俗理解 二、Kali的2021安装与配置1、简单介绍2、Kali的版本3、配置3.1 安装虚拟机open-vm-tools-deskto…

基于matlab从ROI和蒙版在图像中创建标记(附源码)

一、前言 此示例演示如何从一组 ROI 创建标记的阻止映像。 在此示例中&#xff0c;您使用两种方法来获取和显示标记的数据。一种方法使用多边形ROI对象来存储肿瘤和正常组织区域边界的坐标。该函数将ROI坐标转换为标记的块图像。第二种方法使用掩码来指示图像的二进制分割为组…

能不能推荐个 vue 后台管理系统模板?

前言 下面是我整理的vue2和vue3的一些后台管理系统模板&#xff0c;希望对你有帮助~ Vue2 1、iview-admin Star: 16.4k 基于 iview组件库开发的一款后台管理系统框架&#xff0c;提供了一系列的强大组件和基础模板&#xff0c;方便开发人员快速搭建一套功能丰富、界面美观、…

web入门案例-部门篇

开发流程 完成对应部门管理和员工管理的需求 准备工作 注意&#xff1a;service还要写接口实体类&#xff0c;mapper只写接口即可&#xff0c;controller是实体类 对应的三个注解 RestController&#xff08;方法返回值作为响应值&#xff09; Mapper(控制反转IOC&#xff0c…

漏洞深度分析 | CVE-2023-36053-Django 表达式拒绝服务

​ 项目介绍 Django 是一个高级 Python Web 框架&#xff0c;鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建&#xff0c;解决了 Web 开发的大部分麻烦&#xff0c;因此您可以专注于编写应用程序&#xff0c;而无需重新发明轮子。它是免费且开源的。 项目地址…

CodeTop整理-树篇

目录 103. 二叉树的锯齿形层次遍历 236. 二叉树的最近公共祖先 124. 二叉树中的最大路径和 102. 二叉树的层序遍历 94. 二叉树的中序遍历 110. 平衡二叉树 572. 另一个树的子树 96. 不同的二叉搜索树 543. 二叉树的直径 297. 二叉树的序列化与反序列化 199. 二叉树的…

eNSP-VRRP虚拟路由器冗余技术

VRRP-虚拟路由器冗余技术 文章目录 VRRP-虚拟路由器冗余技术一、拓扑结构二、基本配置三、测试验证四、知识点详解1.VRRP路由器2.报文格式3.工作过程 一、拓扑结构 二、基本配置 R1: #配置ip <Huawei>sys [Huawei]sys r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip a…

快速排序算法!

快速排序 什么是快速排序&#xff08;quickSort&#xff09;&#xff1f; 主要分成两部分实现&#xff0c;分区、递归操作。 分区 从数组中任意选择一个 “基准”&#xff0c;所有比基准小的元素放在基准前面&#xff0c;比基准大的元素放在基本后面。 递归 递归地对基准…

Todo-List案例版本四

全局事件总线 使用步骤 1.定义全局事件总线 new Vue({...beforeCreated(){Vue.prototype.$busthis //安装全局事件总线&#xff0c;$bus就是当前应用的vm}... }) 2.使用事件总线 a.接收数据&#xff1a;A组件想接收数据&#xff0c;则在A组件中给$bus绑定自定义事件&…

Outlook---撤回(或替换)已发出的邮件

0 Preface/Foreword 发送邮件时&#xff0c;发现邮件发错了&#xff0c;或者忘了添加附件&#xff0c;那么就需要用到撤回或者替换功能。 1 撤回/替换邮件方法 步骤如下&#xff1a; 第一步&#xff1a;双击打开邮件&#xff1b; 第二步&#xff1a;找到撤回按键

自锁电路分析与应用

原理图分享 今天工作中遇到一个设计很妙的电路&#xff0c;请教了一下硬件的工程师。 大家自己直接看图可以分享出这个电路的作用吗&#xff0c;可以在评论区告诉我哦&#xff01; 自锁电路 如上图就是一个自锁电路&#xff0c;和下面的电路一样&#xff1a; 电路现象描述&a…

23.RTC实时时钟

1.STM32 RTC介绍&#xff1a; &#xff08;1&#xff09;RTC简介&#xff1a; STM32的实时时钟(RTC)是一个独立的定时器。STM32的RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和…

虚幻5-could not find root physics body 布料系统问题解决方法

不做不知道自己身体好&#xff0c;又碰到问题了&#xff1a; could not find root physics body 1.据说是Skeleton 和SkeletaMesh傻傻分不清楚 &#xff08;但就是排查后&#xff0c;就不是这个问题&#xff09; 2.重新创造一个Physic Asset吧 Creating a New Physics Asse…

【C语言初阶(13)】三子棋游戏(优化:多子棋实现)

文章目录 一、游戏的实现思路二、游戏的实现步骤1. 菜单函数2. 设置棋盘3. 初始化棋盘4. 打印棋盘5. 玩家下棋6. 电脑下棋7. 多子棋判断输赢8. 判断棋盘是否已满 三、模块化代码实现1. test.c2. game.h3. game.c 四、结果演示 由于模块化编程的需要&#xff0c;我们需要把整个游…