Volver a la lista de artículos Artículos
Lectura de 16 minutos

Términos de SQL que los principiantes deben conocer - Parte 3

Esta es la tercera parte de mi lista de términos esenciales de SQL para principiantes. En la primera, aprendiste lo que son las tablas, las bases de datos relacionales y las consultas. En la segunda parte del tutorial, te hablé de los alias, Tipos de JOIN en SQL, las claves primarias y las subconsultas. Ahora, es el momento de los términos más avanzados de las bases de datos. Pero no tengas miedo. No te voy a machacar con definiciones científicas. Lo explicaré todo de forma sencilla para que puedas entenderlo fácilmente.

Si quieres repasar algún término básico de SQL, consulta mis artículos anteriores, Términos de SQL que los principiantes deben conocer y Términos de SQL que los principiantes deben conocer - Parte 2. Recuerda marcar este artículo para poder volver a él fácilmente.

¡Vayamos al grano! Aquí hay más términos de SQL que debes conocer.

Términos SQL

SELECT

Si ya has empezado a aprender SQL, tu primera sentencia SQL fue probablemente SELECT. Si no es así, piensa si tienes una buena fuente de conocimiento de SQL.

SELECT es la base de los fundamentos, especialmente cuando se trata de análisis de datos. Utilizamos SELECT para elegir literalmente nuestros datos deseados de una base de datos. Podemos seleccionar cualquier cosa, incluso columnas o filas específicas mediante el filtrado. Pero primero, veamos el uso más sencillo de SELECT. Supongamos que tenemos una Courses tabla con el siguiente aspecto:

IDNameDialectTopic
1SQL para principiantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS

Ahora escribamos la consulta SQL más sencilla utilizando SELECT y, por ejemplo, una cláusula WHERE (que nos permite elegir datos específicos). Supongamos que queremos encontrar el curso de informes SQL en MS SQL. La consulta tendría el siguiente aspecto:

SELECT Name
FROM Courses
WHERE Dialect=‘MS SQL’
AND Topic=‘SQL Reporting’

Después de la sentencia SELECT, definimos lo que queremos obtener - en nuestro caso, el nombre del curso. Después de FROM, escribimos de dónde deben venir los datos: la Courses tabla. A continuación, utilizamos una cláusula WHERE para indicar qué tipo de datos queremos. Especificamos dos condiciones, por lo que utilizamos AND para que la base de datos sepa que nuestro resultado deseado debe coincidir con ambas condiciones. Como puedes ver, esta consulta no difiere mucho de una frase común en inglés.

El resultado será la información sobre el curso Cómo crear informes básicos con SQL en SQL Server. Si tu empresa utiliza una solución de base de datos de Microsoft y quieres tomar mejores decisiones estratégicas basadas en tus datos, este es el curso perfecto para ti. Forma parte del curso SQL Reporting en MS SQL Server.

Mi colega Adrian escribió un gran artículo sobre cómo aprender la sentencia SELECT en SQL. Allí aprenderás mucho más sobre SELECT. Y una vez que aprendas lo básico, vale la pena considerar temas más avanzados. Si quieres aprender bien SQL, te recomiendo nuestro SQL para principiantes curso. Es el primer paso para convertirse en un profesional de SQL.

INSERT INTO

INSERT INTO es uno de los principales comandos SQL utilizados en todas las bases de datos populares. Es esencial para trabajar con datos y tablas, especialmente si usted es un ingeniero de software, administrador de bases de datos, ingeniero de datos, o alguien que trabaja con el lado técnico de las bases de datos.

¿Qué hace INSERT INTO? Exactamente lo que dice: introduce datos en la tabla. Puede ser una sola fila o un grupo de filas.

En programación, utilizamos el acrónimo CRUD (crear, recuperar, actualizar y eliminar) para describir las cuatro operaciones básicas que se pueden realizar con los datos. INSERT es una de ellas. (Más adelante, describiré UPDATE y DELETE, también. Todas ellas se utilizan para modificar bases de datos).

Tomemos la misma tabla Coursesque acabamos de utilizar para demostrar el comando SELECT y añadamos algo de información a la misma con la sentencia INSERT (o INSERT INTO).

