Bases de Datos

Que es SQL (Structured Query Language)

Descubre todo sobre SQL (Structured Query Language o lenguaje de consulta estructurada en español). Veremos el origen y evolución hasta nuestros días, sus fundamentos y comandos principales así como los sistemas de gestión de bases de datos más conocidos.

Publicado el 05 de Agosto de 2019
Compartir

En la actualidad es difícil pensar en el desarrollo de aplicaciones sin una manera fiable de almacenar datos. Cualquier programa que imaginemos genera una ingente cantidad de datos. Ya sean simples registros internos o datos generados por los propios usuarios.

Imaginemos por ejemplo un sistema de gestión hotelera. Tenemos los datos de cada cliente, empleado, proveedor, sus reservas, datos de registro y facturación, sus modificaciones, etc. Si todavía crees que esto se puede gestionar con un simple libro de registro mejor no sigas leyendo.

Si te dedicas al desarrollo de software sabes lo importante que es mantener los datos ordenados y almacenados para poder ser usados de manera eficiente. Las bases de datos son la solución. Grandes almacenes de datos que una vez estructuradas almacenan todo lo que podamos precisar en nuestro desarrollo. Pero, ¿qué es una base de datos?

Desde un punto de vista técnico podemos definir una base de datos como una aplicación independiente a nuestro programa que almacena una colección de datos. Esta colección de datos es organizada mediante campos, registros, índices y archivos de manera que mediante una simple consulta sea posible seleccionar fragmentos de datos mostrando el resultado con rapidez.

Aunque existen muchos tipos de bases de datos y métodos para manejar la información en este artículo hablaremos de SQL (Structured Query Language). Se trata de un lenguaje declarativo estándar que permite su integración en diferentes lenguajes de programación, por ejemplo PHP o Java y en combinación con cualquier base de datos específica. MariaDB, MySQL o SQL Server, por citar algunos ejemplos, trabajan de diferente manera pero todos comparten un modo común de manipulación y consulta de datos a través del lenguaje SQL.

Creación y evolución de SQL

En ingeniería de software toda buena historia comienza con la necesidad de resolver un problema. En los años 70 las bases de datos comenzaban a ser el quebradero de cabeza de muchos desarrollos. La falta de un estándar claro y que cada empresa competía por imponer su solución de software hacía muy difícil, sino casi imposible, la coexistencia entre sí.

En 1974, basándose en el modelo correlacional establecido por Edgard Codd, IBM comienza a trabajar en las bases de lo que sería su base de datos SEQUEL. La idea de fondo era resolver los problemas anteriores ofreciendo una solución estandarizada a los problemas de la época.

El éxito de su propuesta fue inminente entre sus clientes y entre los años 1974 a 1977 aparecieron diferentes versiones que popularizaron su integración en diferentes sistemas. Posteriormente por causas legales IBM se vió obligada a rebautizar el nombre de su proyecto a SQL

Pronto las empresas de todo el mundo comenzaron a demandar soluciones de software que hicieran uso de las bondades del sistema SQL. Esto hizo que pronto aparecieran alternativas procedentes de otras compañias. Oracle, Sybase fueron las primeras compañías en comercializar sus productos basados en SQL lo cual contribuyó a reforzar las bases del ecosistema que estaría por crearse.

SQL ya era por 1981 considerado un estándar pero no fue hasta 1986 cuando el ANSI adoptó SQL como estándar de facto para los lenguajes relacionales. Esto hizo que un año después se publicase el conjunto de normas que lo convertirán en un estándar ISO (SQL/86) dando lugar a diferentes revisiones hasta la fecha.

Fundamentos de SQL

Con SQL podemos realizar diferentes operaciones para consultar o manipular datos. A estas operaciones solemos referirnos como operaciones CRUD (de Create, Read, Update y Delete). Para ello hacemos uso de cuatro instrucciones para realizar estas tareas:

  • INSERT: inserta filas en una tabla. Se corresponde con la “C” de CRUD.
  • SELECT: Muestra información sobre los datos almacenados en la base de datos. Dicha información puede pertenecer a una o varias tablas. Es la “R”.
  • UPDATE: Actualiza información de una tabla. Es, obviamente, la “U”.
  • DELETE: Borra filas de una tabla. Se corresponde con la “D”.

Por ejemplo y para mostrar cómo funciona su sintaxis lo mejor es ver un ejemplo con SELECT. Es sin duda el comando más versátil del lenguaje SQL.

SELECT * 
FROM Nombre_Tabla_Vista 
WHERE Condiciones
ORDER BY ListaColumnas [ ASC / DESC ]

Por ejemplo:

nombre apellido1 apellido2
JUAN PEREZ MENDEZ
MARIA GARCIA BENITO
LUIS GARCIA PEREZ

DDL, DML y DCL

Cuando pensamos en una base de datos tenemos solemos verla como un conjunto de datos ordenados en tablas, registros e índices pero en realidad el primer paso es definir sus estructuras de datos. El lenguaje SQL permite a programadores realizar esta tarea de manera eficiente a través de un gestor de bases de datos como MySQL o PostgreSQL. Para ello SQL como estándar se estructura a su vez en 3 lenguajes independientes con las siglas DDL, DML y DCL.

Lenguaje de Definición de Datos

DDL (Data Definition Language) es el conjunto de instrucciones agrupadas en un lenguaje que nos permite definir estas estructuras que almacenarán los datos así como los procedimientos y funciones que permitirán consultarlos.

Para definir las estructura disponemos de tres sentencias:

  • CREATE, se usa para crear una base de datos, tabla, vistas, etc.
  • ALTER, se utiliza para modificar la estructura, por ejemplo añadir o borrar columnas de una tabla.
  • DROP, con esta sentencia, podemos eliminar los objetos de la estructura, por ejemplo un índice o una secuencia.

Lenguaje de Manipulación de Datos (DML)

Data Manipulation Language (DML) se resume en el conjunto de instrucciones SQL que permite a los usuarios introducir datos para posteriormente realizar tareas de consultas o modificación de los datos que contienen las Bases de Datos.

Los elementos que se utilizan para manipular los datos, son los siguientes:

  • SELECT, esta sentencia se utiliza para realizar consultas sobre los datos.
  • INSERT, con esta instrucción podemos insertar los valores en una base de datos.
  • UPDATE, sirve para modificar los valores de uno o varios registros.
  • DELETE, se utiliza para eliminar las finas de una tabla

Lenguaje de Control de Datos (DCL)

Hasta aquí hemos visto las sentencias usadas para crear y manipular datos pero también es necesario su control y administración. De esto se encarga el lenguaje DLC (Data Control Languaje) mediante el conjunto de comandos que permiten a un administrador del sistema de bases de datos controlar el acceso a usuarios mediante la asignación de permisos o roles para realizar determinadas tareas.

Los comandos para controlar los permisos son los siguientes:

  • GRANT, permite otorgar permisos.
  • REVOKE, elimina los permisos que previamente se han concedido.

Sistemas de gestión de bases de datos más conocidos

Desde la aparición de los primeros modelos de bases de datos relacionales a comienzos de la década de los 70 hasta nuestros días la industria del software a visto nacer y morir múltiples propuestas. En una evolución constante en la actualidad podemos decir que los principales sistemas gestores de bases de datos relacionales en la actualidad son:

MySQL: Es el sistema gestor de bases de datos relacional por excelencia y utilizado en la gran parte de las aplicaciones web actuales. Se ofrece bajo licencia GNU/GPL y aunque es posible adquirir una versión licenciada por Oracle (actualmente la empresa responsable de su desarrollo).

Las principales ventajas son:

  • Base de datos multihilo y multiusuario
  • Facilidad de uso y gran rendimiento
  • Facilidad para instalar y configurar
  • Soporte multiplataforma
  • Soporte SSL

MariaDB: Este sistema de gestión de bases de datos fue en origen un fork o derivación de MySQL debido a los modelos de licencia que Oracle lleva imponiendo a su desarrollo desde la adquisición de Sun Microsystems. Esto hizo que la comunidad moviera sus esfuerzos en la creación de un desarrollo independiente.

Entre sus principales características se encuentran:

  • Aumento de motores de almacenamiento
  • Gran escalabilidad
  • Seguridad y rapidez en transacciones
  • Extensiones y nuevas características relacionadas con su aplicación para Bases de datos NoSQL.

