El “Stru­c­tu­red Query Language” –abreviado como SQL– es uno de los lenguajes de pro­gra­ma­ción más conocidos. SQL sirve de interfaz universal para trabajar con datos re­la­cio­na­les o sistemas de gestión de bases de datos re­la­cio­na­les (RDBMS por sus siglas en inglés: Re­la­tio­nal Database Ma­na­ge­me­nt System). El lenguaje contiene un so­r­pre­n­de­n­te número de comandos SQL. Mostramos los más im­po­r­ta­n­tes y ex­pli­ca­mos los patrones que hay detrás de ellos.

Compra y registra tu dominio ideal
  • Ce­r­ti­fi­ca­do SSL Wildcard gratis
  • Registro privado
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
Consejo

En otro artículo en­co­n­tra­rás una in­tro­du­c­ción a SQL con ejemplos que te enseña a programar con SQL.

¿Qué son los comandos SQL?

Los comandos SQL ordenan a un sistema de gestión de bases de datos (DBMS por sus siglas en inglés: Database Ma­na­ge­me­nt Systems) que realice de­te­r­mi­na­das acciones. Esto incluye definir tablas y sus es­tru­c­tu­ras, así como in­tro­du­cir, modificar y eliminar datos y ejecutar consultas.

El alcance que tienen los comandos SQL viene definido en varias normas ISO o ANSI. Además, hay una serie de dialectos de im­ple­me­n­ta­ción es­pe­cí­fi­cos. Por ejemplo, las im­ple­me­n­ta­cio­nes de los pri­n­ci­pa­les fa­bri­ca­n­tes como Po­s­t­gre­S­QL, MySQL, Oracle DBMS y Microsoft SQL Server traen cada uno sus propias variantes del lenguaje. Algunos tienen sus propios comandos; la mayoría, difieren al menos respecto a las funciones para procesar strings y otros datos.

De hecho, SQL consta de varios su­ble­n­gua­jes; cada uno de ellos cubre di­fe­re­n­tes áreas y cuenta con sus propios comandos. Veamos los tipos de comandos SQL más im­po­r­ta­n­tes.

¿Qué tipos de comandos SQL existen?

Los comandos SQL más im­po­r­ta­n­tes pueden dividirse, a grandes rasgos, en cinco su­ble­n­gua­jes. Veamos los ámbitos de apli­ca­ción de cada uno de los su­ble­n­gua­jes y sus comandos re­s­pe­c­ti­vos:

Su­ble­n­gua­je SQL Comandos Ejemplos
Data De­fi­ni­tion Language (DDL) Comandos para definir el esquema de la base de datos: crear, modificar y eliminar tablas de la base de datos; definir claves primarias, claves externas y li­mi­ta­cio­nes (co­n­s­trai­nts). CREATE TABLE, DROP TABLE
Data Ma­ni­pu­la­tion Language (DML) Comandos de ma­ni­pu­la­ción de datos: modificar, insertar y eliminar registros. INSERT, UPDATE
Data Query Language (DQL) Comandos para consultar y aco­n­di­cio­nar los datos. SELECT
Data Control Language (DCL) Comandos para la gestión de derechos. GRANT, REVOKE
Tra­nsac­tion Control Language (TCL) Comandos para el control de las tra­n­sac­cio­nes. COMMIT, ROLLBACK

¿Cuál es la sintaxis básica de los comandos SQL?

A di­fe­re­n­cia de los lenguajes de pro­gra­ma­ción más comunes, SQL es un lenguaje de­cla­ra­ti­vo. Esto significa que describe el resultado que debe al­ca­n­zar­se sin es­pe­ci­fi­car exac­ta­me­n­te qué pasos deben llevarse a cabo para lograrlo. Esta ca­ra­c­te­rí­s­ti­ca especial del lenguaje se refleja en su tendencia a que los comandos sean más largos; a cambio, a menudo se requieren menos líneas de código que con los lenguajes im­pe­ra­ti­vos co­n­ve­n­cio­na­les.

Como ejemplo ilu­s­tra­ti­vo, nos remitimos al siguiente comando SQL: DROP TABLE IF EXISTS. Has leído bien, es un comando que se utiliza úni­ca­me­n­te para eliminar una tabla si ya existe:

DROP TABLE IF EXISTS SomeTable;

Un código de ejemplo en Python con una fu­n­cio­na­li­dad similar incluye varias so­li­ci­tu­des a funciones y consta de una extensión mayor a dos líneas:

if db.has_table(some_table):
    db.drop_table(some_table)

Como se ha visto, un solo comando SQL puede estar compuesto por varias palabras clave. Esto lleva a una apa­rie­n­cia similar entre dichos comandos. He aquí un ejemplo: Los comandos SQL CREATE TABLE y CREATE OR REPLACE VIEW parecen a primera vista ex­pre­sio­nes derivadas y su­bo­r­di­na­das de un comando hi­po­té­ti­co CREATE. Sin embargo, este no es el caso. A pesar de su similitud, se trata de comandos in­de­pe­n­die­n­tes.

Al igual que en otros lenguajes, algunos comandos SQL admiten pa­rá­me­tros adi­cio­na­les. Suelen ser nombres de bases de datos, tablas o columnas. Por ejemplo, so­li­ci­ta­mos las columnas “Name” y “Age” de la tabla “People”:

SELECT Name, Age FROM People;
Nota

Los comandos SQL como SELECT y CREATE TABLE suelen es­cri­bi­r­se todo en ma­yú­s­cu­las. Sin embargo, en la realidad SQL no distingue entre ma­yú­s­cu­las y mi­nú­s­cu­las. No es más que una co­n­ve­n­ción muy extendida.

En el sentido estricto de la palabra, los comandos SQL son se­n­te­n­cias. A mayores, hay otras co­n­s­tru­c­cio­nes si­n­tá­c­ti­cas, algunas de las cuales actúan como comandos. Te mostramos una visión general de los elementos más im­po­r­ta­n­tes que conforman la sintaxis SQL:

Término Equi­va­le­n­te en inglés Ex­pli­ca­ción Ejemplo
Sentencia Statement Ordena al DBMS que realice una acción; termina con un punto y coma CREATE TABLE People;
Cláusula Clause Modifica una in­s­tru­c­ción; solo puede aparecer dentro de una in­s­tru­c­ción WHERE, HAVING
Expresión Ex­pre­s­sion Retorna un valor al ser evaluada 6 * 7
Ide­n­ti­fi­ca­dor Ide­n­ti­fier Nombre de un objeto, variable o pro­ce­di­mie­n­to de la base de datos; puede ser cua­li­fi­ca­do o no cua­li­fi­ca­do dbname.tablename / tablename
Predicado Predicate Expresión que se evalúa como TRUE, FALSE o UNKNOWN Age < 42
Consulta Query In­s­tru­c­ción especial; retorna un conjunto de registros como resultado SELECT Name FROM People WHERE Age < 42;
Función Function Procesa uno o más valores; no­r­ma­l­me­n­te crea un nuevo valor UPPER('text') -- Devuelve 'TEXT'
Co­me­n­ta­rio Comment Se utiliza para hacer co­me­n­ta­rios en el código SQL; el RDBMS lo ignora -- Co­me­n­ta­rio al final de la línea / /* Si es necesario, co­me­n­ta­rio de varias líneas */

Resumen de los comandos SQL más im­po­r­ta­n­tes

Las bases de datos es­tru­c­tu­ran los datos dentro de una jerarquía de capas de al­ma­ce­na­mie­n­to, desde el servidor de la base de datos hasta el valor al­ma­ce­na­do en un campo. Dado que todos los aspectos de un sistema de gestión de bases de datos re­la­cio­na­les (RDBMS) pueden co­n­tro­lar­se mediante SQL, existen comandos SQL para cada una de las capas. Te mostramos una visión general de la jerarquía de los objetos RDBMS:

Objeto RDBMS Contiene
Servidor Bases de datos
Base de datos Tablas
Tabla Registros
Registro Campos
Campo Valores ti­pi­fi­ca­dos

