Thanks to visit codestin.com
Credit goes to pt.scribd.com

0% acharam este documento útil (0 voto)
30 visualizações56 páginas

Introdução Ao SQL

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
30 visualizações56 páginas

Introdução Ao SQL

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 56

Introdução ao SQL

Aula 05

Profº: Tiago Silva


Reitor
Prof. Eduardo Ramos
[email protected]

Pró-Reitor
Prof. Andre Kischinevsky
[email protected]
O que é SQL?
O que é SQL?

SQL (Structured Query Language) é a linguagem padrão usada para gerenciar e manipular
bancos de dados relacionais. Basicamente, é como conversamos com o banco de dados para
dizer a ele o que queremos fazer: buscar dados, inserir novos registros, atualizar informações
existentes ou apagar dados.
Importância do SQL
Importância do SQL

1. Manipulação de Dados: Facilita a inserção, atualização e exclusão de dados em grandes volumes.


2. Consultas Complexas: Permite a criação de consultas complexas para recuperar exatamente os
dados que você precisa.
3. Consistência e Integridade: Ajuda a manter a integridade e consistência dos dados, garantindo
que todos os dados sigam determinadas regras.
4. Interoperabilidade: É amplamente suportado, o que significa que você pode usar SQL em
diferentes sistemas de banco de dados, como MySQL, PostgreSQL, SQL Server, etc.
5. Escalabilidade: Essencial para a gestão eficiente de grandes quantidades de dados em ambientes
empresariais.

Essencialmente, o SQL é a espinha dorsal do gerenciamento de dados em muitos sistemas e aplicações,


tornando-se uma habilidade fundamental para desenvolvedores e administradores de banco de dados.
Sintaxe básica
CREATE DATABASE databasename; (Cria um novo banco de dados)

CREATE SCHEMA schema_name; (Cria um novo schema)

DROP DATABASE databasename; (Deleta um banco de dados)

DROP SCHEMA schema_name; (Deleta um schema)

DROP TABLE table_name; (Deleta uma tabela)

SET search_path TO schema_name; (Usado para selecionar um schema e com isso não é necessário toda vez
fazer uma consulta ou um insert inserindo schema.tabela, com esse comando você seleciona apenas a tabela e ele vai
direto na tabela, pois o schema está selecionado)
Nova tabela

Sintaxe:
Nova tabela

Postgres:

MySQL:
Alter table

ALTER TABLE table_name ADD column_name datatype;

Exemplo 1 (Nova coluna): ALTER TABLE aluno ADD COLUMN email VARCHAR(255);

Exemplo 2 (Deletando coluna): ALTER TABLE aluno DROP COLUMN email;

Exemplo 3 (Renomeando coluna): ALTER TABLE aluno RENAME COLUMN email to _email;

Exemplo 4 (Modificando o tipo da coluna): ALTER TABLE aluno ALTER COLUMN email TYPE
VARCHAR(500);
Tipos de dados - PostgreSQL

