Lecture SQL
Lecture SQL
Introdução
●
Structured Query Language
●
Linguagem padrão de acesso aos dados no modelo relacional
●
Vários padrões existentes:
●
ANSI* SQL, SQL92 (a.k.a. SQL2), SQL99 (a.k.a. SQL3), ….
●
Esquema
●
Estrutura que contém descrições dos objetos criados pelo
usuário (também é armazeno no catálogo)
Introdução - Ambiente
●
Data Definition Language (DDL)
●
Conjunto de comandos para gerenciar os objetos do BD
●
create table, create view, create index
●
Data Manipulation Language (DML)
●
Conjunto de comandos para consultar e manter os dados
do banco de dados
●
select, update, insert, ...
●
Data Control Language (DCL)
●
Conjunto de comandos para controlar o banco de dados,
definir privilégios, entre outros
●
create user, grant, revoke, ...
DDL
●
Como criar banco de dados e tabelas:
●
Conexão psql (postgresql)
●
psql -h <servidor> -U <usuario> -d <banco>
tipo de usuário
conectado: super usuário
nome do
tipo de
banco
espera:
pronto para receber um novo comando
DDL
●
Como criar banco de dados e tabelas:
●
Conexão psql (postgresql)
●
psql -h <servidor> -U <usuario> -d <banco>
tipo de usuário
conectado: normal
nome do
tipo de
banco
espera:
esperando a continuação do comando
DDL
●
Criar um banco de dados
●
create database <nome>;
●
Exemplo: create database locadora;
●
Como conectar:
●
\c <nome>, exemplo \c locadora
banco
conectado
DDL
●
Criação de tabelas
create table <nome> (
<atributo1> <dominio> <restrição nulo>,
: : : ,
<atributon> <dominio> <restrição nulo>,
<restrições de chaves>);
DDL
●
Criação de tabelas
integer – 4 bytes
real – 4 bytes (6 decimais)
number(tamanho, casas decimais) → (6,4) → 99.9999
varchar (n) – n é tamanho máximo da sequência
date – datas (ver formato configurado no banco)
serial – incrementa automaticamente o atributo
DDL
●
Criação de tabelas
cliente(codcli,cpf,nome,email,ender,ntel)
veiculo(placa,modelo,ano,cor,kilom)
tarifa(descr,valor)
locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa (tarifa))
cliente(codcli,cpf,nome,email,ender,ntel)
veiculo(placa,modelo,ano,cor,kilom)
tarifa(descr,valor)
locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa (tarifa))
cliente(codcli,cpf,nome,email,ender,ntel)
veiculo(placa,modelo,ano,cor,kilom)
tarifa(descr,valor)
locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa (tarifa))
cliente(codcli,cpf,nome,email,ender,ntel)
veiculo(placa,modelo,ano,cor,kilom)
tarifa(descr,valor)
locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa (tarifa))
cliente(codcli,cpf,nome,email,ender,ntel)
veiculo(placa,modelo,ano,cor,kilom)
tarifa(descr,valor)
locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa(tarifa))
seleção
projeção
●
select modelo, placa from veiculo where ano > 2019;
modelo placa
------------------------------
HR-V XX-77
resultado
DML
●
Consultas
●
Comando select
●
select [distinct] <lista atributos> from <tabela> where <filtro>
order by <atributo>
like (% e _):
select placa from veiculo
where placa like '%K%';
placa
------- select placa, modelo from veiculo
MK-10 where ano in (2015,2020);
KK-10 placa modelo
OK-01 -----------------------------
----------------------------------------------- XX-77 HR-V
select placa from veiculo OK-01 Celta
where placa like '_K-10'
select placa, modelo from veiculo
placa
where ano between 2015 and 2018;
-------
placa modelo
MK-10
-------------------------
KK-10
KK-10 Ka
TT-88 QQ
OK-01 Celta
DML
●
Consultas
●
Exemplos cláusula where: