¿Qué es el lenguaje de consulta estructurado (SQL)?

Primer plano de unas manos trabajando en una sala de control de monitorización de ordenadores de sobremesa

Autores

Alexandra Jonker

Staff Editor

IBM Think

Tim Mucci

IBM Writer

Gather

¿Qué es Structured Query Language?

El lenguaje de consulta estructurado (SQL) es un lenguaje de programación estandarizado y específico de un dominio que se utiliza para interactuar con sistemas de gestión de bases de datos relacionales (RDBMS) como MySQL, SQL Server, IBM Db2, PostgreSQL y Oracle Database.

Las consultas SQL (también conocidas como comandos SQL o sentencias SQL) permiten a los usuarios añadir, recuperar, actualizar, eliminar, agregar y gestionar datos en una base de datos relacional (o base de datos SQL). En estos sistemas, los datos estructurados se ordenan en filas y columnas, que juntas forman tablas. Los datos suelen estructurarse en varias tablas relacionadas que se pueden vincular mediante claves primarias o externas.

A diferencia de otros lenguajes de programación, SQL es un lenguaje declarativo, lo que significa que describe lo que el usuario quiere que haga el ordenador en lugar de cómo conseguirlo. Esto contrasta con los lenguajes imperativos o procedimentales (como Java y COBOL) que requieren instrucciones paso a paso.

Por ejemplo, cuando los usuarios escriben una consulta SQL para obtener datos, no es necesario que describan los pasos que debe seguir la base de datos para recopilar esos datos; basta con que describan cómo debe ser el resultado:

SELECT name, email
FROM customers
WHERE city = 'New York' ;

SQL es una herramienta fundamental y versátil en la pila de tecnología moderna, conocida por sus capacidades de manipulación de datos, su rápido procesamiento de consultas y sus sólidas características de seguridad. También ofrece compatibilidad entre diferentes sistemas, escalabilidad para gestionar las crecientes necesidades de datos y un sólido soporte de código abierto y comunidad.

La historia de SQL

En la década de 1970, los científicos de IBM Donald Chamberlin y Raymond Boyce desarrollaron e introdujeron el SQL. Se originó a partir del concepto de modelos relacionales y se denominó inicialmente lenguaje de consulta estructurado en inglés (SEQUEL) antes de acortarse a SQL. Se puso a la venta en 1979 y desde entonces se ha convertido en el estándar global de los sistemas de gestión de bases de datos relacionales.

El Instituto Nacional Estadounidense de Estándares (ANSI) y la Organización Internacional de Normalización (ISO) estandarizaron SQL en 1986 y 1987, respectivamente. A pesar de ser un estándar, SQL tiene varios dialectos, como T-SQL para Microsoft SQL Server y PL/SQL para Oracle Database. Estos dialectos de SQL satisfacen necesidades específicas del sistema sin dejar de cumplir los comandos estándar ANSI básicos, como SELECT, UPDATE, DELETE, INSERT y WHERE.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Se ha suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Por qué es importante SQL?

Desde su desarrollo en la década de 1970, SQL se ha convertido en la columna vertebral de los sistemas de bases de datos modernos.

A diferencia de los lenguajes de programación de propósito general, SQL está diseñado específicamente para bases de datos relacionales, y las bases de datos relacionales, a su vez, están optimizadas para SQL. Este diseño mutuo hace de SQL una herramienta de gestión de datos altamente eficiente.

La naturaleza declarativa de SQL lo hace accesible incluso para usuarios con experiencia limitada en programación, lo que lo convierte en un lenguaje ideal para principiantes. Su uso generalizado y su integración con otros lenguajes de programación como Python y Java también lo convierten en una habilidad valiosa en entornos de programación y datos más amplios.

Los analistas de datos, los científicos de datos y los administradores de bases de datos utilizan SQL con regularidad porque sobresale en tareas como el procesamiento de datos, la definición de datos, el control de acceso, el intercambio de datos, la integración de datos y el análisis de big data.

En la ciencia de datos, SQL se utiliza para crear bases de datos que almacenan grandes conjuntos de datos necesarios para el análisis de datos. Su capacidad para manipular y recuperar datos de estos vastos conjuntos de datos estructurados también es crucial en el desarrollo de aplicaciones de inteligencia artificial (IA) y machine learning (ML), que dependen de datos de alta calidad para el entrenamiento.

Al adherirse a las propiedades ACID (atomicidad, consistencia, aislamiento y durabilidad), SQL ayuda a garantizar un procesamiento de transacciones fiable para casos de uso críticos y manejo de datos confidenciales. También permite una toma de decisiones basada en datos más precisa, análisis avanzados e inteligencia empresarial mejorada.

AI Academy

¿Es la gestión de datos el secreto de la IA generativa?

Explore por qué los datos de alta calidad son esenciales para el uso satisfactorio de la IA generativa.

¿Cuáles son las ventajas de utilizar SQL?

SQL ofrece muchas ventajas, por lo que se ha mantenido como uno de los lenguajes de programación más utilizados y duraderos.

Fácil manipulación de datos

Los sencillos comandos de SQL (como GROUP BY, ORDER BY, GRANT y REVOKE) permiten a usuarios de todos los niveles trabajar con bases de datos.

Procesamiento rápido de consultas

Los índices SQL y las técnicas de optimización de consultas mejoran la velocidad de recuperación de los datos y, por lo tanto, aumentan el rendimiento de la base de datos.

Seguridad de datos robusta

Las bases de datos SQL incluyen características de seguridad como autenticación de usuarios, controles de acceso y cifrado para proteger los datos.

Similitud y compatibilidad

SQL cumple con las normas ANSI e ISO SQL, que ayudan a garantizar la compatibilidad con varios sistemas y plataformas, incluidos los entornos de nube y las herramientas de big data.

Escalabilidad

SQL puede gestionar eficazmente bases de datos tanto pequeñas como grandes, adaptándose a las crecientes necesidades de datos sin pérdidas significativas de rendimiento.

Soporte de código abierto

Muchas bases de datos SQL son de código abierto y cuentan con el apoyo de una comunidad amplia y activa que contribuye a la mejora continua y a la resolución de problemas.

¿Cómo funciona una consulta SQL?

Una base de datos relacional organiza los datos en un formato tabular (filas y columnas) y facilita las relaciones entre diferentes tablas. Por ejemplo, una base de datos de servicio de atención al cliente podría utilizar tablas separadas para información sobre clientes, compras, códigos de producto y contactos, vinculadas por claves como un ID de cliente único.

SQL permite a los usuarios escribir consultas (y subconsultas) para manipular estos datos. Estos comandos se ejecutan a través de varios componentes de software durante el proceso SQL:

Un analizador verifica la corrección de las sentencias SQL y las convierte a un formato que la base de datos pueda entender, como símbolos tokenizados. Este paso implica el análisis de sintaxis y la comprobación semántica. El analizador también ayudará a garantizar que el usuario esté autorizado para realizar la operación.

Luego, un motor relacional, también conocido como optimizador de consultas, planifica las estrategias de recuperación, modificación o adición de datos más eficientes. Esto se hace mediante la evaluación de diferentes planes de ejecución de consultas. Escribe el plan en bytecode, que es un lenguaje de máquina virtual. Este paso es crucial para optimizar el rendimiento de la base de datos y el uso de recursos.

Por último, un motor de almacenamiento procesa el código de bytes, ejecuta la instrucción SQL y gestiona el almacenamiento físico de datos. Gestiona la representación física de los datos, incluidos los formatos de archivo y el almacenamiento en búfer de datos. También devuelve el resultado al usuario o a la aplicación. Este paso ayuda a garantizar un acceso eficiente a los datos y actualizaciones en el disco. Esta vinculación suele implicar relaciones, como de uno a varios o de varios a varios, establecidas mediante claves primarias y foráneas para ayudar a garantizar la integridad de los datos.

Componentes clave de los sistemas SQL

Los sistemas de gestión de bases de datos relacionales (también llamados sistemas SQL) constan de muchos componentes, entre ellos:

  • Bases de datos: un repositorio digital para almacenar, administrar y proteger colecciones organizadas de datos.

  • Tablas de base de datos: datos formateados en filas y columnas; cada una contiene información sobre un tipo de entidad.

  • SQL Query: SQL Query son instrucciones escritas en SQL utilizadas para manipular datos dentro de una base de datos relacional.

  • Restricciones SQL: reglas que controlan los datos en las columnas o tablas de la base de datos para mantener la integridad de los datos.

  • Procedimientos almacenados: comandos SQL que se guardan para su reutilización continua.

  • Transacciones: uno o más comandos SQL agrupados como una sola unidad de trabajo u operación.

  • Tipos de datos: reglas que definen el tipo de datos que se pueden almacenar en una columna.

  • Índices: un objeto de base de datos que acelera la recuperación de datos al reducir el número de accesos al disco necesarios para una consulta.

  • Vistas: tablas virtuales basadas en consultas SQL que simplifican las consultas complejas y mejoran la seguridad restringiendo el acceso a los datos subyacentes.

  • Seguridad y permisos: funciones para gestionar el acceso de los usuarios, mientras que los mecanismos de copia de seguridad y recuperación protegen los datos contra pérdidas o corrupción.