Inteiros: Strings:
● SMALLINT: Inteiro de 2 bytes. ● CHAR(n) ou CHARACTER(n): Cadeia de
● INTEGER ou INT: Inteiro de 4 bytes. caracteres de tamanho fixo.
● VARCHAR(n) ou CHARACTER
● BIGINT: Inteiro de 8 bytes.
VARYING(n): Cadeia de caracteres de
tamanho variável.
Numéricos e Decimais: ● TEXT: Texto de tamanho ilimitado.
● NUMERIC: Precisão exata,
especificável pelo usuário. Datas e Horas:
● REAL: Precisão simples. ● DATE: Data (ano, mês, dia).
● DOUBLE PRECISION: Precisão dupla. ● TIME [WITHOUT TIME ZONE]: Hora
(sem fuso horário).
● TIMESTAMP [WITHOUT TIME ZONE]:
Booleanos: Data e hora (sem fuso horá
● BOOLEAN: Verdadeiro ou falso.
Tipos de dados - MySQL

Inteiros: Strings:
● TINYINT: Inteiro de 1 byte. ● CHAR(n): Cadeia de caracteres de tamanho
● SMALLINT: Inteiro de 2 bytes. fixo.
● MEDIUMINT: Inteiro de 3 bytes. ● VARCHAR(n): Cadeia de caracteres de
● INT ou INTEGER: Inteiro de 4 bytes. tamanho variável.
● BIGINT: Inteiro de 8 bytes. ● TEXT: Texto de tamanho ilimitado.
● TINYTEXT, MEDIUMTEXT, LONGTEXT:
Variações de TEXT com diferentes tamanhos.
Numéricos e Decimais:
● DECIMAL ou NUMERIC: Precisão Datas e Horas:
exata, especificável pelo usuário. ● DATE: Data (ano, mês, dia).
● FLOAT: Precisão simples. ● TIME: Hora (sem fuso horário).
● DOUBLE ou DOUBLE PRECISION: ● DATETIME: Data e hora (sem fuso horário).
Precisão dupla. ● TIMESTAMP: Data e hora (com fuso horário).

Booleanos:
● BOOLEAN ou BOOL: Verdadeiro ou falso.
SELECT

SELECT: Utilizado para selecionar dados de uma tabela.

Sintaxe:

Exemplo:
INSERT

INSERT: Utilizado para inserir novos registros em uma tabela.

Sintaxe:

Exemplo:
Filtragem de Dados

WHERE: Utilizado para filtrar registros com base em uma condição.

Sintaxe:

Exemplo:
Like
Limit e Offset (Criando paginação)

Exemplo de caso prático de paginação:

Se você tiver 100 registros na tabela turma e quiser


pegar a terceira página de 10 registros
(considerando que as páginas começam do índice 0),
o OFFSET seria 20 (10 registros por página * 2
LIMIT 10: Retorna no máximo 10 páginas anteriores):
linhas.
Página 1: OFFSET 0 LIMIT 10
OFFSET 20: Ignora as primeiras 20
linhas antes de começar a retornar Página 2: OFFSET 10 LIMIT 10
os resultados.
Página 3: OFFSET 20 LIMIT 10 (exemplo acima).
ORDER BY alunos: Garante que os
resultados estejam em uma ordem
específica, para que a paginação seja
consistente.
UPDATE

UPDATE: Utilizado para modificar dados existentes em uma tabela.

Sintaxe:

Exemplo:
DELETE

DELETE: Utilizado para remover registros de uma tabela.

Sintaxe:

Exemplo:
Ordenação de dados

ORDER BY: Utilizado para ordenar os resultados.

Sintaxe:

Exemplo:
Agrupamento de Dados

GROUP BY: Utilizado para agrupar registros que têm valores iguais em colunas especificadas.

Sintaxe:

Exemplo:
HAVING

HAVING: É usado em SQL para filtrar registros após o agrupamento de dados.

Sintaxe:

Exemplo:
Explicação do HAVING

O que acontece aqui:

● SELECT turma, AVG(nota) AS media_notas: Seleciona a turma e a média das notas,


renomeando a média como media_notas.
● FROM alunos: Especifica a tabela de onde os dados estão sendo selecionados.
● GROUP BY turma: Agrupa os resultados por turma.
● HAVING AVG(nota) > 70: Filtra os grupos onde a média das notas é maior que 70.
Funções agregadas

COUNT, SUM, AVG, MIN, MAX: Utilizadas para realizar operações em conjuntos de valores.

Sintaxe:

Exemplo:
Integridade dos dados
Constraint

Constraints em SQL são regras aplicadas às colunas de uma tabela para garantir a integridade
dos dados. Elas ajudam a assegurar que os dados inseridos no banco de dados atendam a
critérios específicos e mantenham a consistência.
Primary Key

PRIMARY KEY: Garante que cada valor em uma coluna seja único e não nulo, identificando
exclusivamente cada linha na tabela.
Foreign Key

FOREIGN KEY: Garante a integridade referencial entre duas tabelas, assegurando que o valor
em uma coluna corresponda a um valor em uma coluna de outra tabela.
Unique

UNIQUE: Garante que todos os valores em uma coluna ou grupo de colunas sejam únicos.
Not Null

NOT NULL: Garante que uma coluna não aceite valores nulos.
CHECK

CHECK: Garante que os valores em uma coluna atendam a uma condição específica.
Índices
O que são índices

Índices são estruturas de dados que melhoram a velocidade das operações de consulta em uma
tabela de banco de dados, permitindo acesso mais rápido aos dados. Eles funcionam de forma
semelhante aos índices em livros, permitindo que o banco de dados encontre rapidamente a
localização dos dados sem ter que percorrer todas as linhas da tabela.
Tipos Comuns de Índices

Índices B-tree: São os mais comuns e adequados para a maioria das consultas. Eles organizam os
dados de forma balanceada, permitindo buscas rápidas.

Índices Hash: São úteis para buscas de igualdade, mas não suportam intervalos de consultas.
Benefícios dos Índices

● Melhoria no Desempenho: Reduzem o tempo de execução das consultas SELECT.


● Integridade dos Dados: Auxiliam na manutenção da integridade referencial e garantem a
unicidade dos dados.
● Rapidez nas Consultas: Permitem acessos mais rápidos e eficientes aos dados,
especialmente em tabelas grandes.

Mas tenha cuidado: Índices também têm um custo de desempenho em operações de inserção,
atualização e exclusão, pois o índice deve ser mantido atualizado. A criação de índices deve ser
balanceada para otimizar a leitura e o desempenho geral do banco de dados.
ACID

O conceito ACID no contexto de bancos de dados relacionais, como SQL, representa um


conjunto de propriedades que garantem que as transações são processadas de forma confiável.
ACID é um acrônimo para Atomicidade, Consistência, Isolamento e Durabilidade. Vamos
detalhar cada um desses componentes:
Atomicidade

A propriedade da atomicidade garante que todas as operações dentro de uma transação são
completamente executadas ou nenhuma delas é.

Exemplo: Se um banco de dados está processando uma transação de transferência de dinheiro


entre duas contas, a atomicidade assegura que o dinheiro seja debitado de uma conta e
creditado na outra, ou que nenhuma dessas ações ocorra.
-- Iniciar a Transação

BEGIN;

-- Inserir dados na tabela de clientes

INSERT INTO clientes (nome, email) VALUES ('João Silva', '[email protected]');

-- Inserir dados na tabela de pedidos

INSERT INTO pedidos (cliente_id, data_pedido, valor_total) VALUES (currval('clientes_id_seq'),


CURRENT_DATE, 150.00);

-- Confirmar a Transação

COMMIT;

-- Em caso de erro, a transação pode ser revertida com o seguinte comando:

ROLLBACK;
Consistência

A consistência assegura que uma transação levará o banco de dados de um estado válido para
outro estado válido, mantendo a integridade dos dados conforme regras pré-definidas.

Exemplo: Após uma transação, todas as regras de integridade do banco de dados, como chaves
estrangeiras e restrições de valores, devem ser cumpridas.
Isolamento

A propriedade do isolamento assegura que as transações simultâneas sejam executadas como se


fossem sequenciais, evitando interferências entre elas.

Exemplo: Se dois usuários tentam atualizar o mesmo registro ao mesmo tempo, o isolamento
garante que uma transação seja concluída antes da outra começar.
-- Transação 1

BEGIN;

UPDATE contas SET saldo = saldo - 100 WHERE id = 1;

-- Espera a confirmação antes de continuar

-- Transação 2

BEGIN;

UPDATE contas SET saldo = saldo - 50 WHERE id = 1;

-- Espera a conclusão da Transação 1 ou falha com erro de serialização

-- Transação 1

COMMIT;

-- Transação 2

-- COMMIT ou ROLLBACK se houver conflito


Durabilidade

A durabilidade garante que, uma vez que uma transação é confirmada (commit), suas alterações
persistem mesmo que ocorra uma falha no sistema.

Exemplo: Se o sistema falha após uma transação ser confirmada, os dados envolvidos nessa
transação ainda estarão corretos e completos após a recuperação do sistema.
Grupos de Comandos
SQL
DDL - Data Definition
Language (Linguagem de
Definição de Dados)
DDL

Função: Responsável por criar, modificar e excluir os objetos de um banco de dados, como schemas, tabelas, índices, visões e
outros.

Comandos Exemplos:

CREATE SCHEMA: Cria um novo schema.

CREATE TABLE: Cria uma nova tabela.

ALTER TABLE: Modifica uma tabela existente (adiciona, remove ou altera colunas).

DROP TABLE: Exclui uma tabela.

CREATE INDEX: Cria um índice para acelerar a busca por dados.

CREATE ROLE: Cria uma nova role.

CREATE USER: Cria um novo usuário.


DML - Data Manipulation
Language (Linguagem de
Manipulação de Dados)
DML

Função: Utilizada para inserir, atualizar e excluir dados dentro das tabelas de um banco de
dados.

Comandos Exemplos:

INSERT INTO: Insere novos registros em uma tabela.

UPDATE: Atualiza os valores de registros existentes.

DELETE: Exclui registros de uma tabela.


DQL - Data Query
Language (Linguagem de
Consulta de Dados)
DQL

Função: Permite selecionar e recuperar dados de um banco de dados. É a linguagem mais


utilizada para gerar relatórios e análises.

Comando Principal:

SELECT: Extrai dados de uma ou mais tabelas, com base em critérios específicos.
DTL - Data Transaction
Language (Linguagem de
Transação de Dados) ou
TCL - Transaction Control
Language
DTL

Função: Controla as transações em um banco de dados, garantindo a integridade dos dados.


Uma transação é uma sequência de operações que devem ser executadas como um todo, ou seja,
todas as operações são confirmadas (commit) ou nenhuma é confirmada (rollback).

Comandos Exemplos:

BEGIN TRANSACTION: Inicia uma transação.

COMMIT: Confirma todas as alterações realizadas na transação.

ROLLBACK: Desfaz todas as alterações realizadas na transação.


DCL - Data Control
Language (Linguagem de
Controle de Dados)
DCL

Função: Gerencia as permissões de acesso aos dados, definindo quem pode realizar quais
operações no banco de dados.

Comandos Exemplos:

GRANT: Concede privilégios a um usuário.

REVOKE: Revoga privilégios de um usuário.


Em resumo:

● DDL define a estrutura do banco de dados.


● DML manipula os dados dentro das tabelas.
● DQL consulta os dados.
● DTL/TCL controla as transações.
● DCL controla o acesso aos dados.
Exemplo Prático

Imagine um banco de dados de uma biblioteca.

● DDL: Criar uma tabela chamada "livros" com campos como "id", "titulo", "autor" e
"ano_publicacao".
● DML: Inserir um novo livro nessa tabela.
● DQL: Consultar todos os livros publicados após o ano 2000.
● DTL: Iniciar uma transação para inserir vários livros de uma só vez e confirmar ou
desfazer a transação.
● DCL: Conceder permissão para um bibliotecário consultar e inserir novos livros.

Você também pode gostar