Quer ter acesso a todos os cursos desse Guia?
Guia Completo de SQL
Neste Guia Completo de SQL você encontrará todo o conteúdo que precisa para aprender sobre a SQL, linguagem de consulta estruturada utilizada por programadores e DBAs para a execução de consultas e comandos nos principais SGBDs do mercado.
Introdução
A linguagem SQL é o recurso mais conhecido por DBAs e programadores para a execução de comandos em bancos de dados relacionais. É por meio dela que criamos tabelas, colunas, índices, atribuímos permissões a usuários, bem como realizamos consultas a dados. Enfim, é utilizando a SQL que “conversamos” com o banco de dados.
Essa breve descrição já deixa clara a importância da compreensão e domínio sobre tal recurso. Saiba, também, que ela facilita não apenas a execução de tarefas em SGBDs, mas também o diálogo entre profissionais de banco de dados e programadores.
Com base nisso, aprender sobre SQL, a Structured Query Language, passa a ser fundamental para qualquer um que deseja atuar nessas áreas.
Primeiros passos
Após conhecer a SQL é natural nos interessarmos por vê-la na prática, executar os primeiros comandos, as primeiras consultas (queries), mesmo em um banco de dados de exemplo fornecido pelo Sistema Gerenciador de Banco de dados. Mas, por onde começar exatamente? Onde executar esses comandos?
Para responder a essas questões, configurar o ambiente, criar a primeira tabela, inserir dados, assim como executar algumas consultas, preparamos o curso:
Além desse curso, também indicamos os posts a seguir, que apresentam, de forma objetiva, os principais recursos dessa linguagem:
Organização da SQL
No curso acima você deve ter notado que a linguagem SQL é organizada em subconjuntos, cada um com propósitos bem definidos (Figura 1):
- DQL - Linguagem de Consulta de Dados - Define o comando utilizado para que possamos consultar (SELECT) os dados armazenados no banco;
- DML - Linguagem de Manipulação de Dados - Define os comandos utilizados para manipulação de dados no banco (INSERT, UPDATE e DELETE);
- DDL - Linguagem de Definição de Dados - Define os comandos utilizados para criação (CREATE) de tabelas, views, índices, atualização dessas estruturas (ALTER), assim como a remoção (DROP);
- DCL - Linguagem de Controle de Dados - Define os comandos utilizados para controlar o acesso aos dados do banco, adicionando (GRANT) e removendo (REVOKE) permissões de acesso;
- DTL - Linguagem de Transação de Dados - Define os comandos utilizados para gerenciar as transações executadas no banco de dados, como iniciar (BEGIN) uma transação, confirmá-la (COMMIT) ou desfazê-la (ROLLBACK).
Para entendermos melhor, no artigo a seguir vemos uma introdução a linguagem e alguns exemplos dessa subdivisão. Além disso, a partir deste ponto, tomaremos essa subdivisão da SQL para organizar o guia.
SQL DQL - Data Query Language
Como você já pode notar e verificará ao longo da sua carreira, uma das tarefas mais corriqueiras em bancos de dados é a execução de queries. Portanto, saber criá-las da melhor maneira é muito importante para o desempenho do banco e de aplicações que dele dependam.
Neste momento, de primeiros passos, você não precisa se preocupar tanto com isso, mas recomendamos que pense sobre esse assunto a cada novo recurso relacionado a consultas que estudar.
O curso abaixo lhe ensinará a criar consultas em SQL, a utilizar o comando SELECT. Conheceremos, assim, alguns dos principais recursos, por exemplo: ordenação de registros, funções de agregação, junções, entre outros.
Além desse curso, preparamos mais alguns posts com o intuito de explorar todos os recursos relacionados a consultas em SQL:
-
ArtigoSQL Select: Guia para Iniciantes
-
ArtigoSQL Select: Entendendo a instrução SELECT
-
ArtigoLinguagem SQL: ORDER BY
-
ArtigoLinguagem SQL: Extraindo informação de qualidade com SQL
-
ArtigoSELECT TOP em vários SGBDs
-
CursoLinguagem SQL: Seleção Múltiplas tabelas Novo!
Para elaborar queries mais específicas, filtrando os dados retornados, assim como fazer cálculos ou verificações de maior ou menor valor, por exemplo, a SQL também nos fornece boas opções.
Além das ferramentas mencionados até aqui, temos ainda outras muito importantes e que influenciam diretamente no tempo da consulta. Portanto, saber utilizá-las é de grande valor para um bom profissional.
JOIN
-
ArtigoEntendendo a instrução JOIN
-
ArtigoSQL Join: Entenda como funciona o retorno dos dados
-
ArtigoMerge join cartesian: Uma possível causa de mau desempenho
-
ArtigoOracle Database: Entendendo o conceito de Join e Outer Join
Subqueries
Uma subconsulta (mais conhecida como SUBQUERY ou SUBSELECT) é uma instrução do tipo SELECT dentro de outra instrução SQL. Por serem muito utilizadas em substituição ao JOIN, quando este não atende, seu domínio pelo programador é fundamental. Aprenda!
UNION
SQL DML - Data Manipulation Language
Para a manipulação de dados no banco, temos como comandos da linguagem SQL o INSERT, UPDATE e DELETE, os quais inserem, atualizam e removem dados, respectivamente. Vejamos, nos posts a seguir, como utilizá-los:
-
ArtigoPrincipais instruções em SQL
-
ArtigoComandos básicos em SQL - insert, update, delete e select
-
ArtigoUser Defined Functions: Trabalhando com SQL UDFs
Um banco de dados pode armazenar preços, datas e muitas outras informações relevantes para o negócio. Uma vez que o menor fragmento de dado pode influenciar uma decisão, por que excluí-los? Assista aqui um bate papo sobre o uso do comando delete.”
SQL DDL - Data Definition Language
Uma tarefa indispensável, porém realizada com menos frequência, é criar o banco de dados. Em seguida, é natural a criação das tabelas a ele relacionadas. Para isso, lidamos com os comandos CREATE DATABASE e CREATE TABLE da SQL, os quais serão presentados nos posts a seguir, organizados de acordo com o SGBD:
SQL Server
-
ArtigoCriando banco de dados e tabelas no SQL Server
-
ArtigoCriando tabelas usando o SQL Server Management Studio
-
ArtigoCriando relacionamentos entre tabelas: Database Diagrams - SQL Server
-
ArtigoCriando banco e tabelas - Garantindo a integridade dos dados
Oracle
MySQL
PostgreSQL
Ao criar a primeira tabela, logo estaremos em contato com o conceito de chave primária. Esse é um campo obrigatório e representa o identificador único de cada registro presente em uma tabela. E quando temos mais de uma tabela e precisamos estabelecer um relacionamento entre elas, vamos nos deparar com o conceito de chave estrangeira.
Para aprender sobre as chaves primária e estrangeira, acesse:
Índices
Um índice é um recurso muito importante quando o assunto é banco de dados. De forma simples, podemos descrevê-lo como uma estrutura que visa reduzir o tempo gasto com consultas ao banco, facilitando a busca pelos registros desejados.
Para simplificar a compreensão do que é um índice, façamos um paralelo. Considere dois livros: um com um índice e outro sem. Em qual deles você terá mais facilidade e gastará menos tempo para encontrar o assunto que deseja. Do mesmo modo, isso acontece com as tabelas de um banco de dados.
Para aprender sobre índices, como criá-los com a linguagem SQL (DDL), entre outros assuntos relacionados, acesse os posts abaixo:
-
ArtigoMelhoria de desempenho utilizando estatísticas e índices
-
ArtigoÍndices no SQL Server
-
ArtigoDominando os índices columnstore
Com o intuito de atender a diferentes cenários, existem diferentes tipos de índices. Um dos mais recentes e que tem sido bastante utilizado para aprimorar buscas textuais são os índices Full Text. Conheça alguns dos tipos de índices nos posts a seguir:
-
CursoFull text Search no SQL Server: Buscas Textuais
-
ArtigoÍndices Clusterizados e não clusterizados no SQL Server
-
ArtigoÍndices colunares no SQL Server
-
ArtigoDesvendando o SQL Server Columnstore Index
-
ArtigoSQL Server 2012 ColumnStore Index
-
ArtigoOtimizando consultas no Oracle utilizando índices
-
ArtigoTrabalhando com Índices no PostgreSQL
Saiba, também, que os índices devem ser utilizados com moderação. Em excesso, provavelmente mais prejudicarão do que ajudarão no desempenho como um todo. Voltando à analogia feita com o livro. Imagine se uma editora optasse por entregar esse livro com dois ou três tipos diferentes de índices. Quão trabalhoso seria para ela, a editora, manter esses índices atualizados a cada mudança no livro. Agora, imagine esse cenário em um banco de dados que é atualizado diariamente...
No post abaixo, aprenda sobre algumas boas práticas para trabalhar com índices:
Para encerrar esta seção, observe o índice localizado à direita nesta página. Quanto tempo você levaria para encontrar os conteúdos sobre Data Query Language sem esse recurso? Índices são fundamentais para um bom desempenho em qualquer cenário que envolva uma grande quantidade de dados. Portanto, saber como trabalhar com eles é, também, fundamental, para o sucesso da sua carreira como DBA.
Views
Uma view é definida por muitos como uma "tabela virtual" que agrupa os dados desejados selecionados a partir de alguma consulta.
Normalmente criamos views para facilitar a manipulação dos dados, pois com elas podemos inserir em uma "tabela", isto é, em uma visão, os dados que são necessários para algum tipo de processamento, reduzindo a complexidade na construção de consultas e, ao mesmo tempo, protegendo dados.
Para se aprofundar neste assunto, acesse os posts abaixo:
SQL Server
-
ArtigoT-SQL e a utilização de Views
-
ArtigoConceitos e criação de views no SQL Server
-
ArtigoViews de gerenciamento dinâmico (DMV) no SQL Server
-
ArtigoSQL Server: Turbine suas queries com indexed views
Oracle
-
ArtigoCriando Visões (Views) no Oracle
-
ArtigoOracle Materialized Views: Gerenciando em standby lógicos no Oracle
MySQL
PostgreSQL
SQL Procedural
A manipulação de dados armazenados em um banco de dados vai muito além das operações básicas de inserção, consulta e remoção. A administração do banco, por sua vez, também não se limita a criar tabelas e seus relacionamentos, bem como a execução de backups e tarefas relacionadas.
Ao avançar os estudos na área de banco de dados logo verificamos que o conjunto de comandos disponibilizado pela Structured Query Language, ou SQL, tem uma proposta muito bem delineada, mas não atende a todas as necessidades relacionadas a esse contexto, ao artefato que torna organizado e acessível um dos principais ativos de qualquer corporação, seus dados.
Diante disso, é comum que os principais players de banco de dados, a exemplo da Microsoft e da Oracle, oferecem extensões à tão respeitada linguagem de consulta. A Microsoft, com a T-SQL, e a Oracle, com a PL/SQL, fornecem, aos profissionais de banco de dados, um rico conjunto de recursos que possibilitam a criação dos mais específicos procedimentos para atender às demandas de qualquer tipo de aplicação.
Com elas, torna-se possível não apenas a manipulação dos dados, mas também o processamento dos mesmos, declarando, para isso, variáveis, estruturas de condição, repetição, procedimentos, funções, entre outros recursos.
Para cobrir esse assunto, essas extensões, categorizadas como Linguagens Procedurais, preparamos os tópicos a seguir. Neles você encontrará todo o conteúdo de referência, já publicado na DevMedia, para aprender, principalmente, sobre Transact-SQL e Procedural Language/SQL.
Transact-SQL - T-SQL
A SQL é a linguagem padrão para lidarmos com bancos de dados. No entanto, alguns SGBDs optaram por criar variações dessa para prover novas funcionalidades ou aprimorar recursos oferecidos pela Structured Query Language. A T-SQL, por exemplo, foi criada pela Microsoft em conjunto com a Sybase.
Nesta seção reunimos alguns posts que apresentam recursos da linguagem T-SQL.
Recursos básicos
-
ArtigoIntrodução ao T-SQL
-
ArtigoTrabalhando com a linguagem T-SQL
-
ArtigoTransact-SQL
-
ArtigoT-SQL no SQL Server 2012: Novidades
-
ArtigoNovos recursos na T-SQL e no uso de índices no SQL Server 2012
-
ArtigoTransact-SQL: T-SQL e a cláusula TOP
-
ArtigoTrabalhando com expressões CASE e a Função IIF no T-SQL
-
ArtigoTrabalhando com Whiles e IFs no T-SQL
-
ArtigoDynamic T-SQL: Trabalhando com operadores de concatenação(shortcodes)
-
ArtigoCarregando o conteúdo de arquivos XML em tabelas do SQL Server com T-SQL
Subqueries
-
ArtigoT-SQL Subqueries: Onde e quando utilizar
-
ArtigoTransact-SQL: Utilizando Subconsultas no T-SQL
-
ArtigoT-SQL e a utilização de Subconsultas correlacionadas
Tabelas temporárias
Boas práticas
PL/SQL
Além da T-SQL, outra opção bastante conhecida é a PL/SQL, ou Procedural Language/Structured Query Language. Criada pela Oracle, essa linguagem também oferece diferentes recursos para lidarmos com bancos de dados dessa empresa, assim como elaborar procedimentos que processarão dados para outras soluções Oracle. Abaixo, listamos um curso e alguns posts relacionados:
-
CursoPL/SQL Oracle
-
ArtigoConhecendo o PL/SQL
-
ArtigoPL/SQL Placeholders: Como definir o tipo de dados
-
ArtigoPL/SQL: Tipos de dados Escalar e LOB
-
ArtigoComo criar scripts DDL com PL/SQL: Conceitos e aplicações práticas
-
ArtigoTrabalhando com Packages PL/SQL
-
ArtigoPL/SQL Collections
-
ArtigoOracle PLSQL: Cursores
Assim como em qualquer linguagem, o tratamento de exceções também recebeu atenção especial da Oracle. Para aprender sobre o tratamento de exceções com a PL/SQL, acesse:
Stored Procedures
Um stored procedure, ou procedimento armazenado, é um recurso que permite a execução de lógica dentro do banco de dados, de forma semelhante a um método ou função no código de uma aplicação, mas escrito com a linguagem do banco de dados.
Assim, ao invés de deixar toda a lógica na aplicação cliente, podemos trazer parte dela para o servidor de banco de dados, o que, em muitos casos, pode trazer ganhos de performance, ao evitar que dados precisem ser enviados pela rede para serem processados.
A criação de stored procedures é definida pelo comando CREATE PROCEDURE e sua remoção, com o DROP PROCEDURE.
Para aprender sobre este assunto, acesse:
-
ArtigoComo trabalhar com Stored Procedures e Cursores no Oracle, SQL Server e Firebird e PostgreSQL
-
ArtigoVantagens da utilização de stored procedures em aplicativos web para melhoria de performance e segurança
Para se aprofundar em stored procedure, confira as publicações a seguir, organizadas de acordo com o banco de dados:
SQL Server
-
ArtigoIntrodução aos Stored Procedures no SQL Server
-
ArtigoStored Procedures no SQL Server 2008
-
ArtigoSQL Dinâmico com Stored Procedure
-
ArtigoTrabalhando com System Stored Procedures
-
ArtigoAlgoritmo de roteamento em stored procedure no SQL Server 2005
Oracle
-
ArtigoPL/SQL Functions e Procedures
-
ArtigoStored Procedures, Functions e Packages em bancos de dados Oracle
-
ArtigoEstrutura - Stored Procedures em PL/SQL
-
ArtigoCriando Procedure - Stored Procedures em PL/SQL
-
ArtigoParâmetro de entrada - Stored Procedures em PL/SQL
-
ArtigoParâmetro de saída - Stored Procedures em PL/SQL
MySQL
-
ArtigoStored Procedures no MySQL
-
ArtigoUtilizando Stored Procedures, Views e Triggers no MySQL
-
ArtigoMySQL Stored Procedures
PostgreSQL
Firebird
Triggers
Um trigger, ou gatilho, é um tipo de stored procedure que é chamado toda vez que um evento a ele relacionado acontece, por exemplo: a atualização de um dado no banco, a modificação da estrutura de uma tabela, entre outros.
Assim, é comum utilizar triggers quando o objetivo é manter a consistência de dados ou fazer alguma auditoria, por exemplo. O uso desse recurso é observado em códigos de definição (DDL) e manipulação (DML) de dados.
Para criar um trigger, iniciamos a declaração com o comando CREATE TRIGGER, e para remoção, DROP TRIGGER.
Uma introdução mais detalhada sobre este assunto pode ser obtida nos posts:
-
ArtigoIntrodução a Triggers
-
ArtigoDesvendando as Triggers
-
ArtigoDesenvolvendo Triggers em SQL Server, Oracle, Firebird e Postgres
-
DevCastVocê usa Triggers?
Nas publicações abaixo, organizadas de acordo com o banco de dados, exploramos situações mais específicas, que podem atender às demandas do seu dia a dia. Confira:
SQL Server
-
ArtigoTriggers no SQL Server: teoria e prática aplicada em uma situação real
-
DevCastUpdate Triggers: Como proteger tabelas de SQL Injection
-
ArtigoTrabalhando com Trigger de Logon no SQL Server
-
ArtigoUsando CDC e Trigger em Auditorias no SQL Server 2008
Oracle
Firebird
-
ArtigoTrabalhando com Triggers DML no Oracle
-
ArtigoSQL Triggers: É possível desabilitar uma trigger por usuário?
-
ArtigoAutomação de Trigger de Auto Incremento: Oracle
MySQL
-
ArtigoMySQL Básico: Triggers
-
ArtigoMySQL – Triggers
-
ArtigoImplementando controle de estoque no MySQL com triggers e procedures
PostgreSQL
Firebird
Desempenho e segurança
Ao gerenciar bancos de dados estamos tratando de um recurso de grande importância a qualquer instituição: seus dados. Devemos, portanto, prezar pela segurança e pelo desempenho de acesso aos mesmos.
Para tratar de desempenho, indicamos o post:
Com relação à segurança, entre tantos assuntos, destacamos aqui, principalmente, o SQL Injection. Aprenda o que é e como evitar acessando os links abaixo:
Documentação
Com o intuito de apoiar seu aprendizado sobre a linguagem SQL, elaboramos algumas documentações que você pode acessar para consulta rápida.
Na documentação a seguir temos um apanhado dos principais tópicos da DML e da DQL:
Nestes posts você aprenderá não apenas sobre a sintaxe dos comandos, mas também como utilizá-los da melhor maneira para obter o resultado desejado.
Conteúdo extra
A qualidade do código não é uma preocupação exclusiva a programadores. Ao criar qualquer comando a ser executado no banco de dados também devemos levar em consideração essa questão.
Lembre-se que esse código provavelmente passará por manutenção e essa tarefa pode ser atribuída a outras pessoas. Para lhe ajudar a escrever um código SQL mais fácil de ler e manter, recomendamos o post:
Por fim, saiba que essa linguagem também é aplicada em diferentes contextos, não ficando restrita ao acesso a dados persistidos em bancos relacionais. Isso nos mostra que seu aprendizado é útil e aplicável a outros cenários, como pesquisa semântica em documentos ou mesmo consultas a bases de dados não relacionais.
Mais sobre bancos de dados
Além dos cursos e exemplos sugeridos nesse guia, a DevMedia publica com frequência novos conteúdos sobre bancos de dados, os quais você pode conferir nos Guias de Consulta abaixo:
-
Guia de CarreiraBanco de dados para Programadores Guia
-
Guia de consultaModelagem de dados Guia
-
Guia de consultaSQL Server Guia
-
Guia de ConsultaMySQL Guia
-
Guia de ConsultaPostgreSQL Guia
-
Guia de ConsultaOracle Guia
-
Guia de ConsultaNoSQL e MongoDB Guia
Você também pode conferir todo o conteúdo de banco de dados clicando aqui.
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,00
Total: R$ 708,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 64,00 /mês
Total: R$ 768,00
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>