Además de los objetos RDBMS pri­n­ci­pa­les me­n­cio­na­dos an­te­rio­r­me­n­te, también se utilizan otros objetos como las vistas (“Views”) y los pro­ce­di­mie­n­tos al­ma­ce­na­dos (“Stored Pro­ce­du­res”). Estos también tienen sus propios comandos SQL. A co­n­ti­nua­ción, nos ade­n­tra­re­mos en los comandos de los cinco su­ble­n­gua­jes pri­n­ci­pa­les de SQL:

  1. Data De­fi­ni­tion Language (DDL) – Lenguaje de de­fi­ni­ción de datos
  2. Data Ma­ni­pu­la­tion Language (DML) – Lenguaje de ma­ni­pu­la­ción de datos
  3. Data Query Language (DQL) – Lenguaje de solicitud de datos
  4. Data Control Language (DCL) – Lenguaje de control de datos
  5. Tra­nsac­tion Control Language (TCL) – Lenguaje de control de tra­n­sac­cio­nes

Comandos SQL para definir datos

Estos comandos SQL se utilizan para definir es­tru­c­tu­ras de datos. Como tal, todos ellos operan sobre objetos agregados tales como bases de datos, tablas e índices. Un objeto agregado se utiliza para almacenar varios registros; un registro contiene varios campos, cada uno de los cuales está asociado a una columna. La columna define el tipo de dato del campo como, por ejemplo, número, cadena, booleano, etc. Además, para una columna se pueden definir li­mi­ta­cio­nes como que “debe ser única”, que “no debe ser nula”, etc.

Comandos SQL para definir las bases de datos

En el nivel más alto de un sistema de gestión de bases de datos re­la­cio­na­les (RDBMS) se en­cue­n­tran las bases de datos. Estos pueden ser creados y eli­mi­na­dos por el siguiente comando SQL:

Comando SQL Ex­pli­ca­ción Ejemplo
CREATE DATABASE Crea una nueva base de datos CREATE DATABASE Store;
DROP DATABASE Borra una base de datos al completo DROP DATABASE Store;
USE Se­le­c­cio­na la base de datos para el siguiente comando USE Store;

Comandos SQL para definir tablas

La co­n­s­tru­c­ción de una base de datos comienza con la de­fi­ni­ción del esquema de la base de datos. El esquema es la base para un uso eficiente de la base de datos y requiere un diseño cuidadoso que mapee las tablas in­di­vi­dua­les y sus re­la­cio­nes entre sí. No­r­ma­l­me­n­te, el esquema de la base de datos se de­sa­rro­lla a partir de diagramas de Entity Relation (ER) o diagramas UML es­pe­cia­les.

Si el esquema de la base de datos está di­s­po­ni­ble como una de­s­cri­p­ción abstracta, la es­tru­c­tu­ra de la base de datos se construye uti­li­za­n­do los comandos SQL co­rre­s­po­n­die­n­tes. Se definen las tablas con sus columnas y tipos; los enlaces entre las tablas se realizan mediante “Foreign Keys” (claves externas). La es­tru­c­tu­ra puede mo­di­fi­car­se po­s­te­rio­r­me­n­te eje­cu­ta­n­do otros comandos SQL. Mostramos un resumen de los comandos más im­po­r­ta­n­tes:

Comando SQL Ex­pli­ca­ción Ejemplo
CREATE TABLE Crea una nueva tabla en la base de datos; además del nombre de la tabla, se definen los nombres de las columnas junto con sus tipos CREATE TABLE Customers ( Cu­s­to­me­rID INT UNSIGNED NOT NULL AUTO_INCREMENT, Cu­s­to­me­r­Na­me VARCHAR(255) NOT NULL, Country VARCHAR(60) NOT NULL, PRIMARY KEY (Cu­s­to­me­rID) );
ALTER TABLE Modifica una tabla existente: añade/elimina columnas; cambia el tipo o el nombre de una columna ALTER TABLE Customers ADD Email VARCHAR(50);
TRUNCATE TABLE Elimina todos los registros de una tabla; conserva la es­tru­c­tu­ra de la tabla en el proceso TRUNCATE TABLE Customers;
DROP TABLE Elimina la tabla por completo; genera un error al eje­cu­tar­se si la tabla no existe DROP TABLE Customers;
DROP TABLE IF EXISTS Elimina la tabla si existe DROP TABLE IF EXISTS Customers;
ALTER COLUMN Cambia el tipo de dato de una columna existente ALTER TABLE Customers ALTER COLUMN Email VARCHAR(255);
DROP COLUMN Borra la columna de una tabla al completo ALTER TABLE customers DROP COLUMN Email;
CREATE INDEX Crea un índice para la(s) columna(s) de una tabla existente y le asigna un nombre CREATE INDEX IdxEmail ON Customers (Email);
DROP INDEX Elimina un índice existente ALTER TABLE Customers DROP INDEX IdxEmail;

