当前位置: 首页 > news >正文

MySQL --基本查询(上)

文章目录

  • 1.Create
    • 1.1单行数据+全列插入
    • 1.2多行数据+指定列插入
    • 1.3插入否则更新
    • 1.4替换
  • 2.Retrieve
    • 2.1 select列
      • 2.1.1全列查询
      • 2.1.2指定列查询
      • 2.1.3查询字段为表达式
      • 2.1.4 为查询结果指定别名
      • 2.1.5结果去重
    • 2.2where 条件
      • 2.2.1英语不及格的同学及英语成绩 ( < 60 )
      • 2.2.2语文成绩在 [80, 90] 分的同学及语文成绩
      • 2.2.3数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
      • 2.2.4姓孙的同学 及 孙某同学
      • 2.2.5语文成绩好于英语成绩的同学
      • 2.2.6总分在 200 分以下的同学
      • 2.2.7语文成绩 > 80 并且不姓孙的同学
      • 2.2.8 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80
      • 2.2.9 null的查询
    • 2.3 结果排序
      • 2.3.1同学及数学成绩,按数学成绩升序显示
      • 2.3.2同学及 qq 号,按 qq 号排序显示
      • 2.3.3 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
      • 2.3.4查询同学及总分,由高到低
      • 2.3.5 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

1.Create

语法:

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

示例:
创建一张学生表

CREATE TABLE students (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INT NOT NULL UNIQUE COMMENT '学号',
name VARCHAR(20) NOT NULL,
qq VARCHAR(20)
);

1.1单行数据+全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
-- 注意,这里在插入的时候,也可以不用指定id(当然,那时候就需要明确插入数据到那些列了),那么mysql会使用默认的值进行自增。INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);INSERT INTO students VALUES (101, 10001, '孙悟空', '11111');
-- 查看插入结果
SELECT * FROM students;

在这里插入图片描述

1.2多行数据+指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致

insert students (sn,name) values
(20001,'曹孟德'),
(20002,'孙仲谋');select * from students;

在这里插入图片描述

1.3插入否则更新

由于 主键 或者 唯一键 对应的值已经存在而导致插入失败

INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师');INSERT INTO students (sn, name) VALUES (20001, '曹阿瞒');

在这里插入图片描述

可以选择性的进行同步更新操作
语法:

INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...
insert students (id,sn,name) values(100,10010,'唐大师')
on duplicate key update sn=10010,name='唐大师';

在这里插入图片描述
冲突数据被更新

– ON DUPLICATE KEY 当发生重复key的时候

1.4替换

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

replace students (sn,name) values (20001,'曹阿瞒');
select * from students;

在这里插入图片描述

2.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 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);

在这里插入图片描述

2.1 select列

2.1.1全列查询

– 通常情况下不建议使用 * 进行全列查询
– 1. 查询的列越多,意味着需要传输的数据量越大;
– 2. 可能会影响到索引的使用。

select * from exam_result;

在这里插入图片描述

2.1.2指定列查询

– 指定列的顺序不需要按定义表的顺序来

select id,name,english from exam_result;

在这里插入图片描述

2.1.3查询字段为表达式

– 表达式不包含字段

select id,name,5 from exam_result;

在这里插入图片描述
– 表达式包含一个字段

select id,name,english+5 from exam_result;

在这里插入图片描述
– 表达式包含多个字段

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

在这里插入图片描述

2.1.4 为查询结果指定别名

语法:

SELECT column [AS] alias_name [...] FROM table_name;
SELECT id, name, chinese + math + english 总分 FROM exam_result;

在这里插入图片描述

2.1.5结果去重

SELECT math FROM exam_result;

在这里插入图片描述
– 98 分重复了

SELECT DISTINCT math FROM exam_result;

– 去重结果

在这里插入图片描述

2.2where 条件

比较运算符:

运算符说明
>,>=, <, <=大于,大于等于,小于,小于等于
=等于,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 个)任意字符;_ 表示任意一个字符

逻辑运算符:

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

示例:

2.2.1英语不及格的同学及英语成绩 ( < 60 )

select name,english from exam_result where english<60;

在这里插入图片描述

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

SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese <= 90;

在这里插入图片描述
– 使用 BETWEEN … AND … 条件

SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;

在这里插入图片描述

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

select name,math from exam_result
where math=58
or math=59
or math=98
or math=99;

在这里插入图片描述
– 使用 IN 条件

SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);

在这里插入图片描述

2.2.4姓孙的同学 及 孙某同学

– % 匹配任意多个(包括 0 个)任意字符

select name from exam_result where name like '孙%';

在这里插入图片描述

– _ 匹配严格的一个任意字符

SELECT name FROM exam_result WHERE name LIKE '孙_';

在这里插入图片描述

2.2.5语文成绩好于英语成绩的同学