IDNameDialectTopic
1SQL para principiantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS

Supongamos que queremos añadir otro curso de LearnSQL.es a la tabla. Esta vez, se trata del Ejercicios prácticos de SQL en SQL estándar, ideal para practicar tus nuevas habilidades o para preparar una entrevista de trabajo o un examen. Vamos a añadirlo a nuestra tabla utilizando el comando INSERT INTO. Nuestra consulta SQL se vería así:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES (5, ‘Ejercicios prácticos de SQL’, ‘Standard’, ‘Basic’);

Esto añade otra fila a nuestra tabla:

IDNameDialectTopic
1SQL para principiantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS
5Ejercicios prácticos de SQLStandardBasics

Puedes añadir datos de una fila a la vez o puedes insertar varias filas a la vez utilizando una sentencia SQL. ¿Cómo? Sería algo así:

INSERT INTO Courses (id, Name, Dialect, Topic) 
VALUES ('6', ‘a’, ‘b’, ‘c’),
       ('7', ‘x’, ‘y’, ‘z’),
       …;

Si añade valores a todas las columnas de una tabla, no necesita incluir los nombres de las columnas en su consulta. Sin embargo, tenga cuidado de introducir los valores en el orden correcto. De lo contrario, será un caos. Si añadiera datos a todas las columnas, su consulta tendría el siguiente aspecto:

INSERT INTO Courses 
VALUES (5, ‘Ejercicios prácticos de SQL’, ‘Standard’, ‘Basic’);

Recuerda que no es necesario especificar las columnas, pero eso no significa que no puedas hacerlo si quieres estar seguro de que los datos van a los lugares correctos.

Sé que lo más probable es que te estés iniciando en el uso de INSERT INTO; he descrito su escenario de uso más sencillo. Sin embargo, esta sentencia puede ser muy interesante - INSERT INTO puede aparecer, por ejemplo, en subconsultas. ¿Quiere aprender más sobre ello? Entonces lee el artículo Cómo utilizar subconsultas en las sentencias INSERT, UPDATE y DELETE. También puedes insertar datos de una tabla a otra, como explica mi amiga Rebecca en SQL Insert, Update, and Delete.

Si realmente quieres aprender bien INSERT, te recomiendo nuestro Cómo añadir, modificar y eliminar datos con SQL curso. Contiene más de 50 ejercicios interactivos, gracias a los cuales aprenderás los secretos de la modificación de bases de datos en SQL.

UPDATE

Ahora que conoces INSERT INTO, te será mucho más fácil entender UPDATE - es una forma de cambiar los datos en una o más filas de la tabla. Pero ten cuidado cuando uses este comando; si no estás atento, puedes causarte muchos problemas. Si se utiliza mal, UPDATE puede destruir toda la tabla. Sin embargo, no hay que preocuparse; sólo hay que aprender a utilizar bien este comando SQL antes de empezar a actualizar los datos.

Aquí está Courses de nuevo:

IDNameDialectTopic
1SQL para principiantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS
5Ejercicios prácticos de SQLStandardBasics

Supongamos que ha decidido que el tema del Ejercicios prácticos de SQL curso no debería ser 'Fundamentos' sino 'Ejercicio de SQL'. Aunque está dirigido a principiantes, este curso también es útil para usuarios más avanzados que quieran refrescar sus conocimientos. Para ello, utilizaremos el comando UPDATE. La consulta SQL tendrá el siguiente aspecto:

UPDATE Courses 
SET Topic='Ejercicio de SQL’
WHERE ID=5;

Nuestra tabla tendrá este aspecto:

IDNameDialectTopic
1SQL para principiantesStandardBasics
2Revenue Trend Analysis in SQLStandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS
5Ejercicios prácticos de SQLStandardEjercicio de SQL

Es muy importante aplicar la cláusula WHERE en este caso. Si se omitiera, todos los valores de la columna topic se cambiarían, y tendríamos esto (que no está bien):

