Bases de datos

¿Qué es SQL? Descubre las últimas tendencias en análisis de datos y almacenamiento de datos

cotejo y SQL

¿Qué es SQL?

¿Qué es SQL? SQL son las siglas de «Structured Query Language» (lenguaje de consulta estructurado). Los desarrolladores de aplicaciones y los profesionales de la elaboración de informes y la inteligencia empresarial utilizan SQL para insertar, recuperar, actualizar y eliminar datos de las bases de datos. IBM desarrolló inicialmente SQL en sus laboratorios de Santa Teresa, en San José (California).

¿Qué es SQL y cómo funciona?

SQL (que se pronuncia «si-cu-el») es un lenguaje procedimental que a menudo presenta extensiones procedimentales no estándar. Entre los organismos de normalización de SQL se encuentra el ANSI (Instituto Nacional Estadounidense de Normalización), y es el lenguaje estándar para los sistemas de gestión de bases de datos relacionales. El SQL se utiliza principalmente para gestionar bases de datos que se ajustan al modelo relacional y que son gestionadas por un SGBDR (Sistema de Gestión de Bases de Datos Relacionales). El lenguaje SQL utiliza un intérprete para analizar la instrucción. Los resultados de la fase de análisis, que identifica los errores sintácticos, se transmiten al optimizador de la base de datos. El optimizador crea un plan de consulta, que es un conjunto de instrucciones que especifican cómo el motor de la base de datos ejecutará de forma óptima la instrucción. El plan de consulta establece qué claves se utilizarán para obtener conjuntos de resultados intermedios y cómo se fusionarán y ordenarán para llegar al conjunto de resultados, que se devuelve a la aplicación que lo ha solicitado.

¿Para qué se utiliza SQL?

SQL permite que las aplicaciones interactúen con una base de datos. Normalmente, el usuario de una aplicación accede a un conjunto de objetos de la base de datos que incluyen tablas, vistas e índices. Un objeto de tabla en una base de datos relacional se compone de filas y columnas lógicas. Algunos sistemas RDBMS almacenan las tablas en forma de filas (lo que se conoce como «almacenamiento por filas»), mientras que otros pueden almacenarlas en forma de columnas (lo que se conoce como «almacenamiento por columnas»). En cualquier caso, la aplicación opera por filas, independientemente del formato de almacenamiento.

La instrucción SELECT CUSTOMER-NAME FROM CUSTOMERS WHERE CUSTOMER-ID = 10; recuperará el nombre del cliente cuyo CUSTOMER-ID sea 10 de la tabla CUSTOMERS. Si la tabla contiene una columna STATE, la siguiente instrucción SQL recuperará únicamente los clientes de Nevada:

SELECT * FROM CLIENTES WHERE ESTADO = 'NV';

Varias tablas pueden relacionarse entre sí al compartir columnas comunes. Estas columnas pueden indexarse para permitir un acceso más rápido o, simplemente, el SGBDR puede escanearlas por completo si no son demasiado grandes.

Las tablas se pueden unir lógicamente en tiempo de ejecución, y la naturaleza de la unión se puede expresar en SQL.

A continuación se indican los tipos de uniones, donde «izquierda» y «derecha» hacen referencia al orden de las tablas mencionadas en la instrucción SELECT:

INNER JOIN: Esta unión devuelve los registros que tienen valores coincidentes en ambas tablas.

FULL JOIN: Esta unión devuelve todos aquellos registros que coincidan con algún registro de la tabla de la izquierda o de la derecha.

LEFT JOIN: Este tipo de unión devuelve los registros de la tabla de la izquierda, junto con aquellos registros de la tabla de la derecha que cumplen la condición.

RIGHT JOIN: Este tipo de unión devuelve los registros de la tabla de la derecha, junto con aquellos registros de la tabla de la izquierda que cumplen la condición.

Las tablas pueden relacionarse entre sí mediante relaciones de claves primarias y claves externas. Por ejemplo, una tabla de clientes podría tener como clave primaria «ID de cliente». Una tabla de pedidos que contenga una columna «ID de cliente» se denominará clave externa en dicha tabla.

Las claves primarias suelen estar indexadas y contienen valores únicos.

Las aplicaciones utilizan SQL para recuperar e insertar datos de bases de datos, incluidas las bases de datos distribuidas.

