MySQL知识点总结(持续更新)

news2025/5/15 22:11:39

聚合函数通常用于对数据进行统计和聚合操作。以下是一些常见数据库系统(如 MySQL、PostgreSQL、Oracle、SQL Server 等)中常用的聚合函数:

常见的数据库聚合函数:

  • COUNT():计算指定列中非空值的数量

    SELECT COUNT(*) FROM table_name;
  • SUM():计算指定列值的总和

    SELECT SUM(column_name) FROM table_name;
  • AVG():计算指定列值的平均值

    SELECT AVG(column_name) FROM table_name;
  • MAX():找出指定列中的最大值。

    SELECT MAX(column_name) FROM table_name;
  • MIN():找出指定列中的最小值

    SELECT MIN(column_name) FROM table_name;

这些函数在不同的数据库系统中可能会有细微的语法或功能差异,但基本功能是一致的。它们通常与 GROUP BY 语句一起使用,以便对分组后的数据进行聚合操作。

SQL 查询中常用的关键词可以根据功能分为以下几类:

数据定义语言(DDL)

用于定义和管理数据库结构:

  • CREATE:创建数据库或数据库对象(如表、视图、索引等)。

  • ALTER:修改数据库或数据库对象的结构。

  • DROP:删除数据库或数据库对象。

  • TRUNCATE:删除表中的所有数据,但保留表结构。

数据操作语言(DML)

用于操作数据库中的数据:

  • SELECT:查询数据。

  • INSERT:插入新数据。

  • UPDATE:更新现有数据。

  • DELETE:删除数据。

数据控制语言(DCL)

用于管理数据库的访问权限:

  • GRANT:授予用户对数据库的访问权限。

  • REVOKE:撤销用户的访问权限。

数据库事务控制语言(TCL)

用于管理数据库事务:

  • COMMIT:提交事务,使所有更改永久生效。

  • ROLLBACK:回滚事务,撤销所有未提交的更改。

  • SAVEPOINT:设置事务的保存点,以便在发生错误时可以回滚到该点。

其他常见关键词

1. 数据查询与过滤

  • SELECT:查询数据

    -- 查询所有列
    SELECT * FROM employees;
    
    -- 查询特定列
    SELECT employee_id, first_name, last_name, salary FROM employees;
  • WHERE:条件过滤

    -- 等值查询
    SELECT * FROM employees WHERE department_id = 5;
    
    -- 范围查询
    SELECT * FROM employees WHERE salary BETWEEN 5000 AND 10000;
    
    -- 模糊查询
    SELECT * FROM employees WHERE last_name LIKE 'A%';
    
    -- 多条件查询
    SELECT * FROM employees WHERE department_id = 5 AND salary > 5000;
  • HAVING:聚合条件过滤

    SELECT department_id, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department_id
    HAVING AVG(salary) > 5000;

2. 数据排序

  • ORDER BY:排序

    -- 单列排序
    SELECT * FROM employees ORDER BY salary DESC;
    
    -- 多列排序
    SELECT * FROM employees ORDER BY department_id ASC, salary DESC;

3. 数据分组

  • GROUP BY:分组

    -- 按部门分组,计算每个部门的员工数
    SELECT department_id, COUNT(*) AS employee_count
    FROM employees
    GROUP BY department_id;
    
    -- 按部门分组,计算每个部门的平均工资
    SELECT department_id, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department_id;

4. 连接操作

  • INNER JOIN:内连接

    SELECT employees.employee_id, employees.first_name, departments.department_name
    FROM employees
    INNER JOIN departments ON employees.department_id = departments.department_id;
  • LEFT JOIN:左连接

    SELECT employees.employee_id, employees.first_name, departments.department_name
    FROM employees
    LEFT JOIN departments ON employees.department_id = departments.department_id;
  • RIGHT JOIN:右连接

    SELECT employees.employee_id, employees.first_name, departments.department_name
    FROM employees
    RIGHT JOIN departments ON employees.department_id = departments.department_id;
  • FULL JOIN:全连接

    SELECT employees.employee_id, employees.first_name, departments.department_name
    FROM employees
    FULL JOIN departments ON employees.department_id = departments.department_id;

5. 子查询

  • IN:值在子查询结果集中

    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = 1001);
  • EXISTS:子查询返回至少一行

    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE EXISTS (SELECT 1 FROM departments WHERE department_id = employees.department_id AND location_id = 1001);
  • ANY:与子查询返回的值进行比较,满足任意一个条件

    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary > ANY (SELECT salary FROM employees WHERE department_id = 5);
  • ALL:与子查询返回的值进行比较,满足所有条件

     
    SELECT employee_id, first_name, last_name
    FROM employees
    WHERE salary > ALL (SELECT salary FROM employees WHERE department_id = 5);

6. 表达式和条件判断

  • AS:指定别名

    SELECT employee_id AS id, first_name AS fname, last_name AS lname, salary * 12 AS annual_salary
    FROM employees;
  • CASE:条件表达式

    SELECT employee_id, first_name, last_name, salary,
      CASE
        WHEN salary > 10000 THEN 'High'
        WHEN salary BETWEEN 5000 AND 10000 THEN 'Medium'
        ELSE 'Low'
      END AS salary_level
    FROM employees;

7. 事务控制

  • COMMIT:提交事务

    -- 提交事务,使所有更改永久生效
    COMMIT;
  • ROLLBACK:回滚事务

    -- 回滚事务,撤销所有未提交的更改
    ROLLBACK;
  • SAVEPOINT:设置事务的保存点

    -- 设置保存点
    SAVEPOINT sp1;
    
    -- 执行一些操作
    UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;
    
    -- 回滚到保存点
    ROLLBACK TO SAVEPOINT sp1;

8. 其他常用操作

  • UNION:合并两个或多个 SELECT 语句的结果集(去重)

    SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 5
    UNION
    SELECT employee_id, first_name, last_name FROM employees WHERE salary > 10000;
  • UNION ALL:合并两个或多个 SELECT 语句的结果集(不去重)

    SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 5
    UNION ALL
    SELECT employee_id, first_name, last_name FROM employees WHERE salary > 10000;
  • VIEW:创建或替换视图

    -- 创建视图
    CREATE VIEW high_salary_employees AS
    SELECT employee_id, first_name, last_name, salary
    FROM employees
    WHERE salary > 10000;
    
    -- 查询视图
    SELECT * FROM high_salary_employees;
  • INDEX:创建或删除索引

    -- 创建索引
    CREATE INDEX idx_employee_last_name ON employees (last_name);
    
    -- 删除索引
    DROP INDEX idx_employee_last_name;
  • EXPLAIN:显示 SQL 语句的执行计划

    EXPLAIN SELECT * FROM employees WHERE last_name = 'Smith';

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

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

相关文章

全新开发-iVX图形化编程VS完整IDE

本文针对传统软件开发的效率与可控性矛盾,系统阐释 iVX"图形化编程 全栈 IDE" 的复合架构如何突破行业瓶颈。通过 "可视化建模 - 标准代码生成 - 独立运行" 的技术闭环,iVX 实现开发效率提升 60% 与源码完全可控的双重目标。研究揭…

【Linux系列】跨平台安装与配置 Vim 文本编辑器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

十天学会嵌入式技术之51单片机—day-10

第 20 章 18B20 温度检测 20.1 18B20 概述 20.1.1 简介 18B20 是一种常用的数字温度传感器,广泛应用于环境监测、工业控制、家居自动化 和设备温度监控等领域。 20.1.2 引脚功能 18B20 引脚功能如下图所示,需要特别强调的是,18B20 采用 1-…

【C++】17. 多态

上一章节中我们讲了C三大特性的继承,这一章节我们接着来讲另一个特性——多态 1. 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运行时多态(动态多态),这里我们重点讲运行时多态…

家用或办公 Windows 电脑玩人工智能开源项目配备核显的必要性(含 NPU 及显卡类型补充)

