SQL Flashcards

1
Q

¿Qué significan las siglas ACID?

A

A tomicity (que se traten varias sentencias como una unidad de trabajo)
C onsistency (que no se queden cosas a medias)
I solation (unidades de trabajo)
D durability (información grabada)

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

Puerto de Oracle

A

1521

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

Puerto SQL Server

A

1433

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

Puerto Postgresql

A

5432

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

Puerto MySql/MariaDB

A

3306

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

Puerto Informix

A

9089

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

Subleguajes dentro de SQL (clasificación de los comandos)

A

DDL –> Data Definition Lang. Creación/Borrado/Eliminación de objetos (tablas…)

DML –> Data Manipulating Lang. Consulta/ Borrado/ Modificación/ Inserción de datos

DCL –> Data Control Lang. Control sobre permisos, transacciones

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

Comandos DCL ()

A

GRANT –> Dar permisos
REVOKE –> Quitar permisos
COMMIT/ROLLBACK –> Confirmar o deshacer cambios en una TX
SAVEPOINT –> Para no deshacer todo (RELEASE SAVEPOINT)
SET TRANSACTION/START TRANSATION –>Configuración e inicio de una TX

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

Comandos DDL

A

CREATE
DROP
ALTER

Se aplica para

TABLE / INDEX / VIEW / PROCEDURE / SEQUENCE / FUNCTION / TYPE / TRIGGER /DOMAIN /SCHEMA / ROLE

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

Comandos DML

A

SELECT
UPDATE
INSERT
DELETE
MERGE
TRUNCATE (no Tx)

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

Sentencia DELETE

A

DELETE FROM <tabla> WHERE <condiciones></condiciones></tabla>

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

Para que sirve SAVEPOINT y como se libera

A

SAVEPOINT <nombre> Sirve para 'guardar partida' y que no se haga un ROLLBACK de todo lo ejectuado. El punto de salvado hay que liberarlo cuando corresponda con RELEASE SAVEPOINT <nombre></nombre></nombre>

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

¿Cómo crearias una tabla?

A

CREATE TABLE nombreTabla
(
id CHAR(4) NOT NULL,
id_table2 CHAR(4) NOT NULL,
nombre VARCHAR(40) NOT NULL,
zip CHAR(6) NOT NULL,
….
CONSTRAINT pk_id PRIMARY KEY (id),
CONSTRAINT fk_id_table2 FOREING KEY (id_table2) REFERENCE table2 (id) [ON DELETE/UPDATE CASCADE],
CONSTRAINT uniq_zip UNIQUE (zip),
CONSTRAINT chk_zip CHECK(zip LIKE ‘[0-9][0-9][0-9][0-9][0-9][A-Z]’),
)

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

Cómo modificarias una tabla

A

ALTER TABLE nombreTabla <cosa que queramos modificar/añadir>

ALTER TABLE <nombreTabla>ADD COLUMN <nombreCol> <tipo> <atributos> ==>
ALTER TABLE tabla1 ADD COLUMN precio FLOAT(6,2) NOT NULL,</atributos></tipo></nombreCol></nombreTabla>

ALTER TABLE <nombreTabla>ALTER COLUMN <nombreColum> [SET DEFAULT valor | SET NOT NULL | SET DATA TYPE <tipo_datos>] ==>
ALTER TABLE tabla1 ALTER COLUMN precio SET DATA TYPE NUMBER(10),
ALTER TABLE tabla1 ALTER COLUMN precio SET DEFAULT 10,</tipo_datos></nombreColum></nombreTabla>

ALTER TABLE <nombreTabla>ADD COSTRAINT <nombreCostraint> <type> <campo> [<info>] ==>
ALTER TALBE tabla1 ADD CONTRAINT fk_id_tabla2 FOREING KEY(id_tabla2) REFERENCE tabla2(id)</info></campo></type></nombreCostraint></nombreTabla>

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

Cómo damos y quitamos permisos en SQL

A

GRANT y REVOKE

(GRANT-ON-TO) (REVOKE-ON-FROM)

GRANT SELECT, INSERT, DELETE ON tabla1 TO user1 [WITH GRANT OPTION]

REVOKE DELETE ON tabla1 FROM user1

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

Como dirias que se borre / actualice en cascada

A

CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id)
ON DELETE CASCADE
);

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

Niveles de aislamiento

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

Como se hace correctamente una sentencia INSERT

A

INSERT INTO <nombreTabla> (col1, col2, col3....) VALUES (val1, val2, val3)</nombreTabla>

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

Como se hace correctamente una sentencia DELETE

A

DELETE FROM <nombreTabla> WHERE <condición></condición></nombreTabla>

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

Como se hace correctamente una sentencia UPDATE

A

UPDATE <nombreTabla> SET <nombreCol> = <valor> WHERE <condición></condición></valor></nombreCol></nombreTabla>

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

Como se hace correctamente una sentencia SELECT

A

SELECT col1, col2, col3…. FROM <nombreTabla> WHERE <condición></condición></nombreTabla>

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

Cómo se usa LIKE

A

SELECT * FROM nombreTabla WHERE col1 LIKE ‘%texto%’

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

Cómo agrupamos en una SELECT

A

SELECT col1, min(col2), max(col3), avg(col4), count(col5)…..<de>
FROM nombreTabla
GROUP BY col1
HAVING min(col2) > 5</de>

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

Cómo ordemanamos una select

A

SELECT col1, col2, col3 …. FROM nombreTabla ORDER BY col1 <ASC / DESC>

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

Qué hace y cómo se usa DISTINCT

A

Afecta a todas las columnas de una select. Evita campos repetidos y te muestra solo una fila de cada ocurrencia.

SELECT DISTINCT col1, col2, col3 …. FROM nombreTabla WHERE <condicion></condicion>

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

Qué operadores tenemos para subconsultas

A

SELECT <cols> FROM <tabla> WHERE EXISTS (<subquery>)</subquery></tabla></cols>

SELECT <cols> FROM <tabla> WHERE col1 [NOT] IN (select col1 from...)</tabla></cols>

SELECT <cols> FROM <tabla> WHERE col1 <operartor[<>=]> [ANY/SOME/ALL] (select col1 from...)</tabla></cols>

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

Clases de JOIN

A

CROSS JOIN –> Multiplica las dos tablas. Es lo mismo que poner select …. from tabla1, tabla2

INNER JOIN –> Muestra las tuplas de las tablas coincidentes en el campo que se determine como pivote

LEFT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 (a la izquierda) y dejando los datos de la tabla 2 a null si no hay ocurrencias

RIGHT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 2 (a la derecha) y dejando los datos de la tabla 1 a null si no hay ocurrencias

FULL [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 y la tabla2 (a izquierda y derecha) y dejando los datos de a null si no hay ocurrencias en alguna de las tablas

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

Sintaxis CROSS JOIN

A

SELECT * FROM tabla1, tabla2 where …….

SELECT * FROM tabla1 CROSS JOIN tabla2 where …….

29
Q

Sintaxis INNER JOIN

A

SELECT * FROM tabla1 AS t1 INNER JOIN tabla2 AS t2 ON t1.col = t2.col

30
Q

Sintaxis LEFT JOIN

A

SELECT * FROM tabla1 AS t1 LEFT JOIN tabla2 AS t2 ON t1.col = t2.col

31
Q

Sintaxis RIGHT JOIN

A

SELECT * FROM tabla1 AS t1 RIGHT JOIN tabla2 AS t2 ON t1.col = t2.col

32
Q

Sintaxis FULL JOIN

A

SELECT * FROM tabla1 AS t1 FULL JOIN tabla2 AS t2 ON t1.col = t2.col

33
Q

Qué hacen y que tipos de unión hay en SQL

A

Junta los datos de varias tablas a través de sus select. Dependiendo del tipo elimina duplicados o no.

UNION –> elimina duplicados
UNION ALL –> no elimina duplicados

SELECT t1.campoChar, t1.campoNumber FROM nombreTabla1 AS t1
UNION [ALL]
SELECT t2.campoChar, t2.campoNumber FROM nombreTabla2 AS t2

34
Q

Que hace un MERGE en SQL

A

Junta en una misma tabla los datos de dos. Tendremos una tabla SOURCE y otra TARGET, pasaremos datos desde SOURCE a TARGET añadiendo los datos nuevos y actualizando los que ya existen a menos que indiquemos lo contrario.

MERGE INTO nombreTablaTarget AS tt
USING nombreTablaSource AS ts
ON <condición>
WHEN MATCHED THEN UPDATE SET col1 =.....
WHEN NOT MATCHED THEN INSERT (col1, col2...) VALUES (col1, col2...)</condición>

35
Q

Que es un TRIGGER y como se usa

A

Disparador. De fila o de sentencia, se activan cuado se actua sobre una fila o cuando se lanza una sentencia. Ej.: cuando se inserta una fila o cuando se lanza un comando DELETE.

CREATE TRIGGER nombreTrigger
[AFTER/BEFORE/INSTEAD OF] [UPDATE/DELETE/INSERT] ON nombreTabla FOR EACH ROW
BEGIN
INSERT INTO nombreTabla (col1, col2….) VALUES (val1, val2….)
END;

36
Q

Indique el tipo de correspondencia necesaria para representar en el diagrama E/R la relacion que falta entre los tipos de zona y los tramos de las calles.

a) A través de una relación 0:1 entre TipoZona y TramoCalle

b)A través de una relación N:M entre TipoZona y TramoCalle.

c) Através de una relación 1:1 entre TipoZona y TramoCalle.

d) Através de una relación 1:N entre TipoZona y TramoCalle.

A

d) Através de una relación 1:N entre TipoZona y TramoCalle.

37
Q

¿Cuál de las siguientes tablas se obtiene de transformar la entidad Calle del modelo EIR al modelo físico, teniendo en
cuenta las asociaciones que tieno? (PK es Primary Key y FK es Foreign Key)

a) calle(idCalle (PK), nombre)

b) calle(idCalle (PK), idTramoCalle (FK), nombre)

c) calle(idCalle (PK), idMunicipio (FK), nombre)

d) calle(idCelle (PK), idMunicipio (FK), idTramoCalle(FK), nombre)

A

c) calle(idCalle (PK), idMunicipio (FK), nombre)

38
Q

Las bases de datos relacionales ofrecen propiedades ACID. Dicho acrónimo se refiere a:

a) Atomicidad, Consistencia, Aislamiento y Durabilidad.

b) Atomicidad, Coherencia, Integridad y Distribución.

c) Disponibilidad, Coherencia, Intensidad y Durabilidad.

d) Atomicidad, Consistencia, Aislamiento y Disponibilidad.

A

a) Atomicidad, Consistencia, Aislamiento y Durabilidad.

39
Q

Con respecto a las sentencias del lenguaje SQL, indique la respuesta INCORRECTA:

a) Sentencia DELETE sirve para borrar en forma sencilla distintos objetos como por ejemplo base de datos, tablas o índices.

b) La sentencia INSERT agrega uno o más registros a una tabla en una base de datos relacional.

c) La sentencia UPDATE modífica los valores de un conjunto de registros existentes en una tabla.

d) La sentencia GRANT se utiliza para dar permisos a un usuario.

A

a) Sentencia DELETE sirve para borrar en forma sencilla distintos objetos como por ejemplo base de datos, tablas o índices.

40
Q

Señale la respuesta INCORRECTA. Los tipos más corrientes de anomalías de base de datos son:

a) Lecturas no repetibles.

b) Lecturas hundidas.

c) Lecturas sucias.

