SQL Flashcards

(484 cards)

1
Q

¿Quién desarrolló el lenguaje precursor de SQL y cómo se llamaba?

A

Donald D. Chamberlin y Raymond F. Boyce en IBM, originalmente llamado SEQUEL (Structured English Query Language).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿En qué año se publicó el primer estándar oficial de SQL (SQL-86)?

A

En 1986 por el ANSI (American National Standards Institute).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cuál fue la principal aportación de SQL-89?

A

Introdujo la integridad referencial (claves foráneas) y las restricciones de integridad (check constraints).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué versión de SQL introdujo los JOINS (INNER, LEFT, RIGHT), el comando CASE y la gestión de errores?

A

SQL-92 (también conocido como SQL2).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué niveles de cumplimiento del estándar definía el estándar SQL-92?

A

Entry, Intermediate y Full (siendo ‘Entry’ el mínimo exigido para ser compatible).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Qué versión de SQL introdujo los tipos de datos objeto, triggers y funciones recursivas?

A

SQL:1999 (también conocido como SQL3).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cuál fue la gran novedad de SQL:2003 respecto al intercambio de datos?

A

La integración y soporte nativo para XML (SQL/XML) y el comando MERGE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Qué versión de SQL introdujo las funciones de ventana (Window Functions) como RANK() o ROW_NUMBER()?

A

SQL:2003 (aunque se refinaron en versiones posteriores).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué aportó SQL:2008 al lenguaje?

A

Soporte para la instrucción ‘INSTEAD OF’ en triggers y mejoras en el manejo de colecciones (arrays).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué es SQL:2011 y qué característica temporal introdujo?

A

Introdujo datos temporales (tablas que guardan el historial de cambios según periodos de tiempo).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué versión de SQL añadió el soporte para documentos JSON?

A

SQL:2016 (permitiendo buscar y manipular JSON dentro de columnas de texto).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué es SQL:2023 y qué gran cambio estructural incluye?

A

Es la versión más reciente y destaca por introducir SQL/PGQ (Property Graph Queries) para consultar bases de datos orientadas a grafos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué relación hay entre el estándar ISO/IEC 9075 y SQL?

A

9075 es el número de la norma internacional ISO que define el lenguaje SQL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cuál es la diferencia entre SQL estático y SQL dinámico?

A

Estático: la sentencia se conoce en tiempo de compilación. Dinámico: la sentencia se construye y ejecuta en tiempo de ejecución.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué significa que SQL sea un lenguaje declarativo (no procedimental)?

A

Significa que el usuario especifica QUÉ datos quiere obtener, no CÓMO debe el motor buscarlos físicamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Cuál es el puerto TCP por defecto de Oracle Database y quién es su desarrollador?

A

1521 / Oracle Corporation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué puerto comparten MySQL y MariaDB por defecto?

A

El puerto TCP 3306.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Cuál es el puerto estándar de Microsoft SQL Server para su instancia por defecto?

A

El puerto TCP 1433.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué puerto utiliza PostgreSQL para las conexiones entrantes?

A

El puerto TCP 5432.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Cuál es el puerto característico de IBM DB2?

A

El puerto TCP 50000.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Qué puerto TCP utiliza SQLite?

A

Ninguno. SQLite no es cliente-servidor; es una base de datos basada en un archivo local (serverless).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿A qué empresa pertenece el RDBMS SQL Server?

A

A Microsoft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué empresa gestiona actualmente MySQL tras la adquisición de Sun Microsystems?

A

Oracle Corporation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Cuál es el puerto por defecto de SAP HANA?

A

El puerto TCP 30015.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué puerto suele utilizar el sistema Teradata?
El puerto TCP 1025.
26
¿Qué servicio de Microsoft SQL Server usa el puerto UDP 1434?
El servicio 'SQL Server Browser' (para localizar instancias con nombre).
27
¿Quién desarrolla PostgreSQL?
PostgreSQL Global Development Group (es una comunidad de código abierto).
28
¿Qué RDBMS es considerado un 'fork' (derivado) de MySQL creado por su autor original?
MariaDB.
29
¿Cuál es el puerto por defecto de Firebird (otro RDBMS común en exámenes)?
El puerto TCP 3050.
30
¿Cómo se llama el proceso de Oracle que escucha en el puerto 1521?
Oracle TNS Listener.
31
¿Qué significan las siglas ACID?
Atocimidad (Atomicity), Consistencia (Consistency), Aislamiento (Isolation) y Durabilidad (Durability).
32
¿En qué consiste la propiedad de Atomicidad?
Garantiza que una transacción se realiza por completo o no se realiza en absoluto ('todo o nada').
33
¿Qué sucede si una transacción falla a mitad de su ejecución según la Atomicidad?
Se debe realizar un ROLLBACK para devolver la base de datos al estado previo al inicio de la transacción.
34
¿Qué define la propiedad de Consistencia?
Asegura que una transacción solo lleve a la base de datos de un estado válido a otro, respetando todas las reglas de integridad (constraints).
35
¿Qué garantiza el Aislamiento (Isolation)?
Que la ejecución concurrente de transacciones no afecte al resultado de cada una; cada transacción debe parecer que se ejecuta sola.
36
¿Cuál es el nivel de aislamiento más estricto según el estándar SQL?
Serializable (las transacciones se ejecutan como si fueran secuenciales).
37
¿Qué asegura la propiedad de Durabilidad?
Garantiza que, una vez confirmada una transacción (COMMIT), los cambios persistirán incluso si hay un fallo de energía o del sistema.
38
¿Qué mecanismo técnico suele usarse para garantizar la Durabilidad?
El registro de transacciones o log (Transaction Log / Write-Ahead Logging).
39
¿Qué propiedad ACID se ve comprometida si permitimos 'Lecturas Sucias' (Dirty Reads)?
El Aislamiento (Isolation).
40
¿Qué es un 'COMMIT' en el contexto ACID?
La operación que finaliza con éxito una transacción, haciendo que los cambios sean permanentes y visibles para otros.
41
¿Qué es un 'ROLLBACK' en el contexto ACID?
La operación que deshace todos los cambios de una transacción incompleta para preservar la Atomicidad.
42
¿Qué propiedad ACID garantiza que el saldo de una cuenta no sea negativo si existe una restricción CHECK?
La Consistencia (Consistency).
43
¿Qué propiedad se encarga de gestionar los bloqueos (locks) en la base de datos?
El Aislamiento (Isolation).
44
¿Qué diferencia hay entre Consistencia y Atomicidad?
La Atomicidad se ocupa de que la operación termine; la Consistencia de que los datos resultantes sean válidos según las reglas.
45
¿En qué tipo de bases de datos es común relajar las propiedades ACID a favor del rendimiento?
En las bases de datos NoSQL (que suelen seguir el teorema CAP y el modelo BASE).
46
¿Qué significan las siglas DDL?
Data Definition Language (Lenguaje de Definición de Datos).
47
¿Cuál es el propósito principal del DDL?
Definir, modificar y eliminar la estructura de los objetos de la base de datos (tablas, índices, vistas, etc.).
48
¿Sobre qué nivel del esquema actúa el DDL?
Sobre el esquema o metadatos de la base de datos (la 'caja' donde van los datos).
49
¿Qué significan las siglas DML?
Data Manipulation Language (Lenguaje de Manipulación de Datos).
50
¿Cuál es el objetivo principal del DML?
Gestionar los datos que residen dentro de las estructuras: consultar, insertar, modificar o borrar registros.
51
¿Cuál es la diferencia filosófica entre DDL y DML?
El DDL define el continente (la estructura) y el DML gestiona el contenido (los datos).
52
¿Qué significan las siglas DCL?
Data Control Language (Lenguaje de Control de Datos).
53
¿Cuál es la función del DCL?
Controlar el acceso y la seguridad de la base de datos mediante la gestión de permisos y privilegios.
54
¿A quién va dirigido principalmente el uso del DCL?
Principalmente a los Administradores de Bases de Datos (DBA) para gestionar la seguridad de los usuarios.
55
¿Qué sublenguaje de SQL se encarga de crear el diccionario de datos?
El DDL.
56
¿Qué sublenguaje se utiliza cuando un usuario realiza una consulta para un informe?
El DML (específicamente la parte de consulta, a veces llamada DQL).
57
¿En qué sublenguaje se definen las restricciones de integridad (como claves primarias)?
En el DDL, ya que forman parte de la definición de la estructura.
58
¿Qué sublenguaje se encarga de que un usuario 'A' no pueda ver las tablas del usuario 'B'?
El DCL.
59
¿Qué acción típica representa al DDL?
Alterar la estructura de una tabla para añadir una nueva columna.
60
¿Qué acción típica representa al DML?
Actualizar el precio de todos los productos de una categoría.
61
¿Cuáles son las dos sentencias principales que forman el DCL?
GRANT y REVOKE.
62
¿Cuál es la función de la sentencia GRANT?
Conceder privilegios o permisos de acceso a un usuario o rol sobre objetos de la base de datos.
63
¿Cuál es la función de la sentencia REVOKE?
Retirar o eliminar privilegios que fueron concedidos previamente a un usuario o rol.
64
¿Qué es un 'Privilegio de Sistema' en DCL?
El permiso para realizar acciones a nivel de base de datos (ej. conectarse, crear tablas).
65
¿Qué es un 'Privilegio de Objeto' en DCL?
El permiso para realizar acciones sobre un objeto específico (ej. hacer SELECT sobre la tabla 'Empleados').
66
¿Qué es un 'Rol' en el contexto de DCL?
Un conjunto de privilegios agrupados que se pueden asignar a múltiples usuarios para simplificar la gestión.
67
¿Qué permite la cláusula 'WITH GRANT OPTION' al usar un GRANT?
Permite que el usuario que recibe el permiso pueda, a su vez, conceder ese mismo permiso a otros usuarios.
68
¿Qué sucede con los permisos si se borra un usuario de la base de datos?
Sus privilegios asociados se eliminan automáticamente del diccionario de datos.
69
¿Se pueden aplicar sentencias DCL sobre columnas específicas de una tabla?
Sí, es posible conceder permisos (como UPDATE) solo para columnas determinadas.
70
¿A quién se refiere el usuario especial 'PUBLIC' en una sentencia DCL?
A todos los usuarios actuales y futuros de la base de datos.
71
¿Qué es el 'Principio del Menor Privilegio' en seguridad de bases de datos?
La política de conceder a los usuarios únicamente los permisos mínimos necesarios para realizar su trabajo.
72
¿Qué diferencia hay entre REVOKE y DROP USER?
REVOKE quita permisos específicos; DROP USER elimina al usuario por completo del sistema.
73
¿Qué comando se utiliza para anular un 'WITH GRANT OPTION' concedido previamente?
Se utiliza REVOKE del privilegio específico, lo que suele provocar una revocación en cascada.
74
¿Quién puede ejecutar sentencias DCL por defecto?
El propietario del objeto (owner) o los usuarios con rol de Administrador de Base de Datos (DBA).
75
¿Qué sublenguaje de SQL permite auditar quién ha usado qué permisos?
Aunque el DCL gestiona los permisos, la auditoría suele ser una característica adicional del SGBD o parte del DDL de seguridad.
76
¿Cuál es el propósito principal del TCL?
Administrar los cambios realizados por las sentencias DML para garantizar las propiedades ACID.
77
¿Qué sentencia TCL hace que los cambios de una transacción sean permanentes?
COMMIT.
78
¿Qué sentencia TCL deshace todos los cambios realizados en la transacción actual?
ROLLBACK.
79
¿Qué es un SAVEPOINT?
Un punto de control intermedio dentro de una transacción que permite deshacer cambios parcialmente.
80
¿Cómo se vuelve a un punto específico sin cancelar toda la transacción?
Mediante la sentencia ROLLBACK TO SAVEPOINT [nombre_punto].
81
¿Cuándo comienza técnicamente una transacción en SQL?
Con la ejecución de la primera sentencia DML o explícitamente con BEGIN TRANSACTION (según el RDBMS).
82
¿Qué ocurre con una transacción abierta si se produce una desconexión anormal del cliente?
El SGBD realiza un ROLLBACK automático por seguridad.
83
¿Qué ocurre si ejecutas una sentencia DDL (como CREATE) en medio de una transacción DML en muchos SGBD?
Se produce un 'Implicit Commit' (los cambios pendientes se confirman automáticamente).
84
¿Cuál es la relación entre TCL y la propiedad de Atomicidad?
El TCL permite que un conjunto de operaciones sea tratado como una única unidad de trabajo (todo o nada).
85
¿Qué sentencia TCL se usa para definir el nivel de aislamiento de la transacción?
SET TRANSACTION ISOLATION LEVEL.
86
¿A partir de qué momento son visibles los cambios de una transacción para otros usuarios?
Solo después de ejecutar la sentencia COMMIT.
87
¿Qué diferencia hay entre ROLLBACK y DELETE?
DELETE borra datos de una tabla (DML); ROLLBACK deshace operaciones de la memoria antes de que sean permanentes (TCL).
88
¿Se puede hacer un ROLLBACK después de haber ejecutado un COMMIT?
No. Una vez ejecutado el COMMIT, los cambios son persistentes y el TCL ya no puede deshacerlos.
89
¿Qué es el 'Autocommit'?
Un modo de funcionamiento donde cada sentencia SQL individual se confirma (COMMIT) automáticamente tras ejecutarse.
90
¿En qué propiedad ACID influye directamente el uso de COMMIT?
En la Durabilidad (garantiza que el cambio persiste).
91
¿Cuáles son las tres sentencias 'reinas' del DDL?
CREATE, ALTER y DROP.
92
¿Cuál es la función principal de la sentencia CREATE?
Crear nuevos objetos en la base de datos (tablas, vistas, índices, esquemas, etc.).
93
¿Para qué se utiliza la sentencia ALTER?
Para modificar la estructura de un objeto ya existente (añadir columnas, cambiar tipos de datos o modificar restricciones).
94
¿Qué acción realiza la sentencia DROP?
Elimina de forma permanente un objeto y su estructura de la base de datos.
95
¿Qué hace la sentencia TRUNCATE y en qué se diferencia de un DELETE?
Elimina todos los registros de una tabla pero mantiene su estructura; es DDL (más rápido y no genera tanto log de transacciones).
96
¿Qué sentencia DDL se utiliza para eliminar el contenido de una tabla pero no la tabla en sí?
TRUNCATE TABLE.
97
¿Qué sentencia se usa para cambiar el nombre de un objeto en el estándar SQL?
RENAME (aunque en muchos SGBD se usa ALTER TABLE ... RENAME TO).
98
¿En qué sublenguaje se definen las restricciones (CONSTRAINTS) como PRIMARY KEY o UNIQUE?
En el DDL, habitualmente dentro de CREATE TABLE o ALTER TABLE.
99
¿Qué sucede con los datos de una tabla si ejecutas un DROP TABLE?
Los datos se pierden permanentemente junto con la estructura de la tabla.
100
¿Qué significa que las sentencias DDL suelen ser 'Autocommit'?
Significa que una vez ejecutadas, los cambios se confirman automáticamente en el disco sin necesidad de un COMMIT manual.
101
¿Se puede añadir una restricción NOT NULL a una columna que ya tiene nulos mediante DDL?
No, la operación fallará a menos que primero se limpien o actualicen esos valores nulos.
102
¿Qué objeto DDL se crea para acelerar la velocidad de las consultas de búsqueda?
El índice (INDEX).
103
¿Qué es una VISTA (VIEW) desde el punto de vista del DDL?
Es una 'tabla virtual' definida por una consulta almacenada en el diccionario de datos.
104
¿Qué comando DDL permite añadir un comentario a la definición de una tabla?
COMMENT ON TABLE (o COMMENT ON COLUMN).
105
¿Cómo se denomina al conjunto de tablas que almacenan las definiciones creadas por DDL?
Diccionario de Datos o Catálogo del Sistema.
106
¿Qué es una TABLE (Tabla) en el contexto de DDL?
Es el objeto básico de almacenamiento que organiza los datos en filas (tuplas) y columnas (atributos).
107
¿Para qué sirve un INDEX (Índice)?
Para acelerar la recuperación de datos mediante una estructura que permite búsquedas rápidas sin recorrer toda la tabla.
108
¿Qué es una VIEW (Vista)?
Una tabla virtual cuyo contenido es el resultado de una consulta SELECT almacenada; no almacena datos físicamente.
109
¿Cuál es la función de un STORED PROCEDURE (Procedimiento Almacenado)?
Es un conjunto de instrucciones SQL y lógica de programación que se guarda en el servidor para realizar tareas complejas.
110
¿Para qué se utiliza una SEQUENCE (Secuencia)?
Para generar automáticamente una lista de números únicos, generalmente utilizados para valores de claves primarias.
111
¿Qué es una FUNCTION (Función) y en qué se diferencia del procedimiento?
Es un objeto que realiza un cálculo y SIEMPRE devuelve un valor (o conjunto de valores), pudiendo usarse dentro de un SELECT.
112
¿Qué define el objeto TYPE (Tipo de dato)?
Define la estructura y el formato de los datos que puede almacenar una columna (pueden ser simples o tipos de objeto complejos).
113
¿Qué es un TRIGGER (Disparador)?
Un objeto que ejecuta automáticamente un bloque de código cuando ocurre un evento específico (INSERT, UPDATE o DELETE) en una tabla.
114
¿Para qué sirve el objeto DOMAIN (Dominio)?
Para crear un tipo de dato personalizado con restricciones (CHECK) y valores por defecto ya definidos, reutilizable en varias columnas.
115
¿Qué representa un SCHEMA (Esquema)?
Un contenedor lógico que agrupa objetos de la base de datos (tablas, vistas, etc.) pertenecientes a un mismo usuario o aplicación.
116
¿Qué es un ROLE (Rol)?
Un objeto que agrupa un conjunto de privilegios para ser asignados a usuarios, facilitando la administración de la seguridad.
117
¿Qué objeto DDL permite implementar integridad referencial 'activa' mediante código personalizado?
El TRIGGER.
118
¿Qué objeto permite simplificar consultas complejas ocultando la unión de varias tablas tras un solo nombre?
La VIEW (Vista).
119
¿Cuál es la principal ventaja de usar una SEQUENCE frente a calcular el máximo manualmente?
Garantiza la unicidad y el orden incluso en entornos con múltiples usuarios concurrentes.
120
¿Qué objeto es necesario para organizar los permisos por perfiles de trabajo (ej. Administrador, Consulta)?
El ROLE (Rol).
121
¿Cuáles son las cuatro operaciones fundamentales del DML (conocidas como CRUD)?
SELECT, INSERT, UPDATE y DELETE.
122
¿Cuál es la función de la sentencia SELECT (DQL)?
Recuperar o consultar datos de una o más tablas basándose en criterios específicos.
123
¿Para qué se utiliza la sentencia INSERT?
Para añadir nuevas filas o registros de datos a una tabla existente.
124
¿Qué acción realiza la sentencia UPDATE?
Modifica los valores de los datos existentes en una o más filas de una tabla.
125
¿Cuál es el propósito de la sentencia DELETE?
Eliminar una o más filas de una tabla basándose en una condición (sin borrar la estructura).
126
¿Qué ocurre si ejecutas un UPDATE o DELETE sin la cláusula WHERE?
Se aplica la operación a TODAS las filas de la tabla (acción potencialmente peligrosa).
127
¿Qué es una 'Subconsulta' en el contexto del DML?
Es una sentencia SELECT anidada dentro de otra sentencia (SELECT, INSERT, UPDATE o DELETE).
128
¿Qué sentencia DML permite insertar datos a partir de los resultados de una consulta?
INSERT INTO ... SELECT.
129
¿Qué hace la sentencia MERGE (introducida en SQL:2003)?
Realiza una operación 'Upsert': inserta registros si no existen o los actualiza si ya están presentes.
130
¿Cuál es la diferencia entre TRUNCATE (DDL) y DELETE (DML) respecto al log?
DELETE genera registros individuales en el log de transacciones (permite rollback parcial); TRUNCATE registra solo la liberación de espacio.
131
¿Qué cláusula del SELECT se utiliza para filtrar los resultados de las filas?
La cláusula WHERE.
132
¿Cómo se llama a la capacidad del DML para combinar datos de múltiples tablas relacionadas?
JOIN (Junta o Unión).
133
¿En qué se diferencia el DML del DDL respecto a la permanencia automática?
A diferencia del DDL, el DML suele requerir un COMMIT manual (TCL) para que los cambios sean permanentes (dependiendo del modo Autocommit).
134
¿Qué cláusula se utiliza en un SELECT para eliminar filas duplicadas en el resultado?
DISTINCT.
135
¿Qué sentencia se usa para 'vaciar' una tabla pero pudiendo deshacer la acción con un ROLLBACK?
La sentencia DELETE (ya que TRUNCATE no suele permitir marcha atrás en todos los SGBD).
136
¿Qué garantiza la restricción PRIMARY KEY en una columna?
Identifica de forma única cada fila y prohíbe estrictamente los valores nulos (NOT NULL implícito).
137
¿Cuál es la función de la restricción UNIQUE?
Garantiza que todos los valores de una columna sean diferentes, pero, a diferencia de la PK, suele permitir valores nulos.
138
¿Qué permite definir la restricción CHECK?
Una condición lógica (booleana) que cada valor de la columna debe cumplir para ser insertado (ej. 'edad >= 18').
139
¿Qué relación establece la restricción FOREIGN KEY?
Vincula una columna con la clave primaria de otra tabla, garantizando la integridad referencial.
140
¿Puede una tabla tener más de una restricción UNIQUE?
Sí, pero solo puede tener una única PRIMARY KEY.
141
¿Qué sucede si intentas insertar un valor que viola una restricción CHECK?
El SGBD rechaza la operación y devuelve un error, manteniendo el dato anterior intacto.
142
¿Qué restricción prohíbe que existan 'hijos huérfanos' en una relación?
La restricción FOREIGN KEY (Integridad Referencial).
143
¿En qué se diferencia una PRIMARY KEY de una columna con UNIQUE y NOT NULL?
Funcionalmente son similares, pero la PK es el identificador principal definido para el catálogo y solo puede haber una.
144
¿Puede una FOREIGN KEY apuntar a una columna que no sea PRIMARY KEY?
Sí, siempre que la columna destino tenga una restricción UNIQUE.
145
¿Qué valor especial suele 'saltarse' la validación de una restricción CHECK en muchos SGBD?
El valor NULL (a menos que se añada una restricción NOT NULL explícita).
146
¿Qué significa la integridad referencial en cascada (ON DELETE CASCADE)?
Que si se borra una fila en la tabla padre, se borrarán automáticamente todas las filas relacionadas en la tabla hija.
147
¿Cómo se llama la restricción que asegura que una columna siempre tenga un valor si no se especifica uno?
DEFAULT (aunque técnicamente es un valor por defecto, a menudo se estudia junto a las restricciones).
148
¿Se pueden aplicar restricciones a nivel de tabla (varias columnas) en lugar de solo a una columna?
Sí, es obligatorio cuando la clave (PK o UNIQUE) es compuesta por varios atributos.
149
¿Qué restricción se utiliza para validar que el formato de un email sea correcto mediante una expresión?
La restricción CHECK.
150
¿Qué ocurre con una FOREIGN KEY si la fila referenciada en el padre intenta cambiar su valor de ID?
Dependerá de la regla definida: ON UPDATE CASCADE (cambia el hijo) o ON UPDATE RESTRICT (prohíbe el cambio).
151
¿Cuál es la sintaxis básica para crear una tabla con una clave primaria simple?
CREATE TABLE nombre_tabla (columna1 tipo_dato PRIMARY KEY, ...);
152
¿Cómo se define una clave primaria compuesta en DDL?
Se debe definir a nivel de tabla: PRIMARY KEY (columna1, columna2) al final de la lista de columnas.
153
¿Qué cláusula se añade a una columna para que se rellene automáticamente si el usuario no aporta un valor?
La cláusula DEFAULT (ej. fecha_alta DATE DEFAULT CURRENT_DATE).
154
¿Qué comando DDL permite modificar el tipo de dato de una columna existente?
ALTER TABLE nombre_tabla MODIFY columna nuevo_tipo (en Oracle/MySQL) o ALTER COLUMN (en SQL Server/PostgreSQL).
155
¿Cómo se elimina una columna de una tabla mediante DDL?
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna;
156
¿Qué opción de la sentencia DROP TABLE elimina también las restricciones de integridad referencial que apuntan a ella?
DROP TABLE nombre_tabla CASCADE CONSTRAINTS;
157
¿Qué diferencia hay entre una restricción a nivel de columna y a nivel de tabla?
La de columna se define junto al tipo de dato; la de tabla permite involucrar a varias columnas (necesario para claves compuestas).
158
¿Qué comando DDL se usa para añadir una clave foránea a una tabla ya creada?
ALTER TABLE nombre_tabla ADD CONSTRAINT nombre_fk FOREIGN KEY (col) REFERENCES tabla_padre(col_padre);
159
¿Para qué sirve la opción IF NOT EXISTS en un CREATE TABLE?
Para evitar que la sentencia devuelva un error si la tabla ya existe en la base de datos.
160
¿Qué ocurre con los índices asociados a una tabla cuando esta se elimina con DROP TABLE?
Los índices se eliminan automáticamente junto con la tabla.
161
¿Qué comando permite renombrar una tabla en el estándar SQL?
ALTER TABLE nombre_actual RENAME TO nuevo_nombre;
162
¿Se puede cambiar una columna de NULL a NOT NULL si la tabla ya tiene datos?
Solo si no existen valores nulos actuales en esa columna; de lo contrario, la sentencia ALTER fallará.
163
¿Qué es una 'Tabla Temporal' en DDL?
Una tabla cuya estructura es persistente o temporal, pero cuyos datos se eliminan automáticamente al finalizar la sesión o la transacción.
164
¿Qué cláusula se usa en CREATE TABLE para crear una tabla con la misma estructura y datos que otra?
AS SELECT (ej. CREATE TABLE copia AS SELECT * FROM original).
165
¿Qué significa el estado 'UNUSABLE' o 'DISABLED' aplicado a una restricción mediante ALTER TABLE?
Significa que la restricción sigue definida en el diccionario pero el SGBD no la valida al insertar o modificar datos.
166
¿Qué comando DDL vacía una tabla reiniciando los contadores de secuencias (identity) asociados?
TRUNCATE TABLE nombre_tabla (en muchos SGBD es la opción por defecto).
167
¿Cómo se añade un comentario a una tabla para que aparezca en el diccionario de datos?
COMMENT ON TABLE nombre_tabla IS 'Descripción del contenido';
168
¿Qué es la cláusula 'ON DELETE SET NULL' en una definición de tabla?
Una regla de integridad referencial que pone a nulo la clave ajena del hijo si se borra el registro del padre.
169
¿Qué diferencia hay entre DROP TABLE y TRUNCATE TABLE?
DROP elimina la estructura y los datos; TRUNCATE solo elimina los datos manteniendo la estructura intacta.
170
¿Qué comando se usa para habilitar una restricción que estaba desactivada?
ALTER TABLE nombre_tabla ENABLE CONSTRAINT nombre_restriccion;
171
¿Cuál es la sintaxis básica para crear una vista?
CREATE VIEW nombre_vista AS SELECT columna1, columna2 FROM tabla WHERE condicion;
172
¿Qué sucede con los datos originales si se borra una Vista con DROP VIEW?
Absolutamente nada; los datos permanecen en las tablas base, solo desaparece la definición de la vista.
173
¿Qué permite la cláusula 'OR REPLACE' en la creación de vistas?
Permite modificar la definición de una vista existente sin tener que borrarla primero (DROP) y volverla a crear.
174
¿Qué es una 'Vista Materializada'?
Es una vista que, a diferencia de la estándar, almacena físicamente el resultado de la consulta en disco para mejorar el rendimiento.
175
¿Para qué sirve la opción 'WITH CHECK OPTION' en una vista?
Asegura que cualquier INSERT o UPDATE realizado a través de la vista cumpla con la condición WHERE de la propia vista.
176
¿Cómo se crea un índice básico para acelerar búsquedas en una columna?
CREATE INDEX nombre_indice ON nombre_tabla (columna);
177
¿Qué es un 'Índice Único' (UNIQUE INDEX)?
Un índice que, además de mejorar la velocidad, prohíbe que existan valores duplicados en la columna indexada.
178
¿Qué diferencia hay entre un índice 'Clustered' y 'Non-Clustered'?
Clustered: el orden físico de los datos en disco es el mismo que el del índice (solo puede haber uno). Non-Clustered: el índice es una estructura separada que apunta a los datos.
179
¿Cuál es la sintaxis básica para crear un Trigger?
CREATE TRIGGER nombre_trigger [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON nombre_tabla FOR EACH ROW BEGIN ... END;
180
¿Qué diferencia a un Trigger de nivel de FILA (FOR EACH ROW) de uno de nivel de SENTENCIA?
El de fila se ejecuta una vez por cada fila afectada; el de sentencia se ejecuta una sola vez por toda la operación SQL.
181
¿Para qué sirven los pseudoregistros :OLD y :NEW en un Trigger?
Para acceder a los valores de la fila antes de la modificación (:OLD) y después de la misma (:NEW).
182
¿Qué es un Trigger de tipo 'INSTEAD OF'?
Un trigger que se ejecuta 'en lugar de' la operación original, usado frecuentemente para permitir inserciones en vistas complejas.
183
¿Qué comando DDL se utiliza para eliminar un índice?
DROP INDEX nombre_indice;
184
¿Cómo se puede desactivar temporalmente un Trigger sin borrarlo?
ALTER TRIGGER nombre_trigger DISABLE;
185
¿Qué objeto DDL se utiliza para asegurar que una columna siempre se rellene con un valor correlativo de forma eficiente?
SEQUENCE (aunque en DDL de tabla se puede vincular mediante la cláusula IDENTITY o AUTO_INCREMENT).
186
¿Cuál es la sintaxis básica de la sentencia GRANT?
GRANT [privilegio] ON [objeto] TO [usuario/rol] [WITH GRANT OPTION];
187
¿Qué permite la cláusula 'WITH GRANT OPTION' en un GRANT?
Permite que el usuario que recibe el privilegio pueda concederlo a su vez a otros usuarios.
188
¿Cuál es la sintaxis básica de la sentencia REVOKE?
REVOKE [privilegio] ON [objeto] FROM [usuario/rol] [CASCADE/RESTRICT];
189
¿Qué sucede si revoco un permiso a un usuario que lo había cedido a otros usando CASCADE?
Se revocan también los permisos de todos aquellos usuarios que lo recibieron de él (revocación en cadena).
190
¿Qué diferencia hay entre los privilegios de sistema y los privilegios de objeto?
Sistema: permiten acciones globales (CREATE TABLE, CONNECT). Objeto: permiten acciones sobre tablas o vistas específicas (SELECT, UPDATE).
191
¿Cómo se concede un permiso de actualización solo para columnas específicas?
GRANT UPDATE (columna1, columna2) ON tabla TO usuario;
192
¿Qué palabra clave se usa para conceder privilegios a todos los usuarios del sistema?
PUBLIC.
193
¿Qué es la cláusula 'WITH ADMIN OPTION' y en qué se diferencia de 'WITH GRANT OPTION'?
ADMIN OPTION se usa para privilegios de sistema o roles; GRANT OPTION se usa para privilegios de objeto (tablas/vistas).
194
¿Puede un usuario revocar un permiso que él no ha concedido?
No, por norma general solo el otorgante (grantor) o un administrador puede revocar un permiso específico.
195
¿Qué ocurre si un usuario recibe el mismo permiso de dos personas distintas y uno de ellos se lo revoca?
El usuario mantiene el permiso, ya que todavía posee la concesión de la segunda persona.
196
¿Cómo se conceden todos los privilegios disponibles sobre un objeto de una sola vez?
Usando la palabra clave ALL PRIVILEGIES (ej. GRANT ALL PRIVILEGES ON tabla TO usuario).
197
¿Qué significa la opción RESTRICT en un REVOKE?
Indica que la revocación debe fallar si existen otros usuarios que dependen del permiso que se va a retirar (es lo opuesto a CASCADE).
198
¿En qué objeto del sistema se almacenan los permisos concedidos mediante DCL?
En el Diccionario de Datos (o Catálogo), específicamente en vistas como DBA_TAB_PRIVS o similares.
199
¿Qué comando se usa para asignar un ROL a un usuario una vez que el ROL ha sido creado?
GRANT nombre_rol TO nombre_usuario;
200
¿Es necesario especificar las columnas en un GRANT SELECT?
No, el SELECT suele otorgarse a nivel de tabla completa, aunque algunos SGBD permiten granularidad por columna, no es el estándar común.
201
¿Cuál es el efecto inmediato de ejecutar la sentencia COMMIT?
Hace que todos los cambios de la transacción sean permanentes en el disco y visibles para el resto de usuarios.
202
¿Qué sucede con los SAVEPOINTS después de ejecutar un COMMIT o un ROLLBACK completo?
Todos los puntos de salvaguarda (savepoints) definidos en esa transacción se borran automáticamente.
203
¿Qué permite la sentencia ROLLBACK TO SAVEPOINT [nombre]?
Deshacer los cambios realizados DESPUÉS del punto de control, pero manteniendo la transacción abierta y los cambios anteriores a ese punto intactos.
204
¿Qué es una 'Transacción Implícita'?
Un modo donde el SGBD comienza una transacción automáticamente tras cada COMMIT o ROLLBACK sin necesidad de un comando de inicio.
205
¿Qué sentencias provocan un 'COMMIT Implícito' en la mayoría de SGBDs?
Cualquier sentencia DDL (CREATE, ALTER, DROP) o DCL (GRANT, REVOKE).
206
¿Qué ocurre si una aplicación finaliza una sesión de forma normal (exit/disconnect) sin haber hecho COMMIT ni ROLLBACK?
El estándar SQL dicta que se debe realizar un COMMIT automático (aunque algunos SGBD configurables podrían hacer ROLLBACK).
207
¿Qué ocurre si el sistema sufre una caída (crash) y había transacciones abiertas?
Al reiniciar, el SGBD ejecuta un ROLLBACK automático de todas las transacciones que no llegaron a hacer COMMIT (garantizando la Atomicidad).
208
¿Cuál es la sintaxis para definir un punto de retorno intermedio?
SAVEPOINT nombre_punto;
209
¿Se puede hacer un ROLLBACK de una sentencia SELECT?
No, porque el SELECT no modifica datos. El TCL solo afecta a sentencias DML que alteran el estado (INSERT, UPDATE, DELETE).
210
¿Qué propiedad ACID se garantiza mediante el Transaction Log antes de ejecutar un COMMIT?
La Durabilidad (asegurando que el cambio se pueda reconstruir ante un fallo).
211
¿Qué es el 'Nivel de Aislamiento' (Isolation Level) en una transacción?
Un parámetro que define cómo y cuándo los cambios de una transacción son visibles para otras transacciones concurrentes.
212
¿Qué comando se utiliza para iniciar explícitamente una transacción en el estándar SQL?
SET TRANSACTION o BEGIN TRANSACTION (dependiendo de la implementación del SGBD).
213
¿Qué sucede si intentas hacer un ROLLBACK TO SAVEPOINT de un punto que no existe?
El SGBD devuelve un error y la transacción permanece en el estado actual sin deshacer nada.
214
¿Puede un COMMIT liberar los bloqueos (locks) de las filas afectadas?
Sí, una de las funciones principales del COMMIT (y del ROLLBACK) es liberar los recursos y bloqueos que la transacción mantenía sobre las tablas.
215
¿Qué diferencia hay entre COMMIT y un 'Checkpoint' del sistema?
El COMMIT es a nivel lógico de transacción; el Checkpoint es un proceso interno del SGBD que sincroniza la memoria con los archivos físicos de datos.
216
¿Cuál es el propósito principal de SET TRANSACTION?
Establecer las características de la transacción actual, como el nivel de aislamiento y el modo de acceso (lectura/escritura).
217
¿En qué momento de la transacción debe ejecutarse SET TRANSACTION?
Debe ser la primera sentencia de la transacción; si se ejecuta después de un DML, el sistema lanzará un error.
218
¿Qué dos modos de acceso se pueden configurar con este comando?
READ ONLY (solo lectura) y READ WRITE (lectura y escritura, que es el defecto).
219
¿Qué garantizamos al configurar una transacción como READ ONLY?
Que la transacción no podrá realizar ninguna operación de modificación (INSERT, UPDATE, DELETE), asegurando la consistencia para informes.
220
¿Cuáles son los 4 niveles de aislamiento definidos por el estándar que se pueden configurar con este comando?
1. READ UNCOMMITTED, 2. READ COMMITTED, 3. REPEATABLE READ, 4. SERIALIZABLE.
221
¿Qué nivel de aislamiento evita las 'Lecturas Sucias' (Dirty Reads) pero permite las 'Lecturas No Repetibles'?
READ COMMITTED (es el nivel por defecto en muchos SGBD como Oracle y PostgreSQL).
222
¿Qué nivel de aislamiento garantiza la máxima consistencia evitando incluso las 'Lecturas Fantasma'?
SERIALIZABLE.
223
¿Qué ocurre con el rendimiento de la base de datos al subir el nivel de aislamiento con SET TRANSACTION?
El rendimiento suele disminuir debido al aumento de bloqueos (locks) y la gestión de concurrencia más estricta.
224
¿Cuál es la sintaxis típica para cambiar el nivel de aislamiento?
SET TRANSACTION ISOLATION LEVEL [Nivel]; (ej. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;)
225
¿Un comando SET TRANSACTION afecta a todas las sesiones del usuario?
No, por lo general solo afecta a la transacción actual o a la sesión actual (si se usa SET SESSION).
226
¿Qué es una 'Lectura Sucia' (Dirty Read)?
Ocurre cuando una transacción lee datos que han sido modificados por otra transacción que aún NO ha hecho COMMIT.
227
¿Cuál es el riesgo de una Lectura Sucia?
Que la transacción que modificó los datos haga un ROLLBACK, dejando a la primera transacción con datos que técnicamente 'nunca existieron'.
228
¿En qué consiste la 'Lectura No Repetible' (Non-Repeatable Read)?
Ocurre cuando una transacción lee la misma fila dos veces y obtiene valores diferentes porque otra transacción la modificó y realizó COMMIT en medio.
229
¿Qué es la 'Lectura Fantasma' (Phantom Read)?
Ocurre cuando una transacción ejecuta una consulta de rango (ej. 'salario > 1000') y, al repetirla, aparecen filas nuevas porque otra transacción insertó registros que cumplen esa condición.
230
¿Cuál es la diferencia entre Lectura No Repetible y Lectura Fantasma?
La No Repetible afecta a una fila existente (modificación/borrado); la Fantasma afecta a un conjunto de filas (inserciones nuevas).
231
¿Qué permite el nivel 'READ UNCOMMITTED'?
Permite lecturas sucias, no repetibles y fantasmas. Es el nivel menos restrictivo y con mayor rendimiento.
232
¿Qué garantiza el nivel 'READ COMMITTED'?
Evita las Lecturas Sucias. Solo permite leer datos que ya han sido confirmados con COMMIT. (Es el nivel por defecto en Oracle/PostgreSQL).
233
¿Qué evita el nivel 'REPEATABLE READ'?
Evita las Lecturas Sucias y las Lecturas No Repetibles, pero todavía permite la aparición de Lecturas Fantasma.
234
¿Qué garantiza el nivel 'SERIALIZABLE'?
Es el nivel máximo. Evita los tres problemas (Sucia, No Repetible y Fantasma), ejecutando las transacciones como si fueran estrictamente secuenciales.
235
¿Cómo afecta el nivel de aislamiento a la concurrencia?
A mayor nivel de aislamiento (ej. SERIALIZABLE), menor es la concurrencia y el rendimiento, ya que el sistema usa más bloqueos (locks).
236
¿Qué fenómeno es aceptable en el nivel 'REPEATABLE READ' pero no en 'SERIALIZABLE'?
La Lectura Fantasma (Phantom Read).
237
¿Cuál es el único nivel de aislamiento que permite Lecturas Sucias?
READ UNCOMMITTED.
238
¿Qué nivel de aislamiento asegura que si leo una fila al principio de mi transacción, sus valores no cambiarán hasta que yo termine?
REPEATABLE READ (o superior).
239
¿Cuál es la sintaxis básica del INSERT especificando columnas?
INSERT INTO nombre_tabla (col1, col2, ...) VALUES (val1, val2, ...);
240
¿Cuándo es obligatorio especificar la lista de columnas en un INSERT?
Cuando no vamos a insertar valores en todas las columnas de la tabla o cuando queremos insertarlos en un orden distinto al de la definición.
241
¿Cuándo se puede omitir la lista de columnas en un INSERT INTO?
Cuando vamos a suministrar valores para TODAS las columnas de la tabla y en el orden exacto en que fueron creadas.
242
¿Qué sucede si omitimos una columna en el INSERT que tiene una restricción NOT NULL y no tiene DEFAULT?
La sentencia fallará y el SGBD devolverá un error de violación de restricción.
243
¿Cómo se insertan múltiples filas en una sola sentencia SQL (estándar ANSI)?
INSERT INTO tabla (cols) VALUES (fila1_vals), (fila2_vals), (fila3_vals);
244
¿Para qué sirve la sentencia INSERT INTO ... SELECT?
Para insertar en una tabla el resultado de una consulta realizada sobre otra(s) tabla(s).
245
¿Qué valor se inserta automáticamente si una columna no se menciona en el INSERT y tiene un valor por defecto?
Se inserta el valor definido en la cláusula DEFAULT del DDL.
246
¿Cómo se inserta explícitamente un valor nulo en una columna?
Usando la palabra clave NULL en la lista de valores (VALUES).
247
¿Qué ocurre si intentamos insertar un valor que ya existe en una columna con restricción UNIQUE o PRIMARY KEY?
La inserción falla para evitar duplicados, manteniendo la integridad de la base de datos.
248
¿Qué comando se usa en algunos SGBD (como MySQL/PostgreSQL) para insertar o actualizar si el registro ya existe?
INSERT ... ON DUPLICATE KEY UPDATE o INSERT ... ON CONFLICT (conocido genéricamente como UPSERT).
249
¿Se pueden usar funciones dentro de los valores de un INSERT?
Sí, se pueden usar funciones como CURRENT_DATE, UPPER('texto'), o secuencias como nombre_secuencia.NEXTVAL.
250
¿Es necesario que los tipos de datos en un INSERT INTO ... SELECT coincidan exactamente?
Deben ser compatibles (ej. puedes insertar un INTEGER en una columna FLOAT), pero el número de columnas debe ser idéntico.
251
¿Cuál es la sintaxis básica de la sentencia UPDATE?
UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2 WHERE condicion;
252
¿Qué sucede si se ejecuta un UPDATE sin la cláusula WHERE?
Se actualizan TODAS las filas de la tabla con los nuevos valores especificados.
253
¿Cómo se actualizan múltiples columnas en una misma sentencia?
Separando las asignaciones por comas tras la palabra clave SET (ej. SET col1 = val1, col2 = val2).
254
¿Se pueden usar subconsultas dentro de un UPDATE?
Sí, se pueden usar en la cláusula SET (para obtener el nuevo valor) o en el WHERE (para filtrar qué filas actualizar).
255
¿Qué ocurre si intentas actualizar una columna y el nuevo valor viola una restricción CHECK?
La sentencia falla, se produce un error y no se modifica ninguna fila de la transacción.
256
¿Qué es la actualización en cascada (ON UPDATE CASCADE)?
Es una regla de integridad referencial que hace que, si cambia la clave primaria en la tabla padre, las claves ajenas en las tablas hijas se actualicen automáticamente.
257
¿Se pueden usar expresiones aritméticas en un UPDATE?
Sí, es muy común para incrementos (ej. SET salario = salario * 1.10).
258
¿Qué sucede si el WHERE de un UPDATE no coincide con ninguna fila?
La sentencia se ejecuta correctamente, pero el sistema informa que se han actualizado 0 filas; no se produce un error.
259
¿Cómo se puede deshacer un UPDATE erróneo que acaba de ejecutarse?
Mediante la sentencia ROLLBACK, siempre que no se haya realizado un COMMIT previo o no esté activo el autocommit.
260
¿Qué diferencia hay entre UPDATE y ALTER TABLE?
UPDATE modifica los datos (DML); ALTER TABLE modifica la estructura o definición de la tabla (DDL).
261
¿Qué cláusula se usa para actualizar una fila basándose en los valores de otra tabla (en estándar SQL)?
Se suele usar una subconsulta correlacionada o la sentencia MERGE.
262
¿Es posible actualizar una columna con el valor NULL?
Sí, siempre que la columna no tenga una restricción NOT NULL definida.
263
¿Cuál es la sintaxis básica de la sentencia DELETE?
DELETE FROM nombre_tabla WHERE condicion;
264
¿Qué sucede si se ejecuta un DELETE sin la cláusula WHERE?
Se eliminan todas las filas de la tabla, pero la estructura de la tabla (columnas, índices, etc.) permanece intacta.
265
¿Cuál es la diferencia principal entre DELETE y DROP TABLE?
DELETE borra el contenido (filas), mientras que DROP borra tanto el contenido como la estructura del diccionario de datos.
266
¿Qué es la eliminación en cascada (ON DELETE CASCADE)?
Es una regla de integridad referencial que borra automáticamente las filas en la tabla hija cuando se borra la fila referenciada en la tabla padre.
267
¿Qué ocurre si intentas borrar una fila que está referenciada por otra tabla sin CASCADE?
El SGBD bloquea la operación y lanza un error de violación de integridad referencial (Restrict).
268
¿Por qué se dice que DELETE es una operación 'costosa' en tablas grandes?
Porque genera registros en el log de transacciones por cada fila borrada, lo que consume tiempo y recursos de E/S.
269
¿Se puede usar un alias de tabla en una sentencia DELETE?
Sí, es útil cuando se utilizan subconsultas en la cláusula WHERE para determinar qué filas borrar.
270
¿Qué sucede con los disparadores (Triggers) cuando se ejecuta un DELETE?
Se activan los triggers definidos como 'BEFORE DELETE' o 'AFTER DELETE' por cada fila afectada (si son de nivel de fila).
271
¿Qué valor devuelve el SGBD tras ejecutar un DELETE con éxito?
Normalmente devuelve el número de filas que han sido eliminadas.
272
¿Es posible recuperar los datos después de un DELETE?
Solo si la transacción no ha sido confirmada (COMMIT) mediante un ROLLBACK, o mediante copias de seguridad/logs si ya se confirmó.
273
¿Qué diferencia hay entre DELETE y TRUNCATE respecto a los disparadores?
DELETE dispara los triggers; TRUNCATE normalmente no los dispara porque es una operación de nivel DDL.
274
¿Se puede limitar el número de filas a borrar en un DELETE (ej. borrar solo las 10 primeras)?
El estándar no lo permite directamente en el DELETE, pero se puede lograr usando una subconsulta con LIMIT/TOP en el WHERE.
275
¿Cuál es la función principal de la sentencia SELECT?
Recuperar datos de una o más tablas o vistas.
276
¿Qué indica el asterisco (*) en un SELECT *?
Que se deben devolver todas las columnas de las tablas indicadas en el FROM.
277
¿Para qué sirve la cláusula DISTINCT?
Para eliminar filas duplicadas y devolver solo valores únicos en el resultado.
278
¿Sobre qué columnas actúa DISTINCT si se ponen varias?
Sobre la combinación de todas ellas (la fila resultante debe ser única).
279
¿Qué es un Alias de columna?
Un nombre temporal asignado a una columna mediante la palabra AS para mejorar la legibilidad.
280
¿Es obligatorio usar la palabra AS para definir un alias?
No, en la mayoría de SGBD basta con poner el alias después del nombre de la columna, aunque AS es más claro.
281
¿Se pueden poner espacios en un alias de columna?
Sí, pero el alias debe ir entre comillas dobles (ej. "Nombre Completo").
282
¿Qué es un Alias de tabla?
Un nombre corto asignado a una tabla en el FROM para facilitar las referencias, especialmente en JOINS.
283
¿Qué ocurre si selecciono una constante (ej. SELECT 'Hola')?
Se devuelve una columna donde cada fila tiene el valor literal 'Hola'.
284
¿En qué orden lógico se procesa el SELECT respecto al WHERE?
El SELECT se procesa DESPUÉS del WHERE (por eso no puedes usar un alias del SELECT en el WHERE).
285
¿Cuál es el propósito de la cláusula WHERE?
Filtrar las filas que cumplen una condición específica antes de cualquier agrupamiento.
286
¿Qué operador se usa para comparar si un valor es exactamente igual a otro?
El operador '='.
287
¿Cómo se comprueba si una columna tiene un valor nulo?
Utilizando la sintaxis 'IS NULL' (nunca '= NULL').
288
¿Para qué sirve el operador BETWEEN?
Para filtrar valores dentro de un rango inclusivo (incluye los límites).
289
¿Qué hace el operador IN?
Permite comprobar si un valor coincide con cualquier elemento de una lista o subconsulta.
290
¿Cuál es la función del operador LIKE?
Permite la comparación de patrones de texto (wildcards).
291
¿Qué significa el comodín '%' en un LIKE?
Representa cualquier secuencia de cero o más caracteres.
292
¿Qué significa el comodín '_' en un LIKE?
Representa un único carácter en esa posición exacta.
293
¿Cómo se combinan múltiples condiciones en un WHERE?
Mediante los operadores lógicos AND, OR y NOT.
294
¿Qué operador tiene mayor precedencia: AND u OR?
El operador AND tiene mayor precedencia que el OR (se evalúa antes).
295
¿Qué hacen las funciones de agregado?
Realizan un cálculo sobre un conjunto de valores y devuelven un único valor de resumen.
296
¿Qué devuelve COUNT(*)?
El número total de filas que cumplen el filtro, incluyendo nulos y duplicados.
297
¿Qué devuelve COUNT(columna)?
El número de valores no nulos presentes en esa columna.
298
¿Para qué sirven las funciones SUM y AVG?
SUM suma los valores y AVG calcula el promedio (ambas solo para tipos numéricos).
299
¿Cómo tratan MAX y MIN a los valores nulos?
Ignoran los valores nulos y devuelven el valor máximo o mínimo de los datos presentes.
300
¿Cuál es la función de la cláusula GROUP BY?
Agrupar filas que tienen los mismos valores en columnas específicas para aplicar funciones de agregado.
301
¿Qué restricción existe sobre las columnas del SELECT cuando hay un GROUP BY?
Toda columna en el SELECT debe estar en el GROUP BY o dentro de una función de agregado.
302
¿Para qué sirve la cláusula HAVING?
Para filtrar grupos creados por el GROUP BY basándose en una condición de agregado.
303
¿Cuál es la diferencia clave entre WHERE y HAVING?
WHERE filtra filas individuales; HAVING filtra grupos de filas.
304
¿Se puede usar HAVING sin GROUP BY?
Sí, en ese caso actúa sobre la tabla completa como un único grupo (aunque no es común).
305
¿Cuál es la función de la cláusula ORDER BY?
Ordenar el conjunto de resultados final por una o más columnas.
306
¿Cuál es el orden de clasificación por defecto en un ORDER BY?
Ascendente (ASC).
307
¿Cómo se ordena de mayor a menor?
Añadiendo la palabra clave DESC tras la columna.
308
¿Se puede ordenar por una columna que no esté en el SELECT?
Sí, el estándar SQL lo permite.
309
¿Qué sucede con los valores NULL en un ORDER BY?
Depende del SGBD, pero suelen aparecer los primeros (ASC) o los últimos (DESC).
310
¿Cómo se ordenan los resultados por múltiples columnas?
Se listan separadas por comas; el sistema ordena por la segunda solo si hay empate en la primera.
311
¿Cuál es el orden final de ejecución de todas las cláusulas?
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY.
312
¿Cómo se limita el número de filas devueltas en SQL estándar (ANSI)?
Mediante 'FETCH FIRST n ROWS ONLY'.
313
¿Qué cláusula equivalente a FETCH se usa en MySQL y PostgreSQL?
La cláusula LIMIT.
314
¿Qué ocurre si usamos un alias en el ORDER BY?
Sí está permitido, porque el ORDER BY es la última cláusula en ejecutarse, después del SELECT.
315
¿Qué es una subconsulta?
Es una sentencia SELECT anidada dentro de otra sentencia (SELECT, INSERT, UPDATE o DELETE).
316
¿Qué es una 'Subconsulta Escalar'?
Es aquella que devuelve un único valor (una fila y una columna) y puede usarse con operadores de comparación como '=' o '<'.
317
¿Qué operadores se deben usar si la subconsulta devuelve una lista de valores (una columna, varias filas)?
Los operadores de conjunto: IN, ANY (o SOME) y ALL.
318
¿Cuál es la diferencia entre IN y ANY?
'IN' comprueba igualdad con cualquier elemento; 'ANY' se usa con comparadores (ej. '> ANY') para indicar que sea mayor que al menos uno de la lista.
319
¿Qué significa el operador '> ALL' aplicado a una subconsulta?
Que el valor de la consulta principal debe ser mayor que el valor máximo devuelto por la subconsulta.
320
¿Qué es una 'Subconsulta Correlacionada'?
Es una subconsulta que hace referencia a columnas de la consulta externa, ejecutándose una vez por cada fila procesada por esta.
321
¿Para qué sirve el operador EXISTS?
Para comprobar si una subconsulta devuelve al menos una fila; devuelve TRUE o FALSE y es muy eficiente en subconsultas correlacionadas.
322
¿Qué diferencia hay entre usar IN y EXISTS con nulos?
EXISTS solo comprueba la existencia de filas (ignora si los valores son NULL), mientras que IN puede dar resultados inesperados si la lista contiene nulos.
323
¿Dónde se puede colocar una subconsulta dentro de un SELECT?
En la lista de columnas del SELECT, en el FROM (como tabla derivada), en el WHERE o en el HAVING.
324
¿Qué es una 'Tabla Derivada' o 'Vista en línea'?
Es una subconsulta situada en la cláusula FROM que actúa como si fuera una tabla temporal durante la ejecución.
325
¿Es obligatorio usar un alias para una subconsulta en el FROM?
En la mayoría de SGBD (como MySQL o PostgreSQL) es obligatorio asignar un alias a la subconsulta del FROM.
326
¿Qué operador se usa para negar la existencia de registros en una subconsulta?
NOT EXISTS.
327
¿Puede una subconsulta devolver múltiples columnas?
Sí, pero solo si se usa con operadores que acepten tuplas o en la cláusula FROM.
328
¿Qué ocurre si una subconsulta escalar devuelve más de una fila?
El SGBD lanzará un error de ejecución del tipo 'single-row subquery returns more than one row'.
329
¿Qué es mejor para el rendimiento: un JOIN o una subconsulta correlacionada?
Generalmente un JOIN es más eficiente, ya que los optimizadores suelen procesarlo mejor que una subconsulta que se repite por cada fila.
330
¿Qué es una subconsulta?
Es una sentencia SELECT anidada dentro de otra sentencia (SELECT, INSERT, UPDATE o DELETE).
331
¿Qué es una 'Subconsulta Escalar'?
Es aquella que devuelve un único valor (una fila y una columna) y puede usarse con operadores de comparación como '=' o '<'.
332
¿Qué operadores se deben usar si la subconsulta devuelve una lista de valores (una columna, varias filas)?
Los operadores de conjunto: IN, ANY (o SOME) y ALL.
333
¿Cuál es la diferencia entre IN y ANY?
'IN' comprueba igualdad con cualquier elemento; 'ANY' se usa con comparadores (ej. '> ANY') para indicar que sea mayor que al menos uno de la lista.
334
¿Qué significa el operador '> ALL' aplicado a una subconsulta?
Que el valor de la consulta principal debe ser mayor que el valor máximo devuelto por la subconsulta.
335
¿Qué es una 'Subconsulta Correlacionada'?
Es una subconsulta que hace referencia a columnas de la consulta externa, ejecutándose una vez por cada fila procesada por esta.
336
¿Para qué sirve el operador EXISTS?
Para comprobar si una subconsulta devuelve al menos una fila; devuelve TRUE o FALSE y es muy eficiente en subconsultas correlacionadas.
337
¿Qué diferencia hay entre usar IN y EXISTS con nulos?
EXISTS solo comprueba la existencia de filas (ignora si los valores son NULL), mientras que IN puede dar resultados inesperados si la lista contiene nulos.
338
¿Dónde se puede colocar una subconsulta dentro de un SELECT?
En la lista de columnas del SELECT, en el FROM (como tabla derivada), en el WHERE o en el HAVING.
339
¿Qué es una 'Tabla Derivada' o 'Vista en línea'?
Es una subconsulta situada en la cláusula FROM que actúa como si fuera una tabla temporal durante la ejecución.
340
¿Es obligatorio usar un alias para una subconsulta en el FROM?
En la mayoría de SGBD (como MySQL o PostgreSQL) es obligatorio asignar un alias a la subconsulta del FROM.
341
¿Qué operador se usa para negar la existencia de registros en una subconsulta?
NOT EXISTS.
342
¿Puede una subconsulta devolver múltiples columnas?
Sí, pero solo si se usa con operadores que acepten tuplas o en la cláusula FROM.
343
¿Qué ocurre si una subconsulta escalar devuelve más de una fila?
El SGBD lanzará un error de ejecución del tipo 'single-row subquery returns more than one row'.
344
¿Qué es mejor para el rendimiento: un JOIN o una subconsulta correlacionada?
Generalmente un JOIN es más eficiente, ya que los optimizadores suelen procesarlo mejor que una subconsulta que se repite por cada fila.
345
¿Qué hace el operador UNION en SQL?
Combina los resultados de dos o más sentencias SELECT en un único conjunto de resultados.
346
¿Cuál es la diferencia principal entre UNION y UNION ALL?
UNION elimina las filas duplicadas del resultado final, mientras que UNION ALL las mantiene todas.
347
¿Qué requisito deben cumplir las columnas de los SELECT para usar UNION?
Deben tener el mismo número de columnas y tipos de datos compatibles en el mismo orden.
348
¿De dónde toma SQL los nombres de las columnas en una UNION?
De los nombres o alias definidos en la primera sentencia SELECT.
349
¿Cuál de los dos es más rápido: UNION o UNION ALL?
UNION ALL es más rápido porque no tiene que realizar la tarea de buscar y eliminar duplicados.
350
¿En qué parte de la sentencia se debe colocar el ORDER BY si usamos UNION?
Al final de la última sentencia SELECT, y afectará a todo el conjunto de resultados combinado.
351
¿Cómo trata UNION a los valores NULL?
Dos valores NULL se consideran duplicados entre sí a efectos de ser eliminados por el operador UNION.
352
¿Se pueden unir tablas con distinto número de columnas mediante UNION?
No directamente, pero se pueden forzar rellenando con valores nulos o constantes (ej. SELECT col1, NULL FROM...).
353
¿Qué diferencia hay entre un JOIN y un UNION?
JOIN combina columnas de varias tablas horizontalmente; UNION combina filas de varias tablas verticalmente.
354
¿Qué operador de conjunto es el opuesto a UNION (devuelve solo lo común)?
El operador INTERSECT.
355
¿Cuál es el propósito principal de la sentencia MERGE?
Realizar inserciones, actualizaciones o borrados en una tabla destino basándose en los datos de una tabla origen en una sola sentencia.
356
¿Qué cláusula del MERGE define cómo se relacionan la tabla origen y la destino?
La cláusula ON (ej. ON destino.id = origen.id).
357
¿Qué ocurre cuando se cumple la condición de la cláusula WHEN MATCHED?
Se suele ejecutar una sentencia UPDATE para modificar los datos que ya existen en la tabla destino.
358
¿Qué ocurre cuando se cumple la condición de la cláusula WHEN NOT MATCHED?
Se suele ejecutar una sentencia INSERT para añadir los nuevos registros a la tabla destino.
359
¿Es obligatorio usar siempre el UPDATE y el INSERT dentro de un MERGE?
No, se puede usar solo una de las dos cláusulas (aunque lo habitual es usar ambas para el 'Upsert').
360
¿Qué permite la cláusula DELETE dentro del WHEN MATCHED en un MERGE?
Permite eliminar una fila de la tabla destino si se cumple la condición de coincidencia y otra condición adicional.
361
¿Se puede usar una subconsulta como tabla origen en un MERGE INTO?
Sí, la tabla origen (USING) puede ser una tabla física, una vista o una subconsulta entre paréntesis.
362
¿Cuál es la principal ventaja de MERGE frente a ejecutar un UPDATE y luego un INSERT?
La eficiencia: el motor solo escanea los datos una vez y se garantiza la atomicidad de la operación compleja.
363
¿Qué sucede si la tabla origen tiene filas duplicadas que coinciden con una misma fila del destino?
La sentencia MERGE fallará con un error, ya que no puede decidir qué valor de origen usar para actualizar el destino.
364
¿En qué estándar de SQL se introdujo formalmente la sentencia MERGE?
Se introdujo en el estándar SQL:2003.
365
¿Qué es un Trigger (Disparador)?
Un objeto que se ejecuta automáticamente como respuesta a un evento de DML (INSERT, UPDATE, DELETE) o de sistema.
366
¿Cuál es la principal diferencia entre un Trigger y un Procedimiento Almacenado?
El procedimiento se invoca explícitamente; el trigger se dispara automáticamente por un evento.
367
¿Qué eventos de DML pueden disparar un Trigger?
INSERT, UPDATE y DELETE (algunos SGBD permiten también eventos de DDL o de sesión).
368
¿Qué es un Trigger de tipo 'BEFORE'?
Aquel que se ejecuta antes de que la operación que lo disparó se realice en la base de datos.
369
¿Para qué se suele usar un Trigger 'BEFORE'?
Para validar datos o modificar los valores que se van a insertar antes de que se guarden permanentemente.
370
¿Qué es un Trigger de tipo 'AFTER'?
Aquel que se ejecuta después de que la operación de DML se haya completado con éxito.
371
¿Para qué se suele usar un Trigger 'AFTER'?
Para realizar auditorías, actualizar otras tablas o propagar cambios una vez que el dato principal es seguro.
372
¿Qué diferencia hay entre un Trigger de FILA y uno de SENTENCIA?
El de fila se ejecuta por cada fila afectada; el de sentencia se ejecuta una sola vez por cada instrucción SQL.
373
¿Qué cláusula define que un Trigger sea de nivel de FILA?
La cláusula 'FOR EACH ROW'.
374
¿Qué es un Trigger de tipo 'INSTEAD OF'?
Un disparador que se ejecuta 'en lugar de' la sentencia original, usado comúnmente en vistas que no son actualizables por defecto.
375
¿Qué son los registros :OLD y :NEW?
Son pseudoregistros que permiten acceder a los datos de la fila que está siendo procesada por el trigger.
376
¿Qué contiene el registro :NEW en un Trigger de INSERT?
Contiene los valores de la nueva fila que se va a insertar.
377
¿Qué contiene el registro :OLD en un Trigger de INSERT?
Nada (es NULL), ya que no existía una fila previa al insert.
378
¿Qué contiene el registro :OLD en un Trigger de DELETE?
Contiene los valores de la fila que va a ser eliminada.
379
¿Qué contiene el registro :NEW en un Trigger de DELETE?
Nada (es NULL), ya que no hay una nueva versión de la fila tras el borrado.
380
¿Cómo funcionan :OLD y :NEW en un UPDATE?
:OLD contiene los valores originales antes del cambio y :NEW los valores nuevos que se pretenden grabar.
381
¿Se pueden modificar los valores de :NEW en un trigger AFTER?
No, en un AFTER los datos ya se han escrito; las modificaciones de :NEW solo suelen permitirse en triggers BEFORE.
382
¿En qué tipo de triggers (Fila o Sentencia) están disponibles :OLD y :NEW?
Solo en los triggers de nivel de FILA (FOR EACH ROW).
383
¿Cómo se accede a un campo específico del registro nuevo?
Usando la notación de punto (ej. :NEW.nombre_columna).
384
¿Cómo se llaman estas estructuras en SQL Server (T-SQL)?
Se llaman tablas virtuales 'Inserted' y 'Deleted' (en lugar de :NEW y :OLD).
385
¿Cuál es la sintaxis básica para crear un Trigger?
CREATE TRIGGER nombre [BEFORE/AFTER] [Evento] ON tabla [FOR EACH ROW] BEGIN ... END;
386
¿Qué es una 'Tabla Mutante' (Mutating Table)?
Un error que ocurre cuando un trigger de fila intenta consultar o modificar la misma tabla que disparó el trigger.
387
¿Puede un Trigger realizar un COMMIT o ROLLBACK?
No, por norma general un trigger no puede finalizar la transacción; debe heredar el control de la transacción que lo disparó.
388
¿Qué ocurre si un Trigger lanza un error o excepción?
Toda la operación que disparó el trigger (y la transacción actual) se revierte (Rollback) automáticamente.
389
¿Se pueden definir varios Triggers para el mismo evento en la misma tabla?
Sí, pero el orden de ejecución entre ellos depende del SGBD (aunque suele ser el orden de creación).
390
¿Cómo se puede condicionar la ejecución de un trigger de fila sin entrar en el código?
Usando la cláusula WHEN (ej. WHEN (NEW.salario > 1000)).
391
¿Qué comando DDL se usa para eliminar un trigger?
DROP TRIGGER nombre_trigger;
392
¿Se puede deshabilitar un trigger temporalmente sin borrarlo?
Sí, mediante la sentencia ALTER TRIGGER nombre_trigger DISABLE;
393
¿Qué diferencia hay entre un Trigger y una restricción CHECK?
El CHECK solo valida valores simples; el Trigger puede ejecutar lógica compleja y afectar a otras tablas.
394
¿Puede un Trigger llamar a un procedimiento almacenado?
Sí, es una práctica común para mantener el cuerpo del trigger limpio y reutilizar código.
395
¿Qué es un Stored Procedure?
Es un objeto de la base de datos que contiene un conjunto de sentencias SQL y estructuras de control (bucles, condicionales) almacenadas en el servidor.
396
¿Cuál es la principal diferencia entre un procedimiento y una función?
El procedimiento NO está obligado a devolver un valor, mientras que la función SIEMPRE debe devolver uno.
397
¿Cómo se invoca un procedimiento almacenado desde SQL?
Usando la palabra clave CALL (en el estándar y MySQL) o EXECUTE/EXEC (en SQL Server y Oracle).
398
¿Qué sentencia DDL se usa para crear un procedimiento?
CREATE PROCEDURE nombre_procedimiento ([parámetros]) AS ... BEGIN ... END;
399
¿Qué permite la cláusula OR REPLACE en la creación de un procedimiento?
Permite sobrescribir un procedimiento existente con una nueva definición sin tener que borrarlo (DROP) primero.
400
¿Para qué sirven los parámetros en un procedimiento?
Para pasar información de entrada al procedimiento y, en algunos casos, recibir resultados de vuelta.
401
¿Qué ventaja de rendimiento ofrece un procedimiento almacenado?
Reduce el tráfico de red (se envía solo la llamada, no todo el código) y el código ya está precompilado en el servidor.
402
¿Qué es la 'Seguridad por encapsulamiento' en procedimientos?
Permite que un usuario ejecute acciones sobre tablas a las que no tiene acceso directo, pero solo a través del procedimiento controlado.
403
¿Se puede llamar a un procedimiento desde una sentencia SELECT?
No, los procedimientos deben invocarse de forma independiente; solo las funciones pueden integrarse en un SELECT.
404
¿Qué comando DDL elimina un procedimiento del diccionario de datos?
DROP PROCEDURE nombre_procedimiento;
405
¿Cuáles son los tres modos de parámetros en SQL?
IN (entrada), OUT (salida) e IN OUT (entrada/salida).
406
¿Qué es un parámetro de tipo IN?
Es el modo por defecto; pasa un valor desde el llamador al procedimiento, pero el procedimiento no puede modificar el valor original.
407
¿Para qué se usa un parámetro de tipo OUT?
Para que el procedimiento devuelva un valor al llamador (se comporta como un 'recipiente' que el procedimiento llena).
408
¿Qué es un parámetro de tipo IN OUT?
Un parámetro que entra con un valor inicial, puede ser modificado dentro del procedimiento y devuelve el nuevo valor al finalizar.
409
¿Qué es el 'Cuerpo' de un procedimiento?
La sección comprendida entre BEGIN y END donde reside la lógica y las sentencias DML.
410
¿Se puede usar DDL (como CREATE TABLE) dentro de un procedimiento?
Depende del SGBD, pero generalmente requiere el uso de 'SQL dinámico' (sentencias ejecutadas como strings).
411
¿Cómo se declaran variables locales dentro de un procedimiento?
Usando la palabra clave DECLARE antes del bloque BEGIN (en la sección de declaraciones).
412
¿Qué es el 'Ámbito' (Scope) de una variable en un procedimiento?
Es el contexto donde la variable existe; las variables declaradas dentro de un procedimiento solo son visibles durante su ejecución.
413
¿Puede un procedimiento llamar a otro procedimiento?
Sí, a esto se le conoce como llamadas anidadas.
414
¿Qué es la recursividad en procedimientos?
Es la capacidad de un procedimiento de llamarse a sí mismo (debe tener una condición de parada para evitar bucles infinitos).
415
¿Cómo se gestionan los errores dentro de un procedimiento?
Mediante 'Manejadores de Excepciones' (EXCEPTION en Oracle, HANDLER en MySQL/SQL Server).
416
¿Puede un procedimiento contener sentencias TCL (COMMIT o ROLLBACK)?
Sí, los procedimientos pueden gestionar sus propias transacciones (salvo que sean llamados por triggers).
417
¿Qué ocurre si un procedimiento falla y no tiene gestión de errores?
La excepción se propaga al llamador y, dependiendo de la configuración, la transacción actual puede revertirse.
418
¿Qué es un 'Cursor' dentro de un procedimiento?
Un objeto que permite recorrer fila a fila el resultado de una consulta SELECT para procesar datos de forma individual.
419
¿Cuáles son las 4 fases de un cursor manual?
1. DECLARE, 2. OPEN, 3. FETCH (obtener fila), 4. CLOSE.
420
¿Qué diferencia hay entre un parámetro formal y uno real?
Formal: el definido en la creación (nombre). Real: el valor o variable que se pasa en el momento de la llamada.
421
¿Qué es el 'SQL Dinámico' en procedimientos?
Es la técnica de construir una sentencia SQL como una cadena de texto y ejecutarla usando comandos como EXECUTE IMMEDIATE.
422
¿Dónde se consultan los procedimientos creados en el diccionario de datos?
En vistas como USER_PROCEDURES o USER_SOURCE (para ver el código fuente en Oracle).
423
¿Qué es un 'Paquete' (Package) en relación a los procedimientos?
Un objeto (típico de Oracle) que agrupa lógicamente procedimientos, funciones y variables relacionadas.
424
¿Qué significa que un procedimiento sea 'Determínistico'?
Que siempre devuelve el mismo resultado o realiza la misma acción ante los mismos parámetros de entrada.
425
¿Cuál es la diferencia fundamental entre una Función y un Procedimiento?
La función DEBE devolver un valor obligatoriamente mediante la sentencia RETURN.
426
¿En qué parte de una consulta SQL se puede usar una función?
En cualquier lugar donde se permita una expresión (SELECT, WHERE, ORDER BY, etc.).
427
¿Qué es una 'Función Escalar'?
Es aquella que devuelve un único valor de un tipo de dato simple (ej. un número o una cadena).
428
¿Qué es una 'Función de Tabla' (Table-Valued Function)?
Una función especial que devuelve un conjunto de filas como resultado, pudiendo usarse en la cláusula FROM.
429
¿Qué restricción de DML tienen las funciones por norma general?
No deben modificar el estado de la base de datos (no deberían hacer INSERT, UPDATE o DELETE), solo calcular valores.
430
¿Para qué sirve la palabra clave DETERMINISTIC en una función?
Para indicar al optimizador que la función siempre devuelve el mismo resultado ante los mismos parámetros, permitiendo caché.
431
¿Qué sucede si una función no encuentra la sentencia RETURN durante su ejecución?
El SGBD lanzará un error de ejecución en tiempo de espera.
432
¿Cómo se invoca una función dentro de un SELECT?
Directamente por su nombre pasándole los argumentos (ej. SELECT calcular_iva(precio) FROM ventas;).
433
¿Puede una función llamar a un procedimiento almacenado?
Generalmente no, ya que los procedimientos pueden realizar cambios en los datos (DML) que las funciones tienen restringidos.
434
¿Qué comando DDL se usa para borrar una función?
DROP FUNCTION nombre_funcion;
435
¿Qué diferencia hay entre CHAR y VARCHAR/VARCHAR2?
CHAR es de longitud fija (rellena con espacios); VARCHAR es de longitud variable (solo ocupa lo que mide el texto).
436
¿Para qué se utilizan los tipos LOB (CLOB y BLOB)?
Para almacenar objetos grandes: CLOB para texto masivo y BLOB para datos binarios (imágenes, PDFs).
437
¿Qué almacena el tipo de dato TIMESTAMP?
Almacena fecha y hora con precisión de fracciones de segundo (más preciso que el tipo DATE).
438
¿Qué es el tipo de dato BOOLEAN?
Un tipo que almacena valores lógicos: TRUE, FALSE o NULL (no disponible de forma nativa en todos los SGBD, como Oracle).
439
¿Para qué sirve la precisión y la escala en un tipo NUMBER(p,s)?
La precisión (p) es el número total de dígitos; la escala (s) es el número de dígitos a la derecha del punto decimal.
440
¿Qué diferencia hay entre FLOAT y DECIMAL?
FLOAT es de coma flotante (aproximado); DECIMAL/NUMERIC es de coma fija (exacto, ideal para dinero).
441
¿Qué tipo de dato usarías para almacenar un ID que se autogenera?
Suele usarse un INTEGER vinculado a una IDENTITY o SERIAL.
442
¿Qué es un tipo de dato 'Interval'?
Un tipo que representa un periodo de tiempo (ej. '3 meses' o '2 horas') en lugar de una fecha fija.
443
¿Para qué sirve el tipo de dato JSON (disponible en SGBD modernos)?
Para almacenar y consultar documentos estructurados en formato JSON manteniendo la flexibilidad del esquema.
444
¿Qué sucede si intentas insertar una cadena de 20 caracteres en un VARCHAR(10)?
El SGBD lanzará un error de 'valor demasiado largo' y abortará la inserción.
445
¿Qué es una Vista?
Es una tabla virtual definida por una consulta SELECT; no almacena datos físicamente, solo la definición.
446
¿Cuál es la principal ventaja de seguridad de las vistas?
Permiten ocultar columnas sensibles de la tabla original, dando acceso al usuario solo a la vista.
447
¿Qué es una 'Vista Actualizable'?
Una vista sobre la que se pueden hacer INSERT/UPDATE/DELETE, que luego se trasladan a la tabla base (tienen muchas restricciones).
448
¿Qué cláusula impide insertar filas a través de una vista que no cumplan el WHERE de la propia vista?
WITH CHECK OPTION.
449
¿Cómo se borra una vista?
DROP VIEW nombre_vista;
450
¿Qué sucede con una vista si borras la tabla base en la que se apoya?
La vista permanece en el diccionario pero queda en estado 'inválido' y fallará al consultarla.
451
¿Qué es una 'Vista Materializada'?
A diferencia de la normal, esta SÍ almacena el resultado en disco para agilizar consultas complejas, requiriendo refrescos periódicos.
452
¿Puede una vista basarse en otras vistas?
Sí, se pueden anidar vistas sobre vistas (aunque puede penalizar el rendimiento si hay demasiados niveles).
453
¿Qué ventaja ofrece el uso de vistas para la independencia de datos?
Permite cambiar la estructura de las tablas base sin que las aplicaciones fallen, siempre que la vista mantenga los mismos nombres de columna.
454
¿Se pueden crear índices sobre una vista normal?
Generalmente no; los índices solo se crean sobre tablas físicas o, en algunos casos, sobre Vistas Materializadas.
455
¿Qué es una función de fila única?
Es una función que se aplica a cada registro de forma independiente y devuelve un valor por cada fila procesada.
456
¿Cuáles son las funciones de cadena más comunes?
UPPER (mayúsculas), LOWER (minúsculas), CONCAT (unir), SUBSTR/SUBSTRING (extraer) y LENGTH (longitud).
457
¿Qué hace la función COALESCE(val1, val2, ...)?
Devuelve el primer valor no nulo de la lista de argumentos; es vital para gestionar nulos.
458
¿Para qué sirve la función NVL (en Oracle) o IFNULL (en MySQL)?
Sustituye un valor NULL por un valor alternativo específico (ej. NVL(comision, 0)).
459
¿Qué diferencia hay entre ROUND y TRUNC aplicado a números?
ROUND redondea al valor más cercano; TRUNC corta los decimales sin redondear.
460
¿Cómo funciona la función INSTR?
Busca una cadena dentro de otra y devuelve la posición numérica donde comienza (o 0 si no la encuentra).
461
¿Para qué sirve la función de conversión TO_CHAR / CAST?
Para transformar un tipo de dato (como una fecha o número) en una cadena de texto con un formato específico.
462
¿Qué devuelve la función SYSDATE o CURRENT_TIMESTAMP?
La fecha y hora actual del sistema o del servidor de la base de datos.
463
¿Qué hace la función de fila REPLACE?
Sustituye todas las apariciones de un carácter o subcadena por otra dentro de un texto.
464
¿Qué es la función NULLIF(val1, val2)?
Devuelve NULL si ambos valores son iguales; si son distintos, devuelve el primer valor.
465
¿Qué es el Diccionario de Datos?
Es un conjunto de tablas de solo lectura que contienen metadatos sobre la estructura, usuarios, permisos y objetos de la base de datos.
466
¿Quién es el propietario del Diccionario de Datos?
Normalmente el usuario SYS o el administrador del sistema (DBA).
467
¿Qué diferencia hay entre las vistas USER_, ALL_ y DBA_?
USER: objetos del usuario actual. ALL: objetos a los que el usuario tiene acceso. DBA: todos los objetos de la base de datos.
468
¿En qué vista consultamos el nombre y estructura de nuestras tablas?
En USER_TABLES (o TABS en Oracle).
469
¿Dónde se pueden ver todas las columnas de todas las tablas?
En la vista USER_TAB_COLUMNS.
470
¿Qué vista muestra las restricciones (Primary Key, Foreign Key, Check)?
En USER_CONSTRAINTS.
471
¿Cómo sé qué columnas forman parte de una restricción específica?
Consultando la vista USER_CONS_COLUMNS.
472
¿En qué vista se almacenan los comentarios añadidos a las tablas o columnas?
En USER_TAB_COMMENTS y USER_COL_COMMENTS.
473
¿Dónde se puede ver el código fuente de procedimientos, funciones y paquetes?
En la vista USER_SOURCE.
474
¿Qué vista muestra los índices creados por el usuario?
En USER_INDEXES.
475
¿Cómo se consultan las columnas que componen un índice?
En la vista USER_IND_COLUMNS.
476
¿Qué vista del diccionario muestra los privilegios de sistema concedidos al usuario?
USER_SYS_PRIVS.
477
¿Dónde consulto los permisos que otros me han dado sobre sus tablas?
En USER_TAB_PRIVS_RECD (privilegios recibidos).
478
¿Qué vista muestra los roles que tiene asignados un usuario?
USER_ROLE_PRIVS.
479
¿Dónde se definen los sinónimos creados por el usuario?
En USER_SYNONYMS.
480
¿En qué vista se registran todos los disparadores (triggers) creados?
En USER_TRIGGERS.
481
¿Cómo se llama el 'diccionario del diccionario' en Oracle (lista de vistas)?
La vista DICTIONARY (o DICT).
482
¿Qué vista muestra el espacio libre en los Tablespaces?
DBA_FREE_SPACE (normalmente requiere privilegios de admin).
483
¿Dónde se guardan los nombres de los ficheros físicos de datos?
En la vista DBA_DATA_FILES.
484
¿Qué vista muestra las sesiones de usuario conectadas actualmente?
V$SESSION (es una vista dinámica de rendimiento).