chap05 Transact-SQL.pdf
总共13章
chap01 SQL Server 2005概述.pdf
chap02 数据库的建立.pdf
chap03 表.pdf
chap04 数据操作.pdf
chap05 Transact-SQL.pdf
chap06 视图.pdf
chap07 索引.pdf
chap08 索引.pdf
chap09 存储过程和触发器.pdf
chap10 游标、事务与锁.pdf
chap11 数据库的备份与恢复.pdf
chap12 安全性.pdf
chap13 Reporting Services.pdf
### Transact-SQL知识点解析
#### 5.1 Transact-SQL的改进
Transact-SQL作为SQL Server的核心语言,在SQL Server 2005版本中进行了多项改进以更好地满足ANSI-99 SQL规范的要求及客户需求。这些改进主要包括:
1. **通用表表达式(CTE)**: CTE是一种临时命名的结果集,它可以通过定义语句进行引用。相较于派生表,CTE的形式更加简单,提供了一种更为灵活的方式来重新组织标准化数据。可以在查询的`FROM`子句中引用CTE。
2. **递归查询**: 递归查询是一种新的查询类型,用于生成材料清单或分层结果集。新增加的`PIVOT`和`UNPIVOT`运算符可以操作输入表值表达式,并生成输出表。`PIVOT`运算符能够将行通过旋转转换为列,并执行聚合操作。而`UNPIVOT`运算符则执行`PIVOT`的逆操作,将列转换为行。
3. **APPLY关系运算符**: 新增的`APPLY`运算符允许用户针对外部表表达式的每一行调用特定的表值函数。用户可以在查询的`FROM`子句中指定`APPLY`,类似于使用`JOIN`关系运算符。`APPLY`运算符有两种形式:`CROSS APPLY`和`OUTER APPLY`。其中,`CROSS APPLY`会调用表值函数并返回统一的结果集;如果函数对于给定外部行返回空集,则该行不会出现在结果集中。而`OUTER APPLY`则会返回外部表的所有行,即使表值函数返回空集。
#### 5.2 常量与变量
Transact-SQL中的常量和变量是语言的基础组成部分,它们帮助构建和管理数据。具体来说:
1. **常量**:
- **字符串常量**: 使用单引号括起来的文本字符串。
- **时间与日期常量**: 包括`GETDATE()`获取当前系统日期时间等。
- **符号常量**: 如`NULL`表示空值。
2. **变量**:
- **全局变量**: 由系统自动创建并维护,前缀为两个@符号,如`@@SERVERNAME`。
- **局部变量**: 用户定义的变量,仅在当前会话中有效,前缀为一个@符号。
#### 5.2.1 关于SQL标识符
在Transact-SQL中,标识符用于命名数据库对象,如表、视图、列等。SQL Server支持两种类型的标识符:常规标识符和分隔标识符。
1. **常规标识符**:
- 首字符必须是字母、下划线(`_`)、`@`或`#`。
- 不能是Transact-SQL保留字。
- 不允许嵌入空格或其他特殊字符。
2. **分隔标识符**:
- 可以包含在双引号(`"`)或方括号(`[]`)中。
- 可以包含任意字符(除了分隔符本身),例如空格、常规标识符中允许的字符以及一些特殊字符如`~`、`-`、`!`等。
**示例**:
```sql
-- 使用常规标识符
USE teach;
SELECT * FROM t_class;
-- 使用分隔标识符
USE [teach];
SELECT * FROM [t class];
```
通过以上内容可以看出,Transact-SQL在SQL Server 2005版本中的改进不仅增强了其兼容性和功能性,同时也提高了查询表达能力和灵活性。这些改进使得开发人员能够更高效地处理数据,并且通过引入新的运算符和特性,使得Transact-SQL成为了更加强大和易用的工具。