【数据库】MySQL表的基本查询

关于表的增删查改主要分为CRUD:Create(创建), Retrieve(读取),Update(更新),Delete(删除)

目录

1.Creat(增加内容)

 1.1指定列插入

1.2全列插入

1.3多行插入

1.4插入冲突更新 

 1.5替换

2.Retrieve(查询)

 2.1全列查询

2.2指定行列查询

2.3查询结果去重 

 2.4where子句查询

案例1:英语不及格的同学及英语成绩 ( < 60 )

案例2:语文成绩在 [80, 90] 分的同学及语文成绩

案例3:数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

 案例4:姓孙的同学 及 孙某同学

案例5:语文成绩好于英语成绩的同学

案例6:总分在200分以下的同学 

案例7:语文成绩 > 80 并且不姓孙的同学 

 2.5 order by子句(结果查询)

案例1:同学及数学成绩,按数学成绩升序显示

案例2:NULL 视为比任何值都小,升序出现在最上面,降序出现在最下面。

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

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

 2.6筛选分页结果

总结


1.Creat(增加内容)

语法:

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

常用的增加内容语句就是insert,以上的语法结构中凡是带中括号的区域都是可以被省略的。

案例:

首先需要建一张表

create table students(id int unsigned primary key auto_increment,sn int unsigned unique key,name varchar(20) not null,qq varchar(32) unique key);

 

 1.1指定列插入

我们要选择给哪一列插入信息时语法如下

insert into students () values ();

 可以看到我们在在一个括号中指定了一些列信息,在第二个括号中插入了相应的值,即可完成指定的列插入。

我们可以将values看作扁担一样,左边括号中的列属性要和右边括号中的值一一对应。

1.2全列插入

却列插入语法如下:

insert into students values ()

可以看到虽然我们给id定义了自增长键,但是全裂插入还是可以插入我们想要的值,每一列都是我们指明的values后面的数据。

1.3多行插入

我们一次只插入一条数据会有点慢,可以进行多行插入。

 可以看到我们在values后可以使用的多个括号,并且可以用逗号将他们隔开即可完成多行数据的插入。

1.4插入冲突更新 

当我们在插入时可能会遇到唯一键或者主键冲突,这时他会报错不让我们插入数据。

可以看到报错信息为Duplicate

我们就可以可以选择性的进行同步更新操作

语法:

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

案例:

我们现在想要对wdd这个人的信息进行修正

首先我们插入一条关于wdd被修正过后的信息,可以看到发现了主键冲突

我们就可以使用  on duplicate key update

 

可以看到wdd就更新成了wyx。

要注意的是刚刚再插入时出现以下提示

这个意思是两行数据被影响

-- 0 row affected:表中有冲突数据,但冲突数据的值和 update 的值相等

-- 1 row affected:表中没有冲突数据,数据被插入

-- 2 row affected: 表中有冲突数据,并且数据已经被更新

当我们插入了一个表中没有的数据时使用了这个语法

可以看到一行受到了影响,也就是说表中没有冲突数据,数据被插入了

 1.5替换

替换操作可以在发生on duplicate时使用

案例:

 替换操作的语法只需要将insert 替换车replace 即可。

可以看到只有一行受到影响了,所以会直接插入数据

 

 接下来我们修改刚刚替换语句中的信息

 这里将 ’许攸‘ 改为 ‘许攸1’,

可以看到两行出现影响,所以会删除原先的数据再插入新的数据

id 从之前的15变成了16,许攸变成了许攸1

2.Retrieve(查询)

在查询操作之前,我们首先需要建一张表

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

 2.1全列查询

select  *  from table

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

2.2指定行列查询

我们可以通过select 来指定列查询

并且还可以同时选择多个列查询

 

select 后面可以跟表达式,例如我们还可以将所有的成绩加在一起

select name,math+chinese+english from exam_result;

 如果我们觉得三项成绩加在一起有点长的话我们还可以改名字

select name,math+chinese+english as total from exam_result;

同样的也可以对指定列进行重命名

select name 姓名 ,math+chinese+english  总分 from exam_result;

2.3查询结果去重 

先查询一下数学成绩,发现有重复的,我们可以再筛选语句中添加distinct去重

 

 2.4where子句查询

在学习where语句之前我们先要学习运算符

比较运算符:

逻辑运算符:

案例1:英语不及格的同学及英语成绩 ( < 60 )

select name,english from exam_result where english < 60;

 可以看到我们这里利用where查询的结果

案例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;

 

案例3:数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

我们不妨使用IN

 

select name,math from exam_result where math  in (58,59,98,99)

查询结果符合要求

 案例4:姓孙的同学 及 孙某同学

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

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

 我们找到了姓孙的人

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

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

这样就可以找到孙某 

案例5:语文成绩好于英语成绩的同学

