SlideShare ist ein Scribd-Unternehmen logo
1 von 146
Downloaden Sie, um offline zu lesen
SQL
SQL Server
Fábio dos Reis
Bóson Treinamentos 2013
Structured Query Language
● Linguagem de Consulta Estruturada padrão
para acesso a Bancos de Dados
● Usada em inúmeros 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.
Fábio dos Reis
Bóson Treinamentos 2013
Funções 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
módulos SQL, bibliotecas, etc.
● Permite criar e excluir bancos de dados e tabelas.
● Permite a criação de Visões (Exibições), Stored
Procedures e Funções em um Banco de Dados.
● Permite configurar permissões de acesso em
tabelas, procedimentos e visões.
Fábio dos Reis
Bóson Treinamentos 2013
Grupos de Comandos
● Os comandos SQL podem ser divididos em
quatro grupos principais:
● DDL
● DML
● DCL
● DQL
Fábio dos Reis
Bóson Treinamentos 2013
DDL – Data Definition Language
Comando Descrição
CREATE
Cria uma nova tabela, visão ou outro objeto
no BD.
ALTER
Modifica um objeto existente no BD, como
uma tabela.
DROP
Exclui uma tabela inteira, uma exibição de
uma tabela ou outro objeto no banco de
dados.
Fábio dos Reis
Bóson Treinamentos 2013
DML – Data Manipulation Language
Comando Descrição
INSERT Cria um registro (linha)
UPDATE Modifica registros
DELETE Exclui registros
Fábio dos Reis
Bóson Treinamentos 2013
DCL – Data Control Language
Comando Descrição
GRANT Dá privilégios a um usuário
REVOKE Retira privilégios fornecidos a um usuário
Fábio dos Reis
Bóson Treinamentos 2013
DQL – Data Query Language
Comando Descrição
SELECT
Obtém registros especificados de uma ou
mais tabelas. (consulta)
Fábio dos Reis
Bóson 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.
Fábio dos Reis
Bóson Treinamentos 2013
Composição de um Banco de Dados
● Tabelas
● Campos (Colunas)
● Registros (Linhas)
Fábio dos Reis
Bóson Treinamentos 2013
Tabelas
● Objetos onde são armazenados os dados em
um banco de dados relacional.
● Uma tabela é uma coleção de entradas de
dados relacionados e consiste em linhas e
colunas.
Fábio dos Reis
Bóson Treinamentos 2013
Campo
● São entidades que representam os atributos
dos dados, como Nome, Data de Nascimento,
Salário, Preço, etc.
● Um campo é uma coluna em uma tabela que
mantém informações específicas sobre cada
registro.
Fábio dos Reis
Bóson 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.
Fábio dos Reis
Bóson Treinamentos 2013
Tipos de Dados
Tipo Descrição Armazenamento
char(n) String de caracteres de tamanho fixo, máximo de 8000
caracteres.
n
varchar(n) String de caracteres de tamanho variável, máximo de 8000
caracteres.
nchar(n) Dados Unicode de tamanho fixo, máximo de 4000
caracteres.
nvarchar(n) Dados Unicode de tamanho variável, máximo de 4000
caracteres.
bit 0, 1 ou nulo
tinyint Números inteiros de 0 a 255 1 byte
smallint Números inteiros de -32768 a 32767 2 bytes
int Números inteiros entre -2,147,483,648 e 2,147,483,647 4 bytes
Fábio dos Reis
Bóson Treinamentos 2013
Tipos de Dados
Tipo Descrição Armazenamento
bigint Números entre -9,223,372,036,854,775,808 e
9,223,372,036,854,775,807
8 bytes
real Números de ponto flutuante entre -3.4 x 1038
e 3.4x1038 4 bytes
datetime De 01/01/1753 a 31/12/9999, com uma precisão de 3.33
milisegundos.
8 bytes
smalldatetime De 01/01/1900 a 06/06/2079, com uma precisão de 1 minuto. 4 bytes
date Data apenas. De 01/01/0001 a 31/12/9999 3 bytes
time Hora apenas. Precisão de até 100 nanossegundos. 3-5 bytes
text Cadeia de caracteres de tamanho variável. Até 2GB de dados.
money Dados monetários de -922,337,203,685,477.5808 até
922,337,203,685,477.5807
8 bytes
Fábio dos Reis
Bóson Treinamentos 2013
Criação de um Banco de Dados
Fábio dos Reis
Bóson Treinamentos 2013
Criar Banco de Dados
CREATE DATABASE db_Biblioteca
ON PRIMARY (
NAME= db_Biblioteca,
FILENAME='C:SQLdb_Biblioteca.MDF',
SIZE=6MB,
MAXSIZE=15MB,
FILEGROWTH=10%
)
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
sp_helpdb
Informa o tamanho, taxa de crescimento, e local
do banco de dados.
sp_helpdb BANCO_DADOS
Fábio dos Reis
Bóson Treinamentos 2013
SQL Constraints (Restrições)
● Restrições são regras aplicadas nas colunas de
uma tabela.
● São usadas para limitar os tipos de dados que
são inseridos.
● Podem ser especificadas no momento de
criação da tabela (CREATE) ou após a tabela
ter sido criada (ALTER)
Fábio dos Reis
Bóson Treinamentos 2013
SQL Constraints (Restrições)
Principais:
● NOT NULL
● UNIQUE
● PRIMARY KEY
● FOREIGN KEY
● CHECK
● DEFAULT
Fábio dos Reis
Bóson Treinamentos 2013
NOT NULL
● A constraint NOT NULL impõe a uma coluna a
NÃO aceitar valores NULL.
● A constraint NOT NULL obriga um campo a
sempre possuir um valor.
● Deste modo, não é possível inserir um registro
(ou atualizar) sem entrar com um valor neste
campo.
Fábio dos Reis
Bóson Treinamentos 2013
UNIQUE
● A restrição 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 restrição UNIQUE definida.
● Você pode ter várias constraints UNIQUE em uma
tabela, mas apenas uma Chave Primária por
tabela.
Fábio dos Reis
Bóson Treinamentos 2013
PRIMARY KEY
● A PRIMARY KEY identifica de forma única cada
registro em uma tabela de banco de dados.
● Chaves Primárias devem conter valores
únicos.
● Uma coluna de chave primária não pode
conter valores NULL
● Cada tabela deve ter uma chave primária e
apenas uma chave primária.
Fábio dos Reis
Bóson Treinamentos 2013
FOREIGN KEY
● Uma FOREIGN KEY (Chave Estrangeira) em uma
tabela é um campo que aponta para uma chave
primária em outra tabela.
CONSTRAINT fk_ID_Autor FOREIGN KEY (ID_Autor)
REFERENCES tbl_autores(ID_Autor)
Neste exemplo a chave primária está na tabela tbl_autores e
uma chave estrangeira de nome ID_Autor foi criada na tabela
atual, usando o nome fk_ID_Autor
Fábio dos Reis
Bóson 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.
Fábio dos Reis
Bóson Treinamentos 2013
DEFAULT
● A restrição DEFAULT é usada para inserir um
valor padrão em uma coluna.
● O valor padrão será adicionado a todos os
novos registros caso nenhum outro valor seja
especificado.
Fábio dos Reis
Bóson 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)
Fábio dos Reis
Bóson 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
)
Fábio dos Reis
Bóson Treinamentos 2013
sp_help TABELA
● Informa os índices, chaves e campos, atributos
tipos de atributos de uma tabela (stored
procedures, comandos pré-programados)
Fábio dos Reis
Bóson Treinamentos 2013
AUTO INCREMENT (IDENTITY)
● O auto incremento permite que um número
único seja gerado quando um novo registro é
inserido em uma tabela.
● Em SQL SERVER trata-se da palavra chave
IDENTITY (identidade), cujo valor inicial
padrão é 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).
Fábio dos Reis
Bóson Treinamentos 2013
AUTO INCREMENT (IDENTITY)
● Ao inserir valores na tabela, não é necessário
especificar o valor para a coluna de auto-
incremento.
● Não é possível alterar uma coluna existente
para configurar IDENTITY.
● Se necessário, crie uma nova tabela com
IDENTITY e exclua a atual.
● Só é permitido usar uma coluna de identidade
por tabela.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
(Chave Primária com múltiplas 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)
)
Fábio dos Reis
Bóson Treinamentos 2013
Alterar Tabelas
● É possível alterar a estrutura de uma tabela
após ter sido criada, acrescentando ou
excluindo atributos (campos)
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson 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)
Fábio dos Reis
Bóson Treinamentos 2013
ALTER TABLE – ALTER COLUMN
ALTER TABLE tbl_Livro
ALTER COLUMN ID_Autor SMALLINT
Fábio dos Reis
Bóson 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 primária.
A coluna ID_Cliente receberá a Constraint
(restrição) “PRIMARY KEY”, e passará a ser a
chave primária da tabela.
Fábio dos Reis
Bóson Treinamentos 2013
DROP TABLE – Excluir tabela
DROP TABLE nome_tabela
DROP TABLE Clientes
Fábio dos Reis
Bóson Treinamentos 2013
Diagrama de banco de Dados
● Após adicionar as tabelas, verifique se os
relacionamentos foram criados observando o
diagrama de banco de dados.
Fábio dos Reis
Bóson Treinamentos 2013
Fábio dos Reis
Bóson Treinamentos 2013
Inserir Dados
Inserir dados em uma tabela:
INSERT INTO tabela (coluna1, coluna2,...)
VALUES (valor1, valor2,...)
Fábio dos Reis
Bóson 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')
Fábio dos Reis
Bóson Treinamentos 2013
Inserir Dados – Tabela de Editoras
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (‘Prentice Hall')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES ('O´Reilly')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (‘Microsoft Press')
INSERT INTO tbl_Editoras (Nome_Editora) VALUES (Wiley')
Fábio dos Reis
Bóson 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)
Fábio dos Reis
Bóson 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)
Fábio dos Reis
Bóson Treinamentos 2013
TRUNCATE TABLE
● Remove todas as linhas de uma tabela sem
registrar as exclusões de linhas individuais.
● TRUNCATE TABLE é como a instrução DELETE
sem usar a cláusula WHERE.
● Entretanto, TRUNCATE TABLE é mais rápida e
utiliza menos recursos de sistema e log de
transações.
Fábio dos Reis
Bóson 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. Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
Seleção com Ordenação
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)
Fábio dos Reis
Bóson Treinamentos 2013
Collation ("Colação/Agrupamento")
Trata-se da codificação dos caracteres em uma
ordem padrão.
Muitos sistemas de colação são baseados em
ordem numérica ou alfabética.
A colação usada pelo banco de dados é
configurada durante a instalação do sistema.
Visite collation-charts.org para consultar cartas
de colação em vários alfabetos e idiomas.
Fábio dos Reis
Bóson Treinamentos 2013
Colação / Agrupamento
A colação também determina se acentos, caso
e outras propriedades alfabéticas são levadas
em conta na ordem de classificação.
Para verificar as opções de colação instaladas
use a seguinte função:
SELECT * FROM fn_helpcollations()
Fábio dos Reis
Bóson Treinamentos 2013
Colação
Para ver o esquema de colação usado
atualmente pelo servidor:
SELECT SERVERPROPERTY('Collation') AS
Colação_Usada
O resultado provavelmente será:
Latin1_General_CI_AS
CI = Case Insensitive
AS = Accent Sensitive
Fábio dos Reis
Bóson Treinamentos 2013
Alterar Colação
A propriedade de colação 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 Colação_Banco_test
Fábio dos Reis
Bóson Treinamentos 2013
Alterar Colação em nível de coluna
SELECT *
FROM tbl_Livro
ORDER BY Nome_Livro
COLLATE Icelandic_CI_AI
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
Cláusula 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'
Fábio dos Reis
Bóson Treinamentos 2013
Excluir dados
Sintaxe:
DELETE FROM tabela WHERE coluna = valor
Ex.:
DELETE FROM tbl_autores WHERE ID_Autor = 2
Obs.: Sempre use a cláusula WHERE para evitar
a perda de dados da tabela!
Fábio dos Reis
Bóson Treinamentos 2013
Operadores AND e OR
● Usados para filtrar registros baseados em mais
de uma condição.
● O operador AND mostra um registro se ambas
as condições forem verdadeiras.
● O operador OR mostra um registro se pelo
menos uma das condições for verdadeira.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
SELECT TOP
● Usado para especificar o número de registros a retornar.
● Útil para tabelas com muitos registros.
SELECT TOP número|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
Fábio dos Reis
Bóson 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 três
primeiros times de um campeonato por
pontuação, mas deixa o quarto time de fora -
mesmo que ele tenha o mesmo número de
pontos que o terceiro.
Fábio dos Reis
Bóson 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 três times, mas com o
WITH TIES, um quarto time é retornado, pois tem a
mesma pontuação do terceiro.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
Operador UNION
● Permite combinar duas ou mais declarações SELECT.
● Cada declaração SELECT deve ter o mesmo número 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
Fábio dos Reis
Bóson Treinamentos 2013
SELECT INTO
● Seleciona dados de uma ou mais tabelas e os insere em
uma tabela diferente.
● Pode ser usada para criar cópias 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
Fábio dos Reis
Bóson Treinamentos 2013
Comentários
● Para inserir um comentário em seu código
SQL, use -- antes do comentário:
Ex.:
-- O código a seguir faz x, y, z, etc...
Fábio dos Reis
Bóson Treinamentos 2013
CREATE INDEX
● Usado para criar índices em tabelas.
● Os índices permitem que as aplicações de
bancos de dados encontrem dados mais
rapidamente, sem ter de ler a tabela toda.
● Usuários não veem os índices.
● Apenas crie índices em tabelas que recebem
muitas consultas, pois tabelas indexadas
levam mais tempo para serem atualizadas.
Fábio dos Reis
Bóson Treinamentos 2013
CREATE INDEX
CREATE INDEX nome_índice
ON nome_tabela (nome_coluna)
CREATE INDEX ind_nome_livro
ON tbl_Livro(Nome_Livro)
Fábio dos Reis
Bóson Treinamentos 2013
Funções Agregadas
MIN = Valor Mínimo
MAX = Valor Máximo
AVG = Média Aritmética
SUM = Total (Soma)
COUNT = Contar quantidade de itens
Fábio dos Reis
Bóson Treinamentos 2013
Funções 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
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
Atualizar Registros
UPDATE tabela
SET coluna = novo_valor_armazenado
WHERE coluna = valor_filtro
Obs.:
Caso não seja usada a cláusula WHERE para filtrar os
registros, todos os dados da coluna serão alterados.
Fábio dos Reis
Bóson 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 terão
o valor alterado
Fábio dos Reis
Bóson Treinamentos 2013
BETWEEN - Seleção 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 Preço
FROM tbl_Livro
WHERE Preco_Livro BETWEEN 40.00 AND 60.00
Fábio dos Reis
Bóson Treinamentos 2013
LIKE e NOT LIKE
● Determina se uma cadeia de caracteres
específica corresponde a um padrão
especificado. Um padrão pode incluir
caracteres normais e curingas.
● NOT LIKE inverte a comparação,
verificando se a cadeia de caracteres
NÃO corresponde ao padrão
especificado.
Fábio dos Reis
Bóson Treinamentos 2013
LIKE – Padrões específicos
(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 não esteja no
intervalo ou conjunto especificado ([a-h]; [aeiou])
Fábio dos Reis
Bóson 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]%'
Fábio dos Reis
Bóson Treinamentos 2013
Usando padrões
● Criar um padrão:
● CREATE DEFAULT DF_Sobrenome_Autor AS
'Silva'
Fábio dos Reis
Bóson Treinamentos 2013
Aplicando Padrões
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')
● # Não foi especificado o sobrenome do autor;
será assumido o padrão criado. Fábio dos Reis
Bóson Treinamentos 2013
Desaplicando Padrões
EXEC SP_UNBINDEFAULT 'tbl_autores.
sobreNome_Autor‘
tbl_autores = Tabela
sobreNome_Autor = coluna
Fábio dos Reis
Bóson Treinamentos 2013
Backup do Banco de Dados
BACKUP DATABASE banco_de_dados
TO DISK = 'X:CAMINHObanco_de_dados.bak'
WITH FORMAT;
GO
Exemplo:
BACKUP DATABASE db_Biblioteca
TO DISK = 'C:SQLdb_Biblioteca.bak';
GO
Obs.: A opção FORMAT formata a mídia usada no backup do
banco de dados; opcional.
Fábio dos Reis
Bóson Treinamentos 2013
Criando uma Regra
CREATE RULE RL_PRECO AS @VALOR>=800
RL_PRECO = Nome escolhido para a regra
@VALOR = Variável declarada
Fábio dos Reis
Bóson Treinamentos 2013
Aplicando a Regra
EXECUTE SP_BINDRULE RL_PRECO, 'tbl_preco.
PRECO'
● A partir de agora, os preços cadastrados
devem ser sempre maiores que 800.
Fábio dos Reis
Bóson 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á
Fábio dos Reis
Bóson Treinamentos 2013
VIEWS
● Uma Exibição (Visão) é uma tabela virtual baseada
no conjunto de resultados de uma consulta SQL.
● Contém linhas e colunas como uma tabela real, e
pode receber comandos como declarações JOIN,
WHERE e funções como uma tabela normal.
● Mostra sempre resultados de dados atualizados,
pois o motor do banco de dados recria os dados
toda vez que um usuário consulta a visão.
Fábio dos Reis
Bóson Treinamentos 2013
VIEWS - Criação
CREATE VIEW [Nome_Exibição]
AS SELECT colunas
FROM tabela
WHERE condições
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
Fábio dos Reis
Bóson Treinamentos 2013
Usando a View Criada
Select Livro, Autor
FROM vw_LivrosAutores
--WHERE Livro LIKE 'S%'
Fábio dos Reis
Bóson Treinamentos 2013
Views - Alteração
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
Fábio dos Reis
Bóson Treinamentos 2013
VIEWS - Exclusão
DROP VIEW nome_exibição
DROP VIEW vw_LivrosAutores
Fábio dos Reis
Bóson 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.
Fábio dos Reis
Bóson Treinamentos 2013
JOINS - Categorias
● INNER JOIN: Retorna linhas quando houver pelo
menos uma correspondência em ambas as
tabelas.
● OUTER JOIN: Retorna linhas mesmo quando não
houver pelo menos uma correspondência em uma
das tabelas (ou ambas). O OUTER JOIN divide-se
em LEFT JOIN, RIGHT JOIN e FULL JOIN.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson 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 cláusulas 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%'
Fábio dos Reis
Bóson Treinamentos 2013
INNER JOIN - Três 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]%'
Fábio dos Reis
Bóson Treinamentos 2013
INNER JOIN
Fábio dos Reis
Bóson Treinamentos 2013
OUTER JOINS
● LEFT JOIN: Retorna todas as linhas da tabela à
esquerda, mesmo se não houver nenhuma
correspondência na tabela à direita.
● RIGHT JOIN: Retorna todas as linhas da tabela à
direita, mesmo se não houver nenhuma
correspondência na tabela à esquerda.
● FULL JOIN: Retorna linhas quando houver uma
correspondência em qualquer uma das tabelas. É
uma combinação de LEFT e RIGHT JOINS.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
LEFT JOIN
Fábio dos Reis
Bóson Treinamentos 2013
LEFT JOIN excluindo correspondências
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 Fábio dos Reis
Bóson Treinamentos 2013
LEFT JOIN excluindo correspondências
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
RIGHT JOIN
Fábio dos Reis
Bóson Treinamentos 2013
RIGHT JOIN excluindo correspondências
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
Fábio dos Reis
Bóson Treinamentos 2013
RIGHT JOIN excluindo correspondências
Fábio dos Reis
Bóson Treinamentos 2013
FULL JOIN
SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna
Fábio dos Reis
Bóson Treinamentos 2013
FULL JOIN
Fábio dos Reis
Bóson Treinamentos 2013
FULL JOIN excluindo correspondências
SELECT colunas
FROM tabela1
FULL (OUTER) JOIN tabela2
ON tabela1.coluna=tabela2.coluna
WHERE tabela1.coluna IS NULL
OR tabela2.coluna IS NULL
Fábio dos Reis
Bóson Treinamentos 2013
FULL JOIN excluindo correspondências
Fábio dos Reis
Bóson Treinamentos 2013
CROSS JOIN
● Retorna um produto cartesiano entre as
tabelas, mostrando todas as combinações
possíveis entre os registros.
SELECT colunas FROM tabela1
CROSS JOIN tabela2
Fábio dos Reis
Bóson Treinamentos 2013
CROSS JOIN
A
B
C
1
2
3
tbl_Livro tbl_autores
Fábio dos Reis
Bóson Treinamentos 2013
IN: Filtro de Múltiplas Condições
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
condição.
Sintaxe:
Expressão_teste (NOT) IN (subconsulta | lista)
SELECT * FROM tbl_Livro
WHERE ID_Autor IN (1, 2) Fábio dos Reis
Bóson Treinamentos 2013
Concatenação de Strings
● É possível concatenar strings usando-se o operador
de concatenação (+).
● Sintaxe:
<string | nome_coluna> + <string | nome_coluna>
Ex.:
SELECT ‘Fábio ‘ + ‘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 Fábio dos Reis
Bóson Treinamentos 2013
Concatenação 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
Fábio dos Reis
Bóson Treinamentos 2013
Concatenação com NULL
● Para evitar esse problema, há funções
disponíveis que substituem NULL por outro
valor. São elas:
● ISNULL
● COALESCE
Fábio dos Reis
Bóson Treinamentos 2013
ISNULL
● ISNULL (valor, substituição)
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 código:
INSERT INTO tbl_autores (ID_autor, Sobrenome_autor) VALUES (11, 'Dawkins')
Fábio dos Reis
Bóson Treinamentos 2013
COALESCE
● COALESCE (valor1, valor2, ..., valorN)
Essa função retornará o primeiro valor não-nulo
encontrado em seus argumentos.
SELECT ‘Vou ler ‘ + COALESCE(‘ ‘ + Nome_autor,
‘ algum autor’)
FROM tbl_autores
WHERE ID_autor = 11
Fábio dos Reis
Bóson 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
código:
INSERT INTO tbl_autores (ID_autor, Nome_autor) VALUES (12, ‘George')
INSERT INTO tbl_autores (ID_autor) VALUES (13)
Fábio dos Reis
Bóson Treinamentos 2013
Concatenação 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 funções:
● CAST
● CONVERT
Fábio dos Reis
Bóson Treinamentos 2013
CAST
● CAST(valor AS novo_tipo_dados)
● Ex.:
SELECT 'O preço do livro ' + Nome_Livro + ' é de
R$ ' + CAST(Preco_Livro AS VARCHAR(6))
FROM tbl_livro
WHERE ID_autor = 2
Fábio dos Reis
Bóson Treinamentos 2013
CONVERT
● CONVERT(novo_tipo_dados, valor)
Ex.:
SELECT 'O preço do livro ' + Nome_Livro + ' é de
R$ ' + CONVERT(VARCHAR(6),Preco_Livro)
FROM tbl_livro
Fábio dos Reis
Bóson Treinamentos 2013
Operações aritméticas
● É possível realizar operações matemáticas
simples nos valores de uma coluna e retornar
resultados em uma coluna calculada.
● Para isso usamos os operadores matemáticos
comuns: + - / * %
Fábio dos Reis
Bóson Treinamentos 2013
Operações aritméticas– Exemplo:
SELECT Nome_Livro, Preco_Livro * 5 AS 'Preço
de 5 Unidades'
FROM tbl_livro
SELECT Nome_Livro, Preco_Livro / 2 AS 'Preço
com 50% de desconto'
FROM tbl_livro
Fábio dos Reis
Bóson Treinamentos 2013
Procedimentos Armazenados
● Stored Procedures
● Um procedimento armazenado é uma sub-
rotina disponível para aplicações que acessam
sistemas de bancos de dados relacionais.
● Podem ser usadas para validação de dados,
controle de acesso, execução de declarações
SQL complexas e outras situações.
Fábio dos Reis
Bóson Treinamentos 2013
Criar SP
Digite o código 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.
Fábio dos Reis
Bóson 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
Fábio dos Reis
Bóson Treinamentos 2013
Executar o SP
Para executar um Procedimento Armazenado,
use a palavra-chave EXECUTE ou EXEC.
EXEC | EXECUTE nome_procedimento parâmetros
Ex.:
EXEC sp_teste @NomeAutor = ‘Andrew’
Fábio dos Reis
Bóson Treinamentos 2013
Excluir um SP
Use o comando DROP:
DROP PROCEDURE Nome_do_SP
Fábio dos Reis
Bóson Treinamentos 2013
Procedure para inserção 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
Fábio dos Reis
Bóson Treinamentos 2013
Executando a SP de inserção de dados
EXEC sp_insere_livros 8, ‘DNS & BIND’,
‘152354689’, ‘20070422’, 3
Fábio dos Reis
Bóson Treinamentos 2013
Tipos de dados – Data e Hora
Tipo de dados Formato Intervalo Precisão
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 não forem necessários componentes de hora na data, armazene-as como “date”
para evitar problemas quando fizer comparações entre datas. Fábio dos Reis
Bóson Treinamentos 2013
Funções de Data e Hora
● GETDATE () - Retorna um valor que contém a data e a hora
do computador no qual a instância de SQL Server está
sendo executada.
SELECT getdate () AS 'Data e hora atuais'
● GETUTCDATE () - Retorna um valor que contém a data e a
hora do computador no qual a instância de SQL Server está
sendo executada. A data e hora é retornada como hora
UTC (Tempo Universal Coordenado).
SELECT getutcdate () AS 'Hora UTC'
● As funções acima retornam dados do tipo datetime
Fábio dos Reis
Bóson Treinamentos 2013
Funções 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 mês de
uma data especificada.
● YEAR (data) - Retorna um inteiro que representa a
parte do ano da data especificada.
SELECT YEAR(getdate())
Fábio dos Reis
Bóson Treinamentos 2013
DATEDIFF
● DATEDIFF – Função que retorna o tempo
entre duas datas.
● Sintaxe:
DATEDIFF(parte,data_inicial,data_final)
Fábio dos Reis
Bóson Treinamentos 2013
DATEDIFF
● Parte pode ser:
Parte Abreviação
Ano yy, yyyy
Mês mm, m
Dia dd, d
Semana wk, ww
Hora hh
Minuto mi, n
Segundo ss, s
Milisegundo ms
Fábio dos Reis
Bóson Treinamentos 2013
DATEDIFF - Exemplos
● SELECT DATEDIFF(hh, getutcdate(), getdate())
AS 'UTC São Paulo‘
● SELECT DATEDIFF(dd, getdate(), '1975-12-21')
AS 'Dias que já vivi'
Fábio dos Reis
Bóson Treinamentos 2013
Função DATEPART()
● Usada para retornar um parte de uma data ou
hora, como o ano, dia, mês, minuto, hora, etc.
● Sintaxe:
DATEPART(parte, data)
● Parte: mesmos parâmetros apresentados em
DATEDIFF.
● Data: Data ou coluna que contém a data. Fábio dos Reis
Bóson Treinamentos 2013
DATEPART - Exemplo
SELECT DATEPART(yyyy,Data_Pub) AS ‘Ano
Lançamento’,
DATEPART(mm, Data_Pub) AS ‘Mês’,
DATEPART(dd, Data_Pub) AS ‘Dia’,
FROM tbl_Livros
WHERE ID_Livro = 1
Fábio dos Reis
Bóson Treinamentos 2013
Função DATEADD()
● Adiciona ou subtrai um intervalo de tempo
específico de uma data.
● Sintaxe:
DATEADD(parte, número, data)
● número é o intervalo a ser adicionado (ou
subtraído, se for negativo).
Fábio dos Reis
Bóson Treinamentos 2013
DATEADD – Exemplo:
● Um livro é lançado nos EUA em uma data, e será
publicado aqui 50 dias depois. Determine essa data da
publicação.
SELECT DATEADD(dd,50,Data_Pub)
AS ‘Data de Publicação em Português’
FROM tbl_Livros
● Data daqui a 20 dias:
SELECT DATEADD(dd,20,GETDATE())
Fábio dos Reis
Bóson Treinamentos 2013
Função CONVERT()
● Função que converte uma expressão de um tipo de
data para outro.
● Também pode ser usada para mostrar a data e a hora
em formatos diferentes.
● Sintaxe:
CONVERT(tipo_dados, expressão, estilo)
● tipo_dados – Especifica o tipo de dados alvo
● expressão – Valor a ser convertido
● estilo – Formato de saída
Fábio dos Reis
Bóson Treinamentos 2013
CONVERT – Tabela de estilos
Valor (aa) Valor (aaaa) Entrada/Saída Padrão
1 101 mm/dd/yy EUA
2 102 yy.mm.dd ANSI
3 103 dd/mm/yy Francês
4 104 dd.mm.yy Alemão
5 105 dd-mm-yy Italiano
8 108 hh:mm:ss
12 112 yymmdd ISO
6 106 dd mês yy
Fábio dos Reis
CONVERT - Exemplo
Data em formato nacional:
SELECT CONVERT(VARCHAR(10),GETDATE(),103))
Apenas a hora:
SELECT CONVERT(VARCHAR(10),GETDATE(),108)
Fábio dos Reis
Bóson Treinamentos 2013

