数据库基本查询(表的增删查改)

一、增加

1、添加信息  insert 

语法

insert into table_name (列名) values (列数据1,列数据2,列数据3...)

若插入时主键或唯一键冲突就无法插入。

但如果我们就是要修改一列信息也可以用insert

insert into table_name (列名) values (列数据1,列数据2,列数据3...) on duplicate key update colum=value...

举例

2、替换  replace

语法

replace into table_name (列名) values (列数据1,列数据2,列数据3...)

不论是否冲突直接替换,所以上面提到的insert插入操作可以用replace

举例

二、查询  

1、查询表信息  select

语法

(1)select * from table_name;                 

查看表中全部列信息

(2)select 列名 from table_name;          

查看表中指定列信息(列名之后用as或空格可以让打印出来的列名修改)

上图中 id, name, math 表示想要查询多列信息用逗号隔开。

(3)select 表达式 from table_name;            

上图中chinese+math+english就是表达式,select自动帮我们计算好了。

 (4)select distinct 列名 from table_name;     

查看去重之后列中数据

2、where子句

在上面的select用法中我们只是查看一列列完整的信息,但是除了对列筛选,还要对列中的信息进行筛选,所以就要用到where子句。

运算符介绍

运算符说明
> < >= <=大于 小于 大于等于 小于等于
=   比较相等,但是无法比较null
<=>

比较相等,可以比较null

!=     <>   比较不相等,前者不能比较null后者能
between a0 and a1范围匹配数据从a0到a1
in (option1,2...)匹配圆括号中任意一个数据
is null是否为null(推荐使用)
is not null是否不是null
like 

模糊匹配,%表示匹配任意多

_符号个数表示匹配多少字符

and逻辑与
or逻辑或
not逻辑取反

上述符号使用时支持()圆括号优先级修改。

举例

上文我们提到列名后面跟空格可以修改打印的列名,但是为什么这里会报错呢?

这语句可以分成三部分:select,from,where,分别代表三个阶段:显示数据,选择表,筛选数据。

所以按顺序应该是from where select ,所以上图中在最后一个阶段定义的“总分”是不能出现在筛选数据阶段的。

3、结果排序

语法

asc 升序  

desc 降序

默认asc

select .... from table_name order by 列名 asc/desc

没有order by返回表中顺序

null比任何值小

举例

上图中为什么可以重命名呢?

因为分成三个阶段:select,from,order by,分别代表:显示 选择表 排序

顺序应该是先选择表,显示数据,最后排序,所以在排序之前定义的名称就可以用。

4、筛选分页结果

语法

(1)select ... from table_name limit n;

从表中开始取n行显示。

(2)select ... from table_name limit n,m;

从表中第n+1行(因为表行从0开始)开始取m行显示。

(3)select ... from table_name limit n offset m;

从表中m+1行开始显示n行。

limit不是条件筛选,本质是显示。

举例

三、更新

语法

update table_name set column = 表达式.... 查询语句[where][order by][limit];

对查询结果进行列值更新,一般加上where子句查询,不然就修改一列。

举例

表达式不支持 += *= ....

四、删除

语法

用查询语句就能准确找到要删除值

delete from table_name 查询语句[where][order by][limit];

删除整表 

dalete from table_name;

举例

五、插入查询结果

语法

insert into table_name [column...] select....;

举例

删除一张表中的重复数据

1、先复制原表结构   create table table_name like table_name;

2、用插入查询结果进行不重复数据的插入

insert into no_duplicate_table select distinct * from duplicate_table;

3、最后把目标表重命名

rename table duplicate_table to old_table, no_duplicate_table to duplicate_table;

思考:为什么最后要重命名,不能一开始就把文件要的数据直接写入?

在Linux上面,一般上传文件都不是原子的,就导致速度慢。但是放入临时文件里面进行操作,最后重命名就是原子的,速度快。

六、聚合函数

函数说明
count ([distinct] 表达式)查询到的数据个数
sum ([distinct] 表达式)查询到的数据总和
avg ([distinct] 表达式)查询到的数据平均数
max ([distinct] 表达式)查询到的数据最大值
min ([distinct] 表达式)查询到的数据最小值

