Você está na página 1de 86

MS SQL

Database: É uma coleção de dados relacionados que podem ser facilmente acessados.
O database permite armazenamento regular e simplifica o gerenciamento de dados
Lista de Contato, que contêm nome, telefone, e-mail, etc.
Lista de tarefas pendentes: permite criar, reagendar e excluir
Data: Coleção de fatos como números, palavras, medidas, sons, vídeos, imagens, etc.
Exemplo de dados: 1 pessoa tem diversos dados (idade, peso, altura, cor, nacionalidade).
Exemplo empresa: Facebook Dados pessoais, imagens, posts, comentários.

DBMS: Database Management Studio é um conjunto de programas que permite seus


usuários acessar bancos de dados, manipular dados e ajuda na representação dos dados.
Exemplo: Uma pessoa (cliente) quer um livro e pede a um bibliotecário (DBMS) e busca o
livro, se ele estiver disponível que você quer na estante (Database)

SSMS: SQL Server Management Studio


SQL: é a linguagem padrão para bancos de dados relacional
Select * from tableUsers
Permite usuários a acessares dados em bancos de dados relacionais
Permite que os usuários descrevam os dados
Permite que os usuários definam os dados no banco de dados e os manipulem.
Permitem integrar com outras linguagens outros módulos de SQL, bibliotecas e pré-
compiladores.
Table: Os dados e informações de dados são armazenados nestas tabelas. As tabelas são
identificáveis exclusivamente por seus nomes. E são compostas por colunas e linhas. As
colunas possuem os nomes das colunas, o tipo de dados e quaisquer outros atributos da
coluna. As linhas contêm os registros ou dados das colunas.
Normalização
1NF, 2NF, 3NF
A normalização dos bancos é uma abordagem sistemática de decompor tabelas para
eliminar a redundância de dados. A normalização é usada pra eliminar dados redundantes e
garantir que as dependências de dados façam sentido.
Sem Normalização, os sistemas de banco de dados podem ser imprecisos, lentos e
ineficientes e não produzir os dados que você espera.
O objetivo dos formulários normais é organizar a estrutura do banco de dados de
modo que sejam em conformidade com as regras da primeira forma normal, depois
da segunda forma normal e da terceira forma normal. Ainda temos a quarta, quinta
forma normal.
A terceira forma normal inclui todas as regras da segunda forma normal e a segunda
possui todas as regras da primeira forma normal.

1FN: Define as regras básicas para um banco de dados organizado nesta forma
normal.
- Nesta forma, uma tabela deve ter as seguintes regras:
- Os dados em cada coluna devem ter apenas um valor atômico único.
- Cada conjunto de dados deve ser relacionado deve ser identificado com uma chave
primária
- Todas as colunas na tabela devem ter nomes únicos.
Sem o 1NF seria difícil lidar com os dados específicos da tabela de inserção,
atualização e exclusão. A possibilidade de perda de dados é muito alta com milhares
de linhas.
2NF
Todas as regras da 1NF.
Cada conjunto de dados relacionados deve ser armazenado em tabelas separadas.

Se não aplicarmos a 2NF iremos gerar repetições de dados. Dados de repetição vão causar
desperdício em disco, dados desnecessários, sistema lento.
3NF
Todas as regras da 2NF
A tabela não deve conter colunas que não sejam totalmente dependentes da chave
primária.
Criando um banco de dados no MS SQL
Ao acessar o SQL Query click com o botão direito cobre a pasta Banco de Dados na área de
pesquisador de objetos e selecione Novo Banco de dados. Em seguida escolha um título e
clique em ok. Você também pode criar um banco de dados digitando uma consulta: create
database nomedobanco e execute (F5). Atualize e você verá o banco de dados novo.

Para renomear um banco de dados digite na consulta:


alter database nomedobanco modify name=novonome

Excluir banco de dados:


Selecione com botão direito e excluir, ou com uma pesquisa.

Drop database nomedobanco


O SQL não permite excluir uma tabela se ela estiver em uso em outra instância.

Criando uma tabela no SQL