Weitere ähnliche Inhalte

Was ist angesagt?

Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosNatanael Simões
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Aula 1 estruturas de controlo (final)
Aula 1   estruturas de controlo (final)Aula 1   estruturas de controlo (final)
Aula 1 estruturas de controlo (final)mestradopeci2012
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Modelo de documento para levantamento de requisitos de software
Modelo de documento para levantamento de requisitos de softwareModelo de documento para levantamento de requisitos de software
Modelo de documento para levantamento de requisitos de softwareFrancilvio Roberto Alff
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoLeinylson Fontinele
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Leinylson Fontinele
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivoscamila_seixas
 
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Leinylson Fontinele
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Tabela de distribuição de frequências para variáveis quantitativas contínuas....
Tabela de distribuição de frequências para variáveis quantitativas contínuas....Tabela de distribuição de frequências para variáveis quantitativas contínuas....
Tabela de distribuição de frequências para variáveis quantitativas contínuas....Alberto Tchivinda
 
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)Leinylson Fontinele
 

Was ist angesagt? (20)

Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Aula 1 estruturas de controlo (final)
Aula 1   estruturas de controlo (final)Aula 1   estruturas de controlo (final)
Aula 1 estruturas de controlo (final)
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Modelo de documento para levantamento de requisitos de software
Modelo de documento para levantamento de requisitos de softwareModelo de documento para levantamento de requisitos de software
Modelo de documento para levantamento de requisitos de software
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Redes - ISO/OSI
Redes - ISO/OSIRedes - ISO/OSI
Redes - ISO/OSI
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivos
 
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
Banco de Dados II Aula Dinâmica 1 (Perguntas e Respostas)
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Tabela de distribuição de frequências para variáveis quantitativas contínuas....
Tabela de distribuição de frequências para variáveis quantitativas contínuas....Tabela de distribuição de frequências para variáveis quantitativas contínuas....
Tabela de distribuição de frequências para variáveis quantitativas contínuas....
 