– WHERE 条件中比较运算符两侧都是字段

SELECT name, chinese, english FROM exam_result WHERE chinese > english;

在这里插入图片描述

2.2.6总分在 200 分以下的同学

– WHERE 条件中使用表达式
别名不能用在 WHERE 条件中

SELECT name, chinese + math + english 总分 FROM exam_resultWHERE chinese + math + english < 200;

在这里插入图片描述

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

SELECT name, chinese FROM exam_result
WHERE chinese > 80 AND name NOT LIKE '孙%';

在这里插入图片描述

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

select name,chinese,math,english,chinese+math+english 总分 from exam_result where name like ' 孙_' or (chinese +math +english>200 and chinese < math and english>80);

在这里插入图片描述

2.2.9 null的查询

– 查询 students 表
在这里插入图片描述
– 查询 qq 号已知的同学姓名

SELECT name, qq FROM students WHERE qq IS NOT NULL;

在这里插入图片描述

– NULL 和 NULL 的比较,= 和 <=> 的区别

SELECT NULL = NULL, NULL = 1, NULL = 0;
SELECT NULL <=> NULL, NULL <=> 1, NULL <=> 0;

在这里插入图片描述

2.3 结果排序

语法:
– ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 默认为 ASC

SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

示例:

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

SELECT name, math FROM exam_result ORDER BY math;

在这里插入图片描述

2.3.2同学及 qq 号,按 qq 号排序显示

– NULL 视为比任何值都小,升序出现在最上面

SELECT name, qq FROM students ORDER BY qq;

在这里插入图片描述

– NULL 视为比任何值都小,降序出现在最下面

SELECT name, qq FROM students ORDER BY qq DESC;

在这里插入图片描述

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

– 多字段排序,排序优先级随书写顺序

SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;

在这里插入图片描述

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

– ORDER BY 中可以使用表达式

SELECT name, chinese + english + math FROM exam_result
ORDER BY chinese + english + math DESC;

在这里插入图片描述

– ORDER BY 子句中可以使用列别名

SELECT name, chinese + english + math 总分 FROM exam_result ORDER BY 总分 DESC;

在这里插入图片描述

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

– 结合 WHERE 子句 和 ORDER BY 子句

SELECT name, math FROM exam_result
WHERE name LIKE '孙%' OR name LIKE '曹%'
ORDER BY math DESC;

在这里插入图片描述

相关文章:

MySQL --基本查询(上)

文章目录 1.Create1.1单行数据全列插入1.2多行数据指定列插入1.3插入否则更新1.4替换 2.Retrieve2.1 select列2.1.1全列查询2.1.2指定列查询2.1.3查询字段为表达式2.1.4 为查询结果指定别名2.1.5结果去重 2.2where 条件2.2.1英语不及格的同学及英语成绩 ( < 60 )2.2.2语文成…...

mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(19)

1、SQL 删除数据&#xff08;DELETE 语句&#xff09; 在SQL中&#xff0c;TRUNCATE TABLE 语句用于删除表中的所有行&#xff0c;但不删除表本身。这个操作通常比使用 DELETE 语句删除所有行要快&#xff0c;因为它不记录每一行的删除操作到事务日志中&#xff0c;而是直接重…...

RoguelikeGenerator Pro - Procedural Level Generator

这是怎么一回事? Roguelike Generator Pro:简单与力量的结合。使用GameObjects、Tilemaps或自定义解决方案轻松制作3D/2D/2.5D关卡。享受内置功能,如碰撞处理、高度变化、基本控制器和子随机化器,所有这些都由Drunkard Wlak程序生成算法提供支持。 我该如何使用它? 简单:…...

反病毒技术和反病毒软件(网络安全小知识)

一、反病毒技术的难点 病毒变异与多态性&#xff1a;病毒开发者不断利用新技术和漏洞&#xff0c;创造出新的病毒变种和多态病毒。这些病毒能够自我变异&#xff0c;从而避开传统的基于特征码的检测方法&#xff0c;使得反病毒软件难以识别和清除。 未知病毒检测&#xff1a;在…...

位图与布隆过滤器

引例 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。 思路1&#xff1a;排序二分查找 思路2&#xff1a;哈希或红黑树 因为40亿个整数要占用16GB 102410241024Byte 约等于10亿Byte1GB 40亿*4Byte 16G…...

【题解】—— LeetCode一周小结38

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结37 16.公交站间的距离 题目链接&#xff1a;1184. 公交站间的距…...

EvilScience靶机详解

主机发现 arp-scan -l 得到靶机ip 192.168.229.152 端口扫描 nmap -sV -A -T4 192.168.1.20 这段代码使用 nmap 命令来扫描目标主机 192.168.1.20&#xff0c;并执行以下操作&#xff1a;-sV&#xff1a;探测开放的端口&#xff0c;以确定服务/版本信息。-A&#xff1a;启…...

算法练习题24——leetcode3296移山所需的最小秒数(二分模拟)

【题目描述】 【代码示例&#xff08;java&#xff09;】 class Solution {// 计算让工人们将山的高度降到0所需的最少时间public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {long left 0; // 最少时间初始为0long right 0; // 最大时间初始化为0// …...

excel 单元格一直显示年月日

excel 单元格一直显示年月日&#xff0c;在单元格上右键选择单元格格式&#xff0c;选择日期时单元格会显示成日期格式...

【线程】线程的控制

本文重点&#xff1a;理解线程控制的接口 前言 内核中是没有很明确线程的概念的&#xff0c;只有轻量级进程的概念&#xff0c;不会提供直接给我们线程的系统调用&#xff0c;而会给我们提供轻量级进程的系统调用。我们用户是需要线程的接口的&#xff0c;在应用层&#xff0…...

掌握 Spring:从新手到高手的常见问题汇总

一提起Spring&#xff0c;总感觉有太多知识&#xff0c;无法详尽&#xff0c;有些基础理解就先不说了&#xff0c;相信大家都已经用过Spring了 下面简单针对常见Spring面试题做些回答 核心特性 IOC容器spring事件资源管理国际化校验数据绑定类型转换spirng表达式面向切面编程……...

机器学习——Bagging

Bagging&#xff1a; 方法&#xff1a;集成n个base learner模型&#xff0c;每个模型都对原始数据集进行有放回的随机采样获得随机数据集&#xff0c;然后并行训练。 回归问题&#xff1a;n个base模型进行预测&#xff0c;将得到的预测值取平均得到最终结果。 分类问题&#xf…...

日志体系结构与框架:历史、实现与如何在 Spring Cloud 中使用日志体系

文章目录 1. 引言2. 日志体系结构3. 日志框架的发展历程日志框架特点对比 4. 日志记录器的使用与管理使用 SLF4J 和 Logback 的日志记录示例 5. Spring Cloud 中的日志使用5.1 日志框架集成5.2 分布式追踪&#xff1a;Spring Cloud Sleuth 和 Zipkin添加 Sleuth 和 Zipkin 依赖…...

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS&#xff08;关系型DB&#xff09;中&#xff0c;看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂&#xff0c;也就是说&#xff0c;你执行了一条诸如select count(*) where id 001 from table_name的非常简…...

ubuntu安装StarQuant

安装boost 下面展示一些 内联代码片。 sudo apt install libboost-all-dev -y安装libmongoc-1.0 链接: link // An highlighted block sudo apt install libmongoc-1.0-0 sudo apt install libbson-1.0 sudo apt install cmake libssl-dev libsasl2-dev编译源码 $ git clone…...

学习篇 | Jupyter 使用(notebook hub)

1. JupyterHub 1.1 快速尝试 jupyterhub -f/path/jupyter_config.py --no-ssl1.2 长期后台运行 bash -c "nohup jupyterhub -f/path/jupyter_config.py --no-ssl" > ~/jupyterhub.log 2>&1 &1.3 帮助 jupyterhub --help2. Jupyter Notebook 2.1 快…...

【裸机装机系列】8.kali(ubuntu)-虚拟内存swap交换分区扩展

推荐阅读&#xff1a; 1.kali(ubuntu)-为什么弃用ubuntu&#xff0c;而选择基于debian的kali操作系统 linux swap交换分区&#xff0c;相当于win系统虚拟内存的概念。当linux系统的物理内存不够用的时候&#xff0c;就需要将物理内存中的一部分空间释放出来&#xff0c;以供当前…...

异步请求的方法以及原理

异步请求是指在发送请求后&#xff0c;不会阻塞程序的执行&#xff0c;而是继续执行后续的代码&#xff0c;等待请求返回后再执行相应的回调函数。常见的异步请求方法包括使用XMLHttpRequest对象&#xff08;XHR&#xff09;和fetch API。 异步请求的方法 1. XMLHttpRequest (X…...

SpringCloud入门(六)Nacos注册中心(下)

一、Nacos环境隔离 Nacos提供了namespace来实现环境隔离功能。 nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离&#xff0c;例如不同namespace的服务互相不可见。 使用Nacos Namespace 环境隔离 步骤&#xff1a; 1.在Nacos控制…...

【RDMA】mlxlink检查和调试连接状态及相关问题--驱动工具

简介 mlxlink工具用于检查和调试连接状态及相关问题。该工具可以用于不同的链路和电缆&#xff08;包括被动、电动、收发器和背板&#xff09;。 属于mft工具套件的一个工具&#xff0c;固件工具 Firmware Tools (MFT):https://blog.csdn.net/bandaoyu/article/details/14242…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...