SQL Básico Liojes de Oliveira Carneiro professor.liojes@gmail.com www.professor-liojes.blogspot.com O que são Bancos de Dados? É o software que armazena, organiza, controla, trata e distribui os dados de uma organização; Mecanismo de armazenamento de dados; Conjunto de informações com estrutura regular. 1
O que são Bancos de Dados? Banco de dados não relacionais; Banco de dados relacionais: Dados organizados em tabelas; Tabelas relacionam-se; Ocupam menos espaço; Maior velocidade de acesso aos dados; Padrão mundial. Hierarquia de Dados Todos os dados são armazenados conforme uma hierarquia: Caracteres formam palavras; As palavras descrevem características de uma entidade; O conjunto de características de uma entidade forma um registro; O conjunto dos registros forma um arquivo; O conjunto de arquivos forma um Banco de Dados. 2
Hierarquia de Dados Ilustrando com o exemplo de uma biblioteca: Caracteres formam títulos, nomes, números etc.; Nome dos autores, título do livro, nome da editora etc., formam as características de cada volume; As características de um livro formam o registro daquele livro; Todas os registros de todos os livros formam o arquivo dos livros; O arquivo dos livros com o arquivo dos usuários, o arquivo dos funcionários, incluindo o arquivo do empréstimos, formam o Banco de Dados da biblioteca. Campos Uma vez determinadas quais as características úteis de uma entidade, todos os registros conterão campos correspondentes a estas características; Os campos podem armazenar textos, valores, datas ou horas, ou operandos lógicos (Sim/Não); Campos desnecessários podem diminuir o desempenho do BD. 3
Registros São o conjunto das informações de um item ou elemento de um arquivo; Nenhum registro contém mais ou menos campos que os outros do mesmo arquivo (ainda que algum campo fique vazio); Os registros podem ser acrescentados indefinidamente (arquivo de clientes ou de produtos etc.). Arquivos Os arquivos devem armazenar as informações sem redundância; Os arquivos são como tabelas, compostos de colunas (campos) e linhas (registros); Cada registro de um arquivo deve ser acessado por um campo que o identifica de forma única: a chave primária; Para um BD ser conciso e eficiente, os seus arquivos devem se relacionar; 4
Arquivos Visões e Índices Visões (Views): Consultas préestabelecidas; Índices: Dados ordenados para aumento de performance; 5
SGBD Sistema Gerenciador de Banco de Dados DBMS DataBase Management System SGBD é um programa que facilita a manipulação/interação com os dados. Exemplos de Banco de Dados 6
SQL SQL Structured Query Language Linguagem Estruturada de Consulta Linguagem declarativa, detalha a forma do resultado; Criada no início dos anos 70 (IBM); Necessidade de padronização: American Nacional Standards Institute (ANSI, 86) ; Internacional Organization for Standardization (ISO, 87); Características próprias p/ cada SGBD. SQL SQL Structured Query Language (Linguagem Estruturada de Consulta) Formada pelo conjunto de linguagens: DDL Data Definition Language DML Data Manipulation Language DQL Data Query Language DCL Data Control Language DTL Data Transaction Language 7
DDL - Data Definition Language Linguagem de Definição de Dados CREATE: Cria uma estrutura; ALTER: Altera uma estrutura; DROP: Exclui uma estrutura. DML Data Manipulation Language Linguagem de Manipulação de Dados INSERT: Insere dados; UPDATE: Altera dados; DELETE: Exclui dados. 8
DQL Data Query Language Linguagem de Consulta de Dados SELECT: Retorna dados; Ordenação de dados; Agrupamento de dados; Funções aritméticas; Filtros de seleção. DCL Data Control Language Linguagem de Controle de Dados GRANT: Habilita acesso a dados e operações; REVOKE: Revoga acesso a dados e operações. 9
DTL Data Transaction Language Linguagem de Transação de Dados START TRANSACTION: Inicia a transação; COMMIT: Concretiza a transação; ROLBACK: Anula a transação. Relacionamentos / Chaves Relacionamentos Ligações entre tabelas; Chave Primária (PK) Coluna com valores únicos; Chave Composta 2 ou mais colunas criando uma combinação única; Chave estrangeira (FK) Chave primária de outra tabela. 10
Relacionamentos de um BD Relacionamentos As tabelas ou arquivos devem relacionar-se para diminuir a redundância do BD; Os relacionamentos são criados através das chaves primárias. Ex.: No arquivo de pedidos, não se repete o nome e os dados dos clientes, mas apenas seu Código (chave primária dos clientes); No arquivo de produtos, não se repetem os nomes dos fornecedores, mas apenas seu Código (chave primária dos fornecedores). 11
Relacionamentos - Tipos 1 para 1 - ( 1:1 ) 1 para muitos - ( 1:* ) Muitos para muitos - ( *:* ) 1 para 1 ( 1:1 ) Aquele onde os campos que fazem o relacionamento são chaves primárias. Cada registro de uma tabela se relaciona com apenas um registro da outra tabela. Este relacionamento não é muito comum. Exemplo: RECEITA FEDERAL <-> DETRAN 12
1 para muitos ( 1:* ) Aquele onde uma tabela tem um campo chave primária que se relaciona com outra tabela através de um campo chave estrangeira. É o tipo de relacionamento mais utilizado. Exemplos: Clientes Pedidos, Produtos Itens, Categorias Itens, Fornecedores Produtos, NotaFiscal - Produtos Muitos para muitos ( *:* ) Este tipo de relacionamento não dá para ser implementado no modelo relacional, portanto sempre que nos deparamos com um deles devemos dividir em dois relacionamentos um para muitos (criando uma terceira tabela, que armazenará o lado vários dos relacionamentos). 13
Muitos para muitos ( *:* ) Exemplo: Pedidos - Produtos Cada pedido pode conter vários produtos, assim como cada produto pode estar em vários pedidos. A saída é criar uma tabela que contenha os itens do pedido. Pedidos - Pedidos_Itens - Produtos Pedidos 1 - * Pedidos_Itens * - 1 Produtos Relacionamentos de um BD 14
Chaves Campo que identifica um registro unicamente. Quanto menor melhor (desempenho); Não são permitidos valores nulos; Caso a tabela não tenha um campo que identifique unicamente cada linha, podese usar um campo que numere os registros seqüencialmente Campos - Tipos de dados Booleano e Numéricos 15
Campos - Tipos de dados String Data e hora Campos - Tipos de dados Listas customizadas BLOB Arquivos e imagens (binários); TEXT Grandes strings (textos); Redes IP, MAC; Monetários R$, U$ com formatação; Geométricos Formas geométricas. 16
Campos - Atributos NULL / Not NULL Permite ou não valores nulos Unsigned / Signed Permite ou não negativos Auto-increment Sequências Zerofill Preenche com 0 s à esquerda Campos Cada campo 1 dado; Não armazenar resultados de cálculos; Tipo correto (numérico, lógico, caractere). 17
Boas práticas de armazenamento Espaço em disco Qto menor o tipo, menos espaço em disco; Processamento e busca Qto menor o tipo, mais rápido o processamento; Mau uso dos tipos de dados Numéricos em string; Campos maiores que o dado; Bom uso dos tipos de dados Escolher o menor tipo necessário. DDL - Data Definition Language Linguagem de Definição de Dados CREATE: Cria uma estrutura; ALTER: Altera uma estrutura; DROP: Exclui uma estrutura. 18
Criando um banco de dados Como funciona: Criando um Banco de Dados CREATE DATABASE <Nome> Nomes sem espaços e sem caracteres especiais; Conjuntos mais utilizados: Latin1 e UTF-8; ALTER DATABASE <Nome> <Propriedade> DROP DATABASE <Nome> Definitiva e irreversível 19
Criando uma tabela Como funciona: Criando uma tabela CREATE TABLE <Nome> (<Campos>) Campo: <Tipo> <Nome> <Atributos> Atributos: Null, Zerofill, Unisigned... ALTER TABLE <Nome> <Propriedade> DROP TABLE Definitiva e irreversível 20
Criando um índice O que são índices? Como funciona: Criando um índice CREATE INDEX <Nome> ON <TabelaEColuna> ALTER INDEX <Nome> <Propriedade> DROP INDEX <Nome> 21
Exemplos de Banco de Dados Exemplos de Banco de Dados 22
Exemplos de Banco de Dados Exemplos de Banco de Dados 23
Exemplos de Banco de Dados Exercícios: 24
DML Data Manipulation Language e DQL Data Query Language Linguagem de Manipulação de Dados INSERT: Insere dados; UPDATE: Altera dados; DELETE: Exclui dados. Linguagem de Consulta de Dados SELECT: Retorna dados; Ordenação de dados; Agrupamento de dados; Funções aritméticas; Filtros de seleção. DQL Data Query Language Linguagem de Consulta de Dados SELECT: Retorna dados; Ordenação de dados; Agrupamento de dados; Funções aritméticas; Filtros de seleção. 25
Trabalhando os dados INSERT INTO <Tabela> VALUES (<valores>) INSERT INTO CLIENTES VALUES ( JOÃO, 789.456.123-11, CE ); INSERT INTO CLIENTES (NOME, CPF) VALUES ( JOÃO, 789.456.123-11 ); SELECT <Campos> FROM <Tabela> SELECT * FROM CLIENTES; SELECT NOME FROM CLIENTES; UPDATE <Tabela> SET <Campo=Valor> UPDATE CLIENTES SET NOME= JOÃO DA SILVA ; DELETE FROM <Tabela> DELETE FROM CLIENTES; Filtros de seleção Registros selecionados (WHERE) Operadores relacionais Igual (=), Diferente (!=); Maior (>), Maior ou igual (>=); Menor (<), Menor ou igual (<=); Nulo (IS NULL), ñ-nulo (IS NOT NULL); Intervalo (BETWEEN); Valor parcial (LIKE) Operadores lógicos AND, OR, NOT 26
Usando os filtros de seleção SELECT <Campos> FROM <Tabela> WHERE <Condição> SELECT * FROM CLIENTES WHERE CPF= 123.456.789-10 UPDATE <Tabela> SET <Campo=Valor> WHERE <Condição> UPDATE CLIENTES SET NOME= JOSÉ ANTONIO WHERE CPF= 456.123.789-22 ; DELETE FROM <Tabela> WHERE <Condição> DELETE FROM CLIENTES WHERE CPF= 789.456.123-11 Atributos especiais Apelido de tabela SELECT <Campos> FROM <Tabela Apelido> <...> Apelido de campos (AS) SELECT <Campos AS Apelido> FROM <...> Unindo seleções (UNION [ALL]) SELECT <...> UNION SELECT <...> 27
Exercícios: Documentação MySQL 28
Referências www.softblue.com.br www.mysql.com 29