A continuación se muestran algunos ejemplos de sentencias SQL:

  • SELECT: recupera datos de una tabla o vista
  • CREATE TABLE: se utiliza para crear una tabla de datos
  • INSERT: se utiliza para insertar nuevas filas en una tabla
  • ACTUALIZACIÓN: se utiliza para realizar cambios en los datos contenidos en una tabla de una base de datos
  • DELETE: se utiliza para eliminar filas de datos
  • GRANT: se utiliza para conceder a los usuarios permiso para ver o modificar objetos de la base de datos, como tablas.
  • REVOKE: se utiliza para retirar permisos a usuarios o grupos de usuarios
  • ALTER: permite al usuario añadir o eliminar columnas de un objeto para actualizar los permisos
  • DROP TABLE: elimina una tabla
  • CREATE INDEX: creará un ÍNDICE que permitirá un acceso eficiente a los datos mediante una clave-valor
  • TRUNCATE TABLE: permite al usuario vaciar el contenido de una tabla

La instrucción SELECT puede contener funciones de agregación, como por ejemplo:

  • COUNT() – devuelve el número total de filas que cumplen los criterios de la instrucción
  • MIN() – devuelve el valor más pequeño del conjunto de resultados
  • MAX() – devuelve el valor más alto del conjunto de resultados
  • AVG() – devuelve la media de los valores del conjunto de resultados
  • GROUP BY: agrupará los resultados según el valor de una columna determinada
  • ORDER BY: ordenará los resultados según la columna especificada

Los comentarios en SQL ayudan a comprender y mantener las aplicaciones. A continuación se muestran ejemplos de comentarios de una y varias líneas:

-- Este es mi comentario

/* Esto es 

un comentario 

de varias líneas */

Resulta útil visualizar el esquema de una base de datos mediante un diagrama de Venn, sobre todo cuando se utilizan operadores de conjuntos como UNION, INTERSECT y EXCEPT en las sentencias SELECT.

UNION – Este operador se utiliza para combinar el conjunto de resultados de dos o más sentencias SELECT.

Ejemplo:

SELECT Columnas FROM Tabla1

UNION

SELECT Columnas FROM Tabla2;

INTERSECT – Esta cláusula se utiliza para combinar dos sentencias SELECT y devolver la intersección de los conjuntos de datos de ambas sentencias SELECT.

Ejemplo:

SELECT Columna1, Columna2, ...

FROM NombreTabla

WHERE Condición

INTERSECT

SELECT Columna1, Columna2, ...

FROM NombreTabla

WHERE Condición

EXCEPT: este operador devuelve aquellas filas que aparecen en el resultado de la primera operación SELECT y que no aparecen en el resultado de la segunda operación SELECT.

Ejemplo:

SELECT NombreColumna

FROM NombreTabla

EXCEPT

SELECT NombreColumna

FROM NombreTabla;

¿Qué es una base de datos en SQL?

A grandes rasgos, unabase de datosrelacional consta de un sistema de almacenamiento (normalmente archivos) y un conjunto de procesos que se conectan a sesiones de aplicación que envían consultas SQL al servidor del SGBDR, y el servidor devuelve registros o mensajes. Por ejemplo, la instrucción SQL SELECT * FROM EMP; devolvería todas las filas de la tabla EMP. La creación de un esquema de base de datos suele comenzar con un proceso de diseño, en el que se definen todas las entidades implicadas en la aplicación y se conectan de forma que se ilustren sus relaciones.

Quizá estés creando una aplicación de RR. HH. que haga un seguimiento de los empleados y los departamentos, por lo que dibujas un recuadro que representa el objeto «departamento» y otro que representa a los empleados. A continuación, dibujarías una línea que los conecte con una sola línea en el extremo del departamento y tres líneas (como una pata de gallo) en el extremo de la conexión correspondiente al cuadro de los empleados. Podrías llamar a la conexión «trabaja en», indicando que muchos empleados trabajan en un departamento. Un proceso llamado normalización optimiza el diseño.

Ahora que ya sabes qué tablas necesitas, puedes empezar a decidir qué atributos quieres registrar sobre las entidades y qué índices hay que crear. La tabla de departamentos puede contener un número de departamento que sirva como clave primaria, y la tabla de empleados podría tener un número de empleado como clave primaria. Una tabla puede tener varios índices, por lo que también tiene sentido indexar a los empleados por nombre, ya que será una forma habitual de acceder a la información de los empleados.

