Você está na página 1de 130

Piques Prates SQL Server 7 Transact-SQL novatec

SQL Server 7 Transact-SQL

GUIA DE CONSULTA RPIDA

Renato Piques Rubens Prates

novatec

www.novatec1.co

Guia de Consulta Rpida

SQL Server 7 Transact-SQL


Renato Piques Rubens Prates

www.novateceditora.com.br

Novatec Editora

Guia de Consulta Rpida SQL Server 7 Transact-SQL de Renato Piques e Rubens Prates.

Copyright@2000 da Novatec Editora Ltda.

Todos os direitos reservados. proibida a reproduo dessa obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, dos autores e da Editora.

Reviso de texto: Sonia Maike

ISBN: 85-85184-70-1

Novatec Editora Ltda. Rua Cons. Moreira de Barros 1084 Conj. 01 02018-012 So Paulo - SP Brasil Fone: (0xx11) 6959-6529 Fax: (0xx11) 6950-8869 E-mail: novatec@novateceditora.com.br Site: www.novateceditora.com.br

Sumrio

Comandos SQL .................................................................. 5 Comandos DBCC ............................................................ 62 Comandos SET ................................................................ 73 Funes de Agregao ..................................................... 81 Funes de Configurao ................................................ 83 Funes de Cursor ........................................................... 85 Funes de Data e Hora ................................................... 86 Funes Matemticas ....................................................... 88 Funes Metadata ............................................................ 91 Funes de Segurana ...................................................... 98 Funes String ............................................................... 100 Funes do Sistema ....................................................... 103 Funes de Estatstica do Sistema ................................. 107 Funes de Texto e Imagem .......................................... 108 Operadores ..................................................................... 109 Operadores Aritmticos ........................................... 109 Operadores Bitwise .................................................. 109 Operadores de Comparao ..................................... 110 Operadores Lgicos ................................................. 111 Operadores Unrios ................................................. 112 Nveis de Precedncia de Operadores ..................... 112 Tipos de Dados do SQL Server ..................................... 116 Inteiros (integer) ...................................................... 116 Numricos ................................................................ 116 Dados Monetrios .................................................... 116 Numricos Aproximados ......................................... 117 Datetime and Smalldatetime .................................... 117 Strings de Caracteres ............................................... 117 Strings de Caracteres Unicode ................................. 118 Strings Binrios ........................................................ 118 Sinnimos ................................................................ 118 Constantes e Identificadores .......................................... 119 Palavras reservadas ........................................................ 120 Site Oficial do SQL Server 7 ......................................... 121 Notao Utilizada neste Guia ........................................ 121 Novatec na Internet ........................................................ 121 ndice ............................................................................. 122

Comandos

Comandos SQL
Comentrios

Insere um comentrio em qualquer lugar de um comando SQL. Dois estilos de comentrios so aceitos: estilo Transact-SQL (/* ...*/) e estilo padro ANSI (--).
/* texto_do_comentrio */ ou -- texto_do_comentrio ALTER DATABASE

Altera a estrutura fsica de um banco de dados.


ALTER DATABASE banco_dados { ADD FILE filespec [,...] [ TO FILEGROUP filegroup ] | ADD LOG FILE filespec [,...] | REMOVE FILE nome_lgico | ADD FILEGROUP filegroup | REMOVE FILEGROUP filegroup | MODIFY FILE filespec | MODIFY FILEGROUP filegroup propriedade } filespec ::= (NAME = nome_lgico [, FILENAME = 'nome_fsico' ] [, SIZE = tamanho] [, MAXSIZE = { tamanho_max | UNLIMITED } ] [, FILEGROWTH = incremento] )

Argumento
banco_dados ADD FILE TO FILEGROUP

Descrio
Nome do banco de dados a ser alterado. Nome do arquivo a ser adicionado. Filegroup no qual o arquivo ser adicionado. Se nenhum for especificado, ser adicionado ao filegroup padro (PRIMARY). Nome do arquivo de log a ser adicionado ao banco de dados. Remove um arquivo do banco de dados. O arquivo dever estar vazio antes de ser removido. Filegroup a ser adicionado ao banco de dados.

ADD LOG FILE REMOVE FILE

ADD FILEGROUP

Comandos REMOVE FILEGROUP Remove um filegroup do banco de dados. MODIFY FILE Permite alterar as propriedades de um arquivo, incluindo suas opes FILENAME, SIZE, FILEGROWTH, e MAXSIZE. Permite alterar as propriedades de um filegroup (READONLY, READWRITE e DEFAULT). Especifica que o filegroup read-only. Atualizaes nos objetos do filegroup no sero permitidas. Reverte a propriedade READONLY. Atualizaes nos objetos do filegroup sero permitidas. Filegroup default para o banco de dados. Nome lgico do arquivo. Nome fsico do arquivo. Tamanho do arquivo. Os sufixos MB e KB podem ser utilizados para especificar megabytes ou kilobytes (default=1MB). Tamanho mximo que o arquivo pode atingir. A opo UNLIMITED especifica que o arquivo pode aumentar at o disco ficar cheio. Incremento de crescimento do arquivo. O valor pode ser especificado em MB, KB ou % (porcentagem do tamanho do arquivo no momento em que o incremento ocorre).

MODIFY FILEGROUP

READONLY

READWRITE

DEFAULT filespec NAME FILENAME SIZE

MAXSIZE

FILEGROWTH

Comandos ALTER PROCEDURE

Altera a estrutura de uma stored procedure, sem alterar permisses e sem afetar qualquer stored procedure ou trigger dependente.
ALTER PROC[EDURE] nomeproc [;nmero] [ {@parmetro tipo_dado } [ VARYING] [= default ] [OUTPUT]] [,...] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS comandos_sql [...]

Parmetro
nomeproc ;nmero

Descrio
Nome da procedure a ser alterada. Nmero inteiro usado para agrupar procedures de mesmo nome, para que sejam removidas de uma s vez pelo comando DROP PROCEDURE. Parmetro para a procedure. Um ou mais parmetros podem ser declarados. Parmetros so locais procedure. Tipo de dado do parmetro. Utilizado somente para parmetros de retorno do tipo cursor. Permite que o resultado seja construdo dinamicamente dentro da procedure e retornado como um cursor para o objeto que fez a chamada a essa procedure. Valor default do parmetro. Identifica um parmetro de retorno. Ignora o plano de execuo existente e gera outro sempre que a procedure for executada. Criptografa o texto de criao da procedure que fica na tabela syscomments.

@parmetro

tipo_dado VARYING

default OUTPUT RECOMPILE ENCRYPTION

FOR REPLICATION Especifica que as procedures criadas para replicao, no podem ser executadas no servidor assinante. Utilizado para criao de procedures para filtros de replicao. AS Especifica as aes que a procedure deve tomar, que so os comandos SQL que sero colocados logo aps esse identificador. Comandos da stored procedure.

comandos_sql

Comandos ALTER TABLE

Altera a definio de uma tabela.


ALTER TABLE tabela { [ ALTER COLUMN coluna { novo_tipo_dado [ ( preciso [, escala] ) ] [ NULL | NOT NULL ] | {ADD | DROP} ROWGUIDCOL } ] | ADD { [ definio_coluna ] | coluna AS coluna_calculada } [,...] | [ WITH { CHECK | NOCHECK } ] ADD { constraint_tabela } [,...] | DROP { [CONSTRAINT] nome | COLUMN coluna } [,...] | {CHECK | NOCHECK } CONSTRAINT {ALL | nome [,...]} | {ENABLE | DISABLE} TRIGGER {ALL | trigger [,...] } } definio_coluna ::= { coluna tipo_dados } [ [ DEFAULT expresso_constante ] | [ IDENTITY [(valor_inicial, incremento ) [NOT FOR REPLICATION] ] ] ] [ ROWGUIDCOL ] [ constraint_coluna ] [ ...] constraint_coluna ::= [CONSTRAINT nome] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED] [ WITH FILLFACTOR = fator_preenchimento ] [ ON {filegroup | DEFAULT} ]] ] | [ [FOREIGN KEY] REFERENCES tabela_ref [ (col_ref) ] [NOT FOR REPLICATION] ] | CHECK [NOT FOR REPLICATION] (expr_lgica) }

Comandos constraint_tabela ::= [CONSTRAINT nome_constraint] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED] { ( coluna[,...] ) } [ WITH FILLFACTOR = fator_preenchimento] [ON {filegroup | DEFAULT} ] ] | FOREIGN KEY [ (coluna[,...] ) ] REFERENCES tabela_ref [ (col_ref [,...]) ] [ NOT FOR REPLICATION ] | DEFAULT expresso_constante [ FOR coluna ] | CHECK [NOT FOR REPLICATION] (expr_lgica) }

Parmetro
tabela

Descrio
Nome da tabela a ser alterada. O nome do banco de dados e do dono do objeto devem ser especificados quando estiver sendo feita referncia a objetos de outros bancos de dados que no o corrente. Especifica a coluna a ser substituda ou alterada. Nome da coluna a ser alterada, adicionada ou removida. Novo tipo de dado para a coluna alterada. Preciso do tipo de dados especificado. Escala do tipo de dados especificado. Especifica se a coluna aceita valores NULL. Adiciona (ADD) ou remove (DROP) a propriedade ROWGUIDCOL da coluna especificada. ROWGUIDCOL uma palavra-chave que indica que a coluna tem um GUID atribudo. Especifica que uma ou mais definies de colunas, de colunas calculadas ou constraints de tabelas esto sendo adicionadas. Vide abaixo. Expresso que define uma coluna calculada, que uma coluna virtual e no armazenada fisicamente no banco de dados, pois calculada utilizando valores de outras colunas da mesma tabela.

ALTER COLUMN coluna novo_tipo_dado preciso escala NULL | NOT NULL ROWGUIDCOL

ADD

definio_coluna coluna_calculada

Comandos WITH CHECK | WITH NOCHECK Especifica se os dados da tabela devem ser validados em relao a uma restrio CHECK ou FOREIGN KEY recentemente adicionada ou reabilitada. DROP CONSTRAINT Remove uma constraint (CONSTRAINT) ou coluna (COLUNA) da tabela. Habilita (CHECK) ou desabilita (NOCHECK) uma constraint ou todas (ALL) as constraints da coluna. Somente para constraints FOREIGN KEY e CHECK. Habilita (ENABLE) ou desabilita (DISABLE) um trigger ou todos (ALL) da tabela.

TRIGGER

Definio_coluna
coluna tipo_dado DEFAULT IDENTITY valor_inicial incremento Nome da coluna. Tipo de dado da nova coluna. Valor default da coluna. Especifica que a nova coluna tem propriedade de auto-incremento. Valor a ser usado para a primeira linha carregada na tabela. Valor incremental que adicionado ao valor de identidade da linha anteriormente carregada. A propriedade de auto-incremento no ser executada pelo processo de replicao. ROWGUIDCOL A coluna o identificador global da linha.

NOT FOR REPLICATION

Constraint_coluna
CONSTRAINT Indica o incio da definio de uma constraint PRIMARY KEY, FOREIGN KEY, CHECK ou DEFAULT. Nome da constraint. Se no for especificado, o SQL Server atribuir um nome implcito constraint. uma constraint que fora a integridade referencial de entidade para uma dada coluna ou colunas por meio de um ndice exclusivo. uma constraint que fornece integridade de entidade para uma dada coluna ou colunas por meio de um ndice exclusivo.

nome_constraint

PRIMARY KEY

UNIQUE

10

Comandos CLUSTERED | NONCLUSTERED Cria um ndice clusterizado (CLUSTERED) ou no clusterizado (NONCLUSTERED) para a constraint PRIMARY KEY ou UNIQUE. WITH FILLFACTOR Especifica o nvel de preenchimento em relao a cada pgina de um ndice usada para armazenar os dados de ndice. Especifica a localizao de armazenamento do ndice que criado para a constraint. Requer que cada valor na coluna exista na coluna especificada na tabela que est sendo referenciada. uma constraint que fornece integridade referencial aos dados da coluna.

ON

FOREIGN KEY

REFERENCES

tabela_referenciada Nome da tabela qual est sendo feita referncia por uma constraint FOREIGN KEY. coluna_referenciada Coluna ou colunas entre parnteses as quais est sendo referncia pela nova constraint FOREIGN KEY. NOT FOR REPLICATION A propriedade de auto-incremento no ser executada pelo processo de replicao. CHECK Define os valores vlidos para a coluna. Semelhante s regras de validao (vide CREATE RULE). Expresso lgica que define a regra de validao da coluna.

expresso_lgica

Constraint_tabela
coluna FOR coluna Coluna ou colunas entre parnteses usadas na nova constraint. Especifica a coluna a ser usada com uma constraint DEFAULT de nveis de tabela.

11

Comandos ALTER TRIGGER

Altera a definio de um trigger.


ALTER TRIGGER nome_trigger ON nome_tabela [WITH ENCRYPTION] { {FOR { [DELETE] [,] [UPDATE] [,][INSERT] } [NOT FOR REPLICATION] AS comando_sql [...] } | {FOR { [INSERT] [,] [UPDATE] } [NOT FOR REPLICATION] AS { IF UPDATE (coluna) [{AND | OR} UPDATE (coluna)] [...] | IF (COLUMNS_UPDATED() {operador_binrio} bitmask) { operador_comparao} bitmask_coluna [...] } comando_sql [...] } }

Argumento
nome_trigger nome_tabela WITH ENCRYPTION

Descrio
Nome do trigger a ser alterado. Nome da tabela qual o trigger est associado. Criptografa a definio do trigger na tabela syscomments. Tipos de operaes que ativam o trigger. Pelo menos um tipo deve ser especificado.

{ [DELETE] [,] [INSERT] [,] [UPDATE] } | { [INSERT] [,] [UPDATE]}

NOT FOR REPLICATION

No executa o trigger quando a alterao da tabela for feita pelo processo de replicao de dados. Identifica uma seqncia lgica de comandos SQL que representa as aes que o trigger deve tomar. Existem duas tabelas que ficam disponveis durante a execuo dos triggers e que so de grande importncia. So elas: deleted e inserted. Elas tm exatamente a mesma estrutura da tabela que sofreu o INSERT, DELETE ou UPDATE e contm as linhas novas (INSERTED) e antigas (DELETED) afetadas por esses comandos.

AS comando_sql

12

Comandos IF UPDATE(coluna) Testa se uma coluna foi alterada. Testa quais colunas foram inseridas e/ ou alteradas. Operador_bit_a_bit bitmask_atualizado operador_comparao bitmask_coluna Operador bit a bit. Bitmask das colunas que foram alteradas. Operador de comparao (=), (<), (>). Bitmask das colunas que sero verificadas. IF (COLUMNS_UPDATED())

ALTER VIEW

Altera a definio de uma view.


ALTER VIEW nome_view [ (coluna [,...]) ] [ WITH ENCRYPTION ] AS comando_select [ WITH CHECK OPTION ]

Argumento
nome_view coluna WITH ENCRYPTION AS

Descrio
Nome da view a ser alterada. Nome da(s) coluna(s) da view. Criptografa o comando CREATE VIEW na tabela syscomments. Especifica o comando SELECT que define a view. No pode incluir as clusulas ORDER BY, INTO, COMPUTE ou COMPUTE BY. Fora os comandos de modificao de dados, aplicados pela visualizao, a utilizarem os critrios no comando SELECT que define a view.

WITH CHECK OPTION

13

Comandos BACKUP

BACKUP DATABASE Efetua backup de um banco de dados. Backups criados com o SQL Server 7.0 no podem ser restaurados nas verses anteriores do SQL Server.
Backup do banco de dados inteiro: BACKUP DATABASE nome_bd TO disp_backup [,...] [ WITH [ BLOCKSIZE = tam_bloco] [ [,] DESCRIPTION = texto] [ [,] DIFFERENTIAL] [ [,] EXPIREDATE = data | RETAINDAYS = num_dias] [ [,] FORMAT | NOFORMAT] [ [,] {INIT | NOINIT}] [ [,] MEDIADESCRIPTION = texto] [ [,] MEDIANAME = nome] [ [,] [NAME = nome] [ [,] {NOSKIP | SKIP}] [ [,] {NOUNLOAD | UNLOAD} ] [ [,] [RESTART] [ [,] STATS [= porcentagem] ] ] Backup de arquivos ou filegroups: BACKUP DATABASE nome_bd { FILE = nome_lgico | FILEGROUP = nome_lgico} [,...] TO disp_backup [,...] [WITH opes]

BACKUP LOG Backup de um log de transaes.


BACKUP LOG nome_bd {[WITH { NO_LOG | TRUNCATE_ONLY }]} | {TO disp_backup [,...] [ WITH opes] }

Argumento
disp_backup BLOCKSIZE DESCRIPTION

Descrio
Dispositivo de backup utilizado na operao de backup. Tamanho fsico (em bytes) do bloco. Texto descritivo do backup (at 255 caracteres).

14

Comandos DIFFERENTIAL Efetua backup somente das pginas modificadas no banco de dados desde o ltimo backup completo. Data que o backup expira e pode ser sobrescrito. Nmero de dias decorridos at que a mdia possa ser sobrescrita. Especifica que o header da mdia deve ser gravado em todos os volumes do backup. Especifica que o header da mdia no deve ser gravado em todos os volumes do backup. Especifica se inicializar ou no o dispositivo de backup antes de gravar o backup. Campo de comentrio para o backup. Descrio do conjunto de backup. Nome do backup. Verifica o cabealho e a data de expirao da mdia para evitar sobrescrever acidentalmente uma mdia. Salta a leitura do header da mdia quando grava em uma fita. No ejeta a fita automaticamente do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (opo default). Reinicia o backup a partir do ponto em que foi interrompido anteriormente. Freqncia de notificao do progresso do backup (default=10, que significa que ser notificado toda vez que completar 10% do backup). Nome dos arquivos a serem includos no bakup. Filegroups a serem includos no backup do banco de dados. Faz backup somente do log de transaes. No grava o comando de backup no log de transaes. Limpa o log de transaes sem fazer backup do mesmo. Faz um backup do log de transao, sem eliminar do log as transaes que foram copiadas pelo backup.

EXPIREDATE RETAINDAYS FORMAT NOFORMAT

INIT | NOINIT MEDIADESCRIPTION MEDIANAME NAME NOSKIP

SKIP NOUNLOAD

UNLOAD

RESTART STATS

FILE FILEGROUP LOG NO_LOG TRUNCATE_ONLY NO_TRUNCATE

15

Comandos BEGIN...END

Delimita um bloco de comandos SQL, que ser tratado como uma unidade.
BEGIN {instruo_sql | bloco_comandos} END BEGIN DISTRIBUTED TRANSACTION

Especifica o incio de uma transao distribuda gerenciada pelo Microsoft Distributed Transaction Coordinator (MS DTC). Uma transao distribuda envolve bancos de dados em mais de um servidor.
BEGIN DISTRIBUTED TRAN[SACTION] [transao]

Parmetro
transao

Descrio
Nome da transao para os utilitrios MS DTC.

BEGIN TRANSACTION

Identifica o incio de uma transao local explcita. Incrementa a varivel global @@TRANCOUNT de 1.
BEGIN TRAN[SACTION] [transao]

Parmetro
transao

Descrio
Nome da transao (somente os primeiros 32 caracteres do nome da transao sero utilizados). Pode ser usado apenas no par mais externo de declaraes BEGIN...COMMIT ou BEGIN...ROLLBACK aninhadas.

BREAK

Sai do lao WHILE mais interno. Os comandos aps a palavra-chave END so ignorados.

16

Comandos BULK INSERT

Copia um arquivo de dados para uma tabela.


BULK INSERT [['nome_db'.]['proprietrio'].]{'tabela' FROM arquivo} [ WITH ( [ BATCHSIZE [= tamanho_lote] ] [ [,] CHECK_CONSTRAINTS ] [ [,] CODEPAGE [= 'ACP' | 'OEM' | 'RAW' | 'cod_pgina'] ] [ [,] DATAFILETYPE [= {'char' | 'native'| 'widechar' | 'widenative'}] ] [ [,] FIELDTERMINATOR [= 'terminador_campo'] ] [ [,] FIRSTROW [= primeira_linha] ] [ [,] FORMATFILE [= 'arquivo_formatos'] ] [ [,] KEEPIDENTITY] [ [,] KEEPNULLS] [ [,] KILOBYTES_PER_BATCH [= kb_lote] ] [ [,] LASTROW [= ltima_linha] ] [ [,] MAXERRORS [= max_erros] ] [ [,] ORDER ({coluna [ASC | DESC]} [,...]) ] [ [,] ROWS_PER_BATCH [= linhas_lote] ] [ [,] ROWTERMINATOR [= 'terminador_linha'] ] [ [,] TABLOCK] )]

Argumento
nome_bd proprietrio tabela arquivo

Descrio
Nome do banco de dados da tabela que receber os dados do arquivo. Nome do proprietrio da tabela ou da view. Nome da tabela ou view que receber os dados. Nome do arquivo (incluindo o path completo) a ser copiado para a tabela ou para a view. Nmero de linhas por lote transferido para o servidor. Cada lote feito em uma transao. Executa as constraints definidas para a tabela.

BATCHSIZE

CHECK_CONSTRAINTS

CODEPAGE [= 'ACP' | 'OEM' | 'RAW' | 'cdigo_pgina'] Cdigo de pgina localizado no arquivo de dados. Esta opo ser relevante somente quando os dados forem do tipo char e utilizarem caracteres estendidos (cdigos maiores que 127 ou menores que 32).

17

Comandos ACP Colunas do tipo char, varchar, ou text so convertidas do cdigo de pgina ANSI/ Windows (ISO1252) para o cdigo de pgina configurado no SQL Server. Colunas do tipo char, varchar, ou text so convertidas do cdigo de pgina OEM para o cdigo de pgina configurado no SQL Server. Nenhuma converso ser feita. Cdigo de pgina (por exemplo, 850). Formato no qual os dados sero armazenados no arquivo. char (default) native Copia os dados assumindo que o arquivo est no formato texto (caractere). Copia os dados assumindo que o arquivo est no formato nativo do SQL Server. Deve ter sido gerado com o utilitrio BCP. Copia os dados assumindo que o arquivo est no formato texto UNICODE. Copia os dados assumindo que o arquivo est no formato UNICODE nativo. Deve ter sido gerado com o aplicativo BCP. Caractere utilizado como terminador de campo (default=caractere \t). Nmero da primeira linha do arquivo a ser copiada (default=1). Especifica um path completo e o nome do arquivo de formato que descreve o contedo do arquivo de dados. Funciona de forma semelhante ao arquivo de formato criado para o comando de BCP. Especifica que os valores IDENTITY inseridos em um volume mantero seu valor em vez de ter um novo valor IDENTITY atribudo a eles como parte do processo de insero. Especifica que os valores NULL retero seus valores NULL quando o volume for inserido. Nmero de bytes a serem transferidos por vez. LASTROW Nmero da ltima linha do arquivo a ser copiada (default=0, indicando a ltima linha no arquivo de dados).

OEM (default)

RAW cd_pgina

DATAFILETYPE [ = {'char' | 'native' | 'widechar' | 'widenative'}]

widechar widenative

FIELDTERMINATOR FIRSTROW FORMATFILE

KEEPIDENTITY

KEEPNULLS

KILOBYTES_PER_BATCH

18

Comandos MAXERRORS Nmero mximo de erros que podem ocorrer antes da cpia ser automaticamente cancelada (default=10). Especifica as colunas utilizadas para a classificao (ASC ou DESC) do arquivo de dados. Nmero de linhas a serem copiadas por lote. Especifica o caractere utilizado como terminador de linha (default= \n). Especifica que um bloqueio (lock) de tabela ser utilizado at o fim da operao de cpia.

ORDER

ROWS_PER_BATCH ROWTERMINATOR TABLOCK

CASE

Avalia uma srie de condies e retorna a primeira condio verdadeira. Formato 1: Comparao entre expresses para determinar o resultado.
CASE expresso_case WHEN expresso_when THEN resultado [...] [ ELSE resultado ] END

Argumento
WHEN

Descrio
Especifica a expresso a ser comparada com a expresso_case. Caso sejam iguais, ser retornado o resultado especificado aps a clusula THEN. Especifica o resultado a ser retornado caso a clusula WHEN correspondente seja satisfeita. Especifica o resultado a ser retornado caso nenhuma das clusulas WHEN seja satisfeita.

expresso_case Expresso a ser avaliada pelo comando CASE.

THEN ELSE

Formato 2: Comparao utilizando condies para determinar o resultado.


CASE WHEN condio THEN resultado [...] [ ELSE resultado ] END

19

Comandos

Argumento

Descrio

WHEN condio Especifica uma condio. Se for verdadeira, ento o resultado especificado pela clusula ser retornado. THEN ELSE Resultado a ser retornado caso a clusula WHEN correspondente seja satisfeita. Resultado a ser retornado caso nenhuma das clusulas WHEN seja satisfeita.

CHECKPOINT

Grava, em disco, as pginas do banco de dados corrente que foram alteradas em memria.
CHECKPOINT CLOSE

Fecha um cursor aberto.


CLOSE { { [GLOBAL] nome_cursor } | varivel_cursor }

Argumento
GLOBAL nome_cursor varivel_cursor

Descrio
Identifica um cursor global. Nome de um cursor a ser fechado. Nome da varivel do tipo cursor que contm o cursor a ser fechado.

COMMIT TRANSACTION

Indica que uma transao foi realizada com sucesso e que todo o trabalho deve ser salvo, bem como que os eventuais LOCKs obtidos pela transao devem ser liberados.
COMMIT [ TRAN[SACTION] [transao]] COMMIT WORK

Identifica o final de uma transao. Equivalente ao comando COMMIT TRANSACTION.


COMMIT [WORK] CONTINUE

Reinicia um lao WHILE. Os comandos aps a palavrachave CONTINUE sero ignorados.

20

Comandos CREATE DATABASE

Cria um novo banco de dados e os arquivos usados para armazen-lo. Pode ser utilizado tambm para anexar ao servidor local um banco de dados criado previamente em outro servidor, utilizando os arquivos originais ou cpias dos mesmos.
CREATE DATABASE nome_bd [ ON [PRIMARY] [ filespec [,...] ] [, filegroup [,...] ] ] [ LOG ON filespec [,...] ] [ FOR LOAD | FOR ATTACH ] filespec ::= ( [ NAME = nome_lgico, ] FILENAME = 'nome_fsico' [, SIZE = tamanho] [, MAXSIZE = { tamanho_max | UNLIMITED } ] [, FILEGROWTH = incremento] ) [,...] filegroup ::= FILEGROUP filegroup filespec [,...]

Argumento
nome_bd ON

Descrio
Nome do novo banco de dados. Especifica que todos os arquivos contendo os dados do banco de dados sero especificados explicitamente. Especifica o primeiro arquivo que contm as tabelas de sistema e outras informaes internas do banco de dados. Se no especificada, assumir o primeiro arquivo da lista. Especifica os arquivos fsicos do log de transaes do banco de dados. Marca o banco de dados para utilizao de DBO. Opo obsoleta, mantida para compatibilidade retroativa. Anexa um banco de dados ao servidor a partir de um conjunto de arquivos que compem o banco de dados. Nome lgico do arquivo. Nome fsico do arquivo.

PRIMARY

LOG ON FOR LOAD

FOR ATTACH

filespec NAME FILENAME

21

Comandos SIZE Tamanho do arquivo. Os sufixos MB e KB podem ser utilizados para especificar megabytes ou kilobytes (default=1MB). Tamanho mximo que o arquivo pode atingir. A opo UNLIMITED especifica que o arquivo pode aumentar at o disco ficar cheio. Incremento de crescimento do arquivo. O valor pode ser especificado em MB, KB ou % (porcentagem do tamanho do arquivo no momento em que o incremento ocorre).

MAXSIZE

FILEGROWTH

CREATE DEFAULT

Cria um valor padro (default), que poder ser atribudo a uma coluna quando nenhum valor for fornecido a essa coluna durante uma insero.
CREATE DEFAULT nome_default AS expresso_constante

Argumento
nome_default expresso_constante

Descrio
Nome do objeto default. Expresso constante que contm o valor default a ser atribudo a uma coluna.

CREATE INDEX

Cria um ndice em uma tabela.


CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX nome_ndice ON tabela (coluna [,...]) [WITH [PAD_INDEX] [[,] FILLFACTOR = fator_preenchimento] [[,] IGNORE_DUP_KEY] [[,] DROP_EXISTING] [[,] STATISTICS_NORECOMPUTE] ] [ON filegroup]

Argumento
UNIQUE

Descrio
Cria um ndice exclusivo (no qual no possvel duas linhas terem o mesmo valor de ndice). Cria um ndice setorizado, que classifica fisicamente o contedo da tabela na ordem da(s) coluna(s) do ndice. Cria um ndice no-setorizado, que no altera a ordem das linhas na tabela. Nome do ndice.

CLUSTERED

NONCLUSTERED nome_ndice

22

Comandos tabela coluna PAD_INDEX Nome da tabela que contm a coluna ou as colunas a serem indexadas. Coluna ou colunas s quais o ndice se aplica. Especifica o espao a ser deixado livre em cada pgina (nodo) nos nveis intermedirios do ndice. Usa a porcentagem especificada em FILLFACTOR. Porcentagem de preenchimento de cada pgina de ndice durante a criao do ndice. Se igual a 100, preenche totalmente cada pgina de ndice; se 0, apenas as pginas de ndice de folha (leaf) sero preenchidas (default=0).

FILLFACTOR

IGNORE_DUP_KEY Ignora as tentativas de insero de valores duplicados na coluna (ou colunas) indexada. DROP_EXISTING Remove da tabela ndices com o mesmo nome. No recalcula automaticamente informaes estatsticas desatualizadas. ON filegroup Cria o ndice no filegroup especificado.

STATISTICS_NORECOMPUTE

CREATE PROCEDURE

Cria uma stored procedure (uma coleo gravada de comandos SQL).


CREATE PROC[EDURE] nomeproc [;nmero] [ {@parmetro tipo_dado} [VARYING] [= default] [OUTPUT] ] [,...] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ] [FOR REPLICATION] AS comandos_sql [...]

Argumento
nomeproc

Descrio
Nome da nova stored procedure. Preceda o nome com # para criar uma procedure temporria local e preceda com ## para criar uma temporria global. Nmero inteiro usado para agrupar procedures de mesmo nome, para que sejam removidas de uma s vez pelo comando DROP PROCEDURE. Parmetro para a procedure. Um ou mais parmetros podem ser declarados. Parmetros so locais procedure. Tipo de dado do parmetro.

;nmero

@parmetro

tipo_dado

23

Comandos VARYING Utilizado somente para parmetros de retorno do tipo cursor. Permite que o resultado seja construdo dinamicamente dentro da procedure e retornado como um cursor para o objeto que fez a chamada a essa procedure. Valor default do parmetro. Identifica um parmetro de retorno. Ignora o plano de execuo existente e gera outro sempre que a procedure for executada. Criptografa o texto de criao da procedure que fica na tabela syscomments.

default OUTPUT RECOMPILE ENCRYPTION

FOR REPLICATION Especifica que as procedures criadas para replicao no podem ser executadas no servidor assinante. Utilizado para criao de procedures para filtros de replicao. AS Especifica as aes que a procedure deve tomar, que so os comandos SQL que sero colocados logo aps esse identificador. Comandos da stored procedure.

comandos_sql CREATE RULE

Cria uma regra (rule). Uma regra define os valores vlidos para uma coluna ou tipo de dados. Uma regra vinculada a uma coluna ou tipo de dados atravs da stored procedure sp_bindefault.
CREATE RULE regra AS expresso_condio

Parmetro
regra

Descrio
Nome da regra a ser criada.

expresso_condio Especifica as condies que definem a regra. Pode ser qualquer expresso vlida em uma sentena WHERE. CREATE SCHEMA

Cria um esquema (schema). Um esquema contm declaraes a para criao de tabelas, views e privilgios de usurios.
CREATE SCHEMA AUTHORIZATION proprietrio [ <esquema> [...] ] <esquema> ::= {definio_tabela | definio_view | comando_grant}

24

Comandos

Argumento
proprietrio definio_tabela definio_view comando_grant

Descrio
Identificao (ID) do proprietrio do esquema. Especifica o comando CREATE TABLE que criar uma tabela no esquema. Especifica o comando CREATE VIEW que criar uma view para o esquema. Especifica um comando GRANT para conceder permisses a um usurio ou grupo de usurios.

CREATE STATISTICS

Cria um grupo de estatsticas referentes a uma tabela ou a colunas especficas de uma tabela.
CREATE STATISTICS nome_estatstica ON tabela (coluna [,...]) [ WITH [ [ FULLSCAN | SAMPLE nmero PERCENT ] [,] ] [ NORECOMPUTE] ]

Argumento
nome_estatstica tabela

Descrio
Nome do grupo de estatsticas a ser criado. Nome da tabela para a qual as informaes estatsticas esto sendo criadas. Nome da(s) coluna(s) ou do(s) ndice(s) para o(s) qual(is) as informaes estatsticas esto sendo criadas. Efetua a varredura completa do ndice ou da tabela ao acumular informaes estatsticas. O mesmo que SAMPLE 100 PERCENT.

coluna

FULLSCAN

SAMPLE nmero PERCENT Percentual utilizado para calcular as estatsticas por amostragem. Apenas uma parte da tabela ser lida. NORECOMPUTE No recalcula automaticamente informaes estatsticas desatualizadas.

25

Comandos CREATE TABLE

Cria uma nova tabela.


CREATE TABLE tabela ( { definio_coluna | coluna AS expresso | constraint_tabela } [,...] ) [ ON {filegroup | DEFAULT } ] [ TEXTIMAGE_ON { filegroup | DEFAULT } ] definio_coluna ::= coluna tipo_dados [ [ DEFAULT expresso_constante ] | [ IDENTITY [(valor_inicial, incremento ) [NOT FOR REPLICATION] ] ] ] [ ROWGUIDCOL ] [ constraint_coluna ] [ ...] constraint_coluna ::= [CONSTRAINT nome] { [ NULL | NOT NULL ] | [ { PRIMARY KEY | UNIQUE } [CLUSTERED | NONCLUSTERED] [WITH FILLFACTOR = fator_preenchimento] [ON {filegroup | DEFAULT} ]] ] | [ [FOREIGN KEY] REFERENCES tabela_ref [(coluna_ref) ] [NOT FOR REPLICATION] ] | CHECK [NOT FOR REPLICATION] (expr_lgica) } constraint_tabela ::= [CONSTRAINT nome ] { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUSTERED] { ( coluna [,...] ) } [ WITH FILLFACTOR = fator_preenchimento] [ON {filegroup | DEFAULT} ] ] | FOREIGN KEY [(coluna [,...])] REFERENCES tabela_ref [(coluna_ref [,...])] [ NOT FOR REPLICATION ] | CHECK [ NOT FOR REPLICATION ] }

26

Comandos

Argumento
tabela

Descrio
Nome da tabela a ser criada. Pode incluir o nome do banco de dados e o nome do proprietrio. Nome da coluna da tabela. Expresso que define o valor de uma coluna calculada. Uma coluna calculada uma coluna virtual que no est fisicamente armazenada na tabela e contm resultados de expresses constantes ou que utilizam as colunas da prpria tabela. Especifica em qual filegroup a tabela ser criada. Caso no seja especificado ser utilizado o filegroup default. Indica que colunas dos tipos de dados text, ntext e image sero colocadas em um filegroup especfico. Caso no seja especificado, sero colocadas no mesmo filegroup da tabela. Indica o tipo de dado da coluna. Especifica o valor atribudo coluna quando ele no tiver sido explicitamente fornecido durante a insero. Identifica uma coluna com a propriedade de auto-incremento, onde os valores so colocados automaticamente, seguindo o que estiver definido em valor_inicial e incremento. Somente uma coluna do tipo IDENTITY permitida por tabela. Valor que ser colocado na primeira linha a ser inserida na tabela. Incremento ao valor a ser atribudo a cada linha subseqente. No executa a propriedade de autoincremento quando a insero de dados estiver sendo feita pelo processo de replicao.

coluna AS expresso

ON

TEXTIMAGE_ON

tipo_de_dados DEFAULT

IDENTITY

valor_inicial incremento

NOT FOR REPLICATION

ROWGUIDCOL CONSTRAINT

Indica que a nova coluna um identificador global da linha. Indica o incio da definio de uma constraint PRIMARY KEY, FOREIGN KEY, CHECK ou DEFAULT. Determina se valores NULL so permitidos ou no na coluna. 27

NULL | NOT NULL

Comandos PRIMARY KEY Determina a chave primria da tabela, ou seja, os valores devem ser nicos para as colunas definidas nessa constraint. Somente uma constraint PRIMARY_KEY permitida por tabela. Determina que essa(s) coluna(s) deve(m) ter valores nicos. Indica se a constraint PRIMARY KEY ou UNIQUE ser clusterizada ou no. Veja o comando CREATE INDEX para mais detalhes. WITH FILLFACTOR Porcentagem de preenchimento de cada pgina de ndice durante a criao do ndice. Se igual a 100, preenche totalmente cada pgina de ndice; se 0, apenas as pginas de ndice de folha (leaf) sero preenchidas (default=0). Fornece integridade referencial entre as tabelas, ligando as chaves primrias s chaves estrangeiras. tabela_ref coluna_ref CHECK Tabela qual ser feita referncia pela chave estrangeira (Foreign key). Coluna qual ser feita referncia pela chave estrangeira. Semelhante s regras de validao (ver CREATE RULE). Esta opo serve para limitar os valores permitidos para a coluna. No executa a constraint CHECK quando a tabela estiver sendo alterada pelo processo de replicao. expresso_lgica coluna Expresso lgica utilizada na constraint CHECK que retorna TRUE ou FALSE. Coluna ou colunas que so utilizadas na definio das constraints.

UNIQUE

CLUSTERED | NONCLUSTERED

FOREIGN KEY...REFERENCES

NOT FOR REPLICATION

28

Comandos CREATE TRIGGER

Cria um trigger. Trigger um tipo especial de stored procedure que executada automaticamente quando dados so adicionados, modificados ou excludos do banco de dados.
CREATE TRIGGER nome_trigger ON tabela [WITH ENCRYPTION] { {FOR { [DELETE] [,] [INSERT] [,] [UPDATE] } [WITH APPEND] [NOT FOR REPLICATION] AS comando_sql [...] } | {FOR { [INSERT] [,] [UPDATE] } [WITH APPEND] [NOT FOR REPLICATION] AS { IF UPDATE (coluna) [{AND | OR} UPDATE (coluna)] [...] | IF (COLUMNS_UPDATED() {operador_binrio} bitmask_atualizado) { operador_comparao } bitmask_coluna [...] } comando_sql [ ...] } }

Argumento
tabela WITH ENCRYPTION

Descrio
Nome da tabela para a qual o trigger executado. Criptografa a definio do trigger na tabela syscomments. Tipos de operaes que ativam o trigger. Pelo menos um tipo deve ser especificado.

{ [DELETE] [,] [INSERT] [,] [UPDATE] } | { [INSERT] [,] [UPDATE]}

WITH APPEND

Indica que pode ser criado mais de um trigger para o mesmo tipo de operao (INSERT, DELETE ou UPDATE) em uma tabela e que todos eles sero executados seguindo a ordem em que foram criados. No executa o trigger quando a alterao da tabela estiver sendo feita pelo processo de replicao de dados.

NOT FOR REPLICATION

29

Comandos AS comando_sql Identifica uma seqncia lgica de comandos SQL que representa as aes que o trigger deve tomar. Existem duas tabelas que ficam disponveis durante a execuo dos triggers e que so de grande importncia. So elas: deleted e inserted. Elas tm exatamente a mesma estrutura da tabela que sofreu o INSERT, DELETE ou UPDATE e contm as linhas novas (INSERTED) e antigas (DELETED) afetadas por esses comandos. Testa se uma coluna foi alterada. Testa quais colunas foram inseridas e/ ou alteradas. Operador_bit_a_bit bitmask_atualizado operador_comparao bitmask_coluna Operador bit a bit. Bitmask das colunas que foram alteradas. Operador de comparao (=), (<), (>). Bitmask das colunas que sero verificadas.

IF UPDATE(coluna)

IF (COLUMNS_UPDATED())

CREATE VIEW

Cria uma view. View uma tabela virtual que representa uma maneira alternativa de ver dados em uma ou mais tabelas.
CREATE VIEW nome_view [(coluna [,...])] [WITH ENCRYPTION] AS comando_select [WITH CHECK OPTION]

Argumento
nome_view coluna WITH ENCRYPTION AS

Descrio
Nome da view. Nome a ser usado para uma coluna em uma view. Criptografa o comando CREATE VIEW na tabela syscomments. Especifica o comando SELECT que define a view. No pode incluir as clusulas ORDER BY, INTO, COMPUTE ou COMPUTE BY. Fora os comandos de modificao de dados aplicados pela visualizao a utilizarem os critrios do comando SELECT que define a view.

WITH CHECK OPTION

30

Comandos DBCC

O DBCC (Database Consistency Checker) verifica e corrige as estruturas internas de um banco de dados. extremamente importante checar a consistncia dos bancos de dados antes de fazer um DUMP DATABASE (Backup), pois bancos de dados corrompidos no podem ser restaurados. Existem vrios comandos DBCC para fazer a verificao completa no banco de dados, veja nas pginas 62 a 72.
DEALLOCATE

Remove uma referncia de cursor.


DEALLOCATE { { [GLOBAL] nome_cursor } | @varivel_cursor }

Argumento
GLOBAL nome_cursor varivel_cursor DECLARE

Descrio
Especifica que trata-se de um cursor global. Nome do cursor. Nome de uma varivel cursor.

Declara variveis locais. Utilize o comando SET para atribuir valores s variveis.
DECLARE { { @varivel_local tipo_dado } | { @varivel_cursor CURSOR} } [,...]

Argumento
@varivel_local tipo_dado @varivel_cursor CURSOR DECLARE CURSOR

Descrio
Nome da varivel. Tipo de dado da varivel. No pode ser do tipo text, ntext ou image. Nome da varivel tipo cursor. Especifica que a varivel um cursor local.

Define um cursor e suas propriedades.


DECLARE nome_cursor CURSOR [ LOCAL | GLOBAL ] [ FORWARD_ONLY | SCROLL ] [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ] [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ] [TYPE_WARNING] FOR comando_select [FOR UPDATE [OF coluna [,...]]]

31

Comandos

Argumento
LOCAL GLOBAL

Descrio
O cursor tem escopo local ao batch ou procedure no qual est sendo declarado. O cursor tem escopo global, permitindo que seja acessado de fora do batch ou procedure no qual est sendo declarado. O cursor s poder ser lido no sentido normal (da primeira ltima linha) e s permite o comando FETCH NEXT O cursor poder ser lido em qualquer sentido e os comandos FETCH [ NEXT | PRIOR | LAST | FIRST| ABOSOLUTE | RELATIVE] podero ser utilizados. O contedo do cursor esttico e no se altera, mesmo que os dados das tabelas que serviram de base sejam alterados. Isso feito atravs da criao de uma tabela temporria, com o resultado do SELECT que define o cursor e, ento, o cursor fica automaticamente baseado nessa tabela tamporria. Quando o cursor aberto (comando OPEN), criada uma tabela no tempdb que contm as chaves das linhas que fazem parte do cursor. O contedo dessa tabela fixo e ela utilizada pelo cursor para fazer a leitura das linhas nas tabelas-base. Dessa forma, linhas novas adicionadas s tabelas-base no sero includas no cursor, ao passo que qualquer alterao nas linhas existentes ser refletida automaticamente. Ao contrrio de STATIC, todas as modificaes feitas nas tabelas que servem de base ao cursor sero refletidas no mesmo. O cursor ser aberto com otimizao de performance e ser READ ONLY. Impede que atualizaes sejam feitas atravs desse cursor. Garante que podem ser feitas atualizaes atravs do cursor. Para isso, o SQL Server faz os bloqueios (locks) nas linhas que esto sendo lidas pelo cursor. Ao contrrio do SCROLL_LOCKS, no feito bloqueio nas linhas lidas pelo cursor e, dessa forma, no se garante que possam ser feitas atualizaes atravs do cursor, pois as linhas podem estar completamente diferentes do que estavam quando foram lidas pelo cursor.

FORWARD_ONLY

SCROLL

STATIC

KEYSET

DYNAMIC

FAST_FORWARD READ_ONLY SCROLL_LOCKS

OPTIMISTIC

32

Comandos TYPE_WARNING Envia mensagem de alerta ao usurio informando que houve converso dos tipos de dados no cursor. Comando SELECT que define o cursor. Define a lista de colunas que podem ser atualizadas atravs desse cursor. Caso a lista no seja definida, todas as colunas sero consideradas atualizveis, desde que o cursor no seja READ ONLY. DELETE

comando_select

FOR UPDATE [OF coluna [,...]]]

Elimina linhas de uma tabela.


DELETE [ FROM ] { nome_tabela WITH ( opo [...] ) | nome_view } [ FROM tabela_fonte [,...] ] [ WHERE condio ] [ OPTION ( opo [,...] ) ] Clusula WITH ::= { INDEX(nmero_ndice [,...] ) | FASTFIRSTROW | HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX } Clusula OPTION ::= { { HASH | ORDER } GROUP | { CONCAT | HASH | MERGE } UNION | FAST nmero_linhas | FORCE ORDER | MAXDOP | ROBUST PLAN | KEEP PLAN }

33

Comandos

Argumento
tabela WITH

Descrio
Nome da tabela da qual as linhas sero removidas. Instrues para o otimizador. Para mais detalhes, veja a clusula FROM do comando SELECT na pgina 52. Nome da view. Tabela(s) utilizada(s) para definir o critrio do conjunto de dados que ser removido da tabela. Para mais detalhes veja a clusula FROM do comando SELECT na pgina 52. Condies que devem ser satisfeitas para formar o conjunto de dados a ser removido. Quando estiver removendo dados atravs de um cursor, utilize a clusula CURRENT OF nome_cursor, que define a linha atual do cursor. Especifica as instrues que sero passadas ao otimizador. Para mais detalhes veja a clusula OPTION do comando SELECT na pgina 55.

nome_view FROM tabela_fonte

WHERE

OPTION

DENY

Probe o acesso a objetos ou a execuo de comandos SQL.


Permisses para execuo de comandos: DENY { ALL | comando [,...] } TO conta [,...] Permisses de objetos: DENY {ALL [PRIVILEGES] | permisso [,...]} { [ (coluna [,...]) ] ON { tabela | view } | ON {tabela | view} [ (coluna [,...]) ] | ON {stored_procedure | extended_procedure} } TO conta [,...] [CASCADE]

Argumento
ALL comando

Descrio
Especifica que todas as permisses aplicveis esto sendo negadas. Comando para o qual a permisso est sendo negada. Podem ser os seguintes: CREATE DATABASE, CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE e BACKUP LOG.

34

Comandos TO PRIVILEGES permisso Lista de usurios para os quais as permisses sero negadas. Palavra-chave opcional que pode ser includa para compatibilidade com SQL-92. Permisso que est sendo negada. Para tabelas ou views, podem ser SELECT, INSERT, DELETE, ou UPDATE; para procedures, EXECUTE. Coluna ou colunas a que voc quer negar acesso. Nome da tabela na qual as permisses esto sendo negadas. Nome da view na qual as permisses esto sendo negadas. Nome da procedure na qual as permisses esto sendo negadas.

coluna tabela view stored_procedure

extended_procedure Nome da procedure extendida na qual as permisses esto sendo negadas. CASCADE Nega permisses a uma conta que previamente tenha recebido alguma permisso de usurio com o direito WITH GRANT OPTION.

DROP DATABASE

Remove bancos de dados do SQL Server.


DROP DATABASE nome_bd [,...]

Parmetro
nome_bd DROP DEFAULT

Descrio
Nome do banco de dados a ser removido.

Remove padres (valores default) do banco de dados corrente. Utilize a procedure sp_help para ver a lista de defaults existentes.
DROP DEFAULT nome_default [,...] DROP INDEX

Remove ndices do banco de dados corrente.


DROP INDEX 'tabela.ndice' [,...]

Argumento Descrio
tabela ndice Nome da tabela onde o ndice foi criado. Nome do(s) ndice(s) a remover.

35

Comandos DROP PROCEDURE

Remove procedures do banco de dados corrente.


DROP PROCEDURE [owner.]procedure [,...] DROP PROC [owner.]procedure [,...] DROP RULE

Remove regras (rule) do banco de dados corrente.


DROP RULE regra [,...] DROP STATISTICS

Elimina as informaes estatsticas de uma ou mais colunas de uma tabela no banco de dados corrente.
DROP STATISTICS tabela.nome_estatstica[,...]

Argumento
tabela nome_estatstica

Descrio
Nome da tabela. Nome da estatstica criada com o comando CREATE STATISTICS.

DROP TABLE

Remove uma tabela e todos os seus dados alm dos objetos dependentes como ndices, triggers e constraints. Qualquer view criada com base em uma tabela que tenha sido eliminada tem de ser explicitamente removida com o comando DROP VIEW.
DROP TABLE tabela DROP TRIGGER

Remove triggers do banco de dados corrente.


DROP TRIGGER trigger [,...] DROP VIEW

Remove views do banco de dados corrente. Utilize a procedure sp_help para ver a lista de views existentes.
DROP VIEW view [,...]

36

Comandos DUMP

Cria uma cpia backup de um banco de dados ou cria uma cpia do arquivo de transaes em uma forma que poder ser lida usando as instrues BACKUP ou LOAD.
EXECUTE

