常用SQL查询方法与实例

目录

SELECT查询

INSERT查询

UPDATE查询

DELETE查询

JOIN查询

GROUP BY查询

HAVING查询

窗口函数

公共表表达式(CTEs)

递归查询

透视表

分析函数

解透视

条件聚合

日期函数

合并语句

 情况语句


常用SQL查询方法有以下几种:

  1. SELECT:用于从数据库表中检索数据。
  2. WHERE:用于过滤结果集,只返回满足指定条件的记录。
  3. ORDER BY:用于对结果集进行排序。
  4. GROUP BY:用于将结果集按照一个或多个列进行分组。
  5. HAVING:用于过滤分组后的结果集,只返回满足指定条件的分组。
  6. JOIN:用于连接两个或多个表,根据指定的条件返回匹配的记录。
  7. UNION:用于合并两个或多个SELECT语句的结果集。
  8. LIMIT:用于限制返回的结果集数量。
  9. OFFSET:用于指定返回结果集的起始位置。

SELECT查询

用于从数据表中选择数据。

SELECT first_name, last_name  
FROM employees  
WHERE department = 'HR';

INSERT查询

用于向数据表中插入新数据。

INSERT INTO customers (first_name, last_name, email)  
VALUES ('John', 'Doe', 'john.doe@example.com');

UPDATE查询

用于更新数据表中的数据。

UPDATE employees  
SET salary = 5000  
WHERE employee_id = 1;

DELETE查询

用于从数据表中删除数据。

DELETE FROM orders  
WHERE order_id = 1001;

JOIN查询

用于从多个表中检索相关数据。

SELECT customers.first_name, orders.order_date  
FROM customers  
JOIN orders ON customers.customer_id = orders.customer_id  
WHERE order_date >= '2023-01-01';

GROUP BY查询

用于根据一个或多个列对结果集进行分组。

SELECT department, COUNT(*) as number_of_employees  
FROM employees  
GROUP BY department;

HAVING查询

用于对GROUP BY子句的结果进行过滤。

SELECT department, AVG(salary) as average_salary  
FROM employees  
GROUP BY department  
HAVING average_salary > 5000;

选择所有列

SELECT * FROM students;
这将从students表中选择所有记录的所有列。

选择特定列并重命名

SELECT name AS 姓名, age FROM students;
此查询仅选择name和age列,并将name列在结果集中重命名为姓名。

条件查询(等于)

SELECT * FROM students WHERE age = 20;
查询年龄为20岁的学生的所有信息。

条件查询(范围)

SELECT * FROM students WHERE age BETWEEN 20 AND 30;
查询年龄在20到30岁之间的所有学生信息。

模糊查询(LIKE关键字)

SELECT * FROM students WHERE name LIKE '李%';
查找所有名字以“李”开头的学生信息。

使用IN关键字限定多个值

SELECT * FROM students WHERE native IN ('湖南', '四川');
查找来自湖南或四川的学生的所有信息。

连接查询

SELECT s.id, s.name, c.course_name 
FROM students AS s 
LEFT JOIN courses AS c ON s.course_id = c.id;
连接students和courses表,显示每个学生的ID、姓名及其选修的课程名称。

空值判断

SELECT * FROM students WHERE gender IS NULL;
查找gender字段为空的所有学生记录。

排序查询

SELECT name, age FROM students ORDER BY age DESC;
查询所有学生的名字和年龄,并按年龄降序排列。

分组与聚合查询

SELECT gender, COUNT(*) as total_students 
FROM students 
GROUP BY gender;

窗口函数

窗口函数是指在SQL查询中对一组相关行进行聚合或运算操作的函数。窗口函数可以在不改变基本表的情况下,为查询结果添加额外的计算列。举个例子,使用SUM()函数与OVER()子句计算销售额的运行总和。

SELECT date, sales,SUM(sales) OVER (ORDER BY date) AS running_total
FROM sales_data;

