Você está na página 1de 146

SQL

SQL Server
Fbio dos Reis
Bson Treinamentos 2013
Structured Query Language
Linguagem de Consulta Estruturada padro
para acesso a Bancos de Dados
Usada em inmeros sistemas, como MySQL,
SQL Server, Oracle, Sybase, Access, DB2,
PostgreSQL, etc.
Cada sistema pode usar um dialeto do SQL,
como T-SQL (SQL Server), PL/SQL (Oracle), JET
SQL (Access), etc.
Fbio dos Reis
Bson Treinamentos 2013
Funes do SQL
Permite o acesso a dados em SGBDR
Permite definir os dados no banco de dados e
manipul-los.
Pode ser embutido em outras linguagens usando
mdulos SQL, bibliotecas, etc.
Permite criar e excluir bancos de dados e tabelas.
Permite a criao de Vises (Exibies), Stored
Procedures e Funes em um Banco de Dados.
Permite configurar permisses de acesso em
tabelas, procedimentos e vises.
Fbio dos Reis
Bson Treinamentos 2013
Grupos de Comandos
Os comandos SQL podem ser divididos em
quatro grupos principais:
DDL
DML
DCL
DQL
Fbio dos Reis
Bson Treinamentos 2013
DDL Data Definition Language
Comando Descrio
CREATE
Cria uma nova tabela, viso ou outro objeto
no BD.
ALTER
Modifica um objeto existente no BD, como
uma tabela.
DROP
Exclui uma tabela inteira, uma exibio de
uma tabela ou outro objeto no banco de
dados.
Fbio dos Reis
Bson Treinamentos 2013
DML Data Manipulation Language
Comando Descrio
INSERT Cria um registro (linha)
UPDATE Modifica registros
DELETE Exclui registros
Fbio dos Reis
Bson Treinamentos 2013
DCL Data Control Language
Comando Descrio
GRANT D privilgios a um usurio
REVOKE Retira privilgios fornecidos a um usurio
Fbio dos Reis
Bson Treinamentos 2013
DQL Data Query Language
Comando Descrio
SELECT
Obtm registros especificados de uma ou
mais tabelas. (consulta)
Fbio dos Reis
Bson Treinamentos 2013
SGBDR
Sistema Gerenciador de Banco de Dados
Relacional
Trata-se de um sistema de gerenciamento de
bancos de dados baseado no modelo
relacional introduzido por E. F. Codd.
Fbio dos Reis
Bson Treinamentos 2013
Composio de um Banco de Dados
Tabelas
Campos (Colunas)
Registros (Linhas)
Fbio dos Reis
Bson Treinamentos 2013
Tabelas
Objetos onde so armazenados os dados em
um banco de dados relacional.
Uma tabela uma coleo de entradas de
dados relacionados e consiste em linhas e
colunas.
Fbio dos Reis
Bson Treinamentos 2013
Campo
So entidades que representam os atributos
dos dados, como Nome, Data de Nascimento,
Salrio, Preo, etc.
Um campo uma coluna em uma tabela que
mantm informaes especficas sobre cada
registro.
Fbio dos Reis
Bson Treinamentos 2013
Registro
Linha, ou Tupla
Cada entrada individual em uma tabela. Trata-
se de um conjunto de campos relacionados
que caracterizam os dados de uma entidade
nica.
Fbio dos Reis
Bson Treinamentos 2013
Tipos de Dados
Tipo Descrio Armazenamento
char(n) String de caracteres de tamanho fixo, mximo de 8000
caracteres.
n
varchar(n) String de caracteres de tamanho varivel, mximo de 8000
caracteres.
nchar(n) Dados Unicode de tamanho fixo, mximo de 4000
caracteres.
nvarchar(n) Dados Unicode de tamanho varivel, mximo de 4000
caracteres.
bit 0, 1 ou nulo
tinyint Nmeros inteiros de 0 a 255 1 byte
smallint Nmeros inteiros de -32768 a 32767 2 bytes
int Nmeros inteiros entre -2,147,483,648 e 2,147,483,647 4 bytes
Fbio dos Reis
Bson Treinamentos 2013
Tipos de Dados
Tipo Descrio Armazenamento
bigint Nmeros entre -9,223,372,036,854,775,808 e
9,223,372,036,854,775,807
8 bytes
real Nmeros de ponto flutuante entre -3.4 x 10
38
e 3.4x10
38
4 bytes
datetime De 01/01/1753 a 31/12/9999, com uma preciso de 3.33
milisegundos.
8 bytes
smalldatetime De 01/01/1900 a 06/06/2079, com uma preciso de 1 minuto. 4 bytes
date Data apenas. De 01/01/0001 a 31/12/9999 3 bytes
time Hora apenas. Preciso de at 100 nanossegundos. 3-5 bytes
text Cadeia de caracteres de tamanho varivel. At 2GB de dados.
money Dados monetrios de -922,337,203,685,477.5808 at
922,337,203,685,477.5807
8 bytes
Fbio dos Reis
Bson Treinamentos 2013
Criao de um Banco de Dados
Fbio dos Reis
Bson Treinamentos 2013
Criar Banco de Dados
CREATE DATABASE db_Biblioteca
ON PRIMARY (
NAME= db_Biblioteca,
FILENAME='C:\SQL\db_Biblioteca.MDF',
SIZE=6MB,
MAXSIZE=15MB,
FILEGROWTH=10%
)
Fbio dos Reis
Bson Treinamentos 2013
USE
O comando USE instrui o SGBDR a utilizar o
banco de dados especificado para rodar os
comandos.
Sintaxe:
USE banco_de_dados
GO
Fbio dos Reis
Bson Treinamentos 2013
sp_helpdb
Informa o tamanho, taxa de crescimento, e local
do banco de dados.
sp_helpdb BANCO_DADOS
Fbio dos Reis
Bson Treinamentos 2013
SQL Constraints (Restries)
Restries so regras aplicadas nas colunas de
uma tabela.
So usadas para limitar os tipos de dados que
so inseridos.
Podem ser especificadas no momento de
criao da tabela (CREATE) ou aps a tabela
ter sido criada (ALTER)
Fbio dos Reis
Bson Treinamentos 2013
SQL Constraints (Restries)
Principais:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
Fbio dos Reis
Bson Treinamentos 2013
NOT NULL
A constraint NOT NULL impe a uma coluna a
NO aceitar valores NULL.
A constraint NOT NULL obriga um campo a
sempre possuir um valor.
Deste modo, no possvel inserir um registro
(ou atualizar) sem entrar com um valor neste
campo.
Fbio dos Reis
Bson Treinamentos 2013
UNIQUE
A restrio UNIQUE identifica de forma nica cada
registro em uma tabela de um banco de dados.
As constraints UNIQUE e PRIMARY KEY garantem a
unicidade em uma coluna ou conjunto de colunas.
Uma constraint PRIMARY KEY automaticamente
possui uma restrio UNIQUE definida.
Voc pode ter vrias constraints UNIQUE em uma
tabela, mas apenas uma Chave Primria por
tabela.
Fbio dos Reis
Bson Treinamentos 2013
PRIMARY KEY
A PRIMARY KEY identifica de forma nica cada
registro em uma tabela de banco de dados.
Chaves Primrias devem conter valores
nicos.
Uma coluna de chave primria no pode
conter valores NULL
Cada tabela deve ter uma chave primria e
apenas uma chave primria.
Fbio dos Reis
Bson Treinamentos 2013
FOREIGN KEY
Uma FOREIGN KEY (Chave Estrangeira) em uma
tabela um campo que aponta para uma chave
primria em outra tabela.
CONSTRAINT fk_ID_Autor FOREIGN KEY (ID_Autor)
REFERENCES tbl_autores(ID_Autor)
Neste exemplo a chave primria est na tabela tbl_autores e
uma chave estrangeira de nome ID_Autor foi criada na tabela
atual, usando o nome fk_ID_Autor
Fbio dos Reis
Bson Treinamentos 2013
CHECK
A constraint CHECK usada para limitar uma faixa
de valores que podem ser colocados em uma
coluna.
Se uma constraint CHECK for definida em uma
nica coluna ela permitir apenas determinados
valores para a coluna.
Se a constraint CHECK for definida para a tabela,
ela poder limitar os valores em algumas colunas
com base nos valores de outras colunas do
registro.
Fbio dos Reis
Bson Treinamentos 2013
DEFAULT
A restrio DEFAULT usada para inserir um
valor padro em uma coluna.
O valor padro ser adicionado a todos os
novos registros caso nenhum outro valor seja
especificado.
Fbio dos Reis
Bson Treinamentos 2013
Criar tabelas
USE db_Biblioteca
CREATE TABLE tbl_Livro
(ID_Livro SMALLINT PRIMARY KEY IDENTITY(100,1),
Nome_Livro VARCHAR (50) NOT NULL,
ISBN VARCHAR(30) NOT NULL UNIQUE,
ID_Autor SMALLINT NOT NULL,
Data_Pub DATE NOT NULL,
Preco_Livro MONEY NOT NULL)
Fbio dos Reis
Bson Treinamentos 2013
Criar outras tabelas
CREATE TABLE tbl_autores (
ID_Autor SMALLINT PRIMARY KEY,
Nome_Autor VARCHAR(50),
Sobrenome_Autor VARCHAR(60)
)
CREATE TABLE tbl_editoras
(ID_Editora SMALLINT PRIMARY KEY IDENTITY,
Nome_Editora VARCHAR(50) NOT NULL
)
Fbio dos Reis
Bson Treinamentos 2013
sp_help TABELA
Informa os ndices, chaves e campos, atributos
tipos de atributos de uma tabela (stored
procedures, comandos pr-programados)
Fbio dos Reis
Bson Treinamentos 2013
AUTO INCREMENT (IDENTITY)
O auto incremento permite que um nmero
nico seja gerado quando um novo registro
inserido em uma tabela.
Em SQL SERVER trata-se da palavra chave
IDENTITY (identidade), cujo valor inicial
padro 1, e se incrementa em 1.
Para que o valor de IDENTITY inicie em 100 e
se incremente de 2 em 2, use IDENTITY
(100,2).
Fbio dos Reis
Bson Treinamentos 2013
AUTO INCREMENT (IDENTITY)
Ao inserir valores na tabela, no necessrio
especificar o valor para a coluna de auto-
incremento.
No possvel alterar uma coluna existente
para configurar IDENTITY.
Se necessrio, crie uma nova tabela com
IDENTITY e exclua a atual.
S permitido usar uma coluna de identidade
por tabela.
Fbio dos Reis
Bson Treinamentos 2013
Identidade - Exemplo
CREATE TABLE tbl_teste_identidade
(ID_Teste SMALLINT PRIMARY KEY IDENTITY,
valor SMALLINT NOT NULL)
INSERT INTO tbl_teste_identidade (valor) VALUES (10)
INSERT INTO tbl_teste_identidade (valor) VALUES (20)
INSERT INTO tbl_teste_identidade (valor) VALUES (30)
INSERT INTO tbl_teste_identidade (valor) VALUES (40)
SELECT * FROM tbl_teste_identidade
Fbio dos Reis
Bson Treinamentos 2013
(Chave Primria com mltiplas colunas)
CREATE TABLE Clientes
(
ID_Cliente int NOT NULL,
Sobrenome varchar(255) NOT NULL,
Nome varchar(255),
Rua varchar(255),
Cidade varchar(255),
CONSTRAINT pk_IDCliente PRIMARY KEY (ID_Cliente,Sobrenome)
)
Fbio dos Reis
Bson Treinamentos 2013
Alterar Tabelas
possvel alterar a estrutura de uma tabela
aps ter sido criada, acrescentando ou
excluindo atributos (campos)
Fbio dos Reis
Bson Treinamentos 2013
ALTER TABLE - DROP
ALTER TABLE tbl_Livro
DROP COLUMN ID_Autor
Pode-se excluir uma constraint:
ALTER TABLE tabela
DROP CONSTRAINT nome_constraint
Fbio dos Reis
Bson Treinamentos 2013
ALTER TABLE - ADD
ALTER TABLE tbl_Livro
ADD ID_Autor SMALLINT NOT NULL
CONSTRAINT fk_ID_Autor FOREIGN KEY (ID_Autor)
REFERENCES tbl_autores (ID_autor)
ALTER TABLE tbl_Livro
ADD ID_editora SMALLINT NOT NULL
CONSTRAINT fk_id_editora FOREIGN KEY (ID_editora)
REFERENCES tbl_editoras (ID_editora)
Fbio dos Reis
Bson Treinamentos 2013
ALTER TABLE ALTER COLUMN
ALTER TABLE tbl_Livro
ALTER COLUMN ID_Autor SMALLINT
Fbio dos Reis
Bson Treinamentos 2013
ALTER TABLE ADD PK
ALTER TABLE Clientes
ADD PRIMARY KEY (ID_Cliente)
Obs. A coluna ID_Cliente deve existir antes de
ser transformada em chave primria.
A coluna ID_Cliente receber a Constraint
(restrio) PRIMARY KEY, e passar a ser a
chave primria da tabela.
Fbio dos Reis
Bson Treinamentos 2013
DROP TABLE Excluir tabela
DROP TABLE nome_tabela
DROP TABLE Clientes
Fbio dos Reis
Bson Treinamentos 2013
Diagrama de banco de Dados
Aps adicionar as tabelas, verifique se os
relacionamentos foram criados observando o
diagrama de banco de dados.
Fbio dos Reis
Bson Treinamentos 2013
Fbio dos Reis
Bson Treinamentos 2013
Inserir Dados
Inserir dados em uma tabela:
INSERT INTO tabela (coluna1, coluna2,...)
VALUES (valor1, valor2,...)
Fbio dos Reis
Bson Treinamentos 2013
Inserir Dados Tabela de Autores
INSERT INTO tbl_Autores (ID_Autor, Nome_Autor, SobreNome_Autor) VALUES (1,
Daniel', Barret')
INSERT INTO tbl_Autores (ID_Autor, Nome_Autor, SobreNome_Autor) VALUES (2,
Gerald', Carter')
INSERT INTO tbl_Autores (ID_Autor, Nome_Autor, SobreNome_Autor) VALUES (3,
Mark', 'Sobell')
INSERT INTO tbl_Autores (ID_Autor, Nome_Autor, SobreNome_Autor) VALUES (4,
William', 'Stanek')
INSERT INTO tbl_Autores (ID_Autor, Nome_Autor, SobreNome_Autor) VALUES (5,
Richard', Blum')
Fbio dos Reis
Bson Treinamentos 2013
Inserir Dados Tabela de Editoras
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (Prentice Hall')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES ('OReilly')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (Microsoft Press')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (Wiley')
Fbio dos Reis
Bson Treinamentos 2013
Inserir Dados Tabela de Livros
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('Linux Command Line and Shell Scripting',
143856969,'20091221', 68.35, 5, 4)
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('SSH, the Secure Shell',127658789,'20091221', 58.30, 1,
2)
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('Using Samba',123856789,'20001221', 61.45, 2, 2)
Fbio dos Reis
Bson Treinamentos 2013
Inserir Dados Tabela de Livros
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('Fedora and Red Hat Linux', 123346789, '20101101',
62.24, 3, 1)
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('Windows Server 2012 Inside Out',
123356789,'20040517', 66.80, 4, 3)
INSERT INTO tbl_Livro (Nome_Livro, ISBN, Data_Pub, Preco_Livro, ID_Autor,
ID_Editora) VALUES ('Microsoft Exchange Server 2010',
123366789,'20001221', 45.30, 4, 3)
Fbio dos Reis
Bson Treinamentos 2013
TRUNCATE TABLE
Remove todas as linhas de uma tabela sem
registrar as excluses de linhas individuais.
TRUNCATE TABLE como a instruo DELETE
sem usar a clusula WHERE.
Entretanto, TRUNCATE TABLE mais rpida e
utiliza menos recursos de sistema e log de
transaes.
Fbio dos Reis
Bson Treinamentos 2013
TRUNCATE TABLE
SELECT COUNT(*) AS Tabela_Antes FROM Clientes
GO
TRUNCATE TABLE Clientes
GO
SELECT COUNT(*) AS Tabela_Depois FROM Clientes
GO
Obs. Usamos os comandos SELECT para mostrar o estado da tabela antes e
depois do TRUNCATE.
Fbio dos Reis
Bson Treinamentos 2013
Consultas Simples
SELECT coluna FROM Tabela
Ex.:
SELECT Nome_Autor FROM tbl_Autores
SELECT * FROM tbl_Autores
SELECT Nome_Livro FROM tbl_Livro
Fbio dos Reis
Bson Treinamentos 2013
Especificando Colunas
SELECT colunas FROM tabela
Ex.:
SELECT Nome_Livro, ID_Autor FROM tbl_Livro
SELECT Nome_Livro, ISBN
FROM tbl_Livro
ORDER BY Nome_Livro
Fbio dos Reis
Bson Treinamentos 2013
ORDER BY
A palavra-chave ORDER BY usada para
ordenar o conjunto-resultado de registros.
ASC Ordem ascendente
DESC Ordem descendente (inversa)
SELECT * FROM tbl_Livro
ORDER BY Nome_Livro ASC
Fbio dos Reis
Bson Treinamentos 2013
Seleo com Ordenao
SELECT colunas FROM tabela
ORDER BY coluna_a_ordenar
Ex.:
SELECT Nome_Livro, ID_Editora FROM tbl_Livro ORDER BY
ID_Editora
(ordem crescente)
SELECT Nome_Livro, Preco_Livro FROM tbl_Livro ORDER BY
Preco_Livro DESC
(ordem decrescente)
Fbio dos Reis
Bson Treinamentos 2013
Collation ("Colao/Agrupamento")
Trata-se da codificao dos caracteres em uma
ordem padro.
Muitos sistemas de colao so baseados em
ordem numrica ou alfabtica.
A colao usada pelo banco de dados
configurada durante a instalao do sistema.
Visite collation-charts.org para consultar cartas
de colao em vrios alfabetos e idiomas.
Fbio dos Reis
Bson Treinamentos 2013
Colao / Agrupamento
A colao tambm determina se acentos, caso
e outras propriedades alfabticas so levadas
em conta na ordem de classificao.
Para verificar as opes de colao instaladas
use a seguinte funo:
SELECT * FROM fn_helpcollations()
Fbio dos Reis
Bson Treinamentos 2013
Colao
Para ver o esquema de colao usado
atualmente pelo servidor:
SELECT SERVERPROPERTY('Collation') AS
Colao_Usada
O resultado provavelmente ser:
Latin1_General_CI_AS
CI = Case Insensitive
AS = Accent Sensitive
Fbio dos Reis
Bson Treinamentos 2013
Alterar Colao
A propriedade de colao de um banco de
dados ou coluna pode ser alterada com o uso
da palavra COLLATE. Ex.:
ALTER DATABASE test
COLLATE Greek_CI_AI
SELECT DATABASEPROPERTYEX
('test','Collation') AS Colao_Banco_test
Fbio dos Reis
Bson Treinamentos 2013
Alterar Colao em nvel de coluna
SELECT *
FROM tbl_Livro
ORDER BY Nome_Livro
COLLATE Icelandic_CI_AI
Fbio dos Reis
Bson Treinamentos 2013
SELECT DISTINCT
Algumas colunas podem conter valores
duplicados. Para exibir apenas valores diferentes
(distintos), use a palavra-chave DISTINCT:
Sintaxe:
SELECT DISTINCT colunas
FROM tabela
SELECT DISTINCT ID_Autor
FROM tbl_Livro
Fbio dos Reis
Bson Treinamentos 2013
Clusula WHERE
Permite filtrar registros em uma consulta.
Sintaxe:
SELECT colunas FROM tabela WHERE coluna = valor
Ex.:
SELECT Nome_Livro, Data_Pub FROM tbl_Livro
WHERE ID_Autor = 1
SELECT ID_Autor, Nome_Autor FROM tbl_autores
WHERE Sobrenome_Autor = 'Stanek'
Fbio dos Reis
Bson Treinamentos 2013
Excluir dados
Sintaxe:
DELETE FROM tabela WHERE coluna = valor
Ex.:
DELETE FROM tbl_autores WHERE ID_Autor = 2
Obs.: Sempre use a clusula WHERE para evitar
a perda de dados da tabela!
Fbio dos Reis
Bson Treinamentos 2013
Operadores AND e OR
Usados para filtrar registros baseados em mais
de uma condio.
O operador AND mostra um registro se ambas
as condies forem verdadeiras.
O operador OR mostra um registro se pelo
menos uma das condies for verdadeira.
Fbio dos Reis
Bson Treinamentos 2013
Exemplo Operadores AND e OR
SELECT * FROM tbl_Livro
WHERE ID_Livro > 2 AND ID_Autor < 3
SELECT * FROM tbl_Livro
WHERE ID_Livro > 2 OR ID_Autor < 3
Fbio dos Reis
Bson Treinamentos 2013
SELECT TOP
Usado para especificar o nmero de registros a retornar.
til para tabelas com muitos registros.
SELECT TOP nmero|percentual colunas
FROM tabela
ORDER BY coluna
SELECT TOP (10) PERCENT Nome_Livro
FROM tbl_Livro ORDER BY Nome_Livro
SELECT TOP (2) Nome_Livro
FROM tbl_Livro ORDER BY Nome_Livro
Fbio dos Reis
Bson Treinamentos 2013
WITH TIES
s vezes, os resultados retornados por TOP()
deixam de incluir itens adjaentes que possuam
o mesmo valor do ltimo da lista retornada.
Por exemplo, TOP(3) pode retornar os trs
primeiros times de um campeonato por
pontuao, mas deixa o quarto time de fora -
mesmo que ele tenha o mesmo nmero de
pontos que o terceiro.
Fbio dos Reis
Bson Treinamentos 2013
WITH TIES
Usamos WITH TIES para evitar esse problema:
SELECT TOP(3) WITH TIES Nome_Time, Pontos
FROM tbl_Times
ORDER BY Pontos DESC
Sem o WITH TIES a query retorna trs times, mas com o
WITH TIES, um quarto time retornado, pois tem a
mesma pontuao do terceiro.
Fbio dos Reis
Bson Treinamentos 2013
SQL Alias
Pode-se dar um nome diferente a uma coluna ou
tabela em uma consulta.
SELECT colunas
AS nome_alias
FROM tabela
SELECT Nome_Livro
AS Livro
FROM tbl_Livro
Fbio dos Reis
Bson Treinamentos 2013
Operador UNION
Permite combinar duas ou mais declaraes SELECT.
Cada declarao SELECT deve ter o mesmo nmero de
colunas, tipos de dados e ordem das colunas.
SELECT colunas FROM tabela1
UNION
SELECT colunas FROM tabela2
SELECT ID_Autor FROM tbl_autores UNION
SELECT ID_Autor FROM tbl_Livro
Fbio dos Reis
Bson Treinamentos 2013
SELECT INTO
Seleciona dados de uma ou mais tabelas e os insere em
uma tabela diferente.
Pode ser usada para criar cpias de backup de tabelas.
SELECT colunas
INTO nova_tabela
FROM tabela_atual
SELECT Nome_Livro,ISBN
INTO Livro_ISBN
FROM tbl_Livro
WHERE ID_Livro > 2
Fbio dos Reis
Bson Treinamentos 2013
Comentrios
Para inserir um comentrio em seu cdigo
SQL, use -- antes do comentrio:
Ex.:
-- O cdigo a seguir faz x, y, z, etc...
Fbio dos Reis
Bson Treinamentos 2013
CREATE INDEX
Usado para criar ndices em tabelas.
Os ndices permitem que as aplicaes de
bancos de dados encontrem dados mais
rapidamente, sem ter de ler a tabela toda.
Usurios no veem os ndices.
Apenas crie ndices em tabelas que recebem
muitas consultas, pois tabelas indexadas
levam mais tempo para serem atualizadas.
Fbio dos Reis
Bson Treinamentos 2013
CREATE INDEX
CREATE INDEX nome_ndice
ON nome_tabela (nome_coluna)
CREATE INDEX ind_nome_livro
ON tbl_Livro(Nome_Livro)
Fbio dos Reis
Bson Treinamentos 2013
Funes Agregadas
MIN = Valor Mnimo
MAX = Valor Mximo
AVG = Mdia Aritmtica
SUM = Total (Soma)
COUNT = Contar quantidade de itens
Fbio dos Reis
Bson Treinamentos 2013
Funes Agregadas
SELECT COUNT(*) FROM tbl_autores
SELECT MAX(Preco_Livro) FROM tbl_Livro
SELECT MIN(Preco_Livro) FROM tbl_Livro
SELECT AVG(Preco_Livro) FROM tbl_Livro
SELECT SUM(Preco_Livro) FROM tbl_Livro
Fbio dos Reis
Bson Treinamentos 2013
Renomear Tabelas
Use a Stored Procedure sp_rename:
SP_RENAME 'nome_atual', 'novo_nome'
Ex.:
SP_RENAME 'Livro','tbl_Livro
Livro: Nome atual
tbl_Livro: Novo Nome
Fbio dos Reis
Bson Treinamentos 2013
Atualizar Registros
UPDATE tabela
SET coluna = novo_valor_armazenado
WHERE coluna = valor_filtro
Obs.:
Caso no seja usada a clusula WHERE para filtrar os
registros, todos os dados da coluna sero alterados.
Fbio dos Reis
Bson Treinamentos 2013
Atualizar Registros - Exemplo
UPDATE tbl_Livro
SET NOME_Livro = SSH, o Shell Seguro'
WHERE ID_LIVRO = 101
Nome_Livro = Nome da coluna
Apenas linhas cujo ID_Livro for igual a 101 tero
o valor alterado
Fbio dos Reis
Bson Treinamentos 2013
BETWEEN - Seleo de Intervalos
SELECT colunas FROM tabela
WHERE coluna BETWEEN valor1 AND valor2
SELECT * FROM tbl_Livro
WHERE Data_Pub BETWEEN '20040517' AND
'20110517'
SELECT Nome_Livro AS Livro, Preco_Livro AS Preo
FROM tbl_Livro
WHERE Preco_Livro BETWEEN 40.00 AND 60.00
Fbio dos Reis
Bson Treinamentos 2013
LIKE e NOT LIKE
Determina se uma cadeia de caracteres
especfica corresponde a um padro
especificado. Um padro pode incluir
caracteres normais e curingas.
NOT LIKE inverte a comparao,
verificando se a cadeia de caracteres
NO corresponde ao padro
especificado.
Fbio dos Reis
Bson Treinamentos 2013
LIKE Padres especficos
(metacaracteres)
'%' -- Qualquer cadeia de 0 ou mais caracteres
'_' -- Sublinhado: qualquer caracter nico
'[ ] ' -- Qualquer caracter nico no intervalo ou
conjunto especificado ([a-h]; [aeiou])
'[^] ' -- Qualquer caracter nico que no esteja no
intervalo ou conjunto especificado ([a-h]; [aeiou])
Fbio dos Reis
Bson Treinamentos 2013
Usando o LIKE
SELECT * FROM tbl_Livro
WHERE Nome_Livro LIKE 'F%'
SELECT * FROM tbl_Livro
WHERE Nome_Livro NOT LIKE 'S%'
SELECT * FROM tbl_Livro
WHERE Nome_Livro LIKE '[FS]%'
SELECT * FROM tbl_Livro
WHERE Nome_Livro LIKE '[^FS]%'
Fbio dos Reis
Bson Treinamentos 2013
Usando padres
Criar um padro:
CREATE DEFAULT DF_Sobrenome_Autor AS
'Silva'
Fbio dos Reis
Bson Treinamentos 2013
Aplicando Padres
SP_BINDEFAULT DF_Sobrenome_Autor,
tbl_autores.sobreNome_Autor', FUTUREONLY
--FUTUREONLY: A PARTIR DE AGORA
Inserindo um registro com default:
INSERT INTO tbl_autores (ID_Autor,
Nome_Autor) VALUES (8, 'Jorginho')
# No foi especificado o sobrenome do autor;
ser assumido o padro criado.
Fbio dos Reis
Bson Treinamentos 2013
Desaplicando Padres
EXEC SP_UNBINDEFAULT 'tbl_autores.
sobreNome_Autor
tbl_autores = Tabela
sobreNome_Autor = coluna
Fbio dos Reis
Bson Treinamentos 2013
Backup do Banco de Dados
BACKUP DATABASE banco_de_dados
TO DISK = 'X:\CAMINHO\banco_de_dados.bak'
WITH FORMAT;
GO
Exemplo:
BACKUP DATABASE db_Biblioteca
TO DISK = 'C:\SQL\db_Biblioteca.bak';
GO
Obs.: A opo FORMAT formata a mdia usada no backup do
banco de dados; opcional.
Fbio dos Reis
Bson Treinamentos 2013
Criando uma Regra
CREATE RULE RL_PRECO AS @VALOR>=800
RL_PRECO = Nome escolhido para a regra
@VALOR = Varivel declarada
Fbio dos Reis
Bson Treinamentos 2013
Aplicando a Regra
EXECUTE SP_BINDRULE RL_PRECO, 'tbl_preco.
PRECO'
A partir de agora, os preos cadastrados
devem ser sempre maiores que 800.
Fbio dos Reis
Bson Treinamentos 2013
Aplicando a Regra
INSERT INTO tbl_preco (NOTA_FISCAL,PRECO)
VALUES (3,900) # esse ok
INSERT INTO tbl_preco (NOTA_FISCAL,PRECO)
VALUES (3,700) # esse falhar
Fbio dos Reis
Bson Treinamentos 2013
VIEWS
Uma Exibio (Viso) uma tabela virtual baseada
no conjunto de resultados de uma consulta SQL.
Contm linhas e colunas como uma tabela real, e
pode receber comandos como declaraes JOIN,
WHERE e funes como uma tabela normal.
Mostra sempre resultados de dados atualizados,
pois o motor do banco de dados recria os dados
toda vez que um usurio consulta a viso.
Fbio dos Reis
Bson Treinamentos 2013
VIEWS - Criao
CREATE VIEW [Nome_Exibio]
AS SELECT colunas
FROM tabela
WHERE condies
CREATE VIEW vw_LivrosAutores
AS SELECT tbl_Livro.Nome_Livro AS Livro, tbl_autores.
Nome_Autor AS Autor
FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
Fbio dos Reis
Bson Treinamentos 2013
Usando a View Criada
Select Livro, Autor
FROM vw_LivrosAutores
--WHERE Livro LIKE 'S%'
Fbio dos Reis
Bson Treinamentos 2013
Views - Alterao
ALTER VIEW vw_LivrosAutores AS
SELECT tbl_Livro.Nome_Livro AS Livro, tbl_autores.Nome_Autor
AS Autor, Preco_Livro AS Valor
FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
Uso:
Select * FROM vw_LivrosAutores
Fbio dos Reis
Bson Treinamentos 2013
VIEWS - Excluso
DROP VIEW nome_exibio
DROP VIEW vw_LivrosAutores
Fbio dos Reis
Bson Treinamentos 2013
JOINS
A palavra-chave JOIN usada para obter
dados provenientes de duas ou mais tabelas,
baseado em um relacionamento entre colunas
nestas tabelas.
Fbio dos Reis
Bson Treinamentos 2013
JOINS - Categorias
INNER JOIN: Retorna linhas quando houver pelo
menos uma correspondncia em ambas as
tabelas.
OUTER JOIN: Retorna linhas mesmo quando no
houver pelo menos uma correspondncia em uma
das tabelas (ou ambas). O OUTER JOIN divide-se
em LEFT JOIN, RIGHT JOIN e FULL JOIN.
Fbio dos Reis
Bson Treinamentos 2013
INNER JOIN
SELECT colunas
FROM tabela1
INNER JOIN tabela2
ON tabela1.coluna=tabela2.coluna
Ex.:
SELECT * FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
Fbio dos Reis
Bson Treinamentos 2013
INNER JOIN Mais exemplos
SELECT tbl_Livro.Nome_Livro, tbl_Livro.ISBN, tbl_autores.
Nome_Autor
FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
-- Usando Aliases e clusulas WHERE e LIKE:
SELECT L.Nome_Livro AS Livros, E.Nome_editora AS Editoras
FROM tbl_Livro AS L
INNER JOIN tbl_editoras AS E
ON L.ID_editora = E.ID_editora
WHERE E.Nome_Editora LIKE 'M%'
Fbio dos Reis
Bson Treinamentos 2013
INNER JOIN - Trs tabelas
SELECT L.Nome_Livro AS Livro, A.Nome_autor
AS Autor, E.Nome_Editora As Editora
FROM tbl_Livro AS L
INNER JOIN tbl_autores AS A
ON L.ID_autor = A.ID_autor
INNER JOIN tbl_editoras AS E
ON L.ID_editora = E.ID_editora
-- WHERE A.Nome_autor LIKE '[RW]%'
Fbio dos Reis
Bson Treinamentos 2013
INNER JOIN
Fbio dos Reis
Bson Treinamentos 2013
OUTER JOINS
LEFT JOIN: Retorna todas as linhas da tabela
esquerda, mesmo se no houver nenhuma
correspondncia na tabela direita.
RIGHT JOIN: Retorna todas as linhas da tabela
direita, mesmo se no houver nenhuma
correspondncia na tabela esquerda.
FULL JOIN: Retorna linhas quando houver uma
correspondncia em qualquer uma das tabelas.
uma combinao de LEFT e RIGHT JOINS.
Fbio dos Reis
Bson Treinamentos 2013
LEFT JOIN
SELECT coluna
FROM tabela_esq
LEFT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
Ex.:
SELECT * FROM tbl_autores
LEFT JOIN tbl_Livro
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
Fbio dos Reis
Bson Treinamentos 2013
LEFT JOIN
Fbio dos Reis
Bson Treinamentos 2013
LEFT JOIN excluindo correspondncias
SELECT coluna
FROM tabela_esq
LEFT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
WHERE tabela_dir.coluna IS NULL
SELECT * FROM tbl_autores
LEFT JOIN tbl_Livro
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
WHERE tbl_Livro.ID_Autor IS NULL
Fbio dos Reis
Bson Treinamentos 2013
LEFT JOIN excluindo correspondncias
Fbio dos Reis
Bson Treinamentos 2013
RIGHT JOIN
SELECT colunas
FROM tabela_esq
RIGHT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
Ex.:
SELECT * FROM tbl_Livro AS Li
RIGHT JOIN tbl_editoras AS Ed
ON Li.ID_editora = Ed.ID_editora
Fbio dos Reis
Bson Treinamentos 2013
RIGHT JOIN
Fbio dos Reis
Bson Treinamentos 2013
RIGHT JOIN excluindo correspondncias
SELECT coluna
FROM tabela_esq
RIGHT (OUTER) JOIN tabela_dir
ON tabela_esq.coluna=tabela_dir.coluna
WHERE tabela_esq.coluna IS NULL
SELECT * FROM tbl_Livro
RIGHT JOIN tbl_editoras
ON tbl_Livro.ID_editora = tbl_editoras.ID_editora
WHERE tbl_Livro.ID_editora IS NULL
Fbio dos Reis
Bson Treinamentos 2013
RIGHT JOIN excluindo correspondncias
Fbio dos Reis
Bson Treinamentos 2013
FULL JOIN
SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna
Fbio dos Reis
Bson Treinamentos 2013
FULL JOIN
Fbio dos Reis
Bson Treinamentos 2013
FULL JOIN excluindo correspondncias
SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna
WHERE tabela1.coluna IS NULL
OR tabela2.coluna IS NULL
Fbio dos Reis
Bson Treinamentos 2013
FULL JOIN excluindo correspondncias
Fbio dos Reis
Bson Treinamentos 2013
CROSS JOIN
Retorna um produto cartesiano entre as
tabelas, mostrando todas as combinaes
possveis entre os registros.
SELECT colunas FROM tabela1
CROSS JOIN tabela2
Fbio dos Reis
Bson Treinamentos 2013
CROSS JOIN
A
B
C
1
2
3
tbl_Livro tbl_autores
Fbio dos Reis
Bson Treinamentos 2013
IN: Filtro de Mltiplas Condies
Determina se um determinado valor corresponde a
qualquer valor em uma subconsulta ou lista.
Retorna sempre TRUE ou FALSE.
Pode substituir o OR em queries com mais de uma
condio.
Sintaxe:
Expresso_teste (NOT) IN (subconsulta | lista)
SELECT * FROM tbl_Livro
WHERE ID_Autor IN (1, 2)
Fbio dos Reis
Bson Treinamentos 2013
Concatenao de Strings
possvel concatenar strings usando-se o operador
de concatenao (+).
Sintaxe:
<string | nome_coluna> + <string | nome_coluna>
Ex.:
SELECT Fbio + dos Reis AS Meu Nome
SELECT Nome_autor + + Sobrenome_autor AS Nome Completo
FROM tbl_autores
SELECT 'Eu gosto do livro ' + Nome_Livro FROM tbl_Livro
WHERE ID_autor = 2
Fbio dos Reis
Bson Treinamentos 2013
Concatenao com NULL
Se uma string for concatenada com NULL, o
resultado retornado ser apenas NULL:
SELECT Vou ler + + Nome_livro
FROM tbl_Livro
WHERE ID_autor = 200 --ID inexistente
Fbio dos Reis
Bson Treinamentos 2013
Concatenao com NULL
Para evitar esse problema, h funes
disponveis que substituem NULL por outro
valor. So elas:
ISNULL
COALESCE
Fbio dos Reis
Bson Treinamentos 2013
ISNULL
ISNULL (valor, substituio)
SELECT Vou ler + + ISNULL(Nome_autor,
algum autor)
FROM tbl_autores
WHERE ID_autor = 11 --Nome inexistente para esse ID*
*Obs.: Insira uma valor de nome nulo na tabela antes de testar o cdigo:
INSERT INTO tbl_autores (ID_autor, Sobrenome_autor) VALUES (11, 'Dawkins')
Fbio dos Reis
Bson Treinamentos 2013
COALESCE
COALESCE (valor1, valor2, ..., valorN)
Essa funo retornar o primeiro valor no-nulo
encontrado em seus argumentos.
SELECT Vou ler + COALESCE( + Nome_autor,
algum autor)
FROM tbl_autores
WHERE ID_autor = 11
Fbio dos Reis
Bson Treinamentos 2013
Outro exemplo de COALESCE
SELECT Vou ler + COALESCE( + Nome_autor,
+ Sobrenome_autor, algum autor)
FROM tbl_autores
WHERE ID_autor = 11 --Testar com 11 e depois com
12 e 13*
*Obs.: Insira uma valor de sobrenome nulo na tabela antes de testar o
cdigo:
INSERT INTO tbl_autores (ID_autor, Nome_autor) VALUES (12, George')
INSERT INTO tbl_autores (ID_autor) VALUES (13)
Fbio dos Reis
Bson Treinamentos 2013
Concatenao com outros tipos de
dados
Para concatenar strings com valores de outros
tipos de dados, o outro tipo deve ser
convertido para string.
Para isso podemos usar as funes:
CAST
CONVERT
Fbio dos Reis
Bson Treinamentos 2013
CAST
CAST(valor AS novo_tipo_dados)
Ex.:
SELECT 'O preo do livro ' + Nome_Livro + ' de
R$ ' + CAST(Preco_Livro AS VARCHAR(6))
FROM tbl_livro
WHERE ID_autor = 2
Fbio dos Reis
Bson Treinamentos 2013
CONVERT
CONVERT(novo_tipo_dados, valor)
Ex.:
SELECT 'O preo do livro ' + Nome_Livro + ' de
R$ ' + CONVERT(VARCHAR(6),Preco_Livro)
FROM tbl_livro
Fbio dos Reis
Bson Treinamentos 2013
Operaes aritmticas
possvel realizar operaes matemticas
simples nos valores de uma coluna e retornar
resultados em uma coluna calculada.
Para isso usamos os operadores matemticos
comuns: + - / * %
Fbio dos Reis
Bson Treinamentos 2013
Operaes aritmticas Exemplo:
SELECT Nome_Livro, Preco_Livro * 5 AS 'Preo
de 5 Unidades'
FROM tbl_livro
SELECT Nome_Livro, Preco_Livro / 2 AS 'Preo
com 50% de desconto'
FROM tbl_livro
Fbio dos Reis
Bson Treinamentos 2013
Procedimentos Armazenados
Stored Procedures
Um procedimento armazenado uma sub-
rotina disponvel para aplicaes que acessam
sistemas de bancos de dados relacionais.
Podem ser usadas para validao de dados,
controle de acesso, execuo de declaraes
SQL complexas e outras situaes.
Fbio dos Reis
Bson Treinamentos 2013
Criar SP
Digite o cdigo a seguir para criar uma stored
procedure de nome sp_teste, que ir retornar os
nomes dos livros e seus respectivos autores das
tabelas tbl_Livro e tbl_Autores de acordo com o
autor fornecido.
Fbio dos Reis
Bson Treinamentos 2013
USE db_Livros;
GO
CREATE PROCEDURE sp_teste
@NomeAutor varchar(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT tbl_Livro.Nome_Livro, tbl_autores.
Nome_Autor FROM tbl_Livro
INNER JOIN tbl_autores
ON tbl_Livro.ID_Autor = tbl_autores.ID_Autor
WHERE Nome_Autor = @NomeAutor;
END
GO
Fbio dos Reis
Bson Treinamentos 2013
Executar o SP
Para executar um Procedimento Armazenado,
use a palavra-chave EXECUTE ou EXEC.
EXEC | EXECUTE nome_procedimento parmetros
Ex.:
EXEC sp_teste @NomeAutor = Andrew
Fbio dos Reis
Bson Treinamentos 2013
Excluir um SP
Use o comando DROP:
DROP PROCEDURE Nome_do_SP
Fbio dos Reis
Bson Treinamentos 2013
Procedure para insero de dados
USE db_Livros;
GO
CREATE PROCEDURE sp_insere_livros
@IDLivro smallint,
@NomeLivro varchar(50),
@ISBN varchar(30),
@DATALANC datetime,
@IDAUTOR smallint
AS
SET NOCOUNT ON;
INSERT INTO tbl_Livro (ID_Livro, Nome_Livro, ISBN, Data_Lanc,
ID_Autor)
VALUES (@IDLivro,@NomelIvro,@ISBN,@DATALANC,@IDAUTOR);
GO
Fbio dos Reis
Bson Treinamentos 2013
Executando a SP de insero de dados
EXEC sp_insere_livros 8, DNS & BIND,
152354689, 20070422, 3
Fbio dos Reis
Bson Treinamentos 2013
Tipos de dados Data e Hora
Tipo de dados Formato Intervalo Preciso
Tamanho de
armazenamento
(bytes)
time hh:mm:ss[.
nnnnnnn]
00:00:00.0000000 a
23:59:59.9999999
100 ns 3 a 5
date AAAA-MM-DD 0001-01-01 a 9999-
12-31
1 dia 3
smalldatetime AAAA-MM-DD hh:
mm:ss
1900-01-01 a 2079-
06-06
1 minuto 4
datetime AAAA-MM-DD hh:
mm:ss[.nnn]
1753-01-01 a 9999-
12-31
0,00333
segundo
8
Obs.: Se no forem necessrios componentes de hora na data, armazene-as como date
para evitar problemas quando fizer comparaes entre datas.
Fbio dos Reis
Bson Treinamentos 2013
Funes de Data e Hora
GETDATE () - Retorna um valor que contm a data e a hora
do computador no qual a instncia de SQL Server est
sendo executada.
SELECT getdate () AS 'Data e hora atuais'
GETUTCDATE () - Retorna um valor que contm a data e a
hora do computador no qual a instncia de SQL Server est
sendo executada. A data e hora retornada como hora
UTC (Tempo Universal Coordenado).
SELECT getutcdate () AS 'Hora UTC'
As funes acima retornam dados do tipo datetime
Fbio dos Reis
Bson Treinamentos 2013
Funes de Data e Hora
DAY (data) - Retorna um inteiro que representa a
parte do dia da data especificada.
MONTH (data) - Retorna um inteiro que
representa a parte do ms de
uma data especificada.
YEAR (data) - Retorna um inteiro que representa a
parte do ano da data especificada.
SELECT YEAR(getdate())
Fbio dos Reis
Bson Treinamentos 2013
DATEDIFF
DATEDIFF Funo que retorna o tempo
entre duas datas.
Sintaxe:
DATEDIFF(parte,data_inicial,data_final)
Fbio dos Reis
Bson Treinamentos 2013
DATEDIFF
Parte pode ser:
Parte Abreviao
Ano yy, yyyy
Ms mm, m
Dia dd, d
Semana wk, ww
Hora hh
Minuto mi, n
Segundo ss, s
Milisegundo ms
Fbio dos Reis
Bson Treinamentos 2013
DATEDIFF - Exemplos
SELECT DATEDIFF(hh, getutcdate(), getdate())
AS 'UTC So Paulo
SELECT DATEDIFF(dd, getdate(), '1975-12-21')
AS 'Dias que j vivi'
Fbio dos Reis
Bson Treinamentos 2013
Funo DATEPART()
Usada para retornar um parte de uma data ou
hora, como o ano, dia, ms, minuto, hora, etc.
Sintaxe:
DATEPART(parte, data)
Parte: mesmos parmetros apresentados em
DATEDIFF.
Data: Data ou coluna que contm a data.
Fbio dos Reis
Bson Treinamentos 2013
DATEPART - Exemplo
SELECT DATEPART(yyyy,Data_Pub) AS Ano
Lanamento,
DATEPART(mm, Data_Pub) AS Ms,
DATEPART(dd, Data_Pub) AS Dia,
FROM tbl_Livros
WHERE ID_Livro = 1
Fbio dos Reis
Bson Treinamentos 2013
Funo DATEADD()
Adiciona ou subtrai um intervalo de tempo
especfico de uma data.
Sintaxe:
DATEADD(parte, nmero, data)
nmero o intervalo a ser adicionado (ou
subtrado, se for negativo).
Fbio dos Reis
Bson Treinamentos 2013
DATEADD Exemplo:
Um livro lanado nos EUA em uma data, e ser
publicado aqui 50 dias depois. Determine essa data da
publicao.
SELECT DATEADD(dd,50,Data_Pub)
AS Data de Publicao em Portugus
FROM tbl_Livros
Data daqui a 20 dias:
SELECT DATEADD(dd,20,GETDATE())
Data 20 dias antes de 01/04/2013
SELECT DATEADD(dd,-20,'20130401')
Fbio dos Reis
Bson Treinamentos 2013
Funo CONVERT()
Funo que converte uma expresso de um tipo de
data para outro.
Tambm pode ser usada para mostrar a data e a hora
em formatos diferentes.
Sintaxe:
CONVERT(tipo_dados, expresso, estilo)
tipo_dados Especifica o tipo de dados alvo
expresso Valor a ser convertido
estilo Formato de sada
Fbio dos Reis
Bson Treinamentos 2013
CONVERT Tabela de estilos
Valor (aa) Valor (aaaa) Entrada/Sada Padro
1 101 mm/dd/yy EUA
2 102 yy.mm.dd ANSI
3 103 dd/mm/yy Francs
4 104 dd.mm.yy Alemo
5 105 dd-mm-yy Italiano
8 108 hh:mm:ss
12 112 yymmdd ISO
6 106 dd ms yy
Fbio dos Reis
CONVERT - Exemplo
Data em formato nacional:
SELECT CONVERT(VARCHAR(10),GETDATE(),103))
Apenas a hora:
SELECT CONVERT(VARCHAR(10),GETDATE(),108)
Fbio dos Reis
Bson Treinamentos 2013

Você também pode gostar