SQL 查询基础(1)
今天我会开始在博客园中开始写我的编程经验,本文工科男,毕业后做了程序员,对C,C++,C# 都有涉猎,对C++有固执的偏好。没有做过DBA,对SQL Server 仅限于存储过程和查询语句的优化,对于索引之类的,只是略有了解。
对于SQL 查询基础的几篇随笔,看了后对于一般的存储过程会有一些帮助,但是不可能让你成为专业人士。
由于我只对 SQL Server 比较熟悉,本文的代码举例等都是基于SQL Server 的,对于Oracle 和 MySQL,我想大致应该差不多。
首先我们需要了解,SQL语言针对的是集合的编程,需要有一些集合的基础。
对于编程逻辑,C,C++等等,都是使用 TRUE 或者 FALSE 来表示。对于SQL 编程,实行的是三值逻辑:TRUE,FALSE 和 UNKNOWN。
一个简单的查询语句,一般写法为:
SELECT [COLUMN] FROM [TABLE] WHERE [CONDITION]
在SQL Server中,逻辑执行的顺序为:1) FROM, 2) WHERE, 3)SELECT
首先需要执行 FROM 语句,找到数据的源头(FROM 后边的 JOIN 语句将在后续讲到),从数据库中找打数据源,放到一个虚表中 VT1;
然后执行 WHERE 语句,根据 WHERE 中的筛选条件,找到符合条件的数据集合,再放到虚表中 VT2;
最后执行 SELECT 语句,从 VT2 虚表中选择需要显示的列,返回查询结果。(如果需要返回所有列,可使用 SELECT *)
这是最简单的一个SQL 语句在逻辑上的执行顺序,中间过程中是否真的会产生虚表,在SQL的物理实现上是不是采用这种顺序,我就不太清楚了,需要后续研究。