El siguiente paso consiste en crear un esquema de base de datos. Cada tabla se puede crear mediante una instrucción SQL CREATE TABLE que especifique el nombre de la tabla, los nombres de las columnas, los tipos de datos y las longitudes. Las bases de datos suelen rellenarse cargando datos desde archivos planos o mediante una herramienta ETL (Extract, Transform, Load) que genera las instrucciones INSERT adecuadas.

Las aplicaciones permiten a los usuarios modificar datos mediante sentencias UPDATE y eliminar filas mediante sentencias DELETE. La instancia del SGBDR se encarga de actualizar el índice y de garantizar que se respeten las relaciones entre tablas —como las restricciones referenciales— para mantener la integridad de la base de datos.

Un administrador de bases de datos (DBA) utilizaría sentencias como DROP TABLE, TRUNCATE TABLE, CREATE INDEX y CREATE TABLE en un subconjunto de SQL conocido como Lenguaje de Manipulación de Datos (DML) para modificar la estructura del esquema de la base de datos. Afortunadamente, la mayoría de los sistemas RDBMS modernos, ya sean locales o la oferta SaaS en la nube de Actian, cuentan con una excelente interfaz de usuario (UI) que simplifica la redacción de consultas SQL/DML.

Una vez que la base de datos se haya completado con los datos, las aplicaciones empresariales podrán hacer uso de ella.

¿Qué son los ejemplos de SQL?

Ya hemos hablado de cómo se crean y se utilizan las bases de datos. Veamos ahora algunos ejemplos de sentencias SQL.

No todas las bases de datos utilizan el comando CREATE DATABASE. Ingres, por ejemplo, dispone de un método de línea de comandos que se invoca de la siguiente manera:

createdb -e mydb

Ejemplo de Oracle:

CREATE DATABASE mynewdb

USER SYS IDENTIFIED BY sys_password

USER SYSTEM IDENTIFIED BY system_password

EXTENT MANAGEMENT LOCAL

DEFAULT TEMPORARY TABLESPACE temp

UNDO TABLESPACE undotbs1

DEFAULT TABLESPACE users;

¿Qué es SQL Server?

SQL Server tiene sus orígenes en Sybase. Microsoft adquirió la licencia de Sybase cuando se introdujo en el mercado de los servidores para PC con NT para competir con productos como Novell NetWare y SCO Unix, que se ejecutaban en hardware basado en Intel x86.

SQL Server cuenta con una interfaz gráfica de usuario que facilita su configuración y mantenimiento. La versión local de SQL Server solo admite clústeres para la conmutación por error, no para la escalabilidad.

A continuación se muestra un ejemplo de cómo se crea una base de datos de SQL Server:

USE master;

GO

-- Obtener la ruta de datos de SQL Server.

DECLARE @data_path nvarchar(256);

SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)

      FROM master.sys.master_files

      WHERE database_id = 1 AND file_id = 1);

 -- Ejecuta la instrucción CREATE DATABASE.

