Base de Dados 1
Hélio Martins
Agenda
Introdução ao SQL
Famílias do SQL
Exercícios
Introdução ao SQL
Apareceu no início da década de 1970
Desenvolvida por um laboratório de Investigação da
IBM
Em 1986 surgiu uma normalização da linguagem
SQL, pela American National Standards Institute,
continuam a existir pequenas diferenças na
implementação desta linguagem comercial.
Linguagem SQL
Criar, Alterar, e Remover todas as componentes de
uma Base de Dados, como tabelas, views, índices,
etc.
Inserir, Alterar e Apagar dados.
Interrogar a base de dados – Fazer Consultas.
Controlar o acesso dos utilizadores à base de dados e
as operações a que cada um deles pode ter acesso.
Obter a garantia da consistência e integridade dos
dados.
Familias do SQL
DML – Data Manipulation Language – Permite
manipular os dados – Inserir, Apagar, Seleccionar e
actualizar.
DDL – Data Definition Language – Utilizada para
criar, apagar e alterar objectos como tabelas,
consultas (views).
DCL – Data Control Language – Permite controlar a
segurança de dados definindo quem pode aceder
cada operação em cada objecto.
Famílias do SQL
DML

DDL

DCL

SELECT

CREATE

GRANT

INSERT

ALTER

REVOKE

UPDATE

DROP

DENY

DELETE
…

A

sintaxe

básica

de

comando DDL é:

A

sintaxe

básica

de

um

comando DCL é:

CREATE <tipo> <nome><definição>

CREATE TABLE

um

GRANT <operação> ON <nome do

Clientes (Nome objeto> TO <usuário>

CHAR(30), Telefone CHAR(8))

GRANT UPDATE ON Clientes TO
João
Comando SELECT
A interrogação de qualquer base de dados relacional fazse sempre utilizando o comando SELECT.
A sintaxe é a seguinte:
SELECT campo1, campo2,…, campoN
FROM tabela1, …, tabela n
[WHERE condição]
[GROUP BY …]
[HAVING …]
[ORDER BY …]
Os parêntesis retos indicam que essa componente é facultativo
Comando SELECT
Exemplos
código
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013

local
Tarrafal
Assomada
Praia
Ribeira Grande
Tarrafal
Praia Branca
Mindelo
São Pedro
Tarrafal
Ribeira Grande
N. Cintra
S. Felipe
Porto Inglês

ilha
Santiago
Santiago
Santiago
Santiago
S. Nicolau
S. Nicolau
S. Vicente
S. Vicente
S. Antão
S. Antão
Brava
Fogo
Maio
Seleccionar todos os
registos
Para sabermos toda a informação existente na tabela,
teremos que seleccionar a informação existente nas
colunas Local e Ilha da tabela Localidade, o que
traduzido para SQL viria a ser:
SELECT códigoLocal, local, ilha
FROM localidade
Seleccionar todas as
colunas
Se se pretender, como no exemplo anterior,
seleccionar todas as colunas da tabela, então, para
não termos que indicar cada uma das colunas, o
nome de todas elas pode ser substituído pelo
carácter asterisco (*).
SELECT *
FROM Localidade
SELECT – Clausula
Where
A operação de restrição permite restringir o número
de linhas a apresentar.
Para podermos restringir o conjunto de registos a
apresentar, iremos utilizar outra cláusula do
comando SELECT – a cláusula WHERE.
SELECT …
FROM …
WHERE condição
Operadores
Operador

Descrição

Exemplo

Resultado

=

Igual a

7=5

FALSE

>

Maior que

7>5

TRUE

<

Menor que

7<5

FALSE

>=

Maior ou Igual que

7>=5

TRUE

<=

Menor ou Igual que

7<=5

FALSE

< > Ou !=

Diferente de

7<>5

TRUE

AND

E

OR

ou

NOT

Negação
Exemplos
id

nome

idade

salário

telefone

códigoLocal

42

António Dias

43

792000

2619043

1

5

Célia Morais

26

536000

2693454

3

32

Florinda Simões

35

137000

1

37

Isabel Espada

28

86000

6

49

José António

17

210000

3

14

São Nascimento

35

220000

SELECT *
FROM pessoa
WHERE idade = 35
SELECT id, nome, salário
FROM pessoa
WHERE idade >= 30 AND idade <= 40

2318440

5

SELECT id, nome, salário
FROM pessoa
WHERE idade >= 18

