首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第1章 数据库和SQL
1-1 数据库是什么
我们身边的数据库
为什么DBMS那么重要
DBMS的种类
1-2 数据库的结构
RDBMS的常见系统结构
表的结构
1-3 SQL概要
标准SQL
SQL语句及其种类
SQL的基本书写规则
1-4 表的创建
表的内容的创建
数据库的创建(CREATE DATABASE语句)
表的创建(CREATE TABLE语句)
命名规则
数据类型的指定
约束的设置
1-5 表的删除和更新
表的删除(DROP TABLE语句)
表定义的更新(ALTER TABLE语句)
向Product表中插入数据
第2章 查询基础
2-1 SELECT语句基础
列的查询
查询出表中所有的列
为列设定别名
常数的查询
从结果中删除重复行
根据WHERE语句来选择记录
注释的书写方法
算术运算符
需要注意NULL
比较运算符
对字符串使用不等号时的注意事项
不能对NULL使用比较运算符
2-3 逻辑运算符
NOT运算符
AND运算符和OR运算符
通过括号强化处理
逻辑运算符和真值
含有NULL时的真值
第3章 聚合与排序
3-1 对表进行聚合查询
聚合函数
计算表中数据的行数
计算NULL之外的数据的行数
计算合计值
计算平均值
计算值和小值
使用聚合函数删除重复值(关键字DISTINCT)
3-2 对表进行分组
GROUP BY子句
聚合键中包含NULL的情况
使用WHERE子句时GROUP BY的执行结果
与聚合函数和GROUP BY子句有关的常见错误
3-3 为聚合结果指定条件
HAVING子句
HAVING子句的构成要素
相对于HAVING子句,更适合写在WHERE子句中的条件
3-4 对查询结果进行排序
ORDER BY子句
指定升序或降序
指定多个排序键
NULL的顺序
在排序键中使用显示用的别名
ORDER BY子句中可以使用的列
不要使用列编号
当前位置:
首页>>
技术小册>>
SQL基础教程(上)
小册名称:SQL基础教程(上)
### 第2章 查询基础 在数据库的世界里,查询是用户与数据交互的桥梁,是提取、分析、展示数据的关键步骤。本章将带你踏入SQL查询的基础殿堂,从最简单的SELECT语句开始,逐步掌握条件筛选、排序、分组、聚合以及连接查询等核心技能。无论你是数据库初学者还是希望巩固基础的专业人士,本章都将为你提供坚实的理论基础和实践指南。 #### 2.1 SELECT语句简介 一切查询的起点都是`SELECT`语句。`SELECT`语句用于从数据库表中选择数据,其基本语法结构如下: ```sql SELECT column1, column2, ... FROM table_name; ``` 这里,`column1, column2, ...`是你希望从`table_name`表中检索的列名。如果省略列名,将返回表中的所有列。 **示例**:假设我们有一个名为`Employees`的表,包含员工的ID、姓名、部门ID和职位等信息,我们想获取所有员工的姓名和职位,可以这样写: ```sql SELECT Name, Position FROM Employees; ``` #### 2.2 条件筛选:WHERE子句 当需要从表中检索满足特定条件的行时,`WHERE`子句就派上了用场。它允许你指定一个或多个条件来过滤查询结果。 **语法**: ```sql SELECT column1, column2, ... FROM table_name WHERE condition; ``` **示例**:查询`Employees`表中部门ID为3的所有员工的姓名和职位: ```sql SELECT Name, Position FROM Employees WHERE DepartmentID = 3; ``` #### 2.3 数据排序:ORDER BY子句 有时,我们希望查询结果按照一定的顺序显示,这时可以使用`ORDER BY`子句。你可以根据一个或多个列对结果进行升序(ASC)或降序(DESC)排序。 **语法**: ```sql SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...; ``` **示例**:查询所有员工信息,并按职位降序排列: ```sql SELECT * FROM Employees ORDER BY Position DESC; ``` #### 2.4 聚合函数与GROUP BY子句 当需要对数据进行汇总统计时,如计算平均值、最大值、最小值、求和或计数等,聚合函数(如`COUNT()`, `MAX()`, `MIN()`, `SUM()`, `AVG()`)就显得尤为重要。而`GROUP BY`子句则用于将查询结果集中的行分组,以便对每个组应用聚合函数。 **语法**: ```sql SELECT column1, AGGREGATE_FUNCTION(column2) FROM table_name WHERE condition GROUP BY column1; ``` **示例**:查询每个部门的员工数量: ```sql SELECT DepartmentID, COUNT(*) AS NumberOfEmployees FROM Employees GROUP BY DepartmentID; ``` #### 2.5 去重:DISTINCT关键字 当查询结果中存在重复行时,可以使用`DISTINCT`关键字来去除重复的记录,只返回唯一的值。 **语法**: ```sql SELECT DISTINCT column1, column2, ... FROM table_name; ``` **示例**:查询`Employees`表中所有不重复的职位: ```sql SELECT DISTINCT Position FROM Employees; ``` #### 2.6 连接查询 在数据库中,表之间经常通过特定的列(通常是外键)相关联。连接查询允许我们根据这些关联来合并两个或多个表中的数据。常见的连接类型包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。 **语法**(以INNER JOIN为例): ```sql SELECT columns FROM table1 INNER JOIN table2 ON table1.common_field = table2.common_field; ``` **示例**:假设我们还有一个`Departments`表,记录了部门ID和部门名称。查询所有员工及其对应的部门名称: ```sql SELECT Employees.Name, Departments.DepartmentName FROM Employees INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; ``` #### 2.7 子查询 子查询是嵌套在另一个查询中的查询。它们可以用在`SELECT`、`FROM`、`WHERE`或`HAVING`子句中,以提供复杂的查询逻辑。 **示例**:查询薪资高于公司平均水平的员工姓名: ```sql SELECT Name FROM Employees WHERE Salary > ( SELECT AVG(Salary) FROM Employees ); ``` #### 2.8 小结 本章介绍了SQL查询的基础,包括`SELECT`语句的基本使用、条件筛选(`WHERE`子句)、数据排序(`ORDER BY`子句)、聚合与分组(`GROUP BY`子句与聚合函数)、去重(`DISTINCT`关键字)、连接查询(如`INNER JOIN`)以及子查询等关键概念。通过掌握这些基础知识,你将能够构建出灵活多样的查询语句,有效地从数据库中提取和分析数据。 记住,实践是掌握SQL的最好方式。尝试自己编写查询语句,并对照数据库中的实际数据验证结果。随着经验的积累,你会发现SQL的强大之处,并能够更加高效地解决复杂的数据查询问题。
上一篇:
向Product表中插入数据
下一篇:
2-1 SELECT语句基础
该分类下的相关小册推荐:
高性能的Postgres SQL
SQL基础教程(中)
SQL基础教程(下)
PostgreSQL入门教程