select name ,chinese,english from exam_result where chinese > english;

案例6:总分在200分以下的同学 

select name,chinese+english+math as total from exam_result where chinese+math+english < 200;

案例7:语文成绩 > 80 并且不姓孙的同学 

select name,chinese from exam_result where chinese > 80 and name not like '孙%';

 2.5 order by子句(结果查询)

语法:-- ASC 为升序(从小到大)

          -- DESC 为降序(从大到小)

默认为 ASC

案例1:同学及数学成绩,按数学成绩升序显示

首先我们先筛选出同学和数学成绩

在后面加上升序或降序的条件

 

select name, math from exam_result order by math asc;

 此时排序为升序

select name, math from exam_result order by math desc;

此时为降序。

案例2:NULL 视为比任何值都小,升序出现在最上面,降序出现在最下面。

我们先查看test表中的内容

 

再将它排序

升序

降序

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

select name,math,english,chinese from exam_result order by math desc,english desc,chinese asc;

 

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

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

结果如图所示

 2.6筛选分页结果

当我们查询表的全部内容时可以通过limit筛选出我们想要读的行页。

先全列查询

这里比如我们只想看到第三行

limit后只有一个数字的话就表示从表开始(下标为零的地方),连续读取和数字一样的行数信息。

limit后也可以跟两个数字

这里的2表示下标开始位置,4表示步数,连续读取四条信息。

同样的也可以使用offset来表示。

select * from exam_result  limit 4 offset 2;

 

可以看到和上面的 limit 2,4是同样的结果。

由于以后的学习中可能会遇到非常多的表和信息,如果读取全部可能会出现加载慢的问题,limit的作用就是使这些信息简单分页读取。

总结

通过以上的案例,我们最后需要知道的是我们需要有数据才能展示,先查后排。

只有数据准备好了,才能展示,limit的本质功能就是显示,所以limit的使用会更靠后。

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

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

相关文章

【算法每日一练及解题思路】判断字符串是否包含数字

【算法每日一练及解题思路】判断字符串是否含数字 一、题目&#xff1a;给定一个字符串&#xff0c;找出其中不含重复字符的最长子串的长度 二、举例&#xff1a; 比如"abcdefgh",不含数字&#xff1b;比如"1",含数字&#xff1b;比如"a1s",含…

fl studio24.1.1.4285中文版怎么破解?FL Studio 2024安装破解使用图文教程

fl studio24.1.1.4285中文破解版是一款功能强大的编曲软件&#xff0c;也就是众所熟知的水果软件。它可以编曲、剪辑、录音、混音&#xff0c;让您的计算机成为全功能录音室。除此之外&#xff0c;这款软件功能非常强大&#xff0c;为用户提供了许多音频处理工具&#xff0c;包…

单点登录问题【拼多多0905一面】

说一些今晚情况&#xff0c;7点腾讯音乐笔试&#xff0c;因为8点拼多多一面&#xff0c;哪个都拒不了。硬着头皮50分钟写了1.2题然后去面试。刚开始状态真的很差&#xff0c;大脑思考不动&#xff0c;面试中2个手撕&#xff0c;做出来一个&#xff0c;两个项目问题&#xff0c;…

notepad++将换行替换成空

将多行里的换行置为一行&#xff0c;例如将下面的6行置为3行 crrlH打开替换框&#xff0c; 替换目标为【,\r\n】&#xff0c;替换成空&#xff0c;勾选循环查找和 正则表达式&#xff0c;全部替换即可。 替换后的效果

【Git】本地仓库操作

Part1 基础概念 git作用&#xff1a;管理代码版本&#xff0c;记录&#xff0c;切换&#xff0c;合并代码 git仓库&#xff1a;记录文件状态内容和历史记录的地方&#xff08;.git文件夹&#xff09; git的三个区域&#xff1a;1&#xff09;工作区&#xff1a;实际开发时的文…

IP 协议详解

一、认识 IP 地址与网络层的职责 网络层是OSI七层模型中的第三层&#xff0c;也是TCP/IP四层模型中的网络接入层。在这一层&#xff0c;数据包被封装并加上IP层的头部信息&#xff0c;以便在网络之间传输。网络层的主要功能包括路由选择、分段与重组、拥塞控制以及IP地址管理等…

视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势

随着科技的飞速发展&#xff0c;视频技术已成为现代社会不可或缺的一部分&#xff0c;广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。本文将探讨视频技术的未来发展趋势&#xff0c;并深入分析TSINGSEE青犀EasyCVR视频汇聚融合平台的技术优势&#xff0c;展现其…

ArcGIS展线/投线教程

1 制作CSV文件 必要字段&#xff1a;起始经度&#xff0c;起始纬度&#xff0c;终止经度&#xff0c;终止纬度4列&#xff0c;其他列可以选填。 2 加载表格数据 点击号在当前地图加载表格。 3 使用工具箱 找到工具箱 - 数据管理工具 - 要素 - XY转线。 填空即可。当然&…