Tipos de comandos SQL: DDL, DML, DQL, DCL y TCL

Los comandos SQL se dividen tradicionalmente en las siguientes categorías:

  • Lenguaje de definición de datos (DDL)
  • Lenguaje de manipulación de datos (DML)
  • Lenguaje de control de datos (DCL)
  • Lenguaje de consulta de datos (DQL)
  • Lenguaje de control de transacciones (TCL)

Lenguaje de definición de datos (DDL)

El lenguaje de definición de datos gestiona objetos de bases de datos, como tablas, vistas e índices. Define la estructura y organización de los datos almacenados y las relaciones entre los elementos de datos almacenados. 

Lenguaje de manipulación de datos (DML)

El lenguaje de manipulación de datos gestiona los datos dentro de las bases de datos a través de operaciones como INSERT, UPDATE y OUTER JOIN, que añaden, modifican y combinan datos.

Lenguaje de control de datos (DCL)

El lenguaje de control de datos controla el acceso a datos a través de comandos como GRANT (para otorgar permisos) y REVOKE (para eliminar permisos). Puede restringir la capacidad de un usuario para recuperar, agregar y modificar datos.

Lenguaje de consulta de datos (DQL)

El lenguaje de consulta de datos ejecuta consultas de datos para recuperar información, normalmente utilizando el comando SELECT. Puede recuperar elementos de datos específicos o un rango de elementos.

Lenguaje de control de transacciones (TCL)

El lenguaje de control de transacciones gestiona los cambios en las transacciones para ayudar a garantizar la integridad de los datos y admite las operaciones ROLLBACK y COMMIT para deshacer o almacenar cambios, respectivamente. Se utiliza para coordinar el intercambio de datos por parte de usuarios simultáneos.

¿Cuáles son los comandos SQL más comunes?

Las bases de datos SQL admiten varias sentencias SQL para las operaciones con datos. Sin embargo, los comandos SQL pueden variar en función de la base de datos, que puede utilizar su propia sintaxis SQL.

Los comandos SQL básicos incluyen:

SELECT

Recupera datos de una o varias tablas.

SELECT name, email

FROM customers

WHERE city = 'New York' ;
Esta sentencia recupera el nombre y el email de todos los clientes que viven en Madrid de la tabla de clientes.

INSERT

Añade nuevas filas a una tabla.

INSERT INTO customers (name, email, city)
VALUES ("Jane Doe", "jane.doe@example.com", 'Los Angeles') ;

Esta sentencia añade una nueva fila a la tabla de clientes con el nombre "Jane Doe", correo electrónico "jane.doe@example.com" y la ciudad "Los Ángeles".

UPDATE

Modifica los datos existentes en una tabla.

UPDATE clientes 
SET email = 'new.email@example.com' 
WHERE name = 'John Doe' ;

Esta declaración actualiza el correo electrónico del cliente llamado "John Doe" en la tabla de clientes a "new.email@example.com".

DELETE

Elimina filas de una tabla en función de una condición.

DELETE FROM customers 
WHERE city = 'Boston' ;

Esta sentencia elimina todas las filas de la tabla de clientes donde la ciudad es "Boston".

CREATE TABLE

Define una nueva tabla y su estructura.

CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;

Esta sentencia crea una nueva tabla llamada productos con tres columnas: product_id como clave primaria entera, name como cadena de caracteres variable de hasta 100 caracteres y price como decimal con diez dígitos y dos decimales.

ALTER TABLE

Modifica la estructura de una tabla existente.

ALTER TABLE customers 
ADD COLUMN birthday DATE ;

Esta sentencia añade una nueva columna cumpleaños de tipo FECHA a la tabla de clientes existente.

DROP TABLE

Elimina una tabla y todos sus datos.

DROP TABLE old_customers ;

Esta sentencia elimina la tabla old_customers junto con todos sus datos.

JOIN

Combina filas de dos o más tablas basadas en una columna relacionada.

SELECT c.name, p.name AS product_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE c.city = 'New York' ;

La sentencia SQL JOIN recupera los nombres de los clientes y los nombres de los productos que han pedido. Une las tablas de clientes, pedidos y productos basándose en customer_id y product_id, seleccionando solo aquellos clientes que viven en Nueva York.

