chap09 存储过程和触发器.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
### 知识点总结
#### 1. 存储过程概述
- **定义**: 存储过程(Stored Procedure)是在数据库中预编译的一组SQL语句,它们以单独的对象形式存储于数据库中,用户可以通过指定存储过程的名字并提供必要的参数来执行。
- **分类**:
- **系统存储过程**: 由SQL Server系统提供的存储过程,通常以`sp_`开头,用于管理和维护数据库系统,如获取数据库对象信息等。
- **用户自定义存储过程**: 由用户创建的存储过程,用于实现特定功能,如查询特定数据。
#### 2. 存储过程与用户定义函数的区别
- **返回值类型**:
- 存储过程通常返回整数值。
- 用户定义函数可以返回除text、ntext、image、cursor和timestamp类型之外的其他数据类型。
- **执行方式**:
- 存储过程只能通过`EXECUTE`命令执行。
- 用户定义函数可以像普通函数一样在表达式中使用。
- **数据与对象修改能力**:
- 存储过程中可以修改任何数据及对象。
- 用户定义函数仅能修改数据,不能修改数据库对象。
#### 3. 创建存储过程的方法
- **使用SSMS创建存储过程**:
- 启动SQL Server Management Studio (SSMS)。
- 连接到SQL Server实例。
- 在“对象资源管理器”中选择相应的数据库。
- 右键点击“存储过程”,选择“新建存储过程”。
- 编写存储过程的代码。
- 保存并执行存储过程。
- **使用T-SQL创建存储过程**:
- 使用`CREATE PROCEDURE`语句来定义存储过程。
- 指定存储过程的名字以及参数列表。
- 编写存储过程的主体部分,即具体的SQL语句。
- 执行创建语句以创建存储过程。
#### 4. 存储过程的语法
- **基本语法**:
```sql
CREATE {PROC | PROCEDURE} [schema_name.]procedure_name [;number]
[(@parameter [type_schema_name.]data_type)
[VARYING] [ = default] [[OUT [PUT]]]
[,n]...n
]
[WITH <procedure_option> [ ,n]...n ]
[FOR REPLICATION]
AS
{ <sql_statement> [ ; ] [n] | <method_specifier> }
[ ; ]
```
- **参数**:
- `schema_name`: 模式名称,用于标识存储过程所属的模式。
- `procedure_name`: 存储过程的名字。
- `@parameter`: 参数名称,可以指定多个参数。
- `type_schema_name`: 参数类型的模式名称。
- `data_type`: 参数的数据类型。
- `VARYING`: 指示参数是否可以更改大小。
- `default`: 默认值。
- `OUT [PUT]`: 输出参数。
- `<procedure_option>`: 存储过程的选项,例如加密(ENCRYPTION)、重新编译(RECOMPILE)等。
- `<sql_statement>`: 存储过程的具体SQL语句。
#### 5. 存储过程的应用场景
- **提高性能**:
- 预编译存储过程减少了每次执行时的解析时间,提高了执行效率。
- **增强安全性**:
- 通过存储过程可以限制用户对底层数据的直接访问权限,提高数据库的安全性。
- **简化客户端编程**:
- 通过调用存储过程,客户端应用程序可以简化复杂业务逻辑的实现。
- **数据一致性**:
- 存储过程可以确保对数据的操作符合特定的业务规则,有助于保持数据的一致性。
#### 6. 触发器概述
- **定义**: 触发器是一种特殊类型的存储过程,它是在对表或视图执行特定操作(如INSERT、UPDATE或DELETE)时自动执行的。
- **用途**:
- 维护数据完整性。
- 自动执行复杂的业务逻辑。
- 记录审计日志。
#### 结论
存储过程和触发器是SQL Server数据库系统中的重要组件,能够显著提高数据库应用的性能、安全性和数据一致性。通过掌握存储过程和触发器的创建与使用方法,开发者可以更加高效地管理和操作数据库。