Capítulo 4. SELECCIONA
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Cuando se trabaja con bases de datos y SQL, la tarea más común de es solicitar datos de una o varias tablas y mostrarlos. La sentencia SELECT
consigue esto. Pero SELECT
puede hacer mucho más que simplemente recuperar y mostrar datos. Como aprenderemos en los próximos capítulos, podemos transformar estos datos de forma significativa y construir potentes resúmenes a partir de millones de registros.
Pero antes, aprenderemos a SELECT
columnas de una misma tabla, así como a componer expresiones en ellas.
Recuperar datos con SQL
Si aún no lo has hecho, haz clic en Herramientas→Abrir Editor SQL en el menú superior, y asegúrate de que la base de datos rexon_metals
está abierta, como se mencionó en el capítulo anterior. Tu espacio de trabajo de SQLiteStudio debería parecerse a la Figura 4-1. Observa que el espacio de trabajo SQL está ahora dividido en dos paneles, un panel Editor SQL y un panel Resultados de consulta.
El panel Editor SQL es donde escribirás tu SQL, y el panel Resultados de consulta mostrará los resultados de tu SQL.
Escribamos nuestra primera sentencia SQL. La operación SQL más habitual es una sentencia SELECT
, que extrae datos de una tabla y luego muestra los resultados. Haz clic en el panel Editor SQL y escribe la siguiente sentencia:
SELECT
*
FROM
CUSTOMER
;
Haz clic en el botón triángulo azul o pulsa F9 para ejecutar el SQL.
Acabas de ejecutar tu primera consulta, y los resultados deberían aparecer en el panel inferior(Figura 4-2).
Vamos a desglosar exactamente lo que ha ocurrido. Una sentencia SELECT
te permite elegir las columnas que extraerá de una tabla. Así que la primera parte del SQL que se muestra aquí debe leerse como "Seleccionar todas las columnas", donde * es un marcador de posición para especificar todas las columnas:
SELECT
*
FROM
CUSTOMER
;
Y estás obteniendo estas columnas de la tabla CUSTOMER
:
SELECT
*
FROM
CUSTOMER
;
Cuando ejecutas esta sentencia SELECT
, te devuelve todas las columnas de la tabla CUSTOMER
y te las muestra(Figura 4-3).
No tienes que extraer todas las columnas de una declaración SELECT
. También puedes elegir sólo las columnas que te interesen. La siguiente consulta sólo extraerá las columnas CUSTOMER_ID
y NAME
:
SELECT
CUSTOMER_ID
,
NAME
FROM
CUSTOMER
;
Y la salida sólo mostrará esas dos columnas(Figura 4-4).
Nota
Una única sentencia SQL puede terminar opcionalmente con un punto y coma (;
), como se muestra en los ejemplos anteriores. Sin embargo, el punto y coma es necesario para ejecutar varias sentencias SQL a la vez, lo que resulta útil al escribir datos, como se explica en el Capítulo 10.
Poder elegir las columnas puede no parecer interesante en este momento, pero nos permite afinar en lo que nos interesa. Reducir el alcance a sólo determinadas columnas nos ayudará también en las tareas de agregación de GROUP BY
, como veremos en el Capítulo 6.
Expresiones en sentencias SELECT
La sentencia SELECT
puede hacer mucho más que simplemente seleccionar columnas. También puedes hacer cálculos sobre una o varias columnas e incluirlos en el resultado de tu consulta.
Vamos a trabajar con otra tabla llamada PRODUCT
. Primero, haz un SELECT
all para ver los datos(Figura 4-5):
SELECT
*
FROM
PRODUCT
;
Supongamos que queremos generar una columna calculada llamada TAXED_PRICE
que sea un 7% superior a PRICE
. Podríamos utilizar una consulta SELECT
para que nos lo calculara dinámicamente(Figura 4-6):
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
;
Nota
Observa en la declaración SELECT
que podemos repartir nuestro SQL en varias líneas para hacerlo más legible. El software ignorará los espacios en blanco extraños y las líneas separadas, por lo que podemos utilizarlos para que nuestro SQL sea más fácil de leer.
Observa cómo se ha calculado dinámicamente la columna TAXED_PRICE
en la consulta SELECT
. Esta columna no se almacena en la tabla, sino que se calcula y se nos muestra cada vez que ejecutamos esta consulta. Esta es una potente función de SQL, que nos permite mantener los datos almacenados simples y utilizar las consultas para superponer cálculos sobre ellos.
Echemos un vistazo a nuestra columna TAXED_PRICE
y desglosemos cómo se creó. Primero vemos que PRICE
se multiplica por 1,07 para calcular el importe gravado. Generamos este valor TAXED_PRICE
para cada registro:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Observa también que hemos dado a este valor calculado un nombre utilizando una declaración AS
(esto se conoce como alias):
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Podemos utilizar alias para dar nombre a las expresiones. También podemos utilizar alias para aplicar un nuevo nombre a una columna existente dentro de la consulta. Por ejemplo, podemos cambiar el alias de la columna PRICE
a UNTAXED_PRICE
(Figura 4-7). Esto no cambia realmente el nombre de la columna en la tabla, pero le da un nuevo nombre dentro del ámbito de nuestra sentencia SELECT
:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
AS
UNTAXED_PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Nota
Cuando des nombres a cualquier cosa en SQL (ya sea un alias, un nombre de columna, un nombre de tabla, o cualquier otra entidad), utiliza siempre un guión bajo (_
) como marcador de espacios. Es una buena práctica.
Si tuviéramos que distribuir los resultados de esta sentencia SQL como un informe a nuestro lugar de trabajo, probablemente querríamos retocar el redondeo en el TAXED_PRICE
. Tener más de dos decimales puede no ser deseable. Todas las plataformas de bases de datos tienen funciones integradas para ayudar con este tipo de operaciones, y SQLite proporciona una función round()
que acepta dos argumentos entre paréntesis separados por una coma: el número que hay que redondear y el número de decimales al que hay que redondear. Para redondear el TAXED_PRICE
a dos decimales, podemos pasar la expresión de multiplicación PRICE AS UNTAXED_PRICE * 1.07
como primer argumento, y un 2
como segundo:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
AS
UNTAXED_PRICE
,
round
(
PRICE
AS
UNTAXED_PRICE
*
1
.
07
,
2
)
AS
TAXED_PRICE
FROM
PRODUCT
;
Ejecuta la declaración y verás que redondea el TAXED_PRICE
, que se muestra mucho mejor con dos decimales(Figura 4-8).
He aquí un breve resumen de los operadores matemáticos que puedes utilizar en SQL (los veremos utilizados a lo largo del libro):
Operario | Descripción | Ejemplo |
---|---|---|
+ | Suma dos números | STOCK + NEW_SHIPMENT |
- | Resta dos números | STOCK - DEFECTS |
* | Multiplica dos números | PRICE * 1.07 |
/ | Divide dos números | STOCK / PALLET_SIZE |
% | Divide dos números, pero devuelve el resto | STOCK % PALLET_SIZE |
Concatenar texto
Las expresiones no tienen por qué funcionar sólo con números. También puedes utilizar expresiones con texto y otros tipos de datos. Un operador útil para utilizar con texto es la concatenación, que fusiona dos o más datos. El operador de concatenación se especifica mediante una doble tubería (||
), y a ambos lados de ella colocas los valores de los datos a concatenar.
Por ejemplo, puedes concatenar los campos CITY
y STATE
de la tabla CUSTOMER
, así como poner una coma y un espacio entre ellos para crear un valor LOCATION
(Figura 4-9):
SELECT
NAME
,
CITY
||
', '
||
STATE
AS
LOCATION
FROM
CUSTOMER
;
Incluso puedes concatenar varios campos en un único valor SHIP_ADDRESS
(Figura 4-10):
SELECT
NAME
,
STREET_ADDRESS
||
' '
||
CITY
||
', '
||
STATE
||
' '
||
ZIP
AS
SHIP_ADDRESS
FROM
CUSTOMER
;
La concatenación debería funcionar con cualquier tipo de datos (números, fechas, etc.) y tratarlos como texto al fusionarlos. El campo ZIP
que se muestra aquí es un número, pero se convirtió implícitamente en texto durante la concatenación.
En el próximo capítulo se tratarán más operaciones de texto, pero la concatenación es sin duda una de las más importantes.
Nota
Muchas plataformas de bases de datos utilizan tuberías dobles (||
) para concatenar, pero MySQL y algunas otras requieren utilizar una función CONCAT()
.
Resumen
En este capítulo hemos visto cómo utilizar la sentencia SELECT
, la operación SQL más habitual. Recupera y transforma datos de una tabla sin afectar a la propia tabla. También hemos aprendido a seleccionar columnas y a escribir expresiones. Dentro de las expresiones, podemos utilizar operadores y funciones para realizar tareas como el redondeo, las operaciones matemáticas y la concatenación.
En el próximo capítulo, conoceremos la sentencia WHERE
, que nos permitirá filtrar registros en función de los criterios que especifiquemos.
Get Primeros pasos con SQL now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.