Tutorial de SQL

SQL es un lenguaje estándar de consultas o queries a bases de datos. La programación o consultas en SQL sirve para almacenar, manipular y recuperar datos de bases de datos relacionales. Algunos de los sistemas de gestión de bases de datos más utilizados son los de ORACLE, Microsoft SQL Server, MySQL o PostgreSQL.

En este Tutorial de SQL en español podrás encontrar de forma sencilla la sintaxis, y aprenderás a realizar consultas desde lo más básico a lo más complejo.



¿Qué es SQL?

SQL es un lenguaje de consultas que sirve para extraer información y administrar sistemas de gestión de bases de datos relacionales.

  • SQL es el acrónimo inglés de Structured Query Language, que significa lenguaje de consulta estructurado.
  • SQL le permite acceder y manipular bases de datos.
  • SQL se convirtió en un estándar del Instituto Nacional Estadounidense de Estándares (ANSI) en 1986 y de la Organización Internacional de Normalización (ISO) en 1987.

¿Qué puede hacer SQL?

Estas son las funciones principales de SQL.

  • SQL puede ejecutar consultas contra una base de datos.
  • SQL puede recuperar datos de una base de datos.
  • SQL puede insertar registros en una base de datos.
  • SQL puede actualizar registros en una base de datos.
  • SQL puede eliminar registros de una base de datos.
  • SQL puede crear nuevas bases de datos.
  • SQL puede crear nuevas tablas en una base de datos.
  • SQL puede crear procedimientos almacenados en una base de datos.
  • SQL puede crear vistas en una base de datos.
  • SQL puede establecer permisos en tablas, procedimientos y vistas.

Componentes clave en SQL

SQL (Structured Query Language) es un lenguaje de programación diseñado para administrar y manipular bases de datos relacionales. Se utiliza para crear, modificar y consultar bases de datos, así como para gestionar los datos almacenados en ellas. SQL consta de varios componentes clave:

DDL (Data Definition Language): DDL (Data Definition Language), permite definir y modificar la estructura de la base de datos. Las principales instrucciones DDL incluyen:

  • CREATE: Crea una nueva tabla, vista, índice u otro objeto de la base de datos.
  • ALTER: Modifica la estructura de una tabla o de otros objetos de la base de datos.
  • DROP: Elimina una tabla, vista, índice u otro objeto de la base de datos.

DML (Data Manipulation Language): DML (Data Manipulation Language), se utiliza para manipular los datos dentro de la base de datos. Las principales instrucciones DML incluyen:

  • SELECT: Recupera datos de una o varias tablas.
  • INSERT: Inserta nuevos registros en una tabla.
  • UPDATE: Modifica los datos existentes en una tabla.
  • DELETE: Elimina registros de una tabla.

DQL (Data Query Language): DQL(Data query language), se centra en la consulta y recuperación de datos. La instrucción SELECT es la principal instrucción DQL y se utiliza para recuperar información de una o varias tablas.

DCL (Data Control Language): DCL (Data Control Language) gestiona los permisos y derechos de acceso a los datos. Las principales instrucciones DCL incluyen:

  • GRANT: Otorga permisos a los usuarios para acceder y manipular la base de datos.
  • REVOKE: Revoca los permisos otorgados previamente.

TCL (Transaction Control Language): TCL (Transaction Control Language), administra las transacciones en la base de datos. Las principales instrucciones TCL incluyen:

  • COMMIT: Confirma los cambios realizados en una transacción.
  • ROLLBACK: Deshace los cambios realizados en una transacción.
  • SAVEPOINT: Establece un punto de control dentro de una transacción.

Características de SQL

La solvencia, versatilidad y consistencia de las bases de datos relacionales y de SQL, hacen de este lenguaje uno de los más importantes útiles y demandados para analizar datos.

  • Integridad de los datos.
  • Lenguaje estandarizado.
  • Sencillez y claridad.
  • Flexibilidad.