公共表表达式(CTEs)

CTE(Common Table Expressions,公共表表达式)是一种在SQL查询中创建临时结果集的方法,可以被多次引用,提高查询的可读性和可维护性。以下是如何使用CTE计算每个产品类别的总收入的示例。

WITH category_revenue AS (SELECT category, SUM(revenue) AS total_revenueFROM salesGROUP BY category
)
SELECT * FROM category_revenue;

递归查询

递归查询能够帮助分析师遍历层次化数据结构,如组织图或物料清单。假设这里有一个表示员工关系的表,想查找某个经理的所有下属:

WITH RECURSIVE subordinates AS (SELECT employee_id, name, manager_idFROM employeesWHERE manager_id = 'manager_id_of_interest'UNION ALLSELECT e.employee_id, e.name, e.manager_idFROM employees eJOIN subordinates s ON e.manager_id = s.employee_id
)
SELECT * FROM subordinates;

透视表

透视表将行转换为列,以表格形式汇总数据。比如,有一个包含销售数据的表格,想通过数据透视来显示每个产品在不同月份的总销售额:

SELECT *
FROM (SELECT product, month, salesFROM sales_data
) AS source_table
PIVOT (SUM(sales)FOR month IN ('Jan', 'Feb', 'Mar', 'Apr', 'May')
) AS pivot_table;

分析函数

分析函数根据一组记录计算汇总值。例如,可以使用 ROW_NUMBER() 函数为数据集中的每条记录分配唯一的行号。

SELECT customer_id, order_id,ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date) AS order_rank
FROM orders;

解透视

解透视是透视操作的反向操作,解透视是将一张表中的列转换为行,而透视是将行转换为列。比如,这里有一个按月汇总销售数据的表格,想取消透视以分析随时间变化的趋势。

SELECT product, month, sales
FROM (SELECT 'Jan' AS month, product, sales_jan AS sales FROM sales_dataUNION ALLSELECT 'Feb' AS month, product, sales_feb AS sales FROM sales_dataUNION ALLSELECT 'Mar' AS month, product, sales_mar AS sales FROM sales_data
) AS unpivoted_sales;

条件聚合

条件聚合是指根据指定条件应用条件聚合函数。例如,如果想计算老客户订单的平均销售额:

SELECT customer_id, AVG(CASE WHEN order_count > 1 THEN order_total ELSE NULL END) AS avg_sales_repeat_customers
FROM (SELECT customer_id, COUNT(*) AS order_count, SUM(order_total) AS order_totalFROM ordersGROUP BY customer_id
) AS customer_orders;

日期函数

SQL中的日期函数支持操纵和提取与日期相关的信息。例如,可以使用DATE_TRUNC()函数按月对销售数据进行分组。

SELECT DATE_TRUNC('month', order_date) AS month, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY DATE_TRUNC('month', order_date);

合并语句

合并语句(也称为 UPSERT 或 ON DUPLICATE KEY UPDATE)可让分析师根据与源表的连接结果在目标表中插入、更新或删除记录。比如,要同步两个包含客户数据的表。

MERGE INTO target_table AS t
USING source_table AS s
ON t.customer_id = s.customer_id
WHEN MATCHED THENUPDATE SET t.name = s.name, t.email = s.email
WHEN NOT MATCHED THENINSERT (customer_id, name, email) VALUES (s.customer_id, s.name, s.email);

 情况语句

情况语句支持在SQL查询中应用条件逻辑。例如,使用情况语句根据客户的总购买金额对其进行分类。

SELECT customer_id,CASEWHEN total_purchase_amount >= 1000 THEN 'Platinum'WHEN total_purchase_amount >= 500 THEN 'Gold'ELSE 'Silver'END AS customer_category
FROM (SELECT customer_id, SUM(order_total) AS total_purchase_amountFROM ordersGROUP BY customer_id
) AS customer_purchases;

其他代码:

JOIN:查询员工及其所属部门的信息
SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.id;

UNION:查询男性员工和女性员工的信息
SELECT name, gender FROM employees WHERE gender = 'M' UNION SELECT name, gender FROM employees WHERE gender = 'F';

LIMIT:查询年龄最大的前5名员工信息
SELECT * FROM employees ORDER BY age DESC LIMIT 5;

OFFSET:查询第6到第10名员工的信息
SELECT * FROM employees LIMIT 5 OFFSET 5;

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

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

相关文章

【无监督学习之聚类】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱1. K-Means聚类2. 层次聚类(Hierarchical Clustering)3. DBSCAN(Density-Based Spatial Clustering of Applications with Noise)4. 谱聚类(Spect…

一个实时波形图的封装demo(QT)(qcustomplot)

前言: 封装的一个实时波形图的类,可以直接提升使用。 提供了接口,可以更改颜色,样式,等等 参考: Qt Plotting Widget QCustomPlot - Introduction 另外参考了一个大神的作品,链接没找到。 项目…

前端面试练习24.2.29

一.关于Vuex说法 Vuex可以用来管理数据 Vuex也可以实现组件间的传值 mutation中的方法按照规定最好不要涉及异步方法 Vuex的属性有 state 存储状态 mutations 同步函数 actions 异步函数,并且调用的事mutations getters 派生状态,类似与vue中的c…

嘎嘎快充云快充互联互通系统使用说明书

嘎嘎快充云快充互联互通系统 V1.0.0 使用手册 (V1.0) 二○二四年一月 目录 一、软件产品概述 2 二、系统要求及运行环境 2 1、 系统要求 2 2、 运行环境 3 三、软件操作和说明 3 1、 软件的安装 3 2、 软件启动 8 3、 软件工作界面 8 4、 软件功能介绍…

#13Maven打包生成MD5校验文件的两种方式

目录 1、checksum-maven-plugin 2、maven-antrun-plugin 1、checksum-maven-plugin <plugin><groupId>net.ju-n.maven.plugins</groupId><artifactId>checksum-maven-plugin</artifactId><version>1.2</version><executions&g…

线路覆冰加重导线舞动风险,输电线路导线舞动在线监测装置保障运行安全

2月21日&#xff0c;山东烟台迎来强降雪天气&#xff0c;国网烟台供电公司紧急部署&#xff0c;组织运维人员联合智能巡检设备对重要变电站和输电线路进行巡视&#xff0c;确保电网安全稳定运行。 “雨雪天气给输电线路造成一定的影响&#xff0c;尤其是雨雪加上冰冻&#xff0…

NIST正式发布网络安全框架 2.0最终版:相比之前两个版本的六大重大变化

2月26日美国国家标准与技术研究院 (NIST) 正式发布了更新后的网络安全框架 (CSF)&#xff0c;这是其降低网络安全风险的里程碑式指导文件。新的 2.0 版本专为所有行业部门和组织类型而设计&#xff0c;从最小的学校和非营利组织到最大的机构和公司&#xff0c;无论其网络安全的…

Nodejs+vue汽车保养美容管理系统vscode前后端分离项目

汽车美容保养管理系统后台采用nodejs语言开发,前台页面和后台管理页面使用vue等技术开发,使用MySql作为数据持久化存储工具对汽车美容保养管理系统的用户等角色权限对应的功能等进行存储。采用vsocde集成IDE对汽车美容保养管理系统统进行开发,整合系统的各个模块。 拟开发的汽车…

Kivy和BeeWare 开发APP的优缺点,及其发展历史

Kivy和BeeWare都是流行的Python框架&#xff0c;用于开发移动应用。它们各自有独特的特点和优势&#xff0c;同时也面临一些挑战和限制。下面是对这两个框架的开发优缺点及其发展历史的总结。 Kivy 发展历史 起源&#xff1a;Kivy诞生于2010年&#xff0c;旨在提供一个用于P…

[回归指标]R2、PCC(Pearson’s r )

R2相关系数 R2相关系数很熟悉了&#xff0c;就不具体解释了。 皮尔逊相关系数&#xff08;PCC&#xff09; 皮尔逊相关系数是研究变量之间线性相关程度的量&#xff0c;R方和PCC是不同的指标。R方衡量x和y的接近程度&#xff0c;PCC衡量的是x和y的变化趋势是否相同。R方是不…

Mac OS 制作可引导安装器并重新安装系统

Mac 使用 U盘或移动固态硬盘制作可引导的安装器&#xff08;以 Monterey 为例&#xff09; 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分&#xff0c;称为分区。分区也称为容器&#xff0c;不同…

以太坊学习工具推荐

以太坊学习工具推荐 主网浏览器Sepolia测试网浏览器ETH官方网站Raw Transaction Decode Toolweb3.pyweb3.jsSolidity 学习文档

Windows PowerShell 命令行历史记录补全

Windows 命令行历史记录补全 使用 powershell 安装PSReadLine 2.1.0 Install-Module PSReadLine -RequiredVersion 2.1.0检查是否存在配置文件 Test-path $profile # 为 false 则执行命令创建 New-item –type file –force $profile编辑配置文件 notepad $profile# 输入如下…

备战蓝桥杯---树形DP基础3

上一次我们讲了二叉苹果树&#xff0c;现在我们加一点难度&#xff0c;从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP&#xff0c;我们其实可以发现&#xff0c;我们可以用类似背包的思想求解&#xff0c;这就是所谓的树上背包。 我们先加进第一个儿子来…

鸿蒙Harmony应用开发—ArkTS声明式开发(挂载卸载事件)

挂载卸载事件指组件从组件树上挂载、卸载时触发的事件。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 onAppear onAppear(event: () > void) 组件挂载显示时触发此回调。 卡片能力&#xff1a; …

如何入门深度学习

入门深度学习需要一步步学习基础知识&#xff0c;积累实践经验&#xff0c;并持续关注领域的最新进展。以下是详细的入门指南&#xff1a; 1. 掌握基本数学和编程知识&#xff1a; 线性代数&#xff1a;深度学习涉及大量矩阵运算&#xff0c;因此了解线性代数的基本概念和操作…

qt写代码判断一个数字是否可以被7整除

普通小程序cgtk可以跨平台&#xff0c;c跨平台用qt比较方便&#xff0c;deepinlinuxv20.9应用商店安装dtk-ide&#xff0c;就可以开发qt了&#xff0c;用上dtk模板就是dtk应用&#xff0c;qt模板就是qt跨平台应用 #include "mainwindow.h" #include "ui_mainwi…

MySQL DEFINER详解

在 MySQL 数据库中&#xff0c;在创建视图及函数的时候&#xff0c;通常会用到definer。并且在迁移视图或函数过程中&#xff0c;该选项经常会引起报错。本篇文章主要介绍下 MySQL 中 definer 的含义及作用。 1. DEFINER简单介绍 下述是创建视图的基础语法 CREATE[OR REPLAC…

go语言魔法技能go:linkname

我们在看Go语言的源码时&#xff0c;经常会看到一些特别的注释&#xff0c;比如&#xff1a; //go:build //go:linkname //go:nosplit //go:noescape //go:uintptrescapes //go:noinline //go:nowritebarrierrec等等&#xff0c;这些特别的注释其实是Go编译器的指示指令。这里…

VUE实现Office文档在线编辑,支持doc/docx、xls/xlsx、ppt/pptx、pdf等

1.微软提供的在线Office预览&#xff08;只能预览&#xff0c;不能编辑&#xff09; https://view.officeapps.live.com/op/view.aspx?src服务器上文档地址&#xff08;http开头&#xff09; 2.国内在线Office方案&#xff1a; 腾讯文档、石墨文档、飞书 优势&#xff1a;跨…