Qué es SQL Server
Descubre qué es SQL Server, veremos evolución, sus principales características y ventajas así como un repaso a las diferentes funcionalidades que nos ofrece.
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.
Tabla de contenidos
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.
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.
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 |
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.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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';
También te puede interesar
Descubre qué es SQL Server, veremos evolución, sus principales características y ventajas así como un repaso a las diferentes funcionalidades que nos ofrece.
Prepárate para convertirte en el héroe de los datos con este curso. Si sabes lo básico de informática...