SELECT id, nome, salário
FROM pessoa
WHERE idade < 30 OR idade > 40
SELECT ALL
4.3.5 Eliminação de repetições (DISTINCT e ALL)
Problema: Selecionar o conjunto das ilhas existentes na
tabela localidade.
SELECT ilha
FROM localidade
Equivalente a
SELECT ALL ilha
FROM Localidade
O resultado devolve ilhas repetidas
SELECT DISTINCT
SELECT DISTINCT ilha
FROM localidade
Remove os duplicados
SELECT com expressões
O SELECT permite, selecção de expressões ou
mesmo a selecção de constantes.
Seleccione o nome e idade de todas as pessoas.
Selecione também a idade que irão ter daqui a um
ano. O resultado deverá vir ordenado por nome.
SELECT nome, idade, idade+1
FROM pessoa
ORDER BY nome
Renomear Colunas
O nome da coluna que resulta da expressão é Expr...Este
nome pode variar de sistema para sistema e é atribuído
automaticamente.
Nota: O nome com que uma coluna ou expressão é
representada no resultado de um SELECT pode ser
alterado através da cláusula AS novo_nome a seguir às
colunas ou expressões cujo título se pretende alterar.
SELECT nome, idade AS idadeHoje, idade+1 AS
idadeDaquiUmAno
FROM pessoa
ORDER BY nome
SELECT – Clausula
ORDER BY
A ordenação é baseada no valor do código ASCII de
cada carácter. Assim, os dígitos aparecem antes dos
caracteres alfabéticos e as maiúsculas antes das
minúsculas.
A ordenação pode ser realizada através da cláusula
ORDER BY no comando SELECT. Esta cláusula, se
existir, aparece sempre posicionada no final do
comando SELECT.
Order By
SELECT campo1, campo2,…, campon
FROM tabela1, …, tabela n
[WHERE condição]
[GROUP BY …]
[HAVING …]
ORDER BY campo1[ASC|DESC],
campo2[ASC|DESC],…
Onde campo representa o nome do campo, uma
expressão ou a posição da coluna do SELECT.
ASC indica que a ordenação é Ascendente e DESC indica
que a ordenação é Descendente.
Ordenar uma coluna
A ordenação por coluna faz-se especificando, na
cláusula ORDER BY, qual a coluna pela qual se
pretende ordenar.
Problema: Seleccionar todas as pessoas, ordenando o
resultado pela idade.
SELECT *
FROM pessoa
ORDER BY idade
Ordenar Varias colunas
Para se ordenar o resultado de um SELECT por mais
do que uma coluna, basta indicar, na cláusula
ORDER BY, o conjunto das colunas pela ordem em
que se pretende ordenar.
Caso se indique que se pretende ordenar o resultado
de um SELECT por mais do que uma coluna a
ordenação é feita pela primeira coluna, e entre
valores iguais é ordenada pela segunda coluna, ...

