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

Lecture SQL

O documento aborda a linguagem SQL, destacando sua importância como padrão para acesso a dados em bancos de dados relacionais. Ele detalha os tipos de comandos SQL, como DDL, DML e DCL, e fornece exemplos práticos de criação de tabelas e inserção de dados. Além disso, discute a consulta de dados e as funções disponíveis no PostgreSQL para manipulação de strings e datas.

Enviado por

rhuanpzo
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)
0 visualizações26 páginas

Lecture SQL

O documento aborda a linguagem SQL, destacando sua importância como padrão para acesso a dados em bancos de dados relacionais. Ele detalha os tipos de comandos SQL, como DDL, DML e DCL, e fornece exemplos práticos de criação de tabelas e inserção de dados. Além disso, discute a consulta de dados e as funções disponíveis no PostgreSQL para manipulação de strings e datas.

Enviado por

rhuanpzo
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/ 26

SQL – Banco de Dados I

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), ….

*American National Standard Institute


Introdução - Benefícios

Custo de treinamento reduzido

Produtividade

Portabilidade

Longevidade

Reduz dependência para um tipo específico de SGBD

Facilita a comunição inter-sistemas
Introdução - Ambiente

Catálogo (Dicionário)

Um banco de dados utilizado pelo SGBD para armazenar
os dados dos objetos do banco de dados (tabelas,
usuários, índices)


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

create table <nome> (


<atributo1> <dominio> <restrição nulo>,
: : : ,
<atributon> <dominio> <restrição nulo>,
<restrições de chaves>);

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

create table <nome> (


<atributo1> <dominio> <restrição nulo>,
: : : ,
<atributon> <dominio> <restrição nulo>,
<restrições de chaves>);

not null ou null (default)


DDL

Criação de tabelas

create table <nome> (


<atributo1> <dominio> <restrição nulo>,
: : : ,
<atributon> <dominio> <restrição nulo>,
<restrições de chaves>
);

Onde se define as chaves primária, estrangeira e candidata:


constraint <nome> <tipo> <atributo> <referência>
Chave primária:
constraint pk_tabela primary key (atributo (s))
Chave estrangeira:
constraint fk_tabelas foreign key (atributo(s)) references tabela(chave)
Chave candidata:
constraint uk_atrib_tab unique (atributo(s))
DDL

Banco de dados do exercício

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))

create table cliente(


codcli integer not null,
cpf varchar(11) not null,
nome varchar(30) not null,
email varchar(30) not null,
ender varchar(40) not null,
ntel integer not null,
constraint pk_cliente primary key (codcli)
);
DDL

Banco de dados do exercício

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))

create table cliente(


codcli integer not null,
cpf varchar(11) not null,
nome varchar(30) not null,
email varchar(30) not null,
ender varchar(40) not null, e as outras chaves? cpf e email
ntel integer not null,
constraint pk_cliente primary key (codcli)
);
DDL

Banco de dados do exercício

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))

create table cliente(


codcli integer not null,
cpf varchar(11) not null,
nome varchar(30) not null,
email varchar(30) not null,
ender varchar(40) not null,
ntel integer not null,
constraint pk_cliente primary key (codcli),
constraint uk_cpf_cliente unique (cpf),
constraint uk_email_cliente unique (email)
);
DDL

Banco de dados do exercício

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))

create table veiculo(


placa varchar(10) not null,
modelo varchar(11) not null,
ano numeric(4,0) not null,
cor varchar(10) not null,
kilom numeric(6,0),
constraint pk_veiculo primary key (placa)
);
DDL

Banco de dados do exercício

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))

create table tarifa(


descr varchar(10) not null,
valor numeric(6,2) not null,
constraint pk_tarifa primary key (descr)
);
DDL
create table tarifa(

Banco de dados do exercício descr varchar(10) not null,
valor numeric(6,2) not null,
constraint pk_tarifa primary key (descr)
);

locacao(placa(veiculo), codcli(cliente), dtloca, dtdevo, tarifa(tarifa))


