一.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)
内连接返回两个表中都有的记录