Você está na página 1de 12

LINGUAGEM SQL

Usado Banco de Dados AdventureWorks2017

I. INTRODUÇÃO

1. CRIAR BANCO DE DADOS PELA INTERFACE DO MSSMS


 Clicar com botão direito em Banco de Dados > Novo Banco de Dados

ou

 New Query (Nova Consulta) > create database “nome do banco de dados”;

2. EXCLUIR BANCO DE DADOS PELA INTERFACE DO MSSMS


 Clicar com botão direito no Banco de Dados criado > Delete

Ou

 New Query (Nova Consulta) > drop database “nome do banco de dados” > F5;

3. ABRIR BANCO DE DADOS EXISTENTE


 Clicar com botão direito em Banco de Dados > Restaurar Banco de Dados

II. USO DE COMANDOS

1. COMANDOS DIVERSOS
 SELECT – Selecionar Dados nas Tabelas

SELECT coluna1, coluna2 ou * (tudo)

FROM tabela

 DISTINCT – Omitir nomes duplicados numa coluna

SELECT DISTINCT coluna1, coluna2...

FROM tabela

 WHERE – Extrair alguns dados ou informações em particular das tabelas

SELECT coluna1, coluna2...

FROM tabela

WHERE condição

Nessas condições pode ser utilizadas os operadores aritméticos e até mesmo o “between” pra fazer comparação.

Obs.: BETWEEN usado dentro da condição (WHERE).

 COUNT – Determina a contagem das linhas da tabela selecionada com SELECT.

SELECT COUNT (*)

FROM tabela

WHERE condição

 TOP – Filtrar a quantidade de dados que é retornado num SELECT


SELECT TOP 10 * (seleciona as 10 primeiras linhas da tabela)

FROM tabela

 ORDER BY – Ordenar os resultados.

SELECT coluna1, coluna2...

FROM tabela

ORDER BY coluna1 asc/desc (ou varias colunas asc/desc individualmente)

 BETWEEN – Usado para encontrar um resultado entre um valor mínimo e um valor máximo.

Valor BETWEEN mínimo AND máximo ou

Valor NOT BETWEEN mínimo AND máximo

 IN – Usa-se junto como WHERE. Para verificar se um valor corresponde com qualquer valor passado na lista
de valores.

valor IN (valor1, valor2)

SELECT coluna1, coluna2...

FROM tabela

WHERE valor (seleciona coluna) IN (valor1, valor2... (seleciona os filtros daquela coluna a exibir))

Valor IN (SELECT valor FROM nomeDaTabela)

Ou

SELECT *

FROM tabel

WHERE coluna1 IN parâmetros da coluna a exibir.

 LIKE – Fazer uma busca de trechos (pedaços) dos nomes. Sendo no início (__%), qualquer parte (%__%) ou
no fim (%__).

SELECT coluna1, coluna2...

FROM tabela

WHERE coluna LIKE ‘(__%) ou (%__%) ou (%__)

 GROUP BY – Divide o resultado de sua pesquisa em grupos

SELECT coluna1, funçãoAgregação (MIN, MAX, SUM, AVG, COUNT...) da coluna2

FROM tabela

GROUP BY coluna1

 HAVING – É muito usado em junção com o GROUP BY para filtrar resultados de um agrupamento.
Basicamente funciona como um “WHERE” para dados agrupados.

SELECT coluna1, funçãoAgregação (MIN, MAX, SUM, AVG, COUNT...) da coluna2

FROM tabela

GROUP BY coluna1

HAVING condição
Obs: Diferença entre o HAVING e WHERE: O Having é aplicado depois que os dados já foram agrupados, enquanto o
WHERE é aplicado antes dos dados serem agrupados.

Ex.: Usando WHERE e HAVING

Saber quais nomes no sistema tem uma ocorrência maior que 10 vezes, porém somente onde o Título é “Mr.”

SELECT FirstName, COUNT (FirstName) AS “Quantidade”

FROM Person.Person

WHERE Title = ‘Mr.’

