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

MySQL之基本查询(一)(insert || select)

目录

一、表的增删查改

二、表的增加insert

三、表的读取select

where 条件子句

结果排序

筛选分页结果


一、表的增删查改

我们平时在使用数据库的时候,最重要的就是需要对数据库进行各种操作。而我们对数据库的操作一般来说也就是四个操作,CRUD : Create(创建,增), Retrieve(读取,查),Update(更新,改),Delete(删除,删)。

二、表的增加insert

语法:insert的作用就是向表中插入记录。

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

下面我们先创建一张学生信息表:

mysql> create table stu(-> id int unsigned primary key auto_increment,-> sn int not null unique comment '学号',-> name varchar(20) not null,-> qq varchar(20)-> );

 

单行数据的全列插入 

mysql> insert into stu values (1,1000,'张三',123456);

对于全列插入,我们不指定要插入的列,就表示要对所有列进行数据的插入。

多行数据的指定列插入 

value_list数量必须和指定列数量及顺序一致。 

mysql> insert into stu (id,sn,name,qq) values (3,1002,'王五',12347),(4,1003,'赵六',123),(5,1004,'田七',120);

插入否则更新

我们在进行数据插入时,由于主键或者唯一键对应的值已经存在而导致插入失败,此时有了主键或者唯一键的冲突,我们可以考虑对表中的值进行更新。

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

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

比如插入了下面的数据发生了主键和唯一键的冲突: 

而我们可以对冲突的主键或者唯一键的相关记录进行更新。

mysql> insert into stu (id,sn,name,qq) values (6,1004,'ef',213432432) on duplicate key update name='ef';

 

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

替换

除了上面发生主键或者唯一键冲突后,进行更新的操作外,我们也可以直接使用我们想插入的数据对原数据进行替换。

语法:

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

replace into 表名 (value_list) values (value);

原数据:

我们替换掉主键id为5的数据:

mysql> replace into stu (id,sn,name,qq) values (5,1004,'德布劳内',123214);

1 row affected:表中没有冲突数据,数据被插入。
2 row affected:表中有冲突数据,删除后重新插入。

查询最新数据:

三、表的读取select

使用数据库时,用户对于数据库中的数据进行读取查询的操作也非常重要。我们通常使用select来进行读取查询的操作。

语法:

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 '英语成绩'
);

然后我们向其中插入一些测试数据:

全列查询

全列查询就是对表中的所有数据进行查询并显示出来。 

select * from 表名;

 

通常情况下不建议使用 * 进行全列查询:1、一张表一定是拥有大量的数据的,查询的列越多,意味着需要传输的数据量越大。2、可能会影响到索引的使用。 

指定列查询

在查询时,我们可以将 * 换成我们想要查询的若干个列的名称,以进行指定列查询。

查询字段为表达式 

select查询的字段除了可以是单独的列名称外,也可以是表达式。

当然,我们还可以对查询的字段进行重命名:

语法:as可以省略。

SELECT column [AS] alias_name [...] FROM table_name;

 

对查询结果去重 

对于下面的查询,如果我们想要查找同学的数学成绩有哪些分数,那么我们就不需要相同的分数,所以就需要对数学成绩进行去重:

我们发现,数学成绩为98的同学有两个,所以需要去重。

语法:

select distinct math from exam_result;

where 条件子句

where子句的作用,就是根据where后面的条件在表中进行特定的查找。

在MySQL中,其也有属于自己的各种运算符。

比较运算符

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,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)

where子句使用实例(以上面的exam_result表为基本表) 

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

mysql> select name,english from exam_result where english < 60;

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

两种查询方法:

mysql> select name,chinese from exam_result where chinese <= 90 and chinese >= 80;

也可以使用BETWEEN a0 AND a1进行查询:

mysql> select name,chinese from exam_result where chinese between 80 and 90;

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

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

我们也可以使用IN (option, ...)进行查看:

~  姓孙的同学及孙某同学(like)

姓孙的同学:

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

孙某同学:

select name,math from exam_result where name like '孙_';

 

结果排序

语法:order by

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

 ASC 为升序(从小到大),DESC 为降序(从大到小),默认排序顺序为 ASC。

注:NULL 视为比任何值都小,升序出现在最上面。order by通常都是对查询到的结果进行排序。

~ 查询同学及数学成绩,按数学成绩升序显示

select name,math from exam_result order by math (asc)

也可以显示地表示需要升序排序:

~ 查询同学姓名及总分,按总分由高到低排序

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

 

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

select name,math from exam_result where name like '孙%' or name like '曹%' order by math desc;

 

筛选分页结果

语法:

从 0 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;

从 s 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

 从 s 开始,筛选 n 条结果:

SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

相关文章:

MySQL之基本查询(一)(insert || select)

目录 一、表的增删查改 二、表的增加insert 三、表的读取select where 条件子句 结果排序 筛选分页结果 一、表的增删查改 我们平时在使用数据库的时候&#xff0c;最重要的就是需要对数据库进行各种操作。而我们对数据库的操作一般来说也就是四个操作&#xff0c;CRUD :…...

基于深度学习的多智能体协作

基于深度学习的多智能体协作是一种通过多个智能体相互协作完成复杂任务的框架&#xff0c;利用深度学习技术来优化智能体之间的合作与决策过程。多智能体系统广泛应用于自动驾驶、机器人群体、游戏AI、资源调度、无人机编队等领域&#xff0c;其中每个智能体通常具有自主性&…...

Nmap网络扫描器基础功能介绍

怎么快速知道网络中存在哪些设备呢&#xff1f;我们可以借用扫描工具Nmap来实现这个功能。 下载 Windows系统可以前往Nmap官网下载安装包。 Linux使用对应的包管理器可以直接安装&#xff0c;命令如下 # Debian/Ubuntu apt install nmap# RedHat/Fedora yum install nmap …...

idea 编辑器常用插件集合

SequenceDiagram 用于生成时序图的插件&#xff0c;支持一键生成功能。 使用&#xff1a;选择某个具体的方法&#xff0c;点击右键菜单&#xff0c;选择“Sequence Diagram” 便可生成相应的时序图 例子&#xff1a; 效果&#xff1a; Code Iris Code Iris可以根据代码自动…...

如何优化Java商城系统的代码结构

前言 优化Java商城系统的代码结构可以提高代码的可维护性、可读性和性能。以下是一些建议&#xff1a; 一、模块化设计 将系统拆分为多个模块&#xff0c;每个模块负责特定的功能。例如&#xff0c;可以将用户管理、商品管理、订单管理等功能分别放在不同的包中。 二、分层…...

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 题目…...

这几个方法轻松压缩ppt文件大小,操作起来很简单的压缩PPT方法

这几个方法轻松压缩ppt文件大小。在当今信息化迅速发展的时代&#xff0c;PPT已成为工作和学习中必不可少的工具。然而&#xff0c;随着内容的增加&#xff0c;文件体积常常变得庞大&#xff0c;影响了分享和传输的便利性。过大的文件不仅占用存储空间&#xff0c;还可能导致演…...

【nvm管理多版本node】下载安装以及常见问题和解决方案

nvm管理多版本node nvm 下载安装下载安装 nvm 常用命令其他常用命令 常见问题 nvm 下载安装 下载 nvm下载地址 每个版本下都有Assets&#xff0c;根据需要下载一个。 node下载地址 根据自己需要,可以下载可执行文件或者压缩包 安装 按提示安装即可。 安装过程中&#xff…...

C++(学习)2024.9.23

目录 运算符重载 1.概念 2.友元函数运算符重载 3.成员函数运算符重载 4.特殊运算符重载 1.赋值运算符重载 2.类型转换运算符重载 5.注意事项 std::string字符串类&#xff1a; 模板与容器 模板 1.函数模板 2.类模板 类内实现 类内声明类外实现 运算符重载 1.概念…...