Expanda o database e na pasta Tabela clique com o botão direito e selecione Novo > Tabela.
Em seguida nomeie as colunas e os tipos de dados. Deixe a opção permitir nulos desativada.
Selecione um elemento para ter a chave primária (PK) e depois salve o trabalho clicando na
aba com o botão direito. Feito isso atualizamos o Pesquisador de Objetos, clicamos no nosso
banco de dados, na pasta Tabelas, depois em DBO.Tabelaxxx, encontre a pasta Colunas e
veremos um item com a PK.

Para renomear uma tabela com uma consulta:


Use Company
Go
Exec sp_rename 'Employees', 'Funcionários'
Depois atualize (F5) e verifique se foi renomeado.
Aula 11 – Tipos de Dados

Use Company
Go

Create Table tableEmployees(


EmployeeID int primary key Not Null,
EmployeeName varchar(50) Not Null,
Phone int Not Null,
DepID int Not Null,
Salary Decimal(10,2) Default 3000.00
)

A chave primária identifica de forma única cada linha registro em uma tabela de banco de
dados. Uma PK devem restringir valores únicos e não podem ter valores NULL. Neste
exemplo o funcionário ID foi definido como chave primária.
Create Table tableEmployees(
EmployeeName varchar(50) Not Null,
Phone int Not Null,
DepID int NotNull,
)
Chave Estrangeira (Foreign Key)
A Chave Estrangeira (FK) identifica de forma única uma linha e registro em qualquer outra
tabela do banco de dados. Uma FK é usada para vincular 2 tabelas. Também chamada de
Chave de Referência. Você deve inserir onde se torna em uma FK. É uma coluna ou uma
combinação de várias tabelas.

Uma chave estrangeira é uma PK de uma tabela que por sua vez é adicionada em outra tabela, para
elas conversarem esta PK irá para a segunda tabela como FK.
Unique Constraint (Restrições Únicas)
A restrição Unique garante que todos os valores em uma coluna sejam diferentes e impede
que dois registros tenham valores idênticos em uma coluna especifica.

Use Company
Go

Alter Table tableEmployees


Add Constraint U_Phone
Unique(Phone)
Check Constraints (Restrições Check)
As restrições Check garantem aque todos os valores em uma coluna satisfaçam certas condições. Se
a condição for avaliada como falsa ela não entra na tabela.

Neste exemplo os funcionários NÃO PODEM ter menos de 18 anos.


É possível adicionar várias restrições na mesma coluna.

Como excluir uma restrição:


Insert (Inserir)
Esta instrução é usada para inserir novas linhas ou registros em uma tabela.
Existem duas formas de inserir.
Graficamente, não recomendada
Através de Consulta
Update:
Não recomendável graficamente, preferível por meio de consulta.
Update tableName
Set Comumn1=NewValue
Comumn2=NewValue2
Where

Se quiser alterar mais algum dato para este funcionário adiciono uma vírgula e o novo dado.
Para DELETAR dados de uma Tabela:
Delete tableName
Where
Criando um Banco de Dados para Teste:
USE [master]
GO

CREATE DATABASE [SQLTestDB]


GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')


INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest


GO
Para fazer Backup no MS SQL:
Para fazer backup do banco de dados, siga estas instruções:
Inicie o SSMS (SQL Server Management Studio) e conecte-se à instância do SQL Server.
Expanda o nó Bancos de Dados no Pesquisador de Objetos.
Clique com o botão direito do mouse no banco de dados, passe o cursor sobre Tarefas e
clique em Fazer Backup.
Em Destino, confirme se o caminho do backup está correto. Se for necessário alterá-lo,
clique em Remover para excluir o caminho existente e em Adicionar para digitar outro.
É possível usar as reticências para navegar para um arquivo específico.
Clique em OK para fazer backup do banco de dados.

Outra alternativa é executar o seguinte comando Transact-SQL para fazer backup do banco de
dados:
Restaurar um backup Para restaurar o banco de dados, faça o seguinte: Inicie o SSMS (SQL
Server Management Studio) e conecte-se à instância do SQL Server. Clique com o botão
direito do mouse no nó Bancos de Dados no Pesquisador de Objetos e clique em Restaurar
Banco de Dados... .

Clique em Dispositivo: e, em seguida, clique nas reticências (…) para localizar o arquivo de
backup. Clique em Adicionar e navegue para o local do arquivo .bak. Clique no arquivo .bak
e em OK. Clique em OK para fechar a caixa de diálogo Selecionar dispositivos de backup.
Clique em OK para restaurar o backup do banco de dados.
Select * From tableName
Recupera todas as colunas da tabela

Use Company
Go
Select * from tableEmployees

--First Record
Insert Into tableEmployees
Values(1002, 'Joseph', 44667578,27,3)

--Second Record
Insert Into tableEmployees
Values(1003, 'Jane', 446656321,25,1)

--Third Record
Insert Into tableEmployees
Values(1004, 'Mark', 44123221,30,1)
Select colums As aliasName from tableName
Renomeia coluna temporariamente dando outro nome

Renomeia uma tabela temporariamente dando outro nome

Use Company
Go
Select Employee.EmployeeName, Employee. Phone, Employee.Age
From tableEmployees as Employee
Recuperando Dados

Ex: Usando a tabela AdventureWorks2017 digite na Consulta/Querry

Use AdventureWorks2017

Go

Select *

From Person.Person

Where FirstName = 'Terri'

Veremos que temos 2 funcionários chamados Terry.


> Para verificar o operador da esquerda é maior que o operador da direita.
Se sim a condição se torna TRUE
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID > 2

< Para verificar o operador da esquerda é menor que o operador da direita.


Se sim a condição se torna TRUE
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID < 2
>= Para verificar o operador da esquerda é maior ou igual que o operador da direita.
Se sim a condição se torna TRUE
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID > 2

<= Para verificar o operador da esquerda é menor ou igual que o operador da direita.
Se sim a condição se torna TRUE
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID < 2

<> Para verificar se os valores de dois operandos são iguais ou não. Se são diferentes ou não
iguais sim a condição se torna TRUE
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID < 2
Exemplo para uma Querry (Consulta) que encontre o primeiro e último nome especificado.
Use AdventureWorks2017
Go
Select *
From Person.Person
Where FirstName = 'Dylan' and LastName = 'Miller'

Exemplo para uma Querry (Consulta) que encontre o primeiro ou último nome especificado.
Use AdventureWorks2017
Go
Select *
From Person.Person
Where FirstName = 'Dylan' or LastName = 'Miller'
Between para verificar se o operando está em uma lista de alcance. Por exemplo ID de 1 a 5.

Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID between 1 and 5

In para verificar se o operando está em uma lista de alcance. Por exemplo ID de 1, 2 e 5. Se


sim, irá retornar TRUE.

Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID IN (1,2,5)

Exists para verificar na subconsulta um ou mais registros. Se sim retorna TRUE.

Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID Exists 1
Restringir (Distinct) Para eliminar registros duplicados.
Use AdventureWorks2017
Go
Select Distinct PersonType
From Person.Person

Use AdventureWorks2017
Go
Select Distinct PersonType, FirstName from Person.Person
Select Top 20 * from Person.Person
Use AdventureWorks2017
Go

Select Distinct PersonType, FirstName from Person.Person


Select Top 20 * from Person.Person

-- Ascending Sorting
Select FirstName, MiddleName, LastName
From Person.Person Order by FirstName ASC

-- Descending Sorting
Select FirstName, MiddleName, LastName
From Person.Person Order by FirstName DESC
From Person.Person Order By FirstName DESC
Select Shelf, sum (Quantity)
from Production.ProductInventory
Group By Shelf
WILDCARDS (Operadores Coringa)
Usados para pesquisar dados em uma tabela. % _
% representa 0, 1 ou vários caracteres
_ representa um único número ou caractere.

Neste exemplo vamos localizar todos os termos que terminem com a letra ‘A’.
Use AdventureWorks2017
Go
-- Finds the values that starts with 'ang'
Select * from Person.Person where FirstName Like 'ang%'

Use AdventureWorks2017
Go
-- Finds the values that ends with 'inda'
Select * from Person.Person where FirstName Like 'inda%'

Use AdventureWorks2017
Go
-- Finds the values that have with 'inda' in any position
Select * from Person.Person where FirstName Like '%inda%'
Use AdventureWorks2017
Go
--Finds six letter names ending whit 'inda
Select * from Person.Person Where FirstName Like '_inda'

