MySQL - O Comando SELECT

6.010 visualizações

Publicada em

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
6.010
No SlideShare
0
A partir de incorporações
0
Número de incorporações
601
Ações
Compartilhamentos
0
Downloads
183
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

MySQL - O Comando SELECT

  1. 1. MySQL O comando SELECT Escola Secundária D. Afonso Sanches Vila do Conde Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  2. 2. Introdução: 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 Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  3. 3. A linguagem SQL Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para bases de dados relacionais. 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, ...) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  4. 4. O comando SELECT 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, campo2, campo3, ..., campon, * FROM tabela1, tabela2, … tabelak [WHERE condição] [GROUP BY …] [HAVING …] [ORDER BY ...] Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  5. 5. Tabela que vamos utilizar como exemplo: #criar a tabela CREATE 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 teste INSERT INTO Produto (nome, preco, stock) VALUES ('batata', 32.30, 40), ('cenoura', 12, 45), ('laranja', 11.3, 100), mysql> describe Produto; ('alho', 1, 12), +--------+--------------+------+-----+---------+----------------+ ('cebola', 1332.50, 5), | Field | Type | Null | Key | Default | Extra | ('couve', 13.00, 100); +--------+--------------+------+-----+---------+----------------+ | 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  6. 6. Seleccionar todos os registos (linhas) Na sua forma mais simples, basta indicar quais as colunas que queremos exibir, seguidas do nome da tabela. 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, stock from Produto; +--------+-------+ | codigo | stock | +--------+-------+ | 1 | 40 | | 2 | 45 | | 3 | 100 | | 4 | 12 | | 5 | 5 | | 6 | 100 | +--------+-------+ Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  7. 7. Seleccionar todas as colunas Quando pretendemos mostrar todas as colunas de uma tabela, em vez de escrever os nomes de todas elas, podemos utilizar o caracter *(asterisco). 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 | +--------+---------+-------+-------+ É equivalente a ... 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 | +--------+---------+-------+-------+ Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  8. 8. Projecção É a operação que permite obter um subconjunto das colunas que formam a tabela. 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 | +--------+-------+ Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  9. 9. Restrição ( WHERE) A operação de restrição permite restringir o número de linhas a exibir, mediante a avaliação de uma condição fornecida. 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; Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  10. 10. Restrição ( WHERE) continuação... 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. 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 | +--------+---------+-------+-------+ 1=1 VERDADEIRO 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 | +--------+---------+-------+-------+ Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  11. 11. Restrição ( WHERE) continuação... No caso da condição ter um valor lógico falso, nenhuma linha é exibida. mysql> select * from Produto where 1 <> 1; Empty set (0.00 sec) 1 <> 1 FALSO Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  12. 12. Operadores relacionais 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: 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 Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  13. 13. Operadores lógicos Os operadores lógicos funciona, sempre com operandos lógicos ou com expressões que devolvam valores 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  14. 14. Operadore BETWEEN Este operador permite especificar intervalos de valores. A sintaxe é a seguinte: SELECT ... FROM ... WHERE valor [NOT] BETWEEN valor 1 AND valor2 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  15. 15. Operador IN Este operador permite verificar se algo faz ou não parte de um conjunto de valores especificado entre parêntesis. A sintaxe é a seguinte: SELECT ... FROM ... WHERE valor [NOT] IN (valor1, valor2, valor3) 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  16. 16. Operador IS Este operador permite realizar comparações de valores com NULL. O valor NULL representa a ausência de valor. A sintaxe é a seguinte: SELECT ... FROM ... WHERE campo IS [NOT] NULL 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  17. 17. Operador LIKE (comparação de strings) 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). WildCard Significado % Qualquer conjunto de zero ou mais caracteres _ (underscore) Um caracter qualquer 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) Graciano Torrão ( http://gracianotorrao.com ) Programação e Sistemas de Informação
  18. 18. Dúvidas? Escola Secundária D. Afonso Sanches Vila do Conde Graciano Torrão 18 ( graciano.torrao@gmail.com ) ( http://gracianotorrao.com ) Programação e Sistemas de Informação

×