Tema 2 de 5
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.
Contenido
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.
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.
| Grupo | Para qué | Instrucciones |
|---|---|---|
| DDL · Data Definition Language | Crear, modificar y eliminar tablas y otros objetos | CREATE, ALTER, DROP, RENAME |
| DCL · Data Control Language | Gestionar permisos de acceso a los objetos | GRANT, DENY, REVOKE |
| DML · Data Manipulation Language | Consultar e insertar, modificar o eliminar filas | SELECT, 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.
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
);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.
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.
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.
-- 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;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.
| Necesidad | Instrucción | Por qué |
|---|---|---|
| Crear una tabla nueva | CREATE (DDL) | Define un objeto. |
| Añadir una columna a una tabla existente | ALTER (DDL) | Modifica la estructura. |
| Eliminar una tabla por completo | DROP (DDL) | Quita el objeto y sus filas. |
| Permitir a un usuario leer la tabla Product | GRANT (DCL) | Concede permisos. |
| Quitar un permiso concedido antes | REVOKE (DCL) | Retira un permiso existente. |
| Leer los clientes de Seattle | SELECT con WHERE (DML) | Consulta filas que cumplen un criterio. |
| Cambiar la dirección del cliente con ID 1 | UPDATE con WHERE (DML) | Modifica filas existentes. |
| Combinar pedidos con los datos de su cliente | SELECT con JOIN | Une tablas por clave externa y principal. |
❓ ¿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?
Preguntas originales, cada una con su explicación.
Empezar un simulacro