Una ca­ra­c­te­rí­s­ti­ca im­po­r­ta­n­te de un sistema de gestión de bases de datos (DBMS) es la de asegurar la co­he­re­n­cia de los datos. Por ejemplo, se puede exigir que los campos co­n­te­ni­dos en las columnas no queden vacíos o que los valores que estos contengan estén dentro de unos límites pe­r­mi­ti­dos. Se trata de lo que se conoce como co­n­s­trai­nts (es. “li­mi­ta­cio­nes”). Además, los Foreign Keys (“claves externas”) pueden uti­li­zar­se para ase­gu­rar­se de que los vínculos entre las tablas se crean co­rre­c­ta­me­n­te.

Se utilizan varias cláusulas dentro de las se­n­te­n­cias de de­fi­ni­ción de datos para es­ta­ble­cer las li­mi­ta­cio­nes de cada columna. Te las me­n­cio­na­mos a co­n­ti­nua­ción sin ejemplos:

Comando SQL Ex­pli­ca­ción
NOT NULL Establece que el valor del campo no pueda ser NULL
UNIQUE Establece que el valor del campo dentro de la columna no puede aparecer dos veces
DEFAULT Establece un valor por defecto para el campo; de esta forma, si no se es­pe­ci­fi­ca ningún valor para el campo se utilizará el valor por defecto al crear el registro.
CHECK Establece una condición que el valor del campo debe cumplir
PRIMARY KEY Es­pe­ci­fi­ca que el campo contiene la clave primaria; esto implica UNIQUE y NOT NULL
FOREIGN KEY Establece que el valor del campo debe ser una clave primaria de otra tabla

Comandos SQL para la ma­ni­pu­la­ción de datos

Si las tablas de una base de datos ya están definidas, lo siguiente son las ope­ra­cio­nes sobre los registros de datos in­di­vi­dua­les. Uti­li­za­n­do los comandos SQL adecuados, se pueden insertar, modificar y eliminar registros de datos. Crear, leer, ac­tua­li­zar y eliminar se conocen como las ope­ra­cio­nes CRUD básicas (“Create, Read, Update, Delete”), que también se pueden encontrar en las bases de datos NoSQL:

Comando SQL Ex­pli­ca­ción Ejemplo
INSERT INTO Inserta un registro en la tabla INSERT INTO Customers (Cu­s­to­me­r­Na­me) VALUES('Tester');
UPDATE Modifica los campos de uno o varios registros UPDATE Customers SET Email = 'test@example.com' WHERE Cu­s­to­me­r­Na­me = 'Tester';
DELETE FROM Elimina registros de una tabla DELETE FROM Customers WHERE Cu­s­to­me­r­Na­me = 'Tester';

Cabe señalar que las cláusulas o funciones “WHERE”, “SET” y “VALUES” que aparecen en los ejemplos también pueden en­co­n­trar­se en otros contextos. Sin embargo, a pesar de tener el mismo nombre, pueden aplicarse normas li­ge­ra­me­n­te di­fe­re­n­tes para su uso. Ten cuidado cuando uses los comandos SQL UPDATE y DELETE FROM sin una cláusula WHERE, dado que se mo­di­fi­ca­rían o eli­mi­na­rían todos los registros de datos de la tabla.

Comandos SQL para consultar datos

El comando SQL SELECT es pro­ba­ble­me­n­te el más conocido del lenguaje. Se utiliza para consultar los datos de la base de datos. Por lo general, el stock de datos no se modifica con él. Por lo tanto, los analistas suelen tener acceso al comando SELECT. Veamos los co­m­po­ne­n­tes básicos del comando SQL SELECT:

