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';
