A instrução select do MariaDB exibe(seleciona) dados de uma ou mais tabelas. No MariaDB, a cláusula from é opcional. É conveniente se você quiser chamar uma função ou avaliar uma expressão.
Vamos ver um exemplo usando select. O comando abaixo selecionará(exibirá) todos os registros da tabela countries:
O * significa tudo ou todos.
Embora a cláusula select apareça antes da cláusula from, o MariaDB avalia a cláusula from antes da cláusula select.
Antes de usar os comandos abaixo, se estiver dentro do cmd ou bash(no linux), use os comandos abaixo para logar e para usar o banco de dados nation que criamos no tutorial passado:
sudo mysql -u root -p
Digite agora use nation; O MariaDB [(none)]> não é para ser digitado
MariaDB [(none)]> use nation;
Exemplos usando select
#1 selecionando todo conteúdo da tabela contries. Execute SELECT * FROM countries;
MariaDB [nation]> select * from countries; +------------+----------------------------------------------+-------------+--------------+---------------+---------------+-----------+ | country_id | name | area | national_day | country_code2 | country_code3 | region_id | +------------+----------------------------------------------+-------------+--------------+---------------+---------------+-----------+ | 1 | Aruba | 193.00 | NULL | AW | ABW | 1 | | 2 | Afghanistan | 652090.00 | 1919-08-19 | AF | AFG | 2 | | 3 | Angola | 1246700.00 | 1975-11-11 | AO | AGO | 3 | | 4 | Anguilla | 96.00 | 1967-05-30 | AI | AIA | 1 | | 5 | Albania | 28748.00 | 1912-11-28 | AL | ALB | 4 | | 6 | Andorra | 468.00 | NULL | AD | AND | 4 | | 7 | Netherlands Antilles | 800.00 | NULL | AN | ANT | 1 | | 8 | United Arab Emirates | 83600.00 | 1971-12-02 | AE | ARE | 5 | | 9 | Argentina | 2780400.00 | 1816-07-09 | AR | ARG | 6 | | 10 | Armenia | 29800.00 | 1991-09-21 | AM | ARM | 5 | | 11 | American Samoa | 199.00 | NULL | AS | ASM | 7 |
#2 selecionando o conteúdo da coluna name da tabela countries.
MariaDB [nation]> select name from countries; +----------------------------------------------+ | name | +----------------------------------------------+ | Aruba | | Afghanistan | | Angola | | Anguilla | | Albania | | Andorra | | Netherlands Antilles | | United Arab Emirates | | Argentina | | Armenia | | American Samoa |
#3 Exemplo de uso da instrução select para consultar dados de várias colunas. Execute: select name, area, national_day from countries;
MariaDB [nation]> select name, area, national_day from countries; +----------------------------------------------+-------------+--------------+ | name | area | national_day | +----------------------------------------------+-------------+--------------+ | Aruba | 193.00 | NULL | | Afghanistan | 652090.00 | 1919-08-19 | | Angola | 1246700.00 | 1975-11-11 | | Anguilla | 96.00 | 1967-05-30 | | Albania | 28748.00 | 1912-11-28 | | Andorra | 468.00 | NULL | | Netherlands Antilles | 800.00 | NULL | | United Arab Emirates | 83600.00 | 1971-12-02 | | Argentina | 2780400.00 | 1816-07-09 | | Armenia | 29800.00 | 1991-09-21 | | American Samoa | 199.00 | NULL | | Antarctica | 13120000.00 | NULL | | French Southern territories | 7780.00 | NULL | | Antigua and Barbuda | 442.00 | 1981-11-01 |
Esse mesmo comando poderia ser digitado em linhas separadas asssim:
select name, area, national_day from countries;
#4 Usando a instrução de select para consultar dados de todas as colunas de uma tabela.
Para isso podemos digitar:
select country_id, name, area, national_day, country_code2, country_code3, region_id from countries;
ou simplesmente
select * from countries;o (*) é uma abreviação para todas as colunas da tabela e lemos esse comando assim “selecione tudo da tabela…..”
Recomendado: ao programar, evite usar o * no código, ao invés disso especifique explicitamente os nomes das colunas das quais deseja recuperar dados.
#5 Usando select para selecionar somente de expressão
#6 usando a função now() para retornar o timestamp atual do servidor. Execute select now()
DB [nation]> select now(); +---------------------+ | now() | +---------------------+ | 2022-10-07 12:04:12 | +---------------------+ 1 row in set (0.003 sec)
Classificando em Ordem Crescente e Decrescente
O comando select retorna resultados cujas linhas não estão em nenhuma ordem específica. Podemos usar valores em uma ou mais colunas, use a cláusula order by.
Por exemplo, levando em consideração a tabela regions, se usarmos somente o select ele trará ordenado um campo que talvez não seja o que queremos.
MariaDB [nation]> select * from regions; +-----------+---------------------------+--------------+ | region_id | name | continent_id | +-----------+---------------------------+--------------+ | 1 | Caribbean | 1 | | 2 | Southern and Central Asia | 2 | | 3 | Central Africa | 3 | | 4 | Southern Europe | 4 | | 5 | Middle East | 2 | | 6 | South America | 5 | | 7 | Polynesia | 6 | | 8 | Antarctica | 7 | | 9 | Australia and New Zealand | 6 | | 10 | Western Europe | 4 | | 11 | Eastern Africa | 3 | | 12 | Western Africa | 3 | | 13 | Eastern Europe | 4 | | 14 | Central America | 1 | | 15 | North America | 1 | | 16 | Southeast Asia | 2 | | 17 | Southern Africa | 3 | | 18 | Eastern Asia | 2 | | 19 | Nordic Countries | 4 | | 20 | Northern Africa | 3 | | 21 | Baltic Countries | 4 | | 22 | Melanesia | 6 | | 23 | Micronesia | 6 | | 24 | British Islands | 4 | | 25 | Micronesia/Caribbean | 6 | +-----------+---------------------------+--------------+ 25 rows in set (0.001 sec)
Vamos ordenar o campo “name”
MariaDB [nation]> select * from regions order by name; +-----------+---------------------------+--------------+ | region_id | name | continent_id | +-----------+---------------------------+--------------+ | 8 | Antarctica | 7 | | 9 | Australia and New Zealand | 6 | | 21 | Baltic Countries | 4 | | 24 | British Islands | 4 | | 1 | Caribbean | 1 | | 3 | Central Africa | 3 | | 14 | Central America | 1 | | 11 | Eastern Africa | 3 | | 18 | Eastern Asia | 2 | | 13 | Eastern Europe | 4 | | 22 | Melanesia | 6 | | 23 | Micronesia | 6 | | 25 | Micronesia/Caribbean | 6 | | 5 | Middle East | 2 | | 19 | Nordic Countries | 4 | | 15 | North America | 1 | | 20 | Northern Africa | 3 | | 7 | Polynesia | 6 | | 6 | South America | 5 | | 16 | Southeast Asia | 2 | | 17 | Southern Africa | 3 | | 2 | Southern and Central Asia | 2 | | 4 | Southern Europe | 4 | | 12 | Western Africa | 3 | | 10 | Western Europe | 4 | +-----------+---------------------------+--------------+ 25 rows in set (0.005 sec)
Acima está em ordem ascendente(asc). Não precisamos digitar asc pois esse é o valor padrão. O comando abaixo daria na mesma:
select * from regions order by name asc;
Vamos colocar em ordem decrescente usando desc:
MariaDB [nation]> select * from regions order by name desc; +-----------+---------------------------+--------------+ | region_id | name | continent_id | +-----------+---------------------------+--------------+ | 10 | Western Europe | 4 | | 12 | Western Africa | 3 | | 4 | Southern Europe | 4 | | 2 | Southern and Central Asia | 2 | | 17 | Southern Africa | 3 | | 16 | Southeast Asia | 2 | | 6 | South America | 5 | | 7 | Polynesia | 6 | | 20 | Northern Africa | 3 | | 15 | North America | 1 | | 19 | Nordic Countries | 4 | | 5 | Middle East | 2 | | 25 | Micronesia/Caribbean | 6 | | 23 | Micronesia | 6 | | 22 | Melanesia | 6 | | 13 | Eastern Europe | 4 | | 18 | Eastern Asia | 2 | | 11 | Eastern Africa | 3 | | 14 | Central America | 1 | | 3 | Central Africa | 3 | | 1 | Caribbean | 1 | | 24 | British Islands | 4 | | 21 | Baltic Countries | 4 | | 9 | Australia and New Zealand | 6 | | 8 | Antarctica | 7 | +-----------+---------------------------+--------------+ 25 rows in set (0.001 sec)
Conclusão
Neste tutorial, você aprendeu como usar de forma simples a instrução select para consultar dados de uma tabela.