其中 employee 是一个表,它是该语句查询的对象;同时,查询的结果也是一个表。所以,我们可以继续扩展该查询:
SELECT emp_id, emp_name, salary FROM ( SELECT emp_id, emp_name, salary FROM employee ) dt;我们将括号中的查询结果(取名为 dt)作为输入值,传递给了外面的查询;最终整个语句的结果仍然是一个表。
SQL 中的查询可以完成各种数据操作,例如过滤转换、分组汇总、排序显示等;但是它们本质上都是针对表的操作,结果也是表。
不仅仅是查询语句,SQL 中的插入、更新和删除都以集合为操作对象。我们再看一个插入数据的示例:
CREATE TABLE t(id INTEGER); -- 适用于 MySQL、SQL Server 以及 PostgreSQL INSERT INTO t(id) VALUES (1), (2), (3);我们首先使用 CREATE TABLE 语句创建了一个表,然后使用 INSERT INTO 语句插入数据。在执行插入操作之前,会在内存中创建一个包含 3 条数据的临时集合(表),然后将该集合插入目标表中。由于我们通常一次插入一条数据,以为是按照数据行进行插入;实际上,一条数据也是一个集合,只不过它只有一个元素而已。
UNION ALL 是 SQL 中的并集运算,用于将两个集合组成一个更大的集合。此外,SQL 还支持交集运算(INTERSECT)、差集运算(EXCEPT)以及笛卡儿积(Cartesian product)
4 数据库案例包含 3 个表:员工表(employee)、部门表(department)和职位表(job)。
结构图,也称为实体-关系图(Entity-Relational Diagram)
关系模型中定义了一个简单的数据结构,即关系(表),用于存储数据。SQL 是关系数据库的通用标准语言,通过声明的方式执行数据定义、数据操作、访问控制等。
记住,对于 SQL,一切都是关系(表)。
《数据库系统概念(原书第6版)》
关系数据库
SQL 从入门到精通