EXECUTE ('CREATE DATABASE FileStreamDB

ON PRIMARY

    (NAME = FileStreamDB_data

    ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf''

    ,SIZE = 10MB,MAXSIZE = 50MB,FILEGROWTH = 15%),

FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT

    (NAME = FSPhotos

    ,FILENAME = ''C:MyFSfolderPhotos''

, MAXSIZE = 5000 MB),

    (NAME = FSPhotos2

      , FILENAME = ''D:MyFSfolderPhotos''

      , MAXSIZE = 10000 MB

     ),

FILEGROUP FileStreamResumes CONTAINS FILESTREAM

    (NAME = FileStreamResumes

    ,FILENAME = ''C:MyFSfolderResumes'')

REGISTRO

    (NOMBRE = FileStream_log

    ,NOMBRE_ARCHIVO = ''' + @data_path + 'FileStreamDB_log.ldf''

    ,TAMAÑO = 5 MB    ,TAMAÑO_MÁXIMO = 25 MB    ,AUMENTO_DE_ARCHIVO = 5 MB)');

GO

¿Qué es el SQL en un SGBD?

Como hemos visto anteriormente, las aplicaciones utilizan SQL para acceder a los registros de un SGBDR y gestionar la base de datos. El comando ALTER permite modificar objetos una vez creados. Puedes utilizar el comando ALTER para añadir columnas a una tabla o cambiar su tipo de datos (siempre que no contenga datos).

Un EXPLAIN PLAN permite hacerse una idea de lo que hace un SGBDR con una consulta SQL. Los desarrolladores y los administradores de bases de datos lo utilizan para optimizar las sentencias SQL. Un profesional experto en optimización del rendimiento se asegurará de que se utilicen los índices correctos. La información que proporciona un plan de ejecución incluye si se lleva a cabo un escaneo de índice agrupado, cuándo se utilizan operadores de ordenación, la dirección del flujo de datos desde los operadores de ordenación y cuándo se utilizan operadores SELECT.

Las primeras bases de datos que utilizaban un optimizador heurístico podían guiarse por la forma en que se escribía una instrucción SQL para optimizar la ruta de ejecución. Las bases de datos modernas utilizan un enfoque basado en el coste para ajustar las sentencias. Las bases de datos mantienen metadatos sobre los datos almacenados para determinar su nivel de selectividad y su volumen, con el fin de determinar cómo optimizar el flujo de datos. Por ejemplo, al fusionar conjuntos de resultados intermedios, tiene sentido trasladar el resultado más pequeño al conjunto de datos más grande, lo cual es importante en una arquitectura de base de datos distribuida o en clúster.

Actian y la plataforma de inteligencia de datos

La plataformaActianData Intelligenceha sido diseñada específicamente para ayudar a las organizaciones a unificar, gestionar y comprender sus datos en entornos híbridos. Reúne la gestión de metadatos, la gobernanza, el linaje, el control de calidad y la automatización en una única plataforma. Esto permite a los equipos saber de dónde proceden los datos, cómo se utilizan y si cumplen los requisitos internos y externos.

A través de su interfaz centralizada, Actian ofrece información en tiempo real sobre las estructuras y los flujos de datos, lo que facilita la aplicación de políticas, la resolución de problemas y la colaboración entre departamentos. La plataforma también ayuda a vincular los datos con el contexto empresarial, lo que permite a los equipos utilizarlos de forma más eficaz y responsable. La plataforma de Actian está diseñada para adaptarse a los ecosistemas de datos en constante evolución, lo que garantiza un uso coherente, inteligente y seguro de los datos en toda la empresa.Solicita tu demostración personalizada.

Preguntas frecuentes

SQL son las siglas de «Structured Query Language» (lenguaje de consulta estructurado), un lenguaje procedimental utilizado por desarrolladores de aplicaciones y profesionales de la elaboración de informes y la inteligencia empresarial para insertar, recuperar, actualizar y eliminar datos de bases de datos.

SQL permite a las aplicaciones interactuar con bases de datos relacionales mediante la gestión de objetos de la base de datos, como tablas, vistas e índices, y la realización de operaciones como la recuperación, la inserción, la actualización y la eliminación de datos.

SQL utiliza un intérprete para analizar las sentencias, detectar errores sintácticos y enviar los resultados a un optimizador de bases de datos que crea un plan de consulta en el que se especifica cómo el motor de la base de datos ejecutará la sentencia de forma óptima.

Una base de datos relacional se compone de un sistema de almacenamiento (normalmente archivos) y de procesos que gestionan las consultas SQL, organizando los datos en tablas con filas y columnas lógicas que pueden relacionarse entre sí mediante relaciones de clave primaria y clave externa.

Entre los comandos SQL más comunes se encuentran SELECT, para recuperar datos; INSERT, para añadir filas; UPDATE, para modificar datos; DELETE, para eliminar filas; CREATE TABLE, para crear tablas; y GRANT/REVOKE, para gestionar permisos.

Las claves primarias suelen ser columnas indexadas que contienen valores únicos que identifican cada fila de una tabla, mientras que las claves externas son columnas que hacen referencia a claves primarias de otras tablas para establecer relaciones entre ellas.

SQL Server tiene su origen en Sybase y fue adquirido bajo licencia por Microsoft para el mercado de servidores de PC; cuenta con una interfaz gráfica de usuario que facilita la configuración y el mantenimiento, y es compatible con clústeres de conmutación por error.

Las uniones SQL incluyen INNER JOIN (valores coincidentes en ambas tablas), FULL JOIN (todos los registros de cualquiera de las tablas), LEFT JOIN (todos los registros de la tabla izquierda más los registros coincidentes de la tabla derecha) y RIGHT JOIN (todos los registros de la tabla derecha más los registros coincidentes de la tabla izquierda).