IDNameDialectTopic
1SQL para principiantesStandardEjercicio de SQL
2Revenue Trend Analysis in SQLStandardEjercicio de SQL
3Cómo crear informes básicos con SQL in SQL ServerMS SQLEjercicio de SQL
4Postgre Tipos de JOIN en SQLPostgreSQLEjercicio de SQL
5Ejercicios prácticos de SQLStandardEjercicio de SQL

Al igual que INSERT INTO, UPDATE nos permite modificar más de una fila a la vez. Si volvemos a nuestra tabla original Coursespodríamos, por ejemplo, cambiar el nombre del dialecto 'Estándar' a 'Estándar SQL' para todos los cursos que utilizan este dialecto. Así es como se hace:

UPDATE Courses
SET Dialect='SQL Standard'
WHERE Dialect='Standard';

¿Qué crees que obtendremos? Por supuesto, una tabla aún más bonita:

IDNameDialectTopic
1SQL para principiantesSQL StandardBasics
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS
5Ejercicios prácticos de SQLSQL StandardEjercicio de SQL

DELETE

El tercer comando SQL importante es DELETE, que elimina los datos existentes de la tabla. Aquí te pido que tengas aún más cuidado que con UPDATE. Si no haces copias de seguridad periódicas de tus datos, borrar algo de la base de datos puede ser irreversible. Algo así me ocurrió una vez, ¡y aprendí una lección para toda la vida!

Tomemos nuestra tabla Cursos y eliminemos de ella el curso de PostgreSQL. Todo lo que tenemos que hacer es utilizar la siguiente consulta:

DELETE FROM Courses 
WHERE Dialect=’PostgreSQL';

Y ¡voilá! No hay ningún curso de Postgre Tipos de JOIN en SQL en la tabla, lo cual es una pena porque es realmente bueno.

Al igual que con los comandos anteriores, DELETE también funciona en más de una fila. Si hubiera más cursos en la tabla con un dialect definido como 'PostgreSQL', se borrarían todos.

Es más, puedes eliminar todas las filas de la tabla con una sola línea SQL, aunque la tabla tenga cientos de miles de ellas. En nuestro caso, bastaría con escribir:

DELETE FROM Courses;

Esto no significa que estemos borrando la tabla en sí: su estructura, sus atributos y sus índices permanecerán en su sitio. Sin embargo, no contendrá ningún registro. Hay otro comando en DROP que elimina la tabla completa; tal vez te lo cuente en otro artículo.

ORDENAR POR

Si estás extrayendo datos de una tabla, es una buena idea tener un resultado bien ordenado. A veces quieres ordenar los resultados de tu consulta. Aquí necesitarás ORDER BY, que te permite ordenar los datos en orden ascendente (A-Z, 1-10) o descendente (Z-A, 10-1).

Como nos gusta tener todo bien organizado, echemos un vistazo a nuestra Courses tabla. Esta vez, queremos ver los nombres de los cursos en orden alfabético. Si algunos cursos tienen el mismo nombre pero están en diferentes dialectos de SQL, ordenaremos los nombres de los dialectos también por orden alfabético:

SELECT *
FROM Courses 
ORDER BY Name;

El resultado será precioso.

IDNameDialectTopic
3Cómo crear informes básicos con SQL in SQL ServerMS SQLSQL Reporting
4Postgre Tipos de JOIN en SQLPostgreSQLSQL JOINS
2Revenue Trend Analysis in SQLSQL StandardSQL Reporting
1SQL para principiantesSQL StandardBasics
5Ejercicios prácticos de SQLSQL StandardSql Practice

En la primera parte de mi tutorial sobre términos SQL para principiantes, describí GROUP BY. A primera vista, es muy similar a ORDER BY. Sin embargo, hay grandes diferencias, que explicamos en el artículo Diferencia entre GROUP BY y ORDER BY en palabras sencillas. ¿Y qué pasa si aparece algún valor de NULL en la tabla? Descúbrelo leyendo Cómo funcionan ORDER BY y NULL en SQL.

HAVING

HAVING se utiliza para filtrar datos. HAVING es uno de los amigos de SELECT's y no puede existir sin él; también funciona con WHERE y GROUP BY. Esta cláusula especifica la condición o condiciones para un grupo o una agregación.

