146
SQL SQL Server Fábio dos Reis Bóson Treinamentos 2013

Sql com sql server básico - Bóson treinamentos

Embed Size (px)

DESCRIPTION

Apostila básica de SQL com SQL Server: Criação de bancos de Dados, Tabelas, inserção, atualização e exclusão de registros. Views, Backup, Stored Procedures, etc.

Citation preview

Page 1: Sql com sql server básico - Bóson treinamentos

SQL

SQL Server

Fábio dos Reis

Bóson Treinamentos 2013

Page 2: Sql com sql server básico - Bóson treinamentos

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

Page 3: Sql com sql server básico - Bóson treinamentos

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

Page 4: Sql com sql server básico - Bóson treinamentos

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

Page 5: Sql com sql server básico - Bóson treinamentos

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.

DROPExclui uma tabela inteira, uma exibição de uma tabela ou outro objeto no banco de dados.

Fábio dos Reis

Bóson Treinamentos 2013

Page 6: Sql com sql server básico - Bóson treinamentos

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

Page 7: Sql com sql server básico - Bóson treinamentos

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

Page 8: Sql com sql server básico - Bóson treinamentos

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

Page 9: Sql com sql server básico - Bóson treinamentos

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

Page 10: Sql com sql server básico - Bóson treinamentos

Composição de um Banco de Dados

● Tabelas● Campos (Colunas)● Registros (Linhas)

Fábio dos Reis

Bóson Treinamentos 2013

Page 11: Sql com sql server básico - Bóson treinamentos

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

Page 12: Sql com sql server básico - Bóson treinamentos

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

Page 13: Sql com sql server básico - Bóson treinamentos

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

Page 14: Sql com sql server básico - Bóson treinamentos

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

Page 15: Sql com sql server básico - Bóson treinamentos

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

Page 16: Sql com sql server básico - Bóson treinamentos

Criação de um Banco de Dados

Fábio dos Reis

Bóson Treinamentos 2013

Page 17: Sql com sql server básico - Bóson treinamentos

Criar Banco de Dados

CREATE DATABASE db_Biblioteca

ON PRIMARY (

NAME= db_Biblioteca,

FILENAME='C:\SQL\db_Biblioteca.MDF',

SIZE=6MB,

MAXSIZE=15MB,

FILEGROWTH=10%

)

Fábio dos Reis

Bóson Treinamentos 2013

Page 18: Sql com sql server básico - Bóson treinamentos

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

Page 19: Sql com sql server básico - Bóson treinamentos

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

Page 20: Sql com sql server básico - Bóson treinamentos

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

Page 21: Sql com sql server básico - Bóson treinamentos

SQL Constraints (Restrições)

Principais:

● NOT NULL● UNIQUE● PRIMARY KEY● FOREIGN KEY● CHECK● DEFAULT

Fábio dos Reis

Bóson Treinamentos 2013

Page 22: Sql com sql server básico - Bóson treinamentos

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

Page 23: Sql com sql server básico - Bóson treinamentos

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

Page 24: Sql com sql server básico - Bóson treinamentos

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

Page 25: Sql com sql server básico - Bóson treinamentos

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

Page 26: Sql com sql server básico - Bóson treinamentos

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

Page 27: Sql com sql server básico - Bóson treinamentos

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

Page 28: Sql com sql server básico - Bóson treinamentos

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

Page 29: Sql com sql server básico - Bóson treinamentos

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

Page 30: Sql com sql server básico - Bóson treinamentos

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

Page 31: Sql com sql server básico - Bóson treinamentos

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

Page 32: Sql com sql server básico - Bóson treinamentos

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

Page 33: Sql com sql server básico - Bóson treinamentos

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

Page 34: Sql com sql server básico - Bóson treinamentos

