SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版、标准版、个人版、开发版。
- SQL SERVER 提供的服务
- MS SQL Server:运行 SQL Server 的服务。
- SQL Server Agent:管理 SQL Server 周期性行为的安排,并在发生错误时通知系统管理员。
- Microsoft Server Service:提供一个全文本索引和搜索引擎。
- MS DTC:管理包含不同数据源的事务。
- SQL SERVER 的主要工具
主要有查询分析器、导入和导出数据、服务管理器、服务器网络实用工具、客户端网络实用工具、联机丛书、企业管理器、事件探查器、在 IIS 中配置 SQL XML 支持等 9 种工具。
企业管理器
企业管理器是用户管理 SQL SERVER 的主要管理工具和图形界面,它提供遵从 Microsoft 管理控制台 MMC 的用户界面。企业管理器几乎可以完成所有的管理工作,如管理登录帐号、数据库用户和权限、创建和管理数据库,创建和管理表、视图、存储过程以及用户自定义数据类型等。
- 创建存储过程
CREATE PROCEDURE proc1 AS
SELECT Sid, Name, Age FROM Student WHERE Area = 'Shanghai'
CREATE PROCEDURE proc2
@Iname varchar (40),
@phone varchar (12) OUTPUT
AS
SELECT @phone = phone FROM Student WHERE Name = @Iname
- 创建触发器
-- WITH APPEND 指定加密触发器的文本
CREATE TRIGGER <触发器名> ON <表 | 视图>
FOR { AFTER | INSTEAD OF} { INSERT | UPDATE | DELETE} [ WITH APPEND] [NOT FOR REPLICATION]
AS
IF (表达式)
BEGIN
<语句段>
END
- SQL Server 的验证模式:Windows 身份验证模式、混合验证模式。
T – SQL 语言
标准 SQL 的 DML 命令只能用于修改或返回数据,没有用于开发过程和算法的编程结构,也没有包含控制和调整服务器的数据库专用命令。因此,各功能完备的数据库产品都必须使用它们各自专有的 SQL 语言扩展来弥补标准 SQL 的不足之处。在 SQL Server 中,这种扩展称为 Transact - SQL,简称 T - SQL。
- T – SQL 批处理
由一条或多条 T – SQL 语句构成,以 CREATE 语句开始,用 USE 命令选定当前的数据库,用 EXEC 命令来调用存储过程。
- 变量
T – SQL 语言中,变量分为局部变量和全局变量两种。局部变量以单个字符“@”开头,由用户定义和维护;全局变量以两个“@@”字符开头,由系统定义和维护。变量声明用 DECLARE 命令,且要指定变量名和数据类型。为变量赋值使用 SET 命令和 SELECT 命令。
use pubs
declare @val1 int, @val2 varchar(50) -- 局部变量
select @val1, @val2 -- 结果:NULL NULL
set @val1 = 123
select @val2 = job_desc from jobs -- 返回多个结果时,变量被不断赋值,生效的是最后一个查询值
select @val1, @val2 -- 结果:123 Designer
go
select @val1, @val2 -- 结果:服务器:消息 137,级别 15,状态 2,行 1,必须声明变量 '@val1'
- 流程控制
- IF Boolean_expression SQL_statement | SQL_statement_block [ ELSE SQL_statement | SQL_statement_block ]
- Begin … End:将多条 SQL 语句封装为语句块
- While Boolean_expression [ SQL_statement | SQL_statement_block ]
- Goto:转移到同一个批处理或过程中的指定标签处。
declare @tmp int
set @tmp = 0
while @tmp < 5
begin
set @tmp = @tmp + 1
if @tmp = 2 continue
if @tmp = 4 break
print 'tmp:' + Str(@tmp)
end
print 'while end'
go
-- 执行结果为:(1)tmp:1 (2)tmp:3 (3)while end
goto Label1
print '1'
Label1:
print '2'
-- 执行结果为: 2
- 临时表
临时表和表变量用来在不同的对象之间传递数据或者为临时性的任务短时间保存数据。创建临时表用 CREATE 关键字,使用以一个(局部临时表)或两个(全局临时表)“#”开头的表名。临时表保存在 Tempdb 数据库中,局部临时表的生命周期很短暂,当创建它的批处理或者过程结束时,就会被删除。而全局临时表也与它相似,但作用域更广泛,所有用户都可以引用全局临时表,当最后一个引用它的会话结束后,才会被删除。
-- 创建局部临时表
create table #tmptable( id int primary key, value varchar (100))
-- 创建全局临时表
if not exists (select * from Tempdb where name='##tmptable')
create table ##tmptable( id int primary key, value varchar (20))
- 表变量
表变量与变量具有相同的作用域和生命周期。表变量保存在内存中。应尽可能使用表变量而不是临时表。
- 表变量的优点:
- 行为类似局部变量,有明确定义的作用域。
- 可像常规表那样使用。
- 在定义它的存储过程或批处理结束时,自动被清除。
- 在存储过程中使用表变量与临时表相比,减少了存储过程的重新编译量。
declare @vartable table( id int primary key, value varchar (20) )
insert into @vartable values ( 12, 'abc')
select * from @vartable