Aula 6 sql - introdução

  • 1.
    Base de Dados1 Hélio Martins
  • 2.
  • 3.
    Introdução ao SQL Apareceuno início da década de 1970 Desenvolvida por um laboratório de Investigação da IBM Em 1986 surgiu uma normalização da linguagem SQL, pela American National Standards Institute, continuam a existir pequenas diferenças na implementação desta linguagem comercial.
  • 4.
    Linguagem SQL Criar, Alterar,e Remover todas as componentes de uma Base de Dados, como tabelas, views, índices, etc. Inserir, Alterar e Apagar dados. Interrogar a base de dados – Fazer Consultas. Controlar o acesso dos utilizadores à base de dados e as operações a que cada um deles pode ter acesso. Obter a garantia da consistência e integridade dos dados.
  • 5.
    Familias do SQL DML– Data Manipulation Language – Permite manipular os dados – Inserir, Apagar, Seleccionar e actualizar. DDL – Data Definition Language – Utilizada para criar, apagar e alterar objectos como tabelas, consultas (views). DCL – Data Control Language – Permite controlar a segurança de dados definindo quem pode aceder cada operação em cada objecto.
  • 6.
    Famílias do SQL DML DDL DCL SELECT CREATE GRANT INSERT ALTER REVOKE UPDATE DROP DENY DELETE … A sintaxe básica de comandoDDL é: A sintaxe básica de um comando DCL é: CREATE <tipo> <nome><definição> CREATE TABLE um GRANT <operação> ON <nome do Clientes (Nome objeto> TO <usuário> CHAR(30), Telefone CHAR(8)) GRANT UPDATE ON Clientes TO João
  • 7.
    Comando SELECT A interrogaçãode qualquer base de dados relacional fazse sempre utilizando o comando SELECT. A sintaxe é a seguinte: SELECT campo1, campo2,…, campoN FROM tabela1, …, tabela n [WHERE condição] [GROUP BY …] [HAVING …] [ORDER BY …] Os parêntesis retos indicam que essa componente é facultativo
  • 8.
    Comando SELECT Exemplos código 00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 local Tarrafal Assomada Praia Ribeira Grande Tarrafal PraiaBranca Mindelo São Pedro Tarrafal Ribeira Grande N. Cintra S. Felipe Porto Inglês ilha Santiago Santiago Santiago Santiago S. Nicolau S. Nicolau S. Vicente S. Vicente S. Antão S. Antão Brava Fogo Maio
  • 9.
    Seleccionar todos os registos Parasabermos toda a informação existente na tabela, teremos que seleccionar a informação existente nas colunas Local e Ilha da tabela Localidade, o que traduzido para SQL viria a ser: SELECT códigoLocal, local, ilha FROM localidade
  • 10.
    Seleccionar todas as colunas Sese pretender, como no exemplo anterior, seleccionar todas as colunas da tabela, então, para não termos que indicar cada uma das colunas, o nome de todas elas pode ser substituído pelo carácter asterisco (*). SELECT * FROM Localidade
  • 11.
    SELECT – Clausula Where Aoperação de restrição permite restringir o número de linhas a apresentar. Para podermos restringir o conjunto de registos a apresentar, iremos utilizar outra cláusula do comando SELECT – a cláusula WHERE. SELECT … FROM … WHERE condição
  • 12.
    Operadores Operador Descrição Exemplo Resultado = Igual a 7=5 FALSE > Maior que 7>5 TRUE < Menorque 7<5 FALSE >= Maior ou Igual que 7>=5 TRUE <= Menor ou Igual que 7<=5 FALSE < > Ou != Diferente de 7<>5 TRUE AND E OR ou NOT Negação
  • 13.
    Exemplos id nome idade salário telefone códigoLocal 42 António Dias 43 792000 2619043 1 5 Célia Morais 26 536000 2693454 3 32 FlorindaSimões 35 137000 1 37 Isabel Espada 28 86000 6 49 José António 17 210000 3 14 São Nascimento 35 220000 SELECT * FROM pessoa WHERE idade = 35 SELECT id, nome, salário FROM pessoa WHERE idade >= 30 AND idade <= 40 2318440 5 SELECT id, nome, salário FROM pessoa WHERE idade >= 18 SELECT id, nome, salário FROM pessoa WHERE idade < 30 OR idade > 40
  • 14.
    SELECT ALL 4.3.5 Eliminaçãode repetições (DISTINCT e ALL) Problema: Selecionar o conjunto das ilhas existentes na tabela localidade. SELECT ilha FROM localidade Equivalente a SELECT ALL ilha FROM Localidade O resultado devolve ilhas repetidas
  • 15.
    SELECT DISTINCT SELECT DISTINCTilha FROM localidade Remove os duplicados
  • 16.
    SELECT com expressões OSELECT permite, selecção de expressões ou mesmo a selecção de constantes. Seleccione o nome e idade de todas as pessoas. Selecione também a idade que irão ter daqui a um ano. O resultado deverá vir ordenado por nome. SELECT nome, idade, idade+1 FROM pessoa ORDER BY nome
  • 17.
    Renomear Colunas O nomeda coluna que resulta da expressão é Expr...Este nome pode variar de sistema para sistema e é atribuído automaticamente. Nota: O nome com que uma coluna ou expressão é representada no resultado de um SELECT pode ser alterado através da cláusula AS novo_nome a seguir às colunas ou expressões cujo título se pretende alterar. SELECT nome, idade AS idadeHoje, idade+1 AS idadeDaquiUmAno FROM pessoa ORDER BY nome
  • 18.
    SELECT – Clausula ORDERBY A ordenação é baseada no valor do código ASCII de cada carácter. Assim, os dígitos aparecem antes dos caracteres alfabéticos e as maiúsculas antes das minúsculas. A ordenação pode ser realizada através da cláusula ORDER BY no comando SELECT. Esta cláusula, se existir, aparece sempre posicionada no final do comando SELECT.
  • 19.
    Order By SELECT campo1,campo2,…, campon FROM tabela1, …, tabela n [WHERE condição] [GROUP BY …] [HAVING …] ORDER BY campo1[ASC|DESC], campo2[ASC|DESC],… Onde campo representa o nome do campo, uma expressão ou a posição da coluna do SELECT. ASC indica que a ordenação é Ascendente e DESC indica que a ordenação é Descendente.
  • 20.
    Ordenar uma coluna Aordenação por coluna faz-se especificando, na cláusula ORDER BY, qual a coluna pela qual se pretende ordenar. Problema: Seleccionar todas as pessoas, ordenando o resultado pela idade. SELECT * FROM pessoa ORDER BY idade
  • 21.
    Ordenar Varias colunas Parase ordenar o resultado de um SELECT por mais do que uma coluna, basta indicar, na cláusula ORDER BY, o conjunto das colunas pela ordem em que se pretende ordenar. Caso se indique que se pretende ordenar o resultado de um SELECT por mais do que uma coluna a ordenação é feita pela primeira coluna, e entre valores iguais é ordenada pela segunda coluna, ...