Use AdventureWorks2017
Go
--Finds first names starting with letter ‘a’, letter ‘b’ or letter ‘c’
Select * from Person.Person Where FirstName Like '[abc%]%'

Use AdventureWorks2017
Go
--Not Like
Select * from Person.Person Where FirstName Not Like '[a-c%]%'
Indica todos os primeiros nomes, exceto os que se iniciam com a letra ‘A’
Select * from Person.Person Where FirstName Not Like ‘%a%’
--Para Inserir o nome longo na tabela e não apenas sua sigla.
Use Company
Go
Select DepID, DepartamentName from tabelaDepartments
Case
When DepartamentName='IT' Then 'INFORMATION TECHNOLOGY'
When DepartamentName='HR' Then 'HUMAN RESOURCES'
When DepartamentName='FI' Then 'FINANCIAL INSTITUTION'
END As 'Departament Long Name'
from tableDepartaments
Funções de Conversão
Convertem uma função de qualquer tipo para uma especificada. Funções Convert() e Cast()
Use AdventureWorks2017
Go
--Usando a função Convert para converter para Inteiro
Select Convert(int, 5.45) as NumeroInteiro
--Usando a função Convert para converter para Real
Select Convert(float,5,45) as NumeroReal
--Usando a função Convert para converter para String
Select Convert(varchar,5.45) as String
--Usando a função Convert para converter para Data
Select Convert(datetime,'2020-01-07') as TextToDateTime

--Nome, Ultimo nome, Data de Modificação, mês, dia e ano


Select FirstName, LastName, ModifiedDate,
Convert(varchar(11), ModifiedDate) DateToText
from Person.Person

--Usando a função CAST para converter para inteiro


Select Cast(5.45 as int) as NumeroInteiro
--Usando a função CAST para converter para String
Select Cast(5.45 as varchar) as Strings
--Usando a função CAST para converter para Real
Select Cast(5.45 as float) as NumeroReal
--Usando a função CAST para converter para Data
Select Cast('2020-01-07' as datetime) as TextTodatetimeWithCast

--Nome, Ultimo nome, Data de Modificação, mês, dia e ano


Select FirstName, LastName, ModifiedDate,
Cast(ModifiedDate as varchar(11)) DateToText
from Person.Person
https://www.ramosdainformatica.com.br/banco_de_dados/tudo-sobre-join-em-sql-guia-completo/

Inner Join = A join mais frequente.


Select columnName(s) From table1
INNER JOIN table2
ON table1.columnName = Table2.Column
Use AdventureWorks2017
Go

Select FirstName, LastName, EmailAddress from Person.Person


Join Person.EmailAddress
On Person.BusinessEntityID=EmailAddress.BusinessEntityID
Use AdventureWorks2017
Go
--Join
Select FirstName, LastName, EmailAddress from Person.Person
Join Person.EmailAddress
On Person.BusinessEntityID=EmailAddress.BusinessEntityID

--Left(Outer) Join
select * from Production.Product
select * from Sales.SalesOrderDetail
Use AdventureWorks2017

Go

--Right(Outer) Join

select * from Production.Product

select * from Sales.SalesOrderDetail

--Right(Outer) Join

select Name,SalesOrderDetailID

from Production.Product as P

Right Join Sales.SalesOrderDetail as S

On P.ProductID=S.ProductID

Select 238.121317
Potencial para recuperar volumes de dados muito grandes

Use AdventureWorks2017
Go
--Full(Outer) Join
--Product table is Left Table
--SalesOrderDetail table is the right Table.
select Name, SalesOrderDetailID
from Production.Product as P
Full Join Sales.SalesOrderDetail as S
On P.ProductID=S.ProductID
SELF JOIN vai funcionar exatamente como um INNER JOIN, porém, como o próprio
nome diz, a junção é feita na mesma tabela
--Finds products with the same
Select P1.Name, P2.Name, P1.ListPrice
from Production.Product P1
Join Production.Product P2
On P1.ListPrice = P2.ListPrice
And P1.ListPrice <> 0 -- Para excluir produtos sem preço
And P1.Name <> P2.Name -- Para excluir o mesmo produto
Order by ListPrice

--Self Join with Alias (apelido)


Select P1.Name, P2.Name, P1.ListPrice
from Production.Product as P1, Production.Product as P2
Where P1.ListPrice = P2.ListPrice
And P1.ListPrice <> 0
And P1.Name <> P2.Name
Os operadores SET são usados para combinar os mesmos tipos de dados de duas ou
mais tabelas. Apenas um conjunto de dados é retornado. Union permite valores
SIMPLES. Union ALL permite valores duplicados.
Use AdventureWorks2017
Go
--UNION
Select CurrencyCode --109 rows
from Sales.CountryRegionCurrency
Union
Select CurrencyCode --105 rows
from Sales.Currency
Use AdventureWorks2017
Go
--UNION ALL
Select CurrencyCode --109 rows
from Sales.CountryRegionCurrency
Union All
Select CurrencyCode --105 rows
from Sales.Currency
-- Aqui somamos 109 + 105. Totalizando 214 itens.
Operadores Intersect e Except
O operador Intersect retorna apenas linhas “Comuns”.
O Operando EXCEPT é usado para combinar duas instruções SELECT.
Retorna apenas linhas que não estão disponíveis na segunda instrução SELECT.
Select JobTitle
from HumanResources.Employee -- Left Table
Where Gender = 'M' ---Job titles for males (206 rows)
Except -- 26 Job Titles
Select JobTitle
from HumanResources.Employee -- Right Table
Where Gender = 'F' ---Job titles for females (84)
Subconsulta - É uma consulta dentro de uma consulta no SQL.
-- How many Cable Lock has been sold?

Select COUNT(*) from Sales.SalesOrderDetail

Where ProductID = (

Select ProductID from Production.Product

Where Name = 'Cable Lock')


Sub consulta de linha única. A sub consulta está sempre entre ();

-- How many Cable Lock has been sold?

Select COUNT(*) from Sales.SalesOrderDetail

Where ProductID = (

Select ProductID from Production.Product

Where Name = 'Cable Lock')

Sub consulta com várias linhas

--Quais produtos ainda não foram pedidos?

Select * from Production.Product

Where ProductID IN

(Select ProductID from Sales.SalesOrderDetail)


--Para recuperar os produtos AINDA NÃO ENCONTRADOS:
--Quais produtos ainda não foram pedidos?
Select * from Production.Product
Where ProductID NOT IN
(Select ProductID from Sales.SalesOrderDetail)
Order by ProductID
Sub Consultas Correlacionados. Depende da consulta externa para seus valores.
Não pode ser independentemente com uma sub consulta simples.
Além disso é executada repetidamente. Também conhecida como de Repetição.

Use AdventureWorks2017
Go
Select * from Production.Product as P
Where Not Exists
(Select ProductID from Sales.SalesOrderDetail as S
Where P.ProductID = S.ProductID)
Sub consultas com a instrução INSERT
Sub Consulta com UPDATE

Use AdventureWorks2017
Go

Update Person.StateProvinceTest
Set TerritoryID == 99
Where CountryRegionCode IN
(Select CountryRegionCode from Person.StateProvince
Where CountryRegionCode = 'CA'

Select * from Person.StateProvinceTeste


Use AdventureWorks2017

Go

--Delete data from the table with subqueries

Delete from Person.StateProvinceTest

Where CountryRegionCode IN

(Select CounstryRegionCode from Person.StateProvince

Where CountryRegionCode = 'CA'


GetDate irá retornar a data e a hora atuais do computador em que o SQL está sendo executado.

IsDate() Verifica uma expressão e retorna 1 se for válida e 0 se for inválida.

--Datetime Functions

--GetDate()

Select GetDate() as Today

--IsDate

Select IsDate(GetDate()) --Pois é uma data válida, no caso via GetDate.

--Day()

Select Day('2020-01-20') as Day

--Month()

Select Month('2020-01-20') as Month

--Year()

Select Year('2020-01-20') as Year


--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará YEAR)

Select DatePart(Year, '2020-01-20') as Year

--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Month)

Select DatePart(Month, '2020-01-20') as Month