create table veiculo(
placa varchar(10) not null,
modelo varchar(11) not null, create table cliente(
ano numeric(4,0) not null, codcli integer not null,
cor varchar(10) not null, cpf varchar(11) not null,
kilom numeric(6,0), nome varchar(30) not null,
create table locacao( constraint pk_veiculo primary key (placa) email varchar(30) not null,
);
placa varchar(10) not null, ender varchar(40) not null,
ntel integer not null,
codcli integer not null, constraint pk_cliente primary key (codcli),
constraint uk_cpf_cliente unique key (cpf),
dtloca date not null, constraint uk_email_cliente unique key (email)
dtdevo date, );

tarifa varchar(10) not null,


constraint pk_locacao primary key (placa,codcli,dtloca),
constraint fk_locacao_veiculo foreign key (placa) references veiculo(placa),
constraint fk_locacao_cliente foreign key (codcli) references cliente(codcli),
constraint fk_locacao_tarifa foreign key (tarifa) references tarifa(descr)
);
DML

Inserir dados nas tabelas

comando insert:

insert into <tabela> (<atributos>) values (<valores>);
- em <atributos> listar os atributos que receberão valores
insert into tarifa (descr,valor) values ('blue',80);
em grupo:
insert into tarifa (descr,valor) values ('green',40), create table tarifa(
('white',50); descr varchar(10) not null,
valor numeric(6,2) not null,
constraint pk_tarifa primary key (descr)
);

* datas são inseridas como sequência de caracteres e obedecendo o formato


configurado no SGBD. Por exemplo, '21/10/2020' ou '10/21/2020' ou '21-10-2020'.
- Em psql verifica-se o estilo da data com show datestyle;
- Para alterar set datestyle=’novo estilo’;, estilo pode ser: ISO, DMY
DML

Inserir dados nas tabelas

Se as 3 tuplas anteriores existissem no banco de dados e o
seguinte comando fosse executado:

insert into tarifa (descr,valor) values ('blue',90.5);
O seguinte erro seria invocado:
ERROR: duplicate key value violates unique constraint "pk_tarifa"
DETAIL: Key (descr)=(‘blue’) already exists.
DML

Inserir dados nas tabelas

Se o programador tentar inserir a seguinte tupla na tabela
locacao:
insert into locacao (placa,codcli,dtloca,tarifa)
values ('MK-10',’C22’,'15/10/2020','black');
e não existisse o valor black na tabela tarifa, teríamos o erro:

ERROR: insert or update on table "locacao" violates foreign key constraint


"fk_locacao_tarifa"
DETAIL: Key (tarifa)=('black') is not present in table "tarifa".
DML

Consultas

Comando select

select [distinct] <lista atributos> from <tabela> where <filtro>
order by <atributo>

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>

select cor from veiculo;


cor
---------
branco
prata
vermelho
branco select distinct cor from veiculo;
branco cor
prata -----
branco
prata
vermelho
DML

Consultas

Exemplos cláusula where:
select * from veiculo;

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:

select modelo, kilom from veiculo order by modelo asc;


select modelo, kilom from veiculo
order by modelo desc;
modelo kilom
-----------------------
modelo kilom
Audi Q3 45455
-----------------------
Celta 98673
QQ 78000
HB20 45672
Ka 76890
HR-V 21888
HR-V 21888
Ka 76890
HB20 45672
QQ 78000
Celta 98673
Audi Q3 45455
DML

Consultas

Postgres possui uma série de funções que podem ser utilizadas
tanto na projeção quanto na seleção:

lower() / upper(): transforma string em minúsculo/maiúsculo

select lower(nome) from cliente;

left/right (string, # de caracteres)

select left(nome,4) from cliente; – retorna os 4 primeiros
caracteres

extract (valor from atributo):

select extract(day from dtloc) from locacao; – extrai apenas
o dia da locação

length(string): retorna o tamanho do string

select modelo, length(modelo) from veiculo;

Você também pode gostar