Bases de datos SQL vs. NoSQL

Las bases de datos SQL son bases de datos relacionales, en las que los datos estructurados se almacenan en filas y tablas que están vinculadas de varias formas. El SQL es el lenguaje estándar para interactuar con estas bases de datos.

Las bases de datos NoSQL (o bases de datos no relacionales) surgieron a finales de la década de 2000 para manejar datos con menos estructura. Este tipo de bases de datos (como MongoDB) ofrecen modelos de datos más flexibles que las bases de datos SQL.

Las diferencias clave incluyen:

  • Escalabilidad
  • Estructura
  • Rendimiento
  • Casos de uso
  • Conocimiento y comunidad
  • Mantenimiento y gestión

Escalabilidad

Las bases de datos NoSQL son escalables horizontalmente, gestionando un mayor tráfico mediante la adición de más servidores. Por el contrario, las bases de datos SQL son tradicionalmente escalables de forma vertical, por lo que requieren un hardware más potente para gestionar el aumento de la carga.

Estructura

Las bases de datos SQL utilizan una estructura basada en tablas ideal para transacciones de varias filas y consultas complejas en datos relacionados, gracias a las capacidades robustas de indexación y unión. NoSQL ofrece diferentes estructuras, como almacenes clave-valor, de documentos, de gráficos o de columnas anchas, que se adaptan a diferentes necesidades y permiten una mayor flexibilidad con los datos semiestructurados o no estructurados.

Rendimiento

Las bases de datos SQL están optimizadas para consultas complejas con una estricta coherencia de datos, siguiendo los principios ACID. Las bases de datos NoSQL, que siguen los principios BASE (básicamente disponible, estado blando, coherencia eventual), proporcionan un rendimiento más rápido para tipos específicos de datos pero con diferentes garantías de coherencia.

Casos de uso

Las bases de datos SQL se eligen a menudo para aplicaciones que requieren transacciones complejas, datos coherentes y una estricta adherencia al esquema, como sistemas financieros, plataformas de comercio electrónico o bases de datos CRM. NoSQL es la opción preferida para datos que cambian rápidamente, a gran escala o semiestructurados, como en redes sociales, análisis en tiempo real o sistemas de gestión de contenidos.

Conocimiento y comunidad

Las bases de datos SQL tienen una gama más amplia de recursos, como tutorial de SQL y soporte de la comunidad, debido a su historia más larga y su adopción generalizada. NoSQL a menudo requiere menos diseño inicial y puede ser más fácil de escalar, pero a menudo requiere un desarrollo más personalizado para consultas complejas y consistencia de datos.

Mantenimiento y gestión

Las bases de datos SQL requieren un diseño de esquema cuidadoso y pueden ser exigentes en términos de mantenimiento para los cambios de esquema. Un sistema gestor de bases de datos NoSQL ofrece una escalabilidad y adaptabilidad más sencillas para los cambios de esquema sin grandes tiempos de inactividad o reestructuración.

¿Qué es la inyección SQL?

A pesar de los puntos fuertes de seguridad de muchas bases de datos SQL, otras aplicaciones empresariales pueden ser vulnerables a problemas de seguridad, como una autenticación débil, un diseño inseguro y una configuración incorrecta. Debido a estas vulnerabilidades, la inyección SQL sigue siendo una amenaza real para las organizaciones.

La inyección SQL se produce cuando los hackers manipulan las consultas SQL para acceder a la información de la base de datos o corromperla. Comprender estas vulnerabilidades y aplicar medidas de seguridad sólidas resulta crítico para salvaguardar los datos SQL.

Soluciones relacionadas
IBM StreamSets

Cree y gestione canalizaciones de datos de streaming inteligentes a través de una interfaz gráfica intuitiva, y facilite una integración de datos fluida en entornos híbridos y multinube.

Explore StreamSets
IBM watsonx.data

Watsonx.data le permite escalar la analítica y la IA con todos sus datos, residan donde residan, a través de un almacén de datos abierto, híbrido y gobernado.

Descubra watsonx.data
Servicios de asesoramiento sobre datos y análisis

Desbloquee el valor de los datos empresariales con IBM Consulting, y construya una organización impulsada por conocimientos que ofrezca ventajas empresariales.

Descubra los servicios de análisis
De el siguiente paso

Diseñe una estrategia de datos que elimine los silos, reduzca la complejidad y mejore la calidad de los datos para ofrecer experiencias excepcionales a clientes y empleados.

Explore las soluciones de gestión de datos Descubra watsonx.data