NOTA DE AULA SQL
Exemplos de comandos

Criar e alterar a estrutura de uma BD:

Create database – para iniciar a criação de uma base
de dados;

Create table – para criar a estrutura de uma tabela;

Alter table – modificar a estrutura de uma tabela;

Drop table – eliminar uma tabela;

Drop database – eliminar uma BD.
2
Exemplos de comandos

Atualizar e consultar uma BD:

Insert – inserir dados numa tabela;

Update – atualizar ou alterar dados;

Delete – apagar dados;

Select – efetuar consultas ou pesquisas
a uma base de dados.
3
Exemplos de comandos

Controlar o acesso e o funcionamento
seguros de uma BD:

grant – permite atribuir ou definir os direitos dos
utilizadores de uma BD;

revoke – retira os direitos atribuídos;

Lock table – bloqueia uma tabela de forma a impedir
que outros utilizadores a alterem;

Unlock table – desbloqueia tabela bloqueada;

Start
transation
–
inicia
uma
transação/operação
controlada numa BD.
4
Comandos para criar e eliminar
uma BD

Criação de uma BD

Create database Vendas
Objetivo: iniciar a criação de uma bd
com o nome Vendas.
5
Comandos para criar e eliminar
uma BD

Eliminar uma BD em SQL

Drop database Vendas
Objetivo: elimina a bd com o nome Vendas, de
forma irrecuperável (a não ser que tenham sido
feitas cópias de segurança).
NOTA: Só os utilizadores do sistema que tenham o
estatuto de superutilizador ou a quem tenham sido
atribuídos todos os direitos sobre a base de dados, é
que podem efetuar este tipo de operação.
6
Criar uma tabela - sintaxe
Create table nome_tabela
(definição_campo1
…
Definição campo_n);
Cria uma tabela com um dado nome. Dentro dos
parêntesis é indicada a estrutura dos campos que
se pretende para a tabela.
7
Assim…

Definição_campo1 corresponde a:
Nome_campo tipo_dados
[not null] [default valor]
[primary key]
[references…]
8
Ou seja…
Para cada campo da tabela indicamse obrigatoriamente:


Nome do campo
Tipo de dados do campo
Para além destes elementos obrigatórios,
podem ainda ser indicados outros
elementos opcionais.
9
NOTA: os parêntesis retos servem
apenas para indicar os elementos
opcionais; se estes elementos forem
indicados,
são
escritos
sem
os
parêntesis retos.
10
Elementos opcionais


Not null – serve para indicar que o
campo não pode conter valores nulos
Default valor – permite indicar um
valor por defeito para o campo.
Por exemplo: default 10 (o campo
assume este valor se não for indicado
outro)
11
Elementos opcionais


Primary key – indica que o campo é ou faz
parte da chave primária da tabela.
References – inicia a indicação que o campo
funciona como chave estrangeira.
Deve ser escrito:
References nome_tabela (nome_campo) , ou seja, a seguir à palavra
References é escrito o nome da tabela e o nome do campo (dentro
parêntesis curvos) a que o campo faz referência como chave
estrangeira.
12
Principais tipos de dados em SQL
Tipos de dados
Descrição
Char (n)
Caracter ou string – de comprimento indicado
até um máximo de 255.
VarChar (n)
Semelhante ao anterior, mas neste caso, Var
significa tamanho variável em relação ao
espaço realmente ocupado, consoante o dado
inserido.
text
Texto até um máximo de 65535.
smallint
Números inteiros de tamanho reduzido
13
Principais tipos de dados em SQL
Tipos de dados
Descrição
Int ou integer
Números inteiros de tamanho médio
bigint
Números inteiros de tamanho grande
Numeric (m,d)
ou decimal (M,d)
Valor numérico que é guardado como uma
string formada por digitos decimais, em que
m representa o n.º digitos e d as casas
decimais
Float (m,d)
Valor numérico que é guardado com o
formato floating point (virgula flutuante)
14
Principais tipos de dados em SQL
Tipos de dados
Descrição
Double
Semelhante ao anterior
Date
No mysql o formato padrão é “yyyy-mm-dd”
– ano, mês, dia
time
Formato da hora: “hh:mm:ss”
15
Exemplo de um Modelo físico de
uma base de dados
Clientes
Produtos
Encomendas
CodCLi
CodProd
Nenc
Cliente
Preco
CodCli
Morada
CodProd
Quant
16
Exemplificação da criação de
tabelas
Create table Clientes
(CodCli Int auto_increment primary key,
Cliente Varchar(20),
morada varchar (30));
CodCli
Cliente
Morada
17
Explicação

A tabela Clientes é composta por 3
campos:



CodCli - int
Cliente - varchar
Morada – varchar
18
Campo Codcli

Código do cliente é definido como int, isto é
número
inteiro,
auto_increment,
além
ou
seja,
disso
o
é
sistema
incrementa o n.º do código sempre que é
inserido um novo registo nesta tabela.

É indicado como primary key, pois é a chave
primária da tabela clientes.
19
Campo Cliente

Definido como varchar(20), o campo cliente
aceita até um máximo de 20 carateres.
20
Campo Morada

Definido como varchar(30), o campo morada
aceita até um máximo de 30 carateres.
21
Exemplificação da criação de
tabelas
Create table Produtos
(Codprod Int auto_increment primary key,
Produto Varchar(20), preco numeric
(10,2));
CodProd
Produto
preco
22
Tabela Produtos

É semelhante à tabela Clientes, o que
muda é o campo Preco.
NOTA: não se deve escrever preço, porque os
nomes tabelas, campos em SQL só podem
conter os carateres do alfabeto inglês, onde
não há acentos nem caracteres especiais
como o ç.
23
Campo Preco

O
campo
preço
é
do
tipo
numérico, não inteiro, mas com
casas decimais, aconselhável para
pôr
por
exemplo,
valores
monetários.
24
Tabela Encomendas
Create table Encomendas
(Nenc Int Auto_increment primary key,
CodCli Int references Clientes (CodCli),
CodProd
Int
references
Produtos
(CodProd),
Quant Int);
25
Campo NEnc

O campo Nenc (nº da encomenda)
é
definido
como
inteiro,
incrementado, e chave primária
da tabela encomendas.
26
Campo Quant

O campo Quant (quantidade) é
definido como inteiro.
27
Parte especial da tabela
encomendas…

Reside nos campos codCli e CodProd que são
chaves estrangeiras, por se referirem a
campos que são chaves primárias em outras
tabelas.

Esses campos vão fazer referência aos mesmos
campos nas tabelas de origem (Clientes e
produtos).
28
Eliminar e alterar a estrutura de
uma tabela

Para eliminar
comando sql é
uma
tabela,
o
drop table nome_tabela
Ex: drop table Encomendas
29
Eliminar e alterar a estrutura de
uma tabela

Para alterar uma tabela, o comando sql é
alter table que contém 3 variantes: add,
modify e drop.
Ex: alter table nome_tabela
{Add (novo_campo tipo_dados)
| modify (nome_campo tipo_dados)
| drop (nome_campo)};
30

O facto de as 3 opções, add,
modify e drop serem incluídas
dentro de chavetas {} significa que
só uma delas pode ser usada em
cada instrução.
31
Add
novo_campo
Alter table xxx
Modify
campo
Drop campo
Adiciona um novo campo à
tabela xxx
Modifica um novo campo na
tabela xxx
Elimina um novo campo na
tabela xxx
32
Exemplo 1
Alter table Clientes
Add telefone integer;
Acrescenta na tabela clientes, um
novo campo com o nome Telefone e
do tipo inteiro.
33
Exemplo 2
Alter table Clientes
Modify telefone char (9);
Modifica na tabela clientes, o campo
Telefone passando a ser do tipo char
com 9 carateres.
34
Exemplo 3
Alter table Clientes
drop telefone;
Modifica a tabela clientes, eliminando
o campo telefone.
35
Atualizar dados numa tabela

Quando se fala em atualizar uma
base de dados, tal compreende 3
tipos de operações:



Inserir
Apagar
alterar
36
Inserir dados numa tabela
Insert into nome_tabela
(lista de campos)
{values (valores) | select instrução};
Inserir
dados
na
tabela
indicada,
especificando esses dados a seguir à
palavra values ou obtendo-os através de
uma instrução select.
37
NOTA


Após a indicação do nome tabela,
podemos indicar opcionalmente os
nomes dos campos, onde queremos
inserir os dados.
Se os campos não forem indicados,
supõe-se que vamos inserir dados em
todos os campos da tabela.
38
Exemplo 1
Insert into Clientes
(Cliente, morada) values
(“Aníbal”, “Lisboa”),
(“Belmiro”, “Braga”),
(“Casimiro”, “Coimbra”);
39
Tabela clientes
CodCli
Cliente
Morada
1
Anibal
lisboa
2
Belmiro
Braga
3
Casimiro
Coimbra
40
Exemplo 2
Insert into Produtos values
(null, “portátil”, 400),
(null, “berbequim”, 50),
(null, “ms office”, 150);
41
Tabela produtos
CodProd
Produto
preço
1
Portátil
400
2
Berbequim
50
3
Ms office
150
42