(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

Page 35: Sql com sql server básico - Bóson treinamentos

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

Page 36: Sql com sql server básico - Bóson treinamentos

ALTER TABLE - DROP

ALTER TABLE tbl_Livro

DROP COLUMN ID_Autor

Pode-se excluir uma constraint:

ALTER TABLE tabelaDROP CONSTRAINT nome_constraint

Fábio dos Reis

Bóson Treinamentos 2013

Page 37: Sql com sql server básico - Bóson treinamentos

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

Page 38: Sql com sql server básico - Bóson treinamentos

ALTER TABLE – ALTER COLUMN

ALTER TABLE tbl_Livro

ALTER COLUMN ID_Autor SMALLINT

Fábio dos Reis

Bóson Treinamentos 2013

Page 39: Sql com sql server básico - Bóson treinamentos

ALTER TABLE – ADD PK

ALTER TABLE ClientesADD 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

Page 40: Sql com sql server básico - Bóson treinamentos

DROP TABLE – Excluir tabela

DROP TABLE nome_tabela

DROP TABLE Clientes

Fábio dos Reis

Bóson Treinamentos 2013

Page 41: Sql com sql server básico - Bóson treinamentos

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

Page 42: Sql com sql server básico - Bóson treinamentos

Fábio dos Reis

Bóson Treinamentos 2013

Page 43: Sql com sql server básico - Bóson treinamentos

Inserir Dados

Inserir dados em uma tabela:

INSERT INTO tabela (coluna1, coluna2,...) VALUES (valor1, valor2,...)

Fábio dos Reis

Bóson Treinamentos 2013

Page 44: Sql com sql server básico - Bóson treinamentos

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

Page 45: Sql com sql server básico - Bóson treinamentos

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

Page 46: Sql com sql server básico - Bóson treinamentos

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

Page 47: Sql com sql server básico - Bóson treinamentos

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

Page 48: Sql com sql server básico - Bóson treinamentos

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

Page 49: Sql com sql server básico - Bóson treinamentos

TRUNCATE TABLE

SELECT COUNT(*) AS Tabela_Antes FROM Clientes

GO

TRUNCATE TABLE ClientesGO

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

Page 50: Sql com sql server básico - Bóson treinamentos

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

Page 51: Sql com sql server básico - Bóson treinamentos

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

Page 52: Sql com sql server básico - Bóson treinamentos

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

Page 53: Sql com sql server básico - Bóson treinamentos

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

Page 54: Sql com sql server básico - Bóson treinamentos

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

Page 55: Sql com sql server básico - Bóson treinamentos

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

Page 56: Sql com sql server básico - Bóson treinamentos

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 SensitiveFábio dos Reis

Bóson Treinamentos 2013

Page 57: Sql com sql server básico - Bóson treinamentos

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

Page 58: Sql com sql server básico - Bóson treinamentos

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

Page 59: Sql com sql server básico - Bóson treinamentos

SELECT DISTINCT

● Algumas colunas podem conter valores duplicados. Para exibir apenas valores diferentes (“distintos”), use a palavra-chave DISTINCT:

Sintaxe:

SELECT DISTINCT colunasFROM tabela

SELECT DISTINCT ID_Autor

FROM tbl_Livro

Fábio dos Reis

Bóson Treinamentos 2013

Page 60: Sql com sql server básico - Bóson treinamentos

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

Page 61: Sql com sql server básico - Bóson treinamentos

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

Page 62: Sql com sql server básico - Bóson treinamentos

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

Page 63: Sql com sql server básico - Bóson treinamentos

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

Page 64: Sql com sql server básico - Bóson treinamentos

SELECT TOP● Usado para especificar o número de registros a retornar.● Útil para tabelas com muitos registros.

SELECT TOP número|percentual colunasFROM 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

Page 65: Sql com sql server básico - Bóson treinamentos

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

Page 66: Sql com sql server básico - Bóson treinamentos

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

Page 67: Sql com sql server básico - Bóson treinamentos

SQL Alias

● Pode-se dar um nome diferente a uma coluna ou tabela em uma consulta.

SELECT colunasAS nome_alias

FROM tabela

SELECT Nome_Livro

AS Livro

FROM tbl_LivroFábio dos Reis

Bóson Treinamentos 2013

Page 68: Sql com sql server básico - Bóson treinamentos

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 tabela1UNIONSELECT colunas FROM tabela2

SELECT ID_Autor FROM tbl_autores UNION

SELECT ID_Autor FROM tbl_Livro

Fábio dos Reis

Bóson Treinamentos 2013

Page 69: Sql com sql server básico - Bóson treinamentos

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 colunasINTO nova_tabelaFROM tabela_atual

SELECT Nome_Livro,ISBNINTO Livro_ISBNFROM tbl_LivroWHERE ID_Livro > 2

Fábio dos Reis

Bóson Treinamentos 2013

Page 70: Sql com sql server básico - Bóson treinamentos

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

Page 71: Sql com sql server básico - Bóson treinamentos

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

Page 72: Sql com sql server básico - Bóson treinamentos

CREATE INDEX

CREATE INDEX nome_índiceON nome_tabela (nome_coluna)

CREATE INDEX ind_nome_livro

ON tbl_Livro(Nome_Livro)

Fábio dos Reis

Bóson Treinamentos 2013

Page 73: Sql com sql server básico - Bóson treinamentos

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

Page 74: Sql com sql server básico - Bóson treinamentos

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

Page 75: Sql com sql server básico - Bóson treinamentos

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

Page 76: Sql com sql server básico - Bóson treinamentos

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

Page 77: Sql com sql server básico - Bóson treinamentos

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

Page 78: Sql com sql server básico - Bóson treinamentos

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.00Fábio dos Reis

Bóson Treinamentos 2013

Page 79: Sql com sql server básico - Bóson treinamentos

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

Page 80: Sql com sql server básico - Bóson treinamentos

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

Page 81: Sql com sql server básico - Bóson treinamentos

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

Page 82: Sql com sql server básico - Bóson treinamentos

Usando padrões

● Criar um padrão:● CREATE DEFAULT DF_Sobrenome_Autor AS

'Silva'

Fábio dos Reis

Bóson Treinamentos 2013

Page 83: Sql com sql server básico - Bóson treinamentos

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

Page 84: Sql com sql server básico - Bóson treinamentos

Desaplicando Padrões

EXEC SP_UNBINDEFAULT 'tbl_autores.sobreNome_Autor‘

tbl_autores = Tabela

sobreNome_Autor = coluna

Fábio dos Reis

Bóson Treinamentos 2013

Page 85: Sql com sql server básico - Bóson treinamentos

Backup do Banco de Dados

BACKUP DATABASE banco_de_dados

TO DISK = 'X:\CAMINHO\banco_de_dados.bak'

WITH FORMAT;

GOExemplo:

BACKUP DATABASE db_Biblioteca

TO DISK = 'C:\SQL\db_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

Page 86: Sql com sql server básico - Bóson treinamentos

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

Page 87: Sql com sql server básico - Bóson treinamentos

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

Page 88: Sql com sql server básico - Bóson treinamentos

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

Page 89: Sql com sql server básico - Bóson treinamentos

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

Page 90: Sql com sql server básico - Bóson treinamentos

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_AutorFábio dos Reis

Bóson Treinamentos 2013

Page 91: Sql com sql server básico - Bóson treinamentos

Usando a View Criada

Select Livro, Autor

FROM vw_LivrosAutores

--WHERE Livro LIKE 'S%'

Fábio dos Reis

Bóson Treinamentos 2013

Page 92: Sql com sql server básico - Bóson treinamentos

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

Page 93: Sql com sql server básico - Bóson treinamentos

VIEWS - Exclusão

DROP VIEW nome_exibição

DROP VIEW vw_LivrosAutores

Fábio dos Reis

Bóson Treinamentos 2013

Page 94: Sql com sql server básico - Bóson treinamentos

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

Page 95: Sql com sql server básico - Bóson treinamentos

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

Page 96: Sql com sql server básico - Bóson treinamentos

INNER JOIN

SELECT colunasFROM tabela1INNER JOIN tabela2ON 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

Page 97: Sql com sql server básico - Bóson treinamentos

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

Page 98: Sql com sql server básico - Bóson treinamentos

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

Page 99: Sql com sql server básico - Bóson treinamentos

INNER JOIN

Fábio dos Reis

Bóson Treinamentos 2013

Page 100: Sql com sql server básico - Bóson treinamentos

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

Page 101: Sql com sql server básico - Bóson treinamentos

LEFT JOIN

SELECT colunaFROM tabela_esqLEFT (OUTER) JOIN tabela_dirON 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

Page 102: Sql com sql server básico - Bóson treinamentos

LEFT JOIN

Fábio dos Reis

Bóson Treinamentos 2013

Page 103: Sql com sql server básico - Bóson treinamentos

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

Page 104: Sql com sql server básico - Bóson treinamentos

LEFT JOIN excluindo correspondências

Fábio dos Reis

Bóson Treinamentos 2013

Page 105: Sql com sql server básico - Bóson treinamentos

RIGHT JOIN

SELECT colunasFROM tabela_esqRIGHT (OUTER) JOIN tabela_dirON 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

Page 106: Sql com sql server básico - Bóson treinamentos

RIGHT JOIN

Fábio dos Reis

Bóson Treinamentos 2013

Page 107: Sql com sql server básico - Bóson treinamentos

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 NULLFábio dos Reis

Bóson Treinamentos 2013

Page 108: Sql com sql server básico - Bóson treinamentos

RIGHT JOIN excluindo correspondências

Fábio dos Reis

Bóson Treinamentos 2013

Page 109: Sql com sql server básico - Bóson treinamentos

FULL JOIN

SELECT colunasFROM tabela1FULL (OUTER) JOIN tabela2ON tabela1.coluna=tabela2.coluna

Fábio dos Reis

Bóson Treinamentos 2013

Page 110: Sql com sql server básico - Bóson treinamentos

FULL JOIN

Fábio dos Reis

Bóson Treinamentos 2013

Page 111: Sql com sql server básico - Bóson treinamentos

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

Page 112: Sql com sql server básico - Bóson treinamentos

FULL JOIN excluindo correspondências

Fábio dos Reis

Bóson Treinamentos 2013

Page 113: Sql com sql server básico - Bóson treinamentos

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

Page 114: Sql com sql server básico - Bóson treinamentos

CROSS JOIN

A

B

C

1

2

3

tbl_Livro tbl_autores

Fábio dos Reis

Bóson Treinamentos 2013

Page 115: Sql com sql server básico - Bóson treinamentos

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

Page 116: Sql com sql server básico - Bóson treinamentos

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

Page 117: Sql com sql server básico - Bóson treinamentos

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

Page 118: Sql com sql server básico - Bóson treinamentos

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

Page 119: Sql com sql server básico - Bóson treinamentos

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

Page 120: Sql com sql server básico - Bóson treinamentos

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

Page 121: Sql com sql server básico - Bóson treinamentos

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

Page 122: Sql com sql server básico - Bóson treinamentos

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

Page 123: Sql com sql server básico - Bóson treinamentos

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

Page 124: Sql com sql server básico - Bóson treinamentos

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

Page 125: Sql com sql server básico - Bóson treinamentos

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

Page 126: Sql com sql server básico - Bóson treinamentos

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

Page 127: Sql com sql server básico - Bóson treinamentos

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

Page 128: Sql com sql server básico - Bóson treinamentos

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

Page 129: Sql com sql server básico - Bóson treinamentos

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

GOFábio dos Reis

Bóson Treinamentos 2013

Page 130: Sql com sql server básico - Bóson treinamentos

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

Page 131: Sql com sql server básico - Bóson treinamentos

Excluir um SP

Use o comando DROP:

DROP PROCEDURE Nome_do_SP

Fábio dos Reis

Bóson Treinamentos 2013

Page 132: Sql com sql server básico - Bóson treinamentos

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

Page 133: Sql com sql server básico - Bóson treinamentos

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

Page 134: Sql com sql server básico - Bóson treinamentos

Tipos de dados – Data e Hora

Tipo de dados Formato Intervalo PrecisãoTamanho 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

Page 135: Sql com sql server básico - Bóson treinamentos

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

Page 136: Sql com sql server básico - Bóson treinamentos

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

Page 137: Sql com sql server básico - Bóson treinamentos

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

Page 138: Sql com sql server básico - Bóson treinamentos

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

Page 139: Sql com sql server básico - Bóson treinamentos

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

Page 140: Sql com sql server básico - Bóson treinamentos

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

Page 141: Sql com sql server básico - Bóson treinamentos

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_LivrosWHERE ID_Livro = 1

Fábio dos Reis

Bóson Treinamentos 2013

Page 142: Sql com sql server básico - Bóson treinamentos

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

Page 143: Sql com sql server básico - Bóson treinamentos

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())

● Data 20 dias antes de 01/04/2013

SELECT DATEADD(dd,-20,'20130401')

Fábio dos Reis

Bóson Treinamentos 2013

Page 144: Sql com sql server básico - Bóson treinamentos

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

Page 145: Sql com sql server básico - Bóson treinamentos

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

Page 146: Sql com sql server básico - Bóson treinamentos

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