Sin categoría

¿Qué es SQL? Tendencias en análisis 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, informes y profesionales de BI 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 es un lenguaje procedimental que a menudo tiene extensiones procedimentales no estándar. Entre los organismos de normalización de SQL se encuentra ANSI (American National Standards Institute), y es el lenguaje estándar para los sistemas de gestión de bases de datos relacionales. SQL se utiliza principalmente para gestionar bases de datos que se ajustan al modelo relacional y son gestionadas por un RDBMS (Sistema de Gestión de Bases de Datos Relacionales). El lenguaje SQL utiliza un intérprete para analizar la sentencia. Los resultados del paso de análisis, que identifica los errores sintácticos, se pasan 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á la sentencia de forma óptima. El plan de consulta indica qué claves se utilizarán para obtener conjuntos de resultados intermedios y cómo se combinarán y ordenarán para llegar al conjunto de resultados que se devuelve a la aplicación que realiza la llamada.

¿Para qué se utiliza SQL?

SQL permite a las aplicaciones interactuar con una base de datos. El usuario de una aplicación suele acceder a una colección de objetos de base de datos que incluyen tablas, vistas e índices. Un objeto de tabla en una base de datos relacional consta de filas y columnas lógicas. Algunos sistemas RDBMS almacenan las tablas como filas, lo que se conoce como almacén de filas, mientras que otros pueden almacenar columnas como almacén de columnas. En cualquier caso, la aplicación opera en base a filas independientemente del formato de almacenamiento.

La sentencia SELECT CUSTOMER-NAME FROM CUSTOMERS WHERE CUSTOMER-ID =10; recuperará el nombre de los clientes cuyo CUSTOMER-ID sea 10 de la tabla CUSTOMERS. Si la tabla contiene una columna STATE, la siguiente sentencia SQL recuperará sólo los clientes de Nevada:

SELECT * FROM CLIENTES WHERE ESTADO = 'NV';

Varias tablas pueden relacionarse entre sí compartiendo columnas comunes. Estas columnas pueden indexarse para permitir un acceso más rápido o simplemente ser escaneadas en su totalidad por el RDBMS si no son demasiado grandes.

Las tablas pueden unirse lógicamente en tiempo de ejecución, y la naturaleza de la unión puede expresarse en SQL.

A continuación se indican los tipos de uniones en los que izquierda y derecha son el orden de las tablas nombradas en la sentencia SELECT:

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

FULL JOIN: Esta unión devuelve todos los registros que coinciden en la tabla izquierda o derecha.

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

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

Las tablas pueden relacionarse mediante relaciones de columnas de clave primaria y externa. Por ejemplo, una tabla de clientes puede tener como clave primaria Customer-ID. Una tabla Pedidos que contenga una columna Cliente-ID se conocerá como clave ajena en esa tabla.

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

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

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

  • SELECT - obtiene 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
  • UPDATE - se utiliza para realizar cambios en los datos contenidos en una tabla de base de datos
  • DELETE - se utiliza para eliminar filas de datos
  • GRANT - se utiliza para dar a los usuarios permiso para ver o modificar objetos de la base de datos como tablas.
  • REVOKE - se utiliza para eliminar permisos de 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 INDEX para permitir un acceso eficiente a los datos utilizando una clave-valor.
  • TRUNCATE TABLE - permite al usuario vaciar el contenido de una tabla

La sentencia SELECT puede contener funciones de agregación, como:

  • COUNT() - devuelve el número total de filas que satisfacen los criterios de la sentencia
  • MIN() - devuelve el valor más pequeño del conjunto de resultados
  • MAX() - devuelve el mayor valor del conjunto de resultados
  • AVG() - devuelve la media de los valores del conjunto de resultados
  • GROUP BY - agrupará los resultados por el valor de una columna determinada
  • ORDENAR POR - ordenará los resultados por 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

/* Este es 

línea múltiple 

comentario */

Es útil visualizar el esquema de una base de datos mediante un diagrama de Venn, especialmente cuando se utilizan operadores de conjunto como UNION, INTERSECT y EXCEPT en sentencias SELECT.

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

Ejemplo:

SELECT Columns FROM Tabla1

UNION

SELECT Columns 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 son devueltas por la primera operación SELECT y no son devueltas por la segunda operación SELECT.

Ejemplo:

SELECT NombreColumna

FROM NombreTabla

EXCEPT

SELECT NombreColumna

FROM NombreTabla;

¿Qué es una base de datos en SQL?

A alto nivel, una base de datos relacional consta de almacenamiento (normalmente archivos) y un conjunto de procesos que se conectan a sesiones de aplicaciones que envían peticiones SQL al servidor RDBMS, y el servidor devuelve registros o mensajes. Por ejemplo, la sentencia 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 todas las entidades implicadas en la aplicación se dibujan y conectan de forma que se ilustren sus relaciones.