No exemplo anterior, como não indicámos
os campos onde queríamos inserir dados,
temos de atribuir valores para todos os
campos da tabela.
Null significa que o 1º campo da tabela era
auto increment (codprod) e não podemos
mexer, por isso a forma é indicar o valor
null.
43
Exemplo 3
Insert into Encomendas values
(null, 1,1,10),
(null, 2,1,2),
(null, 3,2,5),
(null, 1,3,1);
44
Tabela encomendas
NEnc
Cod Cli
CodProd
Quant
1
1
1
10
2
2
1
2
3
3
2
5
4
1
3
1
Na tabela encomendas, o primeiro campo é Nenc é do tipo
auto_increment, o que impede de atribuir valores, por isso indicamos
o null para todos os dados correspondentes a esse código.
Quanto aos campos CodCli e CodProd como são chaves
estrangeiras, pois referem-se a chaves primárias de outras tabelas,
isto obriga a que os valores inseridos devam existir nas tabelas
iniciais, por forma a respeitar a integridade referencial.
45
Apagar registos e alterar dados

O comando delete apaga registos
(linhas) por inteiro numa tabela.
Delete from nome_tabela
[where condição];
46
Objetivo



Apagar todos os registos na tabela indicada,
podendo apagar toda a tabela (se não for
especificada uma condição) ou apenas o(s) registos
que correspondam à condição indicada.
Se a cláusula Where condição não for indicada,
serão apagados todos os registos (todos os dados)
da tabela.
Se Where condição for indicada, serão apagados
os registos que respeitem a condição indicada.
47
Exemplo 1
Delete from produtos;
Efeito: todos os dados da tabela
produtos serão apagados.
48
Exemplo 2
Delete from Produtos
Where produto=“Ms office”;
Efeito: apaga na tabela produtos os
registos (linhas) em que o campo
produto é igual a ms office.
49
Comando update

A
alteração,
modificação
ou
atualização de dados em SQL, fazse com o comando update.
50
Sintaxe - update
Update nome_tabela
Set campo1=expressão1
[, campo2=expressão2], [, …]
[where condição];
Alterar dados na tabela indicada, no(s)
campo(s) indicado(s), podendo essa alteração
abranger todos os dados de determinado
campo ou apenas o que correspondem a uma
condição indicada.
51


A
expressão
campo1=expressão1
modificação a efetuar.
set
indica
a
É possível efetuar a vários campos
na mesma instrução, daí os
parêntesis retos que se seguem.
52
Cláusula where


A cláusula Where condição é
opcional – isto implica o seguinte:
Se a cláusula where condição não
for usada, as alterações indicadas
nas
expressões
campo1=expressão1
afetarão
todos os dados do campo indicado
em set.
53
Se
a cláusula where condição for
usada,
as
alterações
indicadas
afetarão apenas os registos que
respeitem a condição especificada.
54
Exemplo 1
Update Produtos
Set Preco =Preco*1.05;
Esta instrução altera a tabela produtos, no campo
preço, para o resultado da expressão preco*1.05, ou
seja, produz um aumento de 5% em todos os preços
da tabela produtos.
55
Exemplo 2
Update Produtos
Set preco=250
Where produto =“portátil”;
Neste caso, a alteração do preço para 250,
incide apenas sobre o produto que tem o nome
de portátil, uma vez que foi isso que foi
indicado na cláusula where.
56
Comando Select


É o comando que permite efetuar
consultas a uma BD relacional com
SQL.
A sintaxe do comando select é, nas
suas versões mais complexas,
muito extensa, com muitas opções
e pode revestir-se de alguma
complexidade.
57
Sintaxe - select
Select lista_campos
From tabela(s)
[where condição]
[group by lista_campos]
[having condição]
[order by lista_campos]
Efetuar consultas à
tabela(s) indicada,
baseadas em critérios
de filtragem,
agrupamentos e/ou
ordenação.
58
Exemplos
Select *
from produtos;
Vai consultar todos
tabela produtos.
os
dados
da
59
Select produto, preco
From produtos;
Vai apresentar os campos produto e
preço da tabela produtos.
60
Operadores usados na cláusula
where

Operadores de comparação:
= igualdade
< menor que
> Maior que
<= menor ou igual
>= maior ou igual
<> Diferente de
61