GROUP BY FirstName

HAVING COUNT (FirstName) > 10

 AS – Serve para renomear (dar um apelido) para uma coluna

 IN – Determina se determinado valor corresponde a qualquer valor em uma subconsulta ou lista.

SELECT *

FROM Person.Address

WHERE AddressID IN (1,2,3)

2. FUNÇÕES DE AGREGAÇÃO

Basicamente agregam ou combinam dados de uma tabela em um resultado só.

 MIN, MAX, SUM e AVG

SELECT sum, min, max ou avg (coluna)

FROM tabela

3. UNIÃO DE TABELAS
 INNER JOIN – União de tabelas que tem uma coluna em comum (chave estrangeira)
a) Junção de algumas colunas

SELECT X.coluna1tabela1, X.coluna2tabela1, Y.coluna1tabela2, Y.coluna2tabela2

FROM tabela1 X

INNER JOIN tabela2 Y, ON coluna em comum tabela1 = coluna em comum tabela2

Ex.: SELECT P.Name, P.ListPrice, PS.Name


FROM Production.Product P

INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID

b) Junção de todas as informações de duas tabelas (PRODUTO CARTESIANO)

SELECT *

FROM tabela1 X

INNER JOIN tabela2 Y, ON coluna em comum tabela1 = coluna em comum tabela2


Ex.: SELECT *
FROM Production.Product P

INNER JOIN Production.ProductSubcategory PS ON P.ProductSubcategoryID = PS.ProductSubcategoryID

 UNION – Combina dois ou mais resultados de um SELECT em um resultado apenas.

SELECT coluna1, coluna2

FROM tabela1

UNION

SELECT coluna1, coluna2

FROM tabela2

Ex.: SELECT FirstName, MiddleName, LastName


FROM Person.Person
WHERE FirstName = 'Dylan'
UNION
SELECT FirstName, MiddleName, LastName
FROM Person.Person
WHERE LastName = 'Camargo'

Obs. No UNION os dados duplicados após a união são removidos.

4. TIPOS DE JOINs
 INNER JOIN – Retorna apenas os resultados que correspondem (existem) tanto na tabela A como tabela B
 FULL OUTER JOIN – Retorna um conjunto de todos os registros correspondentes da TabelaA e TabelaB
quando são iguais. E, além disso, se não houver valores correspondentes, ele simplesmente irá preencher
esse lado com “NULL”.
 LEFT OUTER JOIN - Retorna um conjunto de todos os registros da TabelaA, e, além disso, os registros
correspondentes (quando disponíveis) na TabelaB. Se não houver registros correspondentes ele
simplesmente vai preencher com “NULL”.

5. DATEPART
Essa função retorna um Inteiro que representa o datepart especificado do argumento date especificado.

SELECT coluna1, DATEPART (MONTH ou YEAR ou DAY, coluna2)

FROM tabela

Ex.: SELECT SalesOrderID, DATEPART(MONTH, OrderDate) AS MES


FROM Sales.SalesOrderHeader

6. MANIPULAÇÃO DE STRING
 Operações em String (mais usadas)

SELECT CONCAT (coluna1, ‘ ‘, coluna2)  Unir conteúdos de duas colunas


FROM tabela

SELECT UPPER (coluna1)  Transformar itens da coluna em maiúsculas


FROM tabela
SELECT LOWER (coluna1)  Transformar itens da coluna em minúsculas
FROM tabela

SELECT LEN (coluna)  Contagem de caracteres dos itens da coluna


FROM tabela

SELECT REPLACE (coluna1, ‘x’, ‘y’)  Substituir na coluna selecionada o caractere ‘x’ pelo caractere ‘y’
FROM tabela

7. OPERAÇÕES MATEMÁTICAS

SELECT coluna1 + - * / coluna2

FROM tabela

8. SUBQUERY (SUBSELECT)
Selecionar dados com informações retiradas de duas tabelas tendo uma coluna em comum.

Ex.: Encontre todos os endereços que estão no Estado de ‘Alberta’. (Tabelas: Person.Adress e Person.StateProvince)
SELECT *
FROM Person.Address
WHERE StateProvinceID IN (SELECT StateProvinceID FROM Person.StateProvince WHERE Name = 'Alberta')

Ou

SELECT *
FROM Person.Address PA
INNER JOIN Person.StateProvince PS ON PA.StateProvinceID = PS.StateProvinceID AND PS.Name =
'Alberta'

Obs.: segunda opção usando INNER JOIN.

SELECT coluna1 ou * (coluna ou tabela da 1ª condição)

FROM tabela1

WHERE colunaEmComum IN (SELECT colunaEmComum FROM tabela2 WHERE condição2)

Usando Banco de Dados Northwind

9. SELF JOIN
É uma forma de você agrupar ou ordenar dados dentro de uma mesma tabela.

SELECT A.coluna1, A.coluna2, B.coluna1, B.coluna2

FROM tabela1 A, tabela1 B

WHERE condição

Ex.: SELECT A.ProductID, A.Discount, B.ProductID, B.Discount


FROM [Order Details] A, [Order Details] B
WHERE A.Discount = B.Discount
III. TIPOS DE DADOS

 BOLEANOS
 CARACTERE
 NÚMEROS
 TEMPORAIS

1. BOLEANOS
Por padrão é inicializado como NULO, e pode receber tanto 1 ou 0.
 BIT

2. CARACTERES
 Tamanho FIXO – char: permite inserir até uma quantidade fixa de caracteres mas sempre ocupa na
memória todo o espaço reservado. Ex: char(20) – ‘saullo’, ocupou 20 espaços na memória apesar de usar
6.
 Tamanho VARIÁVEL – varchar: permite inserir até uma quantidade que for definida, porém só ocupará o
espaço utilizado. Ex: varchar(20) – ‘saullo’, ocupou apenas 6 espaços na memória apesar de reservar 20.

3. NÚMEROS
 VALORES EXATOS
 TINYINT: Número inteiro “muito pequeno”. Não tem valor fracionado. Ex.: 1, 1273, 542698
 SMALLINT: Mesma coisa porém com limite maior.
 INT: Mesma coisa porém com limite maior.
 BIGINT: Mesma coisa porém com limite maior.
 NUMERIC ou DECIMAL: valores exatos porém permite ter parte fracionada, onde tbm pode ser
especificado a precisão (total de dígitos) e escala (número de dígitos na parte fracional. Ex.: NUMERIC
(5,2) = 113,44

 VALORES APROXIMADOS
 REAL: Tem precisão aproximada de até 15 dígitos.
 FLOAT: mesmo conceito do REAL

4. TEMPORAIS
 DATE: armazena data no formato aaaa/mm/dd
 DATETIME: armazena data e horas no formato aaaa/mm/dd:hh:mm:ss
 DATETIME2: data e horas com adição de milissegundos no formato aaaa/mm/dd:hh:mm:sssssss
 SMALLDATETIME: data e hora respeitando o limite entre ‘1900-01-01:00:00:00’ até ‘2079-06-
06:23:59:59’.
 TIME: horas, minutos, segundos e milissegundos respeitando o limite entre ‘00-00-00:00:00:00’ até ‘23-
00-00:00:00:00’
 DATETIMEOFFSET: permite armazenar informações de data e horas incluindo o fuso horário.

IV. TABELAS

1. CHAVE PRIMÁRIA (primary key) E ESTRANGEIRA (FOREIGN KEY)


 CHAVE PRIMÁRIA
- É basicamente uma coluna ou grupo de colunas usada para identificar unicamente uma linha em
uma tabela.
- Você consegue criar essas chaves primárias através de restrições (constraints), que são regras que
você define quando está criando uma coluna.
- Assim, quando se faz isso, está criando um índice único para aquela coluna ou grupo de colunas.

CREATE TABLE nome_Tabela (

nomeColuna1 tipoDeDados PRIMARY KEY

nomeColuna2 tipoDeDados...

 CHAVE ESTRANGEIRA
- É uma coluna ou grupo de colunas em uma tabela que identifica unicamente uma linha em outra
tabela.
- Uma chave estrangeira é definida em uma tabela onde ela é apenas uma referência e não contém
todos os dados ali.
- Resumo: uma chave estrangeira é uma coluna que é uma chave primária em outra tabela.
- A Tabela que contém a chave estrangeira é chamada de Tabela Referenciadora ou Tabela Filho. A
outra tabela ao qual a chave estrangeira é referenciada é chamada de tabela referenciada ou tabela
pai.
- Uma tabela pode ter mais de uma chave estrangeira.
- No SQL Server você define uma chave estrangeira através de um “Foreign Key Constraint”
(Restrição de chave estrangeira).
- Uma Restrição de chave estrangeira indica que os valores em uma coluna ou grupo de colunas na
tabela filho correspondem aos valores na tabela pai.
- Nos podemos entender que uma chave estrangeira mantem a “integridade referencial”.

V. CREATE TABLE

1. SINTAXE

CREATE TABLE nomeTabela (

coluna1 tipo restricaoDaColuna,

coluna2 tipo restricaoDaColuna,

coluna3 tipo,

... )

2. TIPOS DE RESTRIÇÕES
Principais tipos de restrições que podem ser aplicadas nas criações das colunas
 NOT NULL – Não permite nulos
 UNIQUE – Força que todos os valores de uma coluna sejam diferentes
 PRIMARY KEY (PK) – Junção de NOT NULL e UNIQUE
 FOREIGN KEY (FK) – Identifica unicamente uma linha em outra tabela
 CHECK – Força uma condição específica em uma coluna
 DEFAULT – Força um valor padrão quando nenhum valor é passado
VI. INSERT INTO
Pode ser usado para inserir dados em uma tabela existente ou criar uma tabela a partir do comando INSERT
INTO
1. SINTAXE
 INSERT INTO nomeTabela (coluna1, coluna2, ...)
VALUES (valor1, valor2)

VALUES (valor1, valor2)

VALUES (valor1, valor2)

 INSERT INTO tabelaA (coluna1)  Inserir uma coluna de uma tabela em uma coluna de outra
tabela.
SELECT coluna2
FROM tabelaB

VII. UPDATE
Atualização de linhas do Banco de Dados
1. SINTAXE
 UPDATE nomeTabela
SET coluna1 = valor1
Coluna2 = valor2
WHERE condicao

Ex.: UPDATE Aula


SET Nome = 'mudei'
WHERE Id = 2;

VIII. DELETE
Apagar linhas do banco de dados
1. SINTAXE
 DELETE FROM nomeTabela
WHERE condição

Obs.: caso não coloque condição nenhuma apagará toda a tabela.

IX. ALTER TABLE


Alterar a estrutura de uma tabela.
1. SINTAXE

ALTER TABLE nomeDaTabela

ACAO

2. O QUE PODE SER FEITO


 Add, Remover, ou alterar uma coluna

Ex.: ALTER TABLE youtube  adicionar coluna


ADD ativo BIT

ALTER TABLE youtube  alterar limite da variavel


ALTER COLUMN categoria VARCHAR(300) NOT NULL
EXEC sp_rename 'nomeTabela.nomeColunaAtual', 'nomeColunaNova', 'COLUMN'

Obs.: Procedure específico p/alterar nome da coluna

EXEC sp_rename 'nomeTabelaAtual', 'nomeTabelaNova'

Obs.: Procedure específico p/alterar nome da tabela

 Setar valores padrões para uma coluna


 Add ou Remover restrições de colunas
 Renomear uma tabela

X. DROP TABLE
Excluir uma Tabela inteira do Banco de Dados
1. SINTAXE

DROP TABLE nomeDaTabela

XI. TRUNCATE TABLE


Excluir o conteúdo de uma tabela.
1. SINTAXE

TRUNCATE TABLE nomeDaTabela

XII. CHECK CONSTRAINT


Criar restrições de valores que podem ser inseridos em uma coluna de uma tabela em banco de dados
quando você está criando uma nova tabela.
1. SINTAXE

Ex.: CREATE TABLE CarteiraMotorista2 (


Id INT UNIQUE,
Nome varchar(10) NOT NULL,
Idade INT CHECK (Idade >= 18)
);

XIII. VIEWS
Tabelas criadas para consulta onde você usa outras tabelas como base para criar uma nova tabela de
pesquisa com apenas dados específicos que você precisa
1. SINTAXE

CREATE VIEW [Nome_Exibição]

AS SELECT colunas

FROM tabela

WHERE condições

Ex.:
CREATE VIEW vw_LivroAutores
AS SELECT tbl_livros.Nome_Livro AS Livro, tbl_autores.Nome_Autor AS Autor
FROM tbl_livros INNER JOIN tbl_autores ON tbl_livros.ID_Autor = tbl_autores.ID_Autor
2. USANDO A VIEW CRIADA
a) SINTAXE
SELECT Livro, Autor
FROM vw_LivroAutores

3. ALTERAR VIEW
ALTER VIEW vw_LivroAutores
AS SELECT tbl_livros.Nome_Livro AS Livro, tbl_autores.Nome_Autor AS Autor, Preco_Livro AS Valor
FROM tbl_livros INNER JOIN tbl_autores ON tbl_livros.ID_Autor = tbl_autores.ID_Autor

XIV CAMPO CALCULADO

Cria uma coluna já parametrizada baseado na junção de duas outras colunas


CREATE TABLE Produtos
(
codProduto smallint,
NomeProduto varchar(20),
Preco money,
Quant smallint,
Total AS (Preco * Quant)
)

XV INDEX

Permite que as aplicações de Bancos de Dados encontrem os dados mais rapidamente, sem ter que ler a
tabela toda.

Obs.: Apenas criar indices para tabelas que recebam muitas consultas, pois levam mais tempo para serem
atualizadas.

CREATE INDEX nome_indice

ON nome_tabela (nome_coluna)

XVI REGRAS (RULES)

Configurações que permitem especificar como determinados parâmetros do banco de dados devem se
comportar, por exemplo, limitar faixas de valores nas colunas etc.

1. SINTAXE

CREATE RULE nome_regra AS parâmetros


CREATE RULE rl_preco AS @VALOR > 10.00

OBS.: A regra pode ser verificada no Banco de Dados > Programação > Regras

2. VINCULAR REGRA

EXECUTE SP_BINDRULE rl_preco, ‘ tbl_livros.Preco_Livro ‘


EXECUTE SP_BINDRULE rl_preco, 'tbl_livros.Preco_Livro'

OBS.: SP = Stored Procedure (procedimento armazenado)


BINDRULE = Vincula regra

XVII BACKUP

1. SINTAXE

BACKUP DATABASE nome_banco


TO DISK = ‘local_destino.bak’

XVIII WITH TIES

O WITH TIES permite retornar mais linhas com valores que correspondam à última linha no conjunto de
resultados limitado. Usado nos comandos TOP. Caso a última linha selecionada tenha mais valores iguais,
então retorna todas as linhas respectivas.

1. SINTAXE
Ex.:
SELECT TOP(5) WITH TIES nome_coluna1, nome_coluna2…
FROM nome_tabela
ORDER BY nome_coluna2

No passado, a gerência usava computadores que geravam “toneladas” de relatórios e


dados
sem direção. A gerência não tinha a capacidade de usar esses dados e relatórios
estrategicamente. A Implantação do business intelligence permitiu que os executivos
olhassem para as áreas que mereciam atenção e investigassem mais para identificar os
problemas com exatidão, bem como suas causas. Com isso encontrando imediatamente as
fontes dos problemas podendo avaliar soluções potenciais.

O resultado desse processo foi fascinante otimizando e melhorando muito as variáveis e


indicadores.

Você também pode gostar