Você está na página 1de 29

Escola Secundria de Albufeira

Comandos MySQL
(Pginas Web Dinmicas: PHP e MySQL)

Carlos Nunes
(csmnunes@gmail.com)

200

01
2
/
9

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

Gesto de tabelas - Criar Tabela


CREATE TABLE nomeTabela (
campo1 tipoDados1 [OPO1, OPO2, ...],
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

Que tipos de dados podemos definir?

Numrico

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

Tipos de dados Numricos


Tipo

SMALLINT
MEDIUMINT
INT

Valor
mnimo

Valor
Mximo
0

255

-32768

32767

65535

-8388608

8388607

16777215

-2147483648 2147483647
0 4294967295

BIGINT

-9,22E+018

9,22E+018

1,84E+019

Tipo
TINYINT
SMALLINT
MEDIUMINT
INT, INTEGER
BIGINT
FLOAT(p)

FLOAT
DOUBLE
[PRECISION],
REAL
DECIMAL(M,D),
NUMERIC(M,D)

Tamanho
1 byte
2 bytes
3 bytes
4 bytes
8 bytes
4 bytes if 0 <= p <=
24, 8 bytes if 25 <= p
<= 53
4 bytes
8 bytes

Varivel

Carlos Nunes

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'

Tipo
DATE
TIME
DATETIME
TIMESTAMP
YEAR

Tamanho
3 bytes
3 bytes
8 bytes
4 bytes
1 byte
Carlos Nunes

Tipo de dados String


Tipo
CHAR(M)

BINARY(M)
VARCHAR(M),
VARBINARY(M)
TINYBLOB, TINYTEXT
BLOB, TEXT
MEDIUMBLOB,
MEDIUMTEXT
LONGBLOB,
LONGTEXT
ENUM('value1','value2',
...)
SET('value1','value2',...)

Tamanho
M w bytes, 0 <= M <= 255, where w is the
number of bytes required for the maximum-length
character in the character set
M bytes, 0 <= M <= 255
L + 1 bytes, 0 <= L <= 255
L + 1 bytes, where L < 28
L + 2 bytes, where L < 216
L + 3 bytes, where L < 224
L + 4 bytes, where L < 232
1 or 2 bytes, depending on the number of
enumeration values (65,535 values maximum)
1, 2, 3, 4, or 8 bytes, depending on the number of
set members (64 members maximum)
Carlos Nunes

Gesto de tabelas Alterar tabelas


ALTER TABLE tabela
De seguida deve ser colocada escolhido um dos seguintes
comandos:

Exemplos:
ALTER TABLE cliente ADD idade INT UNSIGNED;
ALTER TABLE cliente RENAME clientes;
Carlos Nunes

Outros comandos para gesto de tabelas

Apagar tabela
DROP TABLE tabela;

Listar tabelas
SHOW TABLES;

Mostrar descrio da tabela


DESCRIBE tabela;

Carlos Nunes

Gesto 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

Alterar registos em tabela

UPDATE tabela SET campo1="novoValor"


WHERE condio;
Exemplos:
UPDATE cliente SET morada="Rua das camlias"
WHERE cod_cliente=3;
UPDATE cliente SET ordenado="700"
WHERE estado='casado';

Carlos Nunes

11

Apagar registos em tabela


DELETE FROM tabela WHERE condio;

Exemplos:
DELETE FROM cliente WHERE cod_cliente > 3;

Carlos Nunes

12

Estrutura de uma consulta simples


SELECT campo(s)
FROM tabela(s)

Carlos Nunes

13

Clusula WHERE

Utilizada para especificar condies para os


resultados a apresentar.

Exemplo que mostra os tripulantes do barco 3:


SELECT *
FROM Tripulante
WHERE barco=3;

Carlos Nunes

14

Expresses para a clusula WHERE


Existem vrias expresses que so utilizadas para
filtrar dados numa clusula WHERE

Comparar expresses (=, >, <, >=, <=, !)

Valores dentro de intervalo (BETWEEN)

Ex:WHERE matricula BETWEEN 2 AND 3

Valores dentro de um conjunto (IN)

Ex: WHERE matricula != 3

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

Strings com determinadas caractersticas (LIKE)

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


Carlos Nunes

15

Expresses para a clusula WHERE


Dentro da clusula WHERE, tambm podemos
utilizar os seguintes operadores:

NOT (negao)

AND (e)

Ex: WHERE nome NOT LIKE _a%

Ex: WHERE matricula > 3 AND nome LIKE a%

OR (ou)

Ex: WHERE matricula > 3 OR nome LIKE a%

Nota:
Dever ter-se em considerao a prioridade dos operadores
Carlos Nunes

16

Clusula HAVING
Idntica clusula WHERE, mas com a vantagem
de se poder usar funes como condio.

A seguinte consulta devolve a quantidade de


funcionrios em cada barco:

SELECT count(cod_funcionario), barco


FROM tripulante

Para obtermos apenas os barcos com mais de 3


funcionrios, acrescentamos:

HAVING count(cod_funcionario)>3

Carlos Nunes

17

UNION

possvel unir resultados de vrias consultas


usando a expresso UNION.

As condies para podermos unir consultas so:

Possurem 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 expresso ALL utilizada quando pretendemos mostrar dados que
existam em duplicados nas consultas
Carlos Nunes

18

JOIN
JOIN serve para juntar tabelas (lado a lado) atravs
de um campo comum

Divide-se em dois tipos:

Outer JOIN
Inner JOIN

Carlos Nunes

19

Inner Join
Para utilizar este tipo de JOIN, basta igualar os
campos comuns na clusula 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

Carlos Nunes

20

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

Carlos Nunes

21

Outer JOIN
Para fazer um outer JOIN, temos de o declarar na
clusula 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

FROM tripulante RIGHT JOIN barco


ON barco=matricula

Carlos Nunes

22

Clusulas Existentes

SELECT campos
FROM tabelas
WHERE condies
HAVING condies
GROUP BY campos
ORDER BY campos
LIMIT valores

Carlos Nunes

23

Clusulas 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

Carlos Nunes

24

Funes, Alias e DISTINCT

Funes que podem ser usadas em SELECT so:

AVG mdia
SUM soma
MIN valor mnimo
MAX valor mximo
COUNT contar

DISTINCT utilizado para no 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:


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

Carlos Nunes

25

Clusula LIMIT
Utilizada para definir a quantidade de registos a
mostrar.

A expresso pode ser definida com um ou dois


parmetros

Dois parmetros (LIMIT inicio, numeroRegistos)

Ex: LIMIT 3, 4

Um parmetro (LIMIT numeroRegistos)

Ex: LIMIT 4

Carlos Nunes

26

Clusula ORDER BY
Utilizada para definir a ordem em que os resultados
so mostrados

possvel ordenar resultados de forma ascendente


ou descendente (usando vrios campos)

Ordenao descendente

ORDER BY DESC nome

Ordenar atravs de dois campos

ORDER BY nome, DESC peso

Ordenar registos pelo nome do barco:

SELECT *
FROM barco
ORDER BY nome
Carlos Nunes

27

Clusula GROUP BY
GROUP BY utilizada para agrupar informao com
o mesmo contedo.
A seguinte consulta devolve a quantidade de
funcionrios:

SELECT count(cod_funcionario)
FROM tripulante

Se adicionarmos a clusula GROUP BY,obtemos


quantidade de funcionrios em cada barco:

GROUP BY barco

Carlos Nunes

28

Clusula WHERE

Utilizada para especificar condies para os


resultados a apresentar.

Exemplo que mostra os tripulantes do barco 3:


SELECT *
FROM Tripulante
WHERE barco=3;

Carlos Nunes

29

Você também pode gostar