【Hello mysql】 mysql的基本查询

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.hqwc.cn/news/21553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述使能Multilib支持32位的helloworld程序执行出现No such file or directorylibc.so.6 cannot open shared object file修改内容固化…

手把手教你落地大模型应用创意!全新AI达人创造营限时招募

AI进入大模型时代&#xff0c;智能应用和产品的构建开始发生天翻地覆的变化。想把你的AI创意落地&#xff0c;解决实际问题&#xff1f;想让更多人看到你的AI应用的价值与意义&#xff1f; 飞桨领航团AI达人创造营第4期学员招募正式启动&#xff01; AI达人创造营是百度飞桨领…

图像处理之高斯滤波

文章目录 高斯函数1.一维高斯函数2. 二维高斯函数 高斯滤波1.高斯核生成2.滤波过程 高斯函数 高斯函数广泛应用于统计学领域&#xff0c;用于表述正态分布&#xff0c;在信号处理领域&#xff0c;用于定义高斯滤波器&#xff0c;在图像处理领域&#xff0c;二维高斯核函数常用…

1.5 纹理

这次笔记时间有点久&#xff0c;主要是这节课讲的东西需要很多基础来铺垫&#xff0c;看完了后感觉缺失信息很多&#xff0c;又去补了GAMES 101 3~10节内容。 强烈建议看不懂的先去学习GMAES101 网址Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)_哔哩哔哩_bi…

APP开发中的数据安全:你需要知道的一切

APP开发中的数据安全&#xff0c;是指 APP开发过程中&#xff0c;所有的数据都会经过严格的安全处理。因为目前 APP开发公司的技术、资质良莠不齐&#xff0c;很多企业在开发过程中不注重对数据安全的保护。 在如今大数据时代&#xff0c; APP开发过程中&#xff0c;会产生大量…

unidbg或者java层解密方法IDEA中打包成jar包供python调用方法

一、导出jar包方法 &#xff08;1&#xff09;配置jar包参数 &#xff08;2&#xff09;创建生成jar包 成功生成&#xff01; 二、Python代码调用 import jpypejvmPath jpype.getDefaultJVMPath() d unidbg-android.jar # 对应jar地址 jpype.startJVM(jvmPath, "-ea&q…

Docker 运行花生壳实现内外网穿透

Docker 运行花生壳实现内外网穿透 1、docker安装centos2、进入centos容器安装花生壳客户端3、花生壳绑定设备4、测试外网穿透 1、docker安装centos 使用命令行安装centos7 docker run --privilegedtrue --restartalways -e TZ"Asia/Shanghai" -d --nethost --nam…

vue生命周期四个阶段(created和mount)

1.四个阶段 1&#xff09;必经阶段 2&#xff09;非必经阶段 提示&#xff1a;主动调用 vm.$destroy() 函数销毁后&#xff0c;可用 vm.$mount("#app") 将断开的 new Vue() 和页面重新建立虚拟 DOM 树&#xff0c;重新绑定起来挂载界面。 2. 生命周期钩子函数&…

利用python绘制二三维曲面和矢量流线图

为了实现不同数据的可视化&#xff0c;最近研究了python环境下的可视化方案&#xff0c;为后续的流体运动仿真模拟做好储备&#xff0c;由于python处理数据的便利性&#xff0c;导致目前很多后端处理或者可视化成图操作都在python中实现&#xff0c;比如前端是vue&#xff0c;加…

2023-07-11力扣每日一题

链接&#xff1a; https://leetcode.cn/problems/maximum-alternating-subsequence-sum/ 题意&#xff1a; 给定一个数组&#xff0c;求一个子序列&#xff0c;使这个子序列的奇数位和-偶数位和最大&#xff08;下标从1开始的话|反正第一个数是&#xff09; 解&#xff1a;…

抽象的计算机模型——图灵机之一发入魂

图灵机由英国数学家和计算机科学家阿兰图灵&#xff08;Alan Turing&#xff09;于1936年提出。它是一种抽象的计算设备&#xff0c;是一种理论上的计算模型&#xff0c;用于描述和模拟计算的过程&#xff0c;至于为什么要做计算可参考我另外一篇文章。可以说&#xff0c;图灵机…

什么是vlan为什么要划分vlan

首先了解交换机的数据的转发方式。&#xff0c;有两种情况会使用广播方式进行数据分发&#xff0c;第一种就是目的地址是全F的&#xff08;FF-FF-FF-FF-FF-FF&#xff09;&#xff0c;第二种是位置的单播帧&#xff0c;这样的情况下会带来什么杨的问题呢。 场景引入&#xff1…