Executa uma procedure de sistema, uma procedure, uma procedure estendida ou um comando SQL armazenado em uma varivel ou no. Executar uma procedure:
[[EXEC[UTE]] { [@status_retorno =] {nome_procedure [;nmero ] } [[@parmetro =] {valor | @varivel [OUTPUT] | [DEFAULT]] [,...] [WITH RECOMPILE]

Executar um comando SQL em um string:


EXEC[UTE] ({@varivel_string | [N]'string'} [+...])

Argumento
@status_retorno nome_procedure ;nmero @parmetro valor @varivel OUTPUT DEFAULT WITH RECOMPILE @varivel_string [N]'string'

Descrio
Varivel que armazena o status retornado pela procedure. Nome da procedure. Verso da procedure. Parmetro que ser passado para a procedure. Valor do parmetro. Varivel onde pode ser colocado o valor do parmetro de retorno da procedure. Especifica que a stored procedure deve retornar um parmetro. Informa o valor default do parmetro da procedure. Recompila a procedure antes de executla. Varivel local que contm um comando SQL. String que contm o comando SQL a ser executado.

37

Comandos FETCH

Faz a leitura de linhas de um cursor que tenha sido previamente declarado (DECLARE CURSOR) e aberto (OPEN).
FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n ] FROM ] {{ [GLOBAL] nome_cursor} | @varivel_cursor } [INTO @varivel; [,...]]

Argumento
NEXT PRIOR FIRST LAST ABSOLUTE n RELATIVE n GLOBAL nome_cursor INTO

Descrio
Retorna a linha imediatamente seguinte linha corrente. Retorna a linha imediatamente anterior linha corrente. Retorna a primeira linha do cursor. Retorna a ltima linha do cursor. Retorna a linha n do cursor. Retorna a linha que est 'n' posies frente da linha corrente. Especifica que nome_cursor refere-se a um cursor global. Nome do cursor. O comando fetch vai trazer uma linha inteira definida pelo comando SELECT no qual o cursor est baseado. A clusula INTO faz com que o contedo das colunas dessa linha que foi lida pelo FETCH seja colocado em variveis locais. As variveis locais devem ter tipos de dados compatveis com as colunas que esto sendo lidas.

@varivel_cursor Nome da varivel do tipo CURSOR.

GOTO

Desvia o fluxo de execuo para o comando identificado pelo label. Definio do label:
label:

Altera o fluxo de execuo:


GOTO label

Parmetro
label

Descrio
Define o ponto para onde o processamento ser desviado.

38

Comandos GRANT

Define as permisses de acesso ou execuo que um usurio ou grupo de usurios pode ter em relao aos objetos e comandos do banco de dados. Permisses de comandos:
GRANT { ALL | comando [,...] } TO usurio [,...]

Permisses de objetos:
GRANT { ALL [PRIVILEGES] | permisso [,...] } { [ (coluna [,...]) ] ON {tabela | view} | ON { tabela | view } [ (coluna [,...]) ] | ON {stored_procedure | extended_procedure} } TO usurio [,...] [ WITH GRANT OPTION ] [ AS {grupo | papel } ]

Argumento
ALL comando

Descrio
Especifica que todas as permisses aplicveis esto sendo concedidas. Comando que o usurio poder executar. Podem ser os seguintes: CREATE DATABASE, CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE e BACKUP LOG. Lista de usurios para os quais as permisses sero concedidas. Opcional. Utilizado para ficar em conformidade com as definies SQL-92. Permisso ou permisses a serem atribudas. Quando uma permisso de objeto estiver sendo configurada, ser preciso especificar seu tipo: SELECT, INSERT, DELETE, ou UPDATE para tabelas ou views, ou ainda EXECUTE para procedures. Nome da coluna. Nome da tabela. Nome da view. Nome da procedure. Nome da procedure estendida.

TO PRIVILEGES permisso

coluna tabela view stored_procedure extended_procedure

39

Comandos WITH GRANT OPTION Permite ao usurio repassar os direitos que acaba de receber para outros usurios. AS {grupo | papel} Especifica o grupo ou papel utilizado. Necessrio quando existem diversos papis ou grupos do Windows NT com permisses contraditrias.

IF...ELSE

Comando para determinar blocos de cdigo que sero executados quando determinadas condies forem verdadeiras ou falsas.
IF condio {comando_sql | bloco_comandos} [ELSE {comando_sql | bloco_comandos}]

Parmetro
condio

Descrio
Uma expresso que retorna True ou False. Pode conter um comando SELECT, que deve estar entre parnteses. Comandos SQL que devem ser executados. Caso seja um bloco de comandos, estes devem estar entre BEGIN e END.

comando_sql | bloco_comandos

INSERT

Adiciona uma nova linha em uma tabela ou em uma view.


INSERT [INTO] { tabela WITH (opo [...]) | view } { [ (colunas) ] { VALUES ( { DEFAULT | NULL | expresso } [,...] ) | comando_select | comando_execute } } | DEFAULT VALUES Clusula WITH ::= { INDEX(valor_ndice [,...] ) | FASTFIRSTROW | HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX }

40

Comandos

Argumento
[INTO] tabela WITH

Descrio
Especifica o nome da tabela. A palavrachave INTO opcional. Especifica as opes de otimizao que sero passadas ao otimizador, desabilitando a otimizao automtica. Para a descrio dessas opes veja a a clusula FROM do comando SELECT na pgina 52. Nome da view. Nomes das colunas, separados por vrgula, onde os dados sero inseridos. Especifica a lista de valores a serem inseridos. Fora o SQL Server a inserir o valor padro (default) definido para a coluna. Constante ou varivel, ou ainda uma expresso, que resulte em um valor constante. Comando SELECT que retorna linhas de dados que sero inseridas na tabela. As colunas do SELECT devem ser compatveis (posico e tipo de dados) com as colunas da tabela onde as linhas estiverem sendo inseridas. Qualquer instruo EXECUTE vlida que retorne dados com as instrues SELECT ou READTEXT. Fora a nova linha a conter os valores padro definidos para cada coluna.

view colunas VALUES DEFAULT expresso

comando_select

comando_execute

DEFAULT VALUES

KILL

Encerra um processo (conexo) do usurio.


KILL {spid}

Argumento Descrio
spid Nmero do processo do usurio. Para saber os nmeros dos processos, execute a procedure sp_who.

LOAD

Carrega uma cpia de backup. Comando obsoleto, mantido apenas para compatibilidade retroativa. Recomenda-se utilizar o comando RESTORE.

41

Comandos OPEN

Abre um cursor de servidor Transact-SQL e preenche o cursor executando o comando Transact-SQL especificado no comando DECLARE CURSOR ou SET varivel_cursor.
OPEN { { [ GLOBAL ] nome_cursor } | varivel_cursor } PRINT

Exibe uma mensagem definida pelo usurio.


PRINT 'texto' | @varivel_local | @@funco | expresso

Argumento
texto

Descrio
Qualquer texto que se queira colocar entre as aspas. Nome de uma funo que retorna um string. Expresso que retorna um string.

@varivel_local Varivel que contm a mensagem. @@funo expresso RAISERROR

Retorna uma mensagem definida pelo usurio e configura um flag de sistema para registrar a ocorrncia de um erro.
RAISERROR ( {id_mens | mensagem } {, gravidade, state } [, argumento [,...] ] ) [ WITH opo [,...] ]

Argumento
id_mens mensagem gravidade estado argumentos WITH LOG

Descrio
Mensagem definida pelo usurio que est armazenada na tabela master..sysmessages Mensagem que pode ser formatada de forma similar funo printf da linguagem C. Nvel de gravidade associado mensagem. Valor arbitrrio que pode variar de 1 a 127. Parmetros que sero substitudos pelos flags que foram colocados em msg_str. Especifica uma opo adicional que pode ter os seguintes valores: Cria uma mensagem no log do SQL Server e no log de aplicaes do Windows NT (o qual pode ser visto com Event Viewer). Envia a mensagem imediatamente. Altera o valor da varivel global @@ERROR para id_mens ou 50000.

NOWAIT SETERROR

42

Comandos READTEXT

L valores text, ntext, ou image de uma coluna text, ntext, ou image.


READTEXT {tabela.coluna texto_ptr offset tamanho} [HOLDLOCK]

Argumento
tabela.coluna text_ptr offset tamanho

Descrio
Nome da tabela e coluna no formato (tabela.coluna). Ponteiro do texto. Deve ser do tipo binary(16). Nmero de bytes que devem ser ignorados antes da leitura dos dados propriamente ditos. Nmero de bytes (com tipos de dados text ou image) ou caracteres (com o tipo de dado ntext) de dados a serem lidos. Se o tamanho for 0, 4 Kbytes de dados sero lidos. Bloqueia para leitura o valor de texto at o final da transao.

HOLDLOCK

RECONFIGURE

Atualiza o valor atualmente configurado (coluna config_value do conjunto de resultados sp_configure) de uma opo de configurao alterada com a procedure do sistema sp_configure. Somente o administrador do banco de dados pode executar este comando.
RECONFIGURE [ WITH OVERRIDE ]

Argumento
RECONFIGURE

Descrio
Especifica que, se o ajuste de configurao no exigir uma parada e reinicializao do servidor, o valor atualmente em execuo deve ser atualizado. Fora a reconfigurao para um valor especfico, mesmo que este esteja fora da faixa de valores vlidos para a configurao que foi alterada.

WITH OVERRIDE

43

Comandos RESTORE

Restaura um log e um banco de dados, arquivo(s) de banco(s) de dados ou log. Restaura um banco de dados inteiro:
RESTORE DATABASE nome_bd [ FROM disp_backup [,...] ] [ WITH [ DBO_ONLY ] [ [,] FILE = num_arq ] [ [,] MEDIANAME = tipo_mdia ] [ [,] MOVE 'nome_logico_arq' TO 'nome_arq_so' ] [,...] [ [,] {NORECOVERY | RECOVERY | STANDBY = arq_rec}] [ [,] {NOUNLOAD | UNLOAD} ] [ [,] REPLACE ] [ [,] RESTART ] [ [,] STATS [= porcentagem] ] ]

Restaura arquivos ou grupos de arquivos:


RESTORE DATABASE nome_bd { FILE = nome | FILEGROUP = nome } [,...] [ FROM disp_backup [,...] ] [ WITH [ DBO_ONLY] [ [,] FILE = num_arq [ [,] MEDIANAME = tipo_midia ] [ [,] NORECOVERY] [ [,] {NOUNLOAD | UNLOAD} ] [ [,] REPLACE] [ [,] RESTART] [ [,] STATS [= porcentagem] ] ]

Restaura um log de transaes:


RESTORE LOG nome_bd [ FROM disp_backup [,...] ] [ WITH [ DBO_ONLY ] [ [,] FILE = num_arq [ [,] MEDIANAME = tipo_midia ] [[,] {NORECOVERY | RECOVERY | STANDBY = arq_rec}] [ [,] {NOUNLOAD | UNLOAD}] [ [,] RESTART] [ [,] STATS [= porcentagem ] ] [ [,] STOPAT = data_hora ] ]

44

Comandos

Argumento
DATABASE | LOG

Descrio
Indica que deve ser restaurado um backup completo (DATABASE) ou somente do log de transaes (LOG). Nome do banco de dados. Pode estar contido em uma varivel local. Especifica os dispositivos de backup a partir dos quais ser restaurado o backup. Dispositivo de backup permanente ou temporrio para utilizar no processo de restaurao do banco de dados. Restringe o acesso ao banco de dados recentemente restaurado somente ao proprietrio do banco de dados (DBO). Identifica o conjunto de backups a ser restaurado. Especifica o nome da mdia para todo o conjunto de backups. Especifica que o nome_lgico dado deve ser movido para nome_fsico. Instrui a operao de restaurao a no retroceder qualquer transao ainda no submetida. Indica que a restaurao deve ser revertida (roll back) em quaisquer transaes no realizadas e que devem trazer o banco de dados para um estado consistente. Especifica um arquivo onde sero colocadas as informaes para se desfazer a restaurao atual. No ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (opo default). Indica que a restaurao deve substituir qualquer banco de dados com o mesmo nome que atualmente exista em seu servidor. Reinicia seu backup a partir de onde parou na tlima vez. Indica que voc gostaria que um status informasse o progresso (em precentual) da operao de restaurao. Nome dos arquivos a serem utilizados para restaurao. 45

nome_bd FROM disp_backup

DBO_ONLY

FILE MEDIANAME MOVE NORECOVERY

RECOVERY

STANDBY

NOUNLOAD

UNLOAD

REPLACE

RESTART STATS

FILE

Comandos FILEGROUP STOPAT Nome dos grupos de arquivos (filegroups) a serem utilizados para restaurao. Indica que o banco de dados deve ser restaurado para o estado em que se encontrava em uma data/hora especfica.

RESTORE FILELISTONLY

Retorna uma lista de backups do banco de dados e arquivos de log armazenados no dispositivo especificado.
RESTORE FILELISTONLY FROM disp_backup [WITH [FILE = nmero] [ [, ] {NOUNLOAD | UNLOAD} ] ]

Argumento
disp_backup FILE NOUNLOAD UNLOAD

Descrio
Especifica o dispositivo de backup (permanente ou temporrio) a ser utilizado. Especifica qual backup no dispositivo de backup deve ser examinado. No ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (default).

RESTORE HEADERONLY

Restaura todas as informaes dos cabealhos (header) de todos os conjuntos de backups em um determinado dispositivo de backup.
RESTORE HEADERONLY FROM disp_backup [WITH {NOUNLOAD | UNLOAD}]

Argumento
disp_backup NOUNLOAD UNLOAD

Descrio
Especifica o dispositivo de backup (permanente ou temporrio) a ser utilizado. No ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (opo default).

RESTORE LABELONLY

Retorna informaes sobre a mdia de backup identificada no dispositivo de backup especificado.


RESTORE LABELONLY FROM disp_backup [WITH {NOUNLOAD | UNLOAD}] 46

Comandos

Argumento
disp_backup NOUNLOAD UNLOAD

Descrio
Especifica o dispositivo de backup (permanente ou temporrio) a ser utilizado. No ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (opo default).

RESTORE VERIFYONLY

Verifica a integridade dos backups contidos no dispositivo de backup. Retorna a informao se o backup pode ou no ser restaurado.
RESTORE VERIFYONLY FROM disp_backup [,...] [WITH [FILE = nmero ] [[,] {NOUNLOAD | UNLOAD}] [[,] LOADHISTORY] ]

Argumento
disp_backup FILE NOUNLOAD UNLOAD

Descrio
Especifica o dispositivo de backup (permanente ou temporrio) a ser utilizado. Especifica qual backup no dispositivo de backup deve ser examinado. No ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando. Retrocede e ejeta automaticamente a fita do dispositivo de fita ao trmino da execuo do comando (opo default).

LOADHISTORY Adiciona as informaes sobre o backup s tabelas de backup no banco de dados msdb. RETURN

Sai incondicionalmente de uma consulta (query) ou procedure. Os comandos que seguem RETURN no so executados.
RETURN ( [expr_inteira] )

Parmetro
expr_inteira

Significado
Valor inteiro a ser retornado como status de execuo de uma procedure.

47

Comandos REVOKE

Remove uma permisso previamente concedida (GRANT) ou negada (DENY), de um usurio no banco de dados corrente. Permisses de comandos:
REVOKE { ALL | comando [,...] } FROM usurio [,...]

Permisses de objetos:
REVOKE [GRANT OPTION FOR] { ALL [PRIVILEGES] | permisso[,...] } { [ (coluna[,...])] ON {tabela | view} | ON {tabela | view}[(coluna[,...]) ] | {stored_procedure | extended_procedure } } FROM conta [,...] [CASCADE] [AS {grupo | papel}]

Argumento
ALL comando

Descrio
Especifica que todas as permisses aplicveis esto sendo removidas. Comando para o qual a permisso est sendo revogada. Podem ser os seguintes: CREATE DATABASE, CREATE DEFAULT, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW, BACKUP DATABASE e BACKUP LOG Nome do usurio de banco de dados, papel de banco de dados, usurio ou grupo do Windows NT para o qual a permisso est sendo revogada.

FROM

GRANT OPTION FOR Remove a opo de repassar as permisses para outros usurios. PRIVILEGES permisso Palavra-chave opcional que pode includa para compatibilidade com o SQL-92. Permisso de objeto que est sendo revogada: SELECT, INSERT, DELETE, UPDATE ou REFERENCES, ou EXECUTE para procedures. Nome da coluna cujas permisses devem ser revogadas. Nome da tabela no banco de dados corrente cujas permisses devem ser revogadas. Nome da view no banco de dados corrente cujas permisses devem ser revogadas.

coluna tabela view

48

Comandos stored_procedure Nome da stored procedure no banco de dados corrente cujas permisses devem ser revogadas.

extended_procedure Nome da stored procedure extended no banco de dados corrente cujas permisses devem ser revogadas. FROM CASCADE Lista de contas dos usurios. Revoga permisses que foram concedidas por um usurio que previamente recebeu a concesso WITH GRAND OPTION. Especifica o grupo ou papel utilizado. Necessrio quando existem diversos papis ou grupos do Windows NT com permisses contraditrias.

AS {grupo | papel}

ROLLBACK TRANSACTION

Cancela uma transao.


ROLLBACK [ TRAN[SACTION ] [ nome ] ROLLBACK WORK

Cancela uma transao. Similar a ROLLBACK TRANSACTION, exceto que esta aceita um nome de transao.
ROLLBACK [WORK] SAVE TRANSACTION

Cria um ponto de salvamento dentro de uma transao.


SAVE TRAN[SACTION] nome SELECT {@varivel_local = expr} [,...]

Comando utilizado para atribuio de valores a variveis locais. Isso tambm pode ser feito com o comando SET @varivel_local = expr.
SELECT

Obtm linhas de um banco de dados e permite a seleo de uma ou mais linhas ou colunas de uma ou mais tabelas e/ou views. Sintaxe bsica:
SELECT colunas FROM tabela [,...] [WHERE condio] [GROUP BY lista_colunas_grupo] [HAVING condio] [ORDER BY lista_colunas_ordem [ASC | DESC] ] 49

Comandos

Sintaxe completa:
SELECT [ALL | DISTINCT] [TOP n] [PERCENT] [WITH TIES]] coluna [,...] [ INTO nova_tabela ] [ FROM tabela [,...] ] [ WHERE condio ] [ GROUP BY [ALL] expr_grupo [,...] [ WITH { CUBE | ROLLUP } ] ] [ HAVING condio ] [ ORDER BY coluna [ { ASC | DESC } ] [,...] ] [ COMPUTE funo_agregada(expr) } [,...] [BY expr [,...] ] [ FOR BROWSE ] [OPTION (opo_otimizao [,...]) ]

Argumento
ALL DISTINCT TOP n [PERCENT]

Descrio
Linhas duplicadas podem aparecer no resultado. Linhas duplicadas devem ser removidas antes das linhas serem retornadas. Retorna somente as primeiras n linhas. Caso PERCENT seja especificado, somente n% das linhas da tabela sero retornadas. Valores repetidos das colunas indicadas na clusula ORDER BY sero mostrados. Colunas que sero o resultado da query. Os nomes das colunas devem estar separados por vrgulas. O caractere * indica que todas as colunas de todas as tabelas indicadas na clusula FROM sero retornadas. Quando essa coluna tiver o mesmo nome em mais de uma tabela ser preciso indicar o nome da tabela (tabela.coluna). Cria uma nova tabela tendo como contedo as linhas resultantes da consulta. Especifica as tabelas de onde os dados sero retornados. Para mais detalhes veja a clusula FROM na pgina 52. Restringe os registros a serem retornados pela consulta queles que satisfaam a condio especificada. Agrupa dados de resumo que atendam aos critrios da clusula WHERE a serem retornados como linhas nicas. Inclui todos os grupos no resultado. Colunas ou expresses que serviro como base para o agrupamento dos resultados.

WITH TIES colunas

INTO FROM

WHERE

GROUP BY

ALL expr_grupo

50

Comandos CUBE Adiciona linhas de resumo ao resultado para cada combinao possvel de grupo e subgrupo. Sero adicionadas aos resultados linhas que sumarizem os valores de cada grupo para cada conjunto de funes agregadas utilizadas. Especifica uma condio de pesquisa para um grupo ou uma funo agregada. Normalmente utilizada com a clusula GROUP BY. Quando GROUP BY no for usada, HAVING comportar-se- como a clusula WHERE. Especifica o tipo de ordenao do conjunto de resultados. Pode ser nomes de colunas ou operaes feitas em colunas, como, por exemplo, substring (para tipos de dados char, varchar), datepart (para tipos de dados datetime, smalldatetime) e floor (para tipos de dados numricos), entre outras tantas expresses possveis. Especifica que os valores na coluna especificada devero ser ordenados em ordem ascendente; do menor valor para o maior valor. Especifica que os valores na coluna especificada devero ser ordenados em ordem descendente; do maior valor para o menor valor. Gera totais que aparecem como colunas de sumrio adicionais no conjunto de resultados. Com a opo BY, gera quebras e subtotais no conjunto de resultados.

ROLLUP

HAVING

ORDER BY expresso

ASC

DESC

COMPUTE

funo_agregada Nome da funo agregada a ser executada. Veja Funes de Agregao na pgina 81. expr BY expr Pode ser nome de coluna ou operaes feitas sobre as colunas. Gera quebras e subtotais cada vez que um novo grupo for criado em relao expresso indicada. Indica que podem ser feitas atualizaes por aplicaes que utilizam a DB-Library. Para isso, a tabela deve ter uma coluna do tipo timestamp e uma chave nica.

FOR BROWSE

51

Comandos

Clusula FROM Especifica as tabelas de onde os dados sero retornados.


[ FROM {tabela_fonte} [,...] ] tabela_fonte ::= nome_tabela [ [AS] apelido_tabela ] [ WITH ( opo [,...]) ] | nome_view [ [AS] apelido_tabela ] | funo_rowset [ [AS] apelido_tabela ] | tabela_derivada [AS] apelido_tabela [ (apelido_coluna [,...] ) ] | joined_table tabela_join ::= tabela tipo_join tabela ON condio | tabela CROSS JOIN tabela | tabela_join tipo_join ::= [ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ instrues_otimizador ] JOIN Clusula WITH ::= { INDEX (nmero_ndice [,...]) | FASTFIRSTROW | HOLDLOCK | NOLOCK | PAGLOCK | READCOMMITTED | READPAST | READUNCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX | UPDLOCK }

Argumento
tabela_fonte

Descrio
Indica as tabelas, views e tabelas derivadas para o comando SELECT. Nome da tabela e apelido(opcional).

nome_tabela [ [AS] apelido_tabela ] nome_view [ [AS] apelido_tabela ] Nome da view e apelido(opcional). funo_rowset [ [AS] apelido_tabela ] Nome da funo rowset (utilizada para tabelas em servidores remotos).

52

Comandos WITH Indica para o otimizador as instrues que sero utilizadas na execuo da query, porm essas instrues sero utilizadas somente nas tabelas que estiverem indicadas. Fora o otimizador a utilizar o ndice indicado. Fora a otimizao da query a trazer rapidamente a primeira linha do resultado e depois continuar a execuo normalmente. Fora o otimizador a fazer bloqueio (lock), do tipo SHARED nas pginas lidas, porm libera-o somente ao final da execuo da query. Normalmente, os locks so liberados quando as pginas bloqueadas no so mais necessrias query. Fora o otimizador a fazer a leitura de todos os dados necessrios query, independente de estarem bloqueados ou no, mesmo que estejam sendo alterados por outras transaes. Dessa forma, a query executada sem esperar o trmino da transao que est bloqueando as linhas em questo; por outro lado, correse o risco de o resultado no ser verdadeiro, pois as transaes pendentes podem no ser efetivadas. Fora o otimizador a fazer bloqueios (lock) com abrangncia de pgina em vez da tabela inteira. Isso permite que mais usurios tenham acesso aos dados da tabela, porm resulta em perda de desempenho.

INDEX FASTFIRSTROW

HOLDLOCK

NOLOCK

PAGLOCK

READCOMMITTED Fora o otimizador a fazer bloqueio (lock) do tipo SHARED nas pginas que esto sendo utilizadas, permitindo que as mesmas sejam alteradas. No entanto, as alteraes feitas durante a execuo da query no aparecero no resultado da mesma. READPAST Fora o otimizador a no ler linhas que estejam sendo alteradas por outra transao. Dessa forma, a query executada sem esperar o trmino da transao que est bloqueando a linha em questo, mesmo comprometendo o resultado final da query. ver NOLOCK acima.

READUNCOMMITTED

53

Comandos REPEATABLEREAD Fora o otimizador a fazer o bloqueio (lock) em todas as pginas utilizadas pela query, no permitindo alteraes nas mesmas. No entanto, se novas linhas forem inseridas, elas faro parte do resultado, pois so feitas vrias leituras lgicas at chegar-se ao resultado final. ROWLOCK Fora o otimizador a fazer o bloqueio (lock) de linha (row level lock) em vez de bloquear uma pgina interia. ver HOLDLOCK acima. Fora o otimizador a fazer um bloqueio (lock) do tipo SHARED na tabela inteira at o trmino da execuo da query. Fora o otimizador a fazer um bloqueio (lock) do tipo EXCLUSIVE na tabela inteira at o trmino da execuo da query. Isso faz com que ningum consiga efetuar alteraes nem consultas nessa tabela enquanto o lock estiver ativo. Fora o otimizador a fazer um bloqueio (lock) do tipo UPDATE nas pginas lidas enquanto a query estiver sendo executada. Isso faz com que ningum consiga efetuar consultas ou alteraes nessas pginas ou na tabela inteira. Resultado de um comando select, que pode ser colocado como uma tabela derivada. apelido_coluna tabela_join Apelido da coluna. Tabela que se relaciona com outra tabela indicada na clusula FROM, de forma que somente as linhas onde as chaves de ambas so correspondentes sero retornadas. Tipo de Join. Todas as linhas onde as chaves so correspondentes sero retornadas (default). Todas as linhas da tabela esquerda sero retornadas. Aquelas que no encontrarem suas correspondentes na tabela direita tero como resultado o valor NULL. Todas as linhas da tabela direita sero retornadas.Aquelasquenoencontraremsuas correspondentes na tabela esquerda tero como resultado o valor NULL.

SERIALIZABLE TABLOCK

TABLOCKX

UPDLOCK

tabela_derivada [ [AS] apelido_tabela ]

tipo_join INNER

LEFT [OUTER]

RIGHT [OUTER]

54

Comandos FULL [OUTER] Sero retornadas as colunas que no encontrarem suas correspondentes esquerda ou direita, porm com valor NULL. Indica que as tabelas ou views especificadas tero uma operao de Join, que significa uma relao entre elas, buscando como resultado as chaves correspondentes. Condio em que a operao de Join se baseia.

JOIN

ON condio

Clusula UNION Combina o resultado de duas ou mais consultas em um nico conjunto de resultados, consistindo de todas as linhas pertencentes a todas as consultas da unio.
{ especificao_query | ( expresso_query ) } UNION [ALL] especificao_query | ( expresso_query ) [UNION [ALL] especificao_query | ( expresso_query ) [...] ]

Argumento

Descrio
Definio completa de uma query; ou seja, comando SELECT contendo a lista de colunas e condies.

especificao_query | ( expresso_query )

UNION

Indica a unio dos resultados de duas ou mais queries. Para isso, a quantidade de colunas e os tipos de dados devem ser correspondentes. Indica que linhas duplicadas sero mostradas.

ALL

Clusula OPTION Indica que as instrues para o otimizador sero vlidas por toda a query.
OPTION (instruo [,...]) Instruo ::= { { HASH | ORDER } GROUP | { CONCAT | HASH | MERGE } UNION | { LOOP | MERGE | HASH } JOIN | FAST nmero_linhas | FORCE ORDER | MAXDOP nmero | ROBUST PLAN | KEEP PLAN }

55

Comandos

Argumento
GROUP

Descrio
Especifica que as agregaes descritas nas clusulas GROUP BY ou COMPUTE da query devem usar hashing (HASH) ou ordenao (ORDER). Operaes UNION so feitas utilizando merge (MERGE), hash (HASH) ou concatenao (CONCAT). Todas operaes de join utilizam loop (LOOP), merge (MERGE) ou hash (HASH). A query executada de forma otimizada at trazer as primeiras 'n' linhas e depois continua a execuo normal at o final.

UNION

JOIN FAST

FORCE ORDER Especifica que a join order indicada pela sintaxe da consulta ser preservada durante a otimizao da consulta. MAXDOP Sobrepe a opo de configurao max degree of parallelism (de sp_configure) somente para a consulta especificada nesta opo. Fora o otimizador a tentar um plano para atingir o tamanho mximo potencial da linha em detrimento do desempenho. Fora o otimizador a no fazer a recompilao do plano de execuo quando ele calcular que deveria.

ROBUST PLAN

KEEP PLAN

SET

Atribui um valor a uma varivel local definida pelo comando DECLARE.


SET @varivel_local = expresso SET

Comandos SET definem opes para a sesso corrente do usurio. Para mais informaes sobre comandos SET veja as pginas 73 a 80.
SETUSER

Permite que um usurio com o papel sysadmin possa se passar por outro usurio. Instruo obsoleta, mantida apenas para compatibilidade retroativa.
SETUSER [ 'usurio' [ WITH NORESET ] ]

56

Comandos

Argumento
usurio

Descrio
Nome da conta do usurio pelo qual o Sysadmin quer se passar.

WITH NORESET Especifica quais instrues SETUSER subseqentes (sem o nome do usurio especificado) no reinicializaro o administrador do sistema ou o proprietrio do banco de dados. SHUTDOWN

Interrompe a execuo do SQL Server. Somente o administrador do sistema pode executar este comando.
SHUTDOWN [ WITH NOWAIT ]

Parmetro
WITH NOWAIT

Descrio
Interrompe imediatamente, sem executar pontos de verificao (checkpoints) em cada banco de dados.

TRUNCATE TABLE

Remove todas as linhas de uma tabela, mantendo somente sua estrutura.


TRUNCATE TABLE tabela UPDATE

Altera os dados existentes em uma tabela.


UPDATE { tabela WITH ( opo [...]) | nome_view } SET { nome_coluna = { expresson | DEFAULT | NULL } | @varivel = expresso | @varivel = coluna = expresso } [,...] [ FROM tabela_fonte [,...] ] [ WHERE condio ] [ OPTION ( opo [,...] ) ] Clusula WITH ::= { INDEX(nmero_ndice [,...]) | FASTFIRSTROW | HOLDLOCK | PAGLOCK | READCOMMITTED | REPEATABLEREAD | ROWLOCK | SERIALIZABLE | TABLOCK | TABLOCKX } 57

Comandos Clusula OPTION ::= { { HASH | ORDER } GROUP | { CONCAT | HASH | MERGE } UNION | {LOOP | MERGE | HASH} JOIN | FAST nmero_linhas | FORCE ORDER | MAXDOP | ROBUST PLAN | KEEP PLAN }

Argumento
nome_tabela WITH

Descrio
Nome da tabela a ser atualizada. Especifica as instrues para o otimizador. Para mais detalhes veja a clusula FROM do comando SELECT na pgina 52. Nome da view a ser atualizada. Lista de colunas a serem atualizadas. Nome da coluna que ser atualizada. Expresso cujo resultado ser colocado na coluna ou varvel que est sendo atualizada. O valor default definido na coluna ser colocado na mesma. Nome da varivel que ser atualizada. Tabelas utilizadas para definir o critrio do conjunto de dados que ser atualizado. Para mais detalhes, veja a clusula FROM do comando SELECT na pgina 52. Condies que devem ser satisfeitas para formar o conjunto de dados a ser atualizado. Quando estiver atualizando dados atravs de um cursor, utilize a clusula CURRENT OF nome_cursor, que define a linha atual do cursor. Especifica as instrues que sero passadas ao otimizador. Para mais detalhes, veja a clusula OPTION do comando SELECT na pgina 55.

nome_view SET Nome_coluna expresso

DEFAULT @nome_varivel FROM tabela_fonte

WHERE

OPTION

58

Comandos UPDATETEXT

Atualiza um campo text, ntext ou image. Utilize o UPDATETEXT para alterar uma parte de uma coluna do tipo text, ntext, ou image. Para alterar todo o contedo das colunas desses tipos de dados, utilize o comando WRITETEXT.
UPDATETEXT {tabela_dest.coluna_dest texto_ptr_dest } { NULL | insert_offset } { NULL | tamanho_delete } [WITH LOG] [ posio_insert | {tabela.coluna texto_ptr_fonte} ]

Argumento

Descrio
Nome da tabela e coluna com tipo text, ntext ou image a serem atualizadas.

tabela_dest.coluna_dest

texto_ptr_dest

Valor (binary(16)) de ponteiro de texto (retornado pela funo TEXTPTR) que aponta para os dados do tipo text, ntext ou image a serem atualizados. Posio inicial a partir da qual os dados sero atualizados.

insert_offset

tamanho_delete Tamanho (em bytes) da poro de dados a ser removida. WITH LOG Especifica que os dados inseridos do tipo text, ntext ou image sero registrados em arquivos de log. Possibilita a recuperao, mas pode rapidamente aumentar o tamanho do log de transaes. Os dados sero inseridos na coluna, na posio definida por este parmetro. Nome da tabela e coluna utilizadas como fonte dos dados inseridos. Ponteiro para a coluna indicada como fonte de dados para a atualizao.

posio_insert tabela.coluna texto_ptr_fonte

UPDATE STATISTICS

Atualiza as informaes sobre a distribuio dos valoreschave de um ou mais ndices na tabela especificada. automaticamente executado quando um ndice criado em uma tabela que contm dados.
UPDATE STATISTICS tabela [ ndice | (nome_estatstica[,...] ) ] [ WITH [ [FULLSCAN] | SAMPLE nmero { PERCENT | ROWS } ] ] [ [,] [ ALL | COLUMNS | INDEX ] [ [,] NORECOMPUTE] ] 59

Comandos

Argumento
tabela

Descrio
Nome da tabela para a qual as informaes estatsticas esto sendo atualizadas. Nome do ndice para o qual as informaes estatsticas esto sendo atualizadas. Nome da estatstica criada com o comando CREATE STATISTCS. Efetua a varredura completa do ndice ou tabela ao acumular as informaes estatsticas. O mesmo que SAMPLE 100 PERCENT. Especifica as linhas que sero tomadas por amostragem para o clculo das estatsticas. Esse nmero pode ser um percentual ou um valor absoluto correspondente quantidade de linhas.

ndice

nome_estatstica FULLSCAN

SAMPLE nmero {PERCENT | ROWS}

ALL | COLUMNS | INDEX

Especifica se o comando UPDATE STATISTICS afetar as informaes estatsticas de coluna e ndices, ou todas as informaes estatsticas existentes. No recalcula automaticamente informaes estatsticas desatualizadas.

NORECOMPUTE

USE

Altera o contexto de banco de dados para o banco de dados especificado.


USE nome_db WAITFOR

Especifica um intervalo de tempo que o SQL Server deve esperar antes de executar o prximo comando ou procedure no lote, ou determina um horrio para execuo do comando.
WAITFOR { DELAY 'horrio' | TIME 'horrio' }

Parmetro
DELAY TIME

Descrio
O SQL Server deve esperar o perodo de tempo especificado (no mximo 24 horas). O SQL Server deve esperar at o horrio especificado (no formato tipo datetime).

60

Comandos WHILE

Executa um comando_sql ou um bloco de comandos enquanto uma condio for verdadeira. A condio verificada antes da execuo do comando SQL ou bloco de comandos.
WHILE condio { comando_sql | bloco_comandos } [BREAK] { comando_sql | bloco_comandos } [ CONTINUE ]

Parmetro
condio

Descrio
Uma expresso que retorna True ou False. Se a condio contiver um comando SELECT, ele dever estar entre parnteses. Comando SQL ou bloco de comandos SQL delimitados pelas palavras-chave BEGIN e END.

comando_sql | bloco_comandos

BREAK CONTINUE WRITETEXT

Sai do lao WHILE mais interno. Reinicia o lao WHILE.

Permite a atualizao interativa de uma coluna do tipo text, ntext ou image. No pode ser usado em colunas do tipo text, ntext e image em views.
WRITETEXT { tabela.coluna texto_ptr } [ WITH LOG ] { dados }

Argumento
tabela.coluna texto_ptr WITH LOG

Descrio
Nome da tabela e coluna do tipo text, ntext ou image a serem atualizadas. Valor (tipo binary(16)) que armazena o ponteiro para os dados do tipo text, ntext ou image. Grava a transao no log de transaes. Atentar para o fato de que transaes com os tipos de dados text, ntext, ou image ocupam muito espao no log. Dados do tipo text, ntext ou image a serem armazenados.

data

61

DBCC

Comandos DBCC
DBCC CHECKALLOC

Verifica e tenta corrigir, quando necessrio, a alocao e uso de todas as pginas em um banco de dados.
DBCC CHECKALLOC ( 'nome_bd' [, NOINDEX | { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]) [ WITH { ALL_ERRORMSGS | NO_INFOMSGS } ]

Argumento
nome_bd NOINDEX

Descrio
Nome do banco de dados. No verifica ndices no clusterizados. Corrige a alocao das pginas, removendo objetos corrompidos que estejam causando a perda dos dados que esto nesses objetos.

REPAIR_ALLOW_DATA_LOSS

REPAIR_FAST

Tenta corrigir eventuais inconsistncias, mas no remove objetos que eventualmente estejam corrompidos. Tenta corrigir a alocao das pginas. Caso todas as eventuais inconsistncias tenham sido corrigidas, reconstri todos os ndices do banco de dados. Mensagens a serem retornadas. Exibe somente significativas. as mensagens

REPAIR_REBUID

WITH NO_INFOMSGS

ALL_ERRORMSGS Exibe todas as mensagens de erro.

DBCC CHECKCATALOG

Verifica e tenta corrigir, quando necessrio, a consistncia das tabelas do sistema e a integridade referencial entre elas.
DBCC CHECKCATALOG ( 'nome_bd') [WITH NO_INFOMSGS]

Argumento
nome_bd

Descrio
Nome do banco de dados.

WITH NO_INFOMSGS Exibe somente as mensagens significativas. Se no especificado, exibir todas as mensagens de erro. 62

DBCC DBCC CHECKDB

Verifica e tenta corrigir, quando necessrio, a alocao de pginas e a integridade estrutural de todos os objetos em um banco de dados.
DBCC CHECKDB ('nome_bd' [, NOINDEX | { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]

Argumento
nome_bd NOINDEX

Descrio
Nome do banco de dados. No verifica ndices no clusterizados. Corrige a alocao das pginas, removendo objetos corrompidos que estejam causando a perda dos dados que esto nesses objetos.

REPAIR_ALLOW_DATA_LOSS

REPAIR_FAST

Tenta corrigir eventuais inconsistncias, mas no remove objetos que eventualmente estejam corrompidos. Tenta corrigir a alocao das pginas. Caso todas as eventuais inconsistncias tenham sido corrigidas, reconstri todos os ndices do banco de dados. Mensagens a serem retornadas. Exibe somente significativas. as mensagens

REPAIR_REBUID

WITH NO_INFOMSGS

ALL_ERRORMSGS Exibe todas as mensagens de erro.

63

DBCC DBCC CHECKFILEGROUP

Verifica e tenta corrigir, quando necessrio, a alocao das pginas em um grupo de arquivos utilizado pelo banco de dados corrente. Para saber mais sobre grupos de arquivos, veja o comando CREATE DATABASE.
DBCC CHECKFILEGROUP ( [{'filegroup' | filegroup_id}] [, NOINDEX] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]

Argumento
filegroup filegroup_id NOINDEX WITH NO_INFOMSGS

Descrio
Nome do grupo de arquivos. Identificador do grupo de arquivos. No verifica ndices no clusterizados. Mensagens a serem retornadas. Exibe somente significativas. as mensagens

ALL_ERRORMSGS Exibe todas as mensagens de erro.

DBCC CHECKIDENT

Verifica e corrige o valor atual da coluna de autoincremento (IDENTITY) em uma tabela especfica. Para saber mais sobre colunas do tipo auto-incremento (IDENTITY), veja o comando CREATE TABLE.
DBCC CHECKIDENT ( 'nome_tabela' [, { NORESEED | {RESEED [, novo_valor ]} }] )

Argumento
nome_tabela NORESEED RESEED novo_valor

Descrio
Nome da tabela a ser verificada, que deve conter uma coluna com o atributo IDENTITY. No corrige o valor para gerao automtica da coluna de auto-incremento. Atualiza o valor de gerao automtica, pelo valor indicado em novo_valor. Novo valor a ser colocado na prxima chave gerada para a tabela.

64

DBCC DBCC CHECKTABLE

Verifica a integridade e alocao dos dados em uma tabela e seus respectivos ndices.
DBCC CHECKTABLE ( 'nome_tabela' [, NOINDEX | index_id | { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ] ) [ WITH { ALL_ERRORMSGS | NO_INFOMSGS } ]

Argumento
nome_tabela NOINDEX index_id

Descrio
Nome da tabela. No verifica ndices no clusterizados. Identificador do ndice que ser verificado. Corrige a alocao das pginas, removendo objetos corrompidos que estejam causando a perda dos dados que esto nesses objetos.

REPAIR_ALLOW_DATA_LOSS

REPAIR_FAST

Tenta corrigir eventuais inconsistncias, mas no remove objetos que eventualmente estejam corrompidos. Tenta corrigir a alocao das pginas. Caso todas as eventuais inconsistncias tenham sido corrigidas, reconstri todos os ndices do banco de dados. Mensagens a serem retornadas. Exibe todas as mensagens de erro. Exibe somente as mensagens significativas.

REPAIR_REBUID

WITH ALL_ERRORMSGS NO_INFOMSGS

DBCC DBREPAIR

Elimina um banco de dados danificado. Comando obsoleto, mantido apenas para compatibilidade com verses anteriores. Recomenda-se utilizar o comando DROP DATABASE.

65

DBCC DBCC DBREINDEX

Reconstri um ou mais ndices de uma tabela em um banco de dados.


DBCC DBREINDEX ( [ 'nome_bd.nome_dono.nome_tabela' [, nome_ndice [, fator_preench ] ] ] ) [WITH NO_INFOMSGS]

Argumento

Descrio
Nome da tabela.

nome_bd.nome_dono.nome_tabela nome_ndice Nome do ndice a ser recriado. Se no especificado, todos os ndices sero recriados. Porcentagem do espao preenchido em cada pgina do ndice. Ganha-se em desempenho quando as pginas no so preenchidas por completo na criao dos ndices, porm o espao ocupado maior. as mensagens

fator_preench

WITH NO_INFOMSGS Exibe somente significativas. DBCC dllname (FREE)

Retira da memria uma DLL (Dynamic Link Library) que contenha as funes utilizadas por procedures estendidas.
DBCC HELP

Retorna a informao de sintaxe de um comando DBCC.


DBCC HELP ('comando_dbcc' | '?')

Argumento
comando_dbcc ?

Descrio
Comando DBCC do qual se quer saber a sintaxe. Mostra todas as opes disponveis no help.

DBCC INPUTBUFFER

Exibe o ltimo comando executado pelo usurio.


DBCC INPUTBUFFER (spid)

Argumento Descrio
spid Nmero da conexo do usurio. Ser mostrado o ltimo comando dessa conexo. Para saber o nmero da conexo, utilize a procedure sp_who (veja no Guia de Consulta Rpida SQL Server 7 System Procedures desta mesma Editora).

66

DBCC DBCC NEWALLOC

Comando obsoleto, mantido apenas para compatibilidade retroativa. Recomenda-se utilizar DBCC CHECKALLOC.
DBCC OPENTRAN

Mostra informaes da transao ativa mais antiga em um banco de dados. Transaes de replicao tambm so consideradas.
DBCC OPENTRAN ( { 'nome_db' | id_bd } ) [ WITH TABLERESULTS [, NO_INFOMSGS]]

Argumento
nome_bd id_bd

Descrio
Nome do banco de dados. Identificador do banco de dados.

WITH TABLERESULTS Indica que os resultados devem ser formatados tabularmente, permitindo inclui-los em uma tabela. NO_INFOMSGS Exibe somente as mensagens de erro significativas.

DBCC OUTPUTBUFFER

Mostra as informaes, em formato hexadecimal e ASCII, do buffer de sada associado a uma conexo do usurio. O buffer de sada contm os resultados do ltimo comando processado pelo usurio.
DBCC OUTPUTBUFFER (spid)

Argumento Descrio
spid Identificador da conexo do usurio, que pode ser obtido com a procedure sp_who.

DBCC PINTABLE

Mantm na memria RAM do servidor cpias das pginas de uma tabela medida que so lidas. Pode melhorar o desempenho, porm diminui o total de memria disponvel para as outras operaes do SQL Server.
DBCC PINTABLE (id_banco_dados, id_tabela)

Argumento

Descrio

id_banco_dados Identificador do banco de dados, que pode ser obtido utilizando a funo db_id(). id_tabela Identificador da tabela, que pode ser obtido utilizando a funo object_id(). 67

DBCC DBCC PROCCACHE

Mostra informaes, em formato tabular, sobre o cache de procedures.


DBCC PROCCACHE DBCC ROWLOCK

Mantido para compatibilidade com a verso 6.5. Sua funo j est implcita no SQL Server 7.
DBCC SHOWCONTIG

Exibe informaes sobre a fragmentao de uma tabela ou ndice.


DBCC SHOWCONTIG [( id_tabela [, id_ndice])]

Argumento Descrio
id_tabela id_ndice Identificador da tabela, que pode ser obtido com a funo object_id(). Identificador do ndice, que pode ser obtido consultando a tabela sysindexes.

DBCC SHOW_STATISTICS

Exibe estatsticas de distribuio dos ndices de uma tabela especfica.


DBCC SHOW_STATISTICS (nome_tabela, target)

Argumento
nome_tabela target

Descrio
Nome da tabela. Nome do ndice ou coleo utilizada em objetos de suporte a deciso (DSO-DecisionSupport Objects).

68

DBCC DBCC SHRINKDATABASE

Reduz o tamanho dos arquivos de um banco de dados.


DBCC SHRINKDATABASE ( nome_bd [, porcent] [, { NOTRUNCATE | TRUNCATEONLY } ] )

Argumento
nome_bd porcent NOTRUNCATE

Descrio
Nome do banco de dados. Percentual de espao livre desejado aps a reduo do tamanho dos arquivos. O espao liberado continua sendo utilizado pelo SQL Server e no aparece como espao livre para o sistema operacional. O espao liberado deixa de ser utilizado pelo SQL Server e fica disposio do sistema operacional.

TRUNCATEONLY

DBCC SHRINKFILE

Reduz o tamanho de um arquivo de dados ou log de um banco de dados.


DBCC SHRINKFILE ( {nome_arq | id_arq } { [, tamanho] | [, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY }]})

Argumento
nome_arq id_arq tamanho EMPTYFILE

Descrio
Nome do arquivo de dados ou log. Identificador do arquivo. Para obter essa informao, consulte a tabela sysfiles. Novo tamanho desejado (MB). Esvazia o arquivo especificado, migrando todos os dados para outros arquivos do mesmo grupo de arquivos, o que permite que esse arquivo seja eliminado utilizando o comando ALTER DATABASE. O espao liberado continua sendo utilizado pelo SQL Server e no aparece como espao livre para o sistema operacional. O espao liberado deixa de ser utilizado pelo SQL Server e fica disposio do sistema operacional.

NOTRUNCATE

TRUNCATEONLY

69

DBCC DBCC SQLPERF

Fornece estatsticas sobre o espao do log de transaes em todos os bancos de dados. O log de transaes mantm informaes sobre alteraes de dados em cada banco de dados. Essas estatsticas podem ser utilizadas para monitorar a quantidade de espao utilizado e indica quando efetuar o backup ou esvaziar o log de transaes.
DBCC SQLPERF (LOGSPACE) DBCC TEXTALL

Executa o DBCC TEXTALLOC em todas as tabelas que contenham colunas com tipos de dados Text, Ntext ou Image. Mantido para compatibilidade com as verses anteriores. Recomenda-se a utilizao do comando DBCC CHECKDB.
DBCC TEXTALLOC

Verifica e corrige a alocao dos dados em colunas dos tipos Text, Ntext ou Image. Comando obsoleto, mantido apenas para compatibilidade retroativa. Recomenda-se a utilizao do comando DBCC CHECKDB.
DBCC TRACEOFF

Desabilita um trace flag. Trace Flags so utilizados para modificar algumas caractersticas especficas do SQL Server e devem ser usados por DBAs experientes ou com o auxlio do suporte da Microsoft.
DBCC TRACEOFF (num_trace [,...])

Argumento Descrio
num_trace Nmero de identificao do trace flag a ser desabilitado. Veja a lista de trace flags disponveis na documentao on-line do SQL Server.

70

DBCC DBCC TRACEON

Habilita um trace flag. Trace Flags so utilizados para modificar algumas caractersticas especficas do SQL Server e devem ser usados por DBAs experientes ou com o auxlio do suporte da Microsoft.
DBCC TRACEON (num_trace [,...])

Argumento Descrio
num_trace Nmero de identificao do trace flag a ser habilitado. Veja a lista de trace flags disponveis na documentao on-line do SQL Server.

DBCC TRACESTATUS

Mostra o status de um Trace Flag. Retorna ON ou OFF.


DBCC TRACESTATUS (num_trace [,...])

Argumento Descrio
num_trace Nmero de identificao do trace flag cujo status ser verificado.

DBCC UNPINTABLE

Retira da memria RAM do servidor as pginas de uma tabela que tenham sido colocadas aps a utilizao do comando DBCC PINTABLE, liberando mais espao para as operaes normais de cache de dados do SQL Server.
DBCC UNPINTABLE (id_bd, id_tabela)

Argumento Descrio
id_bd id_tabela Identificador do banco de dados, que pode ser obtido utilizando a funo db_id(). Identificador da tabela, que pode ser obtido utilizando a funo object_id().

71

DBCC DBCC UPDATEUSAGE

Atualiza as informaes de alocao de pginas e espao disponvel de uma tabela, para que o otimizador possa tomar decises mais precisas. Tambm afeta o resultado da procedure sp_spaceused.
DBCC UPDATEUSAGE ( {'nome_bd' | 0} [, 'nome_tabela' [, id_ndice] ] ) [ WITH [COUNT_ROWS] [, NO_INFOMSGS ] ]

Argumento
nome_bd | 0 nome_tabela id_ndice WITH

Descrio
Nome do banco de dados. Se for especificado 0, ser utilizado o banco de dados corrente. Nome da tabela. Nmero identificador do ndice. Mensagens a serem retornadas.

COUNT_ROWS Indica que a coluna ROWS da tabela sysindexes ser atualizada com a quantidade atual de linhas da tabela. NO_INFOMSGS Exibe somente as mensagens significativas. DBCC USEROPTIONS

Retorna as opes SET que estejam ativas para a conexo corrente.


DBCC USEROPTIONS

72

SET

Comandos SET
SET ANSI_DEFAULTS

Utiliza (ON) ou no (OFF) o padro SQL-92 para o conjunto de configuraes abaixo. SET ANSI_DEFAULTS SET ANSI_NULLS SET ANSI_NULL_DFLT_ON SET ANSI_PADDING SET ANSI_WARNINGS SET CURSOR_CLOSE_ON_COMMIT SET IMPLICIT_TRANSACTIONS SET QUOTED_IDENTIFIER
SET ANSI_NULL_DFLT_OFF

Altera (ON) ou no (OFF) a opo ANSI NULL DEFAULT para FALSE, somente para a sesso corrente. Caso a propriedade de nulidade no seja especificada nos comandos de criao de novas tabelas, fica definida por default como NOT NULL para todas as colunas.
SET ANSI_NULL_DFLT_OFF {ON | OFF} SET ANSI_NULL_DFLT_ON

Altera (ON) ou no (OFF) a opo ANSI NULL DEFAULT para TRUE, somente para a sesso corrente. Caso a propriedade de nulidade no seja especificada nos comandos de criao de novas tabelas, fica definida por default como NOT NULL para todas as colunas.
SET ANSI_NULL_DFLT_ON {ON | OFF} SET ANSI_NULLS

Utiliza (ON) ou no (OFF) o padro SQL-92 para comparaes (igualdade (=) ou desigualdade (<>)) envolvendo valores nulos (NULL). O padro SQL-92 define que valores nulos no podem ser comparados por igualdades ou desigualdades, mas sim por IS ou IS NOT.
SET ANSI_NULLS {ON | OFF}

73

SET SET ANSI_PADDING

Utiliza (ON) ou no (OFF) o padro SQL-92 para preenchimento de colunas do tipo char, varchar, binary e varbinary. O padro SQL-92 define que espaos em branco no significativos ( direita do ltimo caractere do string) em colunas do tipo char ou varchar sero armazenados, assim como zeros esquerda em colunas do tipo binary ou varbinary.
SET ANSI_PADDING {ON | OFF} SET ANSI_WARNINGS

Utiliza (ON) ou no (OFF) o padro SQL-92 na ocorrncia de algumas situaes de erro. Para situaes do tipo diviso por zero e clculo de funes agregadas envolvendo valores nulos, o padro SQL-92 define que devem ser mostradas mensagens de alerta.
SET ANSI_WARNINGS {ON | OFF} SET ARITHABORT

Encerra (ON) ou no (OFF) a query e desfaz a transao quando ocorrer overflow (o valor atribudo a uma varivel ou coluna ultrapassa o limite do tipo de dados) ou diviso por zero.
SET ARITHABORT {ON | OFF} SET ARITHIGNORE

Continua (ON) ou no (OFF) a execuo de uma query quando ocorrer overflow ou diviso por zero.
SET ARITHIGNORE {ON | OFF} SET CONCAT_NULL_YIELDS_NULL

Controla o comportamento do SQL Server em operaes de concatenao de strings e valores nulos. Se habilitado (ON), o resultado de xpto + null ser xpto. Se desabilitado (OFF), o resultado de xpto + null ser null.
SET CONCAT_NULL_YIELDS_NULL {ON | OFF} SET CURSOR_CLOSE_ON_COMMIT

Fecha (ON) ou no (OFF) o cursor quando for feito um commit para a transao.
SET CURSOR_CLOSE_ON_COMMIT {ON | OFF} 74

SET SET DATEFIRST

Define o primeiro (1=Segunda,...7=Domingo).


SET DATEFIRST nmero

dia

da

semana

Argumento Descrio
nmero Dia que ser definido como o primeiro da semana (1=Segunda,...7=Domingo).

SET DATEFORMAT

Define o formato de apresentao de colunas e variveis dos tipos Datetime ou Smalldatetime.


SET DATEFORMAT formato

Argumento Descrio
formato Ordem relativa das partes da data. Parmetros vlidos: mdy (default), dmy, ymd, ydm, myd, e dym, onde d=dia, m=ms, y=ano.

SET DEADLOCK_PRIORITY

Define o comportamento do SQL Server em situaes de deadlock (quando dois processos se bloqueiam mutuamente) envolvendo a conexo corrente.
SET DEADLOCK_PRIORITY {LOW | NORMAL | @deadlock_var}

Argumento
LOW

Descrio
Indica que a sesso corrente ser sempre escolhida para ser interrompida em caso de deadlock. Utiliza o mtodo padro do SQL Server para tratamento de situaes de deadlock. Varivel do tipo Char ou Varchar, que conter a prioridade de deadlock para a sesso corrente. Caso seu contedo seja 3, indica LOW, caso seja 6 indica NORMAL.

NORMAL @deadlock_var

SET DISABLE_DEF_CNST_CHK

Comando obsoleto, mantido para compatibilidade com verses anteriores. Sua funcionalidade j faz parte do SQL Server.

75

SET SET FIPS_FLAGGER

Verifica a compatibilidade com o padro FIPS 127-2 (Federal Information Processing Standard), padro definido pelo governo americano para sistemas de informao. No caso de servidores de bancos de dados, o padro FIPS 127-2 baseado nas definies do SQL92.
SET FIPS_FLAGGER nvel

Argumento
nvel ENTRY FULL OFF

Descrio
Nvel de compatibilidade com o padro FIPS 127-2. Compatibilidade mnima. Compatibilidate total. No ativa a checagem de compatibilidade com o padro FIPS 127-2.

INTERMEDIATE Nvel mdio de compatibilidade.

SET FMTONLY

Retorna somente a estrutura dos resultados (ON) ou os resultados completos (OFF) que seriam trazidos pelas queries.
SET FMTONLY {ON | OFF} SET FORCEPLAN

Fora (ON) ou no (OFF) o otimizador a processar uma juno (join) utilizando as tabelas na ordem em que foram colocadas na clusula FROM.
SET FORCEPLAN {ON | OFF} SET IDENTITY_INSERT

Permite que valores explcitos possam ser colocados em colunas com a propriedade de auto-incrmento (identity).
SET IDENTITY_INSERT [nome_bd.[nome_dono.]]{nome_tabela} {ON | OFF}

Argumento
nome_bd nome_dono nome_tabela

Descrio
Nome do banco de dados. Nome do proprietrio da tabela. Nome da tabela que possui a coluna com propriedade de auto-incremento.

76

SET SET IMPLICIT_TRANSACTIONS

Utiliza (ON) ou no (OFF) o modo de transao implcita para a conexo. Modo de transao implcita significa que a cada comando executado, o SQL Server gerar um commit automtico. Para transaes explcitas, o SQL Server s completar a transao aps um comando de commit feito explicitamente pelo usurio.
SET IMPLICIT_TRANSACTIONS {ON | OFF} SET LANGUAGE

Configura o idioma utilizado para a conexo (sesso). O idioma tambm determina o formato de data/hora, alm dos textos de mensagens do sistema.
SET LANGUAGE {[N]'idioma'}

Argumento Descrio
[N]'idioma' Nome do idioma que j deve estar instalado no SQL Server. Para saber quais esto disponveis, veja a tabela syslanguages no banco de dados master. Para especificar um idioma no formato Unicode, utilize o formato N'idioma'

SET LOCK_TIMEOUT

Especifica o tempo (em milissegundos) que um comando deve esperar at um lock ser liberado. Passado esse tempo, uma mensagem de erro ser mostrada e o comando ser interrompido.
SET LOCK_TIMEOUT perodo

Argumento
periodo

Descrio
Perodo (em milissegundos) que o SQL Server aguardar para que o lock seja liberado.

SET NOCOUNT

Exibe (ON) ou no (OFF) a mensagem indicando o nmero de linhas afetadas por um comando TransactSQL. No afeta a varivel global @@rowcount.
SET NOCOUNT {ON | OFF} SET NOEXEC

Configura o SQL Server para apenas compilar (ON) ou compilar e executar (OFF) as queries.
SET NOEXEC {ON | OFF}

77

SET SET NUMERIC_ROUNDABORT

Gera (ON) ou no (OFF) um erro quando o arredondamento em uma expresso ocasionar perda de preciso.
SET NUMERIC_ROUNDABORT {ON | OFF} SET OFFSETS

Retorna o offset (posio relativa ao incio de um comando) das palavras-chave especificadas nos comandos Transact-SQL para aplicaes DB-Library.
SET OFFSETS palavra-chave, ... SET PARSEONLY

Verifica somente a sintaxe (ON) ou verifica a sintaxe e executa cada comando (OFF) Transact-SQL.
SET PARSEONLY {ON | OFF} SET PROCID

Retorna (ON) ou no (OFF) o nmero de identificao de uma stored procedure para aplicaes DB-Library antes de enviar o resultado gerado pela stored procedure.
SET PROCID {ON | OFF} SET QUERY_GOVERNOR_COST_LIMIT

Altera o valor da opo QUERY_GOVERNOR_COST_LIMIT configurada com a procedure sp_configure. Esta opo limita o tempo de execuo de uma query.
SET QUERY_GOVERNOR_COST_LIMIT valor

Argumento Descrio
valor Tempo limite (em segundos) que uma query pode ficar executando. Caso o otimizador calcule que a query consumir mais tempo que o permitido, o processamento ser interrompido.

SET QUOTED_IDENTIFIER

Utiliza (ON) ou no (OFF) o padro SQL-92 para a identificao de objetos. O padro SQL-92 define que podem ser colocados caracteres especiais (como espaos em branco) ou palavras reservadas (como SELECT) nos nomes dos objetos, desde que colocados entre aspas duplas ().
SET QUOTED_IDENTIFIER {ON | OFF} 78

SET SET REMOTE_PROC_TRANSACTIONS

Cria (ON) ou no (OFF) uma transao distribuda quando estiver executando uma procedure remota a partir da transao local.
SET REMOTE_PROC_TRANSACTIONS {ON | OFF} SET ROWCOUNT

Especifica o nmero mximo de linhas que sero retornadas por uma query.
SET ROWCOUNT nmero SET SHOWPLAN_ALL

Mostra (ON) ou no (OFF) informaes detalhadas da execuo dos comandos e estimativa dos recursos necessrios para cada execuo.
SET SHOWPLAN_ALL {ON | OFF} SET SHOWPLAN_TEXT

Mostra (ON) ou no (OFF) informaes detalhadas sobre como os comandos seriam executados, sem contudo execut-los.
SET SHOWPLAN_TEXT {ON | OFF} SET STATISTICS IO

Mostra (ON) ou no (OFF) informaes estatsticas sobre a atividade de disco gerada pelos comandos Transact-SQL.
SET STATISTICS IO {ON | OFF} SET STATISTICS PROFILE

Mostra (ON) ou no (OFF) informaes estatsticas aps a execuo de uma query, indicando tempo de CPU utilizado, ndices, quantidade de linhas afetadas, alm de outras informaes teis.
SET STATISTICS PROFILE {ON | OFF} SET STATISTICS TIME

Mostra (ON) ou no (OFF) o tempo (em milissegundos) utilizado para verificar sintaxe, compilar e executar cada comando.
SET STATISTICS TIME {ON | OFF}

79

SET SET TEXTSIZE

Especifica a quantidade de bytes que sero retornados por um comando SELECT, para colunas com tipos de dados Text ou Ntext. Afeta a varivel @@TEXTSIZE.
SET TEXTSIZE numbytes SET TRANSACTION ISOLATION LEVEL

Define como o SQL Server gerenciar os bloqueios (locks) de cada transao.


SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE }

Argumento
READ COMMITTED

Descrio
Indica que as alteraes feitas por uma transao (X) s ficaro disponveis para outras transaes aps o COMMIT ou ROLLBACK da transao (X). Apesar de diminuir a disponibilidade dos dados (os dados s ficam disponveis aps um COMMIT ou ROLLBACK), garante a preciso das queries.

READ UNCOMMITTED Indica que as alteraes feitas por uma transao (X) ficaro disponveis para as outras transaes, independente de ter sido executado um COMMIT ou ROLLBACK. Aumenta a disponibilidade dos dados, mas diminui a preciso das queries por estar fazendo operaes em dados que podem ser desfeitos por um comando ROLLBACK. REPEATABLE READ Caso seja necessrio ler uma linha da tabela mais do que uma vez na mesma transao, esta opo no permite que sejam feitas modificaes nessa linha at que um comando COMMIT ou ROLLBACK seja executado. Isso garante que a transao tenha sempre o mesmo valor. No permite modificaes nas pginas afetadas por uma transao, at que seja executado um COMMIT.

SERIALIZABLE

SET XACT_ABORT

Executa (ON) automaticamente ou no (OFF) um comando ROLLBACK quando ocorrer algum erro na transao.
SET XACT_ABORT{ON | OFF} 80

Funes de Agregao

Funes de Agregao
Sintaxe
funo_agregada ([ALL | DISTINCT] expresso)

Argumento

Descrio

funo_agregada Especifica a funo. Pode ser SUM, AVG, COUNT, MIN, MAX. expresso Pode ser o nome de uma coluna, uma constante, uma funo ou qualquer combinao de colunas, constantes e funes. Aplica a funo de agregao para todos os valores. Elimina valores duplicados antes de aplicar a funo de agregao.

ALL (default) DISTINCT

AVG

Retorna a mdia dos valores em uma expresso numrica. Valores NULL so ignorados.
COUNT

Retorna o nmero de expresses com contedo diferente de NULL.


COUNT(*)

Retorna o nmero total de linhas (inclusive com valores NULL).


GROUPING

Adiciona uma nova coluna ao resultado das queries que utilizam os operadores CUBE ou ROLLUP. Essa coluna conter o valor 1 caso a linha tenha sido criada por CUBE ou ROLLUP, facilitando a identificao nos resultados.
GROUPING(nome_coluna)

Argumento Descrio
nome_coluna Coluna pertencente clusula GROUP BY da query. MAX

Retorna o maior valor.

81

Funes de Agregao MIN

Retorna o menor valor.


SUM

Retorna a soma total das expresses numricas.


STDEV

Retorna o desvio padro (funo estatstica) de uma expresso numrica.


STDEVP

Retorna o desvio padro populacional de uma expresso numrica.


VAR

Retorna a variao estatstica de uma expresso numrica.


VARP

Retorna a variao estatstica populacional de uma expresso numrica.

82

Funes de Configurao

Funes de Configurao
@@CONNECTIONS

Retorna o nmero de conexes ou tentativas de conexo desde que o SQL Server foi inicializado.
@@DATEFIRST

Retorna o valor corrente do parmetro SET DATEFIRST, que indica o primeiro dia de cada semana (1-Seg, 7-Sab).
@@DBTS

Retorna o valor do timestamp atual para o banco de dados corrente.


@@LANGUAGE

Retorna o nome do idioma atualmente em uso.


@@LANGID

Retorna o identificador (ID) do idioma em uso.


@@LOCK_TIMEOUT

Retorna a definio corrente de lock time (em milissegundos).


@@MAX_CONNECTIONS

Retorna o nmero mximo de conexes simultneas que podem ser configuradas com a procedure sp_configure.
@@MAX_PRECISION

Retorna o nvel de preciso corrente utilizado nos tipos de dados decimal e numeric.
@@NESTLEVEL

Retorna o nvel de aninhamento de execuo da stored procedure ou trigger corrente. Cada vez que um trigger ou uma stored procedure chama outro trigger ou stored procedure, o nvel de aninhamento incrementado. Quando o mximo de 32 atingido, a transao encerrada.

83

Funes de Configurao @@OPTIONS

Retorna informaes sobre as opes SET.


@@REMSERVER

Retorna o nome de um servidor remoto. til para identificar de qual servidor partiu a chamada de uma procedure que est no servidor local.
@@SERVERNAME

Retorna o nome do servidor local que est executando o SQL Server.


@@SERVICENAME

Retorna o nome da chave no Registry sob a qual o SQL Server est sendo executado.
@@SPID

Retorna o identificador do processo (conexo ou sesso) no servidor.


@@TEXTSIZE

Retorna o valor corrente da opo TEXTSIZE do comando SET.


@@VERSION

Retorna a data, a verso e o tipo do processador utilizado na instalao corrente do SQL Server.

84

Funes de Cursor

Funes de Cursor
@@CURSOR_ROWS

Varivel que contm a quantidade de linhas do ltimo cursor aberto na conexo corrente.
@@CURSOR_ROWS

Valor
-m

Significado
O cursor est sendo preenchido no modo assncrono. O valor retornado (-m) o nmero de linhas corrente no keyset. Cursor dinmico. No possvel determinar se todas as linhas qualificadas j foram trazidas. No h cursor aberto, ou no foi trazida nenhuma linha do ltimo cursor aberto. Total de linhas trazidas pelo cursor.

-1 0 n

CURSOR_STATUS

Permite ao chamador de uma stored procedure determinar se a procedure retornou um cursor e um resultset para um determinado parmetro.
CURSOR_STATUS ( { 'local', 'nome_cursor'} | {'global', 'nome_cursor'} | {'varivel', 'nome_var_cursor'} )

Argumento
local nome_cursor global varivel nome_var_cursor

Descrio
Indica que o cursor local. Nome do cursor. Indica que o cursor global. Indica que o cursor uma varivel local. Nome da varivel com tipo de dados CURSOR.

@@FETCH_STATUS

Varivel que contm o status do ltimo comando FETCH executado na conexo.


@@FETCH_STATUS

Valor
0 -1 -2

Significado
O comando FETCH foi executado com sucesso. Indica que houve tentativa de passar o final ou o incio do cursor. Tentativa de trazer uma linha que j no existe mais. 85

Funes de Data e Hora

Funes de Data e Hora


Todas as funes de data usam as seguintes unidades de data ou hora, s quais ser feita referncia como item. Unidade
Ano Trimestre (1-4) Ms (1-12) Dia no ano (1-366) Dia (1-31) Semana Hora (0-23) Minuto (0-59) Segundo (0-59)

Abreviaes
yy, yyyy qq, q mm, m dy, y dd, d wk, ww hh mi, n ss, s

Milissegundo (0-999) ms DATEADD

Retorna uma nova data baseado na soma do nmero de unidades especificadas pelo valor unidade a uma data (ver tabela descritiva na pgina acima).
DATEADD(unidade, nmero_unid, data) DATEDIFF

Calcula a diferena entre as duas partes da data data1 e data2, e retorna o resultado como um inteiro, em unidades especificadas por unidade (ver tabela descritiva na pgina acima).
DATEDIFF(unidade, data1, data2) DATENAME

Retorna a parte unidade especificada da data como um string de caracteres (Mon, Tue, ...,) (ver tabela descritiva na pgina acima)
DATENAME(unidade, data) DATEPART

Retorna a parte unidade (ver tabela descritiva na pgina acima) especificada de uma data como um inteiro.
DATEPART(unidade, data)

86

Funes de Data e Hora DAY

Retorna o dia do ms de uma data especificada. Equivalente a DATEPART(dd, data).


DAY(data) GETDATE

Retorna a data e a hora atuais do sistema.


GETDATE() MONTH

Retorna o ms de uma data especificada. Equivalente funo DATEPART(mm, data).


MONTH(data) YEAR

Retorna o ano de uma data especificada. Equivalente funo DATEPART(yy, data).


YEAR(data)

87

Funes Matemticas

Funes Matemticas
ABS

Retorna o valor absoluto de uma expresso numrica.


ABS(exprN) ACOS

Retorna o ngulo (em radianos) cujo co-seno exprF.


ACOS(exprF) ASIN

Retorna o ngulo (em radianos) cujo seno exprF.


ASIN(exprF) ATAN

Retorna o ngulo (em radianos) cuja tangente exprF.


ATAN(exprF) ATN2

Retorna o ngulo (em radianos) cuja tangente est entre exprF1 e exprF2.
ATN2(exprF1, exprF2) CEILING

Retorna o menor nmero inteiro maior ou igual a exprN.


CEILING(exprN) COS

Retorna o co-seno de exprF.


COS(exprF) COT

Retorna a cotangente de exprF.


COT(exprF) DEGREES

Converte de radianos para graus.


DEGREES(exprN)

88

Funes Matemticas EXP

Retorna eexprF (e=2.71828).


EXP(exprF) FLOOR

Retorna o maior nmero inteiro menor ou igual a exprN.


FLOOR(exprN) LOG

Retorna o logaritmo natural de uma expresso numrica.


LOG(exprF) LOG10

Retorna o logaritmo base 10 de uma expresso numrica.


LOG10(exprF) PI

Retorna o valor da constante Pi (3.141592653589793).


PI( ) POWER

Retorna o valor de uma expresso numrica elevada potncia especificada.


POWER(exprN, y) RADIANS

Retorna o valor em radianos, dada uma expresso numrica em graus.


RADIANS(exprN) RAND

Retorna um nmero aleatrio entre 0 e 1.


RAND([semente])

Argumento Descrio
semente Valor inicial.

89

Funes Matemticas ROUND

Retorna uma expresso numrica arredondada para o comprimento (ou preciso) especificado.
ROUND(exprN, length) SIGN

Retorna um nmero indicando o sinal de uma expresso numrica. Valor Retornado


1 0 -1 SIGN(exprN) SIN A expresso positiva. A expresso 0. A expresso negativa.

Retorna o seno de uma expresso numrica.


SIN(exprF) SQRT

Retorna a raiz quadrada de uma expresso numrica.


SQRT(exprF) SQUARE

Retorna o quadrado de uma expresso numrica.


SQUARE(exprF) TAN

Retorna a tangente de uma expresso numrica.


TAN(exprF)

90

Funes Metadata

Funes Metadata
COL_LENGTH

Retorna a largura (em bytes) de uma coluna de uma tabela. Esse valor muda de acordo com o tipo de dados, pois os tipos CHAR e VARCHAR podem chegar a 255 bytes, enquanto os numricos dependendo da preciso chegam no mximo a 8 bytes.
COL_LENGTH('tabela', 'coluna') COL_NAME

Retorna o nome de uma coluna, fornecidos os nmeros de identificao da tabela e da coluna.


COL_NAME(id_tabela, id_coluna) COLUMNPROPERTY

Retorna informaes sobre uma coluna ou parmetro de procedure. Os valores retornados so: 1=True, 0=False, Null=entrada invlida.
COLUMNPROPERTY(id, coluna, propriedade)

Argumento
id coluna propriedade AllowsNull IsComputed IsCursorType

Descrio
Identificador da tabela ou procedure. Nome da coluna ou parmetro. Permite valores null. Coluna calculada. Parmetro de procedure com tipo de dados CURSOR. A coluna possui a propriedade IDENTITY (auto-incremento). a definio

IsFulltextIndexedA coluna pertence a um ndice de texto. IsIdentity

IsIdNotForRepl A coluna verifica IDENTITY_INSERT. IsOutParam IsRowGuidCol

Parmetro de sada de uma procedure. A coluna tem o tipo de dado uniqueidentifier e est definida com a priopriedade ROWGUIDCOL. Preciso do tipo de dado da coluna ou parmetro de procedure. Escala do tipo de dados da coluna ou parmetro da procedure. ANSI padding estava configurado com ON quando a tabela foi criada. 91

Precision Scale UsesAnsiTrim

Funes Metadata DATABASEPROPERTY

Retorna informaes sobre as propriedades de um banco de dados. Os valores retornados so: 1=True, 0=False, Null=Entrada invlida.
DATABASEPROPERTY(nome_bd, propriedade)

Argumento
nome_bd propriedade IsAnsiNullDefault IsAnsiNullsEnabled

Descrio
Nome do banco de dados. Propriedade cujas informaes sero retornadas Segue as regras SQL-92 referentes a valores nulos. Comparaes com valores nulos, sempre retornam NULL.

IsAnsiWarningsEnabled Mensagens de erro so mostradas sempre que uma condio de erro ocorrer. IsAutoClose O banco de dados fechado e libera os recursos automaticamente quando nenhum usurio estiver utilizando. Os arquivos do banco de dados so candidatos reduo automtica de tamanho periodicamente.

IsAutoShrink

IsAutoUpdateStatistics A opo de atualizao automtica das estatsticas do banco de dados est habilitada. IsBulkCopy O banco de dados permite operaes que no so gravadas no log de transaes. Os cursores so fechados quando a transao encerrada com um COMMIT. IsDboOnly IsDetached O banco de dados est no modo de acesso DBO-only. O banco de dados foi desmontado (separado do servidor) por uma operao de detach. O modo de emergncia est habilitado, permitindo acesso a banco de dados com status Suspect. O banco de dados est habilitado para indexao de texto. O banco de dados ainda est no processo de inicializao.

IsCloseCursorsOnCommitEnabled

IsEmergencyMode

IsFulltextEnabled IsInLoad

92

Funes Metadata IsInRecovery IsInStandBy O banco de dados est no processo de recuperao (recovery). O banco de dados est ativo somente para leitura (read-only), mas permite restaurao de backup do log.

IsLocalCursorsDefault As declaraes de cursores sero sempre locais. IsNotRecovered IsNullConcat IsOffline O banco de dados falhou durante o processo de recuperao. Permite concatenao de valores nulos (Null). O banco de dados no est ativo. Os identificadores de objetos podem ser colocados entre aspas duplas (). IsReadOnly O banco de dados est ativo somente para leitura (read-only). Permite o aninhamento de execues de triggers. IsShutDown IsSingleUser O banco de dados com problemas durante a inicializao do servidor. Banco de dados em modo SINGLEUSER, o que permite somente um usurio. Banco de dados marcardo como suspeito. Banco de dados apaga o log de transaes nos processos de CHECKPOINT. Verso do SQL Server utilizada para a criao do banco de dados.

IsQuotedIdentifiersEnabled

IsRecursiveTriggersEnabled

IsSuspect IsTruncLog

Version

DB_ID

Retorna o nmero de identificao do banco de dados.


DB_ID(['nome_bd'])

Argumento
nome_bd

Descrio
Nome do banco de dados. Se no especificado, retornar o ID do banco de dados corrente.

DB_NAME

Retorna o nome do banco de dados.


DB_NAME(id_bd)

93

Funes Metadata

Argumento Descrio
id_bd ID do banco de dados a ser retornado. Se no especificado, retornar o nome do banco de dados corrente.

FILE_ID

Retorna o nmero de identificao de um arquivo para um nome lgico informado.


FILE_ID('nome_arq') FILE_NAME

Retorna o nome lgico de um arquivo.


FILE_NAME(id_arquivo)

Argumento Descrio
id_arquivo FILEGROUP_ID Nmero de identificao do arquivo.

Retorna o nmero de identificao de um grupo de arquivos.


FILEGROUP_ID('nome_grupo_arq')

Argumento

Descrio

nome_grupo_arq Nome do grupo de arquivos. FILEGROUP_NAME

Retorna o nome de um grupo de arquivos.


FILEGROUP_NAME(id_grupo_arq)

Argumento
id_grupo_arq

Descrio
Nmero de identificao do grupo de arquivos.

FILEGROUPPROPERTY

Retorna o valor de uma propriedade especfica de um grupo de arquivos. Os valores retornados so: 1=True, 0=False, Null=Entrada invlida.
FILEGROUPPROPERTY(nome_grupo_arq, propriedade)

Argumento
nome_grupo_arq propriedade

Descrio
Nome do grupo de arquivos. Propriedade do grupo de arquivos.

94

Funes Metadata FILEPROPERTY

Retorna informaes sobre as propriedades de um arquivo.


FILEPROPERTY(nome_arq, propriedade)

Argumento
nome_arq propriedade IsReadOnly IsDefault

Descrio
Nome do arquivo. Nome da propriedade. Grupo de arquivos somente para leitura. Grupo de arquivos o default.

IsUserDefinedFG Grupo de arquivos criado pelo usurio.

FULLTEXTCATALOGPROPERTY

Retorna informaes sobre catlogos de ndices texto.


FULLTEXTCATALOGPROPERTY(nome_catlogo, propriedade)

Argumento
nome_catlogo propriedade

Descrio
Nome do catlogo. Nome da propriedade. 0 = Parado. 1 = Preenchimento em andamento. 2 = Interrompido. 3 = Acelerado. 4 = Em recuperao. 5 = Desligado. 6 = Preenchimento incremental em andamento. 7 = Atualizando ndice.

PopulateStatus Status do preenchimento do catlogo.

ItemCount IndexSize

Nmero de itens indexados no catlogo. Tamanho do ndice de texto (MB).

UniqueKeyCount Nmero de palavras nicas (chaves) que fazem parte do ndice de texto. LogSize Tamanho (bytes) do conjunto de logs de erros associado ao servio Microsoft Search Service. Diferena (segundos) entre a ltima vez que o ndice foi preenchido e 01/01/1990 00:00:00.

PopulateCompletionAge

95

Funes Metadata FULLTEXTSERVICEPROPERTY

Retorna informaes das propriedades do servio de indexao de textos (Microsoft Search Service).
FULLTEXTSERVICEPROPERTY(propriedade)

Argumento
propriedade ResourceUsage ConnectTimeout

Descrio
Nome da propriedade. 1 (background) at 5 (servio dedicado). Tempo (em segundos) que o Microsoft Search Service aguardar durante as tentativas de conexo com o SQL Server. Indica se o Microsoft Search Service est instalado (1) ou no (0).

IsFulltextInstalled

INDEX_COL

Retorna o nome da coluna que pertence ao ndice indicado.


INDEX_COL('tabela', id_ndice, id_chave)

Argumento Descrio
tabela id_ndice id_chave Nome da tabela. Nmero de identificao do ndice. Nmero de identificao da chave (1 a 16).

INDEXPROPERTY

Retorna informaes sobre as propriedades dos ndices.


INDEXPROPERTY(id_tabela, nome_indice, propriedade)

Argumento
id_tabela nome_ndice propriedade IndexDepth

Descrio
Nmero de identificaa da tabela, que pode ser obtido com a funo Object_id(). Nome do ndice. Nome da propriedade, conforme lista abaixo: Nmero de nveis do ndice.

IsAutoStatistics Indice criado (1) ou no (0) pela opo auto create statistics da procedure sp_dboption. IsClustered IsStatistics ndice clusterizado (1) ou no (0). ndice criado (1) ou no (0) pelo comando CREATE STATISTICS ou pela opo auto create statistics da procedure sp_dboption. ndice com chave nica (1) ou no (0).

IsUnique

IndexFillFactor O ndice possui a prpria especificao do fator de preenchimento (1) ou no (0). 96

Funes Metadata IsPadIndex O ndice possui (1) ou no (0) a especificao do espao a ser ocupado pelos diversos nveis (root, intermediate e leaf). O ndice (1) ou no (0) a chave texto de uma tabela. O ndice hipottico (1) ou no. Os ndices hipotticos contm apenas informaes estatsticas e no podem ser acessados diretamente.

IsFulltextKey IsHypothetical

OBJECT_ID

Retorna o nmero de identificao de um objeto.


OBJECT_ID('nome_objeto') OBJECT_NAME

Retorna o nome de um objeto.


OBJECT_NAME(id_objeto) OBJECTPROPERTY

Retorna informaes sobre objetos no banco de dados corrente.


OBJECTPROPERTY(id_objeto, propriedade) @@PROCID

Retorna o identificador (ID) da stored procedure que est sendo executada no momento.
TYPEPROPERTY

Retorna informaes sobre um tipo de dado.


TYPEPROPERTY( tipo, propriedade)

Argumento
tipo propriedade Precision Scale

Descrio
Nome do tipo de dado. Tipo de informao a ser retornada: Preciso do tipo de dados. Retorna a quantidade de dgitos ou caracteres. Escala. Retorna a quantidade de casas decimais ou NULL caso o tipo de dados no seja numrico. Indica se o tipo de dados permite (1) ou no (0) valores nulos. Indica se a opo ANSI PADDING estava ativa (1) ou no(0) quando o tipo de dados foi criado. 97

AllowsNull UsesAnsiTrim

Funes de Segurana

Funes de Segurana
IS_MEMBER

Retorna (1) se o usurio corrente pertencer a um grupo do Windows NT ou papel do SQL Server, ou (0) caso no pertena. Se retornar NULL o grupo ou papel informado no existe.
IS_MEMBER ({'grupo' | 'papel' })

Argumento Descrio
grupo papel Nome do grupo de usurios do Windows NT no formato Domnio/Grupo. Nome do papel no SQL Server.

IS_SRVROLEMEMBER

Retorna (1) caso o usurio corrente seja membro de um papel do servidor, ou (0) caso no seja. Se retornar NULL, o papel informado no vlido.
IS_SRVROLEMEMBER ( 'papel' [,'nome_conta'])

Argumento Descrio
papel Nome do papel do servidor. Pode ser: sysadmin, dbcreator, diskadmin, processadmin, serveradmin, setupadmin ou securityadmin. Nome da conta de usurio(login) que se quer verificar. Caso no seja informado, ser verificado o usurio corrente.

nome_conta

SUSER_ID

Funo obsoleta. Mantida para compatibilidade com verses anteriores. Use SUSER_SID.
SUSER_NAME

Funo obsoleta. Mantida para compatibilidade com verses anteriores. Use SUSER_SNAME.
SUSER_SID

Retorna o nmero de identificao de uma conta de usurio (login) no SQL Server.


SUSER_SID(['nome_conta'])

Argumento Descrio
nome_conta Nome da conta do usurio. Caso no seja informado, ser retornado o valor correspondente ao usurio corrente.

98

Funes de Segurana SUSER_SNAME

Retorna o nome de uma conta de usurio, dado o nmero de identificao (SID).


SUSER_SNAME([num_identificao])

Argumento

Descrio

num_identificao Nmero de identificao da conta de usurio. Caso no seja informado, utilizar o nmero de identificao do usurio corrente. USER

Varivel global que contm o nome do usurio corrente no banco de dados corrente. Pode ser colocado nas definies de DEFAULTs.
USER USER_ID

Retorna o nmero de identificao de um usurio.


USER_ID(['nome_usurio'])

99

Funes String

Funes String
ASCII

Retorna o cdigo ASCII do caractere mais esquerda de uma expresso string.


ASCII(exprC) CHAR

Retorna o caractere correspondente a um cdigo ASCII.


CHAR(cdigo) CHARINDEX

Retorna a posio inicial de um string dentro de outro string.


CHARINDEX('padro', expresso)

Argumento Descrio
padro expresso Expresso do tipo char. Usualmente o nome de uma coluna, onde deve ser pesquisado um determinado padro.

DIFFERENCE

Retorna um nmero (0-4) representando a equivalncia entre os valores retornados pela funo SOUNDEX de duas expresses de caracteres. Retorna um valor de 0 a 4, sendo 4 a melhor correspondncia.
DIFFERENCE(exprC1, exprC2) LEFT

Retorna um substring com n caracteres direita de uma expresso string.


LEFT(exprC, n) LEN

Retorna o nmero de caracteres de uma expresso string.


LEN(exprC) LOWER

Converte caracteres maisculos em minsculos.


LOWER(exprC) 100

Funes String LTRIM

Retorna uma cpia de um string sem os espaos em branco iniciais.


LTRIM(exprC) NCHAR

Retorna o caractere Unicode correspondente ao cdigo especificado.


NCHAR(cdigo) PATINDEX

Retorna a posio inicial da primeira ocorrncia de um padro em uma expresso especificada, ou zeros se o padro no for especificado.
PATINDEX('%padro%', expresso) QUOTENAME

Retorna um string Unicode com delimitadores adicionados para tornar um identificador vlido.
QUOTENAME('string' [,'delimitador']) REPLACE

Substitui em exprC1, as ocorrncias de exprC2 por exprC3.


REPLACE(exprC1, exprC2, exprC3) REPLICATE

Repete uma expresso de caracteres um nmero especificado de vezes.


REPLICATE(exprC, exprI) REVERSE

Retorna o inverso de uma expresso de caracteres.


REVERSE(exprC) RIGHT

Retorna um substring com n caracteres direita de uma expresso string.


RIGHT(exprC, n)

101

Funes String RTRIM

Retorna uma cpia de uma expresso string sem os espaos em branco finais.
RTRIM(exprC) SOUNDEX

Retorna um cdigo de quatro caracteres para avaliar a similaridade entre dois strings.
SOUNDEX(exprC) SPACE

Retorna um string com o nmero especificado de espaos em branco. Se o nmero for negativo, retornar um string null.
SPACE(integer_expr) STR

Converte uma expresso numrica em caracteres.


STR(exprF [, tamanho [, decimais]]) STUFF

Substitui n caracteres da string exprC1 pela string parcial exprC2 a partir da posio incio.
STUFF(exprC1, incio, n, exprC2) SUBSTRING

Retorna parte de uma expresso string.


SUBSTRING(exprC, incio, tamanho) UNICODE

Retorna um valor inteiro, definido no padro Unicode, para o primeiro caractere de um expresso nchar ou nvarchar.
UNICODE(expr) UPPER

Converte caracteres minsculos em maisculos.


UPPER(char_expr)

102

Funes do Sistema

Funes do Sistema
APP_NAME

Retorna o nome da aplicao para a sesso corrente.


APP_NAME() CAST

Converte uma expresso de um tipo para outro.


CAST(expr AS tipo) COALESCE

Retorna a primeira expresso no-nula da lista de valores.


COALESCE (expresso1, expresso2, ... expressoN) CONVERT

Converte uma expresso de um tipo para outro. Similar funo CAST.


CONVERT(tipo[(tamanho)], expr [,estilo]) CURRENT_TIMESTAMP

Retorna a data e hora correntes. Equivalente funo GETDATE().


CURRENT_TIMESTAMP CURRENT_USER

Retorna o nome do usurio corrente. Equivalente funo USER_NAME().


CURRENT_USER DATALENGTH

Retorna o nmero de bytes usados para representar uma expresso. DATALENGTH (expr)
@@ERROR

Retorna o nmero do erro do ltimo comando TransactSQL executado.

103

Funes do Sistema FORMATMESSAGE

Constri uma mensagem a partir de uma mensagem existente em sysmessages.


FORMATMESSAGE(num_mens, parmetro1 [,...]) GETANSINULL

Retorna a nulidade default para o banco de dados.


GETANSINULL(['nome_bd']) HOST_ID

Retorna o nmero de identificao da estao de trabalho da conexo corrente.


HOST_ID ( ) HOST_NAME

Retorna o nome da estao de trabalho (workstation) da conexo corrente.


HOST_NAME ( ) IDENT_INCR

Retorna o valor de incremento (retornado como numeric(@@MAXPRECISION,0)) especificado durante a criao de coluna de auto-incremento (IDENTITY).
IDENT_INCR ('tabela ou view') IDENT_SEED

Retorna o valor de origem (retornado como numeric(@@MAXPRECISION,0)) especificado durante a criao da coluna de auto-incremento (IDENTITY).
IDENT_SEED ('tabela ou view') @@IDENTITY

Retorna o ltimo valor inserido na coluna com a propriedade IDENTITY (auto-incremento).


ISDATE

Retornar 1 se a expresso for uma data vlida; caso contrrio, retornar 0.


ISDATE(expr) 104

Funes do Sistema ISNULL

Verifica se o valor da expresso null. Em caso afirmativo, substitui o valor null pelo valor especificado.
ISNULL(expr, valor) ISNUMERIC

Retornar 1 se a expresso for um tipo numrico vlido; caso contrrio, retornar 0.


ISNUMERIC(expr) NEWID

Cria um valor nico do tipo uniqueidentifier.


NEWID() NULLIF

Retornar um valor null se duas expresses forem equivalentes.


NULLIF(expr1, expr2) PARSENAME

Retorna uma parte especificada de um nome de objeto.


PARSENAME(nome_objeto, parte)

Argumento Descrio
nome_objeto Nome do objeto. parte 1 2 3 4 PERMISSION Nome do objeto. Nome do proprietrio. Nome do banco de dados. Nome do servidor de banco de dados.

Retorna um valor que indica o comando, objeto ou permisses da coluna para o usurio corrente.
PERMISSION(id_objeto [,'coluna']]) @@ROWCOUNT

Retorna o nmero de linhas afetadas pelo ltimo comando.

105

Funes do Sistema SESSION_USER

Retornar um valor para o nome do usurio corrente, quando nenhum valor padro tiver sido especificado.
STATS_DATE

Retorna a data de quando as informaes estatsticas para o ndice especificado foram atualizadas pela ltima vez.
STATS_DATE(id_tabela, id_ndice)

Argumento
id_tabela id_ndice

Descrio
Identificador da tabela, obtido com a funo OBJECT_ID(). Identificador do ndice. O primeiro ndice da tabela 1, o segundo 2, e assim por diante.

SYSTEM_USER

Varivel global que contm o nome do usurio corrente no SQL Server. Pode ser colocada nas definies de DEFAULTs.
SYSTEM_USER @@TRANCOUNT

Retorna a quantidade de transaes ativas na conexo corrente.


USER_NAME

Retorna o nome do usurio com o identificador especificado.


USER_NAME([id_usurio])

106

Funes de Estatstica do Sistema

Funes de Estatstica do Sistema


@@CPU_BUSY

Retorna o tempo (em milissegundos) de processamento da CPU desde que o SQL Server foi inicializado.
@@IDLE

Retorna o tempo (em milissegundos) que a CPU ficou inativa desde que o SQL Server foi inicializado.
@@IO_BUSY

Retorna o tempo (em milissegundos) que a CPU gastou fazendo operaes de I/O desde que o SQL Server foi inicializado.
@@PACK_RECEIVED

Retorna o nmero de pacotes de rede recebidos desde que o SQL Server foi inicializado.
@@PACK_SENT

Retorna o nmero de pacotes de rede enviados desde que o SQL Server foi inicializado.
@@PACKET_ERRORS

Retorna o nmero de erros na leitura ou envio de pacotes pela rede desde que o SQL Server foi inicializado.
@@TIMETICKS

Retorna o nmero de microssegundos por tick.


@@TOTAL_ERRORS

Retorna o nmero de erros de leitura/gravao em disco desde que o SQL Server foi inicializado.
@@TOTAL_READ

Retorna o nmero de leituras no disco desde que o SQL Server foi inicializado.
@@TOTAL_WRITE

Retorna o nmero de gravaes em disco desde que o SQL Server foi inicializado.

107

Funes de Texto e Imagem

Funes de Texto e Imagem


TEXTPTR

Retorna o valor do ponteiro de texto em formato varbinary. O ponteiro de texto verificado para garantir que ele aponte para a primeira pgina do texto.
TEXTPTR(coluna) TEXTVALID

Retornar 1 se um ponteiro de texto for vlido e 0 se o ponteiro for invlido.


TEXTVALID('tabela.coluna', texto_ ptr)

Argumento Descrio
tabela coluna texto_ptr Nome da tabela a ser usada. Nome da coluna a ser usada. Ponteiro de texto a ser verificado.

108

Operadores

Operadores
Operadores Aritmticos
+ (adio)

Adiciona dois nmeros.


expresso + expresso + (concatenao de strings)

Concatena dois strings.


expresso + expresso - (subtrao)

Subtrao.
expresso - expresso * (multiplicao)

Multiplica duas expresses.


expresso * expresso / (diviso)

Divide um nmero por outro.


dividendo / divisor % (mdulo)

Mdulo aritmtico (retorna o resto da diviso de inteiros).


dividendo % divisor

Operadores Bitwise
& (Bitwise AND)

Bitwise AND.
expresso & expresso | (Bitwise OR)

Bitwise OR.
expresso | expresso ^ (Bitwise Exclusive OR)

Bitwise Exclusive OR.


109

Operadores

Operadores de Comparao
= (igual)

Compara duas expresses.


expresso = expresso > (maior que)

Maior que.
expresso > expresso < (menor que)

Menor que.
expresso < expresso >= (maior ou igual a)

Maior ou igual a.
expresso >= expresso <= (menor ou igual a)

Menor ou igual a.
expresso <= expresso <> (diferente)

Diferente.
expresso <> expresso != (diferente)

Diferente. No padro SQL-92.


expresso != expresso !< (no menor que)

No menor que. No padro SQL-92.


expresso !< expresso !> (no maior que)

No maior que. No padro SQL-92.


expresso !> expresso

110

Operadores

Operadores Lgicos
ALL

Compara um valor escalar com um conjunto de valores de uma nica coluna. Retornar TRUE se todas as comparaes forem TRUE.
expresso_escalar operador_comp ALL (subconsulta)

Parmetro
expresso_escalar operador_comp subconsulta

Descrio
Expresso. Operador de comparao. Uma subconsulta que retorna o resultado de uma coluna. As clusulas ORDER BY, COMPUTE e INTO no so permitidas.

AND

Retornar TRUE quando as duas expresses lgicas forem TRUE.


exprL1 AND exprL2 ANY

O operador ANY ser avaliado como TRUE se o resultado de uma consulta interna contiver pelo menos uma linha que satisfaa a comparao. O mesmo que SOME.
BETWEEN

TRUE se o operando estiver dentro de um intervalo. Para mais detalhes, veja a pgina 113.
EXISTS

Retornar TRUE se uma subconsulta retornar uma ou mais linhas. As clusulas COMPUTE e INTO no so permitidas na subconsulta.
EXISTS subconsulta IN

Retornar TRUE se o operando for igual a um item da lista de expresses. Para mais detalhes, veja a pgina 114.
LIKE

Retornar TRUE se o operando tiver correspondncia com um padro. Para mais detalhes, veja a pgina 115.
111

Operadores NOT

Reverte o valor de um operador Booleano.


[NOT] exprL OR

Retornar TRUE se uma das expresses for TRUE.


exprL1 OR exprL2 SOME

O operador SOME ser avaliado como TRUE se o resultado de uma consulta interna contiver pelo menos uma linha que satisfaa a comparao. O mesmo que ANY.

Operadores Unrios
+ (positivo)

Operador unrio que retorna o valor positivo de uma expresso numrica.


+expresso_numrica - (negativo)

Operador unrio que retorna o valor negativo de uma expresso numrica.


-expresso_numrica ~ (Bitwise NOT)

Retorna o complemento de um nmero.


~ expresso

Nveis de Precedncia de Operadores


+ (positivo), - (negativo), ~(Bitwise NOT) * (Multiplicao), / (Diviso), % (Mdulo) =, >, <, >=, <=, <>, !=, !>, !< ^ (Bitwise Exclusive OR), & (Bitwise AND), | (Bitwise OR) NOT AND ALL, ANY, BETWEEN, IN, LIKE, OR, SOME = (atribuio)
112

Operadores BETWEEN

Determina se o valor de uma expresso est dentro de um intervalo de valores. O operador NOT pode ser usado para retornar registros situados fora do intervalo.
expr1 [NOT] BETWEEN expr2 AND expr3

Argumento
expr1 NOT

Descrio
Expresso que identifica o campo que contm os dados a serem avaliados. Avalia a condio oposta, isto , se expr est situado fora do intervalo definido por expr1 e expr2. Expresses em relao s quais voc deseja avaliar expr1. A clusula BETWEEN inclusiva, o que significa que tanto expr2 como expr3 sero includos na comparao. A expr2 pode ser maior que expr3; entretanto, no ANSI SQL, expr2 precisa ser igual ou menor que expr3.

expr2, expr3

Exemplo 1 Seleciona o nome e salrio dos empregados que tm salrio entre 2000 e 7000.
SELECT NomeFunc, Salario FROM Empreg WHERE Salario BETWEEN 2000 AND 7000

Exemplo 2 Seleciona os clientes com nome comeando com as letras de A a F.


SELECT * FROM Clientes WHERE NomeCliente BETWEEN 'A' AND 'F'

Exemplo 3 Seleciona os registros de vendas entre 31/01/1999 e 30/ 03/1999. Literais do tipo DATETIME devem ser delimitados com os smbolos (#) e devem ser expressos sempre na forma MM/DD/AA, independentemente do formato de datas especificado no Control Panel (Painel de Controle) do Windows.
SELECT * FROM VENDAS WHERE DataVenda BETWEEN #01/31/1999# AND #03/30/1999#

113

Operadores IN

Verifica se determinado valor faz parte de uma lista de valores.


expresso [NOT] IN (valor1, valor2, ...)

Argumento
expresso NOT valor1, valor2,...

Descrio
Expresso que identifica o campo que contm os dados a serem avaliados. Avalia a condio oposta, isto , se expr no est na lista de valores. Expresso ou lista de expresses em relao s quais voc deseja avaliar expresso.

Exemplo Seleciona da tabela Clientes os clientes dos estados do Sul do Brasil (PR, SC e RS).
SELECT * FROM Clientes WHERE Estado IN ('PR','SC','RS')

Exemplo Seleciona os funcionrios cujo salrio seja um dos seguintes valores: 1000, 1500, 2000:
SELECT Salario FROM Funcionarios WHERE Salario IN (1000, 1500, 2000)

114

Operadores LIKE

Permite comparar uma expresso a um padro. Distingue minsculas de maisculas na comparao. O predicado usado exclusivamente nas comparaes entre strings.
expresso [NOT] LIKE 'padro'

Item
expresso padro

Significado
Expresso SQL (ou seja, o valor de um campo). Seqncia de caracteres em relao qual expresso ser comparado. Empregam a coincidncia de caracteres curinga e listas de faixas de variao de caracteres. Podem ser utilizados os caracteres curinga abaixo: Qualquer string de zero ou mais caracteres. Qualquer caractere nico. Qualquer dgito isolado (0-9). Caractere contido em lista. O caractere "-" utilizado para indicar um intervalo de caracteres ANSI; por exemplo: [0-9] seleciona os nmeros de 0 a 9. A faixa de variao dos caracteres tem de ser definida em ordem ascendente (por exemplo: a-z, e no z-a). Caractere isolado no contido em lista.

% _ # [lista]

[^lista]

Exemplos
'57%' '%57' '57_' 571## 'COL[IU]NA' 'DR[^O]GA' 'P[A-C]###' 'P[^A-C]###' Encontra qualquer string que comea com 57. Encontra qualquer string que termina com 57. Encontra qualquer string com 3 caracteres que comece com 57. Encontra qualquer nmero entre 57100 e 57199. Encontra 'COLINA' ou 'COLUNA'. Encontra qualquer combinao, exceto DROGA. Encontra DRAGA, DREGA, DRZGA, etc. Encontra PA000-PA999, PB000-PB999, PC000PC999. Encontra todos exceto PA at PC: PD000-PZ999.

Exemplo:
SELECT * FROM Funcionarios WHERE Sobrenome LIKE '[A-D]*'; Retorna uma lista de funcionrios cujos nomes comeam com as letras de A a D.

115

Tipos de Dados

Tipos de Dados do SQL Server


Inteiros (integer)
Bit Representa o tipo booleano com dois valores possveis: 1 e 0. Int Representa valores inteiros, que possam ser armazenados em 4 bytes. Tamanho: 4 bytes Intervalo: -2,147,483,648 a 2,147,483,647 Smallint Representa valores inteiros, que possam ser armazenados em 2 bytes. Espao ocupado: 2 bytes Intervalo: -32768 a 32767 Tinyint Representa valores inteiros no-negativos, que possam ser armazenados em um byte. Espao ocupado: 1 byte Intervalo: 0 a 255

Numricos
Decimal(p,[s]) Dados decimais, onde podem ser definidas preciso e escala Intervalo: -10^38 -1 a 10^38 -1. Numeric(p,[s]) Sinnimo de decimal.

Dados Monetrios
Money Usado para representar valores monetrios. Espao ocupado: 8 bytes Intervalo: -922,337,203,685,477.5808 +922,337,203,685,477.5807

Smallmoney Corresponde ao tipo money, mas armazenado em 4 bytes. Espao ocupado: 4 bytes Intervalo: -214,748.3648 a +214,748.364

116

Tipos de Dados

Numricos Aproximados
Float[(p)] Representa valores em ponto flutuante como REAL. Intervalo: -1.79E + 308 a 1.79E + 308. Real Usado para valores em ponto flutuante. Intervalo: -3.40E + 38 a 3.40E + 38.

Datetime and Smalldatetime


Datetime Especifica uma data e uma hora, com cada valor armazenado como um inteiro, em 4 bytes. Datas no intervalo de 01/01/1753 a 31/12/9999. Possui preciso de milissegundos. Smalldatetime Especifica uma data e uma hora, com cada valor sendo armazenado como um inteiro, em 2 bytes. Datas no intervalo de 01/01/1900 a 06/06/2079. Possui preciso de minutos. Cursor Permite a criao de uma varivel de cursor em uma stored procedure. Timestamp Nmero nico no banco de dados. Este tipo de dado utilizado para garantir que duas pessoas no faam alteraes ao mesmo tempo na mesma linha de uma tabela. Uniqueidentifier um nmero de identificao exclusivo armazenado como um string binrio de 16 bytes (GUID).

Strings de Caracteres
Char[(n)] Define um string com tamanho fixo, com no mximo 8000 caracteres. Varchar[(n)] Define um string com tamanho varivel, com no mximo 8000 caracteres. Text[(n)] Define um string de tamanho fixo de at 2^31 - 1 (2,147,483,647) caracteres.

117

Tipos de Dados

Strings de Caracteres Unicode


Nchar[(n)] Define um string de caracteres Unicode de tamanho fixo, com no mximo 4000 caracteres. Nvarchar[(n)] Define um string de caracteres Unicode de tamanho varivel, com no mximo 4000 caracteres. Ntext[(n)] Define um string de caracteres Unicode de tamanho varivel, com no mximo 2^30 - 1 (1,073,741,823) caracteres.

Strings Binrios
Binary[(n)] Define um string de bit de comprimento fixo, com n bytes (mximo=8000 bytes). Varbinary[(n)] Define um string de bit de comprimento varivel com b bytes (mximo=8000 bytes). Image[(n)] Define um string de bit de comprimento fixo, com tamanho mximo de 2^31 - 1 (2,147,483,647) bytes.

Sinnimos
Tipos de dados sinnimos para compatibilidade SQL-92.
Sinnimo binary varying char varying character character character(n) character varying(n) dec double precision float[(n)] para n = 1-7 float[(n)] para n = 8-15 integer national character(n) national char(n) national character varying(n) national char varying(n) national text numeric Equivalente no SQL Server varbinary varchar char char(1) char(n) varchar(n) decimal float real float int nchar(n) nchar(n) nvarchar(n) nvarchar(n) ntext decimal

118

Constantes e Identificadores

Exemplos de Constantes
String 'Catanduva' 'O''Reilly' Unicode N'Jos' Binrias 0x12Ef 0x69048AEFDD010E Datetime 'Abril 24, 2000' '24 Abril, 2000' '04/24/2000' '11:45:24' '02:20 PM' Inteiras 1894 2 Decimais 1894.1204 2.0 Float e Real 101.5E5 0.5E-2 Money $12 $542023.14 Uniqueidentifier '6F9619FF-8B86-D011-B42D-00C04FC964FF'

Identificadores do SQL Server


Os identificadores podem ter at 128 caracteres, incluindo letras, os smbolos (_, @ ou #) e nmeros. As regras para nomes de identificadores so as seguintes: O primeiro caractere deve ser uma letra ou os seguintes smbolos: @, #, ou _ (sublinhado). Nomes de identificadores com espaos em branco no nome, devem ser colocados entre colchetes. Nomes de identificadores comeando com os smbolos @, # e ## tm significado especial: @ identifica um parmetro ou varivel local. # identifica uma procedure ou tabela temporria. ## identifica um objeto temporrio global.
119

Palavras-reservadas

Palavras-reservadas do Transact-SQL
ADD ALL ALTER AND ANY AS ASC AUTHORIZATION AVG BACKUP BEGIN BETWEEN BREAK BROWSE BULK BY CASCADE CASE CHECK CHECKPOINT CLOSE CLUSTERED COALESCE COLUMN COMMIT COMMITTED COMPUTE CONFIRM CONSTRAINT CONTAINS CONTAINSTABLE CONTINUE CONTROLROW CONVERT COUNT CREATE CROSS CURRENT CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR DATABASE DBCC DEALLOCATE DECLARE DEFAULT DELETE DENY DESC DISK DISTINCT DISTRIBUTED DOUBLE DROP DUMMY DUMP ELSE END ERRLVL ERROREXIT ESCAPE EXCEPT EXEC EXECUTE EXISTS EXIT FETCH FILE FILLFACTOR FLOPPY FOR FOREIGN FREETEXT FREETEXTTABLE FROM FULL GOTO GRANT GROUP HAVING HOLDLOCK IDENTITY IDENTITY_INSERT IDENTITYCOL IF IN INDEX INNER INSERT INTERSECT INTO IS ISOLATION JOIN KEY KILL LEFT LEVEL LIKE LINENO LOAD MAX MIN MIRROREXIT NATIONAL NOCHECK NONCLUSTERED NOT NULL NULLIF OF OFF OFFSETS ON ONCE ONLY OPEN OPENDATASOURCE OPENQUERY OPENROWSET OPTION OR ORDER OUTER OVER PERCENT PERM PERMANENT PIPE PLAN PRECISION PREPARE PRIMARY PRINT PRIVILEGES PROC PROCEDURE PROCESSEXIT PUBLIC RAISERROR READ READTEXT RECONFIGURE REFERENCES REPEATABLE REPLICATION RESTORE RESTRICT RETURN REVOKE RIGHT ROLLBACK ROWCOUNT ROWGUIDCOL RULE SAVE SCHEMA SELECT SERIALIZABLE SESSION_USER SET SETUSER SHUTDOWN SOME STATISTICS SUM SYSTEM_USER TABLE TAPE TEMP TEMPORARY TEXTSIZE THEN TO TOP TRAN TRANSACTION TRIGGER TRUNCATE TSEQUAL UNCOMMITTED UNION UNIQUE UPDATE UPDATETEXT USE USER VALUES VARYING VIEW WAITFOR WHEN WHERE WHILE WITH WORK WRITETEXT

120

Informaes Adicionais

Site Oficial do SQL Server 7


Voc pode conseguir informaes mais atualizadas sobre o SQL Server no site da Microsoft em:

http://www.microsoft.com/sql/
Notao Utilizada neste Guia
Conveno itlico Significado Representa nomes de bancos de dados, nomes de tabelas, nomes de colunas e valores que devem ser fornecidos pelo usurio. Identifica valores opcionais na sintaxe, que podem ou no ser fornecidos pelo usurio. Digite somente a informao dentro dos parnteses; no digite os parnteses. Identifica itens requeridos na sintaxe. Digite somente a informao dentro dos colchetes; no digite os colchetes.

[]

{}

| (barra vertical) Indica que deve ser escolhida uma das opes dentro dos colchetes. ... (elipses) Indica que o item prvio da sintaxe pode ser repetido.

Novatec na Internet
Conhea o site da Novatec Editora

www.novateceditora.com.br
Veja a relao de nossas publicaes; Conhea os ltimos lanamentos; Adquira nossas publicaes atravs da Internet; Cadastre-se para ser informado das novidades da Novatec; Faa o download (parcial) dos Guias; E muito mais.

E-mail: leitor@novateceditora.com.br

121

ndice

Smbolos
!< 110 !> 110 % 109, 115 * 109 + 109 - 109 -- 5 / 109 /* ...*/ 5 < 110 <= 110 <> 110 = 110 > 110 >= 110 @@CONNECTIONS 83 @@CPU_BUSY 107 @@CURSOR_ROWS 85 @@DATEFIRST 83 @@DBTS 83 @@ERROR 103 @@FETCH_STATUS 85 @@IDENTITY 104 @@IDLE 107 @@IO_BUSY 107 @@LANGID 83 @@LANGUAGE 83 @@LOCK_TIMEOUT 83 @@MAX_CONNECTIONS 83 @@MAX_PRECISION 83 @@NESTLEVEL 83 @@OPTIONS 84 @@PACK_RECEIVED 107 @@PACK_SENT 107 @@PACKET_ERRORS 107 @@PROCID 97 @@REMSERVER 84 @@ROWCOUNT 105 @@SERVERNAME 84 @@SERVICENAME 84 @@SPID 84 @@TEXTSIZE 84 @@TIMETICKS 107 @@TOTAL_ERRORS 107 @@TOTAL_READ 107 @@TOTAL_WRITE 107 @@TRANCOUNT 106 @@VERSION 84 [^lista] 115 [lista] 115 _ 115

A
ABS 88 ACOS 88 ALL 111 ALTER DATABASE 5 ALTER PROCEDURE 7

122

ndice
ALTER TABLE 8 ALTER TRIGGER 12 ALTER VIEW 13 AND 111 ANY 111 APP_NAME 103 ASCII 100 ASIN 88 ATAN 88 ATN2 88 AVG 81

B
BEGIN DISTRIBUTED TRANSACTION BEGIN TRANSACTION 16 BEGIN...END 16 BETWEEN 111, 113 Binary 118 Bit 116 BREAK 16 BULK INSERT 17 16

C
CASE 19 CAST 103 CEILING 88 CHAR 100 Char 117 CHARINDEX 100 CHECKPOINT 20 CLOSE 20 COALESCE 103 COL_LENGTH 91 COL_NAME 91 COLUMNPROPERTY 91 Comandos 5 Comentrios 5 COMMIT TRANSACTION 20 COMMIT WORK 20 CONTINUE 20 CONVERT 103 COS 88 COT 88 COUNT 81 COUNT(*) 81 CREATE DATABASE 21 CREATE DEFAULT 22 CREATE INDEX 22 CREATE PROCEDURE 23 CREATE RULE 24 CREATE SCHEMA 24 CREATE STATISTICS 25 CREATE TABLE 26 CREATE TRIGGER 29 CREATE VIEW 30 CURRENT_TIMESTAMP 103 CURRENT_USER 103 Cursor 117 CURSOR_STATUS 85

123

ndice

D
DATABASEPROPERTY 92 DATALENGTH 103 DATEADD 86 DATEDIFF 86 DATENAME 86 DATEPART 86 Datetime 117 DAY 87 DB_ID 93 DB_NAME 93 DBCC 31 DBCC CHECKALLOC 62 DBCC CHECKCATALOG 62 DBCC CHECKDB 63 DBCC CHECKFILEGROUP 64 DBCC CHECKIDENT 64 DBCC CHECKTABLE 65 DBCC DBREINDEX 66 DBCC DBREPAIR 65 DBCC dllname 66 DBCC HELP 66 DBCC INPUTBUFFER 66 DBCC NEWALLOC 67 DBCC OPENTRAN 67 DBCC OUTPUTBUFFER 67 DBCC PINTABLE 67 DBCC PROCCACHE 68 DBCC ROWLOCK 68 DBCC SHOW_STATISTICS 68 DBCC SHOWCONTIG 68 DBCC SHRINKDATABASE 69 DBCC SHRINKFILE 69 DBCC SQLPERF 70 DBCC TEXTALL 70 DBCC TEXTALLOC 70 DBCC TRACEOFF 70 DBCC TRACEON 71 DBCC TRACESTATUS 71 DBCC UNPINTABLE 71 DBCC UPDATEUSAGE 72 DBCC USEROPTIONS 72 DEALLOCATE 31 Decimal 116 DECLARE 31 DECLARE CURSOR 31 DEGREES 88 DELETE 33 DENY 34 DIFFERENCE 100 DROP DATABASE 35 DROP DEFAULT 35 DROP INDEX 35 DROP PROCEDURE 36 DROP RULE 36 DROP STATISTICS 36 DROP TABLE 36 DROP TRIGGER 36 DROP VIEW 36 DUMP 37

124

ndice

E
ELSE 40 END 16 EXECUTE 37 EXISTS 111 EXP 89

F
FETCH 38 FILE_ID 94 FILE_NAME 94 FILEGROUP_ID 94 FILEGROUP_NAME 94 FILEGROUPPROPERTY 94 FILEPROPERTY 95 Float 117 FLOOR 89 FORMATMESSAGE 104 FROM 52 FULLTEXTCATALOGPROPERTY 95 FULLTEXTSERVICEPROPERTY 96 Funes de Cursor 85 Funes de agregao 81 Funes de Configurao 83 Funes de Data e Hora 86 Funes de Estatstica do Sistema 107 Funes de Segurana 98 Funes de Texto e Imagem 108 Funes do Sistema 103 Funes Matemticas 88 Funes Metadata 91 Funes String 100

G
GETANSINULL 104 GETDATE 87 GOTO 38 GRANT 39 GROUPING 81

H
HOST_ID 104 HOST_NAME 104

I
IDENT_INCR 104 IDENT_SEED 104 IF...ELSE 40 Image 118 IN 111, 114 INDEX_COL 96 INDEXPROPERTY 96 Informaes Adicionais 121 INSERT 40 Int 116 IS_MEMBER 98 IS_SRVROLEMEMBER 98 ISDATE 104 ISNULL 105 ISNUMERIC 105

125

ndice

K
KILL 41

L
LEFT 100 LEN 100 LIKE 111, 115 LOAD 41 LOG 89 LOG10 89 LOWER 100 LTRIM 101

M
MAX 81 MIN 82 Money 116 MONTH 87

N
NCHAR 101 Nchar 118 NEWID 105 NOT 112 Notao Utilizada neste Guia 121 Ntext 118 NULLIF 105 Numeric 116 Nvarchar 118

O
OBJECT_ID 97 OBJECT_NAME 97 OBJECTPROPERTY 97 OPEN 42 Operadores 109 OPTION 55 OR 112

P
PARSENAME 105 PATINDEX 101 PERMISSION 105 PI 89 POWER 89 PRINT 42

Q
QUOTENAME 101

R
RADIANS 89 RAISERROR 42 RAND 89 READTEXT 43 Real 117 RECONFIGURE 43 REPLACE 101 REPLICATE 101

126

ndice
RESTORE 44 RESTORE FILELISTONLY 46 RESTORE HEADERONLY 46 RESTORE LABELONLY 46 RESTORE VERIFYONLY 47 RETURN 47 REVERSE 101 REVOKE 48 RIGHT 101 ROUND 90 RTRIM 102

S
SET 56 SET ANSI_DEFAULTS 73 SET ANSI_NULL_DFLT_OFF 73 SET ANSI_NULL_DFLT_ON 73 SET ANSI_NULLS 73 SET ANSI_PADDING 74 SET ANSI_WARNINGS 74 SET ARITHABORT 74 SET ARITHIGNORE 74 SET CONCAT_NULL_YIELDS_NULL 74 SET CURSOR_CLOSE_ON_COMMIT 74 SET DATEFIRST 75 SET DATEFORMAT 75 SET DEADLOCK_PRIORITY 75 SET DISABLE_DEF_CNST_CHK 75 SET FMTONLY 76 SET FORCEPLAN 76 SET IDENTITY_INSERT 76 SET IMPLICIT_TRANSACTIONS 77 SET LANGUAGE 77 SET LOCK_TIMEOUT 77 SET NOCOUNT 77 SET NOEXEC 77 SET NUMERIC_ROUNDABORT 78 SET OFFSETS 78 SET PARSEONLY 78 SET PROCID 78 SET QUERY_GOVERNOR_COST_LIMIT 78 SET QUOTED_IDENTIFIER 78 SET REMOTE_PROC_TRANSACTIONS 79 SET ROWCOUNT 79 SET SHOWPLAN_ALL 79 SET SHOWPLAN_TEXT 79 SET STATISTICS IO 79 SET STATISTICS PROFILE 79 SET STATISTICS TIME 79 SET TEXTSIZE 80 SET TRANSACTION ISOLATION LEVEL 80 SET XACT_ABORT 80 SETUSER 56 SHUTDOWN 57 SIGN 90 SIN 90 Site Oficial do SQL Server 7 121 Smalldatetime 117

127

ndice
Smallint 116 Smallmoney 116 SOME 112 SOUNDEX 102 SPACE 102 SQRT 90 SQUARE 90 STATS_DATE 106 STDEV 82 STDEVP 82 STR 102 STUFF 102 SUBSTRING 102 SUM 82 SUSER_ID 98 SUSER_NAME 98 SUSER_SID 98 SUSER_SNAME 99 SYSTEM_USER 106

T
TAN 90 Text 117 TEXTPTR 108 TEXTVALID 108 Timestamp 117 Tinyint 116 TRUNCATE TABLE 57 TYPEPROPERTY 97

U
UNICODE 102 UNION 55 Uniqueidentifier 117 UPDATE 57 UPDATE STATISTICS 59 UPDATETEXT 59 UPPER 102 USE 60 USER 99 USER_ID 99 USER_NAME 106

V
VAR 82 Varbinary 118 Varchar 117 VARP 82

W
WAITFOR 60 WHILE 61 WRITETEXT 61

Y
YEAR 87

128

SQL Server 7 Transact-SQL


Transact-SQL a verso da linguagem SQL utilizada no SQL Server 7. Possui recursos extremamente poderosos que estendem a linguagem SQL padro. Este Guia de Consulta Rpida contm uma referncia completa dos recursos da Transact-SQL. indicado tanto para programadores e usurios, quanto para administradores de bancos de dados. Indispensvel para quem quer obter o mximo proveito dos recursos do SQL Server 7, sem perder tempo consultando volumosos manuais. Prtico para carregar e consultar.

I SBN 8 5 - 8 5 1 8 4 - 7 0 - 1

9 788585 184704

Copyright Novatec Editora Ltda. Fone: (011) 6959-6529 Fax: (011) 6950-8869 Internet: www.novatec1.com