Você está na página 1de 23

Aula 3

Formas de normalização:
Quando não possui dados repetidos.

/*
Criando Banco de Dados
Autor: Nathalia Marin da Costa
Data: 24/12/2019
*/
-- Criando um banco via T-SQL
CREATE DATABASE DepartamentoPessoal;
Execução: clicar no botão execute ou F5
-- Colocando um banco em uso
USE DepartamentoPessoal;
-- Excluir um banco de dados
-- O mesmo não poderá estar em uso
Use master;
DROP DATABASE DepartamentoPessoal

Aula 4
SQL ansi = SQL padrão
T – Sql é uma linguagem transacional (utilizada para realizar transações).

DQL = extração
DML = manipulação de dados
DCL = controles. Comando que dão permissão, bloqueio e revogar um bloqueio/permissão
DTL = manipulação de dados com segurança. Dados que podem voltar ao original
DDL = criar um objeto, alterar uma estrutura de tabela. Excluir

Ex.: Comando SQL


SELECT*FROM tblClientes;
* = todas as colunas

Aula 6 – Criando tabelas via T-SQL

CREATE TABLE NomeTabela(nomeCampo

Ex.: Query Criando Tabelas

USE Concessionaria;
--Tabelas
--identação: recuos para continuar o código extenso
--identity é auto numeração e começo no 1
-- , = separador de colunas
-- char(30) = comprimento fixo, vai consumir 30 posições na memória
-- varchar(30) = só vai consumir o que realmente está em campo
-- nchar(30) = texto unicold, utilizado para banco de dados que podem ter mais de um idioma
-- not null = campo obrigatório
-- unique = não aceita dados repetidos
CREATE TABLE tblMarcas
(
idMarca int identity primary key,
nomeMarca nchar(10) not null unique
);

--Vizualizando estutura de tabelas

EXEC sp_help tblMarcas

-- PK = chave primária
-- FK = chave estrangeira
Create table tblModelos
(
idModelo int identity
Constraint PK_tblModelos_idModelos
Primary Key (idModelo),

idMarca int not null


Constraint FK_tblModelo_tblMarcas_idMarca
Foreign Key (idMarca)
Refrences tblMarcas(idMarca),

nomeModelo nchar(30) not null


Constraint UQ_tblModelos_nomeModelo
Unique (nomeModelo)

);

Exec sp_help tblModelo

Aula 7 – Constraints e estruturas de tabelas

Constraints = regras do servidor. Objetivo de dar consistência aos dados, como: not null, primery Key

--para cirar uma chave estrangeira, ela deve ser uma chave primária na outra tabela

-- GetDate = retorna a data de hoje

--CK = Check

--Estrutura = Tabela que estou usando e coluna em que vai ser aplicado a regra. Se a coluna possuir
constratints ela não poderá sofrer alteração, para isso é necessário excluir a coluna e refaze-la.
Ex.:

Use Concessionaria;

Create Table tblEstoque


(
IdEstoque int identity
Constraint PK_tblEstoque_idEstqoue
Primary Key (idEstoque),

idModelo int not null


Constraint FK_tblEstoque_tblModelos
Foregin Key (idModelo)
Refrences tblModelos(idModelos)

dataEntrada date Default GetDate(),

precoEstoque money not null


Constraint CK_tblEstoque_precoEstoque
Check (precoEstoque >= 10000 and precoEstoque <= 200000)
);

--Nova coluna
Alter Table tblEstoque
ADD placa nchar(8) not null;

--Alterar o tamanho de uma coluna


--Null = aceita nulos

Alter table tblEstque


Alter Column placa nchar(7) null;

EXEC sp_help tblEstoque

-- Excluir uma coluna

Alter table tblEstoque


DROP COLUMN placa;

Aula 8 – Criando Índices

-- O índice de chave primária vai ocupar mais espaço no disco


-- para manipulação de dados em colunas que possuem índice vai demorar o dobro do tempo. O mesmo
vale para colunas que sofrem muitas alterações

Ex.: Criando índices


Use Concessionária;

-- Vizualizar índices
Exec sp_help tblEstoque;

-- Criando índice
-- Índices que não são chave primária sugere-se IX
--DESC = dados em ordem decrescente
Create NONCLUSTERED Index IX_tblEstoque
On tblEstoque(dataEntrada DESC)

Exec sp_helpindex tbl_Estoque;

--Excluir Índice
--Se excluir o índice não vai estar excluindo os dados da coluna
DROP INDEX IX_tblEstoque
On tblEstoque;

Aula 9 – Anexando Banco de Dados

--Pasta database na unicade C:


--Anexar significa pegar bancos prontos e colocar em uso dentro do servidor
-- Quando o SQL for acessar uma pasta ele precisa pedir permissão para o sistema operacional, feito no
windos explorer
--Botão direito na pasta database > propriedades > segurança > última opção é o usuário da máquina >
Editar > Marcar controle total > Editar > Aplicar > Ok > Ok
Agora a pasta database está com permissão total
--Deixar o cursos em qualquer linha do script, F5/EXECUTE vai rodar o código

Aula 10 – Manipulando dados (Inserindo Registros)

Ex.: Inserindo Registros

USE Concessionaria;
EXEC sp_help tblMarca;
-- Insert posicional
INSERT INTO tblMarcas
Values(‘Fiat’);

--Inserção de várias linhas


Insert into tblMarcas
Values
(‘Ford’),(‘Chevrolet’),(‘Wolkswagen’),(‘Honda’);

--Visualizar dados
Selct * From tblMarcas;
--Insert declarativo
Insert into tblModelos
(idMarca,nomeModelo)
Values
(4,’Onix’),(1,’Uno’),(3,’Eco Sport’);

Select from tblModelos;

Insert into tblEstoque


(Arrastar colunas)
Values
(1,’2017-01-05’,45000);

Aula 11 – Manipulando dados (Atualizando Registros)


Ex.: Atualizar registros

Use sisDep;

-- Bônus de 100 reais para todos os funcionários


UPDATE Funcionario
Set salario = salario + 100;

--Operador Composto
--Reajuste de 10% para todos os funcionários
UPDATE Funcionario
--Set salario = salario*1.1 + salario
--Set salario = salario*0.1 + salario
--+=, -=, /=
Set salario *= 1.1

--Atualização de mais de uma coluna simultaneamente com aplicação de filtros


UPDATE Funcionario
Set salario *= 1.05, idCargo = 2
Where idMatricula = 1000;

Aula 12 – Manipulando dados (Excluindo Registros)

Ex.: Excluindo Registros

USE Consorcio;
--Visualizando dados da tablea carteira
Select * From Carteira;

DELETE FROM Carteiras


Where CPF = 7753479098;

Delete fom Carteiras


--Texto indefere se for maiúsculo ou minúsculo
Where Uf = ‘GO’;

Use sisDep;

--Exclusão bem sucedida


Delete from Funcionario
Where idMatricula = 1001;

--Exclusão que vai gerar erro


--Não exclui registros que fazem relação com outra tabela, se o dado for uma PK
--Deveria apagar os dependentes primeiro para depois excluir o funcionário
--Delet sem o Where vai apagar a tabela inteira com exceção da FK (chave estrangeira)
Delete from Funcionario
Where idMatricula = 1000;

Select * From Dependete


Where idMatricula = 1000;

Aula 13 – Trabalhando com transações


Transação de forma explicita

Ex.:
USE SeguroVeiculo;
Select*From Apolices;
--Inciar uma transação
Begin Transaction

--Verificar se há alguma transação ativa


Select @@Trancount;

Update Apolices
Ste valorApolice = valorApolice + 1500;

--Cancelar uma operação


ROLLBACK TRANSACTION
BEGIN TRAN
UPDATE Apolice
Set valorApolice = valorApolice + 1500
Where nContrato = 1000;

--Confirmar operação
-- A partir do momento que for executado esse comando não será possível voltar ao dado original, por isso é
necessário fazer backups
COMMIT TRAN
USE sisDep;
--OUTPUT = mostra o antes e depois de alterar os dados
Begin Tran
Update Funcionario
Set Salario = Salario*1.1
OUTPUT
deleted.idMatricula,
deleted.iNomeFuncionario,
deleted.Salario as [Salario Anterior],
inserted.Salario as [Novo Salario]
Where Salario <= 3000;

Commit

Aula 14 – Consulta a Dados

USE SisDep;
-- Todas as colunas de uma tabela
Select * From Funcionario;

--Somente algumas colunas


Select idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario;

--Ordenar dados
--ASC é ordem crescente
Select idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By NomeFuncionario ASC;
--DESC é ordem decrescente
Select idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By NomeFuncionario DESC;
--Ordenação por mais de uma coluna
Select idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By NomeFuncionario ASC, Salario Desc;

--Ordenar pela posição da coluna


--útil para campos com fórmulas
Select idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By 1 ASC, 5 Desc;

--RANK (TOP)
Select top 20 idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
--Porcentagem de dados
Select top 10 PERCENT idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario

-- 10 maiores salários
-- o TOP NÃO CONSIDERA EMPATES
Select top 9 PERCENT idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By Salario DESC;

-- Com empates
Select top 9 WITH TIES PERCENT idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By Salario DESC;

--Retornar os 5 funcionários mais antigos


Select top 5 WITH TIES PERCENT idDepartamento,idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Order By Admissao ASC;

Aula 15 – Filtro com operadores


--! Significa negar

USE SeguroVeiculo;
Select * From Apolices;

--Operadores relacionais
Select * From Apolices
Where valorApolice >= 5000;

--Operadore Lógicos
Select * From Apolices
Where idSeguradora = 1 or idSeguradora = 3;

Select * From Apolices


Where idSeguradora = 1 and valorApolice >= 50000;

-- Operador NOT demanda muito do processador pois faz duas operações. Vê todos os 5 e depois nega verdade
Select * From Apolices
Where Not idCidade = 5;

Select * From Apolices


Where valorApolice >= 30000
Order by valorApolice DESC;

--Operadores Aritméticos
--[ ] é o título da coluna que faz o cálculo
Slecte nContrato, valorApolice, valorApolice * 1.1 AS [Reajuste Anual]
From Apolices

--Operadores compostos
Begin Train
Update Apolices
Set valorApolice *= 1.1
Commit
Aula 16 – Between, Like e In
USE SisDep;

Select idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where Salario Between 1500 and 3000

Select idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where Admissao Between ’2005/1/1’ and ‘2005/12/31’;

Select idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where Admissao Not Between ’2005/1/1’ and ‘2005/12/31’;

--Opreador In. Lista de valores que estiverem dentro do in


Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Whete idDepartamento in(1,3,5,6,10);

Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario


From Funcionario
Where idDepartamento NOT IN (1,7)
Order By 1;

--Like é um operador que força muito o servidor


--Operador Like
/*
Caracteres coringa
% = 1 ou mais caracteres desconhecidos
_ = somente 1 caractere desconhecido
*/
Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where NomeFuncionario Like ‘A%’
Order By NomeFuncionario;
--Primeira letra é A, segunda tanto faz, a terceira é A e depois tanto faz
Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where NomeFuncionario Like ‘A_A%’
Order By NomeFuncionario;

--O nome termina com Oliveira


--Se não colocar nada no Order By a ordem é decrescente
Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where NomeFuncionario Like ‘%Oliveira’
Order By NomeFuncionario;

--Qualquer parte do nome que tiver ocorrência de Silvia


Select idDepartamento, idMatricula,NomeFuncionario,Admissao,Salario
From Funcionario
Where NomeFuncionario Like ‘%Silva%’
Order By NomeFuncionario;

Aula 17 – Unindo dados

USE Clientes;

--Todos os comandos SELECT deverão ter o mesmo número de colunas


--Todas as colunas unidas deverão ter o mesmo tipo de dados

Select * From Clientes2015


Union
Select * From Clientes2016;

Select * From Clientes2015


Union
Select * From Clientes2016;
Order By 2 ASC;

--‘Cliente xx’ é o input de uma nova coluna

Select ‘Cliente 2015’AS Ano, * From Clientes2015


Union
Select ‘Cliente 2016’, * From Clientes2016;
Order By 2 ASC;

--UNION ALL
--Union não traz valores repetidos

Select * From Clientes2015


Union
Select * From Clientes2016;
Order By 2 ASC;

--UNION ALL
-- Traz informação duplicados

Select * From Clientes2015


Union ALL
Select * From Clientes2016;
Order By 2 ASC;

Update Clientes2015
Set Apolice = 5000
Where código =2790;

Update Clientes2016
Set Apolice = 5000
Where código =2790;

Select * From Clientes2015


Where Cidade = ‘São Paulo’
Union
Select * From Clientes2016
Where Cidade = ‘Rio de Janeiro’
Order By 2 ASC;

Aula 18 – Comparando dados

-- Só posso verificar a consistência de dados uma coluna por vez e devem ter o mesmo tipo de dados

USE Clientes;

Slect * From Clientes2015;


Slect * From Clientes2016;

--Qual cliente de 2015 continuou cliente em 2016


Select Cliente From Clientes 2015
Intersect

Select Cliente From Clientes 2016;

--Clientes que estão em 2015 e não estão em 2016


--Except verifica dados que não são comuns nas tabelas
Select * From Clientes2015
Except
Select * From Clientes2016;

--Novos clientes
Select * From Clientes2016
Except
Select * From Clientes2015;

Aula 19 – Trabalhando com valores nulos

USE SysConVendas;
Select * From Dados;

Begin Tran
Update Dados
Set Vendedor = Null
Where Pedido In(21820,21872,21924,21963,22080)
Commit

--Função ISNULL (Coluna, o que deseja de informação no campo NULL) AS [Novo nome da coluna]
Select
Pedidos, ISNULL( Vendedor,’Sem Informação’) as Vendedor, Produto,Total
From Dados

Select
Pedidos, ISNULL( Vendedor,’’) as Vendedor, Produto,Total
From Dados

-- Filtrar Nulos e Não Nulos


-- Operadores: IS NULL e IS NOT NULL
--Função: ISNULL
Select
Pedidos, Vendedor, Produto,Total
From Dados
Where Vendedor IS NULL;

Select
Pedidos, Vendedor, Produto,Total
From Dados
Where Vendedor IS NOT NULL;
-- Função COALESCE: Retorna o primeiro valor não nulo em uma lista de valores
CREATE TABLE Cotacao
(
codigo int identity,
Produto varchar(50) not null,
Cotacao1 money null,
Cotacao2 money null,
Cotacao3 money null,
);
Insert into Cotacao
Values
(‘Mouse’,Null,25,Null),
(‘Impressora’,200,Null,350),
(‘Monitor’,Null,Null,500),
(‘HD Externo’,Null, Null, Null);

Select * From Cotacao

Select
Produto,
COALESCE (cotacao1, cotacao2, cotacao3,0) AS Cotação
From Cotacao

--Qual ítem não tem cotação em nenhuma das três lojas


Select * From Coatcao
Where COALESCE (cotacao1, cotacao2, cotacao3,0) = 0

Aula 20 – Junções internas

--Não há necessidade de uma PK e uma FK


Use SisDep;

Select
NomeFuncionario,Admissao,Salario, uf,Cidade
From Funcionario INNER JOIN Localidade
On Funcionario.idLocalidade = Localidade.idLocalidade

Select * From Funcionario


Select * From Localidade

Select
NomeFuncionario,Admissao,Salario, uf,Cidade,NomeDepartamento
From Funcionario INNER JOIN Localidade
On Funcionario.idLocalidade = Localidade.idLocalidade
Inner Join Depto
ON Depto.idDepartamento = Funcionario.idDepartamento
--Nomes Qualificados
Select
Funcionario.NomeFuncionario,
Dependente.NomeDependeten,
Dependente.NascimentoDependente
From Funcionario INNER Join Dependente
ON Depedente.idMatricula = Funcionario.idMatricula
Order By Funcionario.NomeFuncionario;

--Rótulos ou Alias
--Todas as demais linhas devem conter o apelido, com exceção da linha que está dando o apelido
Select
F.NomeFuncionario,
D.NomeDependeten,
D.NascimentoDependente
From Funcionario AS F INNER Join Dependente AS D
ON D.idMatricula = F.idMatricula
Order By F.NomeFuncionario;

Slect * From Funcionario

Aula 21 – Junções externas

USE SisDep;

--LEFT todos os funcionários do lado esquerdo do Join


Select
F.NomeFuncionario,
D.NomeDepartamento,
D.NascimentoDependente
From Funcionario AS F LEFT OUTER JOIN Dependente AS D
ON F.idMatricula = D.idMatricula
Order BY F.NomeFuncionario ASC;

--Todos os dados que estão à direito do JOINN mais as encontradas na esquerda


Select
F.NomeFuncionario
C.NomeCargo
C.Salario
From Funcionario AS F RIGHT JOIN Cargo AS C
ON F.idCargo = C.idCargo
Where F.NomeFuncionario IS NULL;

Aula 22 – Junções total e por cruzamento cartesiano

-- Full join vai trazer todos os registros de ambos os lados


--NULL é a forma que o SQL diz que não encontrou registro
USE SisDep;
Select
f.NomeFuncionario, f.NomeDependente, f.Admissao, f.NascimentoDependente
From Funcionario as f full Join Dependente as d
ON F.idMatricula = d.idMatricula
ORDER BY f.NomeFuncionario

Select * From Depto;


Select * From Projeto;

--Cada elemento de uma tabela será combinada com a outra


SELECT
d.NomeDepartamentos,
p.NomeProjeto,
p.DataInicio,
p.DataTermino
FROM Depto as d cross Jpin Projeto as p;

Aula 23 – Manipulando dados com junções

-- Primeira parte: qual tabela será atualizada


-- Segunda parte: tabelas que faram a participação do cruzamento de dados
USE SisDep;

--Bônus de R$ 100,99 para todos os funcionários que possuam dependentes


BEGIN TRAN
UPDATE Funcionario
Set SALARIO = SALARIO +100
FROM Funcionarios AS f Inner JOIN Dependente AS d
ON f.idMatricula = d.idMatricula
ROLLBACK
COMMIT

--Reajuste de 10% no salário para funcionários que não possuam dependentes


Select
f.NomeFuncionario, d.Nome.Dependente
From Funcionario AS f Left Join Dependente AS d
ON f.idMatricula = d.idMatricula
Where d.NomeDependete IS NULL;

BEGIN TRAN
UPDATE Funcionario
Set salario = salário*1.1
From Funcionario As F Left Join Dependente as d
On f.idMatricula = d.idMatricula
Where d.NomeDependete IS NULL;

ROLLBACK – Desfazer a operação


COMMIT – Confirmar transação

--Desligamento de funcionários do departamento SAC com salário acima de R$ 1.500,00

BEGIN TRAN
DELETE Funcionario
FROM Funcionario AS f INNER JOIN Departamento AS d
ON f.idDepartamento = d.idDepartamento
Where d.NomeDepartamento = ‘SAC’ and f.Slario > 1500,00;

COMMIT

--Desligamento de funcionários com salário superior a R$ 4.000,00 que não possuam dependetes
BEGIN TRAN
DELETE Funcionario
From Funcionario AS f LEFT JOIN Dependente AS d
ON f.idMatricula = d.idMatricula
Where d.NomeDependente IS NULL AND f.Salario > 4000;

Aula 24 – Subconsultas
USE Clientes;

Select * From Clientes2015;


Select * From Clientes2016;

-- quais clientes na base 2015 tbm estão na base 2016


Select * From Clientes2015 – papel do resultado
Where
Exists
(
Select código From Clientes2016 – Vai fazer o papel de filtro
Where c15.codigo = c16.codigo
)
-- quais clientes na base 2015 que não estão na base 2016
Select * From Clientes2015 C15 – papel do resultado
Where
NOT Exists
(
Select código From Clientes2016 C16 – Vai fazer o papel de filtro
Where c15.codigo = c16.codigo
)

USE SisDep;
--Retornar nome dos funcionários que possuem dependentes
Select
f.NomeFuncionario
From Funcionario AS f
Where
f.idMatricula IN (
Select d.idMatricula From Dependente d);

--Retornar nome dos funcionários que não possuem dependentes


Select
f.NomeFuncionario
From Funcionario AS f
Where
f.idMatricula NOT IN (
Select d.idMatricula From Dependente d);

--Retornar funcionários com salários acima da média salarial


-- AVG = média aritmética
SELECT AVG(Salario) From Funcionario;
Select
NomeFuncionario, Admissao, Salario
From Funcionario
Where Salario > (Select AVG(Salario) From Funcionario);

Aula 25 – Tabelas Temporárias

-- Tabela Temporária Local (Create Table)

Create Table #Clientes


(
Código int,
nomeCliente varchar (50),
cadastro date
);

Select * From #Clientes;

Insert into #Clientes


Values
(1,’Hélio’,’2017/1/5’)
(2,’Nicolas’,’2017/1/10’);

USE SysDep;
Select *From Dados;

-- O resultado será copiado na tabela temporária (dura apenas quando o programa está ativo)
-- é utilizada para diminuir o custo de uso da memória RAM
Selec *
Into #Pesquisa1
From Dados;

Select * From #Pesquisa1;

--Filtros
Select * From #Pesquisa1
Where mês = ‘agosto’;

--Atualizações
Upadate #Pesquisa1
Set vendedor = ‘Helio’
Where pedido = 2124;

Slect *
Into ##Pesquisa2
From Dados
Where Regiao = ‘sudeste’

Aula 26 – Funções de Agregação

USE SisDep;

--Retornar o tatol geral de salário pagos


Select Sum(Salario) AS [Total de salários] From Funcionario;

--Retornar a média de salários


SELECT AVG (salario) AS [Média Salarial] From Funcionario;

-- Mais de uma agregação no mesm comando Select


Select
Max (salario) AS [ Maior Salário],
Min (salario) AS [Menor salário],
Count (salario) AS [Nº de Funcionarios]
From Funcionario;

Use SysConVendas;
Select * From Dados;

--Count não conta valores nulos nas colunas


--Count * é na linha e não leva em consideração se o campo está ou não nulo
Select COUNT(Vendedor) AS Contagem_Coluna From Dados;
Select COUNT(Pedido) AS Contagem_Coluna From Dados;
Select COUNT (*) AS Contagem_Linha From Dados;

Aula 27 – Agrupando dados

Use SysConVendas;

Select * From Dados;

Select SUM(Total) AS [Faruarmento Total] From Dados;

Select
Cidade, Sum(Total) AS [Faturamento Total]
From Dados
Group By Cidade;

Select
Cidade, Sum(Total) AS [Faturamento Total]
COUNT (*) AS [Nº de Ocorrências]
From Dados
Group By Cidade, Produto;

-- Filtro em Agrupamento HAVING


Select
Cidade, Sum(Total) AS [Faturamento Total]
From Dados
Group By Cidade
HAVING SUM(Total) > 2000
Order By 2;

-- Subtotais
Select
Cidade, Sum(Total) AS [Faturamento Total]
From Dados
Group By Cidade
With Rollup

--Cube: subtotal por todas as colunas participantes do select


Select
Cidade, Produto, Sum(Total) AS [Faturamento Total]
From Dados
Group By Cidade, Produto
With CUBE;
--------------------------------------------------------------------------------------------------------
USE SisDep;
-- Agrupamentos com junções
Select
NomeFuncionario, count(8) [Nº de Dependentes]
From Funcionario AS f INNER JOIN Dependente AS d
ON f.idMatricula = d.idMatricula
Group by NomeFuncionario;

Aula 28 – Funções built-in (strings)

USE SisDep;

Select
NomeFuncionario,
LEN(NomeFuncionario) AS [Nº de Caracteres],
idMatricula,
LEFT(idMatricula,2) AS [Esquerda],
Right(idMatricula,1) AS [Direita]
Replace (idMatricula),’10’,’20’ AS [Substituir]
CHARINDEX (‘silva’,NomeFuncionario,1) AS [Localizar]
SUBSTRING(NomeFuncionario,1,charindex(‘ ‘,NomeFuncionario,1,1
From Funcionario;

Aula 29 – Funções built-in (data e hora)

Select GetDate();

Use SisDep;

Select
NomeFuncionario,Admissao,
Day (Admissao) AS [Dia],
Month(Admissao0 AS [Mês],
Year(Admissao) AS[Ano]
From Funcionario;

/*
Retornar admitidos na 1ª quinzena de qualquer do 2º Semestre
Dos seguintes anos (2000,2003,2005,2008,2010)
*/

Select
NomeFuncionario,Admissao,
Day (Admissao) AS [Dia],
Month(Admissao0 AS [Mês],
Year(Admissao) AS[Ano]
From Funcionario
Where
Day (Admissao) <= 15 And Mont(Admissao) >=7 and
Year(Admissao) IN (2000,2003,2005,2008,2010);

--Vai somar 0 ou 1 mês na data de hoje


Select Emonth(GetDate(),0);
Select Emonth(GetDate(),1);

Select DATEFROMPARTS(2017,1,10);

Select DateDiff(Day, ‘1996/10/23’, GetDate()) AS [Dias];


Select DateDiff(Month, ‘1996/10/23’, GetDate()) AS [Meses];
Select DateDiff(Year, ‘1996/10/23’, GetDate()) AS [Anos];
Select DateDiff(QUARTER, ‘1996/10/23’, GetDate()) AS [Trimestres];
Select DateDiff(Week, ‘1996/10/23’, GetDate()) AS [Semanas];

Select DateADD(Day,65,GetDate()) AS [Dias];


Select DateADD(Month,18,GetDate()) AS [Meses];
Select DateADD(Year,3,GetDate()) AS [Ano];
Select DateADD(Week,20,GetDate()) AS [Semanas];
Select DateADD(Quarter,3,GetDate()) AS [Trimestres];

SET LANGUAGE ‘BRAZILIAN’


Select
NomeFuncionario,
Admissao,
DATENAME(WeeDAY,Admissao) AS [Dia da Semana],
DateName(Mont,Admissao) AS [Mês]
From Funcionario;

Aula 30 – Funções built-in (conversão e formato)

USE SisDep;

Select
NomeFuncionario,
CAST(Admissao AS Date) AS [Admissao]
From Funcionario;

--Visualizar a estrutura de dados da tabela


EXEC sp_help Funcionario;

Select ‘Media final:’ + CAST(6.5 AS VARCHAR);

Select
NomeFuncionario,
convert(VARCHAR,Admissao,1) AS [Codigo1],
convert(VARCHAR,Admissao,2) AS [Codigo2],
convert(VARCHAR,Admissao,3) AS [Codigo3],
convert(VARCHAR,Admissao,101) AS [Codigo101],
convert(VARCHAR,Admissao,102) AS [Codigo102],
convert(VARCHAR,Admissao,103) AS [Codigo103],
From Funcionario;

Select
NomeFuncionario.
Format(salario,’C’,’ EN-US’) AS [Formato Dolar],
Format(salario,’C’,’ PT-BR’) AS [Formato Real],
Format(Admissao,’d’,’ PT-BR’) AS [Formato Data 1],
Format(Admissao,’d’,’ PT-BR’) AS [Formato Data 2],
Format(Admissao,’Dd-mm-yyyy’,’ PT-BR’) AS [Formato Data 3],
From Funcionario;

Você também pode gostar