常用SQL命令

news2024/11/25 23:00:42

应用经常需要处理用户的数据,并将用户的数据保存到指定位置,数据库是常用的数据存储工具,数据库是结构化信息或数据的有序集合,几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据,进行数据访问控制,作为测试人员,掌握SQL语言是必要的。

我们一般对数据库的数据表进行增删改查的操作,以下是一些常用的SQL命令。

数据表增加数据

我们可以通过insert into语句向表中插入新记录
使用该命令有2种方式:

命令形式描述
INSERT INTO table_name VALUES (value1,value2,value3,...),(value1_2,value2_2,value3_2,...),...,(value1_n,value2_n,value3_n,...);无需指定要插入数据的列名,只需提供被插入的值即可,但需要注意,被插入的表中有多少个字段(即列),则值就必须有多少个,且需要按照表字段排序进行赋值
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...),(value1_2,value2_2,value3_2,...),...,(value1_n,value2_n,value3_n,...);需要指定列名及被插入的值 ,column与value一一对应,即column1=value1,column2=value2

在这里插入图片描述

数据表删除数据

可以用DELETE命令删除指定的数据(工作中慎用,即使使用,必须检查where语句是否正确)
命令:DELETE FROM table_name WHERE xxx;
在这里插入图片描述

数据表修改数据

如果需要修改表中一些数据,可以使用UPDATE命令

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

在这里插入图片描述

数据表查询数据

数据表操作最多的就是查询了,即SELECT语句,

命令形式描述
SELECT column1, column2, ... FROM table_name [where xxx];查询table_name表符合xxx条件的数据的指定字段值
SELECT * FROM table_name [where xxx];查询table_name表符合xxx条件的数据的所有字段值

在这里插入图片描述

函数

SELECT语句中,经常会用一些函数对数据进行统计,常用函数如下:

函数说明
COUNT()返回符合条件的数据量
MAX()返回最大值
MIN()返回最小值
DISTINCT()在表中,一个列可能会包含多个重复值,该函数返回所在列去重后的所有值
ROUND()把数值字段四舍五入入为指定的小数位数
COUNT()

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

函数说明
SELECT COUNT(*) FROM table_name[where xxx];返回表中符合where条件的数据的总量
SELECT COUNT(column_name) FROM table_name[where xxx];返回表中符合where条件的,且列column_name的值不为NULL的总量,类似于 SELECT COUNT(*) FROM table_name where column_name is not NULL[ and xxx];
SELECT COUNT(condition) FROM table_name[where xxx];返回表中符合where条件,且满足condition!=null的数据量
SELECT COUNT(condition or NULL) FROM table_name[where xxx];返回表中符合where条件,且满足condition的数据量
COUNT(*)和COUNT(column_name)

在这里插入图片描述

COUNT(condition)

前面说了,COUNT()函数是统计指定条件不为NULL的数据,所以对于SELECT COUNT(condition) FROM table_name[where xxx];语句,只要符合where条件的数据,在condition不为NULL,就会被统计进去,有几种比较常用的用法
我们有时会碰到COUNT(数字)的用法,因为统计指定条件不为NULL的数据,而数字肯定不是NULL,所以COUNT(数字)相当于统计符合where条件的数据量
在这里插入图片描述
另一种就是条件表达式,我们需要统计的数据量除了要符合where条件外,还需要符合指定条件
如下图所示,在COUNT()函数里加上了条件表达式,但是条件表达式需要注意的一点是:COUNT()函数是根据值是否为NULL去统计的,所以条件表达式要根据结果为NULL去判断,即如果条件表达式得到的结果是true或false,对于COUNT()函数来说,都是可统计的,因为true和false都不是NULL,所以如果需要统计符合条件的,可以在条件表达式后加上or NULL,如果前面的条件表达式为true时,不会走后面为NULL的设置,如果为false时,则会走后面为NULL的设置
在这里插入图片描述

注意:可能有人会有疑问,如果还需要符合指定条件,为什么不在where条件中加上,而是在count()函数中指定?因为有些查询可能比较复杂,比如需要从不同的维度去查询的时候,where条件会将数据范围固定在某些条件中,count()则可以在指定的符合where条件的数据范围中去统计不同维度的数据,具体按照实际需要去使用即可,如下:
如统计男性中grade>20和grade<=20的数据量
在这里插入图片描述

