名站网址导航为大家提供关于数据库教程相关的教程网站知识。
T-SQL 查询数据库语句的执行顺序解析
(5)SELECT (5-2) DISTINCT(5-3)TOP(
)(5-1) ,(1)FROM (1-J) JOIN on ,(2)WhERE ,(3)GROUP BY ,(4)hAVING ,(6)ORDER BY ;, 每一步都会生成一个虚拟表,该虚拟表会作为下一步的输入。这些虚拟表对于调用者是不可用的,只有最后一步生成的虚拟表才会返回给调用者。假如如果在查询中没有指定某一个子句,则会跳过相应的步骤。接下来就简单地描,(1)FROM FROM阶段标识出查询的来源表,处理表运算符,每个表运算符也会应用一系列子阶段。例如,在联接运算中涉及的阶段是(1-J1)笛卡尔积、(1-J2)ON筛选器和(1-J3)添加外部行。FR,(1-J1)笛卡尔积 这个阶段对表运算符涉及的两个表执行笛卡尔积(交叉联接),生成虚拟表VT1-J1。,(1-J2)ON筛选器 这个阶段对VT1-J1中的行根据ON子句中出现的谓语进行筛选。只有让该谓语取值为TRUE的行,才能插入VT1-J2中。,(1-J3)添加外部行 假如如果指定了OUTER JOIN(相对于CROSS JOIN 或 INNER JOIN),则将保留表(preserved table)中没有找到匹配的行,作为外部行添加到VT1-,(2)WhERE 这个阶段根据在WhERE子句中出现的谓语( )对于VT1中的行进行筛选。只有让谓语计算结果为TRUE的行,才会插入VT2中。,(3)GROUP BY 按照GROUP BY子句中指定的列名列表,将VT2中的行进行分组,生成VT3。,(4)hAVING 根据hAVING子句中出现的谓语( )对VT3中的分组进行筛选。只有让谓语计算结果为TRUE的组,才会插入到VT4。,(5)SELECT 处理SELECT子句中的元素,生成VT5。,(5-1)计算表达式 计算SELECT列表中的表达式,生成VT5-1。,(5-2)DISTINCT 删除VT5-1中的重复行,生成VT5-2。,(5-3)TOP 根据ORDER BYi子句定义的逻辑排序,从VT5-2中选择前面指定数量或百分比的行,生成表VT5-3。,(6)ORDER BY 根据ORDER BY子句中指定的列名列表,对VT5-3中的行进行排序,生成游标VC6。,以上就是一个完整的T-SQL数据库语句的执行过程,希望能给大家帮助。,以上内容摘自《Microsoft SQL Server 2008技术内幕 T-SQL查询》一书。
复制具体相关代码 具体相关代码如下:
--相信大家肯定经常会把数据导入到网站数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是咱们不需要
--现在需要一个简单的查询来剔除掉这些为null的记录行。
--假设表名为 emplyees
--具体相关方法1.
---先把数据导入到网站数据库
---其次:
select * from sys.columns
where object_id =(select object_id from sys.objects where)
---具体相关方法2
---使用网站数据库提供的函数
exec sp_columns 'Employees'
delete from Employees where coalesce(status,tel,gwei,ADDRESS1,address2,nwei) is null