d) Lecturas fantasma.

A

b) Lecturas hundidas.

41
Q

En SQL, ¿cómo se pueden eliminar los datos en una tabla, pero no la propia definición de la tabla?

a) DROP TABLE

b) DELETE

c) REMOVE

d) ERASE

A

b) DELETE

42
Q

Para crear una tabla llamada Usuario, ¿qué sentencia SQL debemos ejecutar?

a) ALTER TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));

b) INSERT TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));

c) CREATE TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));

d) DROP TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
motor de Base de Datos ORACLE, indique cuál de los siguientes es un

A

c) CREATE TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));

43
Q

Si fuese el motor de BBDD ORACLE, indique cuál de los siguientes es un lenguaje de procedimiento cuya sintaxis permite insertar sentencias SQL y se almacena compilado dentro de la base de datos:

a) TRANSACT SOL

b) PL/SQL

c) FORTRAN

d) COBOL

A

b) PL/SQL

44
Q

¿Cuál de las siguientes opciones NO se corresponde con una de las 12 Reglas de Codd?

a) Regla de la no subversión. Si el sistema ofrece una interfaz de acceso a bajo nivel, dicho acceso no se podrá usar para
subvertir el sistema (por ejemplo para sortear restricciones de integridad o seguridad).

b) Tratamiento sistemático de valores nulos. El sistema debe permitir que haya campos nulos. Se debe disponer de una
representación de valores desconocidos y no aplicables diferente de los valores nomales.

c) Dependencia de la distribución. Que la base de datos se almacene o gestione de forma distribuida en varios servidores
afecta al uso de la misma y a la programación de las aplicaciones de usuario.

d) Catálogo dinámico en línea basado en el modelo relacional. El sistema debe soportar un catálogo en línea, el catálogo
relacional, que da acceso a la estructura de la base de datos y que debe ser accesible a los usuarios autorizados.

A
45
Q

Teniendo una base de datos relacional, con una tabla “Empleados” con campos (Id, Nombre, Puesto, Salario,….),
indique cuál sería una forma válida de comenzar la creación de un Trigger en ANSI SQL, si lo que se quiere validar es un
cambio de valor del campo “Salario”:

a) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario OF TABLE Empleados

b) CREATE NEW TRIGGER BEFORE UPDATE OF Selario ON Empleados

c) CREATE TRIGGER Validar_salario IN Empleados BEFORE UPDATE OF Salario

d) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario ON Empleados

A

d) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario ON Empleados

46
Q

Si utilizamos el gestor de base de datos Oracle (v.10g), ¿qué podriamos hacer si dentro de una transacción de la base de datos se quiere establecer un punto de recuperación?

a) Utilizar la sentencia SAVEPOINT y así definir un punto de salvaguarda dentro de una transacción.

b) Ulilizar la sentencia ROLLBACK y asf definir un punto de salvaguarda dentro de una transacción

c) Usarlos comandos GRANT para dar permisos adecuados de administrador DBA sobre las tablas.

d) Ulilizar la sentencia RECOVERPOINT y así definir un puntode salvaguarda dentro de una transacción.

A

a) Utilizar la sentencia SAVEPOINT y así definir un punto de salvaguarda dentro de una transacción.

47
Q

Enla base de dat os el campo “IdFormaAcceso” de la tabla “Proceso” es de tipo char(1) y puede tomar los valores “L”
(Ingreso Libre) y “P” (Promocion Interna). ¿Qué instrucción deberá utilizar para obtener un listado de todos los
IdProceso de forma que aparezca el nombre descriptivo de la correspondiente Forma de Acceso?

a) SELECT IdProceso, IF IdFomaAcceso = ‘L’ THEN ‘Ingreso Libre’ ELSE ‘Promocion Interna’ ENDIF AS FormaAcceso
FROM Proceso