Aunque SQL es un estándar ANSI/ISO, existen diferentes versiones del lenguaje SQL. Pero para cumplir con el estándar ANSI, todos admiten al menos los comandos principales (como SELECT, UPDATE, DELETE, INSERT, WHERE) de manera similar.

Integridad de los datos

Cuando hablamos de integridad de los datos, nos referimos a asegurar que los datos sean válidos, correctos y completos. SQL y las bases de datos relacionales tienen la función de preservar esta integridad.

La integridad de los datos en SQL se refiere a la consistencia y validez de los datos almacenados en una base de datos. Es importante mantener la integridad de los datos para garantizar su calidad y confiabilidad. SQL proporciona varios mecanismos para garantizar la integridad de los datos:

Restricciones de integridad: Las restricciones son reglas definidas en la estructura de la base de datos que limitan los valores permitidos en las columnas de una tabla. Algunos tipos de restricciones comunes son:

  • Clave primaria (PRIMARY KEY): Garantiza que no haya duplicados y que cada fila de la tabla tenga un valor único en la columna designada como clave primaria.
  • Clave externa (FOREIGN KEY): Mantiene la integridad referencial entre dos tablas, asegurando que los valores en una columna de una tabla coincidan con los valores en la columna de referencia en otra tabla.
  • Restricciones de integridad de columna (CHECK): Especifica una condición lógica que debe cumplirse para los valores en una columna.

Transacciones: Las transacciones permiten agrupar una o varias operaciones de SQL en una unidad lógica. Las transacciones aseguran que las operaciones se realicen de manera completa y consistente, o que se deshagan por completo en caso de un fallo. Esto ayuda a mantener la integridad de los datos y evita que los datos se queden en un estado intermedio o inconsistente.

Disparadores (Triggers): Los disparadores son procedimientos almacenados que se ejecutan automáticamente en respuesta a ciertos eventos, como inserciones, actualizaciones o eliminaciones de datos en una tabla. Los disparadores se utilizan para aplicar lógica de negocio adicional o imponer reglas específicas para garantizar la integridad de los datos.

Vistas: Las vistas son consultas predefinidas almacenadas en la base de datos. Proporcionan una capa adicional de seguridad e integridad al permitir el acceso a los datos de una manera controlada y restringida.

Estos mecanismos y técnicas ayudan a mantener la integridad de los datos en una base de datos SQL, asegurando que los datos sean precisos, consistentes y válidos en todo momento.

Tutorial SQL
SQL Tutorial

Lenguaje estandarizado

Que SQL sea un lenguaje estandarizado quiere decir que se pueden desplegar implementaciones del mismo lenguaje SQL en diferentes sistemas. De esta manera se puede utilizar el mismo código para todos ellos.

El lenguaje SQL (Structured Query Language) está estandarizado por dos organizaciones principales: ANSI (American National Standards Institute) e ISO (International Organization for Standardization).

ANSI SQL: Especificación SQL publicada por el ANSI, que establece los estándares para el lenguaje de consulta en bases de datos relacionales. ANSI SQL define la sintaxis y las características básicas del lenguaje. Las versiones notables de ANSI SQL incluyen SQL-86, SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011 y SQL:2016. Cada versión introduce nuevas características y mejoras en el estándar.

ISO SQL: Especificación SQL publicada por el ISO, que está basada en la especificación de ANSI SQL. El ISO SQL adopta los estándares de ANSI y los convierte en estándares internacionales. Las versiones de ISO SQL también se corresponden con las versiones de ANSI SQL, y el estándar ISO SQL adopta los cambios y adiciones realizados por ANSI.

Es importante destacar que aunque SQL está estandarizado, cada sistema de gestión de bases de datos (DBMS) puede implementar el lenguaje de manera ligeramente diferente o agregar extensiones propietarias. Estas diferencias pueden incluir funciones específicas del proveedor, características adicionales y variaciones en la sintaxis.