SQLite: Utilizada por multitud de aplicaciones en la actualidad se trata de una librería escrita en C que implementa la gestión de un sistema de base de datos sin necesidad de un servidor ni configuraciones. Esto lo hace muy versátil para el desarrollo de pequeñas aplicaciones de software reduciendo significativamente sus requerimientos de hardware.

Las principales características de SQLite son:

  • El tamaño, al tratarse de una biblioteca, es mucho menor que otros sistemas de gestión de bases de datos.
  • Reúne los cuatro criterios ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) logrando gran estabilidad
  • Gran portabilidad y rendimiento

PostgreSQL: Bajo licencia BSD este sistema de base de datos relacional está orientado a objetos. Esto ofrece a desarrolladores la posibilidad de poder trabajar de un modelo más robusto de gestión de grandes volúmenes de datos.

Sus principales características son:

  • Control de Concurrencias multiversión (MVCC)
  • Flexibilidad en cuanto a lenguajes de programación que soporta
  • Es multiplataforma y opera bajo una licencia libre
  • Robustez, Eficiencia y Estabilidad

Microsoft SQL Server: Es un sistema propietario licenciado por Microsoft y se basa en el lenguaje Transact-SQL, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea.

Sus principales características son:

  • Soporte exclusivo por parte de Microsoft.
  • Escalabilidad, estabilidad y seguridad.
  • Posibilidad de cancelar consultas.
  • Potente entorno gráfico de administración que permite utilizar comandos DDL y DML.
  • Puede utilizarse en otras plataformas como Linux o Docker.

Oracle: Además de MySQL Oracle ofrece su propia gestión de bases de datos para el mundo empresarial. En la actualidad se considera como el más robusto y completo y es utilizado habitualmente en soluciones de banca o en grandes empresas.

Sus principales características:

  • Soporte de transacciones.
  • Estabilidad.
  • Escalabilidad.
  • Multiplataforma.

Comandos y sintaxis de SQL

CREATE

Este comando crea un objeto dentro del gestor de base de datos. Puede ser una base de datos, tabla, índice, procedimiento almacenado o vista.

Ejemplo (crear una tabla):

# CREATE TABLE Empleado
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Direccion VARCHAR(255),
Ciudad VARCHAR(60),
Telefono VARCHAR(15),
Peso VARCHAR (5),
Edad (2),
Actividad Específica (100),
idCargo INT
)

ALTER

Con este comando podemos modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

Ejemplo (agregar columna a una tabla):

# ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT;
# ALTER TABLE 'NOMBRE_TABLA' DROP COLUMN NOMBRE_COLUMNA;

DROP

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

Ejemplo:

# DROP TABLE 'NOMBRE_TABLA';
# DROP SCHEMA 'ESQUEMA;'
# DROP DATABASE 'BASEDATOS';

TRUNCATE

Este comando trunca todo el contenido de una tabla. Frente a Drop su principal ventaja es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande.

Ejemplo:

# TRUNCATE TABLE 'NOMBRE_TABLA';

INSERT

Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional.

Forma básica:

# INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1'', [''valor2,...''])

Ejemplo:

# INSERT INTO agenda_telefonica VALUES (Pedro Aguilar, 881412339);

UPDATE

Utilizada para modificar los valores de un conjunto de registros existentes en una tabla.

Ejemplo:

# UPDATE mi_tabla SET campo1 = 'nuevo valor campo1' WHERE campo2 = 'N';

DELETE

Borra uno o más registros existentes en una tabla.

Forma básica:

# DELETE FROM 'tabla' WHERE 'columna1' = 'valor1'

Ejemplo:

# DELETE FROM My_table WHERE field2 = 'N';

Compartir este post

También te puede interesar...

Tecnología

Qué es SQL Server

23 Noviembre 2019 Miguel Parada
Experto en Bases de Datos

Experto en Bases de Datos

18 horas y 15 minutos · Carrera

Conviértete en un experto en bases de datos, tanto relacionales como no relacionales.

Creación y administración de Bases de Datos

Curso de creación y administración de Bases de Datos SQL

4 horas y 12 segundos · Curso

Prepárate para convertirte en el héroe de los datos con este curso. Si sabes lo básico de informática y has jugueteado con SQL, estás listo …

  • Bases de Datos
Artículos
Ver todos