16 C语言连接

使用c语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;可以在官网下载 准备工作&#xff1a; 保证mysql服务有效 官网下载合适的mysql connect库 也可以直接安装mysql服务 yum install -y mysql-devel Connector/C使用 库格式如下&#xff1a; [hbMiWiFi-R1…

监控平台之nodejs模拟后端接口

github&#xff1a;可以下载进行实验 https://github.com/Mr-Shi-root/sdk-platform/tree/master 1.配置node环境&#xff0c;安装express cors body-parser babel/cors body-parser - node.js 中间件&#xff0c;用于处理 JSON, Raw, Text 和 URL 编码的数据。cookie-parse…

VR虚拟驾驶未来发展_vr自动驾驶汽车所带来的改变

在自动驾驶汽车的基础上&#xff0c;VR虚拟现实技术的应用也让自动驾驶汽车更加智能化&#xff0c;能够实现更高级的驾驶体验&#xff0c;今天这篇文章就和大家一起探讨一下 VR虚拟驾驶未来发展的趋势&#xff0c;以及虚拟现实自动驾驶汽车所带来的几个改变。 一、VR 虚拟驾驶未…

UnityShaderGraph 卡通水面效果

效果预览&#xff1a; 原理&#xff1a; 使用三张噪声贴图&#xff0c;结合UV偏移制作水面波纹混合的假象效果 噪声图1&#xff1a; 噪声图2&#xff1a; 噪声图3&#xff1a; 三次采样都是同样的方法&#xff0c;使用step函数来二分噪声 三张噪声采样结果相乘得到最终的波纹…

深度学习与大模型第1课环境搭建

文章目录 深度学习与大模型第1课环境搭建1. 安装 Anaconda2. 修改环境变量2.1 修改 .condarc 文件2.2 使用 Anaconda Prompt 修改环境变量 3. 新建 .ipynb 文件 机器学习基础编程&#xff1a;常见问题&#xff1a; 深度学习与大模型第1课 环境搭建 1. 安装 Anaconda 首先&am…

Ai Illustrator 取消吸附到像素点,鼠标拖动的时候只能到像素点

Ai Illustrator 取消吸附到像素点&#xff0c;鼠标拖动的时候只能到像素点 在做图的时候无意间变成吸附到像素点了&#xff0c;导致无法更细致的移动点。 像这样&#xff1a; 关闭的方法是打开上面菜单中的 【视图】取消勾选【对齐像素】 即可。 结果就是&#xff1a;

新160个crackme - 048-monkeycrackme1

运行分析 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8e7c9973721b4df1997cc9a83e0ef2b6.png 500x) 点击注册无反应 PE分析 Delphi程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 使用DeDeDark进行分析&#xff0c;发现Register按钮事件地址入口…

容性负载箱如何测量电容器的容量、电压、泄漏电流和ESR等参数?

容性负载箱是用于测量电容器参数的重要设备。它的主要功能是通过向电容器施加不同的负载&#xff0c;从而测量电容器的容量、电压响应、损耗等关键参数。 具体来说&#xff0c;容性负载箱可以通过以下方式测量电容器的各项参数&#xff1a; 1. 测量电容器的容量&#xff1a;容…

Java项目:139 springboot基于SpringBoot的论坛系统设计与实现

项目介绍 论坛系统设置的角色有管理员&#xff0c;版主&#xff0c;用户等。 管理员管理论坛&#xff0c;主要是对论坛帖子增删改查以及对论坛帖子回复进行查看&#xff0c;对版主和用户进行管理&#xff0c;管理新闻等。 版主可以发布帖子&#xff0c;可以查询论坛帖子&…

【Ubuntu20.04】配置深度学习环境

参考 Ubuntu20.04配置深度学习环境&#xff08;全网最细最全&#xff09; NVIDIA显卡驱动安装安装CUDA 通过终端nvidia-smi查看自己能安装的最高CUDA版本&#xff0c;在官方网址下载需要的版本。安装cuDNN 在官方网址选择适配于自己安装的CUDA版本的cuDNN安装Anaconda &#x…

Elastic Stack-ES集群常用的API

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 学习B站博主教程笔记&#xff1a; 最新版适合自学的ElasticStack全套视频&#xff08;Elk零基础入门到精通教程&#xff09;Linux运维必备—Elastic…

JavaScript事件

DOM事件 事件概念&#xff1a;事件是文档或浏览器中发生的交互行为的响应。事件流&#xff1a;分为三个阶段&#xff1a; 捕获阶段&#xff1a;事件从根节点开始&#xff0c;逐级向下传播至目标节点。目标阶段&#xff1a;事件在目标节点上被处理。冒泡阶段&#xff1a;事件从…