--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Day)

Select DatePart(Day, '2020-01-20') as Day

--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Hour)

Select DatePart(Hour, '2020-01-20 04:55:12') as Hour

--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Minute)

Select DatePart(Minute, '2020-01-20 04:55:12') as Minute

--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Second)

Select DatePart(SECOND, '2020-01-20 04:55:12') as Second


DATENAME() Irá retornar parte da data ou tempo
--DateName() -- Irá retornar parte da data ou tempo (No caso retornará Year em texto)
Select DATENAME(Year, '2020-01-20 04:55:12') as Ano

--DateName() -- Irá retornar parte da data ou tempo (No caso retornará Month em texto)
Select DATENAME(Month, '2020-01-20 04:55:12') as Mês

--DateName() -- Irá retornar parte da data ou tempo (No caso retornará Day em texto)
Select DATENAME(WEEKDAY, '2020-01-20 04:55:12') as Dia

DateADD()
- --DateAdd() -- Irá retornar parte da data ou tempo (No caso retornará Day em texto)
Select DATEADD(Year, 5 , '2020-01-20') as Month
DATEDIFF() DATE(Year, date1, date2) Para consultar dados de uma data x até uma data y.

--DateDiff
Select DateDiff(Year, '1988-01-14', '2021-10-21') as AnosVividos

--DateDiff
Select DateDiff(Month, '1988-01-14', '2021-10-21') as MesesVividos

--DateDiff
Select DateDiff(Day, '1988-01-14', '2021-10-21') as DiaVividos

--DateDiff
Select DateDiff(Day, '1988-01-14', GETDATE()) as DataAtual
Conversor de Data e Hora
--Date Conversion

select

Convert (varchar, getdate(), 1) as 'Format-1',

Convert (varchar, getdate(), 2) as 'Format-2',

Convert (varchar, getdate(), 3) as 'Format-3',

Convert (varchar, getdate(), 4) as 'Format-4',

Convert (varchar, getdate(), 5) as 'Format-5',

Convert (varchar, getdate(), 6) as 'Format-6',

Convert (varchar, getdate(), 7) as 'Format-7',

Convert (varchar, getdate(), 10) as 'Format-10'

Use AdventureWorks2017

Go

Select DATEDIFF(year,Convert(varchar, BirthDate,10), GETDATE())

from HumanResources.Employee
-String functions

--Length – Informa a quantidade de caracteres em uma String

Select Len('Oak Academy 2020')

--Left Extrai um número de caracteres de uma string, começando pela esquerda).

Select Left('Oak Academy 2020', 11)

-- Trim() Remove espaço excedentes em uma strings.

Select Trim('Oak Academy ')

--LTrim() e RTrim()

Select LTrim(' Oak Academy ') RTrim

--Lower() Para converter o texto em letras minúsculas

Select Lower('Oak Academy 2020')

--UPPER() Para converter o texto em letras maiúsculas

Select Upper('Oak Academy 2020')

--UPPER() Para converter o texto em letras maiúsculas

Select Upper(FirstName), Upper(LastName) from Person.Person

--Reverse Function

Select Reverse ('Oak Aacademy 2020')

--Replace() Substitui um parâmetro por novo parâmetro. Ex: 2020 para 2021.

Select Replace ('Oak Aacademy 2020', '2020','2021')

--SubString - Usado para substituir caracteres de uma string (String, Start, Length)

Select Substring('Oak Aacademy 2020', 5, 12)


Funções Matemáticas - MATH Functions
ABS() - Retorna o valor Absoluto de um número. Apenas um parâmentro e 1 número
--ABS Function
Select ABS(-202)

--AVG() Function
-- Média de preço de vários produtos
Select AVG(ListPrice) from Production.Product

--Ceiling() Function - Retorna o menor valor inteiro acima de uma chamada float.
Select Ceiling (15.75) -- Irá retornar 16

--Count() Function - Retorna o número de registros retornados por uma consulta Select.
-- Quantos produtos estão na tabela Product ?
Select Count (*) from Production.Product

--FLOOR() Function - Retorna o menor valor inteiro abaixo de uma chamada float.
Select Floor(15.75) -- Irá retornar 15

--Max() Function - Retorna o valor máximo em um conjunto de valores.


--Max list price?
Select Max(ListPrice) from Production.Product -- Retornou 3578.27

--Min() Function - Retorna o valor mínimo em um conjunto de valores.


--Min list price?
Select Min(ListPrice) from Production.Product -- Retornou 0.00

--Power() Function - Retorna um valor elevado ao cubo


--Power() Function
Select Power (2,2) -- 2 x 2 = 4
--Rand()Function - Gera uma sequência de número aleatórios
Select Rand() -- Retorna um número aleatório entre 0 e 1
Select Rand(5) -- Retorna o mesmo numero
Select Rand()*10 -- Retorna um número aleatório entre 0 e 10
Select Floor(Rand()*10) --Retorna um número entre 0 e 10.

--Round() - 3 parâmetros(Número, Decimais, Operações)


--Round() Function
Select Round (123.321,3)

--SQRT() - Retorna a Raiz Quadrada de um número


Select Sqrt(9) -- Irá retornar 3

--Square() Function - Potência - Eleva o número vezes ele mesmo.


Select Square(3) -- 3 x 3 = 9

--SUM() - Calcula a soma de um conjunto de valores


-- Total de uma lista de preço?
Select (ListPrice) from Production.Product -- Ver valores da lista
Select Sum(ListPrice) from Production.Product as Soma -- Verificar a soma de tudo.
Transações SQL – Rollback – Commit – SavePoint

Em geral uma transação é uma operação que contém diversas tarefas relacionadas. Que devem ter
êxito ou falhar.

ACID – Atomicidade – Consistência – Isolamento e Durabilidade

Atomicidade -Transações são TUDO OU NADA.

Consistência - Apenas dados válidos são salvos

Isolamento - Cada transação não afeta as demais.

Durabilidade - Os dados não serão perdidos. Mesmo em caso de falhas de sistemas.


Rollback é o comando usado para desfazer transções que ainda NÃO FORAM SALVAS no banco de
dados. Só pode ser usado desde que o ultimo comando Commit ou Rollback foi emitido.

Commit – O comando COMMIT é um comando transacional usado para salvar mudanças invocadas
por uma transação para o banco de dados.

SAVEPOINT - É um ponto numa transação onde vc voltar a transação de volta até um certo ponto
sem voltar a transação inteira.

--SQL Transactions

Use AdventureWorks2017

Go

Begin Tran -- Inicia Transação

Update Person.Person -- Update FirstName

Set FirstName = 'Tom' where BusinessEntityID = 2

Save Tran SaveFirstName

Update Person.Person -- Update MiddleName

Set MiddleName = 'Z' where BusinessEntityID = 2

Save Tran SaveMiddleName

Update Person.Person -- Updante LastName

Set LastName = 'Walker' where BusinessEntityID = 2

Save Tran SaveLastName

Rollback -- Irá desfazer as alterações antes de salvar.

Commit -- Irá salvar as alteração.

Select * from Person.Person

-- Neste exemplo trocamos o nome Terri para Tom.

-- Com o Rollback ao tentarmos desfazer a mudança o SQL não permitiu


Como criar Esquema – Views - Sequência