大数据处理从零开始————3.Hadoop伪分布式和分布式搭建

1.伪分布式搭建&#xff08;不会用&#xff0c;了解就好不需要搭建&#xff09; 这里接上一节。 1.1 伪分布式集群概述 伪分布式集群就是只有⼀个服务器节点的分布式集群。在这种模式中&#xff0c;我们也是只需要⼀台机器。 但与本地模式不同&#xff0c;伪分布式采⽤了分布式…...

跟着问题学12——GRU详解

1 GRU 1. 什么是GRU GRU&#xff08;Gate Recurrent Unit&#xff09;是循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;的一种。和LSTM&#xff08;Long-Short Term Memory&#xff09;一样&#xff0c;也是为了解决长期记忆 和反向传播中的梯度等问题…...

内核是如何接收网络包的

1、数据如何从网卡到网络协议栈 1.1内核收包的过程 1、数据帧从外部网络到达网卡 2、网卡把数据帧从自己的缓存DMA(拷贝到)和内核共有的RingBuffer上 3、网卡发出硬中断通知CPU 4、CPU响应硬中断&#xff0c;简单处理后发出软中断 5、k’softirqd线程处理软中断&#xff0c;调…...

计算机毕业设计之:基于微信小程序的电费缴费系统(源码+文档+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

【leetcode】环形链表、最长公共前缀

题目&#xff1a;环形链表 解法一&#xff1a;哈希表 创建一个哈希表&#xff0c;遍历链表先判断哈希表中是否含有要放入哈希表中的节点&#xff0c;如果该节点已在哈希表中出现那么说明该链表是环形的&#xff1b;如果链表节点出现nullptr那么就退出循环&#xff0c;该链表是…...

C#开发记录如何建立虚拟串口,进行串口通信,以及通信模板

记录时间;2024年4月 记录如何开启虚拟串口以及进行基础串口通信。 建立虚拟串口 使用的软件是vspd&#xff0c;建立虚拟串口之后就可以将他们当成实际物理连接的两个串口进行通信。 之后使用我们之前给出的通信模板&#xff0c;建立一个稍微规矩一点的界面。 界面建立 其中…...

电源设计的艺术:从底层逻辑到工程实践

在电子工程的世界里&#xff0c;电源设计是核心中的核心。它不仅是电子设备的能量源泉&#xff0c;更是整个系统稳定运行的基石。随着科技的不断进步&#xff0c;电源设计的要求也越来越高&#xff0c;从效率、稳定性到体积、成本&#xff0c;每一个维度都是工程师们不断追求的…...

软媒市场新探索:软文媒体自助发布,开启自助发稿新篇章

在繁华喧嚣的软媒市场中,每一个声音都在竭力呼喊,每一个品牌都在奋力展现。而软文,作为一种温柔而坚韧的营销力量,正逐渐崭露头角。特别是软文媒体自助发布平台的出现,更是为企业提供了一个全新的、高效的自助发稿渠道。 软媒市场自助发布平台,正如其名,是一个让企业能够自主发…...

【Kubernetes】常见面试题汇总(二十七)

目录 77.假设公司希望在不同的云基础架构上运行各种工作负载&#xff0c;从裸机到公共云。公司将如何在不同界面的存在下实现这一目标&#xff1f; 78.什么是 Google 容器引擎&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题。 题目 69-1…...

基于单片机巡迹避障智能小车系统

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…...

Python163邮箱发送:提升发送效率的技巧?

python163邮箱发送邮件教程&#xff1f;python怎么使用163邮箱&#xff1f; Python163邮箱发送作为一种自动化邮件发送方式&#xff0c;越来越受到开发者和企业的青睐。AokSend将探讨如何通过多种技巧提升Python163邮箱发送的效率&#xff0c;从而更好地满足用户需求。 Pytho…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...