一、GPU 与显卡的概念澄清 首先需要明确一个容易误解的概念:GPU 不等同于显卡。 显卡和GPU是两个不同的概念。 【概念区分】 在讨论图形计算领域时,需首先澄清一个常见误区:GPU(图形处理单元)与显卡(视…

实现一个简单的 TCP 客户端/服务器

注意: TCP 三次握手建立连接建立连接后,TCP 提供全双工的通信服务,也就是在同一个连接中,通信双方 可以在同一时刻同时写数据,相对的概念叫做半双工,同一个连接的同一时刻,只能由一方来写数据T…

对抗帕金森:在疾病阴影下,如何重掌生活主动权?

帕金森病,一种影响全球超 1000 万人的神经退行性疾病,正无声地改变着患者的生活轨迹。随着大脑中多巴胺分泌减少,患者逐渐出现肢体震颤、肌肉僵硬、步态迟缓等症状,甚至连扣纽扣、端水杯这类日常动作都变得艰难。更棘手的是&#…

鸿蒙 UIAbility组件与UI的数据同步和窗口关闭

使用 EventHub 进行数据通信 Stage模型概念图 根据 Stage 模型概念图 UIAbility 先于 ArkUI Page 创建 所以,事件要先 .on 订阅 再 emit 发布 假如现在有页面 Page1 和他的 UIAbility // src/main/ets/page1ability/Page1Ability.ets onCreate(want: Want, laun…

Vue3学习(组合式API——计算属性computed详解)

目录 一、计算属性computed。 Vue官方提供的案例。(普通写法与计算属性写法) 使用计算属性computed重构——>简化描述响应式状态的复杂逻辑。 &#xff08;1&#xff09;计算属性computed小案例。 <1>需求说明。&#xff08;筛选原数组——>得新数组&#xff09; &…

Android Studio 模拟器配置方案

Android Studio 模拟器配置方案 1.引言2.使用Android Studio中的模拟器3.使用国产模拟器1.引言 前面介绍【React Native基础环境配置】的时候需要配置模拟器,当时直接使用了USB调试方案,但是有些时候可能不太方便连接手机调试,比如没有iPhone调不了ios。接下来说明另外两种可…

k8s中ingress-nginx介绍

1. 介绍 Ingress是一种Kubernetes资源&#xff0c;用于将外部流量路由到Kubernetes集群内的服务。与NodePort相比&#xff0c;它提供了更高级别的路由功能和负载平衡&#xff0c;可以根据HTTP请求的路径、主机名、HTTP方法等来路由流量。可以说Ingress是为了弥补NodePort在流量…

字节DeerFlow开源框架:多智能体深度研究框架,实现端到端自动化研究流程

&#x1f98c; DeerFlow DeerFlow&#xff08;Deep Exploration and Efficient Research Flow&#xff09;是一个社区驱动的深度研究框架&#xff0c;它建立在开源社区的杰出工作基础之上。目标是将语言模型与专业工具&#xff08;如网络搜索、爬虫和Python代码执行&#xff0…

算法第十八天|530. 二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

530. 二叉搜索树的最小绝对差 题目 思路与解法 第一想法&#xff1a; 一个二叉搜索树的最小绝对差&#xff0c;从根结点看&#xff0c;它的结点与它的最小差值一定出现在 左子树的最右结点&#xff08;左子树最大值&#xff09;和右子树的最左结点&#xff08;右子树的最小值…

微服务调试问题总结

本地环境调试。 启动本地微服务&#xff0c;使用公共nacos配置。利用如apifox进行本地代码调试解决调试问题。除必要的业务微服务依赖包需要下载到本地。使用mvn clean install -DskipTests进行安装启动前选择好profile环境进行启动&#xff0c;启动前记得mvn clean清理项目。…

美SEC主席:探索比特币上市证券交易所

作者/演讲者&#xff1a;美SEC主席Paul S. Atkins 编译&#xff1a;Liam 5月12日&#xff0c;由美国SEC加密货币特别工作组发起的主题为《资产上链&#xff1a;TradFi与DeFi的交汇点》系列圆桌会议如期举行。 会议期间&#xff0c;现任美SEC主席Paul S. Atkins发表了主旨演讲。…

MySQL Join连接算法深入解析

引言 在关系型数据库中&#xff0c;Join操作是实现多表数据关联查询的关键手段&#xff0c;直接影响查询性能和资源消耗。MySQL支持多种Join算法&#xff0c;包括经典的索引嵌套循环连接&#xff08;Index Nested-Loop Join&#xff09;、块嵌套循环连接&#xff08;Block Nes…

http请求卡顿

接口有时出现卡顿&#xff0c;而且抓包显示有时tcp目标机器没有响应&#xff0c; 但nginx和java应用又没有错误日志&#xff0c;让人抓耳挠腮&#xff0c;最终还是请运维大哥帮忙&#xff0c;一顿操作后系统暂时无卡顿了&#xff0c;佩服的同时感觉疑惑到底调整了啥东…

vite+vue建立前端工程

​ 参考 开始 | Vite 官方中文文档 VUE教程地址 https://cn.vuejs.org/tutorial/#step-1 第一个工程 https://blog.csdn.net/qq_35221977/article/details/137171497 脚本 chcp 65001 echo 建立vite工程 set PRO_NAMEmy-vue-appif not exist %PRO_NAME% (call npm i…

vue使用路由技术实现登录成功后跳转到首页

文章目录 一、概述二、使用步骤安装vue-router在src/router/index.js中创建路由器&#xff0c;并导出在vue应用实例中使用router声明router-view标签&#xff0c;展示组件内容 三、配置登录成功后跳转首页四、参考资料 一、概述 路由&#xff0c;决定从起点到终点的路径的进程…

day20-线性表(链表II)

一、调试器 1.1 gdb&#xff08;调试器&#xff09; 在程序指定位置停顿 1.1.1 一般调试 gcc直接编译生成的是发布版&#xff08;Release&#xff09; gcc -g //-g调式版本&#xff0c;&#xff08;体积大&#xff0c;内部有源码&#xff09;&#xff08;DeBug&#…