Puede que estés creando una aplicación de RRHH que haga un seguimiento de los empleados y los departamentos, así que dibujarías una caja que represente el objeto del departamento y una segunda caja que represente a los empleados. A continuación, dibujarías una línea que los conectara con una sola línea en el extremo del departamento y 3 líneas (como en una pata de gallo) en el extremo de la conexión de la caja de los empleados. Podría 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 sabe qué tablas quiere, puede empezar a decidir qué atributos quiere rastrear sobre las entidades y qué índices hay que crear. La tabla de departamentos puede contener un número de departamento que puede ser su clave principal, y la tabla de empleados puede tener un número de empleado como clave de índice principal. Una tabla puede tener varios índices, por lo que también tiene sentido indexar los empleados por nombre, ya que será una forma habitual de acceder a la información de los empleados.

La siguiente etapa consiste en crear un esquema de base de datos. Cada objeto de tabla puede crearse mediante una sentencia SQL CREATE TABLE que especifica el nombre de la tabla, los nombres de las columnas, los tipos de datos y las longitudes. Las bases de datos suelen poblarse cargando datos de archivos planos o con una herramienta ETL (Extract, Transform, Load) que genera las sentencias INSERT adecuadas.

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

Un Administrador de Base de Datos (DBA) usarí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 alterar 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, vienen con una excelente interfaz de usuario (UI) para simplificar la escritura de consultas SQL/DML.

Una vez que la base de datos está llena de datos, las aplicaciones empresariales pueden hacer uso de ella.

¿Qué es SQL y ejemplos?

Hemos hablado de cómo se crean y 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, tiene un método de línea de comandos llamado como a continuación:

createdb -e mydb

Ejemplo de oráculo:

CREAR BASE DE DATOS mynewdb

USUARIO SYS IDENTIFICADO POR sys_contraseña

USUARIO SISTEMA IDENTIFICADO POR contraseña_sistema

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 lanzó al mercado de servidores de PC con NT para competir con productos como Novell Netware y SCO Unix, que funcionaban con hardware 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 SQL Server:

USE master;

GO

-- Obtener la ruta de datos de SQL Server.

DECLARE @ruta_datos nvarchar(256);

SET @ruta_datos = (SELECT SUBSTRING(nombre_fisico, 1, CHARINDEX(N'maestro.mdf', LOWER(nombre_fisico)) - 1)

      FROM master.sys.master_files

      WHERE database_id = 1 AND file_id = 1);

 -- Ejecute la sentencia CREATE DATABASE.

EXECUTE ('CREAR BASE DE DATOS FileStreamDB

ON PRIMARY

    (NAME = FileStreamDB_data

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

    TAMAÑO = 10MB,MAXSIZE = 50MB,FILEGROWTH = 15%),

FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT

    (NOMBRE = FSPhotos

    FILENAME = ''C:MyFSfolderPhotos''

MAXSIZE = 5000 MB),

    (NOMBRE = FSPhotos2

      , FILENAME = ''D:MiCarpetaFSFotos''

      MAXSIZE = 10000 MB

     ),

FILEGROUP FileStreamResumes CONTAINS FILESTREAM

    (NOMBRE = FileStreamResumes

    FILENAME = ''C:MyFSfolderResumes'')

LOG ON

    (NOMBRE = FileStream_log

    FILENAME = ''' + @ruta_datos + 'FileStreamDB_log.ldf''

    ,SIZE = 5MB ,MAXSIZE = 25MB ,FILEGROWTH = 5MB)');

IR A

¿Qué es SQL en DBMS?

Como hemos visto anteriormente, SQL se utiliza para que las aplicaciones accedan a los registros de un RDBMS y gestionen la base de datos. El comando ALTER se puede utilizar para modificar objetos una vez creados. Puede utilizar el comando ALTER para añadir columnas a una tabla o cambiar su tipo de datos (si está despoblada).

Un PLAN EXPLAIN proporciona una visión de lo que un RDBMS hace con una petición SQL. Lo utilizan los desarrolladores y los administradores de bases de datos para ajustar las sentencias SQL. Un profesional experto en ajuste de rendimiento buscará los índices correctos que se están utilizando. La información que proporciona un plan de ejecución incluye si se realiza una Exploración de Índices Agrupados, cuándo se utilizan Operadores de Ordenación, la dirección del Flujo de Datos de los Operadores de Ordenación y cuándo se utilizan Operadores de Selección.

Las primeras bases de datos que utilizaban un optimizador heurístico podían guiarse por la forma en que estaba escrita una sentencia SQL para optimizar la ruta de ejecución. Las bases de datos modernas utilizan un enfoque basado en los costes para ajustar las sentencias. Las bases de datos mantienen métadonnées sobre los datos almacenados para decidir lo selectivos que son y su volumen para ver cómo optimizar el flujo de datos. Por ejemplo, si se fusionan conjuntos de resultados intermedios, tiene sentido mover el resultado más pequeño a los datos más grandes, lo que es importante en una arquitectura de base de datos distribuida o en clúster.