Aquí hay un ejemplo musical de lo que estoy hablando. Tomemos la tabla music_artists (Los datos proceden de Wikipedia). Aquí están ocho de los artistas más taquilleros.

ArtistCountryGenreSale_mln
The BeatlesUnited KingdomRock600
Elvis PresleyUnited StatesRock and roll500
Michael JacksonUnited StatesPop350
Elton JohnUnited KingdomRock300
MadonnaUnited StatesPop275
Led ZeppelinUnited KingdomRock200
RihannaUnited States BarbadosPop250
Celine DionCanadaPop200

Para calcular la suma de las ventas de álbumes de los artistas por su país, se escribiría esta consulta:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country;

El resultado es una lista de los países de los artistas y el número total de álbumes vendidos por los artistas de cada país.

CountrySale_mln
United States1375
United Kingdom1100
Canada200

Supongamos que queremos filtrar aún más el resultado y queremos que nuestra consulta sólo devuelva los países cuyos artistas más importantes hayan vendido más de mil millones de álbumes:

SELECT Country, SUM(Sale_mln)
FROM music_artists
GROUP BY Country
HAVING SUM(Sale_mln)>=1000;

Lo siento, Canadá, por quedar fuera de los resultados. Drake tiene que vender unos cuantos álbumes más. Al final, tenemos una comparación entre EE.UU. y el Reino Unido.

Este ejemplo es sólo la punta del iceberg. Si quieres aprender más sobre HAVING, te recomiendo que leas La cláusula HAVING de SQL explicada y nuestro tutorial de HAVING de SQL. Ambos le darán una base sólida para el uso de HAVING en SQL. También puedes aprender y practicar en nuestro SQL para principiantes curso.

Orden de operaciones SQL

Imagina que una consulta SQL es una receta de un delicioso plato. Cada uno de los elementos de esta consulta es un paso sucesivo. Por ejemplo, GROUP BY es la etapa de cocción y ORDER BY es la guarnición del plato.

Una consulta SQL suele estar formada por varios comandos que la base de datos ejecuta en un orden determinado. Por ejemplo, es imposible ordenar el resultado antes de utilizar HAVING para filtrarlo; sería un trabajo innecesario ordenar todos los registros en lugar de sólo los que tendremos en el resultado final.

Aunque vayas a utilizar SQL todos los días, no necesitas memorizar todas las reglas. Todo lo que necesitas es recordar el orden general en el que se implementan los comandos y cláusulas individuales. Sin embargo, si planeas convertirte en un desarrollador de software, debes saber qué sucederá en la base de datos después de introducir una consulta específica.

¿Quieres saber más sobre esto? Mi compañero Ignacio lo describió todo perfectamente en su artículo Orden de operaciones de SQL. Recuerda que, dependiendo de las cláusulas que aparezcan en tu consulta, la secuencia de acciones puede variar. Sin embargo, hay una regla general, que se ilustra en esta imagen:

Orden de operaciones SQL

Herramientas de la base de datos

Ahora, echemos un vistazo a los sistemas de gestión de bases de datos relacionales o RDBMS más populares.

MySQL

MySQL

MySQL es actualmente el SGBD más popular del mundo. Según un estudio de Stack Overflow, el año pasado tenía más del 50 por ciento del mercado, aunque PostgreSQL le sigue de cerca.

MySQL se fundó hace 25 años en Suecia. En 2008, fue adquirida por Sun Microsystems, y desde 2010 se desarrolla bajo el paraguas de Oracle. Curiosamente, el gigante informático también tiene su propia solución de base de datos, que describiré en un momento.

Este DBMS es gratuito, funciona para la mayoría de las aplicaciones y se ejecuta en las plataformas más populares, incluyendo Linux, Windows y macOS. Todo esto - junto con una comunidad activa y un buen soporte - hace que MySQL sea una gran opción para muchos usos. Personalmente, soy un fan de PostgreSQL, pero a MySQL ciertamente no le falta nada que pueda necesitar.

Si quieres saber más sobre las bases de datos más populares, te recomiendo que leas nuestro artículo sobre Las bases de datos más populares en 2020.

Oracle

Oracle

