Sie sind auf Seite 1von 9

Colgio de S.

Gonalo

Bases de Dados

SQL

Structured Query Language (SQL)


A Linguagem Estruturada de Consultas uma linguagem especfica de
comandos de interrogao que serve, fundamentalmente, para extrair informao de
uma Base de Dados.
Na verdade, a linguagem SQL contm mltiplos comandos que podem ser
agrupados nos seguintes conjuntos:
I.
II.
III.
IV.

Definio de Dados (DDL);


Manipulao de Dados (DML);
Manipulao de Transaces (TML);
Controlo de Dados (DCL).

A parte relativa definio de dados (DDL Data Definition Language) contm


comandos que permitem:

Criar uma Base de Dados (CREATE DATABASE);


Criar uma tabela (CREATE TABLE);
Alterar uma tabela (ALTER TABLE);
Eliminar uma tabela (DROP TABLE);
Eliminar uma Base de Dados (DROP DATABASE).

A parte relativa manipulao de dados (DML Data Manipulation Language)


contm comandos que permitem efectuar os seguintes tipos de operaes:

Inserir registos numa tabela (INSERT INTO);


Alterar dados numa tabela (UPDATE);
Eliminar registos de uma tabela (DELETE FROM);
Consultar os dados das tabelas (SELECT).

Para aprendermos a trabalhar com SQL, vamos construir uma Base de Dados e
manipular todos os dados existentes nela atravs da utilizao dos comandos
apropriados em SQL.
1. Entre no phpMyAdmin e crie uma nova Base de Dados chamada Empresa;
1.1. Utilize a maneira tradicional para cri-la.

Colgio de S. Gonalo

Bases de Dados

SQL

Utilize a partir daqui apenas comandos SQL

Parte I - DDL (Data Definition Language)


a linguagem utilizada para definir os objectos e atributos para armazenamento e
organizao dos dados numa Base de Dados, especialmente TABELAS, CAMPOS e
INDCES.
2. Crie as tabelas Departamento, Empregados e Empregados1 (CREATE TABLE)
Syntax
CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH COMPRESSION | WITH COMP]
[index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])
The CREATE TABLE statement has these parts:
Part
table
field1, field2
type
size
index1, index2
multifieldindex

Description
The name of the table to be created.
The name of field or fields to be created in the new table. You must create at least one field.
The data type of field in the new table.
The field size in characters (Text and Binary fields only).
A CONSTRAINT clause defining a single-field index. For more information on how to create this
index, see CONSTRAINT Clause.
A CONSTRAINT clause defining a multiple-field index. For more information on how to create this
index, see CONSTRAINT Clause.

2.1. CREATE TABLE DEPARTAMENTO (DEPNUM


INTEGER, NOME
CHAR(20),LOCAL CHAR(25),ORCAMENTO LONG, PRIMARY KEY
(DEPNUM))
2.2. CREATE TABLE EMPREGADOS (EMPNUM
INTEGER, NOME
CHAR(30),MORADA CHAR(50), DEPNUM INTEGER, PROFISSAO
CHAR(20),ADMISSAO DATE, COMISSAO DOUBLE, PRIMARY KEY
(EMPNUM))
2.3. CREATE TABLE EMPREGADOS1 (NUMERO
DOUBLE, NOME
CHAR(200),NASCIMENTO DATE, PRIMARY KEY (NUMERO))

Colgio de S. Gonalo

Bases de Dados

SQL

Parte II - DML (Data Manipulation Language)


A linguagem utilizada para trabalhar com os dados que existiro na Base de
Dados.transformar os dados em informaes.
1. Introduza valores diretamente na tabela DEPARTAMENTO (INSERT INTO)

Syntax
Multiple-record append query:
INSERT INTO target [(field1[, field2[, ...]])] [IN externaldatabase]
SELECT [source.]field1[, field2[, ...]
FROM tableexpression
Single-record append query:
INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])

1.1. INSERT INTO DEPARTAMENTO (DEPNUM, NOME, LOCAL,


ORCAMENTO) VALUES (70,"PRODUO","LISBOA",100000)
1.2. Introduza mais 9 registos em modo interactivo.
SELECT * FROM DEPARTAMENTO
1.3. Introduza 10 registos na tabela EMPREGADOS, utilizando os dois
mtodos anteriores.
2.

Altere o valor de todos os registos do campo ORCAMENTO para 8000.


(UPDATE)
Syntax
UPDATE table
SET newvalue
WHERE criteria;

2.1. UPDATE DEPARTAMENTO SET ORCAMENTO=8000

Altere o valor de todos os registos para um aumento do ORCAMENTO de 20%.


2.2. UPDATE DEPARTAMENTO SET ORCAMENTO=(1.2*ORCAMENTO)

Diminua o ORCAMENTO dos DEPARTAMENTOS de LISBOA em 25%.

2.3. UPDATE DEPARTAMENTO SET ORCAMENTO=(ORCAMENTO0.25*ORCAMENTO) WHERE LOCAL="LISBOA"

Colgio de S. Gonalo
3.

Bases de Dados

SQL

Acrescente mais 3 departamentos no BRASIL e em seguida elimine-os. (DELETE


FROM);
Syntax
DELETE [table.*]
FROM table
WHERE criteria

3.1. DELETE FROM DEPARTAMENTO WHERE LOCAL="BRASIL"

Consulta aos dados


Como foi dito no princpio, a linguagem SQL tem a sua principal utilizao na
consulta e organizao dos dados que se encontram armazenados nas tabelas por forma
a transform-los em informao til para os utilizadores da Base de Dados. Por essa
razo o comando ou instruo que mais se aplica o SELECT que tem a seguinte forma
geral:
Syntax
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
FROM tableexpression [, ...] [IN externaldatabase]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

Vamos aplicar o SELECT em vrias situaes, sempre procurando responder a


perguntas reais como:
1- Listar todos os dados da tabela DEPARTAMENTO
SELECT *
FROM DEPARTAMENTO
2- Listar todos os DEPARTAMENTOS cujo ORCAMENTO seja maior que 10000
SELECT *
FROM DEPARTAMENTO
WHERE ORCAMENTO>10000
3- Listar todos os DEPARTAMENTOS cujo ORCAMENTO seja menor que 10000,
apresentando apenas o NOME, LOCAL e o ORCAMENTO
SELECT NOME,LOCAL,ORCAMENTO
FROM DEPARTAMENTO
WHERE ORCAMENTO<45000
4- Listar todos os DEPARTAMENTOS cujo ORCAMENTO seja menor ou igual a
10000 mas apenas de LISBOA, apresentando o NOME e o ORCAMENTO
multiplicado por 12
4

Colgio de S. Gonalo

Bases de Dados

SQL

SELECT NOME, ORCAMENTO*12 AS Expr1


FROM DEPARTAMENTO
WHERE (ORCAMENTO<=45000 AND LOCAL="PORTO")
5- Apresente a expresso anterior mas no lugar da Expr1 indique DESPESA_ANUAL
SELECT NOME, ORCAMENTO*12 AS DESPESA_ANUAL
FROM DEPARTAMENTO
WHERE (ORCAMENTO<=45000 AND LOCAL="PORTO")
6- Listar todas as COMISSES dos EMPREGADOS
SELECT COMISSES FROM EMPREGADOS
7- Listar os NOMES e MORADAS dos EMPREGADOS classificados alfabeticamente
ASCENDENTE e DESCENDENTE.
SELECT NOME,MORADA
FROM EMPREGADOS
ORDER BY NOME

SELECT NOME,MORADA
FROM EMPREGADOS
ORDER BY NOME DESC

8- Listar os NOMES e MORADAS dos EMPREGADOS que tenham COMISSAO


entre 100000 e 200000.
SELECT NOME,MORADA
FROM EMPREGADOS
WHERE COMISSAO BETWEEN 100000 AND 200000
9- Listar os NOMES e COMISSES dos EMPREGADOS cujo NOME comece pela
letra A.
SELECT NOME,COMISSAO
FROM EMPREGADOS
WHERE NOME Like 'A*'
10- Listar todos os EMPREGADOS que sejam VENDEDORES ou SERRALHEIROS e
que tenham COMISSAO entre 100000 e 150000
SELECT *
FROM EMPREGADOS
WHERE (PROFISSAO="SERRALHEIRO" OR PROFISSAO="VENDEDOR") AND
COMISSAO Between 100000 And 150000

Colgio de S. Gonalo

Bases de Dados

SQL

Exemplo prtico sobre SQL


Uma escola pretende informatizar a sua secretaria e quer ter os dados armazenados nas
seguintes tabelas:
ALUNO
NMERO NOME
1
ANTNIO TOM
2
BRUNO ALVES
3
CARLOS AUGUSTO
4
CARLOS SANTOS
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

FILIPE CUNHA
FRANCISCO
CORREIA
HUGO SOUSA
JOO GOMES
MIGUEL SIMES
MNICA DIAS
NUNO ASSIS
MIGUEL
CARVALHO
PAULO SILVA
ARTUR VALENTIM

MORADA
R. ABADE FARIA, 10
R. DOS BALDAQUES, 5
T. DO COMBRO,15
T.
DETRS
DOS
QUARTIS, 5
AV. DE ENTREMUROS, 7
AV. DO FERRO, 1

T. DA GUARDA, 15
R. HORTA SECA, 10
R. DO IBO, 12
B. DO JASMIM, 5
R. KEIL DO AMARAL, 11
R. LADISLAU PESTANA,
53
R. DO MACHADINHO, 48
R. DAS NECESSIDADES,
4
BRUNO LOPES
R. ONZE, 90
CLUDIA MATOS R. DO POO COBERTO,
256
ELISABETE
B. DO QUEBRA-COSTAS,
FIGUEIREDO
20
JORGE GREGRIO AV. DO RILVAS, 2
PEDRO ANTUNES R. DO SACO, 98
RICARDO AMARAL T. DO TESOURO, 125
RUI LOPES
R. UM, 2
SNIA MATIAS
R. VICENTE BORGA, 98
FILIPE MARTINS
R. XAVIER CORDEIRO, 7
MIGUEL VIEIRA
R. DO ZAIRE, 23
MANUELA
R. ANCHIETE, 78
MAGALHES
ISABEL SOARES
R. DO LIMPOPO, SN
SOFIA NABAIS
R. CAMPLO, 4
PEDRO JUSTINO
R. DO DONDO, 9
FERNANDA
R. DA EMENDA, 76
CONCEIO
DUARTE RIBEIRO TR. FALA BARATO, 23
SARA GOMES
R. GALVO, 7
JOO RESENDE
TR. FALA S, 89
PATRCIA
R. DOS HERIS DO
VENTURA
QUIONGA, 23
ALBERTO ASSIS
B. NDIA, 15

TELEFONE IDADE
1234569
13
2547861
15
1457823
14
1457826
16

COD_TURMA
1
3
1
4

2548126
5498365

18
17

7
6

1247569
1453692
4589632
4785623
2563198
1456892

13
20
14
16
15
19

1
7
2
5
4
7

5648921
2564891

13
15

1
4

2154863
1547892

16
18

6
8

1268971

17

1245879
1245893
1235689
1025486
5682036
4578962
5612305
2549823

19
20
15
14
13
16
15
19

8
8
4
2
1
6
5
8

1457892
2568931
2546811
7629814

14
14
13
15

3
3
2
5

3642971
2564879
8941253
5487232

17
13
13
14

7
2
2
3

4578912

14

Colgio de S. Gonalo
NMERO NOME
35
ANDR SOUSA
36
SUSANA SANTOS
37
HUGO SANTANA
38
ALEXANDRE
JUSTINO
39
PAULO DIAS
40
RICARDO SOARES

Bases de Dados

SQL

MORADA
AV. JOGO DA BOLA, 58
R. DO LORETO, 8
R. MARIA, 6
R. DO NORTE, 4

TELEFONE IDADE
4596123
14
5648721
15
1203548
15
2301548
16

COD_TURMA
4
5
5
6

R. OITO, 14
AV. DO PRETO, 6

1256630
2564872

6
8

16
17

TURMA
COD_TURMA ANO
1
7
2
7
3
8
4
8
5
9
6
9
7
12
8
12
9
13
10
13
11
13

DESIGNAO
A
B
C
D
E
F
C
D
A
B
C

N_ALUNOS
25
20
22
21
20
19
15
17
0
0
0

PROFESSOR
COD_PROFESSOR NOME
1
ANTNIO
SILVA
2
ANA SILVA
3
4
5
6

CRISTINA
AMBRSIO
SILVRIO
ANTUNES
JOO
ALBERTO
ANTNIO
TADEU

MORADA
TMP_SERVIO IDADE INICIO_ACT
R. DAS ILVAS, 35 2
30
15-09-1996
R. DAS SILVAS, 1
35
AV.
MALHOA 5
TAVARES, 13
R. 2 DE MAIO, 25 10

24

15-09-1997

32

15-09-1993

38

15-09-1998

R, DA MADEIRA, 6
20
PR.
VASCO 1
SANTANA, 32

34

15-11-1992

24

15-09-1997

ENSINA
COD_PROF
1
1
1
2
2
2
3
3
5

COD_TURMA DISCIPLINA
1
MATEMTICA
4
MATEMTICA
6
MATEMTICA
2
PORTUGUS
3
PORTUGUS
5
PORTUGUS
1
PORTUGUS
7
PORTUGUS
1
FILOSOFIA

Colgio de S. Gonalo
COD_PROF
5
6
6
6

Bases de Dados

SQL

COD_TURMA DISCIPLINA
3
FILOSOFIA
6
FILOSOFIA
7
EMRC
8
EMRC

Considerando as tabelas acima, execute o que pedido a seguir:


1- Construa, numa folha de papel e em seguida no mySQLWorkbench a estrutura dos
campos de cada tabela e os seus relacionamentos.
Utilize apenas comandos SQL
Definio de Dados (DDL)
2- Crie as tabelas.
3- Crie as chaves primrias.
4- Crie um ndice para cada tabela chamado IND1 composto pelos dois primeiros
campos da tabela.
5- Acrescente mais um campo chamado LIXO tipo TEXTO com 50 primeira tabela.
6- Mude o nome desse campo para LIXEIRA.
7- Elimine esse campo.
Manipulao de Dados (DML)
8- Introduza o primeiro registo de cada tabela directamente.
9- Introduza todos os outros registos em modo interactivo.
10- Altere todos os anos das turmas para 100.
11- Volte a coloc-los correctamente.
12- Aumente 100 idade de todos alunos.
13- Volte a colocar a idade correcta.
14- Aumente 100 ao nmero de alunos da turma, mas apenas para as turmas que tm
menos de 21 alunos.
15- Volte a coloc-las correctamente.
16- Apague as turmas do 13 ano.
17- Mostre o nome e idade de todos os alunos.
18- Mostre o nome e morada de todos os alunos cujo nome comece pela letra A.
19- Mostre toda a informao dos alunos da turma que tem cdigo 7.
20- Mostre o nome dos alunos que tm menos de 15 anos.
21- Mostre o nome e telefone dos alunos que tm idade entre 16 e 18 anos.
22- Mostre o nome e idade dos professores que iniciaram actividade antes 1995.
23- Mostre o nome, morada e tempo de servio do professor JOO ALBERTO.
24- Mostre o nome e idade dos alunos da turma 12C.
25- Mostre o nome dos professores de PORTUGUS e o ano e designao das turmas
para as quais do aulas.
26- Mostre ano e designao das turmas que tm aulas com o professor ANTNIO
SILVA.
27- Mostre a mdia das idades dos professores bem como a idade do mais novo e do
mais velho.

Colgio de S. Gonalo

Bases de Dados

SQL

28- Mostre os mesmos dados anteriores, mas com cabealhos MDIA, MAIS_NOVO e
MAIS_VELHO.
29- Mostre a mdia das idades, a idade do mais novo e do mais velho dos alunos da
turma 8C
30- Mostre o nmero de alunos da escola.
31- Mostre o mesmo dado anterior mas com cabealho N_ALUNOS.
32- Mostre o ano, designao, o nmero de alunos, a mdia das idades, a idade do mais
novo e do mais velho de todas as turmas da escola.
33- Mostrar todos os dados dos alunos que tenham no seu nome GOMES

Das könnte Ihnen auch gefallen