Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

TUTORIAL SQL #1: Qué es SQL, por qué aprenderlo y preparación del entorno de aprendizaje

SQL-LenguajeEl Structured Query Language o SQL es el lenguaje utilizado por la mayoría de los Sistemas Gestores de Bases de Datos Relacionales  (SGBDR) surgidos a finales de los años 70, y que llega hasta nuestros días.

Es una reiteración hablar de “Lenguaje SQL”, ya que lo de “lenguaje” va incluido en el nombre, aunque lo cierto es que casi todo el mundo lo dice así.

En 1986 fue estandarizado por el organismo ANSI (American nacional Standard Institute), dando lugar a la primera versión estándar de este lenguaje, el SQL-86 o SQL1. Al año siguiente este estándar es adoptado también por el organismo internacional ISO (International Standarization Organization).

La parte fundamental de SQL es un estándar internacional.

A lo largo del tiempo se ha ido ampliando y mejorando. En la actualidad SQL es el estándar de facto de la inmensa mayoría de los SGBDR comerciales. El soporte del estándar es general y muy amplio, pero cada sistema (Oracle, SQL Server, MySQL...) incluye sus ampliaciones y pequeñas particularidades.

El ANSI SQL ha ido sufriendo varias revisiones a lo largo del tiempo, a continuación vienen indicadas en la siguiente tabla:

Año Nombre Alias Comentarios
1986 SQL-86 SQL-87 Primera versión estándar de ANSI
1989 SQL-89 FIPS 127-1 Revisión menor. Añade restricciones de integridad.
1992 SQL-92 SQL2, FIPS 127-2 Actualización grande equivalente a ISO 9075
1999 SQL:1999 SQL3 Se añaden coincidencias mediante expresiones regulares, consultas recursivas, clausuras transitivas, disparadores, estructuras de control de flujo, tipos no escalares y algunas características de orientación a objetos.
2003 SQL:2003 SQL 2003 Se añaden características relacionadas con XML (la moda de la época), secuencias estandarizadas, y campos con valores auto-generados (incluyendo columnas de identidad).
2006 SQL:2006 SQL 2006 La ISO/IEC 9075-14:2006 define formas en las que SQL se puede utilizar con XML (importar y almacenar XML, manipularlo directamente en la base de datos...). Muy centrada en este aspecto concreto.
2008 SQL:2008 SQL 2008 Permite la cláusula ORDER BY fuera de las definiciones de cursores. Añade disparadores de tipo INSTEAD OF. Añade la cláusula TRUNCATE.
2011 SQL:2011  SQL 2011 Añade características de manejo de datos temporales, así como tablas versionadas en el sistema, etc...
2016 SQL:2016 SQL 2016 Añade coincidencia de patrones por filas, funciones de tabla polimórficas y JSON.
2019 SQL:2019 SQL 2019 Añade arrays multi-dimensionales.

El lenguaje SQL se divide en tres subconjuntos de instrucciones, según la funcionalidad de éstas:

  • DML (Data Manipulation Language – Lenguaje de Manipulación de Datos): se encarga de la manipulación de los datos. Es lo que usamos de manera más habitual para consultar, generar o actualizar información.
  • DDL (Data Definition Language – Lenguaje de Definición de Datos): se encarga de la manipulación de los objetos de la base de datos, por ejemplo, crear tablas u otros objetos.
  • DCL (Data Control Language – Lenguaje de Control de Datos): se encarga de controlar el acceso a los objetos y a los datos, para que los datos sean consistentes y sólo puedan ser accedidos por quien esté autorizado a ello.

El modelo relacional

El diseño de una base de datos consiste en definir la estructura que deben tener los datos en un sistema de información determinado. Para ello se suelen seguir por regla general unas fases en el proceso de diseño, definiendo para ello el modelo conceptual, el lógico y el físico.

No vamos a entrar en ello en este tutorial, pero sí veremos lo más fundamental para alcanzar nuestro objetivo: realizar consultas sobre los datos.

Si quieres arañar un poco más la superficie de este tema del diseño de bases de datos puedes leer nuestro artículo: Diseñando una base de datos en el modelo relacional.

En el modelo relacional, el diseño de la base de datos se implementa mediante lo que se conoce como diagramas de Entidad/Relación (que es el modelo conceptual de los datos). Éste se plasma en tablas y relaciones entre éstas (el llamado modelo lógico).

Este modelo relacional de bases de datos se rige por algunas normas sencillas:

  • Todos los datos se representan en forma de tablas (también llamadas "relaciones"). Incluso los resultados de consultar otras tablas. La tabla es además la unidad de almacenamiento principal.
  • Las tablas están compuestas por filas (o registros) y columnas (o campos), que almacenan la información sobre una entidad de datos concreta, y se consideran una unidad.
  • Cada tabla debe poseer una clave primaria, esto es, un identificador único de cada registro compuesto por una o más columnas.
  • Para establecer una relación entre dos tablas es necesario incluir, en forma de columna, en una de ellas la clave primaria de la otra. A esta columna se le llama clave externa.

Basándose en estos principios se diseñan las diferentes bases de datos relacionales, definiendo un diseño conceptual, que luego se implementa en el diseño físico usando para ello el gestor de bases de datos de nuestra elección.

La base de datos de ejemplo, Northwind

En este tutorial vamos a trabajar con una conocida base de datos creada por Microsoft hace muchos años como ejemplo para hacer consultas con su base de datos de escritorio llamada Access. Se trata de Northwind.

Imagen ornamental - el logotipo de Northwind creado por Microsoft

Esta base de datos modela de manera sencilla la actividad de una empresa ficticia de venta de productos alimentarios llamada "Northwind Traders". Aunque se trata de una base de datos sencilla, tiene información de todo tipo, suficiente para nuestro objetivo de aprender a realizar consultas básicas: clientes, proveedores, productos, pedidos, transportistas, empleados...

Su esquema de tablas y relaciones entre ellas es el que se puede ver a continuación:

El esquema de la base de datos Northwind

Como vemos existen tablas para representar cada una de estas entidades del mundo real: Proveedores (Suppliers), Productos, Categorías de productos, Empleados, Clientes, Transportistas (Shippers), y Pedidos (Orders) con sus correspondientes líneas de detalle (OrderDetails).

Además están relacionadas entre ellas de modo que, por ejemplo, un producto pertenece a una determinada categoría (se relacionan por el campo CategoryID) y un proveedor (SupplierID), y lo mismo con las demás tablas. Esto se representa visualmente por medio de las flechas con una llave en el extremo que ves en el diagrama anterior.

Cada tabla posee una serie de campos que representan valores que queremos almacenar para cada entidad. Por ejemplo, un producto posee los siguientes atributos que se traducen en los campos correspondientes para almacenar su información: Nombre (ProductName), Proveedor (SupplierID, que identifica al proveedor), Categoría a la que pertenece (CategoryID), Cantidad de producto por cada unidad a la venta (QuantityPerUnit), Precio unitario (UnitPrice), Unidades que quedan en stock (UnitsInStock), Unidades de ese producto que están actualmente en pedidos (UnitsOnOrder), qué cantidad debe haber para que se vuelva a solicitar más producto al proveedor (ReorderLevel) y si está descatalogado o no (Discontinued).

Los campos marcados con una llave de color amarillo (por ejemplo CategoryID o ProductID) indican aquellos que son claves primarias (o "PK"), es decir, que identifican de manera única a cada entidad. Por ejemplo, ProductID es el identificador único de cada producto, que será por regla general un número entero que se va incrementando cada vez que introducimos un nuevo producto (1, 2, 3, etc..). Ya aprenderás la importancia de disponer de este campo.

Otros campos almacenan claves primarias de otras tablas de modo que se puedan relacionar con la tabla actual. Es lo que se denominan claves foráneas o claves externas (también llamadas simplemente "FK"). Por ejemplo, en la tabla de productos el campo CategoryID, porque en él se guardará el identificador único de la categoría asociada al producto actual o SupplierID porque almacena la clave primaria para identificar al proveedor del producto.

La herramienta que utilizaremos

Imagen ornamental con los logos de SQLite y de DB Browser for SQLite

Existen infinidad de herramientas gestoras de base de datos en el mercado pensadas para todas las necesidades. Seguro que te suena el nombre de muchas de las más conocidas: SQL Server, MySQL, Oracle, MariaDB, PostgreSQL...

La mayor parte de ellas ofrecen una versión gratuita o directamente son de código abierto. Pero todas tienen sus particularidades y es necesario instalarlas y configurarlas, cargar los datos de prueba... lo cual puede hacer que se complique la cosa.

Por ello, y para simplificar el aprendizaje del lenguaje SQL estándar (que luego te servirá con cualquiera de ellas), hemos optado por utilizar un conocido sistema de bases de datos que te simplificará mucho la tarea: SQLite. De hecho, para utilizarlo con facilidad haremos uso de la herramienta SQLite Browser, que nos ofrece una interfaz de usuario para gestionar y consultar las bases de datos SQLite.

Esto nos proporciona muchas ventajas:

  • Aunque lo más fácil es instalarlo, puedes simplemente descargar un ZIP, descomprimirlo y estar funcionando en un minuto.
  • Funciona en todos los sistemas operativos: Windows, macOS, Linux... e incluso en móviles, etc... aunque para el curso usaremos siempre el escritorio.
  • Es muy pequeño y ligero por lo que podrás usarlo aunque tu ordenador sea muy viejo.
  • Además es muy compatible con el estándar SQL. Todo lo que aprendas te va a valer para luego usarlo con cualquier otro gestor de datos.

IMPORTANTE: para poder seguir este tutorial en sus próximas etapas, asegúrate de ver el vídeo del principio en el que se explica cómo poner en marcha el entorno para practicar. Debes descargar SQLite Browser así como la base de datos de ejemplo Northwind.

---

A lo largo de las próximas entregas iremos aprendiendo las partes más importantes de este lenguaje, fundamental para la práctica totalidad de los programadores, sea cual sea su trabajo.

José M. Alarcón Aguín Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín
Archivado en: Acceso a Datos

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Pingbacks and trackbacks (1)+

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.