Decir que Oracle es un gigante de la informática es como decir que Amazon dirige una tienda online. Las soluciones de Oracle son utilizadas de una forma u otra por el 90% de las empresas de la lista Fortune 100. Ha sido uno de los principales actores en el mercado del software desde el principio de su existencia (es decir, a finales de los años 70). Es posible que conozca a Oracle como el propietario de Java o de OpenOffice.

Dato curioso: el nombre de Oracle procede del nombre en clave de uno de los proyectos patrocinados por la CIA en los que trabajó su cofundador, Larry Ellison.

Uno de los principales productos de esta empresa es Oracle Database, un SGBD muy popular. Es más frecuente encontrarlo en las empresas; mucho menos frecuente es verlo en el uso doméstico. Actualmente, las licencias de Oracle DB están disponibles en varias versiones:

  • OracleEnterprise Edition - La versión estrella del SGBD.
  • OracleStandard Edition - Una versión ligeramente reducida, sin posibilidad de ampliación.
  • Oracle Standard EditionOne - Un poco más reducida que la anterior; no se puede ejecutar una configuración en cluster, y esta versión sólo puede utilizarse en ordenadores con uno o dos procesadores.
  • OracleExpress Edition - Una versión gratuita que sólo puede utilizarse en hardware con un núcleo de procesador y 1 GB de RAM. Puede manejar hasta 4 GB de datos.
  • OraclePersonal - Para usuarios domésticos.
  • OracleLite - Para aplicaciones móviles.

Aparte de algunas de las versiones descritas anteriormente, Oracle Database es un software de pago. Esto tiene sus pros y sus contras. La desventaja obvia es el dinero: hay que pagar a la corporación para utilizar su solución. Los pros incluyen un soporte técnico fiable y actualizaciones y seguridad garantizadas. Oracle gasta mucho dinero en el desarrollo de sus productos. Sin embargo, cada año pierde usuarios en favor de los SGBD gratuitos y de código abierto, como PostgreSQL o MySQL.

Como escribí antes, la polémica surgió tras la adquisición de MySQL por parte de Oracle. Por ahora, ambos proyectos (MySQL y Oracle DB) se desarrollan por separado, pero nadie sabe cuáles son los planes a largo plazo. ¿Quizás, con el tiempo, MySQL dejará de ser gratuito? ¿O se combinarán ambas soluciones en una sola? Es difícil de predecir, pero para mí, es uno de los argumentos a favor de buscar alternativas a MySQL.

SQLite

SQLite

SQLite es algo que vale la pena observar. Está ganando adeptos y popularidad. El proyecto SQLite ha estado en desarrollo desde el año 2000. En 2018, el 19,7 por ciento de los desarrolladores profesionales utilizaban esta base de datos; en 2020, era más del 30 por ciento. Esto no es una coincidencia.

SQLite es un DBMS de código abierto que tiene excelentes características y es de uso gratuito. Aunque PostgreSQL o MS SQL son sistemas de bases de datos más "clásicos", SQLite es el más elegido por los desarrolladores de aplicaciones móviles. ¿Por qué? Principalmente por sus capacidades y características.

Los datos se almacenan en un archivo de hasta 140 TB. La librería implementa el motor SQL, lo que permite a la aplicación utilizar la base de datos sin ejecutar un proceso separado. Esto significa que todo funciona de forma rápida y eficiente, lo que es crucial para las aplicaciones web. Cada milisegundo cuenta.

SQLite se basa en el estándar SQL-92. Esto significa que podrás trabajar con él después de completar nuestro curso SQL de la A a la Z. Por supuesto, SQLite tiene sus inconvenientes, por lo que no es una solución universal. Pero ya se ha posicionado en el mercado y no va a ir a ninguna parte.

Más allá de los términos para principiantes de SQL

Aquí tienes otra entrega de la lista de conceptos básicos de SQL que debes conocer. Espero que mi traducción te haya ayudado a entenderlos. Sé que a veces no son definiciones precisas o científicas, pero como antiguo principiante, también sé que a veces lo preciso o científico no es de mucha ayuda al principio.

Si tienes problemas con otros términos de SQL, por favor házmelo saber en los comentarios.