Você está na página 1de 29

2009/2010

Escola Secundária de Albufeira

2009/2010 Escola Secundária de Albufeira Comandos MySQL (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes
2009/2010 Escola Secundária de Albufeira Comandos MySQL (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Comandos MySQL

(Páginas Web Dinâmicas: PHP e MySQL)

Carlos Nunes (csmnunes@gmail.com)

Gerir bases de dados ■ Criar Base de Dados CREATE DATABASE baseDeDados; ■ Apagar Base

Gerir bases de dados

Criar Base de Dados CREATE DATABASE baseDeDados;

Apagar Base de Dados

DROP DATABASE baseDeDados;

Listar Bases de Dados SHOW DATABASES;

Usar Base de Dados USE baseDeDados;

Carlos Nunes

2
2
Gestão de tabelas - Criar Tabela CREATE TABLE nomeTabela ( campo1 tipoDados1 [OPÇÃO1, OPÇÃO2, ],

Gestão de tabelas - Criar Tabela

CREATE TABLE nomeTabela ( campo1 tipoDados1 [OPÇÃO1, OPÇÃO2, ], campo2 tipoDados2, ), PRIMARY KEY (campo1)
CREATE TABLE nomeTabela (
campo1 tipoDados1 [OPÇÃO1, OPÇÃO2,
],
campo2 tipoDados2,
),
PRIMARY KEY (campo1)
);

Exemplo:

CREATE TABLE cliente ( cod_cliente bigint AUTO_INCREMENT, nome VARCHAR (50) NOT NULL, morada TEXT, estado ENUM ('casado','solteiro') DEFAULT 'casado', telefone CHAR(9), ordenado DECIMAL(10,2) UNSIGNED, PRIMARY KEY (cod_cliente)

);

Carlos Nunes

3
3
Que tipos de dados podemos definir? ■ Numérico  BIT  TINYINT  BOOL 

Que tipos de dados podemos definir?

Numérico

BIT

TINYINT

BOOL

SMALLINT

MEDIUMINT

INT

BIGINT

FLOAT

DOUBLE

DECIMAL

Data e Hora

DATE

TIME

DATETIME YEAR

TIMESTAMP

String

CHAR

VARCHAR

BINARY

VARBINARY

BLOB

TEXT

ENUM

SET

Carlos Nunes

4
4
Tipos de dados Numéricos Tipo Valor Valor mínimo Máximo   0 255 SMALLINT -32768

Tipos de dados Numéricos

Tipo

Valor

Valor

mínimo

Máximo

 

0

255

SMALLINT

-32768

32767

 

0

65535

MEDIUMINT

-8388608

8388607

 

0

16777215

INT

-2147483648

2147483647

 

0

4294967295

BIGINT

-9,22E+018

9,22E+018

 

0

1,84E+019

Tipo

 

Tamanho

TINYINT

1

byte

SMALLINT

2

bytes

MEDIUMINT

3

bytes

INT, INTEGER

4

bytes

BIGINT

8

bytes

FLOAT(p)

4

bytes if 0 <= p <=

24, 8 bytes if 25 <= p

<= 53

FLOAT

4

bytes

DOUBLE

8

bytes

[PRECISION],

 

REAL

DECIMAL(M,D),

Variável

NUMERIC(M,D)

Carlos Nunes

5
5
Tipo de dados Data e Hora Tipo Exemplo DATETIME 0000-00-00 00:00:00' DATE 0000-00-00'

Tipo de dados Data e Hora

Tipo

Exemplo

DATETIME

0000-00-00 00:00:00'

DATE

0000-00-00'

TIMESTAMP (4.1 and up)

0000-00-00 00:00:00'

TIMESTAMP (before 4.1)

00000000000000'

TIME

00:00:00'

YEAR

0000'

TIME 00:00:00' YEAR 0000' Tipo Tamanho DATE 3 bytes TIME 3

Tipo

Tamanho

DATE

3

bytes

TIME

3

bytes

DATETIME

8

bytes

TIMESTAMP

4

bytes

YEAR

1

byte

Carlos Nunes

6
6
Tipo de dados String Tipo   Tamanho CHAR(M) M × w bytes, 0 <= M

Tipo de dados String

Tipo

 

Tamanho

CHAR(M)

M

× w bytes, 0 <= M <= 255, where w is the

number of bytes required for the maximum-length character in the character set

BINARY(M)

M

bytes, 0 <= M <= 255

VARCHAR(M),

L

+ 1 bytes, 0 <= L <= 255

VARBINARY(M)

 

TINYBLOB, TINYTEXT

L

+ 1 bytes, where L < 28

BLOB, TEXT

L

+ 2 bytes, where L < 216

MEDIUMBLOB,

L

+ 3 bytes, where L < 224

MEDIUMTEXT

 

LONGBLOB,

L

+ 4 bytes, where L < 232

LONGTEXT

 

ENUM('value1','value2',

1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)

)

SET('value1','value2',

)

1,

2, 3, 4, or 8 bytes, depending on the number of

 

set members (64 members maximum)

Carlos Nunes

7
7
Gestão de tabelas – Alterar tabelas ALTER TABLE tabela … De seguida deve ser colocada

Gestão de tabelas – Alterar tabelas

ALTER TABLE tabela …

De seguida deve ser colocada escolhido um dos seguintes comandos:

deve ser colocada escolhido um dos seguintes comandos: Exemplos: ALTER TABLE cliente ADD idade INT UNSIGNED;

Exemplos:

ALTER TABLE cliente ADD idade INT UNSIGNED; ALTER TABLE cliente RENAME clientes;

Carlos Nunes

8
8
Outros comandos para gestão de tabelas ■ Apagar tabela DROP TABLE tabela; ■ Listar tabelas

Outros comandos para gestão de tabelas

Apagar tabela DROP TABLE tabela;

Listar tabelas SHOW TABLES;

Mostrar descrição da tabela DESCRIBE tabela;

Carlos Nunes

9
9
Gestão de dados – Inserir dados INSERT INTO tabela (campo1, campo2, VALUES (valor1, valor2, );

Gestão de dados – Inserir dados

INSERT INTO tabela (campo1, campo2,

VALUES (valor1, valor2,

);

)

Exemplos:

INSERT INTO cliente (nome, morada, telefone, estado, ordenado) VALUES ('Zé','Rua das flores','912345678','solteiro',800.50);

INSERT INTO cliente (nome, ordenado) VALUES ('Manel',850),('Xico',700),('Toino',850);

Carlos Nunes 10
Carlos Nunes
10
Alterar registos em tabela UPDATE tabela SET campo1="novoValor" WHERE condição; Exemplos: UPDATE cliente SET

Alterar registos em tabela

UPDATE tabela SET campo1="novoValor" WHERE condição;
UPDATE tabela SET campo1="novoValor"
WHERE condição;

Exemplos:

UPDATE cliente SET morada="Rua das camélias" WHERE cod_cliente=3;

UPDATE cliente SET ordenado="700" WHERE estado='casado';

Carlos Nunes 11
Carlos Nunes
11
Apagar registos em tabela DELETE FROM tabela WHERE condição; Exemplos: DELETE FROM cliente WHERE cod_cliente

Apagar registos em tabela

DELETE FROM tabela WHERE condição;

Exemplos:

DELETE FROM cliente WHERE cod_cliente > 3;

em tabela DELETE FROM tabela WHERE condição; Exemplos: DELETE FROM cliente WHERE cod_cliente > 3; Carlos

Carlos Nunes

12
12
Estrutura de uma consulta simples SELECT campo(s) FROM tabela(s) Carlos Nunes 13

Estrutura de uma consulta simples

SELECT campo(s) FROM tabela(s)

Estrutura de uma consulta simples SELECT campo(s) FROM tabela(s) Carlos Nunes 13
Estrutura de uma consulta simples SELECT campo(s) FROM tabela(s) Carlos Nunes 13
Estrutura de uma consulta simples SELECT campo(s) FROM tabela(s) Carlos Nunes 13

Carlos Nunes

13
13
Cláusula WHERE ■ Utilizada para especificar condições para os resultados a apresentar. Exemplo que mostra

Cláusula WHERE

Utilizada para especificar condições para os resultados a apresentar.

Exemplo que mostra os tripulantes do barco 3:

SELECT * FROM Tripulante WHERE barco=3;

a apresentar. Exemplo que mostra os tripulantes do barco 3: SELECT * FROM Tripulante WHERE barco=3;
a apresentar. Exemplo que mostra os tripulantes do barco 3: SELECT * FROM Tripulante WHERE barco=3;

Carlos Nunes

14
14
Expressões para a cláusula WHERE Existem várias expressões que são utilizadas para filtrar dados numa

Expressões para a cláusula WHERE

Existem várias expressões que são utilizadas para filtrar dados numa cláusula WHERE

Comparar expressões (=, >, <, >=, <=, !)

Ex: WHERE matricula != 3

Valores dentro de intervalo (BETWEEN)

Ex:WHERE matricula BETWEEN 2 AND 3

Valores dentro de um conjunto (IN)

Ex: WHERE matricula IN (2,4,7)

Strings com determinadas características (LIKE)

Ex (segunda letra=a): WHERE nome LIKE “_a%”

Carlos Nunes

15
15
Expressões para a cláusula WHERE Dentro da cláusula WHERE, também podemos utilizar os seguintes operadores:

Expressões para a cláusula WHERE

Dentro da cláusula WHERE, também podemos utilizar os seguintes operadores:

NOT (negação)

Ex: WHERE nome NOT LIKE “_a%”

AND (e)

Ex: WHERE matricula > 3 AND nome LIKE “a%”

OR (ou)

Ex: WHERE matricula > 3 OR nome LIKE “a%”

Nota:

Deverá ter-se em consideração a prioridade dos operadores

Carlos Nunes

16
16
Cláusula HAVING Idêntica à cláusula WHERE, mas com a vantagem de se poder usar funções

Cláusula HAVING

Idêntica à cláusula WHERE, mas com a vantagem de se poder usar funções como condição.

A seguinte consulta devolve a quantidade de funcionários em cada barco:

SELECT count(cod_funcionario), barco

FROM tripulante

Para obtermos apenas os barcos com mais de 3 funcionários, acrescentamos:

HAVING count(cod_funcionario)>3

Carlos Nunes

17
17
UNION É possível unir resultados de várias consultas usando a expressão UNION. ■ As condições

UNION

É possível unir resultados de várias consultas usando a expressão UNION.

As condições para podermos unir consultas são:

Possuírem a mesma quantidade de campos

Os campos seleccionados terem o mesmo tipo de dados

Exemplo:

SELECT campos FROM tabela1

UNION ALL

SELECT campos FROM tabela2

Nota:

A expressão ALL é utilizada quando pretendemos mostrar dados que existam em duplicados nas consultas

Carlos Nunes

18
18
JOIN JOIN serve para juntar tabelas (lado a lado) através de um campo comum ■

JOIN

JOIN serve para juntar tabelas (lado a lado) através de um campo comum

Divide-se em dois tipos:

Outer JOIN

Inner JOIN

(lado a lado) através de um campo comum ■ Divide-se em dois tipos:  Outer JOIN
(lado a lado) através de um campo comum ■ Divide-se em dois tipos:  Outer JOIN

Carlos Nunes

19
19
Inner Join Para utilizar este tipo de JOIN, basta igualar os campos comuns na cláusula

Inner Join

Para utilizar este tipo de JOIN, basta igualar os campos comuns na cláusula WHERE

Exemplo que mostra os tripulantes e os seus respectivos barcos:

SELECT cod_funcionario, tripulante.nome, barco, matricula, barco.nome

FROM tripulante, barco

WHERE barco=matricula

tripulante.nome, barco, matricula, barco.nome  FROM tripulante, barco  WHERE barco=matricula Carlos Nunes 20
tripulante.nome, barco, matricula, barco.nome  FROM tripulante, barco  WHERE barco=matricula Carlos Nunes 20

Carlos Nunes

tripulante.nome, barco, matricula, barco.nome  FROM tripulante, barco  WHERE barco=matricula Carlos Nunes 20
20
20
Inner Join SELECT barco.nome FROM tripulante, barco WHERE cod_funcionario=3 AND barco=matricula; Carlos Nunes 21

Inner Join

SELECT barco.nome FROM tripulante, barco WHERE cod_funcionario=3 AND barco=matricula;

Inner Join SELECT barco.nome FROM tripulante, barco WHERE cod_funcionario=3 AND barco=matricula; Carlos Nunes 21

Carlos Nunes

21
21
Outer JOIN Para fazer um outer JOIN, temos de o declarar na cláusula FROM ■

Outer JOIN

Para fazer um outer JOIN, temos de o declarar na cláusula FROM Existem dois tipos de outer JOIN:

LEFT JOIN – Ignora os campos inexistentes na tabela da direita

RIGHT JOIN - Ignora os campos inexistentes na tabela da esquerda

FROM tripulante LEFT JOIN barco ON barco=matricula

esquerda FROM tripulante LEFT JOIN barco ON barco=matricula FROM tripulante RIGHT JOIN barco ON barco=matricula Carlos

FROM tripulante RIGHT JOIN barco ON barco=matricula

Carlos Nunes 22
Carlos Nunes
22
■ SELECT campos ■ FROM tabelas ■ WHERE condições ■ HAVING condições ■ GROUP BY

SELECT campos

FROM tabelas

WHERE condições

HAVING condições

GROUP BY campos

ORDER BY campos

LIMIT valores

■ HAVING condições ■ GROUP BY campos ■ ORDER BY campos ■ LIMIT valores Cláusulas Existentes

Cláusulas Existentes

Carlos Nunes

23
23
Cláusulas SELECT e FROM ■ Mostrar os registos de todos os campos da tabela tripulante:

Cláusulas SELECT e FROM

Mostrar os registos de todos os campos da tabela tripulante:

SELECT *

FROM tripulante

Mostrar o nome de todos os tripulantes:

SELECT nome

FROM tripulante

*  FROM tripulante ■ Mostrar o nome de todos os tripulantes:  SELECT nome 

Carlos Nunes

24
24
Funções, Alias e DISTINCT ■ Funções que podem ser usadas em SELECT são:  AVG

Funções, Alias e DISTINCT

Funções que podem ser usadas em SELECT são:

AVG – média

SUM – soma

MIN – valor mínimo

MAX – valor máximo

COUNT – contar

DISTINCT é utilizado para não mostrar valores repetidos (EX: SELECT DISTINCT barco)

Um alias é utilizado para especificar um nome diferente daquele definido no campo (usando AS)

Exemplo para mostrar quantidade de tripulantes:

(usando AS) Exemplo para mostrar quantidade de tripulantes: Carlos Nunes SELECT COUNT(nome) AS 'Nº de

Carlos Nunes

SELECT COUNT(nome) AS 'Nº de tripulantes' FROM tripulante

25
25
Cláusula LIMIT Utilizada para definir a quantidade de registos a mostrar. ■ A expressão pode

Cláusula LIMIT

Utilizada para definir a quantidade de registos a mostrar.

A expressão pode ser definida com um ou dois parâmetros

Dois parâmetros (LIMIT inicio, numeroRegistos)

Ex: LIMIT 3, 4

Um parâmetro (LIMIT numeroRegistos)

Ex: LIMIT 4

Carlos Nunes

26
26
Cláusula ORDER BY Utilizada para definir a ordem em que os resultados são mostrados ■

Cláusula ORDER BY

Utilizada para definir a ordem em que os resultados são mostrados

É possível ordenar resultados de forma ascendente ou descendente (usando vários campos)

Ordenação descendente

ORDER BY DESC nome

Ordenar através de dois campos

ORDER BY nome, DESC peso

Ordenar registos pelo nome do barco:

SELECT *

FROM barco

ORDER BY nome

Carlos Nunes

27
27
Cláusula GROUP BY GROUP BY é utilizada para agrupar informação com o mesmo conteúdo. A

Cláusula GROUP BY

GROUP BY é utilizada para agrupar informação com

o mesmo conteúdo.

A seguinte consulta devolve a quantidade de

funcionários:

SELECT count(cod_funcionario)

FROM tripulante

Se adicionarmos a cláusula GROUP BY,obtemos quantidade de funcionários em cada barco:

GROUP BY barco

Carlos Nunes

28
28
Cláusula WHERE ■ Utilizada para especificar condições para os resultados a apresentar. Exemplo que mostra

Cláusula WHERE

Utilizada para especificar condições para os resultados a apresentar.

Exemplo que mostra os tripulantes do barco 3:

SELECT * FROM Tripulante WHERE barco=3;

a apresentar. Exemplo que mostra os tripulantes do barco 3: SELECT * FROM Tripulante WHERE barco=3;
a apresentar. Exemplo que mostra os tripulantes do barco 3: SELECT * FROM Tripulante WHERE barco=3;

Carlos Nunes

29
29