本文目录导读:
《关系型数据库常用查询全解析》
关系型数据库是当今数据存储和管理的重要技术,而查询操作是从数据库中获取所需信息的关键手段,常见的关系型数据库,如MySQL、Oracle、SQL Server等,都遵循SQL(Structured Query Language)标准进行查询操作,以下将详细介绍关系型数据库常用的查询操作。
基本查询语句
1、SELECT语句
图片来源于网络,如有侵权联系删除
- 简单查询是关系型数据库查询的基础,从一个名为“employees”的表中查询所有员工的姓名和年龄。
```sql
SELECT name, age FROM employees;
```
- 这里的“SELECT”关键字用于指定要查询的列,“FROM”关键字后面跟着要查询的表名,如果要查询表中的所有列,可以使用“*”通配符,如“SELECT * FROM employees”。
2、WHERE子句
- WHERE子句用于筛选满足特定条件的记录,查询年龄大于30岁的员工。
```sql
SELECT name, age FROM employees WHERE age > 30;
```
- WHERE子句可以使用各种比较运算符,如“=”(等于)、“<>”或“!=”(不等于)、“>”(大于)、“<”(小于)、“>=”(大于等于)和“<=”(小于等于),还可以使用逻辑运算符“AND”、“OR”和“NOT”来组合多个条件,查询年龄在25到35岁之间的男性员工:
```sql
SELECT name, age, gender FROM employees WHERE age >= 25 AND age <= 35 AND gender = 'male';
```
聚合查询
1、COUNT函数
- COUNT函数用于统计满足条件的记录数量,统计“employees”表中的员工总数。
```sql
SELECT COUNT(*) FROM employees;
```
- 如果只想统计某一列中非空值的数量,可以指定列名,如“SELECT COUNT(name) FROM employees”。
2、SUM、AVG、MIN和MAX函数
- SUM函数用于计算某一列数值的总和,计算员工的工资总和:
```sql
SELECT SUM(salary) FROM employees;
```
图片来源于网络,如有侵权联系删除
- AVG函数计算平均值,如计算平均工资:
```sql
SELECT AVG(salary) FROM employees;
```
- MIN和MAX函数分别用于获取某一列的最小值和最大值,查询最低工资和最高工资:
```sql
SELECT MIN(salary), MAX(salary) FROM employees;
```
分组查询
1、GROUP BY子句
- GROUP BY子句用于将结果集按照一个或多个列进行分组,按照部门对员工进行分组,并统计每个部门的员工数量。
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department;
```
- 当使用GROUP BY子句时,在SELECT语句中只能选择分组列和聚合函数,如果要对分组结果进行进一步筛选,可以使用HAVING子句。
2、HAVING子句
- 查询员工数量大于10人的部门。
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;
```
多表查询
1、内连接(INNER JOIN)
- 内连接用于返回两个表中满足连接条件的记录,有“employees”表和“departments”表,通过“department_id”进行连接,查询员工及其所在部门的信息。
```sql
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;
图片来源于网络,如有侵权联系删除
```
2、外连接(LEFT JOIN、RIGHT JOIN和FULL JOIN)
- LEFT JOIN返回左表中的所有记录以及右表中满足连接条件的记录,查询所有员工及其可能所属的部门信息(即使员工没有分配部门也会显示)。
```sql
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
```
- RIGHT JOIN与LEFT JOIN相反,返回右表中的所有记录以及左表中满足连接条件的记录,FULL JOIN则返回两个表中的所有记录,无论是否满足连接条件。
子查询
1、标量子查询
- 标量子查询是返回单个值的子查询,查询工资高于平均工资的员工。
```sql
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
```
2、列子查询
- 列子查询返回一列值,查询在部门中有最高工资的员工。
```sql
SELECT name, salary, department
FROM employees
WHERE (salary, department) IN (SELECT MAX(salary), department FROM employees GROUP BY department);
```
关系型数据库的查询操作涵盖了从简单的数据检索到复杂的多表关联、聚合和分组操作,熟练掌握这些常用查询技术,可以有效地从数据库中挖掘出有价值的信息,满足各种数据处理和分析的需求,无论是构建小型应用还是大型企业级系统,关系型数据库的查询能力都是至关重要的。
评论列表