Comando SQL Ex­pli­ca­ción Ejemplo
SELECT Consulta datos de la base de datos SELECT Cu­s­to­me­r­Na­me FROM Customers;
WHERE Limita la consulta a los registros que cumplen un de­te­r­mi­na­do criterio SELECT Email FROM Customers WHERE Cu­s­to­me­r­Na­me = 'Tester';
AS Define un alias para una tabla o fila durante una consulta SELECT Cu­s­to­me­rID AS ID, Cu­s­to­me­r­Na­me AS Customer FROM Customers;
HAVING Limita la consulta a los conjuntos de datos pe­r­ti­ne­n­tes con la función de agre­ga­ción SELECT COUNT(Cu­s­to­me­rID), Country FROM Customers HAVING COUNT(Cu­s­to­me­rID) >= 1;

Aunque SELECT es solo un comando SQL para consultar datos, puede uti­li­zar­se de diversas maneras. Hay una serie de cláusulas que sirven para filtrar, ordenar y resumir los datos fa­ci­li­ta­dos. Vamos a ana­li­zar­los a co­n­ti­nua­ción.

Comandos SQL para refinar las consultas

El comando SQL SELECT retorna un de­te­r­mi­na­do Result Set (es. “conjunto de re­su­l­ta­dos”). Teó­ri­ca­me­n­te, un Result Set puede co­n­si­de­rar­se como una tabla con columnas que contienen valores. En la práctica, a menudo es necesario filtrar u ordenar los re­su­l­ta­dos o limitar el número de registros obtenidos. Todos estos casos de uso tienen cláusulas co­rre­s­po­n­die­n­tes que se pueden utilizar dentro del comando SQL SELECT:

Comando SQL Ex­pli­ca­ción Ejemplo
DISTINCT Elimina los du­pli­ca­dos del conjunto de re­su­l­ta­dos SELECT DISTINCT Country FROM Customers;
LIMIT Restringe el conjunto de re­su­l­ta­dos a los primeros re­su­l­ta­dos SELECT * FROM Customers LIMIT 5;
GROUP BY Agrupa el conjunto de re­su­l­ta­dos según una ca­ra­c­te­rí­s­ti­ca común SELECT Cu­s­to­me­r­Na­me, Country FROM Customers GROUP BY Country;
ORDER BY Ordena el conjunto de re­su­l­ta­dos según una ca­ra­c­te­rí­s­ti­ca SELECT Cu­s­to­me­r­Na­me, Email FROM Customers SORT BY Cu­s­to­me­r­Na­me;
ASC Utiliza el orden as­ce­n­de­n­te (“ascending”) SELECT DISTINCT Country FROM Customers SORT BY Country ASC;
DESC Utilizar el orden de­s­ce­n­de­n­te (“de­s­ce­n­di­ng”) SELECT DISTINCT Country FROM Customers SORT BY Country DESC;

Comandos SQL para unir consultas

Además de refinar el conjunto de re­su­l­ta­dos, es posible unir las consultas en varias tablas. Recuerda: un comando SQL SELECT retorna un conjunto de re­su­l­ta­dos. Por lo tanto, SQL contiene estos comandos que permiten unir dos conjuntos de re­su­l­ta­dos según las reglas de la teoría de conjuntos re­la­cio­na­les.

Para explicar en detalle los comandos SQL para unir consultas, son ne­ce­sa­rios ejemplos más complejos con varias tablas ya definidas. Por ello, en este caso vamos a pre­s­ci­n­dir del código de ejemplo. Veamos las ope­ra­cio­nes de conjunto más im­po­r­ta­n­tes:

Comando SQL Ex­pli­ca­ción
UNION Combina dos conjuntos de re­su­l­ta­dos; los conjuntos de re­su­l­ta­dos deben tener columnas del mismo tipo en el mismo orden. Sus filas están unidas.
INNER JOIN Filtra dos conjuntos de re­su­l­ta­dos según un criterio común
LEFT JOIN Vincula el conjunto de re­su­l­ta­dos de la consulta de la izquierda con los re­su­l­ta­dos coin­ci­de­n­tes de la consulta de la derecha; los campos no coin­ci­de­n­tes se fijan como NULL.
RIGHT JOIN Vincula el conjunto de re­su­l­ta­dos de la consulta de la derecha con los re­su­l­ta­dos que coinciden de la consulta de la izquierda; los campos que no coinciden se fijan como NULL.
FULL OUTER JOIN Combina el LEFT JOIN y el RIGHT JOIN

Comandos SQL para guardar y repetir consultas

