MySQL - O Comando SELECT
-
Upload
graciano-torrao -
Category
Education
-
view
3.467 -
download
0
Transcript of MySQL - O Comando SELECT
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
MySQLMySQLO comando SELECTO comando SELECT
Escola SecundáriaEscola SecundáriaD. Afonso SanchesD. Afonso Sanches
Vila do CondeVila do Conde
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
A linguagem SQL
As sublinguagens do MySQL ( DML, DDL, DCL)
O comando SELECT
Seleccionar todos os registos
Seleccionar todas as colunas
Projecção
Restrição
Operadores relacionais
Operadores lógicos
Outros operadores
Introdução:Introdução:
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para bases de dados relacionais.
A linguagem SQLA linguagem SQL
O facto de ser declarativa apresenta a vantagem de permitir expressar aquilo que se pretende sem ter que entrar em grandes detalhes sobre a localização física e forma como os dados se encontram armazenados.
Possui um formato Open Source designado por MySQL(http://www.mysql.com)
A linguagem SQL é constituída por três sublinguagens:
DML – Data Manipulation Language ( SELECT, INSERT, UPDATE, DELETE, …)
DDL – Data Definition Language (CREATE, ALTER, DROP, …)
DCL – Data Control Language (GRANT, REVOKE, ...)
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
A interrogação de qualquer base de dados relacional faz-se sempre utilizando o comando SELECT que é, sem sombra de dúvidas, o comando mais utilizado e importante da linguagem.
A sintaxe do comando SELECT é a seguinte:
SELECT campo1, campo
2, campo
3, ..., campo
n, *
FROM tabela1, tabela
2, … tabela
k
[WHERE condição]
[GROUP BY …]
[HAVING …]
[ORDER BY ...]
O comando SELECTO comando SELECT
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
#criar a tabela#criar a tabelaCREATE TABLE Produto(
codigo INT NULL PRIMARY KEY AUTO_INCREMENT,nome VARCHAR(15) NOT NULL,preco DECIMAL(4,2) NOT NULL,stock SMALLINT NOT NULL
) TYPE=InnoDB;
#inserir dados de testeINSERT INTO Produto (nome, preco, stock) VALUES ('batata', 32.30, 40), ('cenoura', 12, 45), ('laranja', 11.3, 100), ('alho', 1, 12), ('cebola', 1332.50, 5), ('couve', 13.00, 100);
Tabela que vamos utilizar como exemplo:Tabela que vamos utilizar como exemplo:
mysql> describe Produto;+--------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+--------------+------+-----+---------+----------------+| codigo | int(11) | NO | PRI | NULL | auto_increment | | nome | varchar(15) | NO | | NULL | | | preco | decimal(4,2) | NO | | NULL | | | stock | smallint(6) | NO | | NULL | | +--------+--------------+------+-----+---------+----------------+4 rows in set (0.00 sec)
mysql> select * from Produto;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+6 rows in set (0.00 sec)
mysql> describe Produto;+--------+--------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------+--------------+------+-----+---------+----------------+| codigo | int(11) | NO | PRI | NULL | auto_increment | | nome | varchar(15) | NO | | NULL | | | preco | decimal(4,2) | NO | | NULL | | | stock | smallint(6) | NO | | NULL | | +--------+--------------+------+-----+---------+----------------+4 rows in set (0.00 sec)
mysql> select * from Produto;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+6 rows in set (0.00 sec)
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Na sua forma mais simples, basta indicar quais as colunas que queremos exibir, seguidas do nome da tabela.
Seleccionar todos os registos (linhas)Seleccionar todos os registos (linhas)
mysql> select codigo, nome, preco, stock from Produto;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
mysql> select nome from Produto;+---------+| nome |+---------+| batata | | cenoura | | laranja | | alho | | cebola | | couve | +---------+
mysql> select preco, codigo, nome, stock from Produto;+-------+--------+---------+-------+| preco | codigo | nome | stock |+-------+--------+---------+-------+| 32.30 | 1 | batata | 40 | | 12.00 | 2 | cenoura | 45 | | 11.30 | 3 | laranja | 100 | | 1.00 | 4 | alho | 12 | | 99.99 | 5 | cebola | 5 | | 13.00 | 6 | couve | 100 | +-------+--------+---------+-------+
mysql> select codigo, stockfrom Produto;+--------+-------+| codigo | stock |+--------+-------+| 1 | 40 | | 2 | 45 | | 3 | 100 | | 4 | 12 | | 5 | 5 | | 6 | 100 | +--------+-------+
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Quando pretendemos mostrar todas as colunas de uma tabela, em vez de escrever os nomes de todas elas, podemos utilizar o caracter *(asterisco).
Seleccionar todas as colunasSeleccionar todas as colunas
mysql> select * from Produto;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
mysql> select codigo, nome, preco, stock from Produto;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
É equivalente a ...
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
É a operação que permite obter um subconjunto das colunas que formam a tabela.
ProjecçãoProjecção
mysql> select nome from Produto;+---------+| nome |+---------+| batata | | cenoura | | laranja | | alho | | cebola | | couve | +---------+
mysql> select codigo, stock from Produto;+--------+-------+| codigo | stock |+--------+-------+| 1 | 40 | | 2 | 45 | | 3 | 100 | | 4 | 12 | | 5 | 5 | | 6 | 100 | +--------+-------+
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
A operação de restrição permite restringir o número de linhas a exibir, mediante a avaliação de uma condição fornecida.
Restrição ( WHERE)Restrição ( WHERE)
mysql> select * from Produto where stock > 40;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
A sintaxe do comando SELECT utilizando a cláusula WHERE é a seguinte:
SELECT *
FROM tabela
WHERE condição;
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Da mesma forma que na operação de projecção o * significa todas as colunas, uma condição que seja satisfeita por todas as linhas faz com que todas sejam exibidas.
Restrição ( WHERE) Restrição ( WHERE) continuação...continuação...
mysql> select * from Produto where 1 = 1;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
Ou
mysql> select * from Produto where codigo = codigo;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+
VERDADEIRO
1 = 1
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
No caso da condição ter um valor lógico falso, nenhuma linha é exibida.
Restrição ( WHERE) Restrição ( WHERE) continuação...continuação...
mysql> select * from Produto where 1 <> 1;Empty set (0.00 sec)
FALSO
1 <> 1
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
O resultado de uma operação lógica é sempre verdadeiro ou falso.
Estes podem ser utilizados com o cláusula WHERE de forma a obter as linhas pretendidas.
Os operadores relacionais são os seguintes:
Operadores relacionais Operadores relacionais
Operador Descrição Exemplo Resultado
= Igual a 7 = 5 FALSO
> Maior que 7 > 5 VERDADEIRO
< Menor que 7 < 5 FALSO
>= Maior ou igual que 7 >= 5 VERDADEIRO
<= Menos ou igual que 7 <= 5 FALSO
<> diferente 7 <> 5 VERDADEIRO
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Os operadores lógicos funciona, sempre com operandos lógicos ou com expressões que devolvam valores lógicos.
Operadores lógicos Operadores lógicos
Operador Exemplo
AND Condição 1 AND Condição2
OR Condição 1 OR Condição2
NOT NOT Condição2
mysql> select * from Produto where stock > 10 AND stock < 50;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 4 | alho | 1.00 | 12 | +--------+---------+-------+-------+3 rows in set (0.00 sec)
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Este operador permite especificar intervalos de valores.
Operadore BETWEEN Operadore BETWEEN
mysql> select * from Produto where stock between 40 AND 45;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | +--------+---------+-------+-------+2 rows in set (0.00 sec)
A sintaxe é a seguinte:
SELECT ...
FROM ...
WHERE valor [NOT] BETWEEN valor 1 AND valor2
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Este operador permite verificar se algo faz ou não parte de um conjunto de valores especificado entre parêntesis.
Operador IN Operador IN
mysql> select * from Produto where stock in (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 3 | laranja | 11.30 | 100 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+3 rows in set (0.00 sec)
A sintaxe é a seguinte:
SELECT ...
FROM ...
WHERE valor [NOT] IN (valor1, valor2, valor3)
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Este operador permite realizar comparações de valores com NULL.
O valor NULL representa a ausência de valor.
Operador IS Operador IS
mysql> select * from Produto where preco is null;Empty set (0.01 sec)
mysql> select * from Produto where preco is not null;+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 1 | batata | 32.30 | 40 | | 2 | cenoura | 12.00 | 45 | | 3 | laranja | 11.30 | 100 | | 4 | alho | 1.00 | 12 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+6 rows in set (0.00 sec)
A sintaxe é a seguinte:
SELECT ...
FROM ...
WHERE campo IS [NOT] NULL
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
O operador LIKE permite realizar comparações entre strings.
Uma string é uma cadeia de caracteres que funciona como um todo.
O operador LIKE torna-se articularmente útil se utilizado conjuntamente com os caracteres genéricos (WildCards).
Operador LIKE (comparação de strings) Operador LIKE (comparação de strings)
mysql> select * from Produto where nome like 'c%';+--------+---------+-------+-------+| codigo | nome | preco | stock |+--------+---------+-------+-------+| 2 | cenoura | 12.00 | 45 | | 5 | cebola | 99.99 | 5 | | 6 | couve | 13.00 | 100 | +--------+---------+-------+-------+3 rows in set (0.00 sec)
WildCard Significado
% Qualquer conjunto de zero ou mais caracteres
_ (underscore) Um caracter qualquer
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( http://gracianotorrao.com )
Dúvidas?Dúvidas?
Escola SecundáriaEscola SecundáriaD. Afonso SanchesD. Afonso Sanches
Vila do CondeVila do Conde
18
Programação e Sistemas de InformaçãoProgramação e Sistemas de Informação
Graciano Torrão( [email protected] )