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

news2024/11/13 15:25:28

一、增加

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子句专门对聚合数据进行条件筛选,虽然两者都有条件筛选,但是非常不建议混用。

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

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

相关文章

nginx的正向与反向代理

正向代理与反向代理的区别 虽然正向代理和反向代理都涉及代理服务器接收客户端请求并向服务端转发请求&#xff0c;但它们之间存在一些关键的区别&#xff1a; 正向代理&#xff1a; 在正向代理中&#xff0c;代理服务器代表客户端向服务器发送请求&#xff0c;并将服务…

【Linux】安装PHP扩展-igbinary

说明 本文档是在centos7.6的环境下&#xff0c;安装PHP7.4之后&#xff0c;安装对应的PHP扩展igbinary。 一、igbinary简述 igbinary 是一个 PHP 扩展&#xff0c;主要用于序列化和反序列化数据&#xff0c;其设计目的是为了提高序列化过程中的性能和内存效率。 优点&#…

wifi信号处理的CRC8、CRC32

&#x1f9d1;&#x1f3fb;个人简介&#xff1a;具有3年工作经验&#xff0c;擅长通信算法的MATLAB仿真和FPGA实现。代码事宜&#xff0c;私信博主&#xff0c;程序定制、设计指导。 &#x1f680;wifi信号处理的CRC8、CRC32 目录 &#x1f680;1.CRC概述 &#x1f680;1.C…

LeNet入门和Pytorch实现

1. LeNet简介 LeNet是一系列网络的合称&#xff0c;包括LeNet1-LeNet5&#xff0c;是卷积神经网络的开山之作。 文献&#xff1a;LeCun Y, Boser B, Denker J, et al. Handwritten digit recognition with a back-propagation network[J]. Advances in neural information pro…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【查询密钥是否存在(C/C++)】

查询密钥是否存在(C/C) HUKS提供了接口供应用查询指定密钥是否存在。 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 构造对应参数。 指定密钥别名keyAlias&#xff0c;密钥别名最大长度为64字节。查询密钥需要的属性TAG&#…

DZS-12CE/S延时中间继电器 导轨安装 约瑟JOSEF

中间继电器型号&#xff1a; DZS-254 DZS-145 DZS-233 DZS-121 DZS-112 DZS-121 DZS-12BG DZS-12B DZS-213 DZS-234 DZS-11B/Q DZS-226 DZS-652 DZS-17E/302 DZS-12CE/S DZS-821 DZS-226 DZS-249 DZS-254G DZS-12E DZS-895 DZS-234 DZS-655G DZS-651 DZS-115 DZS-…

使用自制Qt工具配合mitmproxy进行网络调试

在软件开发和网络调试过程中&#xff0c;抓包工具是不可或缺的。传统的抓包工具如Fiddler或Charles Proxy通常需要设置系统代理&#xff0c;这会抓到其他应用程序的网络连接&#xff0c;需要设置繁琐的过滤&#xff0c;导致不必要的干扰。为了解决这个问题&#xff0c;我们可以…

一个引发openssl崩溃问题案例

1 背景 最近用libevent写了一个https代理功能&#xff0c;在调研的时候&#xff0c;遇到了一个项目用到了本地多个openssl库引发的ssl握手崩溃问题。 2 开发环境 项目库版本号依赖项libeventlibevent-2.1.8-stableopenssl 1.1openssl1.0u / 1.1.1w / 3.3.1...... 3 问题现象…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

springmvc1

以前的servlet程序&#xff1a; springmvc 不同的处理器&#xff1a;不同的方法或者处理类 所有的请求都会经过dispathcherservlet的doservice方法&#xff1a; mvc原理&#xff1a; 前端控制器&#xff1a;jsp或者什么东西

axios以post方式提交表单形式数据

某些后端框架请求接口必须走form表单提交的那种形式&#xff0c;但前端很少有<form action"接口地址" method"post"></form>这种写法去提交表单数据&#xff0c;所以前端需要用axios模拟一个表单提交接口。 Content-Type 代表发送端&#xff0…

【Unity学习笔记】第二十 · 物理引擎脉络梳理(数值积分、碰撞检测、约束解决)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/139808452 作者&#xff1a;CSDN|Ringleader| 物理引擎综述 物理引擎是利用物理规则模拟物体运动和碰撞的模块&#xff0c;以在重力、弹力、摩擦力等各种力作用下做出真实运动表现&#xff0c;并对碰…

实现将Nginx的每个网站配置单独的nginx配置文件——每个网站单独管理

一、问题描述 Nginx默认地配置文件【nginx.conf】是包含了所有网站的配置内容,如果我们需要配置很多网站的话,就需要在默认的配置文件中给每个网站都添加一条server记录,这样下去nginx默认配置文件会变得很大,很难管理(比如有些网站不使用了,需要注销掉,也需要到该文件操…

YOLOv8白皮书-第Y7周:训练自己的数据集

本文为365天深度学习训练营中的学习记录博客 原作者&#xff1a;K同学啊|接辅导、项目定制 本文可以参考《YOLOv5白皮书-第Y2周:训练自己的数据集》 这次试着用YOLOv8训练自己的数据。 一、配置环境 1、官网下载源码 官网地址:【YOLOv8开源地址】 2、安装需要的环境 配置P…

快捷工具(提升工作效率)

文章目录 一、notepad++设置转json1.下载插件二、截图工具(可以将截图并粘贴到窗口)1.下载安装软件:snipaste三、idea 日志控制台查找日志1.idea 安装插件:Grep console四、beyond compare 4项目工程比较工具1.浏览器下载安装。本地运行五、xampp快速部署本地mysql,tomacat1.浏…

物体检测单阶段SSD

Faster RCNN 数据增广&#xff1a;

外包干了1个月,技术明显退步。。。

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

Redislnsight-v2远程连接redis

redis安装内容添加&#xff1a; Linux 下使用Docker安装redis-CSDN博客 点击添加 添加ip地址&#xff0c;密码&#xff0c;端口号 创建完成 点击查看内容&#xff1a;

python初学者知识点笔记更新

文章目录 1.main函数入口2.__init__.py 文件作用3.from .applications import server解释4.变量没有修饰&#xff0c;直接创建使用1. 内置数据类型和函数2. 类和对象3.总结 5.mod app.__module__6.集合对比区分集合类型&#xff1a;混合集合类型 7.安装包失败 1.main函数入口 …

利用react和chainlit开发大模型结果人工评测平台

项目背景 利用LLM的prompt做了个简单的服务推荐助手&#xff0c;依据用户的提问找出合适的服务项目推荐给的用户。为了测评prompt的效果&#xff0c;使用reactchainlit开发了一个简单的效果测评平台。在该平台上&#xff0c;可以模拟用户向LLM发出问题&#xff0c;并对大模型返…