Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco de Dados
Introdução à Linguagem SQL
Kátia Adriana Alves Leite de Barros
2011
Sumário
1 Introdução à SQL ............................................................................................................................. 2
1.1 Características: ........................................................................................................................ 2
1.2 SQL Básico ............................................................................................................................... 3
1.3 MySQL ..................................................................................................................................... 3
1.4 Tipos de Dados no MySQL ....................................................................................................... 3
1.4.1 Tipos Numéricos Básicos: ................................................................................................ 3
1.4.2 Tipos para armazenar Data e Hora.................................................................................. 4
1.4.3 Tipo cadeias ..................................................................................................................... 4
2 DDL (Data Definition Language) ...................................................................................................... 5
2.1 Criação e exclusão de um Banco de Dados ............................................................................. 5
2.2 Criação de uma Tabela em um Banco de Dados ..................................................................... 6
2.2.1 Descrição das colunas: .................................................................................................... 6
2.2.2 Descrição das chaves: ...................................................................................................... 6
2.3 Exclusão de uma Tabela em um Banco de Dados ................................................................... 7
2.4 Alteração da estrutura de uma Tabela em um Banco de Dados............................................. 7
3 DML (Data Manipulation Language) .............................................................................................. 9
3.1 Filtros e Operadores ................................................................................................................ 9
3.2 Inserção de Dados de uma Tabela .......................................................................................... 9
3.3 Exclusão de Dados em uma Tabela ....................................................................................... 10
3.4 Atualização de Dados em uma Tabela .................................................................................. 10
3.5 Selecionando dados das tabelas ........................................................................................... 10
3.6 Consultas Aninhadas e Junções de Tabelas .......................................................................... 12
3.6.1 Cláusula (NOT) IN .......................................................................................................... 12
3.6.2 Cláusulas ANY / ALL ....................................................................................................... 13
3.6.3 Junção de Tabelas: Inner Join ........................................................................................ 13
Referências Bibliográficas ..................................................................................................................... 15
1 Introdução à SQL
A SQL teve sua primeira versão em 1974, por Chamberlain, na IBM, com o nome de SEQUEL. Seu
primeiro protótipo se deu em 1975 e no ano seguinte ela foi revisada e estendida. A SEQUEL
passou a se chamar SQL por razões jurídicas, em 1977 e em 1982 o Amercian National Standard
Institute tornou a SQL como padrão oficial de linguagem em ambiente relacional.
1.1 Características:
• É uma linguagem interativa de consulta, onde seus usuários podem definir consultas
independentes de programas.
• É uma linguagem de programação para acesso a banco de dados, seus comandos aparecem
embutidos em programas de aplicação.
• É uma linguagem de administração de dados, o administrador de banco de dados (DBA) pode
utilizar o SQL para realizar suas tarefas.
• É uma linguagem cliente/servidor, os programas clientes usam comandos SQL para se
comunicarem e compartilharem dados com o servidor.
• É uma linguagem para banco de dados distribuídos, ela auxilia na distribuição de dados por
vários nós e na comunicação de dados com outros sistemas.
• É uma linguagem que possibilita o acesso a outros bancos de dados em diferentes máquinas,
auxiliando na conversão entre diferentes produtos em diferentes máquinas.
DDL Implementação
Ambiente
criar (CREATE)
destruir (DELETE)
Modificar (ALTER)
SQL
DML
consultar (SELECT)
Segurança inserir (INSERT)
Controle remover (DELETE)
Administração atualizar (UPDATE)
Figura 1 - Visão Geral da SQL
2
Além dessas características, a SQL possui as seguintes vantagens:
Independência de fabricante
Portabilidade entre sistemas
Redução de custos com treinamento
Comandos em inglês
Consulta interativa
Múltiplas visões de dados
Definição dinâmica dos dados
Apesar de todas as suas vantagens, sua padronização inibe a criatividade. Ela também está longe de
ser uma linguagem relacional ideal, pois não dá suporte a alguns aspectos do modelo relacional.
1.3 MySQL
O MySQL é o mais popular SGBD SQL open source da atualidade. Ele consiste em um banco de
dados relacional que funciona em diversas plataformas como: Windows, Linux, FreeBSD, BSDI, Solaris,
Mac OSX, SunOS, SGI, etc. Além disso, ele é compatível com os mais populares drivers: ODBC, JDBC,
.NET, entre outros.
– Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de
1001 ao 31 de dezembro de 9999. O formato de armazenamento é de ano-mes-dia.
– DateTime: Combinação de data e hora. A margem de valores vai desde o 1 ed Janeiro
de 1001 às 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 às 23 horas,
59 minutos e 59 segundos. O formato de armazenamento é de ano-mes-dia
horas:minutos:segundos
– TimeStamp: Combinação de data e hora. A margem vai desde o 1 de Janeiro de 1970
ao ano 2037. O formato de armazenamento depende do tamanho do campo;
– Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59
segundos. O formato de armazenamento é 'HH:MM:SS'.
– Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano
2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos
armazenar o ano com dois ou quatro algarismos.
Observação: os seguintes caracteres nas sintaxes dos comandos, descritos nesta apostila, significam:
<> indica que o conteúdo entre eles deve ser definido pelo usuário
[] indica que o conteúdo entre eles é opcional
| indica que será válida qualquer uma das opções separadas por ele
... indica continuidade
Para realizar a exclusão de um banco de dados, o comando utilizado é o DROP DATABASE, cuja
sintaxe é:
DROP DATABASE <nomeBD>;
Exemplo: drop database BDAula;
2.2 Criação de uma Tabela em um Banco de Dados
O comando utilizado para a criação de tabelas em um banco de dados é o CREATE TABLE. Sua
sintaxe geral é:
CREATE TABLE <nomeTabela>
( <descriçãoColunas>,
<descriçãoChaves>
) Type InnoDB | MyISAM;
Obs.: A partir da versão 5.5 o default na criação de tabelas MySQL é o InnoDB, que permite
suporte a transações, chaves estrangeiras, nível de bloqueio por campo, etc.
1
As chaves declaradas como Unique Key foram denominadas, nesta apostila, como Chaves Secundárias. Uma
coluna pode ser declarada como Unique Key quando seus valores precisam ser únicos. Elas, assim como a PK,
identificam de forma única uma tupla (ocorrência), entretanto, não podem ser referenciadas em outra tabela
como FK.
Ex.: Funcionarios(CodFunc, CPF, NomeFunc, CodCargo, e-mail)
Teremos: CodFunc (PK), CodCargo (FK) e, como chaves secundárias, o e-mail e o CPF, cujos valores não podem
se repetir.
As ações são mutuamente exclusivas e podem ser:
NO ACTION Produz um erro indicando que a exclusão ou a atualização cria uma
violação da restrição de chave estrangeira. Esta é a ação padrão.
CASCADE Exclui qualquer linha que faça referência à linha excluída ou atualiza o
valor da coluna que faz referência para o novo valor da coluna
referenciada, respectivamente.
SET NULL Atribui o valor nulo às colunas que fazem referência.
SET DEFAULT Atribui o valor padrão às colunas que fazem referência.
Alteração de Chaves
Inclusão de Chave Estrangeira (FK):
Quando a alteração incluir a modificação de um atributo simples para uma chave estrangeira,
será necessário que o atributo tenha o mesmo formato da chave principal a qual se
referenciará;
Sintaxe:
ALTER TABLE <nome da Tabela>
ADD FOREIGN KEY (<coluna FK>) REFERENCES <tabela origem FK> (<PK Tabela Origem>)
Exemplo:
alter table tabfunc
add foreign key (codcargo) references tabcargos (cbo);
Observação: Para incluir dados em uma tabela não precisamos utilizar todas as colunas,
somente aquelas nas quais queremos persistir os dados.
Prestar bastante atenção para:
Não definir valores para as colunas definidas como AUTO_INCREMENT; e,
Não esquecer de definir valores para as colunas que não aceitam Null.
Para a exclusão de dados em uma tabela utiliza-se o comando DELETE, com a seguinte sintaxe:
DELETE FROM <nome da tabela> [WHERE <condição>];
Observação: a cláusula WHERE restringe os registros nos quais o comando DELETE atuará.
Quando ela não for especificada, o comando apagará todos os registros da
tabela. Além disso, o comando DELETE retorna o número de registros excluídos
da tabela.
Observação: a cláusula SET atribui a um campo o valor de uma expressão que pode ou não
conter o valor de um campo da própria tabela. A cláusula WHERE restringe as
atualizações apenas aos registros que satisfarão suas condições.
Sendo que:
Para visualizar os dados de todas as colunas, ao invés de colocar os nomes das colunas,
deve-se colocar o caractere asterisco (*);
Quando se utiliza mais de uma tabela pode-se definir uma letra como apelido de uma
tabela e, quando for necessário utilizar o nome da tabela no comando, utiliza-se seu
apelido, que pode ser um nome muito menor e mais fácil de trabalhar.
A expressão de condição utilizada na cláusula WHERE serve como filtro permitindo a
execução do comando apenas nas tuplas que satisfaçam a condição.
A cláusula GROUP BY permite criar grupos de tuplas quando se utiliza várias tabelas,
além de permitir a utilização de funções predefinidas que retornem valores em grupos.
A cláusula HAVING permite inserir condições sobre o agrupamento de tuplas, gerado
pela cláusula GROUP BY.
As funções utilizadas pela SQL são:
A cláusula ORDER BY define a ordem para a consulta que pode ser ASC – ascendente,
ou DES – descendente. Quando não utilizada o SELECT assumirá ASC.
Exemplos:
{lista todos as informações dos alunos da tabela tbalunos}
select *
from tbalunos;
{lista a matrícula e o nome de todos os alunos que possuem o nome com a string final “dias”}
select tbmatricula, tbnome
from tbalunos
where tbnome like '%dias’;
Matricula
Nome
CH RG Código Nome
Codigo Nome
Nota
Frequência
TBCurso
Exemplos: Buscar o nome de todos os alunos, exceto que tirou a menor nota:
select a.matricula, a.nome, m.nota
from tbaluno as a, tbmatricula as m
where a.matricula = m.matricula and
m.nota > any (select m.nota
from tbmatricula as m)
2
Passos válidos para as cláusulas IN, ANY e ALL
Exemplos: Recuperar todos os nomes das disciplinas que possuem mais de dois alunos
matriculados.
COUGO, Paulo. Modelagem Conceitual e Projeto de Banco de Dados. Rio de Janeiro: Elsevier, 1997.
SILBERSCHATZ, Abraham; KORTH, Henry, F.; SUDARSHAN, S. Sistema de Banco de Dados. Makron
Books, 1999.
TEOREY, Toby; LIGHTSTONE, Sam; NADEAU, Tom. Projeto e Modelagem de Bancos de Dados. Rio de
Janeiro: Campus, 2007.
ELMASI, Ramez; NAVATHE, Samkant B. Sistemas de Banco de Dados.São Paulo: Pearson, 2011.