一.select查询
在数据库编程中,SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库管理系统(RDBMS)的标准编程语言。其中,SELECT
是 SQL 中最常用的查询语句,用于从数据库表中检索数据。
下面是一个基本的 SELECT
查询的示例:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT
:指定要检索的列。FROM
:指定要从中检索数据的表。WHERE
(可选):指定用于过滤结果的条件。
示例
假设我们有一个名为 employees
的表,其中包含以下列:id
, name
, age
, 和 department
。
-
检索所有列和所有行:
SELECT * FROM employees;
-
检索特定列:
SELECT name, age FROM employees;
- 添加条件:
检索所有年龄大于 30 的员工的姓名和年龄:
SELECT name, age FROM employees WHERE age > 30;
- 排序结果:
使用 ORDER BY
子句对结果进行排序。默认是升序(ASC),但也可以指定降序(DESC)。
检索所有年龄大于 30 的员工,并按年龄降序排序:
SELECT name, age FROM employees WHERE age > 30 ORDER BY age DESC;
- 限制返回的行数:
使用 LIMIT
子句限制返回的行数。这对于分页特别有用。
检索前 10 个员工的姓名和年龄:
SELECT name, age FROM employees LIMIT 10;
- 使用聚合函数:
SQL 提供了许多聚合函数,如 COUNT()
, SUM()
, AVG()
, MAX()
, 和 MIN()
,用于对一组值执行计算,并返回单个值。
计算 employees
表中的员工数量:
SELECT COUNT(*) FROM employees;
- 分组和过滤分组:
使用 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)
内连接返回两个表中都有的记录