Apostila banco de dados
Apostila banco de dadosApostila banco de dados
Apostila banco de dados
 
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
Banco de Dados II Aula 06 - Modelagem de Dados (Modelo Físico)
 

Andere mochten auch

T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012Rodrigo Ribeiro
 
Introdução ao Registro do Windows
Introdução ao Registro do WindowsIntrodução ao Registro do Windows
Introdução ao Registro do WindowsFábio dos Reis
 
Apostila introdução à linguagem sql
Apostila introdução à linguagem sqlApostila introdução à linguagem sql
Apostila introdução à linguagem sqlReuel Lopes
 
Sql Server Stored Procedures
Sql Server   Stored ProceduresSql Server   Stored Procedures
Sql Server Stored Proceduresalexdutra
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dadosFernando Palma
 
VI Sessão SQL Server BA - Plan guide
VI Sessão SQL Server BA - Plan guideVI Sessão SQL Server BA - Plan guide
VI Sessão SQL Server BA - Plan guideFlávio Farias
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureFernando Roberto Proença
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012Hcode
 
Administrando e armazenando dados com sql server 2005 (31 horas)
Administrando e armazenando dados com sql server 2005 (31 horas)Administrando e armazenando dados com sql server 2005 (31 horas)
Administrando e armazenando dados com sql server 2005 (31 horas)Vitor Savicki
 