MAX()和MIN()
命令使用说明
SELECT MAX(column_name) FROM table_name[where xxx];传入的是列名,结果是返回指定列的最大值
SELECT MIN(column_name) FROM table_name[where xxx];传入的是列名,结果是返回指定列的最小值

在这里插入图片描述

DISTINCT()

命令行:SELECT DISTINCT column1, column2, ... FROM table_name[ where xxx];
描述:将column1, column2, …等字段值均不重复的数据返回(即去重)

在这里插入图片描述
有时候DISTINCT()函数会和其他函数如COUNT()、SUM()一起使用
在这里插入图片描述

ROUND()

命令:SELECT ROUND(column_name,decimals) FROM TABLE_NAME;
说明:将column_name列的数值按照指定小数位(decimals)四舍五入

在这里插入图片描述

LIMIT

命令行:select * from table_name [where xxx] limit [offset,] rows
描述:用于限制查询结果返回的数量,常用于分页查询

  • offset:偏移量,即从哪个位置开始,如果未提供,则默认从0开始(数据表查询结果的位置从0开始算),如果offset超过了符合where条件的数据量或表的总数据量,则结果返回为空
  • rows:取行数量,即最多取多少行

注意:并不是所有的数据库都支持LIMIT,也不是所有支持LIMIT语法的数据库,其LIMIT的用法都一致

在这里插入图片描述

ORDER BY

命令行:SELECT column1, column2, ... FROM table_name [where xxx] ORDER BY column1, column2, ... ASC|DESC;
描述:对结果集按照一个列或者多个列进行排序(默认升序排序)

  • ASC:表示按升序排序。
  • DESC:表示按降序排序。

在这里插入图片描述

分组查询GROUP BY和HAVING 子句

分组,即按照指定特征(列),将特征相同(字段值相同)的分为同一个组,不同的特征分为不同组,在数据表中,可以理解为按照某些列中,每一行数据的指定列的值进行区分,若这些列的值相同,则分为同一组,不相同,则不在同一个组。在用来分组的列上我们可以使用 COUNT()、 SUM()、MAX()等函数进行数据统计。

命令行:SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1;

在这里插入图片描述
注意,如果SQL语句里有where子句,GROUP BY是对where子句筛选后的数据进行分组,不是对整张表进行分组
在这里插入图片描述

有时候我们需要对分组后的数据进行过滤,则可以使用HAVINGHAVING是对分组后的数据进行过滤

命令行:SELECT column_1, aggregate_function(column_2) FROM table_name WHERE condition GROUP BY column_1,...,cloumn_n HAVING aggregate_function(column_xx)xxx;

在这里插入图片描述

EXISTS 运算符

命令行:SELECT xx FROM table_name WHERE [not] EXISTS (SELECT xxx);
描述:EXISTS用于判断查询子句是否有记录,如果有至少一条记录存在返回 True,否则返回 False(如果where子句返回True,则显示该数据行,如果where子句返回False,则不显示该数据行)

如下图所示,select 1=2select NULL都会返回1行记录,根据EXISTS子句如果有至少1条记录返回True,得到where子句一直为True,所有数据行被返回;由于select * from demo;返回了空集合(即1条记录都没有),所以EXISTS子句返回了False,即where子句一直为False,所以数据行都没有被返回。
在这里插入图片描述
根据上面的例子,可以很容易理解以下的例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JOIN子句

JOIN相关子句是用于将两个或者多个表结合起来,再进行相关操作

函数说明
inner join内连接,以连接条件(on t1.column1=t2.column1)作为判断,如果column1对应的值在2个表中都有数值,则进行数据行连接并返回,如果在其中一个表中没有对应值,则不返回
left join左连接,以左表为核心进行连接,即以连接条件(on t1.column1=t2.column1)作为判断,如果左表的column1字段值在右表column1字段中有同样的值,则进行数据行连接并返回,如果在右表column1字段中有没有同样的值,则以右表所有字段值为NULL与左表对应数据行进行连接然后返回
right join右连接,以右表为核心进行连接,即以连接条件(on t1.column1=t2.column1)作为判断,如果右表的column1字段值在左表column1字段中有同样的值,则进行数据行连接并返回,如果在左表column1字段中有没有同样的值,则以左表所有字段值为NULL与右表对应数据行进行连接然后返回

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作符

IN和NOT IN

命令说明
SELECT/UPDATE/DELETE xxx WHERE column IN (value1, value2, ...);指定列(column)的值要在IN指定的范围内
SELECT/UPDATE/DELETE xxx WHERE column NOT IN (value1, value2, ...);指定列(column)的值要不在IN指定的范围内

