当前位置: 首页 > news >正文

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

聚合函数通常用于对数据进行统计和聚合操作。以下是一些常见数据库系统(如 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,CASEWHEN 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.xdnf.cn/news/448273.html

相关文章:

  • 【计算机网络】TLS中的对称加密和非对称加密的应用,应对第三方抓包的双向https认证
  • PLM系统如何实现跨部门数据共享?七项核心功能打通信息孤岛
  • Java项目拷打(外卖+点评)
  • lesson01-PyTorch初见(理论+代码实战)
  • AI数字人实现原理
  • std::ratio<1,1000> 是什么意思?
  • PYTHON训练营DAY25
  • WMS仓储管理系统可以跟哪些系统集成
  • ChatPromptTemplate创建方式比较
  • 2025 uniapp的请求封装工具类以及使用【拿来就用】
  • 虚拟机安装CentOS7网络问题
  • Java 日期解析与格式化:从标准格式到自然语言解析
  • 【Bootstrap V4系列】学习入门教程之 组件-分页(Pagination)
  • 如何利用 Java 爬虫获得京东(JD)商品详情:实战指南
  • windows10 安装 QT
  • 国产之光--腾讯云推出AI编程智能助手CodeBuddy
  • HPE ProLiant DL360 Gen11 服务器,配置 RAID 5 教程!
  • Linux篇 第2章Linux基础指令
  • 【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库
  • 序列化和反序列化:从理论到实践的全方位指南
  • c++STL——哈希表封装:实现高效unordered_map与unordered_set
  • teneo自动机器人部署教程
  • 固定步长和变步长的LMS自适应滤波器算法
  • [Spring]-组件的生命周期
  • 【Linux网络】传输层协议TCP
  • TypeScript泛型:从入门到精通的全方位指南
  • Linux下的c/c++开发之操作Redis数据库
  • 上网行为审计软件系统说明书:上网行为审计是什么?是干啥的?哪家好?
  • AI世界的崩塌:当人类思考枯竭引发数据生态链断裂
  • new optimizers for dl