Para selecionar dados de um banco de dados SQLite, use o
SELECT
demonstração. Ao usar essa instrução, você especifica de qual(is) tabela(s) selecionar os dados, bem como as colunas a serem retornadas da consulta.
Você também pode fornecer critérios extras para restringir ainda mais os dados retornados.
Simples SELECT
Declaração
Já usamos um
SELECT
declaração anteriormente, quando inserimos os dados. A declaração que usamos foi esta:
SELECT * FROM Artists;
Isso é bastante autoexplicativo - está dizendo ao SQLite para selecionar todas as colunas do Artistas tabela. O asterisco (
*
) é uma forma abreviada de dizer "todas as colunas". Isso nos poupa escrevendo os nomes de todas as colunas. Portanto, essa consulta retorna todos os registros e todas as colunas. Assim:
1|Joe Satriani 2|Steve Vai 3|The Tea Party 4|Noiseworks 5|Wayne Jury 6|Mr Percival 7|Iron Maiden 8|Atmasphere 9|Ian Moss 10|Magnum 11|Strapping Young Lad 12|Slayer 13|Primus 14|Pat Metheny 15|Frank Gambale 16|Frank Zappa 17|The Wiggles
Formatação
Vamos formatar a saída para que nossos resultados sejam um pouco mais fáceis de ler.
Usar colunas
Você pode usar
.mode
para alterar o modo de saída. O exemplo acima usa .mode list
, que exibe os resultados como uma lista. Vamos alterar o modo para usar colunas.
.mode column
Ao fazer isso, talvez seja necessário ajustar as larguras das colunas (todos os dados que forem muito largos para a coluna serão truncados).
Ajuste as larguras das colunas
Para ajustar as larguras das colunas, use o
.width
comando, seguido por larguras para cada coluna. O exemplo a seguir define a primeira coluna como
12
e a segunda coluna para 20
. .width 12 20
Adicionar cabeçalhos
Você também pode usar
.headers
para especificar se os cabeçalhos das colunas devem ou não ser exibidos. Para exibir cabeçalhos, use isto:
.headers on
Você pode removê-los com
.headers off
. Mostrar configurações
Você pode revisar essas e outras configurações a qualquer momento digitando
.show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Novo formato
Veja como é o exemplo anterior usando o modo de colunas e cabeçalhos:
ArtistId ArtistName ---------- ------------ 1 Joe Satriani 2 Steve Vai 3 The Tea Part 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum 11 Strapping Yo 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambal 16 Frank Zappa 17 The Wiggles
O WHERE
Cláusula
Você pode usar o
WHERE
cláusula para restringir os resultados. A cláusula permite estipular critérios específicos para os quais aplicar à consulta. Por exemplo, você pode especificar que apenas os registros, onde um determinado campo contém um determinado valor, devem ser retornados.
Aqui está um exemplo muito específico. Especifica que apenas o registro com um ArtistId igual a 6 deve ser devolvido:
SELECT * FROM Artists WHERE ArtistId = 6;
Resultado:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
Para encontrar todos os artistas cujo nome começa com a letra "S", você pode fazer o seguinte:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Resultado:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
O sinal de porcentagem (
%
) é um caractere curinga que pode ser usado para especificar qualquer caractere. Portanto, neste exemplo, estamos especificando que o nome do artista deve ser como este padrão (ou seja, o padrão começando com a letra
S
e seguindo com qualquer outro caractere). Outro exemplo de uso do
WHERE
cláusula é recuperar um intervalo de valores. Por exemplo, podemos procurar registros em que o valor seja menor que um número, maior que um número ou dentro de um determinado intervalo. Aqui está um exemplo de como selecionar apenas os registros com um ArtistId menos de um número:
SELECT * FROM Artists WHERE ArtistId < 6;
Resultado:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury
Aqui está um exemplo de como selecionar apenas os registros com um ArtistId dentro de um determinado intervalo:
SELECT * FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultado:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere 9 Ian Moss 10 Magnum
Selecionando Colunas
Você pode especificar que apenas determinadas colunas sejam retornadas no conjunto de resultados. Basta escrever os nomes das colunas na consulta. Vários nomes de coluna precisam ser separados por uma vírgula.
É uma boa prática selecionar apenas as colunas necessárias. Usando
*
, embora conveniente, pode causar sobrecarga extra se retornar mais colunas do que o necessário. Então, vamos executar a mesma consulta novamente, mas desta vez, selecione apenas o ArtistName coluna:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultado:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
O ORDER BY
Cláusula
Você pode usar o
ORDER BY
cláusula para limitar o número de registros retornados. Você pode adicionar
ASC
para ordem crescente ou DESC
para ordem decrescente. Se você não adicionar nada, usará ascendente. Aqui, ordenamos pelo ArtistName campo em ordem crescente:
SELECT * FROM Artists ORDER BY ArtistName;
Resultado:
ArtistId ArtistName ------------ -------------------- 8 Atmasphere 15 Frank Gambale 16 Frank Zappa 9 Ian Moss 7 Iron Maiden 1 Joe Satriani 10 Magnum 6 Mr Percival 4 Noiseworks 14 Pat Metheny 13 Primus 12 Slayer 2 Steve Vai 11 Strapping Young Lad 3 The Tea Party 17 The Wiggles 5 Wayne Jury
E se mudarmos para ordem decrescente:
SELECT * FROM Artists ORDER BY ArtistName DESC;
Resultado:
ArtistId ArtistName ------------ -------------------- 5 Wayne Jury 17 The Wiggles 3 The Tea Party 11 Strapping Young Lad 2 Steve Vai 12 Slayer 13 Primus 14 Pat Metheny 4 Noiseworks 6 Mr Percival 10 Magnum 1 Joe Satriani 7 Iron Maiden 9 Ian Moss 16 Frank Zappa 15 Frank Gambale 8 Atmasphere
O LIMIT
Cláusula
Você pode usar o
LIMIT
cláusula para limitar o número de registros retornados. Isso pode ser útil se sua tabela contiver um grande número de registros, mas você quiser ver apenas alguns. Aqui, limitamos o conjunto de registros a apenas cinco registros:
SELECT * FROM Artists LIMIT 5;
Resultado:
ArtistId ArtistName ------------ -------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury