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

news2024/9/21 4:22:02

关于表的增删查改主要分为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.coloradmin.cn/o/2108467.html

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

相关文章

Springboot3.x.x使用SpringSecurity6(一文包搞定)

SpringSecurity6 什么是SpringSecurity? Spring Security 是一个强大的、高度可定制的身份验证&#xff08;Authentication&#xff09;和访问控制&#xff08;Authorization&#xff09;框架。它是 Spring 框架家族的一员&#xff0c;主要用于保护基于 Java 的应用程序&#…

鸿蒙开发有必要学吗

在科技飞速发展的今天&#xff0c;新的技术不断涌现&#xff0c;开发者们也面临着众多选择。其中&#xff0c;鸿蒙开发成为了一个备受关注的话题。那么&#xff0c;鸿蒙开发有必要学吗? 一、鸿蒙系统的崛起 鸿蒙操作系统是华为推出的一款面向全场景的分布式操作系统。它的出现…

CPU飙高排查步骤

1&#xff1a;top指令(查看进程信息) top指令&#xff1a;查看进程运行信息 此处1313占用90多CPU 2&#xff1a;ps指令&#xff08;查看进程中每个线程信息&#xff0c;锁定问题线程&#xff09; 查看进程里每个线程的详细占用 ps H -eo pid,tid,%cpu | grep 1313ps H:查看进…

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有程序编译成目…

解决微服务调用失败之 Name or service not known

在微服务启动之后&#xff0c;调用后台接口报错&#xff0c;如下&#xff1a; Name or service not known通过在Eureka控制台查看服务注册情况&#xff0c;发现服务已经注册上来&#xff0c;并且使用了主机名(非Ip)进行了注册。 如下图&#xff1a; 查阅资料得知&#xff0c;…

【时时三省】(C语言基础)指针进阶 例题2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 第一个arr 数组名相当于首元素地址 因为他没有放到strlen内部 也没有取地址 strlen是找&#xff3c;0 找不到&#xff3c;0就不会停下来 所以它打印的就是随机值 第二个arr0 首元素地址加零还…

谁还不知道用ChatmoneyAI写短剧脚本,真能火

本文由 ChatMoney团队出品 现在大家打开抖音、小红书&#xff0c;琳琅满目&#xff0c;目光所能及的都是各种吸精剧情的小短剧&#xff0c;虽然这些短剧的制作成本低&#xff0c;但是作为编剧的要写脚本&#xff0c;可不认为这么容易啊......... 接下来我给大家推荐一下使用Ch…

2024年全国大学生数学建模竞赛(B题) 建模解析|生产过程中的决策问题|小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;实现综合建模。独创复杂系统视角&#xff0c;帮助你解决国赛的难关呀。 完整内容可以…

分布式系统漫谈:从一致到共识

0 前言 本文将以**分布式系统的基本组成为出发点&#xff0c;详细探讨分布式系统的发展历程&#xff1b;逐步展开到分布式系统构成的核心要素&#xff0c;分析这些核心要素会对系统造成怎样的影响、以及影响的不同表现形式&#xff1b;最后探讨如何构建基本可用的分布式系统**…

MySQL-35个DQL练手题(难)

第1题 取得每个部门最高薪水的人员名称 第一步&#xff1a;取得每个部门最高薪水 select max(sal) topsal, deptno from emp group by deptno;第二步&#xff1a;将上面第一步的查询结果当做一张临时表t&#xff0c;进行表连接&#xff0c;条件是&#xff1a;t.deptnoe.deptn…

【Python基础】条件控制语句

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、Python 条件控制语句2.1 if语句2.2 if-else语句2.3 if-elif-else语句2.4 if语句的嵌套2.5 match-c…

P3631 [APIO2011] 方格染色

~~~~~ P3631 [APIO2011] 方格染色 ~~~~~ 总题单链接 思路 ~~~~~ 用 1 1 1表示红色&#xff0c; 0 0 0 表示蓝色&#xff0c; c o l [ i ] [ j ] col[i][j] col[i][j] 表示第 i i i 行&#xff0c;第 j j j 列的颜色。发现 i ≥ 2 , j ≥ 2 i\geq 2,j\geq 2 i≥2,j≥2 时&…

机器人领域顶级期刊会议盘点

顶级会议 International Conference on Robotics and Automation (ICRA) IEEE International Conference on Intelligent Robots and Systems (IROS) Robotics: Science and Systems (RSS) IEEE/RSJ International Conference on Human-Robot Interaction (HRI) 顶级期刊 …

Spring Boot项目中集成JWT进行身份验证

什么是JWT? JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境中安全地传递信息。它主要用于在客户端和服务器之间传递经过签名的 JSON 数据&#xff0c;以确保数据的完整性和真实性。 1.JWT 的结构…

2024国赛数学建模C题思路模型

完整的思路模型请查看文末名片

java项目热部署

idea java项目热部署

实验三 数组和字符串的使用

实验目的及要求 目的&#xff1a; 了解多维数组的创建和使用&#xff0c;掌握一维数组和二维数组的创建和使用及String和StringBuffer类的创建方法&#xff0c;掌握String类中常用方法的使用&#xff0c;掌握String类中equals()方法和””的区别&#xff0c;区分数组的length…

learn C++ NO.12——vector

前言 不知何时开始产生了不更新博客的习惯&#xff0c;开始编程学习也过了两年多了。恍惚了一个阶段&#xff0c;我觉得是时候恢复博客产出了&#xff0c;我认为写博客是一种好的学习的方式&#xff0c;不仅可以让你对已经学习过的知识又一遍回顾&#xff0c;还记录了你编程学…

2024年全国大学生数学建模竞赛(A题) 建模解析|“板凳龙” 闹元宵|小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 本篇文章是鹿鹿学长经过深度思考&#xff0c;独辟蹊径&#xff0c;实现综合建模。独创复杂系统视角&#xff0c;帮助你解决国赛的难关呀。 完整内容可以…

React学习-hooks

官方文档&#xff1a;https://zh-hans.react.dev/reference/react/useActionState 1.useEffect useEffect(setup, dependencies?) 1.1 基础使用 //hooks import { useEffect } from "react"; import "./App.css";function App(){useEffect(()>{con…