¿Qué es el lenguaje SQL? ¿Está considerado un lenguaje de programación?
SQL significa Structured Query Language, es decir, Lenguaje de Consulta Estructurada.
Por lo tanto, SQL no es un lenguaje de programación propiamente dicho, como HTML o XML que es un lenguaje de marcado, ya que es un lenguaje estándar que usamos para poder acceder a una base de datos.
Por ejemplo, con SQL no podemos hacer un bucle for. Pero Transact SQL o PL/SQL si que está considerado lenguajes de programación. Pero vayamos por partes..
Con SQL podemos acceder a la mayoría de bases de datos relacionales, para poder consultar y editar los datos.
Qué es una base de datos relacional
Una base de datos es un conjunto de datos estructurados, que nos permite guardar una gran cantidad de datos. La gestión de estos datos básicamente es guardarlos y consultarlos.
Existe una gran variedad de tipos de bases de datos, como las jerárquicas o las multidimensionales, pero las más populares son las base de datos relacionales. El modelo relacional es un paradigma dónde podemos relacionar de forma lógica un conjunto de datos, llamados tablas o tuplas. Estas tablas tienen registros o filas, y cada una de estas filas tiene campos o columnas, que son los valores de estos datos que hemos definido.
Un ejemplo de tabla de una base de datos dónde contenemos datos de personas.
Nombre | Edad | Dirección | Fecha de actualización | |
---|---|---|---|---|
#1 | Manuel | 24 | Dirección de Manuel | 01/12/2017 |
#2 | Dana | 42 | Dirección de Dana | 08/05/2013 |
#3 | Gabriel | 32 | Dirección de Gabriel | 07/04/2010 |
#n | … | … | … | … |
Como ves, en esta tabla tenemos varias filas diferentes, dónde en cada registro almacenamos diferentes tipos de datos separados por columnas. Podemos tener otras tablas, que se relacionaría con ésta para obtener más datos.
Los Sistemas de Gestión de Bases de Datos Relacionales (RDBMS en inglés) son los motores dónde usan el modelo que hemos comentado. Aunque usan el mismo modelo, existe una gran diversidad de bases de datos, ya sea por la manera en que maneja la información, si es para un uso concreto (servidor web por ejemplo), etc.
Ejemplos de bases de datos relacionales
Algunos ejemplos de bases de datos relacionales son:
- MySQL. La base de datos más popular en el mundo de internet. Es de código abierto y se usa mucho para el desarrollo web. Ejemplos de páginas populares que usan esta base de datos puede ser la Wikipedia, Youtube o Facebook, pero si usas una página con WordPress o Drupal también almacena los datos con MySQL.
- SQL Server. Esta base de datos es de Microsoft, y es una de las más usadas en los servidores con sistema operativo Windows. Además, es facilmente programable en los lenguajes de visual Studio, como Visual Basic o C#.
- Oracle. Podemos decir que Oracle es la competencia directa de SQL Server. Funciona sobretodo a nivel empresarial por la capacidad de almacenar un gran volumen de datos.
- Access. Access también es de Microsoft, y suele venir incorporado en Microsoft Office. Aunque no es recomendado para almacenar muchos datos y tener varios usuarios conectados a la vez, pero tiene una gran facilidad de uso gracias a sus asistentes que permiten, crear tablas, consultas, formularios e informes.
Otras bases de datos que podemos destacar son:
- PostgreSQL.
- MongoDB. Esta base de datos es NoSQL, por tanto no es relacional.
- DB2.
- SQLite. Muy popular ahora para programación de aplicaciones móviles.
- Firebird.
- Interbase.
- MariaDB.
Aprender SQL desde cero
Si te dedicas a programar, casi seguro que tienes que acceder a una base de datos. Ya sea una aplicación móvil, un desarrollo web o un videojuego, es habitual tener que almacenar y consultar datos. Así que es IMPORTANTE aprender SQL.
La ventaja del SQL es que es independientemente de la base de datos, aunque siempre hay personalizaciones, que se hacen para mejorar el rendimiento, en cada motor. Así que puedes aprender toda la parte básica de SQL sin importar con que base de datos vayas a trabajar.
¿Cuánto se tarda en aprender SQL? Menos de lo que crees, porque no es difícil aprender SQL. No hablamos de un lenguaje de programación, tiene una sintaxis muy clara y con pocos comandos sql (las instrucciones para decidir si quieres consultar, añadir, actualizar o eliminar datos) puedes hacer casi de todo.
¿Cómo aprender SQL fácil? Lo mejor es hacer un curso, para que puedas practicar con datos reales, y así verás como funciona.
No hace falta saber nada de programación para hacerlo, es una cosa que puedes decidir después. Entra y mira el contenido
Lenguaje SQL básico
Veamos una pequeña demostración del lenguaje SQL básico que es común a cualquier base de datos.
Empezamos con la sentencia SELECT
, para seleccionar datos de una o varias tablas.
Ejemplo sentencia SELECT
SELECT <nombre_campo, [<nombre_campo>]
FROM <nombre_tabla>
[WHERE <condicion>]
Veamos un ejemplo, para que sea más sencillo de entender. Si queremos consultar los datos de una tabla llamada Personas, se podría hacer con la siguiente sentencia:
SELECT * FROM Personas
Aunque se puede usar el símbolo *
para indicar que queremos todos los campos, lo correcto es indicar cada uno de ellos, así podemos elegir solamente los campos que necesitamos y en el orden que queremos:
SELECT Codigo, Nombre, Apellido1, Apellido2, Telefono, Direccion, Ciudad, Pais
FROM Personas
Lo más probable es que no queremos todos los datos, así que añadimos la palabra especial WHERE
para poder filtrar, por ejemplo los que se llamen David:
SELECT Codigo, Nombre, Apellido1, Apellido2, Telefono, Direccion, Ciudad, Pais
FROM Personas
WHERE Nombre = "David"
Si además queremos ordenarlos por el campo de Codigo
, usamos la palabra ORDER BY
.
SELECT Codigo, Nombre, Apellido1, Apellido2, Telefono, Direccion, Ciudad, Pais
FROM Personas
WHERE Nombre="David"
ORDER BY Codigo
Y así podemos ir complicándolo más, añadiendo otras tablas, contando el total de registros, sumando algún campo de tipo numérico, etc..
Ejemplo sentencia INSERT
Si queremos añadir registros nuevos a una tabla, usamos la sentencia INSERT
.
INSERT INTO <nombre_tabla> (<nombre_campo>, [<nombre_campo>]
) VALUES<valor1>, [<valor2>]
Si seguimos con el mismo ejemplo de la tabla Personas, la sentencia tendría esta forma:
INSERT INTO Personas (Codigo, Nombre, Telefono, Ciudad, Pais)
VALUES (10, "John", 555555, "Madrid", "Spain")
También es posible añadir datos con una sentencia SELECT
, que tendría este aspecto:
INSERT INTO Personas_copia (Codigo, Nombre)
SELECT Codigo, Nombre
FROM Personas
WHERE nombre IN ('John', 'Peter')
Ejemplo sentencia UPDATE
Con la sentencia SELECT
podemos actualizar los datos de un registro que ya existe en la base de datos. Si queremos actualizar solamente unos registros concretos, los filtramos con una condición.
UPDATE <nombre_tabla>
SET <nombre_campo> = <valor>
[WHERE <condicion>]
Vemos que hay que poner cada campo que queremos actualizar con su valor
Ejemplo sentencia DELETE
Con la sentencia DELETE
podemos eliminar registros de una tabla, con una condición para un filtro opcional.
DELETE FROM <nombre_tabla>
WHERE <condicion>
Otras sentencias SQL
Hemos visto algunos ejemplos de sentecias sql para tratar registros, pero existen muchas más para tratar otras cosas relacionadas con las bases de datos. Algunos ejemplo:
- Creación y eliminación de tablas.
- Creación de índices y claves primarias.
- Creación de consultas complejas.
- Gestión de usuarios de acceso, como sus permisos.
- Copias de seguridad.
Lenguaje de programación Transact SQL
Transact-SQL es el lenguaje de programación de SQL Server. También puedes encontrártelo como T-SQL.
T-SQL amplia las posibilidades que ofrece el estándar SQL, ya que tiene propiedades propias de un lenguaje de programación como:
- Creación de variables locales con tipos de datos.
- Programación Procedimental, con estructuras propias de control de flujo como if, for, etc.
- Tratamiento de cadenas de texto y de fechas.
- Creación de funciones predefinidas que podemos llamar.
Lenguaje de programación PL/SQL
PL/SQL es el lenguaje de programación de las bases de datos de Oracle. Al igual que ocurre con Transact-SQL, permite las características propias de un lenguaje de programación, por lo que extiende sus posibilidades cuando trabajamos con bases de datos de este tipo.
El código fuente se puede almacenar en la propia base de datos, como si fuese un objeto, para poder ejecutar como si fuese un paquete independiente. También permite la posibilidad de triggers, que es cuando se ejecuta un paquete de código cuando ocurre un evento determinado. Esta ejecución se hace de forma automática, y se pueden utilizar para:
- Verificar valores cuando se añade un registro nuevo.
- Calcular valores y asignarlos a un campo.
- Añadir registros automáticos a otra tabla, por ejemplo de auditoría.
Para la ejecución de triggers en PL/SQL, podemos especificar si se ejecutan ANTES o DESPUÉS del evento que le hemos asociado.