Schema = é uma coleção de objetos no banco de dados (table views triggers indexes.

É propriedade do Schema Owner

O esquema sempre pertence a um bando de dados.

Por outro lado o banco de dados pode ser perte de um ou vários esquemas.

Table 1

Table 2 ------> Usuário

Table 3

Como criar um Schema

Create Schema schemaName ------> Schema

[Authorization ownerName] --------> Schema Owner

Use AdventureWorks2017

Go

--Create Schema

Create Schema TestSchema

Authorization Test_User

Antes de rodar é necessário criar o TEST_User. Localize a pasta Segurança, em seguida Usuário. Crie
o usuário Test_User .

Create Table SchemaName.TableName

(ID Int Not Null,

DepartmentName varchar Not Null)


-- Create A Table in a Schema

Create Table Departments

ID Int Not Null,

DepartmentName varchar Not Null

--Change Schema Name of a Table

Create Schema NewSchema

Alter Schema NewSchema

Transfer TestSchema.Departments.

--Drop a Schema

Drop Schema TestSchema

Drop Schema NewSchema

Alter Schema HumanResources

Transfer NewSchema.Departments
VIEW - É uma tabela virtual baseada no resultados de uma instrução de uma SQL.

--Create View

Create View VPersonWithMailAddress As

Select FirstName, LastName, EmailAddress

from Person.Person As P

Join Person.EmailAddress As E

On P.BusinessEntityID = E.BusinessEntityID

Select * from VPersonWithMailAddress

Drop View

Drop View VPersonWithMailAddress


Sequencia – Usado para gerar uma sequência númerica.

Uma sequência é um objeto associado a um esquema definido pelo usuário que gera uma sequência
de valores numéricos de acordo com a especificação com a qual a sequência foi criada. A sequência
de valores numéricos é gerada em ordem crescente ou decrescente em um intervalo definido e pode
seguir um ciclo (repetir-se) conforme solicitado. As sequências, ao contrário das colunas de
identidade, não são associadas a tabelas. Um aplicativo se refere a um objeto de sequência para
receber seu próximo valor. A relação entre sequências e tabelas é controlada pelo aplicativo. Os
aplicativos de usuário podem referenciar um objeto de sequência e coordenar as chaves de valores
em várias linhas e tabelas. Uma sequência é criada independentemente das tabelas com o uso da
instrução CREATE SEQUENCE . Opções permitem que você controle o incremento, os valores máximo
e mínimo, o ponto de partida, o recurso de reinício automático e o cache para melhorar
desempenho. Para obter informações sobre as opções

-- Create Sequece

Create Sequence SequenceObject

Start With 1

Increment By 1
-- Create Sequece

Create Sequence SequenceObject

Start With 1

Increment By 1

--Next Sequence Value

Select Next Value for SequenceObject

--Sequence Current Value

Select current_value from sys.sequences

Where name = 'SequenceObject'

--Reset Sequence Value

Alter Sequence SequenceObject

Restart With 1

--Sequence Value in Insert

Insert Into HumanResources.Department

Values(

Next Value for SequenceObject, 'S'

Insert Into HumanResources.Department

Values(

Next Value for SequenceObject, 'P'

Insert Into HumanResources.Department

Values(

Next Value for SequenceObject, 'K'

)
--Decrement Sequence

Create Sequence DecSequence

As INT

Start With 100

Increment By -1

Select next value for DecSequence

--Min, Max Sequence Value

Create Sequence MinMaxSeq

Increment By 20

MinValue 100

MaxValue 200

Cycle

Select next value for MinMaxSeq

--Drop Sequence

Drop Sequence MinMaxSeq


Gerenciamento de Usuários
Logins - Users - Roles

Login - Uma identidade usada para se conectar

Pode ser crado graficamente ou por consulta (Querry)

Windows Authentication

Create Login LoginName With Password = ‘YourPassword’


-- Criar Usuário

Create Login NewLogin With Password = '123456'

--Rename Login

Alter Login NewLogin with Name = NewLogin2

-- Mudar Senha do Login

Alter Login NewLogin with Password = '654321'

--Drop Login

Drop Login NewLogin

-- Habilitar Usuário

-- Clique com o botão direito sobre o novo usuário > Propriedades > Status > Habilitar
Usuários = Se refere a uma conta de banco de dados.

Podem ser criados graficamente, com consulta.


Com Consulta:

-- Criar Usuário

Create User Test_User For Login admin


Permissões de Usuário

São os direitos de acesso, podem ser concedidas para executar inserção, seleção ou modificação.

Por padrão o proprietário é o criador. A propriedade pode ser transferida.

Public Function = Função especial contém permissão de acesso padrão para qualquer usuário.

Não pode ser eliminada, porém é recomendável não conceder permissões perpétua.

-- Permissions (Grant, Deny)

-- Grant Aplica permissões POSITIVAS ao usuário (select, insert, update, delete)

Revoke – Nega uma permissão ou negação

Revoke privileges ON object From user

--Revoke

Revoke Create Table to admin

Revoke all on Table_1 to admin --Select, Delete, Update, Insert

Grant Create Table to admin

Você também pode gostar