aula 6 sql - introdução

21
Base de Dados 1 Hélio Martins

Upload: helio-martins

Post on 27-Jun-2015

330 views

Category:

Investor Relations


1 download

DESCRIPTION

Introdução ao SQL

TRANSCRIPT

Base de Dados 1

Hélio Martins

Introdução ao SQL

Famílias do SQL

Exercícios

Agenda

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.

Introdução ao 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.

Linguagem 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.

Familias do SQL

DML DDL DCL

SELECT

INSERT

UPDATE

DELETE

CREATE

ALTER

DROP

A sintaxe básica de um

comando DDL é:

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

CREATE TABLE Clientes (Nome

CHAR(30), Telefone CHAR(8))

GRANT

REVOKE

DENY

A sintaxe básica de um

comando DCL é:

GRANT <operação> ON <nome do

objeto> TO <usuário>

GRANT UPDATE ON Clientes TO

João

Famílias do SQL

A interrogação de qualquer base de dados relacional faz-se 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

código local ilha

00001 Tarrafal Santiago

00002 Assomada Santiago

00003 Praia Santiago

00004 Ribeira Grande Santiago

00005 Tarrafal S. Nicolau

00006 Praia Branca S. Nicolau

00007 Mindelo S. Vicente

00008 São Pedro S. Vicente

00009 Tarrafal S. Antão

00010 Ribeira Grande S. Antão

00011 N. Cintra Brava

00012 S. Felipe Fogo

00013 Porto Inglês Maio

Comando SELECT Exemplos

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 todos os registos

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

Seleccionar todas as colunas

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

SELECT – Clausula Where

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

Operadores

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 2318440 5

Exemplos

SELECT * FROM pessoa WHERE idade = 35

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

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

SELECT id, nome, salário FROM pessoa WHERE idade < 30 OR idade > 40

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 ALL

SELECT DISTINCT ilha

FROM localidade

Remove os duplicados

SELECT DISTINCT

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

SELECT com expressões

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

Renomear Colunas

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.

SELECT – Clausula 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.

Order By

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 uma coluna

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

Ordenar Varias colunas