Sunteți pe pagina 1din 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

Data e Hora

String

BIT TINYINT BOOL SMALLINT MEDIUMINT INT BIGINT FLOAT DOUBLE DECIMAL

DATE TIME DATETIME YEAR TIMESTAMP

CHAR VARCHAR BINARY VARBINARY BLOB TEXT ENUM SET

Carlos Nunes

Tipos de dados Numricos


Tipo Valor mnimo 0 SMALLINT MEDIUMINT INT -32768 0 -8388608 0 Valor Mximo 255 32767 65535 8388607 16777215 FLOAT DOUBLE [PRECISION], REAL DECIMAL(M,D), NUMERIC(M,D) Tipo TINYINT SMALLINT MEDIUMINT INT, INTEGER BIGINT FLOAT(p) 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

-2147483648 2147483647 0 4294967295

BIGINT

-9,22E+018 0

9,22E+018 1,84E+019

Varivel

Carlos Nunes

Tipo de dados Data e Hora


Tipo DATETIME DATE TIMESTAMP (4.1 and up) TIMESTAMP (before 4.1) TIME YEAR Exemplo 0000-00-00 00:00:00' 0000-00-00' 0000-00-00 00:00:00' 00000000000000' 00:00:00' 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) 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

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

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 (=, >, <, >=, <=, !)

Ex: WHERE matricula != 3 Ex:WHERE matricula BETWEEN 2 AND 3 Ex: WHERE matricula IN (2,4,7) Ex (segunda letra=a): WHERE nome LIKE _a%
Carlos Nunes

Valores dentro de intervalo (BETWEEN)

Valores dentro de um conjunto (IN)

Strings com determinadas caractersticas (LIKE)

15

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

NOT (negao)

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

possvel unir resultados de vrias consultas usando a expresso UNION.

UNION

As condies para podermos unir consultas so:


Possurem a mesma quantidade de campos Os campos seleccionados terem o mesmo tipo de dados SELECT campos FROM tabela1 UNION ALL SELECT campos FROM tabela2

Exemplo:

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 RIGHT JOIN barco ON barco=matricula

FROM tripulante LEFT 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:


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)

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

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)

Um parmetro (LIMIT numeroRegistos)

Ex: LIMIT 3, 4 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

Ordenar atravs de dois campos

ORDER BY DESC nome

ORDER BY nome, DESC peso SELECT * FROM barco ORDER BY nome


Carlos Nunes

Ordenar registos pelo nome do barco:


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

S-ar putea să vă placă și