在这里插入图片描述

LIKE

命令:SELECT/UPDATE/DELETE xxx WHERE column LIKE pattern;
描述:column列的值要模糊匹配指定模式

模式设置的有2个较常用的符号:

命令说明
%匹配0个或多个字符
_匹配一个字符

在这里插入图片描述

AS别名

别名,是为了让列名称或表名称的可读性更强,而给字段名称或表取的名称
给列名称取别名命令:SELECT column_name1 AS 别名1, column_name2 AS 别名2,... FROM table_name;
在这里插入图片描述
有时候一个SQL执行语句中有多张表,这个时候就需要给表取别名来增强可读性
给表取别名命令:SELECT 别名.column_name1, 别名.column_name2,... FROM table_name [as] 别名;
在这里插入图片描述

嵌套子查询

嵌套子查询可以简单理解为在where语句中嵌套了select语句

命令行:SELECT/UPDATE/DELETE xxx WHERE column IN/=/like (select column from xxx [where xxx]);
注意:嵌套的select语句查询的结果集必须是指定列column的结果集

在这里插入图片描述

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

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

相关文章

一周零碎时间练习微服务(nacos,rq,springcloud,es等)内容

目录 1 总览1.1 技术架构1.2 其他1.2.1 数据库1.2.2 后端部分1.2.2.1 复习feign1.2.2.2 复习下网关网关的核心功能特性&#xff1a;网关路由的流程断言工厂过滤器工厂全局过滤器 过滤器执行顺序解决跨域问题 1.2.2.3 es部分复习 1.2.3 前端部分 2 day1 配置网关2.1 任务2.2 网关…

机器学习笔记-14

机器学习系统设计 1.导入 以垃圾邮件分类器为例子&#xff0c;当我们想要做一个能够区分邮件是否为垃圾邮件的项目的时候&#xff0c;首先在大量垃圾邮件中选出出现频次较高的10000-50000词作为词汇表&#xff0c;并为其设置特征&#xff0c;在对邮件分析的时候输出该邮件的特…

OpenCV4.9失焦去模糊滤镜(67)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9的基于距离变换和分水岭算法的图像分割(66) 下一篇 :OpenCV4.9去运动模糊滤镜(68) 目标 在本教程中&#xff0c;您将学习&#xff1a; 什么是退化图像模型失焦图像的 PSF 是多少如何恢复…

SQL注入漏洞--报错/union/布尔盲注/时间盲注

之前介绍了数据库的基本操作&#xff0c;今天这篇文章就来实操SQL注入。 阅读本文前可以先看一下基本操作&#xff0c;有助于更换理解本文。。。 https://blog.csdn.net/weixin_60885144/article/details/138356410?spm1001.2014.3001.5502 what SQL---结构化查询语言---S…

ubuntu外置网卡配置AP模式

外置网卡RTL8811CU设置 UBUNTU使用RTL8811CU网卡&#xff08;包含树莓派&#xff09; 外置网卡配置AP模式流程 1. 检查网卡支持情况&#xff08;是否支持AP模式&#xff09; iw list找到以上部分&#xff0c;发现支持AP 2. 安装依赖 sudo apt-get update sudo apt-get in…

Django数据库创建存储及管理

一、什么是ORM Django的ORM(Object-Relational Mapping)是Django框架中一个非常重要的组件。ORM可以让开发者以面向对象的方式操作数据库,而不需要直接编写SQL语句。 具体来说,Django ORM提供了以下功能: 模型定义:开发者可以在Django应用中定义Python类来表示数据库表,这些…

模方试用版水面修整,调整水岸线功能进程缓慢该怎么解决?

答&#xff1a;水面修整&#xff0c;第一个点选取准确的高程位置和水边&#xff0c;其他点就可以包含整个水面范围就行&#xff0c;可以绘制大一些。上图绘制区域没有包含到所有的水面&#xff0c;可以尝试下图的红线绘制区域。 模方是一款针对实景三维模型的冗余碎片、水面残缺…

van-cascader(vant2)异步加载的bug

问题描述&#xff1a;由于一次性返回所有的级联数据的话&#xff0c;数据量太大&#xff0c;接口响应时间太久&#xff0c;因此采用了异步加载的方案&#xff0c;看了vant的官方示例代码&#xff0c;照着改了下&#xff0c;很轻松地实现了功能。正当我感叹世界如此美好的时候&a…

