SQL语言(数据库编程)

一.select查询

在数据库编程中,SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库管理系统(RDBMS)的标准编程语言。其中,SELECT 是 SQL 中最常用的查询语句,用于从数据库表中检索数据。

下面是一个基本的 SELECT 查询的示例:

SELECT column1, column2, ...  
FROM table_name  
WHERE condition;
  • SELECT:指定要检索的列。
  • FROM:指定要从中检索数据的表。
  • WHERE(可选):指定用于过滤结果的条件。

示例

假设我们有一个名为 employees 的表,其中包含以下列:idnameage, 和 department

  1. 检索所有列和所有行

SELECT * FROM employees;

 

  1. 检索特定列

SELECT name, age FROM employees;
  1. 添加条件

检索所有年龄大于 30 的员工的姓名和年龄:

SELECT name, age FROM employees WHERE age > 30;
  1. 排序结果

使用 ORDER BY 子句对结果进行排序。默认是升序(ASC),但也可以指定降序(DESC)。

检索所有年龄大于 30 的员工,并按年龄降序排序:

SELECT name, age FROM employees WHERE age > 30 ORDER BY age DESC;
  1. 限制返回的行数

使用 LIMIT 子句限制返回的行数。这对于分页特别有用。

检索前 10 个员工的姓名和年龄:

SELECT name, age FROM employees LIMIT 10;
  1. 使用聚合函数

SQL 提供了许多聚合函数,如 COUNT()SUM()AVG()MAX(), 和 MIN(),用于对一组值执行计算,并返回单个值。

计算 employees 表中的员工数量:

SELECT COUNT(*) FROM employees;
  1. 分组和过滤分组

使用 GROUP BY 子句将数据分成多个逻辑组,并使用 HAVING 子句对分组进行过滤。

按部门分组并计算每个部门的员工数量,仅显示员工数量大于 5 的部门:

SELECT department, COUNT(*) as employee_count  
FROM employees  
GROUP BY department  
HAVING employee_count > 5;

这只是 SELECT 查询的基本用法。SQL 是一个功能强大的语言,还有许多高级功能和技巧可以探索和学习。

二.函数

在数据库编程中,SQL(Structured Query Language)提供了丰富的内置函数,这些函数可以用于在查询中执行各种计算和转换操作。以下是一些常见的SQL函数分类及其示例:

字符串函数

  • CONCAT():连接两个或多个字符串。
    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
  • UPPER() 和 LOWER():将字符串转换为大写或小写。
    SELECT UPPER(name) FROM employees;
  • TRIM():去除字符串前后的空格。
    SELECT TRIM('   Hello World   ') AS trimmed_string;
  • SUBSTRING() 或 SUBSTR():提取字符串的子串。
    SELECT SUBSTRING(name, 1, 3) AS initial_letters FROM employees;
  • LENGTH() 或 CHAR_LENGTH():返回字符串的长度。
    SELECT LENGTH(name) AS name_length FROM employees;

数值函数

  • ABS():返回数值的绝对值。
  • SELECT ABS(-10) AS absolute_value;
  • ROUND():对数值进行四舍五入。
    SELECT ROUND(123.4567, 2) AS rounded_value;
  • CEIL() 或 CEILING():返回大于或等于给定数值的最小整数。
    SELECT CEIL(123.456) AS ceiling_value;
  • FLOOR():返回小于或等于给定数值的最大整数。
    SELECT FLOOR(123.456) AS floor_value;
  • MOD():返回两数相除的余数。
    SELECT MOD(10, 3) AS remainder;

日期和时间函数

  • NOW():返回当前日期和时间。
    SELECT NOW() AS current_datetime;
  • CURDATE():返回当前日期。
    SELECT CURDATE() AS current_date;
  • CURTIME():返回当前时间。
    SELECT CURTIME() AS current_time;
  • DATE_ADD() 和 DATE_SUB():给日期添加或减去指定的时间间隔。
    SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) AS next_day;
  • DATEDIFF():返回两个日期之间的天数差。
    SELECT DATEDIFF('2023-10-23', '2023-10-01') AS days_diff;
  • EXTRACT():从日期或时间值中提取指定的部分(例如年、月、日)。
    SELECT EXTRACT(YEAR FROM CURDATE()) AS current_year;

聚合函数

  • COUNT():计算行数。
    SELECT COUNT(*) FROM employees;
  • SUM():计算数值列的总和。
    SELECT SUM(salary) AS total_salary FROM employees;
  • AVG():计算数值列的平均值。
    SELECT AVG(salary) AS average_salary FROM employees;
  • MAX() 和 MIN():返回数值列的最大值和最小值。
    SELECT MAX(salary) AS max_salary FROM employees;  
    SELECT MIN(salary) AS min_salary FROM employees;
  • GROUP_CONCAT():将多个行的值连接成一个字符串。

    SELECT department, GROUP_CONCAT(name) AS employees_list  
    FROM employees  
    GROUP BY department;

这些只是SQL中可用函数的一部分。不同的数据库管理系统(如MySQL、PostgreSQL、SQL Server等)可能还提供特定于该系统的额外函数。当编写SQL查询时,最好查阅特定数据库的文档以了解可用的函数及其用法。

三.多表查询

在数据库编程中,多表查询是SQL(Structured Query Language)的一个重要组成部分,它允许用户从多个相关的表中检索数据。多表查询通常涉及连接(JOIN)操作,这些操作可以基于两个或多个表之间的相关列来组合数据。以下是一些常见的多表查询类型及其示例:

1. 内连接(INNER JOIN)

内连接返回两个表中都有的记录

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

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

相关文章

说一下HTML5有哪些新特性?

新增语义化标签,音频视频标签 新增DOM查询 --- querySelector() 、 querySelectorAll() canvas绘图 --- 用js绘制图像,可绘制一些基本图形、动画,适合做游戏 SVG绘图 --- 可缩放矢量图形,可绘制一些基本图形,适合做地图…

Flutter APP下载更新

由于我做的项目不是放在APP商店(公司内部用)的,一些flutter的第三方库不合适我,我需要用的是从网上下载再安装(从服务下),网上也找了花了我好几天时间。不全又乱,这我自己做一下备份…

ODI报错

三月 08, 2024 1:20:09 下午 oracle.odi.mapping 信息: Start generation of map physical design: MapPhysicalDesign New_Mapping.物理 三月 08, 2024 1:20:09 下午 oracle.odi.mapping 信息: Finished generation of map physical design: MapPhysicalDesign New_Mapping.物…

HTML—基本介绍

HTML是一种超文本标记语言(HyperText Markup Language),用于创建网页的标记语言超文本:是指页面内可以包含图片、链接、声音、视频等内容标记:HTML富含大量的标签供程序员使用,通过标记符号来规定指定内容的样式 浏览器最终根据不…

HybridCLR热更新介绍

官方文档 参照视频 HybridCLR介绍 HybridCLR是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生c#热更方案 HybridCLR与ToLua/XLua、ILRuntime有什么不同 什么是游戏热更新:有热更的游戏更新流程 游戏热更新的种类 资源热更新:主要…

内存分区与具体介绍:

1. 内存分区图: 2. 分区介绍: 2.1. 栈区: 存放:临时的局部变量、函数的传参 特点:占用内存小,速度快 数据的存储和释放采用栈式结构,先入后出,类似于C下类的构造析构函数 2.2. 堆区&…

在Linux(Ubuntu)中使用终端编译 vscode安装

文章目录 📚在Linux(Ubuntu)中使用终端编译🐇.cpp程序编译🐇.py程序编译🐇查看Python、C编程环境 📚vscode安装 📚在Linux(Ubuntu)中使用终端编译 虚拟机安装…

【硬件工程师面经整理25_AD】

文章目录 1 AD设计电路全流程2 ad和cadence区别-逻辑上的区别 1 AD设计电路全流程 软件AD or 模拟数字? 软件AD:AD设计电路全流程包括以下步骤:选择AD库和添加、画原理图、PCB布局、PCB布线、PCB打样、PCB加工 模拟数字: 需求分…

实现HttpServletRequest下多次获取流数据

HttpServletRequest下多次获取流数据 背景示例错误的尝试全局替换执行顺序 背景 ​众所周知request的输入流只能读取一次,不能重复读取。而在HttpServletRequest中,获取请求体数据的流(通过getInputStream()方法)默认只能被读取一…

移动端精准测试之跨版本覆盖率合并

一,项目简介 在移动端项目测试过程中,尤其是发版前的回归测试阶段,会遇到这样的情况,在测试过程中测试不断地发现问题,开发就进行修改,然后打包测试。而测试完成后呢,业务测试同学想知道整个回归…

Qt 5.14.2 网络编程揭秘:构建高效HTTP客户端与文件下载器

引言 在当今的软件开发世界中,网络通信已成为不可或缺的一部分。Qt,作为一个跨平台的C框架,为我们提供了强大的网络编程能力。本文将带你深入Qt的网络模块,探索如何使用QNetworkAccessManager、QNetworkRequest和QNetworkReply等核…

【HarmonyOS】ArkTS-对象方法

目录 对象方法实例 对象方法 方法作用:描述对象的具体行为 约定方法类型 interface 接口名称 { 方法名: (参数:类型) > 返回值类型 }interface Person{dance: () > voidsing: (song: string) > void}添加方法(箭头函数) let ym: P…

电商数据分析18——电商广告投放的数据分析与优化

目录 写在开头1. 电商广告投放的挑战与机遇1.1 广告投放的主要目标与挑战1.2 广告数据分析的价值 2. 数据分析在广告投放中的应用2.1 目标受众分析与精准定位2.2 广告效果评估与ROI分析2.3 A/B测试与广告内容优化 3. 广告投放优化的实践案例3.1 案例分享:精准定向提…

springboot使用EasyExcel实现Excel导入导出

java生成Excel比较有名的框架有Apache poi、jxl等,但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。 EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。…

微前端之再说无界的使用

运行模式 保活模式单例模式重建模式 生命周期改造 改造入口函数: 应用间通信 原理props 通信 主应用可以通过 props 注入数据和方法:子应用可以通过 $wujie 对象来获取数据: window 通信 主应用调用子应用的全局数据:子应用调用主…

每天学习一个Linux命令之find

每天学习一个Linux命令之find 概述 在Linux系统中,find命令是一个非常强大的工具,用于查找和操作文件和目录。它可以根据一些条件来搜索指定路径下的文件,并执行相应的操作。本篇博客将详细介绍find命令的各个可用选项及其用法。 基本语法…

lvs集群中NAT模式

群集的含义 由多台主机构成,但对外表现为一个整体,只提供一个访问入口,相当于一台大型的计算机。 横向发展:放更多的服务器,有调度分配的问题。 垂直发展:升级单机的硬件设备,提高单个服务器自身功能。 …

如何保证消息不丢之MQ重试机制消息队列

1. 简介 死信队列,简称:DLX,Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另外一个交换机,这个交换机就是DLX 那么什么情况下会成为Dead message&a…

波卡 Alpha 计划启动,呼唤先锋创新者重新定义 Web3 开发

原文:https://polkadot.network/blog/the-polkadot-alpha-program-a-new-era-for-decentralized-building-collaboration/ 编译:OneBlock 区块链领域不断发展,随之而来的是发展和创新机会的增加。而最新里程碑是令人振奋的 Polkadot Alpha …

深入理解nginx一致性哈希负载均衡模块[上]

1. 引言 在现代的网络应用中,负载均衡是一个至关重要的组件。它能够分配流量到多个服务器上,实现高可用性和性能扩展。Nginx是一个广泛使用的高性能Web服务器和反向代理服务器,其负载均衡模块提供了多种算法来实现流量的分发。其中&#xff0…