SQL Server para programadores/desenvolvedores
What you'll learn
- Entenderemos o T-SQL de forma detalhada com viés de desenvolvimento de queries com o uso do SQL Server
Requirements
- Sem pré-requisitos
Description
Para você profissional programador/desenvolvedor ou estudante!
Informação vale ouro e muitas empresas utilizam o SQL Server para armazenar informações de seus negócios, mas você como desenvolvedor/programador está preparado para desenvolver soluções eficientes tratando alto volume de informações?
Sabe se está realmente preparado para os desafios e o mercado de trabalho que exige cada vez mais de nós, profissionais de TI?
Aqui neste curso de SQL Server veremos o que é mais importante para você como desenvolvedor de sistemas: como é que eu faço uma query que atenda ao meu negócio e não cause incidentes à medida que o negócio cresce e o volume de informações armazenadas no SQL Server ultrapasse milhões, até bilhões de linhas por dia.
Você aprenderá aqui não só como montar os comandos, mas como fazer de forma eficiente, utilizando as melhores práticas e principalmente entendendo o que você está fazendo e sabendo onde poderá chegar.
O conteúdo aqui apresentado engloba não só os conceitos, melhores práticas, várias formas de se atingir o mesmo objetivo, mas também conta com os itens que vi uso mais comum nos mais de 15 anos de experiência de mercado com uso de SQL Server.
Novidade: Na seção Setup, adicionei mais uma aula mostrando como instalar o SQL Server 2019 no Docker e na seção Colaboração dos Alunos, adicionei mais uma aula sobre CROSS APPLY e OUTER APPLY!
Itens abordados no curso:
Setup
- Instalação do SQL Server no Windows 10 como instância local
- Instalação do SQL Server no Ubuntu Server LTS 18.04
- (Opcional) Instalação do SQL Server - Docker Desktop
- Instalação do SQL Server Management Studio - nossa principal ferramenta utilizada neste curso
- Criação de banco de dados de exemplo
Fundamentos
- T-SQL: a linguagem SQL proprietária da Microsoft
- Processamento lógico: como conceitualmente funciona o processamento de queries pelo SQL Server
- Terminologia e boas práticas: presente no curso todo, tanto os termos corretos quanto as dicas de boas práticas
Tabelas
- CREATE: como criar tabelas e quais os cuidados na definição das colunas e constraints
- ALTER: como alterar tabelas e quais os cuidados devemos nos atentar
- DROP: como deletar tabelas e quais os cuidados devemos nos atentar
DML
- INSERT: as várias maneiras de inserir linhas nas tabelas
- UPDATE: as várias maneiras de atualizar valores de colunas nas linhas das tabelas
- DELETE: as várias maneiras de excluir linhas das tabelas
- Criação de banco de dados de exemplo
Cláusula FROM
- Como funciona a primeira fase de processamento do SQL Server
- JOINs: as várias maneiras de relacionar tabelas
- Table HINT: o que é e quais os cuidados ao forçar o plano ao sobrepor a estratégia do query optimizer
Cláusula WHERE
- Como funciona a segunda fase de processamento do SQL Server
- Conversões de valores: várias maneiras para converter valores e os cuidados que devemos ter para não afetar performance
- Sub query: como usar sub query como filtro de linhas e como isso impacta o processamento da query
- Conteúdo adicional: outras maneiras de efetuar conversão de valores e operadores especiais para a cláusula WHERE
GROUP BY e HAVING
- GROUP BY: a terceira fase de processamento do SQL Server, para que serve e como usar agrupamentos
- HAVING: a quarta fase de processamento do SQL Server, como podemos filtrar linhas já agrupadas
- WINDOW FUNCTION: como utilizar todo o poder de processamento de agrupamentos para relatórios analíticos
SELECT e ORDER BY
- SELECT: a quinta fase de processamento do SQL Server, como usar ALIAS e CASE
- ORDER BY: a sexta fase de processamento do SQL Server, temos mesmo que ordenar as linhas? Vejamos quando faz sentido
- TOP e OFFSET-FETCH: a "sétima" fase de processamento do SQL Server, veremos como trabalhar com paginação
Set Operators - UNION, INTERSECT e EXCEPT
- UNION: como unir várias queries em um único resultset
- INTERSECT: veremos como unir queries só que trazendo apenas o que for em comum entre as queries
- EXCEPT: veremos como unir queries só que trazendo apenas as diferenças entre as queries
SEQUENCE, OUTPUT e MERGE
- SEQUENCE: veremos como usar este objeto "poderoso" como alternativa ao auto-incremento
- OUTPUT: podemos trabalhar com o resultado de queries (output) servindo de insumo (input) para outros usos que não somente devolver o resultset ao cliente
- MERGE: sabia que é possível à partir de uma origem e destino fazer INSERT, UPDATE e DELETE com apenas 1 query? Veremos como usando MERGE
VIEWS, FUNCTIONS e SYNONYMS
- VIEWS: como construir consultas reutilizáveis e as formas de obscurecer a consulta original
- FUNCTIONS: como construir funções em que podemos passar parâmetros para termos os resultados de forma reutilizável
- SYNONYMS: como os sinônimos nos ajudam a facilitar o uso de objetos no banco de dados
PROCEDURES e TRIGGERS
- PROCEDURES: precisa efetuar um processamento batch? Vamos ver como as procedures nos ajudam quando precisamos executar várias etapas
- TRIGGERS - AFTER: vamos entender como funcionam os gatilhos no SQL Server após INSERT, UPDATE ou DELETE
- TRIGGERS - INSTEAD OF: sabia que é possível fazer INSERT (por exemplo) em cima de uma VIEW? Vamos ver como com TRIGGER
Transações, tratamentos de erros e queries dinâmicas
- Transações: como funciona o escopo transacional de uma seção e quais os benefícios de controlar as nossas transações
- Tratamentos de erros: pra quê estourar um erro na cara do cliente se conseguimos tratar eventuais erros?
- Queries dinâmicas: às vezes precisamos criar as queries com base em validações em runtime, veremos como isso é possível e quais os impactos
Índices
- CLUSTERED INDEXES: pra que servem, quais as diferenças entre uma HEAP e uma Balanced Tree e quais os impactos de usar ou um ou outro
- NON CLUSTERED INDEXES: como esses índices auxiliares nos ajudam no processamento das nossas diversas queries e qual a diferença com a CLUSTERED INDEX
- INDEXED VIEWS: sabia que também conseguimos criar índices em cima das VIEWS? Veremos como e quais as vantagens
CURSOR, tabelas temporárias e XML
- CURSOR: precisa iterar linha-a-linha em cima de uma resultset? Então utilize CURSOR!
- Tabelas temporárias: como usar e qual a diferença entre uma temporária física versus em memória
- XML: como transformar um resultset em um XML e como transformar um XML em um "formato" de tabela
PIVOT, UNPIVOT e plano de execução
- PIVOT: veremos quando e como transformar uma visão em linhas em uma visão em colunas
- UNPIVOT: veremos quando e como transformar uma visão em colunas em uma visão em linhas
- Plano de execução: vamos aprender detalhadamente como "ler" um plano de execução e como ver oportunidades de melhoria nas queries à partir da análise de um plano de execução
Para programadores
- Como prevenir problemas de performance do SQL Server quando você tem uma aplicação em Java usando Spring Data JPA e em .Net Core usando Entity Framework
Colaboração dos alunos
- CASE, COALSCE e NULLIF: veremos mais no detalhe como utilizar estas 3 funções T-SQL
- JSON: como transformar um resultset em um JSON e como transformar um JSON em um "formato" de tabela
- CROSS APPLY e OUTER APPLY
Who this course is for:
- Este curso destina-se a programadores/desenvolvedores e estudantes que desejam conhecer o SQL Server e colocar em prática no dia-a-dia o conteúdo do curso
Instructor
Já ministrei aulas presenciais de informática para jovens e adultos, atualmente faço pequenos workshops mais voltados a SQL Server ou desenvolvimento em plataforma distribuída com Java e noções de clean architecture.
Atuo como Especialista em Engenharia de TI em uma instituição financeira de grande porte, sou um profissional da área de TI com mais de 16 anos de experiência onde já atuei como programador, desenvolvedor, sustentação de sistemas, gestão de projetos e engenharia de software (minha função principal atualmente).
Possuo MBA em gestão estratégica de TI pela FGV e graduação em Sistemas de Informação, comecei minha formação em TI na E.T.E. Lauro Gomes com o curso Técnico em Informática.
Possuo as seguintes certificações:
* Microsoft Certified Querying SQL Server 2012/2014 / Microsoft Certified Azure Fundamentals
* AWS Certified Solutions Architect - Associate / AWS Certified Cloud Practitioner