【LeetCode刷题】34. 在排序数组中查找元素的第一个和最后一个位置

1. 题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述 3. 解题方法 找到元素的第一个位置&#xff0c;也就是找大于等于目标的最小值找到元素的最后一个位置&#xff0c;也就是找小于等于目标的最大值可以利用2次二分查找来解决 3.1. 第一次查找 3.2. …

数据分析--客户价值分析RFM(分箱法/标准化)

原数据 原数据如果有异常或者缺失等情况&#xff0c;要先对数据进行处理 &#xff0c;再进行下面的操作&#xff0c;要不然会影响结果的正确性 一、根据RFM计算客户价值并对客户进行细分 1. 数据预处理 1.1 创建视图存储 R、F、M的最大最小值 创建视图存储R 、F、M 的最大最小…

CHiME-8多通道远场语音识别Baseline介绍

语音领域每年都有很多比赛&#xff0c;每个比赛都有自己的侧重点&#xff0c;其中CHiME系列比赛的侧重点就是多通道远场语音识别&#xff0c;与其他的语音识别比赛有所区别的是&#xff0c;CHiME提供分布式麦克风和麦克风阵列数据&#xff0c;这样可以选择合适的前端算法以降低…

【C++ | 语句】条件语句(if、switch)、循环语句(while、do while、for、范围for)、跳转语句、try语句块和异常处理

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a;2024-05-02 2…

【工具类安装教程】IDEA Ui设计器JFormDesigner

1、下载插件 File->Settings->Plugins->JFormDesigner 2、注册教程 2.1注册机下载 链接&#xff1a;https://pan.baidu.com/s/1Rb1EMva5HIYbyBcYgCxIsw 提取码&#xff1a;6666 2.2找到目录 1、找到idea目录 2.3进入plugins目录 找到在JFormDesigner文件夹下lib文…

Flutter笔记:使用Flutter私有类涉及的授权协议问题

Flutter笔记 使用Flutter私有类涉及的授权协议问题 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.cs…

【51单片机LCD1602显示矩阵键盘原始键值】2023-6-1

缘由https://ask.csdn.net/questions/7955623 #include "reg52.h" sbit LCD1602_RS P3^5;//RS端数据命令选择(H/L) sbit LCD1602_RW P3^6;//RW端读写选择(H/L) sbit LCD1602_EN P3^7;//EN端使能信号上升沿25ns void PanDuan1602(/*LCD1602忙判断*/) { LCD1602…

Word文件导出为PDF

Word文件导出为PDF 方法一、使用Word自带另存为PDF功能 打开需要转换为PDF格式的Word文件&#xff0c;依次点击【文件】➡【另存为】➡选择文件保存类型为.PDF 使用这种方法导出的PDF可能存在Word中书签丢失的情况&#xff0c;在导出界面点击&#xff0c;选项进入详细设置 勾…

钉钉手机端调试前端H5项目流程

此流程以Vue项目为例 一、操作步骤 在根目录下 vue.config.js 文件中将 devServer.host 设置为 0.0.0.0 // vue.config.js module.exports {devServer: {host: 0.0.0.0,...},...}本地启动项目&#xff0c;获取 Network App running at:- Local: http://localhost:8080/ -…

C语言--贪吃蛇小游戏

目录 一、Win32API介绍 1.1Win32API 1.2控制台程序 1.3控制台屏幕上的坐标COORD 1.4GetStdHandle 1.5GetConsoleCursorInfo 1.6 CONSOLE_CURSOR_INFO 1.7 SetConsoleCursorInfo 1.8SetConsoleCursorPosition 1.9GetAsyncKeyState 二、贪吃蛇游戏设计与分析 2.1地图 …

设计模式之MVC模式

在编程江湖闯荡多年&#xff0c;我手中打磨过的设计模式多如繁星&#xff0c;但论及经典与实用&#xff0c; MVC&#xff08;Model-View-Controller&#xff09;模式 绝对是个中翘楚&#xff01;它不仅是Web应用的骨架&#xff0c;更是软件架构的智慧结晶。今天&#xff0c;咱们…

『跨端框架』Flutter环境搭建

『跨端框架』Flutter环境搭建 资源网站简介跨平台高性能发展历程跨平台框架的比较成功案例 环境搭建&#xff08;windows&#xff09;基础环境搭建Windows下的安卓环境搭建Mac下的安卓环境配置资源镜像JDKAndroid StudioFlutter SDK问题一问题二问题三修改项目中的Flutter版本 …