Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
Use Company
Go
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
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
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
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
Use Company
Go
Select Employee.EmployeeName, Employee. Phone, Employee.Age
From tableEmployees as Employee
Recuperando Dados
Use AdventureWorks2017
Go
Select *
From Person.Person
<= 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
Use AdventureWorks2017
Go
Select *
From Person.Person
Where BusinessEntityID IN (1,2,5)
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
-- 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
--Left(Outer) Join
select * from Production.Product
select * from Sales.SalesOrderDetail
Use AdventureWorks2017
Go
--Right(Outer) Join
--Right(Outer) Join
select Name,SalesOrderDetailID
from Production.Product as P
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
Where ProductID = (
Where ProductID = (
Where ProductID IN
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'
Go
Where CountryRegionCode IN
--Datetime Functions
--GetDate()
--IsDate
--Day()
--Month()
--Year()
--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Month)
--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Day)
--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Hour)
--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Minute)
--DatePart() -- Irá retornar parte da data ou tempo (No caso retornará Second)
--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
Use AdventureWorks2017
Go
from HumanResources.Employee
-String functions
--LTrim() e RTrim()
--Reverse Function
--Replace() Substitui um parâmetro por novo parâmetro. Ex: 2020 para 2021.
--SubString - Usado para substituir caracteres de uma string (String, Start, Length)
--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
Em geral uma transação é uma operação que contém diversas tarefas relacionadas. Que devem ter
êxito ou falhar.
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
Schema = é uma coleção de objetos no banco de dados (table views triggers indexes.
Por outro lado o banco de dados pode ser perte de um ou vários esquemas.
Table 1
Table 3
Use AdventureWorks2017
Go
--Create Schema
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 .
Transfer TestSchema.Departments.
--Drop a Schema
Transfer NewSchema.Departments
VIEW - É uma tabela virtual baseada no resultados de uma instrução de uma SQL.
--Create View
from Person.Person As P
Join Person.EmailAddress As E
On P.BusinessEntityID = E.BusinessEntityID
Drop View
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
Start With 1
Increment By 1
-- Create Sequece
Start With 1
Increment By 1
Restart With 1
Values(
Values(
Values(
)
--Decrement Sequence
As INT
Increment By -1
Increment By 20
MinValue 100
MaxValue 200
Cycle
--Drop Sequence
Windows Authentication
--Rename Login
--Drop Login
-- 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.
-- Criar Usuário
São os direitos de acesso, podem ser concedidas para executar inserção, seleção ou modificação.
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.
--Revoke