Sin embargo, la base del lenguaje SQL es común y consistente en todas las implementaciones. Esto significa que los conocimientos y habilidades adquiridos en el uso de SQL se pueden aplicar en diferentes sistemas de bases de datos, aunque se requiera un ajuste para adaptarse a las particularidades de cada plataforma.

Sencillez y claridad

SQL es un lenguaje integral desde el punto de vista conceptual, esto quiere decir que SQL es un lenguaje unificado, claro y simple, de fácil comprensión.

SQL se destaca por su sencillez y claridad en la escritura de consultas y comandos. Algunas características que contribuyen a su legibilidad y comprensión son:

  • Lenguaje declarativo: SQL es un lenguaje declarativo, lo que significa que los usuarios pueden describir qué datos desean obtener o manipular en lugar de tener que especificar cómo se deben obtener o manipular. Esto hace que las consultas SQL sean más intuitivas y fáciles de entender.
  • Sintaxis estructurada: SQL utiliza una sintaxis estructurada y organizada, que sigue un conjunto de reglas bien definidas. Las cláusulas y comandos SQL están estructurados en bloques y se pueden leer de manera secuencial, lo que facilita la comprensión de las consultas.
  • Palabras clave descriptivas: Las palabras clave utilizadas en SQL son descriptivas y se asemejan al lenguaje natural. Por ejemplo, SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY son palabras clave que indican claramente las acciones que se están realizando en una consulta.
  • Separación de preocupaciones: SQL permite separar la lógica de la consulta de la implementación subyacente. Los usuarios solo necesitan preocuparse por describir los resultados deseados, sin tener que preocuparse por los detalles de cómo se obtendrán esos resultados. Esto hace que el código SQL sea más conciso y legible.
  • Comentarios: SQL admite comentarios que permiten a los desarrolladores agregar explicaciones y aclaraciones en el código. Los comentarios ayudan a documentar el propósito de las consultas y a mejorar la comprensión del código tanto para los desarrolladores como para otros usuarios que lo revisen en el futuro.

En general, SQL se diseñó para ser un lenguaje accesible y comprensible tanto para desarrolladores como para usuarios no técnicos. Su sintaxis clara y su enfoque declarativo hacen que sea relativamente fácil de aprender y utilizar, lo que contribuye a su sencillez y claridad en la escritura de consultas y comandos.

Flexibilidad

Una de las razones por las que SQL es un lenguaje tan utilizado es por su flexibilidad, dada su versatilidad a la hora de implantar soluciones y por permitir definir diferentes formas de ver los datos para satisfacer las especificaciones requeridas por parte del usuario.

SQL es conocido por su flexibilidad, ya que proporciona una amplia gama de funcionalidades y capacidades para manejar y manipular datos en bases de datos relacionales. Algunos aspectos clave de la flexibilidad de SQL son los siguientes:

  • Manipulación de datos: SQL permite realizar una variedad de operaciones en los datos almacenados en una base de datos, como recuperar datos (SELECT), insertar nuevos registros (INSERT), actualizar registros existentes (UPDATE) y eliminar registros (DELETE). Esta flexibilidad permite realizar diversas tareas de manipulación de datos según las necesidades del usuario.
  • Consultas complejas: SQL permite construir consultas complejas utilizando cláusulas como JOIN, GROUP BY, HAVING y ORDER BY. Estas cláusulas permiten combinar datos de múltiples tablas, agrupar y resumir datos, aplicar condiciones de filtro y ordenar los resultados. Esta flexibilidad permite realizar consultas avanzadas y obtener información específica de la base de datos.
  • Creación y modificación de estructuras: SQL ofrece instrucciones DDL (Data Definition Language) como CREATE, ALTER y DROP, que permiten crear, modificar y eliminar estructuras de bases de datos, como tablas, vistas, índices y restricciones. Esto proporciona flexibilidad para adaptar la estructura de la base de datos según las necesidades cambiantes de la aplicación o del negocio.
  • Transacciones y control de concurrencia: SQL permite trabajar con transacciones, que agrupan varias operaciones en una unidad lógica. Esto proporciona flexibilidad para garantizar la consistencia y la integridad de los datos al controlar las operaciones de inserción, actualización y eliminación de manera coordinada. Además, SQL proporciona mecanismos de control de concurrencia para manejar situaciones donde múltiples usuarios acceden y modifican los datos simultáneamente.
  • Extensiones y funciones personalizadas: Muchas implementaciones de SQL permiten agregar extensiones y funciones personalizadas para ampliar la funcionalidad del lenguaje. Esto permite a los usuarios adaptar SQL a sus necesidades específicas y realizar operaciones complejas o específicas del dominio.

En resumen, la flexibilidad de SQL radica en su capacidad para manejar diversas operaciones de manipulación de datos, construir consultas complejas, administrar estructuras de bases de datos, trabajar con transacciones y controlar la concurrencia. Esto permite adaptar SQL a las necesidades específicas de una aplicación o entorno empresarial y realizar una amplia gama de tareas relacionadas con la gestión de datos.


Sistemas de gestión de bases de datos relacionales

Existen varios sistemas de gestión de bases de datos relacionales (RDBMS) que utilizan SQL como lenguaje de consulta. Algunos de los sistemas de gestión de bases de datos relacionales más populares son:

  • Oracle Database: Es un sistema de gestión de bases de datos relacional de Oracle Corporation. Oracle Database es conocido por su escalabilidad, confiabilidad y robustez, y se utiliza ampliamente en entornos empresariales.
  • Microsoft SQL Server: Microsoft SQL Server es un sistema de gestión de bases de datos relacional desarrollado por Microsoft. SQL Server ofrece una amplia gama de características y herramientas para el manejo de datos y es utilizado principalmente en entornos Windows.
  • MySQL: MySQL es un sistema de gestión de bases de datos relacional de código abierto. MySQL es conocido por ser fácil de usar, rápido y confiable. Es utilizado tanto en entornos empresariales como en aplicaciones web y de código abierto.
  • PostgreSQL: Es un sistema de gestión de bases de datos relacional de código abierto y robusto. PostgreSQL se destaca por su compatibilidad con SQL estándar, soporte para características avanzadas y su énfasis en la integridad de los datos.
  • IBM Db2: Es un sistema de gestión de bases de datos relacional desarrollado por IBM. Db2 es conocido por su rendimiento, escalabilidad y capacidad para manejar grandes volúmenes de datos. Es utilizado en entornos empresariales y mainframe.

Estos son solo algunos ejemplos de sistemas de gestión de bases de datos relacionales que utilizan SQL como lenguaje de consulta. Cada uno de estos sistemas tiene sus propias características, fortalezas y áreas de aplicación, y la elección del sistema adecuado depende de los requisitos y las necesidades específicas de cada proyecto o aplicación.

Tutorial SQL Server
Sistema general de Base de Datos - SQL

Tipos de datos

En SQL, se utilizan diferentes tipos de datos para representar y almacenar diferentes tipos de valores en las tablas de una base de datos. A continuación, se presentan algunos de los tipos de datos más comunes en SQL:

Puedes ampliar información sobre los tipos de datos de SQL en el siguiente artículo del tutorial: Tipos de datos en SQL

  • Números enteros:
    • INTEGER: Representa números enteros.
    • SMALLINT: Representa números enteros pequeños.
    • BIGINT: Representa números enteros grandes.
    • TINYINT: Representa números enteros muy pequeños.
  • Números decimales:
    • DECIMAL(p, s): Representa números decimales de precisión fija, donde "p" representa el número total de dígitos y "s" representa el número de dígitos decimales.
  • Números de punto flotante:
    • FLOAT: Representa números de punto flotante de precisión simple.
    • DOUBLE: Representa números de punto flotante de precisión doble.
  • Cadenas de texto:
    • CHAR(n): Representa una cadena de texto de longitud fija, donde "n" representa el número máximo de caracteres.
    • VARCHAR(n): Representa una cadena de texto de longitud variable, donde "n" representa el número máximo de caracteres.
    • TEXT: Representa una cadena de texto de longitud variable sin límite específico.
  • Fechas:
    • DATE: Representa una fecha.
    • TIME: Representa una hora del día.
    • TIMESTAMP: Representa una fecha y hora.
  • Booleanos:
    • BOOLEAN: Representa un valor booleano (verdadero o falso).

Estos son solo algunos ejemplos de los tipos de datos utilizados en SQL. Cada sistema de gestión de bases de datos puede tener sus propios tipos de datos específicos o extensiones. Además, es importante tener en cuenta las limitaciones y características específicas de cada tipo de datos al diseñar y manipular las tablas de la base de datos.


Sintaxis de SQL

Para explicar la sintaxis de SQL, en primer lugar, es importante decir que una base de datos a menudo contiene muchas tablas, a cada tabla se le asigna un nombre por ejemplo "Datos_Clientes". Estas tablas tienen filas y columnas y contienen distintos valores.

SQL Sintaxis tutorial
SIntaxis del lenguaje de consultas SQL

Para extraer los datos o consultarlos, transformarlos o convertirlos, mostramos un resumen del curso SQL con los comandos más importantes:

SELECT: La instrucción SELECT se utiliza para seleccionar distintos datos de contiene una base de datos, A continuación mostramos un ejemplo:

SELECT Nombre, Apellidos, ...
FROM Datos_Clientes;

SELECT DISTINCT: Para seleccionar los distintos valores de una tabla se añade la instrucción:

SELECT DISTINCT Nombre, Apellidos, ...
FROM Datos_Clientes;

WHERE: La instrucción WHERE es utilizada para establecer condiciones y filtros a la query.

SELECT columna1, ...
FROM nombre_tabla
WHERE condición;

AND, OR, NOT: Los operadores AND, OR y NOT se utilizan en la cláusula WHERE, dependiendo del tipo de condición que se quiera establecer.

SELECT columna1
FROM nombre_tabla 
WHERE NOT condición1 AND/OR condición2;

IN: Este comando permite concretar valores múltiples en dentro de la cláusula WHERE.

SELECT columna1
FROM nombre_tabla
WHERE nombre_columna IN (valor1, valor2, valor3, valor4,..);

BETWEEN: Este comando de SQL selecciona valores dentro de un rango que se especifica en la cláusula WHERE. Los valores pueden ser fechas, números o texto.

SELECT columna_1
FROM nombre_tabla
WHERE nombre_columna BETWEEN valor_1 AND valor_2;

LIKE: El comando LIKE es utilizado en la cláusula WHERE para buscar un valor que contenga los caracteres que se especifiquen en una columna concreta.

SELECT columna1
FROM nombre_tabla
WHERE columna1 LIKE '%caracteres_a_buscar%';

ORDER BY: Este comando sirve para ordenar los resultados de una consulta en orden ascendente o descendente.

SELECT columna1
FROM nombre_tabla
ORDER BY columna1 ASC|DESC;

COUNT, AVG, SUM: Estas son las funciones de agregación principales ya que permiten contar, sumar o calcular promedios de una columna concreta.

SELECT COUNT(columna1)
FROM nombre_tabla
WHERE condición;

GROUP BY: Cuando se utilizan funciones de agregación, se utiliza GROUP BY para agrupar el resultado de la query en una o varias columnas.

SELECT Columna1, COUNT( Columna2)
FROM nombre_tabla
WHERE condición
GROUP BY Columna1;

HAVING: El comando HAVING es utilizado con funciones agregadas en la cláusula WHERE.

SELECT columna1
FROM nombre_tabla
WHERE condición
GROUP BY columna1
HAVING condición
ORDER BY columna1;

CREATE TABLE: Se utiliza para crear una tabla nueva en una base de datos SQL.

SELECT columna1
FROM nombre_tabla
WHERE condición
GROUP BY columna1
HAVING condición
ORDER BY columna1;

DROP TABLE: Esta instrucción de SQL es utilizada para borrar una tabla de la base de datos.

DROP TABLE tabla1;

ALTER TABLE: Este comando sirve para modificar, eliminar o añadir columnas en una tabla que ya existe en la base de datos.

ALTER TABLE nombre_tabla
ADD nombre_columna datatype;

UPDATE: Este comando es utilizado para actualizar los valores de una tabla SQL que se quiera modificar.

UPDATE tabla1
SET columna1 = valor1, columna2 = valor2
WHERE condición;

DELETE: El comando DELETE es utilizado para eliminar valores concretos de una tabla SQL.

DELETE FROM tabla1 WHERE condición;

INSERT INTO: Este comando SQL sirve para insertar valores en una tabla que ya existe.

INSERT INTO tabla1 (columna1, columna2)
VALUES (valor1, valor2);

Mayúsculas y minúsculas

SQL NO distinguen entre mayúsculas y minúsculas: En este tutorial encontrarás todos los comandos SQL en mayúsculas.

Punto y coma

Algunos sistemas de bases de datos necesitan un punto y coma al final de cada declaración SQL. El punto y coma es la forma estándar de separar cada instrucción SQL en los sistemas de bases de datos que permiten ejecutar más de una instrucción SQL en la misma llamada al servidor. En este tutorial, usaremos un punto y coma al final de cada instrucción SQL.


Historia y orígenes de SQL

La historia de SQL (Structured Query Language) se remonta a la década de 1970, cuando IBM desarrolló un lenguaje de consulta llamado SEQUEL (Structured English Query Language) como parte de su proyecto System R. SEQUEL fue diseñado para manejar y manipular datos almacenados en el sistema de gestión de bases de datos relacional (RDBMS) de IBM.

En 1979, SEQUEL se renombró oficialmente como SQL por razones de marca registrada y se presentó como un estándar para el lenguaje de consulta en bases de datos relacionales. En ese momento, SQL era un lenguaje principalmente propietario y se utilizaba principalmente en los sistemas RDBMS de IBM.

A medida que los sistemas de bases de datos relacionales ganaron popularidad, el interés por SQL creció y se convirtió en un estándar ampliamente adoptado en la industria. En la década de 1980, varias compañías desarrollaron sus propias implementaciones de SQL, lo que llevó a diferencias y variantes en la sintaxis y características del lenguaje.

Para abordar la necesidad de un estándar común, el Instituto Nacional Estadounidense de Estándares (ANSI) publicó la primera especificación oficial de SQL en 1986. Esta especificación, conocida como SQL-86, estableció una base para el desarrollo de implementaciones compatibles con SQL por parte de diversos proveedores de bases de datos.

A lo largo de los años, se han publicado varias versiones y revisiones del estándar SQL por parte de ANSI e ISO (Organización Internacional de Normalización). Algunas de las versiones notables incluyen SQL-92, SQL:1999, SQL:2003, SQL:2008, SQL:2011 y SQL:2016. Cada versión introdujo nuevas características, mejoras en la sintaxis y mayor compatibilidad entre los sistemas de bases de datos.

Hoy en día, SQL es el lenguaje estándar de consulta para la mayoría de los sistemas de bases de datos relacionales y se utiliza ampliamente en aplicaciones empresariales y desarrollo de software. Además, SQL ha evolucionado para abarcar no solo la consulta de datos, sino también la creación, modificación y gestión completa de bases de datos, así como operaciones avanzadas como análisis, minería de datos y procesamiento de big data.

También te puede interesar: