MySQL --基本查询(上)

news2024/11/17 1:48:37

文章目录

  • 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;

在这里插入图片描述

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

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

相关文章

深度解读 2024 Gartner DevOps 魔力象限

上周 Gartner 刚发布了 2024 年度的 DevOps 魔力象限。我们也第一时间来深度解读一下这份行业里最权威的报告。 和2023年对比 23 年入围 14 家厂商&#xff0c;24 年入围 11 家。4 家厂商从报告中消失&#xff0c;分别是 Bitrise, Codefresh, Google Cloud Platform (GCP), VM…

调度_命令行_环境变量

linux的进程调度算法 饥饿问题 新建进程/时间片结束进程&#xff0c;若放回active&#xff0c;很可能该进程优先级太高&#xff0c;下一个还是执行该进程&#xff0c;导致不断执行同一进程&#xff0c;各进程调度不均衡。 饥饿问题解决 新建进程不能到active&#xff0c;要到…

力扣 24.两两交换链表中的节点

力扣《反转链表》系列文章目录 刷题次序&#xff0c;由易到难&#xff0c;一次刷通&#xff01;&#xff01;&#xff01; 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段 题解224. 两两交换链表中的节点两个一组反转链表25. K 个一组翻转链表K …

《操作系统 - 清华大学》第一讲:操作系统概述 —— 学习内容概述

文章目录 1. 内容摘要2. 实验内容 1. 内容摘要 在这里对学习内容做一个整体上的介绍&#xff0c;那在这里包括我们要学习的内容&#xff0c;实验的内容。操作系统课涉及到计算机系统当中的资源管理&#xff0c;所以我们围绕着操作系统的实现来介绍相关内容&#xff0c;那主要分…

①大缓存ModbusRTU485数据集中采集器寄存器线圈重映射从站并发采集Modbus 串口RS485 转 RS485

大缓存ModbusRTU485数据集中采集器寄存器线圈重映射从站并发采集https://item.taobao.com/item.htm?ftt&id811821574300 产品型号&#xff1a; 一分一路 MS-A1-C011 一分2路 MS-A1-C021 一分4路 MS-A1-C041 一分7路 MS-A1-C071 一般技术规格 1.串口 MS-A1…

【hot100-java】【最长公共子序列】

R8-多维dp篇 直接上递推 class Solution {public int longestCommonSubsequence(String text1, String text2) {char[] stext1.toCharArray(); char[] ttext2.toCharArray(); int ns.length;int mt.length;int [][] fnew int[n1][m1];for (int i0;i<n;i){for (int j0;j<…

MySQL | 实战 | 4 种将数据同步到ES方案

文章目录 1. 前言2. 数据同步方案2.1 同步双写2.2 异步双写2.3 定时更新2.4 基于 Binlog 实时同步 3. 数据迁移工具选型3.1 Canal3.2 阿里云 DTS3.3 Databus3.4 Databus和Canal对比3.4 其它 4. 后记 上周听到公司新同事分享 MySQL 同步数据到 ES 的方案&#xff0c;发现很有意思…

02【Matlab系统辨识】白噪声

1.白噪声与有色噪声 1.1 白噪声(white noise) 系统辨识中所用到的数据通常都含有噪声。从工程实际出发&#xff0c;这种噪声往往可以视为具有有理谱密度的平稳随机过程。白噪声是一种最简单的随机过程&#xff0c;是由一系列不相关的随机变量组成的理想化随机过程。白噪声的数…

vue3 vxe-grid 通过数据库返回的列信息,生成columns,并且其中有一列是img类型,进行slots的格式化处理。

1、一般我们写死的列信息的时候&#xff0c;会这样定义&#xff1a; 2、然后我们在template里面&#xff0c;这样这样写slots格式化部分&#xff1a; 这样表格中就会展示出一张图片&#xff0c;并且&#xff0c;我们点击了可以查看大图。 3、那么我们从数据库中返回的列&#…

三菱FX5U PLC故障处理(各种出错的内容、原因及处理方法进行说明。)

对使用系统时发生的各种出错的内容、原因及处理方法进行说明。 故障排除的步骤 发生故障时&#xff0c;按以下顺序实施故障排除。 1.确认各模块是否正确安装或正确配线。 2、确认CPU模块的LED。 3.确认各智能功能模块的LED。(各模块的用户手册) 4、连接工程工具&#xff0c;启…

Golang | Leetcode Golang题解之第题432题全O(1)的数据结构

题目&#xff1a; 题解&#xff1a; type node struct {keys map[string]struct{}count int }type AllOne struct {*list.Listnodes map[string]*list.Element }func Constructor() AllOne {return AllOne{list.New(), map[string]*list.Element{}} }func (l *AllOne) Inc(ke…

分布式环境中,接口超时到底怎么处理?

目录标题 为什么会存在超时?如何应对可能发生的超时?1. 设置合理的超时时间2. 重试机制3. 熔断机制4. 监控和报警5. 日志记录6. 限流和降级7. 异步处理 以上总结 为什么会存在超时? 接口超时是分布式系统中常见的问题&#xff0c;其原因多种多样&#xff0c;涉及网络、服务…

深入探究PR:那些被忽视却超实用的视频剪辑工具

如果想要了解视频剪辑的工具&#xff0c;那一定听说过pr视频剪辑吧。如果你是新手其实我更推荐你从简单的视频剪辑工具入手&#xff0c;这次我就介绍一些简单好操作的视频剪辑工具来入门吧。 1.福晰视频剪辑 连接直达>>https://www.pdf365.cn/foxit-clip/ 这款工具操…

Docker 付费订阅价格大幅上调,免费订阅功能受限,云计算和安全产品有调整

云计算de小白 同时&#xff0c;免费的 Docker Personal 订阅将不再包含 Build Cloud 分钟数&#xff0c;支持范围将从三个 Scout 存储库变为仅一个&#xff0c;并且仅限于一个具有 2 GB 存储空间的私有 Docker Hub 容器注册存储库。 不过&#xff0c;Docker也对云计算和安全产…

【WPF】03 动态生成控件

说明 今天记录一篇关于动态生成控件的方法&#xff0c;也是反复查了一些资料&#xff0c;逐步完善成自己需要的方法&#xff0c;感觉还是比较好用的。通过这个需求&#xff0c;在网上也找了一些资料&#xff0c;发现了一个开源图形UI组件HandyControl&#xff0c;觉得比较好&a…

统信服务器操作系统【Cron定时任务服务】

Cron定时任务服务服务介绍、服务管理、服务配置 文章目录 一、功能概述二、功能介绍1. Cron 服务管理2.Cron 服务管理3.Cron 服务配置run-parts一、功能概述 cron是一个可以用来根据时间、日期、月份、星期的组合来 调度对周期性任务执行的守护进程。利用 cron 所提供的功能,可…

分布式环境中,接口超时重试带来的的幂等问题如何解决?

目录标题 幂等不能解决接口超时吗&#xff1f;幂等的重要性什么是幂等?为什么需要幂等?接口超时了&#xff0c;到底如何处理&#xff1f; 如何设计幂等?幂等设计的基本流程实现幂等的8种方案1.selectinsert主键/唯一索引冲突&#xff08;常用&#xff09;2.直接insert 主键…

【Oauth2整合gateway网关实现微服务单点登录】

文章目录 一.什么是单点登录&#xff1f;二.Oauth2整合网关实现微服务单点登录三.时序图四.代码实现思路1.基于OAuth2独立一个认证中心服务出来2.网关微服务3产品微服务4.订单微服务5.开始测试单点登录 一.什么是单点登录&#xff1f; 单点登录&#xff08;Single Sign On&…

sql语法学习:关键点和详细解释

学习SQL语法是掌握数据库操作的基础。以下是SQL语法的一些关键点和详细解释&#xff1a; 1. SQL基础 SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和操作关系型数据库的标准语言。它主要包括以下几个部分&#xff1a; 数据定义语言&#xff08;DDL&…

全栈开发(五):初始化前端项目(nuxt3+vue3+element-plus)+前端代理

1.初始化前端项目 Nuxt3:搭建项目_nuxt3 项目搭建-CSDN博客、 2.配置代理 nuxt.config.ts // https://nuxt.com/docs/api/configuration/nuxt-configexport default defineNuxtConfig({devtools: { enabled: true },modules: ["element-plus/nuxt", "pinia/n…