赞
踩
在批处理或过程的正文用 DECLARE 语句
声明变量,并用 SET 或 SELECT 语句给其指派值;
游标变量也能通过该语句声明,并可用在其他与游标相关的语句中;所有变量在声明后均初始化为 NULL
;
DECLARE
{{@local_variable data_type}
| {@cursor_variable_name CURSOR}
| {table_type_definition}
} [,...n]
@local_variable
@local_veriable
是变量的名称;变量名必须以 @符(@)开头;data_type
data_type
是任何系统提供或用户定义的数据类型;变量不能是 text、ntext 或 image 数据类型;@cursor_variable_name
@cursor_variable_name
是游标变量的名称;游标变量名必须以 @ 开头遵从标识符规则;CURSOR
table_type_definition
PRIMARY KEY、UNIQUE KEY、NULL 和 CHECK
;变量常用在批处理或过程中,作为 WHILE、LOOP 或 IF...ELSE
块的计数器;变量只能用表达式中,不能代替对象名或关键字;
若要构造动态 SQL 语句,使用 EXECUTE
;局部变量的作用域是在其中声明局部变量的批处理、存储过程或语句块;
当用户在 SQL Server 中运行了一段 T-SQL 语句代码后,可将结果返回,此时就需要用到输出命令;PRINT
输出命令功能将用户定义的消息返回客户端;
PRINT 'any ASCII text' | @local_veriable | @@FUNCTION | string_expr
'any ASCII text'
@local_variable
local_variable
必须是 char、nchar、nvarchar、varchar;@@FUNCTION
@@FUCTION
是返回字符串结果的函数;@@FUNCTION
必须是 char 或 varchar,或者能够隐式转换为这些数据类型;string_expr
string_expr
是返回祝福词的表达式;可包括串联的字面值和变量,消息字符串最长可达 8000 个字符,超过 8000个的任何字符均被截断;若要打印用户定义的错误信息(该信息中包含可由 @@ERROR
返回的错误号),使用 RAISERROR
而不要使用 PRINT
;
BACKUP 命令
用于备份整个数据库、事务日志,或备份一个或多个文件或文件组;
SQL Server 支持的备份类型包括:
BACKUP
备份数据库文件和文件组,而不是备份完整数据库;若要备份一个文件而不是整个数据库,合理安排步骤以确保数据库中所有的文件按规则备份,同时必须进行单独的事务日志备份;在恢复一个文件备份后,使用事务日志将文件内容前滚,使其与数据库其余部分一致;BADCKUP DATABASE { datebase_name | @database_name_var} <file_or_filegroup> [,...n] To <backup_device> [,...n] [ WITH [ BLOCKSIZE = { blocksize | @blocksize_variable }] [ [,] DESCRIPTION = {'text'| @text_variable }] [ [,] DIFFERENTIAL ] [ [,] EXPIREDATE = { date | @date_var } | RETAINDAYS = { days | @days_var }] [ [,] PASSWORD = {password | @password_variable}] [ [,] FROMAT | NOFORMAT] [ [,] {INIT | NOINIT}] [ [,] MEDIADESCRIPTION = {'text' | @text_variable}] [ [,] MEDIANAME = {media_name | @media_name_variable}] [ [,] MEDIAPASSWORD = {mediapassword | @mediapassword_variable}] [ [,] NAME = { backup_set_name | @backup_set_name_var }] [ [,] {NOSKIP | SKIP }] [ [,] {NOREWIND | REWIND }] [ [,] {NOREWIND | REWIND }] [ [,] RESTART ] [ [,] STATS [ = pecentage ]] ]
BACKUP LOG {database_name | @database_name_var} { TO <backup_device> [,..n] [ WITH [ BLOCKSIZE = {blocksize | @blocksize_variable}] [ [,] DESCRIPTION = {'text' | @text_variabel}] [ [,] EXPIREDATE = {date | @data_var}] | RETAINDAYS = {days | @days_var} [ [,] PASSWORD = {password | @password_variable}] [ [,] FORMAT | NOFORMAT] [ [,] {INIF | NOINIF}] [ [,] MEIADESCRIPTION = {'text' | @text_variable}] [ [,] MEDIANAME = {medir_name | @media_name_variable}] [ [,] MEDIAPASSWORD = {mediapawwrod | @mediapassword_variable}] [ [,] NAME = {backup_set_name | @backup_set_name_var}] [ [,] NO_TRUNCATE] [ [,] {NORECOVERY | STANDBY = undo_file_name}] [ [,] {NOREWIND | REWIND}] [ [,] {NOSKIP | SKIP}] [ [,] {NOUNLOAD | UNLOAD}] [ [,] RESTART ] [ [,] STATS [ = percentage ]] ] }
BACKUP LOG {database_name | @database_naem_var}
{
[ WITH
{ NO_LOG | TRUNCATE_CNLY}]
}
DATABASE
BLOCKSIZE = { blocksize | @blocksize_variable}
BACKUP
自动决定磁盘设备合适的块大小;DESCRIPTION = {'text' | @text_variable}
DIFFERENTIAL
EXPIREDATE = {date | @date_var}
datetime 格式
;RETAINDAYS = {days | @days_var}
PASSWORD = {password | @password_variable}
BACKUP DATABASE 和 BACKUP LOG
权限默认情况下授予 sysadmin 固定服务器角色和 db_owner 及 db_backupoperator 固定数据库角色的成员;
RESTORE 命令
用于还原使用 BACKUP 命令
所做的备份;
SQL Server 支持还原的类型如下所示:
RESTORE DATABASE
语句还原差异备份;RESTORE DATABASE {database_name | @database_name_var} [ FROM <backup_device> [,...n ] ] [ WITH [ RESTRICTED_USER] [ [,] FILE = {file_number | @file_number} ] [ [,] PASSWORD = {password | @pass2word_Variable} ] [ [,] MEDIANAME = {media_name | @media_name_variable} ] [ [,] MEDIAPASSWORD = {mediapassword | @mediapassword_variable} ] [ [,] MOVE 'logical_File+_name' TO 'operating_system_file_name' ] [,...n] [ [,] KEEP_REPLICATION ] [ [,] {NORECOVERY | RECOVERY | STANDBY = undo_file_name} ] [ [,] {NOREWIND | REWIND} ] [ [,] {NOUNLOAD | UNLOAD} ] [ [,] REPLACE ] [ [,] RESTART ] [ [,] STATS [ = percentage ] ] ]
RESTORE DATABASE {database_name | @database_name_var} <file_or filegroup> [,...n] [ FROM <backup_device> [,..n] ] [ WITH { PARTIAL } [ [,] FILE = {file_number | @ file_number} ] [ [,] PASSWORD = {password | @password_varidable} ] [ [,] MEDIANAME = {media_name | @ media_name_variable} ] [ [,] MEDIPASSWORD = {mediapssword | @mediapassword_variable} ] [ [,] MOVE 'logical_File_name' TO 'operating_system_File_name'] [,...n] [ [,] NORECOVERY ] [ [,] {NOREWIND | REWIND} ] [ [,] {NOUNLIAD | UNLOAD} ] [ [,] REPLACE ] [ [,] RESTRICTED_USER ] [ [,] RESTART ] [ [,] STATS [ = percntage] ] ]
RESRORE DATABASE {database_name | @database_name_var} <file_or_filegroup> [,...n] [ FROM <backup_device> [,..n] ] [ WITH [ RESTRICRED_USER ] [ [,] FILE = {file_number | @file_number} ] [ [,] PASSWORD = {password | @password_variable} ] [ [,] MEDIANAME = {media_name | @media_name_variable} ] [ [,] MEDIAPSSSWORD = {mediapassword | @mediapassword_variable} ] [ [,] MOVE 'logical_file_name' TO 'operating_system_file_name' ] [,...n] [ [,] NORECOVERY ] [ [,] {NOREWIND | REWIND} ] [ [,] {NOUNLOAD | UNLOAD} ] [ [,] REPLACE ] [ [,] RESTART ] [ [,] SRATS [ = percentage ] ] ]
RESTORE LOG {database_name | @database_name_var} [ FROM <backup_device> [,..n] ] [ WITH [ RESTRICTED_USER ] [ [,] FILE = {file_number | @file_number} ] [ [,] PASSWORD = {password | password_variable} ] [ [,] MOVE 'logical_file_name' TO 'operatring_system_file_name' ] [,...n] [ [,] MEDIANAME = {media_name | @media_name_variable} ] [ [,] MEDIAPASSWORD = {mediapassword | @mediapassword_variable} ] [ [,] KEEP_REPLICATION ] [ [,] { NORECOVERY | RECOVERY | STANDBY = nudo_file_name} ] [ [,] { NOREWIND | REWIND } ] [ [,] { NOUNLOAD | UNLOAD } ] [ [,] RESTART ] [ [,] STATS { = percentage } ] [ [,] STOPAT = { date_time | @date_time_var } ] | [,] STOPATMARK = 'kark_name' [ AFTER datetime ] | [,] STOPBEFOREMARK = 'mark_name' [ AFTER datetime ] ]
DATABASE
{database_name | @database_name_var}
FROM
NORECOVERY
选项还原的数据库,或切换到一台备用服务器上;若省略 FROM 子句,就必须指定 NORECOVERY、RECOVERY、STANDBY;<backup_device>
RESTRICTED_USER
FILE = {file_number | @file_number}
PASSWORD = {password | @password_Variable}
若不存在要还原的数据库,用户就必须有 CREATE DATABASE
权限才能执行 RESTORE 命令
;
若存在该数据库,RESTORE
权限就默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及该数据库的所有者(dbo);
RESTORE
权限被授予哪些成员资格信息始终可由服务器使用的角色,因为只有在固定数据库能访问且没有损坏时(在执行 RESTORE 时并不会总是这样)才能检查固定数据库角色成员资格,所以 db_owne 固定数据库角色成员没有 RESTORE 权限;
用户能为媒体集、备份集或两者指定密码;若为媒体集指定了密码,则用户只是适当的固定服务器和数据库角色成员还不足以执行备份;
用户还必须体用媒体密码才能执行这些操作,同样,除非在还原命令正确的媒体集密码和备份集密码,否则不能执行还原操作;
从数据库中检索行,并允许一个或多个表中选择一个或多个行或列;
虽然 SELECT 语句的完整性语法比较复杂,但是其主要的子句能归纳如下:
SELECT select_list
[ INTO new_table ]
FROM table_soure
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_experssion [ ASC | DESC] ]
能在查询之前使用 UNION 运算符,以将查询的结果组合成单个结果集;
SELECT statement ::= <query_expression> [ ORDER BY {order_by_expression | column_position [ ASC | DESC ] } [,..n] ] [ COMPUTE { { AVG | COUNT | MAX | MIN | SUM } (opression)} [,..n] [ BY expression [,..n] ] ] [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT } [ , XMLDATA ] [ ,ELEMENTS ] [,BINARY base64 ] } ] [ OPTION ( <query_hint> [,...n] ) ] <query expression> ::= SELECT [ ALL | DISTINCF ] { <query specification> | ( <query expression> ) } [ UNION [ ALL ] <query specification | (query expression)> [,..n] ] <query specification> ::= SELECT [ ALL | DISTINCT ] [ [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ] <select_list> [ INTO new_table ] [ FROM { <table_source> } [,..n] ] [ WHERE <search_condition> ] [ GROUT BY [ ALL | group_by_expression [,..n] [ WITH { CUBE | ROLLUP} ] ] [ HAVING <search_condition> ]
下面是 SELECT 相关子句:
T-SQL 语言提供了一些 SET 语句,这些语句能更改特定信息的当前会话处理;
SET 语句的分类如下表:
SET 语句较多,下面是两个 SET 相关子句:
SET DATEFIRST
SET DATEORMAT
SET DEADLOCK_PRIORITY
SET LOCK_TIMEOUT
SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_IDENTIFIER
外,所有其他 SET 语句均在执行或运行时设置;SET FIPS_FLAGGER、SET OFFSETS、SET PARSEONLY 和 SET QUOTED_DIENTIFIER
语句分析时设置;SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER
除外;指定 SET ANSI_NULLS 或 SET QUOTED_IDENTIFIER
的存储过程使用在存储过程创建是指定的设置;在存储过程内使用任何 SET 设置,都将忽略该设置;sp_configure
的 user options
设置允许服务器范围的设置,并能跨多个数据库进行;该设置的行为还类似显式 SET 语句,在登录时出现该设置的情况除外;ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER、ANSI_NULLS、ANSI_PADDINIG 和 ANSI_WARNINGS
设置为 ON,必须将选项 NUMERIC_ROUNDABORT
设置为 OFF;若这些选项中任何一个没哟设置为所要求的值,则在索引视图上火计算列带索引的表上进行的 INSERT、UPDATE 和 DELETE
操作将失败;SQL Server 将发出一个错误,列出所有设置不正确的选项;同时,SQL Server 将在这些表或索引视图上处理 SELECT 语句,仿佛计算或视图上不存在索引一样;
当用户不需要使用 SQL Server 数据库及实例时,可选择关闭数据库;
T-SQL 语句为用户提供了关闭数据库命令 SHUTDOWN,其功能为立即停止 SQL Server;
SHUTDOWN [ WITH NOWAIT ]
WITH NOWAIT
除非 sysadmin 固定服务器角色成员指定 WITH NOWAIT 选项,否则 SHUTDOWN
尝试关闭 SQL Server 时的顺序为:
还能使用以下工具和方法停止 SQL Sever,每个工具或方法都在所有数据库内执行检查点;
从数据高速缓存中刷新所有提交的数据后,通过下列公户和方法停止服务器:
若是从命令提示符下启动的 sqlser.exe,按 Ctrl+C 键能关闭 SQL Server,但不执行检查点;
注意: 通过 SQL Server 管理器、控制面板和 SQL Server 服务管理器停止 SQL Server 的方法所生成的服务器控制信息与使用 SERVICE_CONTROL_STOP
停止 SQL Server 所生成的相同;
SHUTDOWN
权限默认授予 sysadmin 和 serveradmin 固定服务器角色的成员且不可转让;
当 SQL Server 实例中包括多个数据库时,能通过 USE 语句将数据库是上下文更改指定数据库;
USE [ database ]
database 是用户上下文要切换到的数据库名称,数据库名称必须符合标识符的规则;
USE 权限默认授予那些由执行 sp_adduser
的 dbo 和 sysadmin 固定服务器角色,或由执行 sp_grantdbaccess
的 sysadmin 固定服务器角色以及 db_accessadmin
和 db_owner
固定数据库角色指派了权限的用户;若目的的数据库中存在来宾用户,则在该数据库中没有安全账户的用户依然能范围;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。