Para seleccionar datos de una base de datos SQLite, utilice SELECT
declaración.
Cuando usa esta declaración, especifica de qué tabla/s seleccionar datos, así como las columnas para devolver de la consulta.
También puede proporcionar criterios adicionales para reducir aún más los datos que se devuelven.
Simple SELECT
Declaración
Ya hemos usado un SELECT
declaración anterior, cuando insertamos datos.
La declaración que usamos fue esta:
SELECT * FROM Artists;
Esto se explica por sí mismo:le dice a SQLite que seleccione todas las columnas de
Artists
mesa. El asterisco (*
) es una forma abreviada de decir "todas las columnas". Nos ahorra tener que escribir los nombres de todas las columnas.
Por lo tanto, esta consulta devuelve todos los registros y todas las columnas. Así:
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
Formateo
Vamos a formatear la salida para que nuestros resultados sean un poco más fáciles de leer.
Usar columnas
Puedes usar .mode
para cambiar el modo de salida. El ejemplo anterior usa .mode list
, que muestra los resultados en forma de lista.
Cambiemos el modo para usar columnas.
.mode column
Cuando haga esto, es posible que deba ajustar el ancho de las columnas (cualquier dato que sea demasiado ancho para la columna se truncará).
Ajustar anchos de columna
Para ajustar el ancho de las columnas, use .width
comando, seguido de anchos para cada columna.
El siguiente ejemplo establece la primera columna en 12
y la segunda columna a 20
.
.width 12 20
Agregar encabezados
También puede usar .headers
para especificar si mostrar o no los encabezados de las columnas.
Para mostrar encabezados, use esto:
.headers on
Puede eliminarlos con .headers off
.
Mostrar configuración
Puede revisar estas y otras configuraciones en cualquier momento, escribiendo .show
sqlite> .show echo: off eqp: off explain: off headers: on mode: column nullvalue: "" output: stdout separator: "|" stats: off width: 12 20
Nuevo formato
Así es como se ve el ejemplo anterior usando el modo de columnas y encabezados:
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
El WHERE
Cláusula
Puedes usar el WHERE
cláusula para reducir los resultados. La cláusula le permite estipular criterios específicos para aplicar a la consulta.
Por ejemplo, puede especificar que solo se devuelvan los registros en los que un campo determinado contenga un valor determinado.
Aquí hay un ejemplo muy específico. Especifica que solo el registro con un ArtistId igual a 6 debe devolverse:
SELECT * FROM Artists WHERE ArtistId = 6;
Resultado:
ArtistId ArtistName ------------ -------------------- 6 Mr Percival
Para encontrar todos los artistas cuyo nombre comienza con la letra "S", puedes hacer esto:
SELECT * FROM Artists WHERE ArtistName LIKE 'S%';
Resultado:
ArtistId ArtistName ------------ -------------------- 2 Steve Vai 11 Strapping Young Lad 12 Slayer
El signo de porcentaje (%
) es un carácter comodín que se puede utilizar para especificar cualquier carácter. Entonces, en este ejemplo, estamos especificando que el nombre del artista debe ser como este patrón (es decir, el patrón que comienza con la letra
S
y siguiendo con cualquier otro carácter).
Otro ejemplo del uso de WHERE
cláusula es recuperar un rango de valores. Por ejemplo, podríamos buscar registros donde el valor sea menor que un número, mayor que un número o dentro de un cierto rango.
Este es un ejemplo de cómo seleccionar solo los registros con un ArtistId menos que un 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
Este es un ejemplo de cómo seleccionar solo los registros con un ArtistId dentro de un cierto rango:
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
Selección de columnas
Puede especificar que solo se devuelvan determinadas columnas en el conjunto de resultados. Simplemente escriba los nombres de las columnas en la consulta. Los nombres de columnas múltiples deben estar separados por una coma.
Es una buena práctica seleccionar solo las columnas que necesita. Usando *
, si bien es conveniente, puede generar una sobrecarga adicional si devuelve más columnas de las requeridas.
Entonces, ejecutemos la misma consulta nuevamente, pero esta vez, solo seleccione ArtistName columna:
SELECT ArtistName FROM Artists WHERE ArtistId BETWEEN 5 AND 10;
Resultado:
ArtistName ------------ Wayne Jury Mr Percival Iron Maiden Atmasphere Ian Moss Magnum
El ORDER BY
Cláusula
Puedes usar el ORDER BY
cláusula para limitar el número de registros devueltos.
Puede agregar ASC
para orden ascendente, o DESC
por orden descendente. Si no agrega nada, usará ascendente.
Aquí, ordenamos por ArtistName campo en orden ascendente:
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
Y si cambiamos a orden descendente:
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
El LIMIT
Cláusula
Puedes usar el LIMIT
cláusula para limitar el número de registros devueltos. Esto puede ser útil si su tabla contiene una gran cantidad de registros, pero solo desea ver unos pocos.
Aquí, limitamos el conjunto de registros a solo 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