b) SELECT IdProceso, CASE IdFormaAcceso WHEN ‘L’ THEN ‘Ingreso Libre’ WHEN ‘P’ THEN ‘Promocion Interna’ END AS
FormaAcceso FROM Proceso

c) SELECT IdProceso, SWITCH IdFormaAcceso (L’
Proceso

d) SELECT IdProceso, IIF(IdFormaAcceso, ‘L’ = ‘Ingreso Libre’,’P”
Ingreso Libre’, ‘P’ = ‘Promocion Interna’) AS FormaAcceso FROM
= ‘Promocion Intema’) AS FormaAcceso FROM Proceso

A

b) SELECT IdProceso, CASE IdFormaAcceso WHEN ‘L’ THEN ‘Ingreso Libre’ WHEN ‘P’ THEN ‘Promocion Interna’ END AS
FormaAcceso FROM Proceso

48
Q

También le consultan sobre la sentencia SQL a utilizar para obtener el listado del identificador de los opositores
(IdOpositor) que tienen más de una entrada en la tabla Solicitud.

a) SELECT IdOpositor, COUNT(IdSolicitud) AS NumeroSolicitudes FROM Solicitud GROUP BY IdOpositor WHERE
NumeroSolicitudes > 1

b) SELECT IdOpositor, IdSolicitud FROM Solicitud WHERE COUNT(IdSolicitud) > 1

c) SELECT IdOpositor, COUNT(1dSolicitud) FROM Solicitud WHERE COUNT(1dSoiicitud) > 1 GROUP BY IdOpositor

d) SELECT IdOpositor, COUNT (dSoliita) FROM Soliciud GROUP BY IdOpositor HAVING COUNT(dSaicitud) > 1

A

d) SELECT IdOpositor, COUNT (dSoliita) FROM Soliciud GROUP BY IdOpositor HAVING COUNT(dSaicitud) > 1

49
Q

¿Con qué instrucción ANSI SQL incrementaría un diez por ciento el valor de la columna Duracion para todos los
registros de la tabla Ejercicio?

a) UPDATE Duracion = Duracion + (0.10 * Duracion) FROM Ejercicio

b) UPDATE Ejercicio SET Duracion = Duracion * 1.1

c) UPDATE TABLE Ejercicio (Duracion = Duracion + 10%)

d) UPDATE SET Duracion *= 1.10 FROM Ejercicio

A
50
Q

¿Con qué instrucción ANSI SQL incrementaría un diez por ciento el valor de la columna Duracion para todos los
registros de la tabla Ejercicio?

a) UPDATE Duracion = Duracion + (0.10 * Duracion) FROM Ejercicio

b) UPDATE Ejercicio SET Duracion = Duracion * 1.1

c) UPDATE TABLE Ejercicio (Duracion = Duracion + 10%)

d) UPDATE SET Duracion *= 1.10 FROM Ejercicio

A

b) UPDATE Ejercicio SET Duracion = Duracion * 1.1

51
Q

Si el campo DNI de la tabla Opositor es de tipo char(9), ¿cuál es la instrucción SQL para obtener el listado de todos los
registros de la tabla Opositor cuyo DNI empieza por 3?

a) SELECTFROM Opositor WHERE DNI = 3

b) SELECT * FROM Opositor WHERE DNI IN (‘3.’)

c) SELECT * FROM Opositor WHERE DNI LIKE ‘3%’

d) SELECT DNI(3*) FROM Opositor

A

c) SELECT * FROM Opositor WHERE DNI LIKE ‘3%’

52
Q

Dada una tabla ‘Personal’ con una columna ‘lugar’, se quiere obtener el número de personas en cada lugar, cuando haya más de 10 personas en el mismo. Señale la sentencia SQL correcta:

a) SELECT lugar, Count() AS numPersonas FROM Personal GROUP BY lugar HAVING Count()>10

b) SELECT lugar, Count(*)>10 AS numPersonas FROM Personal GROUP BY lugar

c) SELECT lugar, Count() AS numPersonas FROM Personal WHERE Count()>10 GROUP BY lugar

d) SELECT lugar, Count(*) AS numPersonas FROM Personal WHERE Count(lugar)>10

A

a) SELECT lugar, Count() AS numPersonas FROM Personal GROUP BY lugar HAVING Count()>10

53
Q

En relación a las sentencias utilizadas en SQL y su tipologfa, indique la afirmación INCORRECTA:

a) Las sentencias de tipo DML se utilizan para manipulación de datos e incluyen instrucciones como SELECT, INSERT o
DELETE.

b) Las sentencias de control de datos permiten la gestión de privilegios a los usuarios mediante GRANT o REVOKE

c) Las sentencias de lipo DCL permiten la definición de estructuras de dalos mediante CREATE TABLE o DROP TABLE.

d) Las sentencias de control de transacciones Incluyen las instrucciones COMMIT y ROLLBACK.

A

c) Las sentencias de lipo DCL permiten la definición de estructuras de dalos mediante CREATE TABLE o DROP TABLE.

54
Q

Dado un procedimiento almacenado en SQL Server con la cabecera
CREATE PROCEDURE getEmployees @LastName varchar(50), @FirstName nvarchar(50)
¿Cuál NO seria una instrucción vélida para ejecutar dicho procedimiento?

a) EXECUTE getEmployees OFirstName = NPilar, @LastName = N’Rojas’;

b) EXEC getEmployees @LastName = N’Rojas’, @FirstName = NPilar;

c) EXECUTE getEmployees N’Rojas’, N’Pilar’;

d) EXEC gelEmployees @LastName = N’Rojas’, N’Pilar’;

A

a) EXECUTE getEmployees OFirstName = NPilar, @LastName = N’Rojas’;

55
Q

El sistema cuenta con una tabla de inscripciones antiguas, incripcion, que contiene datos de ciudadanos que ya han realizado acciones formativas anteriormente. Teniendo en cuenta que el campo NIF es PK de Ciudadano y FK de Inscripcion, se desea saber qué ciudadanos no han realizado ninguna inscripción en anteriores convocatorias. ¿Qué
sentencia SQL utilizaría para obtener dichos datos?

a) SELECT Ciudadano.NIF
FROM Ciudadano LEFT JOIN Inscripcion ON
ciudadano.NIF = Inscripcion.NIF.
WHERE InscripcionNIF IS null

b) SELECT Ciudadano.NIF FROM Ciudadano INNER JOIN Inscripcion ON Ciudadano.NIF = Inscripcion NIF
WHERE Inseripcion NIF IS null

c) SELECT Ciudadano.NIF FROM Ciudadano LEFT JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF

d) SELECT DISTINCT (Ciudadano.NIF) FROM Ciudadano LEFT JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF
GROUP BY Ciudadano NIF

A

a) SELECT Ciudadano.NIF
FROM Ciudadano LEFT JOIN Inscripcion ON
ciudadano.NIF = Inscripcion.NIF.
WHERE InscripcionNIF IS null

56
Q

Antes de poner en marcha el sistema, se ha decidido categorizar las aulas por edificios. Para ello se crea una nueva
tabla llamada Edificio (idEdificio (PK), nomEdificio, localizacion) y se debe añadir un nuevo campo, idEdif enlatabla
Aula. Teniendo en cuenta que un aula pertenece a un único edificio y un edificio podrá contener múltiples aulas, ¿cuál
sería la sentencia SQL adecuada para crear la tabla Aula según las premisas indicadas?

a) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio
INT NOT NULL, FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdficio))

b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio
INTNOT NULL, PRIMARY KEY (IdAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdíficio))

c) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio
INTNOT NULL, PRIMARY KEY (idAula))

d) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEcificio
INTNOT NULL)
Una vez creada la tabla

A

b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio
INTNOT NULL, PRIMARY KEY (IdAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdíficio))

57
Q

Una vez creada la tabla Aula le piden obtener el número de aulas existentes por edificio. ¿Qué sentencia SQL
ejecutaría?

a) SELECT COUNT(*) FROM Aula WHERE idEdificio IS NOT NULL

b) SELECT idEcificio, COUNT(*) FROM Aula INNER JOIN Ecificio ON Aula.idEdificio = Edificio.idEdificio

c) SELECT idEdificio, COUNT() FROM Aula WHERE COUNT()>0

d) SELECT idEdificio, COUNT(*) FROM Aula GROUP BY idEdificio

A

d) SELECT idEdificio, COUNT(*) FROM Aula GROUP BY idEdificio

58
Q

En el ámbito del Lenguaje Control de Transacciones, ¿en qué consiste un savepoint?

a) Permite insertar un punto de parada en la ejecución de la transacción para monitorizar su ejecución.

b) Permile hacer una copia de seguridad de la base de datos a partir de un punto concreto de la transacción.

c) Permite escribir en ficheros de log a partir de un punto definido en la transacción.

d) Permite marcar un punto de recuperación en una transacción para poder revertirla hasta dicho punto mediante ROLLBACK.

A

d) Permite marcar un punto de recuperación en una transacción para poder revertirla hasta dicho punto mediante ROLLBACK

59
Q

¿En qué consiste el estandar SQL/PSM?

A

Añade funcionalidades procedurales. Procedimientos almacenados. En Oracle PL/SQL y en SQL Server T-SQL

60
Q

Funcionamiento de una INNER JOIN

A

Intersección de dos tablas (los registros resultantes tendrán una coincidencia de valores en funcion de una condición)

select …… form tabla 1 [inner] join tabla2 on tabla1.campo1 = tabla2.campo2

61
Q

Tipo de producto SQLite

A

Una libreria que soporta operaciones de SQL/ACID a nivel ‘local’

NOTA: Es la tecnología que usa Android para almacenamiento

62
Q

¿En que consiste una transacción? Siglas ACID

A

Conjunto de sentencias SQL que se tienen que ejecutar de forma atomica (o todo o nada)

NOTA: Sentencias de control relacionas con transacciones (TCL):
*Commit
*Rollback
*Savepoint /Release savepoint
*Set transaction para configurar el nivel de ailamientoç
*Start transaction para determinar el inicio de la transaccion

A tomicity
C onsistency
I solation
D urability

63
Q

Sentencias de DML

A

Data Management
SELECT … FROM … WHERE … GROUP BY…. HAVING ….ORDER
DELETE FROM tabla WHERE …..
UPDATE tabla SET
INSERT INTO tabla (….) VALUES (….)
TRUNCATE TABLE
MERGE INTO

64
Q

¿Para que sirve una restricción UNIQUE?

A

Se define sobre una columna para que no admita valores duplicados. Si admite NULL

NOTA: una clave candidata tendria que llevar UNIQUE + NOT NULL

65
Q

Sintaxis REVOKE

A

REVOKE <permisos> ON <ojeto> FROM <garantee></garantee></ojeto></permisos>

66
Q

Uso de un Trigger

A

Es una rutina de negocio que se ejecuta cuando se detecta cierto ‘evento’

NOTA: Este evento puede ser INSERT, UPDATE o DELETE
NOTA: Podemos EJECUTAR la rutina (cuerpo del TRIGGER) antes o depues del evento
NOTA: Podemos EJECUTAR la rutina por cada fila afectada o a nivel de toda la sentencia que ha provocado el disparo

OJO: Entender bien el INSTEAD OF (Solo tiene efecto el cuerpo del trigger y no el evento)

67
Q

Cuando se puede usar la clausula HAVING

A

Cuando hagamos grupos con GROUP BY (filto de grupos)

68
Q

Uso de la función AVG

A

Función de agregado para el cálculo de la meda arigmetica

NOTA: Se puede usar sin grupos (ej. select avg(precio) from producto)