要保证数据是可聚合的,不是数字是无意义的。

举例

七、分组查询   group by子句

分组的目的就是为了分组之后方便聚合统计。

语法

select column1,column2,column3... from table_name group by column;

语法理解

1、从table_name中进行分组查询,指定column列名,根据列名中不同的行数据进行分组,相同的行数据就会聚合统计。

2、分组就像一张表在按条件逻辑上进行拆分成多张子表,分别对多张子表进行聚合统计。

举例

现在我们有一个数据库里面存放三张表,分别是emp(员工表),dept(部门表),salgrade(薪资表)

1、显示每个部门平均、最高工资

2、显示每个部门每个职业平均、最低工资

但是我们发现上图想显示一下员工名字就报错了,这是为什么呢?

因为名字是不相同的没有办法分组聚合,而且大原则是只有在group by 之后的列名才能在select之后显示,当然聚合函数也是在select后面显示。

至于想加上名字就不应该用聚合函数来实现,应该用where子句等方式筛选。

3、显示平均工资低于2000的部门和他的平均工资

我们发现这个问题有对聚合出来的数据进行筛选,所以我们使用having子句来实现。

4、hanving子句和where子句的区别与理解

顺序如下图

所以where子句是对任意列进行条件筛选,但是having子句专门对聚合数据进行条件筛选,虽然两者都有条件筛选,但是非常不建议混用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JVM基础03】——组成-详细介绍下Java中的堆

目录 1- 引言&#xff1a;堆1-1 堆是什么&#xff1f;(What)1-2 为什么用堆&#xff1f;堆的作用 (Why) 2- ⭐核心&#xff1a;堆的原理&#xff08;How&#xff09;2-1 堆的划分2-2 Java 7 与 Java 8 的堆区别 3- 小结&#xff1a;3-1 详细介绍下Java的堆&#xff1f;3-2 JVM …

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一&#xff0c;早在2000年就在香港创业板上市&#xff0c;成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…

Python从0到100(三十九):数据提取之正则(文末免费送书)

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

前端框架学习之 搭建vue2的环境 书写案例并分析

目录 搭建vue的环境 Hello小案例 分析案例 搭建vue的环境 官方指南假设你已经了解关于HTML CSS 和JavaScript的中级知识 如果你刚开始学习前端开发 将框架作为你的第一步可能不是最好的主意 掌握好基础知识再来吧 之前有其他框架的使用经验会有帮助 但这不是必需的 最…

基于双向长短时记忆神经网络(Bi-LSTM)的数据回归预测

代码原理 1.循环神经网络 循环神经网络(Recurrent Neural Network, RNN) 是深度学习领域一类具有内部自连接的神经网络能够学习复杂的矢量到矢量的映射。一个简单的循环神经网络结构&#xff0c;其结构包含三部分&#xff0c;分别为输入层、隐藏层和输出层&#xff0c;如图1所…

元器件基础学习笔记——磁珠

一、磁珠的作用及构造 1.1 磁珠的作用 磁珠是一种用于抑制高频噪声的被动电子组件&#xff0c;通常由铁氧体材料制成&#xff0c;这种材料具有高电阻率和高磁导率&#xff0c;使其能够在高频下有效地将干扰信号以热能的形式消耗掉。在电路设计中&#xff0c;磁珠被广泛用于信号…

红豆Cat 1开源|项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

TCP版本DTU产品项目概述 远程终端单元( Remote Terminal Unit&#xff0c;DTU)&#xff0c;一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元&#xff0c;它将末端检测仪表和执行机构与远程控制中心相连接。 产品定义&功能描述 硬件…

同时用到,网页,java程序,数据库的web小应用

具体实现功能&#xff1a;通过网页传输添加用户的请求&#xff0c;需要通过JDBC来向 MySql 添加一个用户数据 第一步&#xff0c;部署所有需要用到的工具 IDEA(2021.1),Tomcat(9或10),谷歌浏览器&#xff0c;MySql,jdk(17) 第二步&#xff0c;创建java项目&#xff0c;提前部…

Celery 是一个简单、灵活且可靠的分布式系统——python库

目录 引言 Celery 是什么&#xff1f; 安装 Celery 配置 Celery 创建任务 运行 Celery Worker 调用任务 更多示例 示例 1&#xff1a;发送电子邮件 示例 2&#xff1a;图片处理 示例 3&#xff1a;数据处理 结论 引言 今天我们来分享一个超强的 python 库&#xf…

微信小程序下载

首先进入微信网站链接&#xff1a;微信公众平台 (qq.com) 下载开发工具&#xff1a; 下载 / 稳定版更新日志 (qq.com) 下载稳定版

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块&#xff0c;如下图所示&#xff0c;当前块的左上角的位置为(x0, y0)&#xff0c;在参考帧中找到同样位置(x0, y0)的块&#xff0c;根据运动矢量移动到目标参考块&#xff08;左上角位置为&#xff1a;(x1, y1)&#xff09;。 AV1…

C语言之带环链表

带环链表是数据结构链表中的一个经典问题&#xff0c;这里我们研究该问题分为两个方向&#xff1a;链表是否带环、返回链表的入环节点。 下面我们通过两个题目来分析带环链表&#xff1a; 1.判断链表是否带环 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 那么我们…

# Redis 入门到精通(四)-- linux 环境安装 redis

Redis 入门到精通&#xff08;四&#xff09;-- linux 环境安装 redis 一、linux 环境安装 redis – 基于 Linux 安装 redis 1、基于 Center 0S7 或者 unbunt-18.04 安装 Redis 1&#xff09;下载安装包wget http://download.redis.io/releases/redis-?.?.?.tar.gz 如&…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

每日复盘-20240715

20240715 六日涨幅最大: ------1--------300807--------- 天迈科技 五日涨幅最大: ------1--------300807--------- 天迈科技 四日涨幅最大: ------1--------300807--------- 天迈科技 三日涨幅最大: ------1--------300713--------- 英可瑞 二日涨幅最大: ------1--------3007…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域&#xff0c;随着业务逻辑复杂度的提升和系统规模的不断扩大&#xff0c;传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战&#xff0c;组件化开发作为一种高效、灵活的开发模式&#xff0c;受到了越来越多开发者的青睐。本文将结合实践&…

代码随想录训练营第三十六天 1049最后一块石头的重量II 494目标和

第一题&#xff1a; 原题链接&#xff1a;1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 首先确认这是一道01背包问题的题目&#xff0c;如何转换&#xff1a;剩下尽可能小的重量&#xff0c;如何剩下呢&#xff1f;跟分割等和子集很…

基于RAG大模型的变电站智慧运维-第十届Nvidia Sky Hackathon参赛作品

第十届Nvidia Sky Hackathon参赛作品 1. 项目说明 变电站是用于变电的设施&#xff0c;主要的作用是将电压转化&#xff0c;使电能在输电线路中能够长距离传输。在电力系统中&#xff0c;变电站起到了极为重要的作用&#xff0c;它可以完成电能的负荷分配、电压的稳定、容错保…

基坑安全:自动化监测系统的革新力量

在日新月异的基坑工程领域&#xff0c;基坑安全自动化监测系统犹如一位守护者&#xff0c;以其独特的优势&#xff0c;为工程的安全与质量保驾护航。该系统集先进的测量仪器、计算机技术与现代传感技术于一体&#xff0c;对基坑的围护结构及周边环境进行全方位、高精度的实时监…

【C++基础】初识C++(1)

目录 一、认识C 1.1 C 相关概念 1.2 C的发展 1.3 C的关键字 1.4 第一个程序 二、命名空间 2.1 namespace的定义 2.2 命名空间的使用 三、C输入和输出 四、缺省函数 五、函数重载 一、认识C 1.1 C 相关概念 1983年&#xff0c;Bjarne Stroustrup在C语⾔的基础上…