Outros operadores de comparação:
Between – compreendido entre
In – dentro de
Like – semelhante a
Is (not) null – é (não é) valor nulo
62

Operadores lógicos:
And – e
Or – ou
Not - não
63
Exemplos
Select *
From produtos
Where preco>=200 and preco<=400;
Select *
From produtos
Where preco between 200 and 400;
64
Select *
From produtos
Where preco= 100 or preco=200;
Select *
From produtos
Where preco in (100, 200);
65
Select *
From produtos
Where produto like “P%”;
Vai buscar todos os dados de
produtos, cujo nome de produto
comece com a letra P.
66
Select *
From produtos
Where produto like “%office”;
Vai buscar tds os dados de Produtos,
cujo produto tenha a palavra office no
seu nome.
67
Select *
From produtos
Order by preco desc;
Vai buscar todos os dados da tabela
produtos ordenando o preço por
ordem descendente.
68
Select *
From produtos
Where preco>200
Order by produto;
Ordena
por
ordem
alfabética
crescente, os produtos cujos preços
são maiores que 200.
69
Funções de cálculos e agregações
Função
Significado
Count
Devolve o nº de linhas/registos encontrados
Sum
Devolve a soma de todos os valores encontrados
no campo indicado
Avg
Devolve a média
Max
Devolve o maior valor
Min
Devolve o menor valor
70
Tabela Produtos
CodPro
Produto
Preco
1
Portátil
400
5
Portátil
200
3
Ms Office
150
4
Impressora
100
6
Impressora
50
2
Berbequim
50
71
Função Contar
Select count (*) As Total
From Produtos;
Vai contar quantas linhas existem na
tabela Produtos e devolve o resultado
através do campo total.
Total
6
72
Exemplo
Select count (distinct preco)
From produtos;
Devolve o número de preços distintos
no campo preço, neste caso, o
resultado seria 5; o preço 50 só é
contado uma vez.
73
Funções Sum e Avg - exemplo
Select avg(preco) as Media
From produtos;
O resultado será a média do preço
dos produtos.
74
Select Sum(preco)
From produtos
Where produto like “portátil”;
O resultado será a soma dos preços dos
produtos correspondentes a portáteis.
Resultado: 600
75
Funções max e min
Select max(preco)
From produtos;
Seleciona o maior valor encontrado.
76
Select min(preco)
From produtos
Where produto like “impressora”;
O resultado será o menor valor
encontrado, tendo em conta os
produtos de nome impressora.
77
Claúsulas group by e having

A claúsula Group by é usada para
agrupar
dados
que
contenham
características semelhantes.

Normalmente, é usada em conjugação
com as funções de agregação (count,
sum, avg, max e min), para obter
cálculos por grupos.
78
Exemplo 1
Select produto, count(*)
From produtos
Group by produto;
Vamos obter uma listagem com os
nomes dos diferentes produtos e com
a indicação de quantos registos de
cada produto existem.
79
Resultado do exemplo anterior:
Produto
Count(*)
Berbequim
1
Impressora
2
Ms Office
1
Portátil
2
80
Exemplo 2
Select produto, max(preco)
From produtos
Group by produto;
Iremos obter o preço mais elevado
dentro de cada grupo de produtos
com o mesmo nome.
81

Quando se utiliza a cláusula group by,
também podemos acrescentar a cláusula
having.

A cláusula having aplica-se aos grupos de
registos,
agrupados
com
group
by,
apresentando apenas qs que correspondem
à condição indicada com having.
82
Exemplo 3
Select produto, max(preco)
From produtos
Group by produto
Having max(preco) > 100;
Aqui iremos obter o preço mais elevado de
cada grupo de produtos com o mesmo nome,
mas queremos obter os grupos de produtos
que têm um preço máximo superior a 100.
83
Resultado do exemplo 3
Produto
Max(preco)
Ms Office
150
Portátil
400
84
Mais exemplos de comandos…
Select *
From clientes, encomendas;
Vai buscar todos os dados, das 2
tabelas.
85
Select *
From clientes, encomendas
Where clientes.codcli=encomendas.cod.cli;
Esta igualdade na cláusula where vai fazer com
que sejam apresentados os dados dos clientes,
com os dados das encomendas, mas apenas
daqueles em que os valores dos campos codcli
coincidem nas 2 tabelas.
86
Expressão Inner join
O
exemplo
anterior
pode
ser
substituído pela expressão inner join
na cláusula from (deixando ser
necessário utilizar a cláusula where).
Select *
From clientes inner join encomendas on
Clientes.codcli=encomendas.codcli;
87
Download

From produtos