Como hemos visto, las consultas SQL pueden ser bastante complejas y, en la práctica, suele tener sentido repetir algunas consultas. En un principio, es posible guardar los comandos SQL co­rre­s­po­n­die­n­tes como código e im­po­r­tar­los cuando sea necesario. Sin embargo, esto no es muy eficaz. Afo­r­tu­na­da­me­n­te existen comandos SQL es­pe­cia­les con los que se pueden guardar consultas complejas como una unidad di­re­c­ta­me­n­te en el sistema de gestión de bases de datos (DBMS).

Veamos primero las vistas, “views” en inglés. Una vista en la base de datos co­rre­s­po­n­de apro­xi­ma­da­me­n­te a una consulta al­ma­ce­na­da. Re­co­r­de­mos: una consulta retorna un conjunto de re­su­l­ta­dos en forma de tabla y, en lugar de de­s­ca­r­tar­los, los guardamos como una vista. Es por ello por lo que las vistas también se denominan “tablas virtuales”. Por regla general, una vista solo puede ser leída. Hay varios comandos SQL para trabajar con las vistas:

Comando SQL Ex­pli­ca­ción Ejemplo
CREATE VIEW Crea una nueva vista CREATE VIEW Spa­ni­sh­Cu­s­to­me­rs AS SELECT Cu­s­to­me­r­Na­me, Email FROM Customers WHERE Country = "ES";
ALTER VIEW Modifica una vista existente ALTER VIEW Spa­ni­sh­Cu­s­to­me­rs AS SELECT * FROM Customers WHERE Country = "ES";
CREATE OR REPLACE VIEW Crea una nueva vista o sustituye una vista existente, si procede. CREATE OR REPLACE VIEW Spa­ni­sh­Cu­s­to­me­rs AS SELECT * FROM Customers WHERE Country = "ES";
SHOW CREATE VIEW Muestra el comando SQL utilizado para crear una vista SHOW CREATE VIEW Spa­ni­sh­Cu­s­to­me­rs;
DROP VIEW Elimina una vista existente DROP VIEW Spa­ni­sh­Cu­s­to­me­rs;

Además de las vistas de la base de datos, existen los “pro­ce­di­mie­n­tos al­ma­ce­na­dos” (Stored Pro­ce­du­res). Los pro­ce­di­mie­n­tos al­ma­ce­na­dos se utilizan para ejecutar consultas re­pe­ti­da­me­n­te y son más complejos que las vistas. Estos te permiten utilizar pa­rá­me­tros y unir consultas de forma dinámica. Además, un pro­ce­di­mie­n­to al­ma­ce­na­do permite tener acceso a escribir los datos en cuestión. A co­n­ti­nua­ción, te ofrecemos un resumen de los comandos SQL más re­le­va­n­tes, sin ejemplos por razones de espacio:

Comando SQL Ex­pli­ca­ción
CREATE PROCEDURE Crea un nuevo pro­ce­di­mie­n­to
ALTER PROCEDURE Modifica un pro­ce­di­mie­n­to existente
CREATE OR REPLACE PROCEDURE Crea un nuevo pro­ce­di­mie­n­to o sustituye un pro­ce­di­mie­n­to existente, si procede.
DROP PROCEDURE Elimina un pro­ce­di­mie­n­to existente
CALL Ejecuta un pro­ce­di­mie­n­to al­ma­ce­na­do

El uso de pro­ce­di­mie­n­tos al­ma­ce­na­dos traslada el código del cliente al servidor. Esto implica una se­pa­ra­ción de re­s­po­n­sa­bi­li­da­des que se traduce en una mayor seguridad y un mejor re­n­di­mie­n­to. La de­s­ve­n­ta­ja puede ser que el “Business Logic” de un pro­ce­di­mie­n­to al­ma­ce­na­do se encuentra fuera del sistema de control de versiones. Dado que los pro­ce­di­mie­n­tos al­ma­ce­na­dos dependen en gran medida del DBMS que los contiene, un cambio de proveedor puede, en el peor de los casos, llevar a una pérdida de fu­n­cio­na­li­dad.

Nota

No hay que confundir los pro­ce­di­mie­n­tos al­ma­ce­na­dos con los conocidos Prepared Sta­te­me­nts. Ambos me­ca­ni­s­mos sirven para aumentar la seguridad. Sin embargo, los Prepared Sta­te­me­nts se definen en la parte de la apli­ca­ción del cliente.

Comandos SQL para el control de acceso

Un único servidor de bases de datos puede contener varias bases de datos. Se utilizan me­ca­ni­s­mos de control de acceso para gestionar las bases de datos de forma in­de­pe­n­die­n­te. Por ejemplo, se puede definir para cada usuario los derechos con los que puede acceder a las bases de datos y a las tablas co­n­te­ni­das dentro de estas. Además, se pueden definir grupos de usuarios y ad­ju­di­car­les usuarios concretos a estos. Pri­n­ci­pa­l­me­n­te se utilizan dos comandos SQL:

Comando SQL Ex­pli­ca­ción Ejemplo
GRANT Asignar derechos GRANT ALL ON SomeDB.* TO 'john'@'lo­ca­lho­s­t';
REVOKE Quitar derechos REVOKE INSERT ON *.* FROM 'john'@'lo­ca­lho­s­t';

Comandos SQL para controlar tra­n­sac­cio­nes

Una de las ventajas de utilizar sistemas de gestión de bases de datos re­la­cio­na­les (RDBMS) es que se ga­ra­n­ti­zan las pro­pie­da­des “ACID”. En de­fi­ni­ti­va, esto garantiza que los datos estén siempre ordenados y bien definidos. A nivel técnico, se utilizan las llamadas tra­n­sac­cio­nes, que son una “atomic operation” in­di­vi­si­ble (“operación atómica”). Una tra­n­sac­ción puede co­m­ple­tar­se ín­te­gra­me­n­te y sin errores, o bien producir un error que deshace in­di­vi­dua­l­me­n­te todos los pasos an­te­rio­res para devolver el conjunto de datos a su estado inicial. Veamos los comandos SQL para el control de las tra­n­sac­cio­nes:

Comando SQL Ex­pli­ca­ción Ejemplo
START TRA­NSAC­TION Marca el inicio de una tra­n­sac­ción START TRA­NSAC­TION;
COMMIT Completa con éxito una tra­n­sac­ción ya iniciada START TRA­NSAC­TION; TRUNCATE TABLE Customers; COMMIT;
ROLLBACK Cancela una tra­n­sac­ción pre­via­me­n­te iniciada y devuelve el conjunto de datos a su estado inicial START TRA­NSAC­TION; TRUNCATE TABLE Customers; ROLLBACK;
SAVEPOINT Crea un punto de guardado durante una tra­n­sac­ción y le asigna un nombre START TRA­NSAC­TION; SAVEPOINT Be­fo­reA­d­d­Da­ta;
ROLLBACK TO Volver a un punto de guardado indicando su nombre ROLLBACK TO Be­fo­reA­d­d­Da­ta;

Un resumen de las pro­pie­da­des ACID me­n­cio­na­das an­te­rio­r­me­n­te:

Propiedad ACID Equi­va­le­n­te en español Ex­pli­ca­ción
Atomicity Ato­mi­ci­dad Las tra­n­sac­cio­nes son “in­di­vi­si­bles”. Se ejecutan de forma completa o no se ejecutan en absoluto. Si se cancela una tra­n­sac­ción atómica, el sistema se encuentra en el estado anterior al inicio de la tra­n­sac­ción.
Co­n­si­s­te­n­cy Co­n­si­s­te­n­cia Tras ejecutar una tra­n­sac­ción, el stock de datos vuelve a estar di­s­po­ni­ble de forma co­n­si­s­te­n­te.
Isolation Ai­s­la­mie­n­to Las ope­ra­cio­nes rea­li­za­das al mismo tiempo no deben influirse mu­tua­me­n­te.
Du­ra­bi­li­ty Du­ra­bi­li­dad Los efectos de una tra­n­sac­ción deben quedar de forma pe­r­ma­ne­n­te en el stock de datos. Los efectos de una tra­n­sac­ción exitosa no deben perderse si, por ejemplo, el RDBMS se bloquea.
Consejo

Ancla el Digital Guide a tu barra de tareas de Windows. De este modo, siempre tendrás a mano nuestros artículos para poder co­n­su­l­tar­los. Aquí te ex­pli­ca­mos cómo hacerlo anclar una página de Internet a la barra de tareas de Windows en Windows 11.

Ir al menú principal