Manual java swing
Manual java swingManual java swing
Manual java swingRobert Wolf
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...Rogério Moraes de Carvalho
 
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_soxAuditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_soxSQLServerRS
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...Rogério Moraes de Carvalho
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantesCaique Moretto
 
Alguns o es e suas indicações
Alguns o es e suas indicaçõesAlguns o es e suas indicações
Alguns o es e suas indicaçõeskennyaeduardo
 

Andere mochten auch (20)

T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 
Introdução ao Registro do Windows
Introdução ao Registro do WindowsIntrodução ao Registro do Windows
Introdução ao Registro do Windows
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
Apostila introdução à linguagem sql
Apostila introdução à linguagem sqlApostila introdução à linguagem sql
Apostila introdução à linguagem sql
 
Sql Server Stored Procedures
Sql Server   Stored ProceduresSql Server   Stored Procedures
Sql Server Stored Procedures
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dados
 
VI Sessão SQL Server BA - Plan guide
VI Sessão SQL Server BA - Plan guideVI Sessão SQL Server BA - Plan guide
VI Sessão SQL Server BA - Plan guide
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored Procedure
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012
 
Administrando e armazenando dados com sql server 2005 (31 horas)
Administrando e armazenando dados com sql server 2005 (31 horas)Administrando e armazenando dados com sql server 2005 (31 horas)
Administrando e armazenando dados com sql server 2005 (31 horas)
 
Manual java swing
Manual java swingManual java swing
Manual java swing
 
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
SQLSaturday #253 | Brasília 2013 - Mapeamento Objeto-Relacional com o Entity ...
 
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_soxAuditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
Auditoria de banco_de_dados_sql_server_em_conformidade_com_a_sox
 
Microsoft C#
Microsoft C#Microsoft C#
Microsoft C#
 
Dynamic Types no C# 4.0
Dynamic Types no C# 4.0Dynamic Types no C# 4.0
Dynamic Types no C# 4.0
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
The Developer’s Conference (TDC) 2015 Florianópolis: O Entity Framework 7 na ...
 
Apostila c# iniciantes
Apostila c# iniciantesApostila c# iniciantes
Apostila c# iniciantes
 
Gayatri - Interpretação Detalhada
Gayatri - Interpretação DetalhadaGayatri - Interpretação Detalhada
Gayatri - Interpretação Detalhada
 
Alguns o es e suas indicações
Alguns o es e suas indicaçõesAlguns o es e suas indicações
Alguns o es e suas indicações
 

Ähnlich wie SQL Fundamentos

Ähnlich wie SQL Fundamentos (20)

07 sql - parte 01
07   sql - parte 0107   sql - parte 01
07 sql - parte 01
 
Banco dados lj
Banco dados ljBanco dados lj
Banco dados lj
 
Aulas_SQL.pdf
Aulas_SQL.pdfAulas_SQL.pdf
Aulas_SQL.pdf
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Comandos do my sql
Comandos do my sqlComandos do my sql
Comandos do my sql
 
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docxmodulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
modulo-15-sql-criar-e-manipular-tabelas1-2-flipbook-pdf.docx
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptxintroduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
introduao-a-sql-prof-anderson-cavalcanti-ufrn-ct-dca.pptx
 
6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Basesdedados
BasesdedadosBasesdedados
Basesdedados
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Sql
SqlSql
Sql
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Apostila - Banco de Dados
Apostila - Banco de DadosApostila - Banco de Dados
Apostila - Banco de Dados
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 

Mehr von Fábio dos Reis

Palestra de Windows Server 2016
Palestra de Windows Server 2016Palestra de Windows Server 2016
Palestra de Windows Server 2016Fábio dos Reis
 
Palestra Introdução ao Microsoft Azure - Senac Lapa
Palestra Introdução ao Microsoft Azure - Senac LapaPalestra Introdução ao Microsoft Azure - Senac Lapa
Palestra Introdução ao Microsoft Azure - Senac LapaFábio dos Reis
 
Sistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoSistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoFábio dos Reis
 
Conheça o Roseapple Pi - Computador de Placa ùnica
Conheça o Roseapple Pi - Computador de Placa ùnicaConheça o Roseapple Pi - Computador de Placa ùnica
Conheça o Roseapple Pi - Computador de Placa ùnicaFábio dos Reis
 
Conhecendo as funções analogread, analogwrite e analogreference
Conhecendo as funções analogread, analogwrite e analogreferenceConhecendo as funções analogread, analogwrite e analogreference
Conhecendo as funções analogread, analogwrite e analogreferenceFábio dos Reis
 
Protocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosProtocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosFábio dos Reis
 
Introdução à criptografia - Bóson Treinamentos
Introdução à criptografia - Bóson TreinamentosIntrodução à criptografia - Bóson Treinamentos
Introdução à criptografia - Bóson TreinamentosFábio dos Reis
 
Rpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesRpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesFábio dos Reis
 
Prioridades de processos - nice e renice
Prioridades de processos - nice e renicePrioridades de processos - nice e renice
Prioridades de processos - nice e reniceFábio dos Reis
 
Processos e comando kill - Bóson Treinamentos
Processos e comando kill - Bóson TreinamentosProcessos e comando kill - Bóson Treinamentos
Processos e comando kill - Bóson TreinamentosFábio dos Reis
 
Expressões regulares, grep e sed - Bóson Treinamentos
Expressões regulares, grep e sed - Bóson TreinamentosExpressões regulares, grep e sed - Bóson Treinamentos
Expressões regulares, grep e sed - Bóson TreinamentosFábio dos Reis
 
Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxFábio dos Reis
 
Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellFábio dos Reis
 
Permissões especiais - suid, sgid, sticky - Linux
Permissões especiais - suid, sgid, sticky - LinuxPermissões especiais - suid, sgid, sticky - Linux
Permissões especiais - suid, sgid, sticky - LinuxFábio dos Reis
 
Umask - Linux - Bóson Treinamentos
Umask - Linux - Bóson TreinamentosUmask - Linux - Bóson Treinamentos
Umask - Linux - Bóson TreinamentosFábio dos Reis
 
Servidor DHCP - Linux - Bóson Treinamentos
Servidor DHCP - Linux - Bóson TreinamentosServidor DHCP - Linux - Bóson Treinamentos
Servidor DHCP - Linux - Bóson TreinamentosFábio dos Reis
 
Instalação do linux debian 6.0.4
Instalação do linux debian 6.0.4Instalação do linux debian 6.0.4
Instalação do linux debian 6.0.4Fábio dos Reis
 
Redirecionamento, pipes e processos linux
Redirecionamento, pipes e processos   linuxRedirecionamento, pipes e processos   linux
Redirecionamento, pipes e processos linuxFábio dos Reis
 

Mehr von Fábio dos Reis (19)

Palestra de Windows Server 2016
Palestra de Windows Server 2016Palestra de Windows Server 2016
Palestra de Windows Server 2016
 
Palestra Introdução ao Microsoft Azure - Senac Lapa
Palestra Introdução ao Microsoft Azure - Senac LapaPalestra Introdução ao Microsoft Azure - Senac Lapa
Palestra Introdução ao Microsoft Azure - Senac Lapa
 
Sistema Hexadecimal de numeração
Sistema Hexadecimal de numeraçãoSistema Hexadecimal de numeração
Sistema Hexadecimal de numeração
 
Conheça o Roseapple Pi - Computador de Placa ùnica
Conheça o Roseapple Pi - Computador de Placa ùnicaConheça o Roseapple Pi - Computador de Placa ùnica
Conheça o Roseapple Pi - Computador de Placa ùnica
 
Conhecendo as funções analogread, analogwrite e analogreference
Conhecendo as funções analogread, analogwrite e analogreferenceConhecendo as funções analogread, analogwrite e analogreference
Conhecendo as funções analogread, analogwrite e analogreference
 
A Catedral e o Bazar
A Catedral e o BazarA Catedral e o Bazar
A Catedral e o Bazar
 
Protocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosProtocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson Treinamentos
 
Introdução à criptografia - Bóson Treinamentos
Introdução à criptografia - Bóson TreinamentosIntrodução à criptografia - Bóson Treinamentos
Introdução à criptografia - Bóson Treinamentos
 
Rpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotesRpm e yum - gerenciamento de pacotes
Rpm e yum - gerenciamento de pacotes
 
Prioridades de processos - nice e renice
Prioridades de processos - nice e renicePrioridades de processos - nice e renice
Prioridades de processos - nice e renice
 
Processos e comando kill - Bóson Treinamentos
Processos e comando kill - Bóson TreinamentosProcessos e comando kill - Bóson Treinamentos
Processos e comando kill - Bóson Treinamentos
 
Expressões regulares, grep e sed - Bóson Treinamentos
Expressões regulares, grep e sed - Bóson TreinamentosExpressões regulares, grep e sed - Bóson Treinamentos
Expressões regulares, grep e sed - Bóson Treinamentos
 
Discos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em LinuxDiscos e sistemas de arquivos em Linux
Discos e sistemas de arquivos em Linux
 
Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shell
 
Permissões especiais - suid, sgid, sticky - Linux
Permissões especiais - suid, sgid, sticky - LinuxPermissões especiais - suid, sgid, sticky - Linux
Permissões especiais - suid, sgid, sticky - Linux
 
Umask - Linux - Bóson Treinamentos
Umask - Linux - Bóson TreinamentosUmask - Linux - Bóson Treinamentos
Umask - Linux - Bóson Treinamentos
 
Servidor DHCP - Linux - Bóson Treinamentos
Servidor DHCP - Linux - Bóson TreinamentosServidor DHCP - Linux - Bóson Treinamentos
Servidor DHCP - Linux - Bóson Treinamentos
 
Instalação do linux debian 6.0.4
Instalação do linux debian 6.0.4Instalação do linux debian 6.0.4
Instalação do linux debian 6.0.4
 
Redirecionamento, pipes e processos linux
Redirecionamento, pipes e processos   linuxRedirecionamento, pipes e processos   linux
Redirecionamento, pipes e processos linux
 

Kürzlich hochgeladen

Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxLuizHenriquedeAlmeid6
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 

Kürzlich hochgeladen (20)

Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptxSlides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
Slides Lição 4, Betel, Ordenança quanto à contribuição financeira, 2Tr24.pptx
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 

SQL Fundamentos

  • 1. SQL SQL Server Fábio dos Reis Bóson Treinamentos 2013
  • 2. Structured Query Language ● Linguagem de Consulta Estruturada padrão para acesso a Bancos de Dados ● Usada em inúmeros 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. Fábio dos Reis Bóson Treinamentos 2013
  • 3. Funções 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 módulos SQL, bibliotecas, etc. ● Permite criar e excluir bancos de dados e tabelas. ● Permite a criação de Visões (Exibições), Stored Procedures e Funções em um Banco de Dados. ● Permite configurar permissões de acesso em tabelas, procedimentos e visões. Fábio dos Reis Bóson Treinamentos 2013
  • 4. Grupos de Comandos ● Os comandos SQL podem ser divididos em quatro grupos principais: ● DDL ● DML ● DCL ● DQL Fábio dos Reis Bóson Treinamentos 2013
  • 5. DDL – Data Definition Language Comando Descrição CREATE Cria uma nova tabela, visão ou outro objeto no BD. ALTER Modifica um objeto existente no BD, como uma tabela. DROP Exclui uma tabela inteira, uma exibição de uma tabela ou outro objeto no banco de dados. Fábio dos Reis Bóson Treinamentos 2013
  • 6. DML – Data Manipulation Language Comando Descrição INSERT Cria um registro (linha) UPDATE Modifica registros DELETE Exclui registros Fábio dos Reis Bóson Treinamentos 2013
  • 7. DCL – Data Control Language Comando Descrição GRANT Dá privilégios a um usuário REVOKE Retira privilégios fornecidos a um usuário Fábio dos Reis Bóson Treinamentos 2013
  • 8. DQL – Data Query Language Comando Descrição SELECT Obtém registros especificados de uma ou mais tabelas. (consulta) Fábio dos Reis Bóson Treinamentos 2013
  • 9. 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. Fábio dos Reis Bóson Treinamentos 2013
  • 10. Composição de um Banco de Dados ● Tabelas ● Campos (Colunas) ● Registros (Linhas) Fábio dos Reis Bóson Treinamentos 2013
  • 11. Tabelas ● Objetos onde são armazenados os dados em um banco de dados relacional. ● Uma tabela é uma coleção de entradas de dados relacionados e consiste em linhas e colunas. Fábio dos Reis Bóson Treinamentos 2013
  • 12. Campo ● São entidades que representam os atributos dos dados, como Nome, Data de Nascimento, Salário, Preço, etc. ● Um campo é uma coluna em uma tabela que mantém informações específicas sobre cada registro. Fábio dos Reis Bóson Treinamentos 2013
  • 13. 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. Fábio dos Reis Bóson Treinamentos 2013
  • 14. Tipos de Dados Tipo Descrição Armazenamento char(n) String de caracteres de tamanho fixo, máximo de 8000 caracteres. n varchar(n) String de caracteres de tamanho variável, máximo de 8000 caracteres. nchar(n) Dados Unicode de tamanho fixo, máximo de 4000 caracteres. nvarchar(n) Dados Unicode de tamanho variável, máximo de 4000 caracteres. bit 0, 1 ou nulo tinyint Números inteiros de 0 a 255 1 byte smallint Números inteiros de -32768 a 32767 2 bytes int Números inteiros entre -2,147,483,648 e 2,147,483,647 4 bytes Fábio dos Reis Bóson Treinamentos 2013
  • 15. Tipos de Dados Tipo Descrição Armazenamento bigint Números entre -9,223,372,036,854,775,808 e 9,223,372,036,854,775,807 8 bytes real Números de ponto flutuante entre -3.4 x 1038 e 3.4x1038 4 bytes datetime De 01/01/1753 a 31/12/9999, com uma precisão de 3.33 milisegundos. 8 bytes smalldatetime De 01/01/1900 a 06/06/2079, com uma precisão de 1 minuto. 4 bytes date Data apenas. De 01/01/0001 a 31/12/9999 3 bytes time Hora apenas. Precisão de até 100 nanossegundos. 3-5 bytes text Cadeia de caracteres de tamanho variável. Até 2GB de dados. money Dados monetários de -922,337,203,685,477.5808 até 922,337,203,685,477.5807 8 bytes Fábio dos Reis Bóson Treinamentos 2013
  • 16. Criação de um Banco de Dados Fábio dos Reis Bóson Treinamentos 2013
  • 17. Criar Banco de Dados CREATE DATABASE db_Biblioteca ON PRIMARY ( NAME= db_Biblioteca, FILENAME='C:SQLdb_Biblioteca.MDF', SIZE=6MB, MAXSIZE=15MB, FILEGROWTH=10% ) Fábio dos Reis Bóson Treinamentos 2013
  • 18. USE ● O comando USE instrui o SGBDR a utilizar o banco de dados especificado para rodar os comandos. ● Sintaxe: USE banco_de_dados GO Fábio dos Reis Bóson Treinamentos 2013
  • 19. sp_helpdb Informa o tamanho, taxa de crescimento, e local do banco de dados. sp_helpdb BANCO_DADOS Fábio dos Reis Bóson Treinamentos 2013
  • 20. SQL Constraints (Restrições) ● Restrições são regras aplicadas nas colunas de uma tabela. ● São usadas para limitar os tipos de dados que são inseridos. ● Podem ser especificadas no momento de criação da tabela (CREATE) ou após a tabela ter sido criada (ALTER) Fábio dos Reis Bóson Treinamentos 2013
  • 21. SQL Constraints (Restrições) Principais: ● NOT NULL ● UNIQUE ● PRIMARY KEY ● FOREIGN KEY ● CHECK ● DEFAULT Fábio dos Reis Bóson Treinamentos 2013
  • 22. NOT NULL ● A constraint NOT NULL impõe a uma coluna a NÃO aceitar valores NULL. ● A constraint NOT NULL obriga um campo a sempre possuir um valor. ● Deste modo, não é possível inserir um registro (ou atualizar) sem entrar com um valor neste campo. Fábio dos Reis Bóson Treinamentos 2013
  • 23. UNIQUE ● A restrição 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 restrição UNIQUE definida. ● Você pode ter várias constraints UNIQUE em uma tabela, mas apenas uma Chave Primária por tabela. Fábio dos Reis Bóson Treinamentos 2013
  • 24. PRIMARY KEY ● A PRIMARY KEY identifica de forma única cada registro em uma tabela de banco de dados. ● Chaves Primárias devem conter valores únicos. ● Uma coluna de chave primária não pode conter valores NULL ● Cada tabela deve ter uma chave primária e apenas uma chave primária. Fábio dos Reis Bóson Treinamentos 2013
  • 25. FOREIGN KEY ● Uma FOREIGN KEY (Chave Estrangeira) em uma tabela é um campo que aponta para uma chave primária em outra tabela. CONSTRAINT fk_ID_Autor FOREIGN KEY (ID_Autor) REFERENCES tbl_autores(ID_Autor) Neste exemplo a chave primária está na tabela tbl_autores e uma chave estrangeira de nome ID_Autor foi criada na tabela atual, usando o nome fk_ID_Autor Fábio dos Reis Bóson Treinamentos 2013
  • 26. 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. Fábio dos Reis Bóson Treinamentos 2013
  • 27. DEFAULT ● A restrição DEFAULT é usada para inserir um valor padrão em uma coluna. ● O valor padrão será adicionado a todos os novos registros caso nenhum outro valor seja especificado. Fábio dos Reis Bóson Treinamentos 2013
  • 28. 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) Fábio dos Reis Bóson Treinamentos 2013
  • 29. 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 ) Fábio dos Reis Bóson Treinamentos 2013
  • 30. sp_help TABELA ● Informa os índices, chaves e campos, atributos tipos de atributos de uma tabela (stored procedures, comandos pré-programados) Fábio dos Reis Bóson Treinamentos 2013
  • 31. AUTO INCREMENT (IDENTITY) ● O auto incremento permite que um número único seja gerado quando um novo registro é inserido em uma tabela. ● Em SQL SERVER trata-se da palavra chave IDENTITY (identidade), cujo valor inicial padrão é 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). Fábio dos Reis Bóson Treinamentos 2013
  • 32. AUTO INCREMENT (IDENTITY) ● Ao inserir valores na tabela, não é necessário especificar o valor para a coluna de auto- incremento. ● Não é possível alterar uma coluna existente para configurar IDENTITY. ● Se necessário, crie uma nova tabela com IDENTITY e exclua a atual. ● Só é permitido usar uma coluna de identidade por tabela. Fábio dos Reis Bóson Treinamentos 2013
  • 33. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 34. (Chave Primária com múltiplas 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) ) Fábio dos Reis Bóson Treinamentos 2013
  • 35. Alterar Tabelas ● É possível alterar a estrutura de uma tabela após ter sido criada, acrescentando ou excluindo atributos (campos) Fábio dos Reis Bóson Treinamentos 2013
  • 36. ALTER TABLE - DROP ALTER TABLE tbl_Livro DROP COLUMN ID_Autor Pode-se excluir uma constraint: ALTER TABLE tabela DROP CONSTRAINT nome_constraint Fábio dos Reis Bóson Treinamentos 2013
  • 37. 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) Fábio dos Reis Bóson Treinamentos 2013
  • 38. ALTER TABLE – ALTER COLUMN ALTER TABLE tbl_Livro ALTER COLUMN ID_Autor SMALLINT Fábio dos Reis Bóson Treinamentos 2013
  • 39. 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 primária. A coluna ID_Cliente receberá a Constraint (restrição) “PRIMARY KEY”, e passará a ser a chave primária da tabela. Fábio dos Reis Bóson Treinamentos 2013
  • 40. DROP TABLE – Excluir tabela DROP TABLE nome_tabela DROP TABLE Clientes Fábio dos Reis Bóson Treinamentos 2013
  • 41. Diagrama de banco de Dados ● Após adicionar as tabelas, verifique se os relacionamentos foram criados observando o diagrama de banco de dados. Fábio dos Reis Bóson Treinamentos 2013
  • 42. Fábio dos Reis Bóson Treinamentos 2013
  • 43. Inserir Dados Inserir dados em uma tabela: INSERT INTO tabela (coluna1, coluna2,...) VALUES (valor1, valor2,...) Fábio dos Reis Bóson Treinamentos 2013
  • 44. 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') Fábio dos Reis Bóson Treinamentos 2013
  • 45. Inserir Dados – Tabela de Editoras INSERT INTO tbl_Editoras (Nome_Editora) VALUES (‘Prentice Hall') INSERT INTO tbl_Editoras (Nome_Editora) VALUES ('O´Reilly') INSERT INTO tbl_Editoras (Nome_Editora) VALUES (‘Microsoft Press') INSERT INTO tbl_Editoras (Nome_Editora) VALUES (Wiley') Fábio dos Reis Bóson Treinamentos 2013
  • 46. 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) Fábio dos Reis Bóson Treinamentos 2013
  • 47. 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) Fábio dos Reis Bóson Treinamentos 2013
  • 48. TRUNCATE TABLE ● Remove todas as linhas de uma tabela sem registrar as exclusões de linhas individuais. ● TRUNCATE TABLE é como a instrução DELETE sem usar a cláusula WHERE. ● Entretanto, TRUNCATE TABLE é mais rápida e utiliza menos recursos de sistema e log de transações. Fábio dos Reis Bóson Treinamentos 2013
  • 49. 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. Fábio dos Reis Bóson Treinamentos 2013
  • 50. Consultas Simples ● SELECT coluna FROM Tabela Ex.: SELECT Nome_Autor FROM tbl_Autores SELECT * FROM tbl_Autores SELECT Nome_Livro FROM tbl_Livro Fábio dos Reis Bóson Treinamentos 2013
  • 51. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 52. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 53. Seleção com Ordenação 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) Fábio dos Reis Bóson Treinamentos 2013
  • 54. Collation ("Colação/Agrupamento") Trata-se da codificação dos caracteres em uma ordem padrão. Muitos sistemas de colação são baseados em ordem numérica ou alfabética. A colação usada pelo banco de dados é configurada durante a instalação do sistema. Visite collation-charts.org para consultar cartas de colação em vários alfabetos e idiomas. Fábio dos Reis Bóson Treinamentos 2013
  • 55. Colação / Agrupamento A colação também determina se acentos, caso e outras propriedades alfabéticas são levadas em conta na ordem de classificação. Para verificar as opções de colação instaladas use a seguinte função: SELECT * FROM fn_helpcollations() Fábio dos Reis Bóson Treinamentos 2013
  • 56. Colação Para ver o esquema de colação usado atualmente pelo servidor: SELECT SERVERPROPERTY('Collation') AS Colação_Usada O resultado provavelmente será: Latin1_General_CI_AS CI = Case Insensitive AS = Accent Sensitive Fábio dos Reis Bóson Treinamentos 2013
  • 57. Alterar Colação A propriedade de colação 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 Colação_Banco_test Fábio dos Reis Bóson Treinamentos 2013
  • 58. Alterar Colação em nível de coluna SELECT * FROM tbl_Livro ORDER BY Nome_Livro COLLATE Icelandic_CI_AI Fábio dos Reis Bóson Treinamentos 2013
  • 59. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 60. Cláusula 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' Fábio dos Reis Bóson Treinamentos 2013
  • 61. Excluir dados Sintaxe: DELETE FROM tabela WHERE coluna = valor Ex.: DELETE FROM tbl_autores WHERE ID_Autor = 2 Obs.: Sempre use a cláusula WHERE para evitar a perda de dados da tabela! Fábio dos Reis Bóson Treinamentos 2013
  • 62. Operadores AND e OR ● Usados para filtrar registros baseados em mais de uma condição. ● O operador AND mostra um registro se ambas as condições forem verdadeiras. ● O operador OR mostra um registro se pelo menos uma das condições for verdadeira. Fábio dos Reis Bóson Treinamentos 2013
  • 63. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 64. SELECT TOP ● Usado para especificar o número de registros a retornar. ● Útil para tabelas com muitos registros. SELECT TOP número|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 Fábio dos Reis Bóson Treinamentos 2013
  • 65. 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 três primeiros times de um campeonato por pontuação, mas deixa o quarto time de fora - mesmo que ele tenha o mesmo número de pontos que o terceiro. Fábio dos Reis Bóson Treinamentos 2013
  • 66. 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 três times, mas com o WITH TIES, um quarto time é retornado, pois tem a mesma pontuação do terceiro. Fábio dos Reis Bóson Treinamentos 2013
  • 67. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 68. Operador UNION ● Permite combinar duas ou mais declarações SELECT. ● Cada declaração SELECT deve ter o mesmo número 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 Fábio dos Reis Bóson Treinamentos 2013
  • 69. SELECT INTO ● Seleciona dados de uma ou mais tabelas e os insere em uma tabela diferente. ● Pode ser usada para criar cópias 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 Fábio dos Reis Bóson Treinamentos 2013
  • 70. Comentários ● Para inserir um comentário em seu código SQL, use -- antes do comentário: Ex.: -- O código a seguir faz x, y, z, etc... Fábio dos Reis Bóson Treinamentos 2013
  • 71. CREATE INDEX ● Usado para criar índices em tabelas. ● Os índices permitem que as aplicações de bancos de dados encontrem dados mais rapidamente, sem ter de ler a tabela toda. ● Usuários não veem os índices. ● Apenas crie índices em tabelas que recebem muitas consultas, pois tabelas indexadas levam mais tempo para serem atualizadas. Fábio dos Reis Bóson Treinamentos 2013
  • 72. CREATE INDEX CREATE INDEX nome_índice ON nome_tabela (nome_coluna) CREATE INDEX ind_nome_livro ON tbl_Livro(Nome_Livro) Fábio dos Reis Bóson Treinamentos 2013
  • 73. Funções Agregadas MIN = Valor Mínimo MAX = Valor Máximo AVG = Média Aritmética SUM = Total (Soma) COUNT = Contar quantidade de itens Fábio dos Reis Bóson Treinamentos 2013
  • 74. Funções 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 Fábio dos Reis Bóson Treinamentos 2013
  • 75. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 76. Atualizar Registros UPDATE tabela SET coluna = novo_valor_armazenado WHERE coluna = valor_filtro Obs.: Caso não seja usada a cláusula WHERE para filtrar os registros, todos os dados da coluna serão alterados. Fábio dos Reis Bóson Treinamentos 2013
  • 77. 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 terão o valor alterado Fábio dos Reis Bóson Treinamentos 2013
  • 78. BETWEEN - Seleção 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 Preço FROM tbl_Livro WHERE Preco_Livro BETWEEN 40.00 AND 60.00 Fábio dos Reis Bóson Treinamentos 2013
  • 79. LIKE e NOT LIKE ● Determina se uma cadeia de caracteres específica corresponde a um padrão especificado. Um padrão pode incluir caracteres normais e curingas. ● NOT LIKE inverte a comparação, verificando se a cadeia de caracteres NÃO corresponde ao padrão especificado. Fábio dos Reis Bóson Treinamentos 2013
  • 80. LIKE – Padrões específicos (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 não esteja no intervalo ou conjunto especificado ([a-h]; [aeiou]) Fábio dos Reis Bóson Treinamentos 2013
  • 81. 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]%' Fábio dos Reis Bóson Treinamentos 2013
  • 82. Usando padrões ● Criar um padrão: ● CREATE DEFAULT DF_Sobrenome_Autor AS 'Silva' Fábio dos Reis Bóson Treinamentos 2013
  • 83. Aplicando Padrões 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') ● # Não foi especificado o sobrenome do autor; será assumido o padrão criado. Fábio dos Reis Bóson Treinamentos 2013
  • 84. Desaplicando Padrões EXEC SP_UNBINDEFAULT 'tbl_autores. sobreNome_Autor‘ tbl_autores = Tabela sobreNome_Autor = coluna Fábio dos Reis Bóson Treinamentos 2013
  • 85. Backup do Banco de Dados BACKUP DATABASE banco_de_dados TO DISK = 'X:CAMINHObanco_de_dados.bak' WITH FORMAT; GO Exemplo: BACKUP DATABASE db_Biblioteca TO DISK = 'C:SQLdb_Biblioteca.bak'; GO Obs.: A opção FORMAT formata a mídia usada no backup do banco de dados; opcional. Fábio dos Reis Bóson Treinamentos 2013
  • 86. Criando uma Regra CREATE RULE RL_PRECO AS @VALOR>=800 RL_PRECO = Nome escolhido para a regra @VALOR = Variável declarada Fábio dos Reis Bóson Treinamentos 2013
  • 87. Aplicando a Regra EXECUTE SP_BINDRULE RL_PRECO, 'tbl_preco. PRECO' ● A partir de agora, os preços cadastrados devem ser sempre maiores que 800. Fábio dos Reis Bóson Treinamentos 2013
  • 88. 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á Fábio dos Reis Bóson Treinamentos 2013
  • 89. VIEWS ● Uma Exibição (Visão) é uma tabela virtual baseada no conjunto de resultados de uma consulta SQL. ● Contém linhas e colunas como uma tabela real, e pode receber comandos como declarações JOIN, WHERE e funções como uma tabela normal. ● Mostra sempre resultados de dados atualizados, pois o motor do banco de dados recria os dados toda vez que um usuário consulta a visão. Fábio dos Reis Bóson Treinamentos 2013
  • 90. VIEWS - Criação CREATE VIEW [Nome_Exibição] AS SELECT colunas FROM tabela WHERE condições 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 Fábio dos Reis Bóson Treinamentos 2013
  • 91. Usando a View Criada Select Livro, Autor FROM vw_LivrosAutores --WHERE Livro LIKE 'S%' Fábio dos Reis Bóson Treinamentos 2013
  • 92. Views - Alteração 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 Fábio dos Reis Bóson Treinamentos 2013
  • 93. VIEWS - Exclusão DROP VIEW nome_exibição DROP VIEW vw_LivrosAutores Fábio dos Reis Bóson Treinamentos 2013
  • 94. JOINS ● A palavra-chave JOIN é usada para obter dados provenientes de duas ou mais tabelas, baseado em um relacionamento entre colunas nestas tabelas. Fábio dos Reis Bóson Treinamentos 2013
  • 95. JOINS - Categorias ● INNER JOIN: Retorna linhas quando houver pelo menos uma correspondência em ambas as tabelas. ● OUTER JOIN: Retorna linhas mesmo quando não houver pelo menos uma correspondência em uma das tabelas (ou ambas). O OUTER JOIN divide-se em LEFT JOIN, RIGHT JOIN e FULL JOIN. Fábio dos Reis Bóson Treinamentos 2013
  • 96. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 97. 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 cláusulas 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%' Fábio dos Reis Bóson Treinamentos 2013
  • 98. INNER JOIN - Três 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]%' Fábio dos Reis Bóson Treinamentos 2013
  • 99. INNER JOIN Fábio dos Reis Bóson Treinamentos 2013
  • 100. OUTER JOINS ● LEFT JOIN: Retorna todas as linhas da tabela à esquerda, mesmo se não houver nenhuma correspondência na tabela à direita. ● RIGHT JOIN: Retorna todas as linhas da tabela à direita, mesmo se não houver nenhuma correspondência na tabela à esquerda. ● FULL JOIN: Retorna linhas quando houver uma correspondência em qualquer uma das tabelas. É uma combinação de LEFT e RIGHT JOINS. Fábio dos Reis Bóson Treinamentos 2013
  • 101. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 102. LEFT JOIN Fábio dos Reis Bóson Treinamentos 2013
  • 103. LEFT JOIN excluindo correspondências 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 Fábio dos Reis Bóson Treinamentos 2013
  • 104. LEFT JOIN excluindo correspondências Fábio dos Reis Bóson Treinamentos 2013
  • 105. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 106. RIGHT JOIN Fábio dos Reis Bóson Treinamentos 2013
  • 107. RIGHT JOIN excluindo correspondências 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 Fábio dos Reis Bóson Treinamentos 2013
  • 108. RIGHT JOIN excluindo correspondências Fábio dos Reis Bóson Treinamentos 2013
  • 109. FULL JOIN SELECT colunas FROM tabela1 FULL (OUTER) JOIN tabela2 ON tabela1.coluna=tabela2.coluna Fábio dos Reis Bóson Treinamentos 2013
  • 110. FULL JOIN Fábio dos Reis Bóson Treinamentos 2013
  • 111. FULL JOIN excluindo correspondências SELECT colunas FROM tabela1 FULL (OUTER) JOIN tabela2 ON tabela1.coluna=tabela2.coluna WHERE tabela1.coluna IS NULL OR tabela2.coluna IS NULL Fábio dos Reis Bóson Treinamentos 2013
  • 112. FULL JOIN excluindo correspondências Fábio dos Reis Bóson Treinamentos 2013
  • 113. CROSS JOIN ● Retorna um produto cartesiano entre as tabelas, mostrando todas as combinações possíveis entre os registros. SELECT colunas FROM tabela1 CROSS JOIN tabela2 Fábio dos Reis Bóson Treinamentos 2013
  • 114. CROSS JOIN A B C 1 2 3 tbl_Livro tbl_autores Fábio dos Reis Bóson Treinamentos 2013
  • 115. IN: Filtro de Múltiplas Condições 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 condição. Sintaxe: Expressão_teste (NOT) IN (subconsulta | lista) SELECT * FROM tbl_Livro WHERE ID_Autor IN (1, 2) Fábio dos Reis Bóson Treinamentos 2013
  • 116. Concatenação de Strings ● É possível concatenar strings usando-se o operador de concatenação (+). ● Sintaxe: <string | nome_coluna> + <string | nome_coluna> Ex.: SELECT ‘Fábio ‘ + ‘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 Fábio dos Reis Bóson Treinamentos 2013
  • 117. Concatenação 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 Fábio dos Reis Bóson Treinamentos 2013
  • 118. Concatenação com NULL ● Para evitar esse problema, há funções disponíveis que substituem NULL por outro valor. São elas: ● ISNULL ● COALESCE Fábio dos Reis Bóson Treinamentos 2013
  • 119. ISNULL ● ISNULL (valor, substituição) 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 código: INSERT INTO tbl_autores (ID_autor, Sobrenome_autor) VALUES (11, 'Dawkins') Fábio dos Reis Bóson Treinamentos 2013
  • 120. COALESCE ● COALESCE (valor1, valor2, ..., valorN) Essa função retornará o primeiro valor não-nulo encontrado em seus argumentos. SELECT ‘Vou ler ‘ + COALESCE(‘ ‘ + Nome_autor, ‘ algum autor’) FROM tbl_autores WHERE ID_autor = 11 Fábio dos Reis Bóson Treinamentos 2013
  • 121. 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 código: INSERT INTO tbl_autores (ID_autor, Nome_autor) VALUES (12, ‘George') INSERT INTO tbl_autores (ID_autor) VALUES (13) Fábio dos Reis Bóson Treinamentos 2013
  • 122. Concatenação 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 funções: ● CAST ● CONVERT Fábio dos Reis Bóson Treinamentos 2013
  • 123. CAST ● CAST(valor AS novo_tipo_dados) ● Ex.: SELECT 'O preço do livro ' + Nome_Livro + ' é de R$ ' + CAST(Preco_Livro AS VARCHAR(6)) FROM tbl_livro WHERE ID_autor = 2 Fábio dos Reis Bóson Treinamentos 2013
  • 124. CONVERT ● CONVERT(novo_tipo_dados, valor) Ex.: SELECT 'O preço do livro ' + Nome_Livro + ' é de R$ ' + CONVERT(VARCHAR(6),Preco_Livro) FROM tbl_livro Fábio dos Reis Bóson Treinamentos 2013
  • 125. Operações aritméticas ● É possível realizar operações matemáticas simples nos valores de uma coluna e retornar resultados em uma coluna calculada. ● Para isso usamos os operadores matemáticos comuns: + - / * % Fábio dos Reis Bóson Treinamentos 2013
  • 126. Operações aritméticas– Exemplo: SELECT Nome_Livro, Preco_Livro * 5 AS 'Preço de 5 Unidades' FROM tbl_livro SELECT Nome_Livro, Preco_Livro / 2 AS 'Preço com 50% de desconto' FROM tbl_livro Fábio dos Reis Bóson Treinamentos 2013
  • 127. Procedimentos Armazenados ● Stored Procedures ● Um procedimento armazenado é uma sub- rotina disponível para aplicações que acessam sistemas de bancos de dados relacionais. ● Podem ser usadas para validação de dados, controle de acesso, execução de declarações SQL complexas e outras situações. Fábio dos Reis Bóson Treinamentos 2013
  • 128. Criar SP Digite o código 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. Fábio dos Reis Bóson Treinamentos 2013
  • 129. 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 Fábio dos Reis Bóson Treinamentos 2013
  • 130. Executar o SP Para executar um Procedimento Armazenado, use a palavra-chave EXECUTE ou EXEC. EXEC | EXECUTE nome_procedimento parâmetros Ex.: EXEC sp_teste @NomeAutor = ‘Andrew’ Fábio dos Reis Bóson Treinamentos 2013
  • 131. Excluir um SP Use o comando DROP: DROP PROCEDURE Nome_do_SP Fábio dos Reis Bóson Treinamentos 2013
  • 132. Procedure para inserção 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 Fábio dos Reis Bóson Treinamentos 2013
  • 133. Executando a SP de inserção de dados EXEC sp_insere_livros 8, ‘DNS & BIND’, ‘152354689’, ‘20070422’, 3 Fábio dos Reis Bóson Treinamentos 2013
  • 134. Tipos de dados – Data e Hora Tipo de dados Formato Intervalo Precisão 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 não forem necessários componentes de hora na data, armazene-as como “date” para evitar problemas quando fizer comparações entre datas. Fábio dos Reis Bóson Treinamentos 2013
  • 135. Funções de Data e Hora ● GETDATE () - Retorna um valor que contém a data e a hora do computador no qual a instância de SQL Server está sendo executada. SELECT getdate () AS 'Data e hora atuais' ● GETUTCDATE () - Retorna um valor que contém a data e a hora do computador no qual a instância de SQL Server está sendo executada. A data e hora é retornada como hora UTC (Tempo Universal Coordenado). SELECT getutcdate () AS 'Hora UTC' ● As funções acima retornam dados do tipo datetime Fábio dos Reis Bóson Treinamentos 2013
  • 136. Funções 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 mês de uma data especificada. ● YEAR (data) - Retorna um inteiro que representa a parte do ano da data especificada. SELECT YEAR(getdate()) Fábio dos Reis Bóson Treinamentos 2013
  • 137. DATEDIFF ● DATEDIFF – Função que retorna o tempo entre duas datas. ● Sintaxe: DATEDIFF(parte,data_inicial,data_final) Fábio dos Reis Bóson Treinamentos 2013
  • 138. DATEDIFF ● Parte pode ser: Parte Abreviação Ano yy, yyyy Mês mm, m Dia dd, d Semana wk, ww Hora hh Minuto mi, n Segundo ss, s Milisegundo ms Fábio dos Reis Bóson Treinamentos 2013
  • 139. DATEDIFF - Exemplos ● SELECT DATEDIFF(hh, getutcdate(), getdate()) AS 'UTC São Paulo‘ ● SELECT DATEDIFF(dd, getdate(), '1975-12-21') AS 'Dias que já vivi' Fábio dos Reis Bóson Treinamentos 2013
  • 140. Função DATEPART() ● Usada para retornar um parte de uma data ou hora, como o ano, dia, mês, minuto, hora, etc. ● Sintaxe: DATEPART(parte, data) ● Parte: mesmos parâmetros apresentados em DATEDIFF. ● Data: Data ou coluna que contém a data. Fábio dos Reis Bóson Treinamentos 2013
  • 141. DATEPART - Exemplo SELECT DATEPART(yyyy,Data_Pub) AS ‘Ano Lançamento’, DATEPART(mm, Data_Pub) AS ‘Mês’, DATEPART(dd, Data_Pub) AS ‘Dia’, FROM tbl_Livros WHERE ID_Livro = 1 Fábio dos Reis Bóson Treinamentos 2013
  • 142. Função DATEADD() ● Adiciona ou subtrai um intervalo de tempo específico de uma data. ● Sintaxe: DATEADD(parte, número, data) ● número é o intervalo a ser adicionado (ou subtraído, se for negativo). Fábio dos Reis Bóson Treinamentos 2013
  • 143. DATEADD – Exemplo: ● Um livro é lançado nos EUA em uma data, e será publicado aqui 50 dias depois. Determine essa data da publicação. SELECT DATEADD(dd,50,Data_Pub) AS ‘Data de Publicação em Português’ FROM tbl_Livros ● Data daqui a 20 dias: SELECT DATEADD(dd,20,GETDATE()) Fábio dos Reis Bóson Treinamentos 2013
  • 144. Função CONVERT() ● Função que converte uma expressão de um tipo de data para outro. ● Também pode ser usada para mostrar a data e a hora em formatos diferentes. ● Sintaxe: CONVERT(tipo_dados, expressão, estilo) ● tipo_dados – Especifica o tipo de dados alvo ● expressão – Valor a ser convertido ● estilo – Formato de saída Fábio dos Reis Bóson Treinamentos 2013
  • 145. CONVERT – Tabela de estilos Valor (aa) Valor (aaaa) Entrada/Saída Padrão 1 101 mm/dd/yy EUA 2 102 yy.mm.dd ANSI 3 103 dd/mm/yy Francês 4 104 dd.mm.yy Alemão 5 105 dd-mm-yy Italiano 8 108 hh:mm:ss 12 112 yymmdd ISO 6 106 dd mês yy Fábio dos Reis
  • 146. CONVERT - Exemplo Data em formato nacional: SELECT CONVERT(VARCHAR(10),GETDATE(),103)) Apenas a hora: SELECT CONVERT(VARCHAR(10),GETDATE(),108) Fábio dos Reis Bóson Treinamentos 2013