Brains4Cloud
ESEN
Practicar

Tema 2 de 5

D2 · Datos relacionales en Azure

Instrucciones SQL

SQL es el idioma con el que se habla con una base de datos relacional. El examen de fundamentos no pide escribir consultas complejas, pero sí reconocer qué hace cada instrucción y a qué grupo pertenece: DDL, DCL o DML. Es una de las preguntas más repetidas.

¿Qué es SQL?

Structured Query Language es el lenguaje estándar de los sistemas de gestión de bases de datos relacionales. Sus instrucciones sirven para actualizar datos, recuperarlos y casi cualquier otra tarea sobre la base de datos.

Lo usan, entre otros, Microsoft SQL Server, Azure SQL Database, Azure SQL Managed Instance, SQL Server en máquinas virtuales de Azure, MySQL, PostgreSQL y Oracle.

Estándar y dialectos

SQL lo estandarizó el ANSI en 1986 y la ISO en 1987, y el estándar se ha ampliado varias veces. Además, cada fabricante añade extensiones propias (seguridad, programación de procedimientos y desencadenadores), lo que ha dado lugar a dialectos:

Transact-SQL (T-SQL)

SQL Server, Azure SQL Database, Azure SQL Managed Instance y SQL Server en VM de Azure.

PL/pgSQL

Dialecto procedimental de PostgreSQL.

PL/SQL

Dialecto de Oracle (Procedural Language/SQL).

Copilot en Azure permite hacer preguntas sobre una base de Azure SQL Database y generar consultas T-SQL en lenguaje natural.

GrupoPara quéInstrucciones
DDL · Data Definition LanguageCrear, modificar y eliminar tablas y otros objetosCREATE, ALTER, DROP, RENAME
DCL · Data Control LanguageGestionar permisos de acceso a los objetosGRANT, DENY, REVOKE
DML · Data Manipulation LanguageConsultar e insertar, modificar o eliminar filasSELECT, INSERT, UPDATE, DELETE

Para recordarlo

DDL = la estructura (Definition). DCL = quién puede (Control). DML = los datos de las filas (Manipulation). El administrador de bases de datos usa sobre todo DCL.

DDL: definir objetos

Crea, modifica y elimina objetos de la base de datos: tablas, procedimientos almacenados, vistas…

CREATE TABLE Product
(
    ID INT PRIMARY KEY,
    Name VARCHAR(20) NOT NULL,
    Price DECIMAL NULL
);
  • Entre paréntesis va cada columna: nombre, tipo de dato, si es obligatoria (NOT NULL) y si identifica la fila (PRIMARY KEY).
  • Cada tabla debería tener clave principal, aunque SQL no lo obliga.
  • Tipos habituales: INT (entero), DECIMAL (decimal) y VARCHAR (texto de longitud variable).

Cuidado con DROP

DROP elimina el objeto de forma permanente. Al borrar una tabla se pierden todas sus filas; sin copia de seguridad, no se recuperan.

DCL: controlar el acceso

Los administradores la usan para conceder, denegar o revocar permisos a usuarios o grupos.

GRANT

Concede permiso para acciones concretas

DENY

Deniega permiso para acciones concretas

REVOKE

Quita un permiso concedido antes

GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;

Este ejemplo permite a user1 leer, insertar y modificar datos de la tabla Product.

DML: manipular filas

SELECT

Leer filas

INSERT

Insertar filas nuevas

UPDATE

Modificar filas existentes

DELETE

Eliminar filas

Por defecto, SELECT, UPDATE y DELETE se aplican a todas las filas de la tabla. Normalmente se añade una cláusula WHERE con un criterio, para que solo afecten a las filas que lo cumplen.

Consultas con SELECT

-- Todas las columnas de los clientes de Seattle
SELECT *
FROM Customer
WHERE City = 'Seattle';

-- Solo algunas columnas, ordenadas por apellido
SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;

-- Unir pedidos y clientes por la clave
SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM [Order] AS o
JOIN Customer AS c
ON o.Customer = c.ID;
  • * selecciona todas las columnas; también se pueden listar solo las necesarias.
  • Sin ORDER BY, las filas no salen en ningún orden concreto.
  • JOIN indica cómo se conectan las filas de dos tablas; lo habitual es emparejar una clave externa con su clave principal. Los alias (o, c) abrevian los nombres.
  • ORDER es palabra reservada en T-SQL, por eso el nombre de la tabla va entre corchetes.

INSERT, UPDATE y DELETE

UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;

DELETE FROM Product
WHERE ID = 162;

INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);

Sin WHERE, a todas las filas

SQL no pregunta «¿está seguro?». Un UPDATE sin WHERE modifica todas las filas, y un DELETE sin WHERE las elimina todas.

INSERT inserta una fila por defecto; algunos dialectos, como T-SQL, permiten varias listas de valores para añadir varias filas en una sola instrucción.

Escenarios de examen

NecesidadInstrucciónPor qué
Crear una tabla nuevaCREATE (DDL)Define un objeto.
Añadir una columna a una tabla existenteALTER (DDL)Modifica la estructura.
Eliminar una tabla por completoDROP (DDL)Quita el objeto y sus filas.
Permitir a un usuario leer la tabla ProductGRANT (DCL)Concede permisos.
Quitar un permiso concedido antesREVOKE (DCL)Retira un permiso existente.
Leer los clientes de SeattleSELECT con WHERE (DML)Consulta filas que cumplen un criterio.
Cambiar la dirección del cliente con ID 1UPDATE con WHERE (DML)Modifica filas existentes.
Combinar pedidos con los datos de su clienteSELECT con JOINUne tablas por clave externa y principal.

Trampas frecuentes del examen

❓ ¿SELECT es una instrucción DDL?

No. SELECT es DML: manipula (consulta) filas.

❓ ¿GRANT pertenece a DML?

No. GRANT, DENY y REVOKE son DCL, para controlar permisos.

❓ ¿Qué grupo incluye CREATE, ALTER y DROP?

DDL, que define la estructura de los objetos.

❓ ¿Qué pasa si ejecuto DELETE FROM Product sin WHERE?

Se eliminan todas las filas de la tabla. SQL no pide confirmación.

❓ ¿Qué dialecto usa Azure SQL Database?

Transact-SQL (T-SQL), igual que SQL Server y SQL Managed Instance.

❓ ¿Las filas de un SELECT salen ordenadas por defecto?

No. Para ordenarlas hay que añadir ORDER BY.

❓ ¿DROP TABLE y DELETE hacen lo mismo?

No. DROP (DDL) elimina la tabla entera; DELETE (DML) elimina filas y la tabla sigue existiendo.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

Un administrador quiere que un usuario deje de poder modificar la tabla Product, retirando un permiso que le dio antes. ¿Qué instrucción usa y a qué grupo pertenece?

¿Listo para poner a prueba "Instrucciones SQL"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro