T4 - SQL Flashcards
(29 cards)
ANTECEDENTES ¿Qué significa SQL
? ¿Para qué sirve?
Structured Query Language
- Es un lenguaje con el que podemos realizar consultas a bases de datos
relacionales
- Permite crear, modificar, eliminar y consultar datos
ANTECEDENTES ¿Cuál es el estándar de SQL
?
- El estándar oficial es
ISO/IEC 9075
- Define cómo debe funcionar el lenguaje
SQL
- Asegura compatibilidad entre distintos sistemas de bases de datos
ANTECEDENTES ¿Qué significa que SQL
es un lenguaje de 4ª generación (4GL
)?
- Significa que es un lenguaje más cercano al humano que al código máquina
- Es un lenguaje declarativo: tú dices qué quieres obtener, no cómo hacerlo
-
No
necesitasescribir los pasos
uno a uno (como en un lenguajeimperativo
) - El sistema se encarga de decidir la mejor forma de ejecutar la consulta
ANTECEDENTES ¿Qué significa y para qué sirve SQL/PSM
?
- Significa Persistent Stored Modules
- Es una extensión del estándar
SQL
- Permite usar procedimientos almacenados, bloques de código, variables y estructuras de control
- Hace que
SQL
tenga también capacidadesprocedimentales
(es decir, puedes programar paso a paso con condicionales y bucles como en otros lenguajes)
ANTECEDENTES ¿Qué son los procedimientos almacenados
? ¿Quién y dónde se ejecutan?
- Son bloques de código SQL que se guardan
dentro
de la base de datos - Se pueden ejecutar cuando se necesiten, como una función
- Sirven para automatizar tareas repetitivas y centralizar lógica de negocio
- Pueden incluir variables, condicionales y bucles
- Las ejecuta el propio intérprete que funciona como gestor de base de datos
ANTECEDENTES ¿Cuáles son los productos de SQL
de distintas empresas?
-
Oracle
→ Oracle Database -
Microsoft
→ SQL Server / Transact-SQL -
IBM
→ DB2, Informix -
PostgreSQL Global Dev. Group
→ PostgreSQL -
MySQL AB / Oracle
→ MySQL -
MariaDB Foundation
→ MariaDB -
SQLite Consortium
→ SQLite - ##
SAP
→ MaxDB
ANTECEDENTES ¿Qué puertos usan por defecto los productos de SQL
más conocidos?
-
Oracle Database
→ 1521 -
SQL Server
(Microsoft) → 1433 -
DB2
(IBM) → 50000 -
Informix
(IBM) → 1526 -
PostgreSQL
→ 5432 -
MySQL
/MariaDB
→ 3306 -
SQLite
→ ❌ No usa puerto (es una base de datos local, sin servidor) -
MaxDB
(SAP) → 7210 (aunque puede variar según configuración)
LENGUAJE SQL ¿De qué tratan los sublenguajes de SQL y qué significan las letras D, M, L y C?
-
DML
: Manipula los datos ya existentes en las tablas (consultar, insertar, borrar, modificar) -
DDL
: Define o modifica la estructura de la base de datos (crear o eliminar tablas, columnas, etc.) -
DCL
: Gestiona el acceso y los permisos sobre los datos o estructuras
🧠Las letras significan:
- D
→ Data (datos)
- M
→ Manipulation
- L
→ Language
- C
→ Control
SUBLENGUAJE DDL
¿Cuáles son las sentencias más importantes de DDL
según su estándar?
🧠 DDL
→ Define o modifica la estructura de la base de datos (crear o eliminar tablas, columnas, etc.)
Sentencias principales:
- CREATE
: crear objetos
- DROP
: eliminar objetos
- ALTER
: modificar objetos
Objetos que se pueden definir con DDL:
- TABLE
: tabla
- INDEX
: índice para buscar algo de forma eficiente
- VIEW
: consulta ya preparada de forma sencilla
- PROCEDURE
: procedimiento almacenado o rutina
- SEQUENCE
: generador automático de valores numéricos
- FUNCTION
: como un PROCEDURE
pero devuelve un valor
- TYPE
: definición de tipos personalizados
- TRIGGER
: disparadores o rutinas que reaccionan ante eventos
- DOMAIN
: dominios de valores válidos para una columna
- SCHEMA
: agrupación de objetos por temática
- ROLE
: manera de agrupar usuarios
SUBLENGUAJE DDL
¿Cuál es la particularidad de la sentencia ALTER TABLE
en el modelo DDL
? Explica cada una
- La sentencia
ALTER TABLE
permite modificar la estructura de una tabla ya creada -
ADD COLUMN
: añade una nueva columna- Se puede usar con
SET DEFAULT
,SET NOT NULL
, y especificar el tipo de dato
- Se puede usar con
-
ALTER COLUMN
: permite cambiar propiedades de una columna existente -
DROP COLUMN
: elimina una columna de la tabla -
ADD CONSTRAINT
: añade una restricción (comoPRIMARY KEY
,FOREIGN KEY
, etc.)
⚠️ No existe la sentencia MODIFY
en SQL estándar
SUBLENGUAJE DML
¿Cuáles son las sentencias más importantes de DML según su estándar?
🧠 DML
→ Manipula los datos ya existentes en las tablas (consultar, insertar, borrar, modificar)
Sentencias principales:
- SELECT
: consulta datos de una tabla
- UPDATE
: modifica registros existentes
- INSERT
: añade nuevos registros
- DELETE
: elimina registros existentes
- MERGE
: combina operaciones de INSERT
y UPDATE
según una condición
SUBLENGUAJE DML
LENGUAJE SQL ¿Para qué sirven las funciones de AGREGADO
o funciones matemáticas
en SELECT
en DML
?
- Las funciones de agregado permiten realizar cálculos sobre un conjunto de registros en una consulta SELECT
- Se aplican sobre columnas numéricas o agrupadas para obtener valores resumen
Funciones comunes:
- SUM()
: suma los valores de una columna
- COUNT()
: cuenta el número de filas (o valores no nulos si se indica una columna)
- MAX()
/ MIN()
: devuelve el valor máximo o mínimo
- AVG()
: calcula la media
Ejemplos:
- SELECT SUM(precio) FROM productos
→ Devuelve la suma total de la columna precio
- SELECT COUNT(*) FROM empleados
→ Devuelve el número total de empleados (filas)
- SELECT MAX(salario) FROM empleados
→ Devuelve el salario más alto
- SELECT AVG(edad) FROM clientes
→ Calcula la edad media de los clientes
⚠️ COUNT(columna)
no cuenta los valores NULL
SUBLENGUAJE DML
¿Qué detalles importantes hay en UPDATE
y en el orden de cláusulas en una consulta SELECT
en DML
?
:- UPDATE tabla SET col1 = val1, col2 = val2 WHERE condición
Se puede asignar:
- un valor por defecto (DEFAULT
)
- un valor nulo (NULL
)
- el resultado de otra consulta (subquery)
SELECT columnas FROM tabla
:
- WHERE
: filtra registros (AND
/ NOT
/ OR
)
- GROUP BY
: agrupa registros por una o varias columnas
- HAVING
: filtra los grupos después de agrupar
- ORDER BY
: ordena el resultado (ASC
/ DESC
)
etc
SUBLENGUAJE DML
¿Cuál es el orden recomendado de sentencias operacionales
en SQL?
Orden recomendado de ejecución por el motor SQL:
1º FROM
: indica de qué tabla o tablas se obtienen los datos
2º WHERE
: filtra filas según una condición
3º GROUP BY
: agrupa las filas que tienen valores iguales en una o varias columnas
4º HAVING
: filtra los grupos obtenidos por GROUP BY
5º SELECT
: selecciona las columnas o expresiones que se mostrarán
6º ORDER BY
: ordena el resultado
7º LIMIT
: limita la cantidad de resultados que se muestran
Ejemplo explicado:SELECT ciudad, COUNT(*) FROM clientes WHERE pais = 'España' GROUP BY ciudad HAVING COUNT(*) > 1 ORDER BY ciudad LIMIT 5
-
FROM clientes
: toma la tabla clientes -
WHERE pais = 'España'
: filtra solo los de España -
GROUP BY ciudad
: agrupa por ciudad -
HAVING COUNT(*) > 1
: filtra ciudades con más de 1 cliente -
SELECT ciudad, COUNT(*)
: selecciona las columnas a mostrar -
ORDER BY ciudad
: ordena alfabéticamente por ciudad -
LIMIT 5
: solo muestra los 5 primeros resultados
⚠️ Estas sentencias forman parte del sublenguaje DML
, ya que se usan para trabajar con los datos, no con la estructura de la base de datos (que sería DDL
).
SUBLENGUAJE DML
Explica los elementos de subconsulta
Las subconsultas se usan dentro de otras sentencias para hacer filtros avanzados.
-
WHERE EXISTS (...)
: comprueba si la subconsulta devuelve al menos una fila (devuelve TRUE o FALSE) -
WHERE [NOT] IN (...)
: filtra si el valor está (o no) dentro del conjunto devuelto por la subconsulta -
WHERE ... <operador> ANY / SOME / ALL (...)
:- Compara un valor con todos (ALL) o alguno (ANY / SOME) de los resultados de una subconsulta
Operadores comunes:
- =
igual
- >=
mayor o igual
- <
menor
- <>
distinto
DML
- JOINTS ¿Cuáles son los tipos de JOINS
en SQL y qué hacen?
-
CROSS JOIN
: combina todas las filas de ambas tablas (producto cartesiano) -
INNER JOIN
: muestra solo las filas que coinciden en ambas tablas -
LEFT [OUTER] JOIN
: muestra todas las filas de la tabla izquierda, aunque no haya coincidencias -
RIGHT [OUTER] JOIN
: muestra todas las filas de la tabla derecha, aunque no haya coincidencias -
FULL [OUTER] JOIN
: muestra todas las filas de ambas tablas, coincidan o no
SUBLENGUAJE DCL
* ¿Cuáles son las sentencias más importantes de DCL
y TCL
?
🧠 DCL
→ Gestiona el acceso y los permisos sobre los datos o estructuras
- GRANT
: dar permisos a usuarios o aplicaciones
- REVOKE
: quitar permisos previamente concedidos
-
TCL
→ Es considerado parte deDCL
porque controla lo que se guarda o no tras una serie de operaciones -
SET TRANSACTION
/START TRANSACTION
: configura o comienza una transacción atómica -
COMMIT
: consolida los cambios hechos en la transacción y permite comenzar una nueva transacción -
ROLLBACK
: deshace todos los cambios si hay un fallo -
SAVEPOINT
: marca un punto de seguridad parcial, para no deshacer todo
🧠 Transacción: Conjunto de sentencias que se ejecutan como una unidad atómica: o todo se realiza, o nada se guarda
DML - UNIONES
¿Qué son las sentencias UNION
y UNION ALL
?
UNION
y UNION ALL
sirven para combinar los resultados de dos o más consultas SQL
(añaden filas debajo de otras, como apilar resultados)
-
UNION
: elimina los duplicados entre los resultados -
UNION ALL
: mantiene todas las filas, incluso las duplicadas
⚠️ Las consultas combinadas deben tener:
- El mismo número de columnas
- El mismo tipo de datos en el mismo orden
Ejemplo:
SELECT nombre FROM empleados_2023
UNION
SELECT nombre FROM empleados_2024
→ Muestra una lista de nombres sin duplicados
SELECT nombre FROM empleados_2023
UNION ALL
SELECT nombre FROM empleados_2024
→ Muestra todos los nombres, incluso los repetidos
DML
- JOINTS Ejemplos de JOINS
INNER JOIN
SELECT * FROM empleados INNER JOIN departamentos
ON empleados.dep_id = departamentos.id
→ Muestra solo los empleados con un departamento asignado
LEFT JOIN
SELECT * FROM empleados LEFT JOIN departamentos
ON empleados.dep_id = departamentos.id
→ Muestra todos los empleados, incluso si no tienen departamento
RIGHT JOIN
SELECT * FROM empleados RIGHT JOIN departamentos
ON empleados.dep_id = departamentos.id
→ Muestra todos los departamentos, incluso si no tienen empleados
FULL JOIN
SELECT * FROM empleados FULL JOIN departamentos
ON empleados.dep_id = departamentos.id
→ Muestra todos los empleados y todos los departamentos
CROSS JOIN
SELECT * FROM empleados CROSS JOIN departamentos
→ Combina cada empleado con cada departamento (combinación total)
SUBLENGUAJE DCL
¿Qué particularidades tienen las sentencias GRANT
y REVOKE
en DCL
?
GRANT
:
- Otorga permisos de acceso o acciones sobre objetos de la base de datos a usuarios o roles
- Permisos comunes:
- SELECT
: permite consultar datos
- UPDATE
: permite modificar datos
- INSERT
, DELETE
, EXECUTE
, etc.
- ALL
: otorga todos los privilegios disponibles sobre el objeto
- USAGE
: permite utilizar un objeto sin modificarlo (muy usado en SEQUENCES
, SCHEMAS
o DOMAINS
)
- Puede incluir la cláusula WITH GRANT OPTION
:
- Permite al usuario conceder a otros los mismos permisos que recibió
REVOKE
:
- Retira permisos previamente concedidos
- Si el permiso fue dado con WITH GRANT OPTION
, también se revocan los permisos que ese usuario haya dado a otros
SUBLENGUAJE DCL
¿Cuál es la diferencia entre GRANT ON
y GRANT TO
en DCL
?
-
GRANT ... ON
: se usa para especificar el objeto sobre el que se otorgan los permisos- Ejemplo:
GRANT SELECT ON empleados
- Ejemplo:
-
GRANT ... TO
: se usa para especificar el usuario o rol al que se le conceden los permisos- Ejemplo:
GRANT SELECT ON empleados TO juan
- Ejemplo:
LENGUAJE SQL ¿Cuáles son las 4 restricciones (constraints) principales en SQL?
Sirven para garantizar la integridad y la validez de los datos en las tablas.
-
PRIMARY KEY
: identifica de forma única cada fila -
FOREIGN KEY
: asegura que un valor exista en otra tabla (relación entre tablas) -
UNIQUE
: obliga a que los valores de una columna no se repitan
(puede haber un soloNULL
permitido) -
CHECK
: restringe los valores que se pueden insertar (por ejemplo:edad > 0
)
LENGUAJE SQL ¿En qué se diferencian DELETE
y TRUNCATE
?
DELETE
:
- Elimina filas una a una
- Es transaccional: se puede deshacer con ROLLBACK
- Cada cambio se guarda en los logs
de la base de datos
- ⚠️ Si el log se llena (tiene un tamaño máximo), puede dar error
TRUNCATE
:
- Borra todas las filas de golpe
- No se puede recuperar con ROLLBACK
- No guarda cambios en el log fila a fila
- Borra directamente las páginas (bloques físicos de almacenamiento donde se guardan las filas)
- Es más rápido, pero también más destructivo
COMANDOS ¿Qué sentencia se usa en SQL para poner un alias
a una columna?
- Se usa la palabra clave
AS
para asignar un alias a una columna - El alias es un nombre temporal que aparecerá en los resultados
- También se puede usar sin
AS
(solo con espacio)