T6 – SQL ODBC JDBC Flashcards

1
Q

Indique la cláusula necesaria para crear el esquema de la base de datos y hacer que todos los objetos creados en el mismo tengan como propietario al usuario museo:

a) CREATE SCHEMA MUSEDCDLC ON ROLE museo;
b) CREATE SCHEMA museoCdIC ON USER museo;
c) CREATE SCHEMA museoCdlC TO USER museo;
d) CREATE SCHEMA museoCdlC AUTHORIZATION museo;

2015 TAI -LI-BIII

A

Indique la cláusula necesaria para crear el esquema de la base de datos y hacer que todos los objetos creados en el mismo tengan como propietario al usuario museo:

a) CREATE SCHEMA MUSEDCDLC ON ROLE museo;
b) CREATE SCHEMA museoCdIC ON USER museo;
c) CREATE SCHEMA museoCdlC TO USER museo;

d) CREATE SCHEMA museoCdlC AUTHORIZATION museo;

create schema [esquema] [authorization usuario][lista_elem_esquema];

Un elemento de esquema puede ser uno de los siguientes:

  • Definición de dominio.
  • Definición de tabla.
  • Definición de vista.
  • Definición de restricción.
  • Definición de privilegio.

Eliminación de la definición de un esquema relacional:

drop schema esquema {restrict | cascade};

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

En un momento determinado del proyecto se crea el usuario de la base de datos “museo_consulta” y se necesita que se le asignen permisos de SELECT en la tabla ENTIDADES_EXTERNAS. La sentencia para ello sería:

a) GRANT SELECT IN TABLE ENTIDADES_EXTERNAS TO museo_consulta;
b) GRANT SELECT ON ENTIDADES_EXTERNAS TO museo_consulta;
c) GRANT USAGE SELECT TO ENTIDADES_EXTERNAS ON museo_consulta;
d) GRANT SELECT TO ENTIDADES_EXTERNAS ON museo_consulta;

2015 TAI -LI-BIII

A

En un momento determinado del proyecto se crea el usuario de la base de datos “museo_consulta” y se necesita que se le asignen permisos de SELECT en la tabla ENTIDADES_EXTERNAS. La sentencia para ello sería:

a) GRANT SELECT IN TABLE ENTIDADES_EXTERNAS TO museo_consulta;

b) GRANT SELECT ON ENTIDADES_EXTERNAS TO museo_consulta;

c) GRANT USAGE SELECT TO ENTIDADES_EXTERNAS ON museo_consulta;
d) GRANT SELECT TO ENTIDADES_EXTERNAS ON museo_consulta;

GRANT privilegios ON** object **TO usuarios/roles [WITH GRANT OPTION]

Privilegios:

  • SELECT + lista_columnas
  • UPDATE+ lista_columnas
  • INSERT+ lista_columnas
  • DELETE
  • ALL PRIVILEGES
  • REFERENCES - (Salió en PI 2018)
  • TRIGGER
  • UNDER
  • USAGE (ej.Secuencia)
  • EXECUTE

* WITH GRANT OPTION delega en otro la capacidad de dar permisos.

< privilegios > = INSERT | SELECT | UPDATE |DELETE |

EXECUTE ( procedimientos almacenados) |

CONNECT (conexión a un esquema o bbdd) |

USAGE (conexión pero sin privilegios)

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

Con objeto de optimizar las consultas a la base de datos le solicitan crear un índice en la tabla ACTIVIDADES para la columna identidadexterna, además le especifican que el índice debe ser tipo B-TREE y estará en el tablespace t_indices (ya creado previamente). la consulta para el PostgreSQL será:

a) CREATE BTREE INDEX nuevo_indice USING ACTIVIDADES (identidadexterna) ON t_indices;
b) CREATE INDEX nuevo_indice ON ACTIVIDADES USING btree (identidadexterna) TABLESPACE t_indices;
c) CREATE BTREE INDEX nuevo_indice ON ACTIVIDADES (identidadexterna) IN TABLESPACE t_indices;
d) CREATE BTREE INDEX nuevo_indice ON ACTIVIDADES (identidadexterna) WITH TABLESPACE t_indices;

TAI-2015-LI-BIII

A

Con objeto de optimizar las consultas a la base de datos le solicitan crear un índice en la tabla ACTIVIDADES para la columna identidadexterna, además le especifican que el índice debe ser tipo B-TREE y estará en el tablespace t_indices (ya creado previamente). la consulta para el PostgreSQL será:

a) CREATE BTREE INDEX nuevo_indice USING ACTIVIDADES (identidadexterna) ON t_indices;

b) CREATE INDEX nuevo_indice ON ACTIVIDADES USING btree (identidadexterna) TABLESPACE t_indices;

c) CREATE BTREE INDEX nuevo_indice ON ACTIVIDADES (identidadexterna) IN TABLESPACE t_indices;
d) CREATE BTREE INDEX nuevo_indice ON ACTIVIDADES (identidadexterna) WITH TABLESPACE t_indices;

NOTA: Tanto en mysql, progress, oracle.

El formato es CREATE INDEX nombre ON……

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

Insertar una constraint en la cláusula SQL de creación de la tabla RESERVAS para el campo de clave ajena ‘idcliente’, de forma que NO ejecute ninguna acción en la tabla referenciada en los casos de UPDATE o DELETE:

a) CONSTRAINT con_fk FOREIGN KEY (idcliente) ON CUENTES (id) MATCH SIMPLE WITH NO ACTION;
b) CONSTRAINT con_fk FOREIGN KEY ON idcliente MATCH SIMPLE WITH CUENTES (id) ON UPDATE NO ACTION ON DELETE NO ACTION;
c) CONSTRAINT con_fk FOREIGN KEY (idcliente) REFERENCES CUENTES (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;
d) CONSTRAINT con_fk FOREIGN KEY (idcliente) ON CUENTES (id) MATCH SIMPLE WITH UPDATE NO ACTION WITH DELETE NO ACTION;

2015-TAI-LI-BIII

A

Insertar una constraint en la cláusula SQL de creación de la tabla RESERVAS para el campo de clave ajena ‘idcliente’, de forma que NO ejecute ninguna acción en la tabla referenciada en los casos de UPDATE o DELETE:

a) CONSTRAINT con_fk FOREIGN KEY (idcliente) ON CUENTES (id) MATCH SIMPLE WITH NO ACTION;
b) CONSTRAINT con_fk FOREIGN KEY ON idcliente MATCH SIMPLE WITH CUENTES (id) ON UPDATE NO ACTION ON DELETE NO ACTION;

c) CONSTRAINT con_fk FOREIGN KEY (idcliente) REFERENCES CUENTES (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION;

d) CONSTRAINT con_fk FOREIGN KEY (idcliente) ON CUENTES (id) MATCH SIMPLE WITH UPDATE NO ACTION WITH DELETE NO ACTION;

Recordemos el ejemplo de clase:

CONSTRAINT pk-dist-id PRIMARY KEY (dist-id),

CONSTRAINT fk-emp-id

FOREIGN KEY (sales-rp)

REFERENCES empleados (empid)

CONSTRAINT uniq-zip UNIQUE (zip)

CONSTRAINT chk-zip CHECK (zip like ‘[0-9] ‘[0-9] ‘[0-9] ‘[0-9] ‘[0-9]’)

);

* Al insertar una fila en la tabla de distribuidores, se va a ir a la tabla empleados a ese valor en la columna empid. Integridad Referencial.

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

La opción MATCH SIMPLE no tiene mucho sentido en la consulta de la pregunta anterior ya que sirve para que, en caso de que la clave ajena esté formada por varios campos, permitir que alguno de ellos tenga valores nulos aunque los otros no lo tengan. Suponga que en un momento determinado del ciclo de vida del proyecto aparece una nueva tabla con una clave ajena formada por varios campos y quisiéramos restringir para que no se permita que un campo tenga valor nulo hasta que los demás campos de la clave ajena sean nulos, usaríamos la opción:

a) MATCH ALL
b) MATCH FULL
c) MATCH FORBIDEN
d) MATCH COMPLEX

2015-TAI-LI-BIII

A

La opción MATCH SIMPLE no tiene mucho sentido en la consulta de la pregunta anterior ya que sirve para que, en caso de que la clave ajena esté formada por varios campos, permitir que alguno de ellos tenga valores nulos aunque los otros no lo tengan. Suponga que en un momento determinado del ciclo de vida del proyecto aparece una nueva tabla con una clave ajena formada por varios campos y quisiéramos restringir para que no se permita que un campo tenga valor nulo hasta que los demás campos de la clave ajena sean nulos, usaríamos la opción:

a) MATCH ALL

b) MATCH FULL

c) MATCH FORBIDEN
d) MATCH COMPLEX

¡OJO NO VIENE EN LOS APUNTES!

La política de MATCH cuando usamos claves ajenas con múltiples valores, puede ser: MATCH SIMPLE, MATCH PARTIAL, MATCH FULL.

  • MATCH SIMPLE: si al menos una columna de referencia es nula, la fila de la tabla de referencia pasa la verificación de restricción. Si todas las columnas de referencia no son nulas, entonces la fila pasa la verificación de restricción si y solo si hay una fila de la tabla referenciada que coincida con todas las columnas de referencia.
  • MATCH PARTIAL: si todas las columnas de referencia son nulas, entonces la fila de la tabla de referencia pasa la verificación de restricción. Si al menos una columna de referencia no es nula, la fila pasa la verificación de restricción si y solo si hay una fila de la tabla referenciada que coincida con todas las columnas de referencia no nula.
  • MATCH FULL: si todas las columnas de referencia son nulas, entonces la fila de la tabla de referencia pasa la verificación de restricción. Si todas las columnas de referencia no son nulas, entonces la fila pasa la verificación de restricción si y solo si hay una fila de la tabla referenciada que coincida con todas las columnas de referencia. Si alguna columna de referencia es nula y otra columna de referencia no es nula, entonces la fila de la tabla de referencia viola la verificación de restricción.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

7. La sentencia de creación de la tabla CLIENTE para el proyecto es la siguiente:

CREATE TABLE CLIENTE

( id bigint NOT NUll DEFAUlT nextval«(‘seq_clientes’::text)::regclass),

nombre text NOT NUll,

cif text NOT NUll,

grupoedad text NOT NUll,

direccion text NOT NUll,

activo varchar(l) NOT NUll,

CONSTRAINT con_c_cli_activo CHECK (activo::text = ‘s’::text OR activo::text = ‘n’::text)

)

Previamente se ha creado una secuencia de nombre seq_clientes. En este caso por motivos de funcionamiento interno se ha decidido que los valores del campo ‘id’ comiencen a partir del número 150, incrementando su valor en 1. La sentencia para crear dicha secuencia es:

a) CREATE SEQUENCE seq_clientes INCREASE 1 INIT 150;
b) CREATE SEQUENCE seq_clientes INIT 150;
c) CREATE SEQUENCE seq_clientes START 150;
d) CREATE SEQUEN CE seq_clientes INCREASE 1 BEGIN 150;

2015-TAI-LI-BIII

A

7. La sentencia de creación de la tabla CLIENTE para el proyecto es la siguiente:

CREATE TABLE CLIENTE

( id bigint NOT NUll DEFAUlT nextval«(‘seq_clientes’::text)::regclass),

nombre text NOT NUll,

cif text NOT NUll,

grupoedad text NOT NUll,

direccion text NOT NUll,

activo varchar(l) NOT NUll,

CONSTRAINT con_c_cli_activo CHECK (activo::text = ‘s’::text OR activo::text = ‘n’::text)

)

Previamente se ha creado una secuencia de nombre seq_clientes. En este caso por motivos de funcionamiento interno se ha decidido que los valores del campo ‘id’ comiencen a partir del número 150, incrementando su valor en 1. La sentencia para crear dicha secuencia es:

a) CREATE SEQUEN CE seq_clientes INCREASE 1 INIT 150;
b) CREATE SEQUENCE seq_clientes INIT 150;

c) CREATE SEQUENCE seq_clientes START 150;

d) CREATE SEQUEN CE seq_clientes INCREASE 1 BEGIN 150;

CREATE SEQUENCE sequence_name

START [WITH] initial_value

INCREMENT BY increment_value

MINVALUE minimum value

MAXVALUE maximum value CYCLE|NOCYCLE ;

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

En una Base de Datos relacional se quiere añadir una nueva columna en una tabla ya existente. ¿Qué sentencia SQL habría que utilizar?

a) add column
b) alter table
c) insert column
d) modify table

2015 TAI -LI

A

En una Base de Datos relacional se quiere añadir una nueva columna en una tabla ya existente. ¿Qué sentencia SQL habría que utilizar?

a) add column

b) alter table

c) insert column
d) modify table

SINTASIX :

ALTER TABLE nombre-tabla

ADD COLUMN nombre -col

Tambien se puede usar con las siguientes opciones:

ALTER TABLE nombre-tabla

  • ALTER COLUMN nombre-col
  • DROP COLUMNS nombre-col
  • ADD [CONTRAINT]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

En cuanto al lenguaje de interrogación de bases de datos SQL:

a) es un estándar de facto cuando hablamos de lenguajes de interrogación de bases de datos y su base es el álgebra relacional.
b) es el lenguaje de interrogación de bases de datos utilizado para hacer consultas sobre bases de datos estructuradas, relacionales, jerárquicas o en red.
c) es un lenguaje de consulta, pero para realizar otras operaciones sobre bases de datos como la definición/creación de las mismas se utiliza otro tipo de lenguajes.
d) no está implementado en gestores de bases de datos menores como Microsoft Access,

2015 TAI -LI

A

En cuanto al lenguaje de interrogación de bases de datos SQL:

a) es un estándar de facto cuando hablamos de lenguajes de interrogación de bases de datos y su base es el álgebra relacional.

b) es el lenguaje de interrogación de bases de datos utilizado para hacer consultas sobre bases de datos estructuradas, relacionales, jerárquicas o en red.
c) es un lenguaje de consulta, pero para realizar otras operaciones sobre bases de datos como la definición/creación de las mismas se utiliza otro tipo de lenguajes.
d) no está implementado en gestores de bases de datos menores como Microsoft Access,

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

Indicar qué resultado se puede esperar de esta consulta SQL sobre una tabla ‘COCHES_VENTA’ que mantiene el inventario de automóviles en un pequeño concesionario:

SELECT Modelo, Color, COUNT(Bastidor) AS Num FROM COCHES_VENTA GROUP BY Modelo, Color HAVING COUNT(Bastidor) <= 1

a) Le indica al dueño del concesionario que quizá debe plantearse adquirir más existencias de un cierto modelo y color de automóvil.
b) Le indica al dueño del concesionario todos los modelos distintos del concesionario. Es decir, un inventario organizado por modelos.
c) Le indica al dueño del concesionario todos los modelos distintos del concesionario. Es decir, un inventario organizado por modelos y color.
d) Le indica al dueño todos los modelos cuyo número de Bastidor es menor o igual a 1.

2015 TAI -LI

A

Indicar qué resultado se puede esperar de esta consulta SQL sobre una tabla ‘COCHES_VENTA’ que mantiene el inventario de automóviles en un pequeño concesionario:

SELECT Modelo, Color, COUNT(Bastidor) AS Num FROM COCHES_VENTA GROUP BY Modelo, Color HAVING COUNT(Bastidor) <= 1

a) Le indica al dueño del concesionario que quizá debe plantearse adquirir más existencias de un cierto modelo y color de automóvil.

b) Le indica al dueño del concesionario todos los modelos distintos del concesionario. Es decir, un inventario organizado por modelos.
c) Le indica al dueño del concesionario todos los modelos distintos del concesionario. Es decir, un inventario organizado por modelos y color.
d) Le indica al dueño todos los modelos cuyo número de Bastidor es menor o igual a 1.

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

¿Cuál de los siguientes términos se relaciona directamente con el control de integridad en SQL?

a) ROLLBACK
b) GRANT
c) CREATE INDEX
d) REVOKE

2015 TAI -LI

A

¿Cuál de los siguientes términos se relaciona directamente con el control de integridad en SQL?

a) ROLLBACK

b) GRANT
c) CREATE INDEX
d) REVOKE

DCL: LENGUAJE DE CONTROL DE DATOS.

SENTENCIAS TCL:

  • GRANT (dar permisos) / REVOKE (quitar permisos)
  • COMMINT / ROLLBACK (Confirmar o deshacer cambios de una transacción)
  • SAVEPOINT (para no deshacer todo) / RELEASE SAVEPOINT
  • SET TRANSACTION / START TRANSACTION (configuracion e incio de la tx)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Cuál es el propósito del lenguaje DDL en una base de datos?

a) Acceso a la base de datos de lectura pero no de escritura.
b) Acceder a la base de datos para leer, escribir o modificar la información.
c) Recuperar y eliminar una base de datos.
d) Definir la estructura lógica de una base de datos.

A

¿Cuál es el propósito del lenguaje DDL en una base de datos?

a) Acceso a la base de datos de lectura pero no de escritura.
b) Acceder a la base de datos para leer, escribir o modificar la información.
c) Recuperar y eliminar una base de datos.

d) Definir la estructura lógica de una base de datos.

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creción/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos .

INSERT, UPDATE, DELETE

  • DQL (Data Query Language) - SELECT
  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Qué sentencia de las siguientes pertenece a la categoría de DDL?

a) CREATE
b) UPDATE
c) SELECT
d) DELETE

A

¿Qué sentencia de las siguientes pertenece a la categoría de DDL?

a) CREATE

b) UPDATE
c) SELECT
d) DELETE

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creación/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos .

INSERT, UPDATE, DELETE

  • DQL (Data Query Language) - SELECT
  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION

SENTENCIAS DDL → Se compromete una vez ejecutadas (auto commit)

CREATE, ALTER, DROP

• TRUNCATE- Permite eliminar todas las filas de una tabla. Sería el equivalente a DELETE * FROM table ≈ DROP + CREATE No se puede volver atrás, no es transaccional. ¡OJO depende del gestor en SQL tambien te dicen que es transaccional!

TRUNCATE TABLEnombreTabla

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

¿Qué operador de SQL, utilizado junto la cláusula WHERE, permite buscar según un patrón determinado en una columna?

a) LIKE
b) IN
c) BETWEEN
d) HAVING

A

¿Qué operador de SQL, utilizado junto la cláusula WHERE, permite buscar según un patrón determinado en una columna?

a) LIKE

b) IN
c) BETWEEN
d) HAVING

SELECT p.FirstName, p.LastName, ph.PhoneNumber

FROM Person.PersonPhone AS ph

INNER JOIN Person.Person AS p

ON ph.BusinessEntityID = p.BusinessEntityID

WHERE ph.PhoneNumber LIKE ‘415%’

ORDER by p.LastName;

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

En SQL-92, ¿Cuál de las siguientes opciones representa Ia secuencia de parámetros en el orden correcto en que deberían aparecer en una sentencia?

a) SELECT - FROM - WHERE - ORDER BY - GROUP BY - HAVING
b) SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
c) SELECT - FROM - WHERE - GROUP BY - ORDER BY - HAVING
d) SELECT - FROM - WHERE - ORDER BY - HAVING - GROUP BY

2015 TAI -PI

A

En SQL-92, ¿Cuál de las siguientes opciones representa Ia secuencia de parámetros en el orden correcto en que deberían aparecer en una sentencia?

a) SELECT - FROM - WHERE - ORDER BY - GROUP BY - HAVING

b) SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY

c) SELECT - FROM - WHERE - GROUP BY - ORDER BY - HAVING
d) SELECT - FROM - WHERE - ORDER BY - HAVING - GROUP BY

SELECT [ALL | DISTINCT] item1, item2 AS alias

FROM tabla | vista as alias, …

[[tipo-join] JOIN <condicon_join> ]

WHERE <condicon_busqueda>

[AND | OR | NOT + <condicon_busqueda>] …

GROUP BY campo(s)

HAVING <condicon_sobre_los_grupos>

ORDER BY campo1 [ASC | DESC] , …

+ LIKE | BETWEEN

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

La sintaxis estándar de ANSI SQL que nos permite borrar una vista es:

a) ERASE VIEW
b) DELETE VIEW
c) CLEAR VIEW
d) DROP VIEW

2015 TAI -PI

A

La sintaxis estándar de ANSI SQL que nos permite borrar una vista es:

a) ERASE VIEW
b) DELETE VIEW
c) CLEAR VIEW
d) DROP VIEW

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

Con respecto a los lenguajes de interrogación de base de datos podemos decir que:

a) QUEL (Query Language) está basado en el algebra relacional.
b) QUEL está basado en el cálculo relacional de dominios.
c) QBE (Query By Example) está basado en el cálculo relacional de tuplas.
d) QBE está basado en el cálculo relacional de dominios.

TAI-2015-PI

A

Con respecto a los lenguajes de interrogación de base de datos podemos decir que:

a) QUEL (Query Language) está basado en el algebra relacional.
b) QUEL está basado en el cálculo relacional de dominios.
c) QBE (Query By Example) está basado en el cálculo relacional de tuplas.

d) QBE está basado en el cálculo relacional de dominios.

Cada uno de estos lenguajes cuales representa distintos estilos:

  • SQL está basado en el cálculo relacional de dominios.
  • QUEL está basado en el cálculo relacional de tuplas.
  • QBE está basado en el álgebra relacional y construcciones del cálculo relacional.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Indique que sentencia ANSI SQL utilizaría para deshacer una transacción:

a) ROLLBACK
b) BACKSTEP
c) REVOKE
d) UNDO

TAI-2015-PI

A

Indique que sentencia ANSI SQL utilizaría para deshacer una transacción:

a) ROLLBACK

b) BACKSTEP
c) REVOKE
d) UNDO

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

El estándar ANSI-SQL especifica estos tipos de cláusulas JOIN:

a) JOIN, LEFT / RIGHT [INNER], COMPLETE y CROSS.
b) INNER, LEFT / RIGHT / FULL [OUTER], y CROSS.
c) INNER, LEFT / RIGHT / BOTH [OUTER], y ACROSS.
d) INSIDE, OUTSIDE y LEFT / RIGHT /FULL [OUTER].

2015 TAI -LI

A

El estándar ANSI-SQL especifica estos tipos de cláusulas JOIN:

a) JOIN, LEFT / RIGHT [INNER], COMPLETE y CROSS.

b) INNER, LEFT / RIGHT / FULL [OUTER], y CROSS.

c) INNER, LEFT / RIGHT / BOTH [OUTER], y ACROSS.
d) INSIDE, OUTSIDE y LEFT / RIGHT /FULL [OUTER].

LEER JOINS:

  • CROSS JOIN ≈ FROM tabla1, tabla2 → producto cartesiano.
  • [INNER] JOIN → El resultado son las filas coincidentes según la condición.
  • LEFT [OUTER] JOIN → El resultado son todas las filas de la tabla de la “izquierda” y sino hay filas coincidentes se rellenan a NULL las columnas correspondientes de la tabla “de la derecha”.
  • RIGHT [OUTER] JOIN → Idem, pero manda la tabla de la derecha,
  • FULL [OUTER] JOIN → Manda las dos tablas

INNER JOIN

SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student

INNER JOIN StudentCourse

ON Student.ROLL_NO = StudentCourse.ROLL_NO;

LEFT JOIN ≈ LEFT OUTER JOIN

SELECT Student.NAME,StudentCourse.COURSE_ID

FROM Student

LEFT JOIN StudentCourse

ON StudentCourse.ROLL_NO = Student.ROLL_NO;

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

(FALTA GRAFICO) Para la nueva aplicación se desea añadir una funcionalidad que le permita obtener un listado de cada uno de los trabajadores con el nombre del director de su centro de trabajo. Deberá tener en cuenta que el campo “Director” de la Tabla “Ubicaciones” contiene el código de trabajador del Director. Para obtener el listado se ejecutará la sentencia:

a) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Trabajadores as j where t.ubicacion = u.ubicacion and u.director = j.codTrabajador
b) SELECT t.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u where t.ubicacion = u.ubicacion
c) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Directores as j where t.ubicacion = u.ubicacion and u.director = j.codTrabajador
d) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Trabajadores as j where t.ubicacion = u.ubicacion and t.codTrabajador = j.codTrabajador

2017 TAI -LI-BIII

A

(FALTA GRAFICO)Para la nueva aplicación se desea añadir una funcionalidad que le permita obtener un listado de cada uno de los trabajadores con el nombre del director de su centro de trabajo. Deberá tener en cuenta que el campo “Director” de la Tabla “Ubicaciones” contiene el código de trabajador del Director. Para obtener el listado se ejecutará la sentencia:

a) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Trabajadores as j where t.ubicacion = u.ubicacion and u.director = j.codTrabajador

b) SELECT t.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u where t.ubicacion = u.ubicacion
c) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Directores as j where t.ubicacion = u.ubicacion and u.director = j.codTrabajador
d) SELECT j.nombre as “Director Centro”, t.nombre as “Empleado” FROM Trabajadores as t, Ubicaciones as u, Trabajadores as j where t.ubicacion = u.ubicacion and t.codTrabajador = j.codTrabajador

SELECT [ALL | DISTINCT] item1, item2 AS alias

FROM tabla | vista as alias, …

[[tipo-join] JOIN <condicon_join> ]

WHERE <condicon_busqueda>

[AND | OR | NOT + <condicon_busqueda>] …

GROUP BY campo(s)

HAVING <condicon_sobre_los_grupos>

ORDER BY campo1 [ASC | DESC] , …

+ LIKE | BETWEEN

DistinctFilas distintas

Ej: select distintc id, nombre form empleados;

El distintc no aplica solo a id, sino tambien al nombre.

SELECT tipo, avg(edad) as edad_media from empleado group by tipo;

Having sirve para hacer filtros por grupos

Select tipo, avg(edad) as edad_media from empleado group by tipo having avg(edad)<50;

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

En el antiguo modelo de datos de la aplicación existe una vista para poder visualizar el número trabajadores por grupos de edad, la vista fue creada ejecutando una sentencia SQL, seleccione la correcta:

a) CREATE VIEW edades AS SELECT edad, count(*) FROM Trabajadores GROUP BY edad;
b) CREATE VIEW edades AS SELECT edad, sum(*) FROM Trabajadores GROUP BY edad;
c) CREATE VIEW edades AS SELECT edad, avg(*) FROM Trabajadores HAVING count(*) > 18 ORDER BY edad;
d) CREATE VIEW edades AS SELECT edad, count(*) FROM Trabajadores ORDER BY edad;

2017 TAI -LI-BIII

A

En el antiguo modelo de datos de la aplicación existe una vista para poder visualizar el número trabajadores por grupos de edad, la vista fue creada ejecutando una sentencia SQL, seleccione la correcta:

a) CREATE VIEW edades AS SELECT edad, count(*) FROM Trabajadores GROUP BY edad;

b) CREATE VIEW edades AS SELECT edad, sum(*) FROM Trabajadores GROUP BY edad;
c) CREATE VIEW edades AS SELECT edad, avg(*) FROM Trabajadores HAVING count(*) > 18 ORDER BY edad;
d) CREATE VIEW edades AS SELECT edad, count(*) FROM Trabajadores ORDER BY edad;

¡IMP! Recordar que COUNT no cuenta nulos.

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

Para impedir que pueda haber dos usuarios con el mismo nombre deberá ejecutar la siguiente consulta:

a) ALTER TABLE usuarios ADD CONSTRAINT pk_nombre PRIMARY KEY (nombre)
b) ALTER TABLE usuarios ADD CONSTRAINT u_nombre UNIQUE (nombre)
c) CREATE UNIQUE CONSTRAINT index u_nombre ON usuarios (nombre)
d) ALTER TABLE usuarios ADD UNIQUE CONSTRAINT u_nombre (nombre)

2017 TAI -LI-BIII

A

Para impedir que pueda haber dos usuarios con el mismo nombre deberá ejecutar la siguiente consulta:

a) ALTER TABLE usuarios ADD CONSTRAINT pk_nombre PRIMARY KEY (nombre)

b) ALTER TABLE usuarios ADD CONSTRAINT u_nombre UNIQUE (nombre)

c) CREATE UNIQUE CONSTRAINT index u_nombre ON usuarios (nombre)
d) ALTER TABLE usuarios ADD UNIQUE CONSTRAINT u_nombre (nombre)

Sintasix:

ALTER TABLE table_name ADD CONSTRAINT MyUniqueConstraint UNIQUE(column1, column2…);

Otros funcionalidades de alter table:

https://www.tutorialspoint.com/sql/sql-alter-command.htm

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

Qué sentencia de las siguientes nunca altera el contenido de la base de datos:

a) SELECT PEDIDOS.PRECIO, PEDIDOS.ITEM, STOCK.VALIDO FROM PEDIDOS, STOCK WHERE PEDIDOS.NUM_ITEM = STOCK.NUM_ITEM AND PEDIDOS.PRECIO > 300
b) UPDATE STOCK SET STOCK.NUM_ITEM = O WHERE STOCK.VALIDO = ‘sr
c) COMMIT
d) DROP DATABASE DB_CONTENIDO_TIENDA

2017 TAI -LI

A

Qué sentencia de las siguientes nunca altera el contenido de la base de datos:

a) SELECT PEDIDOS.PRECIO, PEDIDOS.ITEM, STOCK.VALIDO FROM PEDIDOS, STOCK WHERE PEDIDOS.NUM_ITEM = STOCK.NUM_ITEM AND PEDIDOS.PRECIO > 300

b) UPDATE STOCK SET STOCK.NUM_ITEM = O WHERE STOCK.VALIDO = ‘sr
c) COMMIT
d) DROP DATABASE DB_CONTENIDO_TIENDA

Si las operaciones se han realizado correctamente y queremos que los cambios se apliquen de forma permanente sobre la base de datos usaremos la sentencia COMMIT. Sin embargo, si durante las operaciones ocurre algún error y no queremos aplicar los cambios realizados podemos deshacerlos con la setencia ROLLBACK.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  • *Señale la afirmación correcta:**
    a) DML permiten definir el esquema de la base de datos.
    b) OCL permiten controlar el acceso a los datos.
    c) DDL permiten controlar el acceso a los datos.
    d) DCL permiten definir el esquema de la base de datos.
A
  • *Señale la afirmación correcta:**
    a) DML permiten definir el esquema de la base de datos.
  • *b) OCL permiten controlar el acceso a los datos.**
    c) DDL permiten controlar el acceso a los datos.
    d) DCL permiten definir el esquema de la base de datos.

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creación/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos .INSERT, UPDATE, DELETE
    • DQL (Data Query Language) - SELECT
  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION
  • *OCL (LENGUAJE DE ESPECIFICACIÓN DE OBJETOS):** Este documento introduce y define el Lenguaje de Especificación de Objetos (Object Constraint Language, OCL), es un lenguaje formal para expresar restricciones libres de efectos
    colaterales. Los usuarios del Lenguaje Unificado para Modelado (UML) y de otros lenguajes, pueden usar el OCL para especificar restricciones y otras expresiones incluidas en sus modelos. El OCL tiene características de un lenguaje de expresión, de un lenguaje de modelado y de un lenguaje formal.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

En una empresa hay una tabla de empleados: EMPLEADO(EMP _ID, NOMBRE, CATEGORIA, SUELDO). Elija qué sentencia nos dará como resultado la categoría y sueldo medio de aquellas categorías cuyo sueldo medio es inferior al sueldo medio de todos los empleados de la empresa.

a) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO GROUP BY CATEGORIA HAVING AVG(SUELDO) < (SELECT AVG(SUELDO) FROM EMPLEADO)
b) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO HAVING CATEGORIA GROUP BY AVG(SUELDO) < SELECT AVG(SUELDO) FROM EMPLEADO)
e) SELECT CATEGORJA, AVG(SUELDO) FROM EMPLEADO WHERE SUELDO < AVG(SUELDO) GROUP BY CATEGORJA
d) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE AVG(SUELDO) < (SELECT SUELDO FROM EMPLEADO)

2017 TAI -PI

A

En una empresa hay una tabla de empleados: EMPLEADO(EMP _ID, NOMBRE, CATEGORIA, SUELDO). Elija qué sentencia nos dará como resultado la categoría y sueldo medio de aquellas categorías cuyo sueldo medio es inferior al sueldo medio de todos los empleados de la empresa.

a) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO GROUP BY CATEGORIA HAVING AVG(SUELDO) < (SELECT AVG(SUELDO) FROM EMPLEADO)

b) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO HAVING CATEGORIA GROUP BY AVG(SUELDO) < SELECT AVG(SUELDO) FROM EMPLEADO)
e) SELECT CATEGORJA, AVG(SUELDO) FROM EMPLEADO WHERE SUELDO < AVG(SUELDO) GROUP BY CATEGORJA
d) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE AVG(SUELDO) < (SELECT SUELDO FROM EMPLEADO)

SUBCONSULTAS (dentro del where)

SELECTFROM tabla1 WHERE EXISTS (SUBQUERY)*

WHERE col1 [NOT] IN (SELECT col2 FROM …)

WHERE col1 operador [ANY/SOME/ALL]

(SELECT col2 FORM …)

ANY ó SOME: hacen lo mismo → Alguno

ALL → Todos

Correlacionadas cuando hay referencias dentro de la subquery a la consulta externa o principal.

SELECT “nombre1_columna”
FROM “nombre1_tabla”
WHERE EXISTS
(SELECT * FROM “nombre2_tabla” WHERE Condición”);

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

En una base de datos en la que se almacena Información de dientes a través de la tabla Clientes, existen, entre otras, las siguientes columnas: “Id”, “Nombre”, “Apellido1”, etc. ¿Cuál de las siguientes sentencias SQL devuelve el número de nombres (sólo Nombre, sin incluir apellidos) diferentes que hay en la tabla?

a) SELECT DlSTINCT(Nombre) FROM Clientes
b) SELECT SUM(UNIQUE(Nombre)) FROM Clientes
c) SELECT COUNT(DlSTINCT(Nombre)) FROM Clientes
d) SELECT SUM(DlSTINCT(Nombre)) FROM Clientes

2017 TAI -LI

A

En una base de datos en la que se almacena Información de dientes a través de la tabla Clientes, existen, entre otras, las siguientes columnas: “Id”, “Nombre”, “Apellido1”, etc. ¿Cuál de las siguientes sentencias SQL devuelve el número de nombres (sólo Nombre, sin incluir apellidos) diferentes que hay en la tabla?

a) SELECT DlSTINCT(Nombre) FROM Clientes
b) SELECT SUM(UNIQUE(Nombre)) FROM Clientes

c) SELECT COUNT(DlSTINCT(Nombre)) FROM Clientes

d) SELECT SUM(DlSTINCT(Nombre)) FROM Clientes

DISTINCTFilas distintas

Ej: select distintc id, nombre form empleados; → El distintc no aplica solo a id, sino tambien al nombre.

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

¿Cuál de las siguientes operaciones NO es una operación de agregación en SQL?

a) AVG
b) COUNT
c) DISTINCT
d) SUM

2017 TAI -LI

A

¿Cuál de las siguientes operaciones NO es una operación de agregación en SQL?

a) AVG
b) COUNT

c) DISTINCT

d) SUM

FUNCIONES DE AGREGACIÓN Básicas:

  • COUNT: devuelve el número total de filas seleccionadas por la consulta.
  • MIN: devuelve el valor mínimo del campo que especifiquemos.
  • MAX: devuelve el valor máximo del campo que especifiquemos.
  • SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
  • AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Al dar de alta la tabla ARTÍCULO se ha olvidado crear la clave primaria y hay articulos duplicados con el mismo identificador, ¿cuál de las siguientes sentencias SQL nos permitiría encontrarlos?

a) SELECT idArticulo, count(*) FROM Articulo GROUP BY IdArticulo HAVING count(*)> 1;
b) SELECT idArticulo FROM Articulo GROUP BY idArticulo HAVING DISTINCT (idArticulo);
c) SELECT DISTlNCT (idArticulo) FROM Articulo WHERE IdArticulo >1;
d) SELECT A1.idArticulo, A1.count(idArticulo) FROM Articulo Al, Articulo Al WHERE A1.idArticulo=A2.idArticulo AND count(ldArticulo)> 1;

2017 TAI -PI-BIII

A

Al dar de alta la tabla ARTÍCULO se ha olvidado crear la clave primaria y hay articulos duplicados con el mismo identificador, ¿cuál de las siguientes sentencias SQL nos permitiría encontrarlos?

a) SELECT idArticulo, count(*) FROM Articulo GROUP BY IdArticulo HAVING count(*)> 1;

b) SELECT idArticulo FROM Articulo GROUP BY idArticulo HAVING DISTINCT (idArticulo);
c) SELECT DISTlNCT (idArticulo) FROM Articulo WHERE IdArticulo >1;
d) SELECT A1.idArticulo, A1.count(idArticulo) FROM Articulo Al, Articulo Al WHERE A1.idArticulo=A2.idArticulo AND count(ldArticulo)> 1;

Ejemplo:

SELECT COUNT( * ) FROM agents HAVING COUNT(*)>3;

La cláusula HAVING con la función SQL COUNT () se puede utilizar para establecer una condición con la instrucción select. La cláusula HAVING se usa en lugar de la cláusula WHERE con la función SQL COUNT ().

La cláusula GROUP BY con HAVING recupera el resultado de un grupo específico de una columna, que coincide con la condición especificada en la cláusula HAVING.

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

En una empresa hay una tabla de empleados: EMPLEADO (EMP ID, NOMBRE, CATEGORIA, SUELDO). Elija qué sentencia nos dará como resultado la categoría y sueldo medio de aquellas categorías cuyo sueldo medio es inferior al sueldo medio de todos los empleados de la empresa.

a) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO GROUP BY CATEGORIA HAVING AVG(SUELDO) < (SELECT AVG(SUELDO) FROM EMPLEADO)
b) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO HAVING CATEGORIA GROUP BY AVG(SUELDO) < SELECT AVG(SUELDO) FROM EMPLEADO)
c) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE SUELDO < AVG(SUELDO) GROUP BY CATEGORIA
d) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE AVG(SUELDO)«SELECT SUELDO FROM EMPLEADO)

2017 TAI -PI

A

En una empresa hay una tabla de empleados: EMPLEADO (EMP ID, NOMBRE, CATEGORIA, SUELDO). Elija qué sentencia nos dará como resultado la categoría y sueldo medio de aquellas categorías cuyo sueldo medio es inferior al sueldo medio de todos los empleados de la empresa.

a) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO GROUP BY CATEGORIA HAVING AVG(SUELDO) < (SELECT AVG(SUELDO) FROM EMPLEADO)

b) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO HAVING CATEGORIA GROUP BY AVG(SUELDO) < SELECT AVG(SUELDO) FROM EMPLEADO)
c) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE SUELDO < AVG(SUELDO) GROUP BY CATEGORIA
d) SELECT CATEGORIA, AVG(SUELDO) FROM EMPLEADO WHERE AVG(SUELDO)«SELECT SUELDO FROM EMPLEADO)

SELECT [ALL | DISTINCT] item1, item2 AS alias

FROM tabla | vista as alias, …

[[tipo-join] JOIN <condicon_join> ]

WHERE <condicon_busqueda>

[AND | OR | NOT + <condicon_busqueda>] …

GROUP BY campo(s)

HAVING <condicon_sobre_los_grupos>

ORDER BY campo1 [ASC | DESC] , …

+ LIKE | BETWEEN

La cláusula GROUP BY con HAVING recupera el resultado de un grupo específico de una columna, que coincide con la condición especificada en la cláusula HAVING.

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

¿Cuál de las siguientes operaciones NO es una operación de agregación en SQL?

a) AVG
b) COUNT
c) DlSTINCT
d) SUM

2017 TAI -PI

A

¿Cuál de las siguientes operaciones NO es una operación de agregación en SQL?

a) AVG
b) COUNT

c) DlSTINCT

d) SUM

FUNCIONES DE AGREGACIÓN Básicas:

  • COUNT: devuelve el número total de filas seleccionadas por la consulta.
  • MIN: devuelve el valor mínimo del campo que especifiquemos.
  • MAX: devuelve el valor máximo del campo que especifiquemos.
  • SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
  • AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
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 id Edificio IS NOT NULL
b) SELECT id Edificio, COUNT(*) FROM Aula INNER JOIN Edificio ON Aula.idEdificio = Edificio.idEdificio
c) SELECT idEdificio, COUNT(*) FROM Aula WHERE COUNT(*) > 0
d) SELECT idEdificio, COUNT(*) FROM Aula GROUP BY id Edificio

2018 TAI -LI-BIII

A

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 id Edificio IS NOT NULL
b) SELECT id Edificio, COUNT(*) FROM Aula INNER JOIN Edificio ON Aula.idEdificio = Edificio.idEdificio
c) SELECT idEdificio, COUNT(*) FROM Aula WHERE COUNT(*) > 0

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

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

El sistema cuenta con una tabla de inscripciones antiguas, Inscripcion, 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 Inscripción, 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 Inscripcion.NIF IS null
b) SELECT Ciudadano.NIF FROM Ciudadano INNER JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF WHERE Inscripcion.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

2018 TAI -LI-BIII

A

El sistema cuenta con una tabla de inscripciones antiguas, Inscripcion, 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 Inscripción, 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 Inscripcion.NIF IS null

b) SELECT Ciudadano.NIF FROM Ciudadano INNER JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF WHERE Inscripcion.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

LEFT JOIN ≈ LEFT OUTER JOIN – este tipo de unión significa que solo retornan todos los datos de la tabla de la mano izquierda, solo si los datos coinciden con la tabla de la mano derecha.

SELECT Student.NAME,StudentCourse.COURSE_ID

FROM Student

LEFT JOIN StudentCourse

ON StudentCourse.ROLL_NO = Student.ROLL_NO;

INNER JOIN – esta es la opción predeterminada. Si no se especifica el tipo de unión, se establecerá de manera predeterminada como la unión interna. Esto implica que si estamos uniendo dos tablas en una columna común, solo retornaran los datos que coincidan en ambas tablas

https://www.w3schools.com/sql/sql_join.asp

SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE

FROM Student

INNER JOIN StudentCourse

ON Student.ROLL_NO = StudentCourse.ROLL_NO;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
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 (id Edificio (PK), nomEdificio, localizacion) y se debe añadir un nuevo campo, idEdificio, en la tabla 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, idE dificio INT NOT NULL, FOREIGN KEY (id Edificio) REFERENCES Edificio (id Edificio))
b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, id Edificio INT NOT NULL, PRIMARY KEY (idAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdificio))
c) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio INT NOT NULL, PRIMARY KEY (idAula))
d) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, id Edificio INT NOT NULL)

2018 TAI -LI-BIII

A

Antes de poner en marcha el sistema, se ha decidido categorizar las aulas por edificios. Para ello se crea una nueva tabla llamada Edificio (id Edificio (PK), nomEdificio, localizacion) y se debe añadir un nuevo campo, idEdificio, en la tabla 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, idE dificio INT NOT NULL, FOREIGN KEY (id Edificio) REFERENCES Edificio (id Edificio))

b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, id Edificio INT NOT NULL, PRIMARY KEY (idAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdificio))

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

Ejemplo de sentencia CREATE TABLE

CREATE TABLE distribuidores

(dist-id CHAR(4) NOT NULL,

dist-nombre VARCHAR(40), sales-rep INT, zip CHAR(5),

CONSTRAINT pk-dist-id PRIMARY KEY (dist-id),

CONSTRAINT fk-emp-id

FOREIGN KEY (sales-rp)

REFERENCES empleados (empid)

CONSTRAINT uniq-zip UNIQUE (zip)

CONSTRAINT chk-zip CHECK (zip like ‘[0-9] ‘[0-9] ‘[0-9] ‘[0-9] ‘[0-9]’)

);

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

En PostgreSQL 9.2, una vez conectado al terminal interactivo de PostgreSQL mediante el comando psql, ¿qué opción se puede ejecutar para obtener las bases de datos disponibles?

a) Show databases;
b) \list
c) select databases from dual;
d) psql_show_db

2018 TAI -LI

A

En PostgreSQL 9.2, una vez conectado al terminal interactivo de PostgreSQL mediante el comando psql, ¿Qué opción se puede ejecutar para obtener las bases de datos disponibles?

a) Show databases;

b) \list

c) select databases from dual;
d) psql_show_db

En mysql: SHOW DATABASES

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
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

2018 TAI -LI

A

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

SELECT [ALL | DISTINCT] item1, item2 AS alias

FROM tabla | vista as alias, …

[[tipo-join] JOIN <condicon_join> ]

WHERE <condicon_busqueda>

[AND | OR | NOT + <condicon_busqueda>] …

GROUP BY campo(s)

HAVING <condicon_sobre_los_grupos>

ORDER BY campo1 [ASC | DESC] , …

+ LIKE | BETWEEN

item2:

  • Columna (+tipico)
  • Subconsulta
  • Calculo
  • Función de agredado / escalar (SUM, COUNT (* ó columna), MAX /MIN, AVG (es la media)

La cláusula GROUP BY con HAVING recupera el resultado de un grupo específico de una columna, que coincide con la condición especificada en la cláusula HAVING.

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

En relación a las sentencias utilizadas en SQL y su tipología, 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 tipo DCL permiten la definición de estructuras de datos mediante CREATE TABLE o DROP TABLE.
d) Las sentencias de control de transacciones incluyen las instrucciones COMMIT y ROLLBACK.

TAI-2018-LI

A

En relación a las sentencias utilizadas en SQL y su tipología, 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 tipo DCL permiten la definición de estructuras de datos mediante CREATE TABLE o DROP TABLE.

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

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creación/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos .INSERT, UPDATE, DELETE
    • DQL (Data Query Language) - SELECT
  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION
36
Q

Dado un procedimiento almacenado en SQL Server con la cabecera

CREATE PROCEDURE getEmployees @LastName varchar(50), @FirstName nvarchar(50)

¿Cuál NO sería una instrucción válida para ejecutar dicho procedimiento?

a) EXECUTE getEmployees @FirstName = N’Pilar’, @LastName = N’Rojas’;
b) EXEC getEmployees @LastName = N’Rojas’, @FirstName = N’Pilar’;
c) EXECUTE getEmployees N’Rojas’, N’Pilar’;
d) EXEC getEmployees @LastName = N’Rojas’, N’Pilar’;

TAI-2018-LI

A

Dado un procedimiento almacenado en SQL Server con la cabecera

CREATE PROCEDURE getEmployees @LastName varchar(50), @FirstName nvarchar(50)

¿Cuál NO sería una instrucción válida para ejecutar dicho procedimiento?

a) EXECUTE getEmployees @FirstName = N’Pilar’, @LastName = N’Rojas’;
b) EXEC getEmployees @LastName = N’Rojas’, @FirstName = N’Pilar’;
c) EXECUTE getEmployees N’Rojas’, N’Pilar’;

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

En el ejemplo se ejecuta el procedimiento almacenado uspGetEmployeeManagers con el valor 6 como parámetro @EmployeeID.

  • USE AdventureWorks2019;*
  • GO*
  • EXEC dbo.uspGetEmployeeManagers 6;*
  • GO*
  • https://learn.microsoft.com/es-es/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver16*
37
Q

De entre las siguientes, señale cuál es una ventaja de las instantáneas de Base de Datos (snapshot) en SQLSERVER:

a) Ofrecen una interfaz gráfica que facilita la normalización de las relaciones existentes en la Base de Datos.
b) Facilitan la automatización de catálogos compuestos por elementos repetitivos simples utilizando los datos de un archivo de texto separado por comas o tabuladores.
c) Permiten crear instantáneas de un momento temporal determinado permitiendo, entre otros, la generación de informes a partir de los datos contenidos en las mismas.
d) Optimizan la indexación para el manejo eficiente, de consultas en tiempo real en archivos en formato XES (Extensible Event Stream).

TAI-2018-LI

A

De entre las siguientes, señale cuál es una ventaja de las instantáneas de Base de Datos (snapshot) en SQLSERVER:

a) Ofrecen una interfaz gráfica que facilita la normalización de las relaciones existentes en la Base de Datos.
b) Facilitan la automatización de catálogos compuestos por elementos repetitivos simples utilizando los datos de un archivo de texto separado por comas o tabuladores.

c) Permiten crear instantáneas de un momento temporal determinado permitiendo, entre otros, la generación de informes a partir de los datos contenidos en las mismas.

d) Optimizan la indexación para el manejo eficiente, de consultas en tiempo real en archivos en formato XES (Extensible Event Stream).

INSTANTÁNEAS DE BASE DE DATOS (SNAPSHOT): Una instantánea de base de datos es una vista estática de solo lectura de una base de datos de SQL Server (la base de datos de origen). La instantánea de base de datos es coherente en cuanto a las transacciones con la base de datos de origen tal como existía en el momento de la creación de la instantánea. Una instantánea de base de datos siempre reside en la misma instancia de servidor que la base de datos de origen.

Ventajas de las instantáneas de base de datos:

  • Las instantáneas se pueden usar para crear informes.
  • Mantenimiento de los datos históricos para la creación de informes.
  • Utilizar una base de datos reflejada de la cual se está realizando el mantenimiento con fines de disponibilidad para descargar informes.
  • Protección de datos contra errores administrativos.
  • En el caso de que se produzca un error de usuario en una base de datos de origen, esta se puede revertir al estado en que se encontraba cuando se creó una determinada instantánea de base de datos. La pérdida de datos se limita a las actualizaciones de la base de datos desde la creación de la instantánea.
38
Q

Se ha podido cometer un error en el traspaso del diagrama E/R al modelo físico en relación a la cardinalidad de las entidades de las calles y sus tramos. Para ello se quiere realizar una comprobación básica entre ambas tablas. ¿Qué resultado obtendremos de la siguiente sentencia ejecutada en SQl Server?

SELECT Calle.nombre, count(TramoCalleidTramoCalle)

FROM TramoCalle RIGHT JOIN Calle ON Calle.idCalle = TramoCalle.idCalle

GROUP BY Calle.idCalle, Calle.nombre

a) Una fila por cada tramo que tenga al menos una calle asignada. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
b) Una fila por cada tramo que tenga o no tenga calles asignadas. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
c) Una fila por cada calle, tenga o no tenga tramos asignados. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
d) Una fila por cada calle que tenga al menos un tramo asignado. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.

2018 TAI -PI-BIII

A

Se ha podido cometer un error en el traspaso del diagrama EJR al modelo físico en relación a la cardinalidad de las entidades de las calles y sus tramos. Para ello se quiere realizar una comprobación básica entre ambas tablas. ¿Qué resultado obtendremos de la siguiente sentencia ejecutada en SQl Server?

SELECT Calle.nombre, count(TramoCalleidTramoCalle)

FROM TramoCalle RIGHT JOIN Calle ON Calle.idCalle = TramoCalle.idCalle

GROUP BY Calle.idCalle, Calle.nombre

a) Una fila por cada tramo que tenga al menos una calle asignada. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
b) Una fila por cada tramo que tenga o no tenga calles asignadas. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
c) Una fila por cada calle, tenga o no tenga tramos asignados. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.
d) Una fila por cada calle que tenga al menos un tramo asignado. Y se mostrará el nombre de la calle y el número de tramos de dicho calle.

39
Q

En el SGBD tiene que crear un procedimiento almacenado “calcularTarifa” cuyos parámetros de entrada seen tipo de zone (idZona) y el numero de minutos (Minutes), ambos tipo entero.

¿Cuál de las siguientes declaraciones de cabecera seria correcta?

a) CREATE PROCEDURE calcularTarifa @idZona int, @Minutos int
b) CREATE PROCEDURE calcularTarifa @idZona, @Minutos
c) CREATE PROCED calcularTarifa (@idZona int, @Minutos int)
d) CREATE PROCED calcularTarifa @TipoZona int, @Minutos int

2018 TAI -PI-BIII

A

En el SGBD tiene que crear un procedimiento almacenado “calcularTarifa” cuyos parámetros de entrada seen tipo de zone (idZona) y el numero de minutos (Minutes), ambos tipo entero.

¿Cuál de las siguientes declaraciones de cabecera seria correcta?

a) CREATE PROCEDURE calcularTarifa @idZona int, @Minutos int

b) CREATE PROCEDURE calcularTarifa @idZona, @Minutos
c) CREATE PROCED calcularTarifa (@idZona int, @Minutos int)
d) CREATE PROCED calcularTarifa @TipoZona int, @Minutos int

CREATE PROCEDURE nombre_procedure

(IN | OUT | INOUT param_name tipo, …)

LANGUAGE _ _ _

AS $$

BEGIN

Select / cursor

Update

COMMIT;

END;

$$

CURSOR nos vale para recorrer fila a fila.

40
Q

Le piden que ejecute el anterior procedimiento que he creado. ¿Cuál de las siguientes sentencias es INCORRECTA?

a) EXECUTE calcularTarifa @idZona = 1, @Minutos = 50;
b) EXECUTE calcularTarifa @Minutos = 50, @idZona = 1;
c) EXECUTE calcularTarifa 1, 50;
d) EXECUTE calcularTarifa @Minutos = 50, 1;

TAI PI 2018/BIII

A

Le piden que ejecute el anterior procedimiento que he creado. ¿Cuál de las siguientes sentencias es INCORRECTA?

a) EXECUTE calcularTarifa @idZona = 1, @Minutos = 50;
b) EXECUTE calcularTarifa @Minutos = 50, @idZona = 1;
c) EXECUTE calcularTarifa 1, 50;

d) EXECUTE calcularTarifa @Minutos = 50, 1;

EXECUTE ó EXEC

Este ejemplo muestra cómo ejecutar un procedimiento almacenado que espera un parámetro. El ejemplo ejecuta el procedimiento almacenado uspGetEmployeeManagers con el valor 6 especificado como @EmployeeIDparámetro.

  • USE AdventureWorks2019;*
  • GO*
  • EXEC dbo.uspGetEmployeeManagers 6;*
  • GO*
41
Q

En el estándar ANSI SQL, la cláusula HAVING:

a) Elimina los registros duplicados en los resultados de una consulta.
b) Permite emparejar filas de distintas tablas de forma más eficiente.
c) Es equivalente a la cláusula WHERE en caso de usar OUTER JOIN.
d) Permite incluir condiciones en las consultas a los grupos definidos.

2018 TAI -PI

A

En el estándar ANSI SQL, la cláusula HAVING:

a) Elimina los registros duplicados en los resultados de una consulta.
b) Permite emparejar filas de distintas tablas de forma más eficiente.
c) Es equivalente a la cláusula WHERE en caso de usar OUTER JOIN.

d) Permite incluir condiciones en las consultas a los grupos definidos.

Having sirve para hacer filtros por grupos

  • Select tipo, avg(edad) as edad_media*
  • from empleado*

group by tipo having avg(edad)<50;

42
Q

En ANSI SQL. De entre los siguientes, ¿Qué privilegio NO es posible asignar utilizando el comando GRANT?

a) EXECUTE b) UPDATE
c) RESOURCES d) REFERENCES

2018 TAI -PI

A

En ANSI SQL. De entre los siguientes, ¿Qué privilegio NO es posible asignar utilizando el comando GRANT?

a) EXECUTE b) UPDATE

c) RESOURCES d) REFERENCES

GRANT <privilegios> ON object_name(tabla, vista,…)TO grantee

[WITH GRANT OPTION]

Privilegios:

  • SELECT + lista_columnas
  • UPDATE+ lista_columnas
  • INSERT+ lista_columnas
  • DELETE
  • ALL PRIVILEGES
  • REFERENCES

(Salio en PI 2018)

  • TRIGGER
  • UNDER
  • USAGE (ej.Secuencia)
  • EXECUTE
43
Q

En relación con el estándar ANSI SQL, señale la respuesta correcta:

a) El operador EXISTS evalúa verdadero si el conjunto resultante es vacío, mientras que NOT EXISTS evalúa verdadero si el conjunto resultante es no vacío.
b) La cláusula ORDER BY permite presentar las filas resultado de una consulta de forma ordenada, pero no se ordenan en disco.
c) La cláusula HAVlNG indica qué filas deben agruparse sobre un valor común de las columnas especificadas, mientras que GROUP BY impone condiciones a los grupos.
d) La palabra clave NOT DISTINCT es usada para que el sistema cuente el mismo registro más de una vez en los resultados si sale repetido.

2016 TAI -PI

A

En relación con el estándar ANSI SQL, señale la respuesta correcta:

a) El operador EXISTS evalúa verdadero si el conjunto resultante es vacío, mientras que NOT EXISTS evalúa verdadero si el conjunto resultante es no vacío.

b) La cláusula ORDER BY permite presentar las filas resultado de una consulta de forma ordenada, pero no se ordenan en disco.

c) La cláusula HAVlNG indica qué filas deben agruparse sobre un valor común de las columnas especificadas, mientras que GROUP BY impone condiciones a los grupos.
d) La palabra clave NOT DISTINCT es usada para que el sistema cuente el mismo registro más de una vez en los resultados si sale repetido.

44
Q

Indique con qué nivel de aislamiento del estándar ANSI/ISO SQL-92 se evita el fenómeno de lectura fantasma:

a) Lectura repetible.
b) Serializable.
c) Lecturas comprometidas.
d) Lecturas no comprometidas

2016 TAI -PI

A

Indique con qué nivel de aislamiento del estándar ANSI/ISO SQL-92 se evita el fenómeno de lectura fantasma:

a) Lectura repetible.

b) Serializable.

c) Lecturas comprometidas.
d) Lecturas no comprometidas

LECTURAS FANTASMAS: Nuevamente el problema de las lecturas no repetibles tiene solución, si hacemos que una transacción no pueda modificar datos que han sido leídos por otra, pero aún nos quedaría el problema de las lecturas fantasmas que se producen cuando una transacción lanza una misma consulta dos veces y obtiene distinto conjunto de resultados. Es decir, el resultado de una transacción interfiere en el resultado de otra de duración mayor.

SERIALIZABLE: Máximo nivel de aislamiento. No se produce ninguno de los problemas vistos anteriormente. COSTE : necesitamos bloquear los rangos de registros que estamos leyendo. En el peor de los casos, eso implicaría bloquear enteras las tablas.

45
Q

Seleccione la respuesta correcta en relación a las bases de datos relacionales:

a) El lenguaje que se usa para manipular datos (seleccionar, borrar, etc.) es diferente que el que se usa para definir datos (crear/modificar tablas, etc.).
b) En el lenguaje SQL, el operador BETWEEN no puede estar en una sentencia WHERE.
c) En el lenguaje SQL, la sintaxis para borrar una tabla es: DELETE TABLE (NOMBRE_TABLA);
d) Las claves ajenas (foreign keys) pueden ser nulas.

2016 TAI -LI

A

Seleccione la respuesta correcta en relación a las bases de datos relacionales:

a) El lenguaje que se usa para manipular datos (seleccionar, borrar, etc.) es diferente que el que se usa para definir datos (crear/modificar tablas, etc.).
b) En el lenguaje SQL, el operador BETWEEN no puede estar en una sentencia WHERE.
c) En el lenguaje SQL, la sintaxis para borrar una tabla es: DELETE TABLE (NOMBRE_TABLA);

d) Las claves ajenas (foreign keys) pueden ser nulas.

46
Q

¿Cuál de las siguientes sentencias forma parta del Lenguaje de Definición de Datos (DDL) de SQL?

a) INSERT b) UPDATE
c) ALTER d) COMMIT

2016 TAI -LI

A

¿Cuál de las siguientes sentencias forma parta del Lenguaje de Definición de Datos (DDL) de SQL?

a) INSERT b) UPDATE

c) ALTER d) COMMIT

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creación/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos

INSERT, UPDATE, DELETE

DQL (Data Query Language) - SELECT

  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION
47
Q

Para borrar una base de datos en mysql, cuál de las siguientes sentencias se usarla:

a) drop database [if exists] base_de_datos
b) erase database [if exists] base_de_datos
c) delete database [if] base_de_datos
d) quit database [if exists] base_de_datos

2016 TAI -LI

A

Para borrar una base de datos en mysql, cuál de las siguientes sentencias se usarla:

a) drop database [if exists] base_de_datos

b) erase database [if exists] base_de_datos
c) delete database [if] base_de_datos
d) quit database [if exists] base_de_datos

48
Q

La ejecución de una transacción en un SGDB debe cumplir, entre otras, las características de:

a) Consistencia y herencia.
b) Atomicidad y herencia.
c) Atomicidad y consistencia.
d) Abstracción y polimorfismo.

2016-TAI-LI

A

La ejecución de una transacción en un SGDB debe cumplir, entre otras, las características de:

a) Consistencia y herencia.
b) Atomicidad y herencia.

c) Atomicidad y consistencia.

d) Abstracción y polimorfismo.

TRANSACCIONES: Locales y distribuidas (protocolo two-phase commit)

Toda transacción ha de cumplir las propiedades ACID :

  • Atomicidad (Atomicity): Las acciones de una transacción se ejecutan todas o ninguna.
  • Consistencia (Consistency): La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
  • Aislamiento (Isolation): La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
  • Persistencia (Durability): Los efectos de una transacción no son permanentes en la BD hasta que la transacción ha finalizado con éxito.
49
Q

En SQL, la cláusula having:

a) Se utiliza especificamente para realizar cálculos con campos tipo Datetime.
b) Se usa habitualmente en combinación con la cláusula “group by”.
c) El uso de having impide usar la cláusula where en la misma sentencia.
d) Es un comando que se incluye dentro del llamado Lenguaje de Definición de Datos.

2016-TAI-LI

A

En SQL, la cláusula having:

a) Se utiliza especificamente para realizar cálculos con campos tipo Datetime.

b) Se usa habitualmente en combinación con la cláusula “group by”.

c) El uso de having impide usar la cláusula where en la misma sentencia.
d) Es un comando que se incluye dentro del llamado Lenguaje de Definición de Datos.

Select tipo, avg(edad) as edad_media

from empleado group by tipo having avg(edad)<50;

Having sirve para hacer filtros por grupos

Select tipo, avg(edad) as edad_media from empleado group by tipo having avg(edad)<50;

50
Q

Con la cláusula ORDER BY de SQL, si nos encontramos con la siguiente consulta: SELECT * FROM Empleados ORDER BY Provincia DESC, Municipio; ¿Cuál es el resultado que se obtendría?

a) Un listado de empleados ordenado de manera ascendente por la columna Provincia y, dentro de cada provincia ordenado de manera ascendente por la columna Municipio.
b) Un listado de empleados ordenado de manera descendente por la columna Provincia y, dentro de cada provincia ordenado de manera ascendente por la columna Municipio.
c) Un listado de empleados ordenado de manera ascendente por la columna Provincia y, dentro de cada provincia ordenado de manera descendente por la columna Municipio.
d) Da ERROR, la sintaxis correcta es SELECT * FROM Empleados ORDER BY Provincia, Municipio DE5C; El criterio de ordenación (ASC o DESC) debe ser el mismo para todas las columnas del ORDER BY Y encontrarse al final de la cláusula.

2016 TAI -LI

A

Con la cláusula ORDER BY de SQL, si nos encontramos con la siguiente consulta: SELECT * FROM Empleados ORDER BY Provincia DESC, Municipio; ¿Cuál es el resultado que se obtendría?

a) Un listado de empleados ordenado de manera ascendente por la columna Provincia y, dentro de cada provincia ordenado de manera ascendente por la columna Municipio.

b) Un listado de empleados ordenado de manera descendente por la columna Provincia y, dentro de cada provincia ordenado de manera ascendente por la columna Municipio.

c) Un listado de empleados ordenado de manera ascendente por la columna Provincia y, dentro de cada provincia ordenado de manera descendente por la columna Municipio.
d) Da ERROR, la sintaxis correcta es SELECT * FROM Empleados ORDER BY Provincia, Municipio DE5C; El criterio de ordenación (ASC o DESC) debe ser el mismo para todas las columnas del ORDER BY Y encontrarse al final de la cláusula.

51
Q

¿Cuál de las siguientes sentencias utilizaríamos para permitir al USUARIO1 actualizar la columna SALARIO de la tabla EMPLEADOS sin permitirle dar de alta nuevos empleados?

a) GRANT EMPLEADOS ON SELECT, UPDATE(SALARIO) to USUARIO1
b) GRANT ALL ON SELECT, UPDATE ro USUARIO1
c) GRANT ALL ON EMPLEADOS TO USUARIO1
d) GRANT SELECT, UPDATE(SALARIO) ON EMPLEADOS TO USUARIO1

2016 TAI -LI

A

¿Cuál de las siguientes sentencias utilizaríamos para permitir al USUARIO1 actualizar la columna SALARIO de la tabla EMPLEADOS sin permitirle dar de alta nuevos empleados?

a) GRANT EMPLEADOS ON SELECT, UPDATE(SALARIO) to USUARIO1
b) GRANT ALL ON SELECT, UPDATE ro USUARIO1
c) GRANT ALL ON EMPLEADOS TO USUARIO1

d) GRANT SELECT, UPDATE(SALARIO) ON EMPLEADOS TO USUARIO1

  • GRANT SELECT, UPDATE ON EMP TO FUNCIONARIOS, → Otorgamos el rol funcionario a los empleados

GRANT funcionarios TO jlopez, nmeja…

52
Q

De acuerdo al estándar ANSI SQL, ¿Cuál de las siguientes opciones es equivalente a la operación JOIN?

a) LEFT JOIN
b) FULL JOIN
c) INNER JOIN
d) OUTER JOIN

2016 TAI -LI

A

De acuerdo al estándar ANSI SQL, ¿Cuál de las siguientes opciones es equivalente a la operación JOIN?

a) LEFT JOIN
b) FULL JOIN

c) INNER JOIN

d) OUTER JOIN

JOINS:

  • CROSS JOIN ≈ FROM tabla1, tabla2 → producto cartesiano (todos por todos)
  • [INNER] JOIN → El resultado son las filas coincidentes según la condición.
  • LEFT [OUTER] JOIN → El resultao son todas las filas de la tabla de la “izquierda” y sino hay filas coincidentes se rellenan a NULL las columnas correspondientes de la tabla “de la derecha”.
  • RIGHT [OUTER] JOIN → Idem, pero manda la tabla de la derecha,
  • FULL [OUTER] JOIN → Manda las dos tablas
53
Q

¿Cuál de las siguientes cláusulas LIKE de SQL permite obtener todos los nombres que empiezan por PAL?

a) LIKE ‘PAL&’
b) LIKE ‘PAL$’
c) LIKE ‘PAL*’
d) LIKE ‘PAL %’

2016 TAI -LI

A

¿Cuál de las siguientes cláusulas LIKE de SQL permite obtener todos los nombres que empiezan por PAL?

a) LIKE ‘PAL&’
b) LIKE ‘PAL$’
c) LIKE ‘PAL*’

d) LIKE ‘PAL %’

54
Q

Escriba una consulta para encontrar nombre y salario de los investigadores cuyo salarlo es mayor que el salario medio de todos los departamentos:

a) SELECT nombre, salario FROM investigadores WHERE salario> ALL (SELECT avg(salario) FROM Investigadores GROUP BY dep_id);
b) SELECT nombre, salario FROM investigadores WHERE salario> ALL (SELECT avg(salario) FROM investigadores);
c) SELECT nombre, salario FROM investigadores WHERE salario> (SELECT avg(salario) FROM Investigadores);
d) SELECT nombre, salario FROM investigadores WHERE salario > (SELECT avg(salario) FROM investigadores GROUP BY dep_id);

2016-TAI-LI-BLOQUE III

A

Escriba una consulta para encontrar nombre y salario de los investigadores cuyo salarlo es mayor que el salario medio de todos los departamentos:

a) SELECT nombre, salario FROM investigadores WHERE salario> ALL (SELECT avg(salario) FROM Investigadores GROUP BY dep_id);

b) SELECT nombre, salario FROM investigadores WHERE salario> ALL (SELECT avg(salario) FROM investigadores);
c) SELECT nombre, salario FROM investigadores WHERE salario> (SELECT avg(salario) FROM Investigadores);
d) SELECT nombre, salario FROM investigadores WHERE salario > (SELECT avg(salario) FROM investigadores GROUP BY dep_id);

SELECT [ALL | DISTINCT] item1, item2 AS alias

FROM tabla | vista as alias, …

[[tipo-join] JOIN <condicon_join> ]

WHERE <condicon_busqueda>

[AND | OR | NOT + <condicon_busqueda>] …

GROUP BY campo(s)

HAVING <condicon_sobre_los_grupos>

ORDER BY campo1 [ASC | DESC] , …

+ LIKE | BETWEEN

item2:

  • Columna (+tipico)
  • Subconsulta
  • Calculo
  • Función de agredado / escalar (SUM, COUNT (* ó columna), MAX /MIN, AVG (es la media)

La cláusula GROUP BY con HAVING recupera el resultado de un grupo específico de una columna, que coincide con la condición especificada en la cláusula HAVING.

55
Q

¿Cuál de las siguientes consultas selecciona el “tercer salario mínimo” de los investigadores del departamento de Inteligencia Artificial (dep.nombre=’IN_AR’)?

a) SELECT DISTINCT salario, dep.id FROM Investigadores el WHERE dep.nombre=’IN_AR’ ANO 3 = (SELECT COUNT(OISTINCT salario) FROM investigadores e2 WHERE e2.salario <= e1.salario);
b) SELECT DISTINCT e1.salario, e1.dep.id FROM Investigadores el, departamentos d1 WHERE e1.dep_ld=d1.dep_id AND d1.dep.nombre=’IN_AR’ AND 3 = (SELECT D1STINCT salarlo FROM investigadores e2 WHERE e2.salario <= e1.salario);
c) SELECT DISTINCT e1.salario, e1.dep_Id FROM Investigadores WHERE dep_nombre = ‘IN_AR’ AND 3 = (SELECT COUNT(DISTINCT salario) FROM investigadores e2 WHERE e2.salario <= e1.salario);
d) SELECT DISTINCT e1.salario, e1.dep_id FROM investigadores el, departamentos d1 WHERE e1.dep_ld=d1.dep_id AND d1.dep.nombre=’IN.AR’ AND 3 = (SELECT COUNT(DISTINCT salario) FROM investigadores e2, departamentos d2 WHERE e2.dep_id=d2.dep_id AND d2.dep_nombre=’IN_AR’ AND e2.salario <= e1.salario);

2016-TAI-LI-BLOQUE III

A

¿Cuál de las siguientes consultas selecciona el “tercer salario mínimo” de los investigadores del departamento de Inteligencia Artificial (dep.nombre=’IN_AR’)?

a) SELECT DISTINCT salario, dep.id FROM Investigadores el WHERE dep.nombre=’IN_AR’ ANO 3 = (SELECT COUNT(OISTINCT salario) FROM investigadores e2 WHERE e2.salario <= e1.salario);
b) SELECT DISTINCT e1.salario, e1.dep.id FROM Investigadores el, departamentos d1 WHERE e1.dep_ld=d1.dep_id AND d1.dep.nombre=’IN_AR’ AND 3 = (SELECT D1STINCT salarlo FROM investigadores e2 WHERE e2.salario <= e1.salario);
c) SELECT DISTINCT e1.salario, e1.dep_Id FROM Investigadores WHERE dep_nombre = ‘IN_AR’ AND 3 = (SELECT COUNT(DISTINCT salario) FROM investigadores e2 WHERE e2.salario <= e1.salario);

d) SELECT DISTINCT e1.salario, e1.dep_id FROM investigadores el, departamentos d1 WHERE e1.dep_ld=d1.dep_id AND d1.dep.nombre=’IN.AR’ AND 3 = (SELECT COUNT(DISTINCT salario) FROM investigadores e2, departamentos d2 WHERE e2.dep_id=d2.dep_id AND d2.dep_nombre=’IN_AR’ AND e2.salario <= e1.salario);

56
Q

Marque la consulta para sacar la fecha actual del sistema en MySqI en el siguiente formato: Marzo 5, 2017

a) SELECT DATE.FORMAT(CURDATE(),’%M %e, %Y’)
b) SELECT DATE.FORMAT(CURDATE(),’%m %0, %y’)
c) S ELECT DATE.FORMAT(DATE(),’%m %d, %A’)
d) SELECT DATE.FORMAT(DATE(),’%M %d, %a’)

2016 TAI -LI-BIII

A

Marque la consulta para sacar la fecha actual del sistema en MySqI en el siguiente formato: Marzo 5, 2017

a) SELECT DATE.FORMAT(CURDATE(),’%M %e, %Y’)

b) SELECT DATE.FORMAT(CURDATE(),’%m %0, %y’)
c) S ELECT DATE.FORMAT(DATE(),’%m %d, %A’)
d) SELECT DATE.FORMAT(DATE(),’%M %d, %a’)

57
Q

Seleccione la consulta que extrae los investigadores que se contrataron en el mes de octubre de cualquier año:

a) SELECT nombre, apellidos FROM investigadores WHERE DATE_TO_CHAR(contratado,’m’) = ‘10’;
b) SELECT nombre, apellidos FROM investigadores WHERE DATE.MONTH(contratado) = ‘OCTUBRE’;
c) SELECT nombre, apellidos FROM investigadores WHERE MONTH(contratado) = 10;
d) SELECT nombre, apellidos FROM investigadores WHERE TO.MONTH(contratado) 􀀎=’octubre’;

2016 TAI -LI-BIII

A

Seleccione la consulta que extrae los investigadores que se contrataron en el mes de octubre de cualquier año:

a) SELECT nombre, apellidos FROM investigadores WHERE DATE_TO_CHAR(contratado,’m’) = ‘10’;
b) SELECT nombre, apellidos FROM investigadores WHERE DATE.MONTH(contratado) = ‘OCTUBRE’;

c) SELECT nombre, apellidos FROM investigadores WHERE MONTH(contratado) = 10;

d) SELECT nombre, apellidos FROM investigadores WHERE TO.MONTH(contratado) 􀀎=’octubre’;

58
Q

La función de MySql para convertir una cadena en fecha es:

a) TODATE
b) STR_TO_DATE
c) TO_DATE
d) CONVERT

2016 TAI -LI-BIII

A

La función de MySql para convertir una cadena en fecha es:

a) TODATE

b) STR_TO_DATE

c) TO_DATE
d) CONVERT

59
Q

Al hablar de las transacciones en un SGBD, el acrónimo inglés: ACID se refiere a sus características de:

a) Atomicity, Consistency, Isolation, Durability.
b) Atomicity, Consistency, Integrity, Durability.
c) Authentication, Consistency, Integrity, Durability.
d) Authentication, Consistency, Isolation, Durability.

A

Al hablar de las transacciones en un SGBD, el acrónimo inglés: ACID se refiere a sus características de:

a) Atomicity, Consistency, Isolation, Durability.

b) Atomicity, Consistency, Integrity, Durability.
c) Authentication, Consistency, Integrity, Durability.
d) Authentication, Consistency, Isolation, Durability.

TRANSACCIONES: Locales y distribuidas (protocolo two-phase commit)

Toda transacción ha de cumplir las propiedades ACID :

  • Atomicidad (Atomicity): Las acciones de una transacción se ejecutan todas o ninguna.
  • Consistencia (Consistency): La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
  • Aislamiento (Isolation): La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
  • Persistencia (Durability): Los efectos de una transacción no son permanentes en la BD hasta que la transacción ha finalizado con éxito.
60
Q

En un SGBD con un nivel de aislamiento de lectura comprometida (Read Committed):

a) No se producen lecturas sucias, pero pueden producirse lecturas no repetibles y lecturas fantasma.
b) Pueden producirse lecturas sucias, lecturas no repetibles y lecturas fantasma.
c) No se producen ni lecturas sucias ni lecturas no repetibles, pero pueden producirse lecturas
d) No se producen ni lecturas sucias, ni lecturas no repetibles, ni lecturas fantasma.

A2 AGE 2019 LI

A

En un SGBD con un nivel de aislamiento de lectura comprometida (Read Committed):

a) No se producen lecturas sucias, pero pueden producirse lecturas no repetibles y lecturas fantasma.

b) Pueden producirse lecturas sucias, lecturas no repetibles y lecturas fantasma.
c) No se producen ni lecturas sucias ni lecturas no repetibles, pero pueden producirse lecturas
d) No se producen ni lecturas sucias, ni lecturas no repetibles, ni lecturas fantasma.

READ COMMITTED / LECTURA COMPROMETIDA : Se garantiza que solo se lean datos escritos por transacciones que hayan hecho su commit. Se evitan sólo las lecturas sucias. COSTE : si intentamos leer un registro que ha sido modificado por otra transacción, nos quedaremos bloqueados hasta que esa transacción termine.

61
Q

En un SGBD, cuando los resultados de una transacción pueden ser completados todos o deshechos todos, estamos ante una de las propiedades ACID. En relación a ello indique cuál de las siguientes es la agrupación de conceptos correcta:

a) Commit - Rollback - Atomicidad.
b) Commit - Rollback - Consistencia.
c) Command - Rollback - Isolation.
d) Commit - Rollback - Durabilidad.

GSI 2019 LI

A

En un SGBD, cuando los resultados de una transacción pueden ser completados todos o deshechos todos, estamos ante una de las propiedades ACID. En relación a ello indique cuál de las siguientes es la agrupación de conceptos correcta:

a) Commit - Rollback - Atomicidad.

b) Commit - Rollback - Consistencia.
c) Command - Rollback - Isolation.
d) Commit - Rollback - Durabilidad.

TRANSACCIONES: Locales y distribuidas (protocolo two-phase commit)

Toda transacción ha de cumplir las propiedades ACID :

  • Atomicidad (Atomicity): Las acciones de una transacción se ejecutan todas o ninguna.
  • Consistencia (Consistency): La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
  • Aislamiento (Isolation): La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
  • Persistencia (Durability): Los efectos de una transacción no son permanentes en la BD hasta que la transacción ha finalizado con éxito.
62
Q

El comando SQL que se usa para eliminar el contenido completo de una tabla, pero sin eliminar la tabla es:

a) Drop
b) Alter
c) Erase
d) Truncate

GSI-2019-LI

A

El comando SQL que se usa para eliminar el contenido completo de una tabla, pero sin eliminar la tabla es:

a) Drop
b) Alter
c) Erase

d) Truncate

DROP – Permite eliminar una tabla incluyendo todos los datos que almacena, reglas de integridad, índices y cualquier otro objeto asociado a ella.

DROP TABLE nombreTabla

TRUNCATE- Permite eliminar todas las filas de una tabla. Sería el equivalente a DELETE * FROM table ≈ DROP + CREATE No se puede volver atrás, no es transaccional. ¡OJO depende del gestor en SQL también te dicen que es transaccional!

TRUNCATE TABLE nombreTabla

63
Q

En una base de datos las vistas:

a) Definen la estructura y organización de los datos
b) Permiten restringir el acceso, permitiendo que diferentes usuarios sólo vean ciertas filas o ciertas columnas de una tabla
c) Se crean automáticamente cuando una consulta se realiza más de una vez en la misma sesión
d) Sólo pueden ser creadas por el usuario propietario del esquema

GSI-2004

A

En una base de datos las vistas:

a) Definen la estructura y organización de los datos

b) Permiten restringir el acceso, permitiendo que diferentes usuarios sólo vean ciertas filas o ciertas columnas de una tabla

c) Se crean automáticamente cuando una consulta se realiza más de una vez en la misma sesión
d) Sólo pueden ser creadas por el usuario propietario del esquema

64
Q

AI problema en un SGBD en que dos transacciones paralelas intentan modificar el mismo objeto de la base de datos, leyendo ambas el valor antes de que la otra transacción lo actualice, se conoce como:

a) Lectura sucia.
b) Lectura fantasma.
c) Lectura no repetible.
d) Lectura comprometida.

GSI-2013-PI

A

AI problema en un SGBD en que dos transacciones paralelas intentan modificar el mismo objeto de la base de datos, leyendo ambas el valor antes de que la otra transacción lo actualice, se conoce como:

a) Lectura sucia.
b) Lectura fantasma.

c) Lectura no repetible.

d) Lectura comprometida.

LECTURAS SUCIAS: Se producen cuando una transacción puede leer datos que están siendo escritos por otra transacción antes de que ésta realice el commit.

LECTURAS NO REPETIBLES : Podemos evitar las lecturas sucias haciendo que los cambios no sean visibles para el resto de usuarios hasta que se haya hecho commit pero, aún así, tendríamos el problema de las lecturas no repetibles que se producen cuando una transacción modifica datos que han sido leídos por otra.

LECTURAS FANTASMAS: Nuevamente el problema de las lecturas no repetibles tiene solución, si hacemos que una transacción no pueda modificar datos que han sido leídos por otra, pero aún nos quedaría el problema de las lecturas fantasmas que se producen cuando una transacción lanza una misma consulta dos veces y obtiene distinto conjunto de resultados. Es decir, el resultado de una transacción interfiere en el resultado de otra de duración mayor.

65
Q

Durante la creación de una base de datos Oracle se generan automáticamente dos usuarios. Estas dos cuentas son:

a) SYS Y DBA
b) SYS Y SYSTEM
c) SYSTEM Y DBA
d) MANAGER Y DBA

TIC A1 Castilla La Mancha 2009

A

Durante la creación de una base de datos Oracle se generan automáticamente dos usuarios. Estas dos cuentas son:

a) SYS Y DBA

b) SYS Y SYSTEM

c) SYSTEM Y DBA
d) MANAGER Y DBA

66
Q

Al hablar de las transacciones en un SGBD, el acrónimo inglés: ACID se refiere a sus características de:

a) Atomicity, Consistency, Isolation, Durability.
b) Atomicity, Consistency, Integrity, Durability.
c) Authentication, Consistency, Integrity, Durability.
d) Authentication, Consistency, Isolation, Durability.

A1 Xunta de Galicia 2018 PI

A

Al hablar de las transacciones en un SGBD, el acrónimo inglés: ACID se refiere a sus características de:

a) Atomicity, Consistency, Isolation, Durability.

b) Atomicity, Consistency, Integrity, Durability.
c) Authentication, Consistency, Integrity, Durability.
d) Authentication, Consistency, Isolation, Durability.

TRANSACCIONES: Locales y distribuidas (protocolo two-phase commit)

Toda transacción ha de cumplir las propiedades ACID :

  • Atomicidad (Atomicity): Las acciones de una transacción se ejecutan todas o ninguna.
  • Consistencia (Consistency): La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
  • Aislamiento (Isolation): La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
  • Persistencia (Durability): Los efectos de una transacción no son permanentes en la BD hasta que la transacción ha finalizado con éxito.
67
Q

El nivel de aislamiento, según ANSI/ISO SQL, de un Sistema Gestor de Base de Datos Relacional (SGBDR) en el que se pueden producir lecturas no repetibles pero no lecturas sucias, se denomina:

a) Lectura no confirmada (read-uncommitted)
b) Lectura confirmada (read-committed)
c) Lectura repetible (repeatable-read)
d) Serializable

GSI-2016

A

El nivel de aislamiento, según ANSI/ISO SQL, de un Sistema Gestor de Base de Datos Relacional (SGBDR) en el que se pueden producir lecturas no repetibles pero no lecturas sucias, se denomina:

a) Lectura no confirmada (read-uncommitted)

b) Lectura confirmada (read-committed)

c) Lectura repetible (repeatable-read)
d) Serializable

MECANISMOS PARA TRATAR DE MINIMIZAR EL IMPACTO DE LA CONCURRENCIA EN LAS TRANSACCIONES.

  • READ UNCOMMITTED / LECTURA NO COMPROMETIDA: No hay ninguna garantía. Las transacciones no están aisladas unas de otras, por lo que se pueden producir todos los problemas que hemos visto.
  • READ COMMITTED / LECTURA COMPROMETIDA : Se garantiza que solo se lean datos escritos por transacciones que hayan hecho su commit. Se evitan sólo las lecturas sucias. COSTE : si intentamos leer un registro que ha sido modificado por otra transacción, nos quedaremos bloqueados hasta que esa transacción termine
  • REPEATABLE READ: Además de las garantías de READ COMMITTED asegura que cada vez que leamos un registro nos devolverá siempre la misma información. Evitamos lecturas sucias y lecturas no repetibles. COSTE : cuando una transacción lee un registro, el registro queda bloqueado para el resto de transacciones que intenten modificarlo, por lo que tendrán que esperar a que acabe la primera transacción antes de poder hacerlo.
  • SERIALIZABLE: Máximo nivel de aislamiento. No se produce ninguno de los problemas vistos anteriormente. COSTE : necesitamos bloquear los rangos de registros que estamos leyendo. En el peor de los casos, eso implicaría bloquear enteras las tablas.

SET SESSION TRANSACTION INSOLATION LEVEL READ UNCOMMITED;

SELECT @@tx-isolation → Ver el nv de aislamiento

68
Q
  • *El modelo ACID es un conjunto de principios de diseño de bases de datos para garantizar la fiabilidad y validez de los**
  • *datos. Las siglas corresponden a:**
    a) A: Authentication, C: Consistency, I: Isolation, D: Durability.
    b) A: Atomicity, C: Consistency, I: Integrity, D: Durability.
    c) A: Atomicity, C: Consistency, I: Isolation, D: Durability.
    d) A: Availability, C: Consistency, I: Isolation, D: Durability.

2019 – GSI - PI

A
  • *El modelo ACID es un conjunto de principios de diseño de bases de datos para garantizar la fiabilidad y validez de los**
  • *datos. Las siglas corresponden a:**
    a) A: Authentication, C: Consistency, I: Isolation, D: Durability.
    b) A: Atomicity, C: Consistency, I: Integrity, D: Durability.
  • *c) A: Atomicity, C: Consistency, I: Isolation, D: Durability.**
    d) A: Availability, C: Consistency, I: Isolation, D: Durability.

TRANSACCIONES: Locales y distribuidas (protocolo two-phase commit)

Toda transacción ha de cumplir las propiedades ACID :

  • Atomicidad (Atomicity): Las acciones de una transacción se ejecutan todas o ninguna.
  • Consistencia (Consistency): La BD se encuentra en un estado consistente antes de la ejecución de la transacción y debe estar en un estado consistente cuando la transacción termine.
  • Aislamiento (Isolation): La ejecución de una transacción no debe interferir en la ejecución de otras transacciones, la transacción debe ejecutarse como si estuviera aislada.
  • Persistencia (Durability): Los efectos de una transacción no son permanentes en la BD hasta que la transacción ha finalizado con éxito.
69
Q

La cláusula INSERT para inserción de datos:

a) Tan sólo permite la inserción de una tupla cada vez.
b) Puede permitir la inserción de más de una tupla al mismo tiempo.
c) No permite insertar valores nulos.
d) Obliga a que la inserción de los valores sea en el orden en que se creó la tabla.

A

La cláusula INSERT para inserción de datos:

a) Tan sólo permite la inserción de una tupla cada vez.

b) Puede permitir la inserción de más de una tupla al mismo tiempo.

c) No permite insertar valores nulos.
d) Obliga a que la inserción de los valores sea en el orden en que se creó la tabla.

70
Q

La cláusula GROUP BY se utiliza para:

a) Agrupar varios atributos para formar una clave
b) Formar una vista con elementos de varias tablas
c) Agrupar usuarios para asignar privilegio
d) Obtener en una sentencia SELECT grupos de tuplas en lugar de tuplas individuales

A

La cláusula GROUP BY se utiliza para:

a) Agrupar varios atributos para formar una clave
b) Formar una vista con elementos de varias tablas
c) Agrupar usuarios para asignar privilegio

d) Obtener en una sentencia SELECT grupos de tuplas en lugar de tuplas individuales

71
Q

ODBC son las siglas de:

a) Open DataBase Consortium
b) Open Data Business Connectivity
c) Open DataBase Connectivity
d) Object DataBase Consortium

A2 Universidad Politécnica de Madrid 2011

A

ODBC son las siglas de:

a) Open DataBase Consortium
b) Open Data Business Connectivity

c) Open DataBase Connectivity

d) Object DataBase Consortium

72
Q

En PL/SQL hay dos tipos de cursores, que son:

a) Básico y extendido.
b) Implícito y explícito.
c) Directo e indirecto.
d) Texto y binario.

A1 ANALISTAS CONGRESO 2021

A

En PL/SQL hay dos tipos de cursores, que son:

a) Básico y extendido.

b) Implícito y explícito.

c) Directo e indirecto.
d) Texto y binario.

73
Q

ODBC:

a) Es un conjunto de drivers que permiten el acceso a datos heterogéneos
b) Son drivers, exclusivos de Windows, para el acceso a base de datos
c) Es la tecnología empleada por Microsoft Access para gestionar los datos
d) Ninguna de las anteriores respuestas es correcta

A

ODBC:

a) Es un conjunto de drivers que permiten el acceso a datos heterogéneos
b) Son drivers, exclusivos de Windows, para el acceso a base de datos
c) Es la tecnología empleada por Microsoft Access para gestionar los datos
d) Ninguna de las anteriores respuestas es correcta

74
Q

¿Cuál de las siguientes sentencias de SQL es una sentencia DDL?

a) UPDATE TABLE
b) ALTER TABLE
c) REVOKE ALL
d) ROLLBACK

A1 AGE 2007

A

¿Cuál de las siguientes sentencias de SQL es una sentencia DDL?

a) UPDATE TABLE

b) ALTER TABLE

c) REVOKE ALL
d) ROLLBACK

SUBJENGUAJES:

  • DDL (Data Definition Language) - Creación/borrado/eliminación de objetos (tablas, …)

CREATE, ALTER, DROP

  • DML (Data Manipulation Language) - Consultas/borrado/modificación/inserccion de datos

INSERT, UPDATE, DELETE

DQL (Data Query Language) - SELECT

  • DCL (Data Control Language) - Contro de permisos, transacciones.

GRANT, REVOKE, (AUDIT, COMMENT)

  • TCL (Transaction Control Language) - COMMIT, ROLLBACK, SAVEPOINT (para no deshacer todo), REALEASE SAVEPOINT
    • SET TRANSATION /START TRANSACTION
75
Q

En un SGBD (Sistema Gestor de Base de Datos), ¿Qué tipo de bloqueos puede haber?

a) Bloqueo de lectura, de escritura, de registro y de página.
b) Bloqueo de registro y de página pero nunca de lectura ni escritura.
c) Bloqueo de lectura y de escritura pero nunca de registro ni de página.
d) Bloqueo de escritura y de registro pero nunca de lectura ni de página.

A

En un SGBD (Sistema Gestor de Base de Datos), ¿Qué tipo de bloqueos puede haber?

a) Bloqueo de lectura, de escritura, de registro y de página.

b) Bloqueo de registro y de página pero nunca de lectura ni escritura.
c) Bloqueo de lectura y de escritura pero nunca de registro ni de página.
d) Bloqueo de escritura y de registro pero nunca de lectura ni de página.

76
Q

El uso de mecanismos como JDBC u ODBC:

a) Proporciona independencia respecto al SGBD utilizado.
b) Proporcionan generalmente un mayor rendimiento y funcionalidad que las APIs nativas de los SGBD.
c) Tienen poca importancia en sistemas donde se acceden a SGBD heterogéneos.
d) Se utilizan únicamente en arquitecturas cliente-servidor, no en entornos de aplicaciones WEB.

A

El uso de mecanismos como JDBC u ODBC:

a) Proporciona independencia respecto al SGBD utilizado.

b) Proporcionan generalmente un mayor rendimiento y funcionalidad que las APIs nativas de los SGBD.
c) Tienen poca importancia en sistemas donde se acceden a SGBD heterogéneos.
d) Se utilizan únicamente en arquitecturas cliente-servidor, no en entornos de aplicaciones WEB.

77
Q

Dentro del álgebra relacional, señala cuál de los siguientes operadores es derivado:

a) Intersección.
b) Unión.
c) Restricción.
d) Diferencia.

A1 Junta de Extremadura 2015

A

Dentro del álgebra relacional, señala cuál de los siguientes operadores es derivado:

a) Intersección.

b) Unión.
c) Restricción.
d) Diferencia.

78
Q

La cláusula select en SQL se corresponde a:

a) La operación de proyección en el álgebra relacional.
b) La operación de unión en el álgebra relacional.
c) La operación de evaluación en el álgebra relacional.
d) La operación de agregación en el álgebra relacional.

A

La cláusula select en SQL se corresponde a:

a) La operación de proyección en el álgebra relacional.

b) La operación de unión en el álgebra relacional.
c) La operación de evaluación en el álgebra relacional.
d) La operación de agregación en el álgebra relacional.

79
Q

Señale la alternativa que contiene los operadores que, juntos, componen el operador ‘join’ del álgebra relacional:

a) Selección, proyección y diferencia
b) Selección, proyección y producto cartesiano
c) Proyección, producto cartesiano y diferencia
d) Proyección, producto cartesiano y unión

A

Señale la alternativa que contiene los operadores que, juntos, componen el operador ‘join’ del álgebra relacional:

a) Selección, proyección y diferencia

b) Selección, proyección y producto cartesiano

c) Proyección, producto cartesiano y diferencia
d) Proyección, producto cartesiano y unión

80
Q

¿Cuál es el resultado de aplicar la operación “Unión Natural” (Natural Join) entre dos relaciones?

a) Las tuplas que están en ambas relaciones.
b) Las tuplas que están en dos relaciones, eliminando las tuplas duplicadas.
c) Las tuplas que están en una relación pero no en otra.
d) Las tuplas que, en el producto cartesiano de ambas, cumplen una determinada condición.

A1-2016

A

¿Cuál es el resultado de aplicar la operación “Unión Natural” (Natural Join) entre dos relaciones?

a) Las tuplas que están en ambas relaciones.
b) Las tuplas que están en dos relaciones, eliminando las tuplas duplicadas.
c) Las tuplas que están en una relación pero no en otra.

d) Las tuplas que, en el producto cartesiano de ambas, cumplen una determinada condición.

81
Q

En SQL estándar, ¿a cuál de las siguientes operaciones NO se puede asignar permisos con GRANT?

a) SELECT.
b) INSERT.
c) EXECUTE.
d) Se le puede asignar a todas las anteriores.

A1 Xunta de Galicia 2018 Promoción Interna

A

En SQL estándar, ¿a cuál de las siguientes operaciones NO se puede asignar permisos con GRANT?

a) SELECT.
b) INSERT.
c) EXECUTE.

d) Se le puede asignar a todas las anteriores.

81
Q

En SQL estándar, ¿a cuál de las siguientes operaciones NO se puede asignar permisos con GRANT?

a) SELECT.
b) INSERT.
c) EXECUTE.
d) Se le puede asignar a todas las anteriores.

A1 Xunta de Galicia 2018 Promoción Interna

A

En SQL estándar, ¿a cuál de las siguientes operaciones NO se puede asignar permisos con GRANT?

a) SELECT.
b) INSERT.
c) EXECUTE.

d) Se le puede asignar a todas las anteriores.

82
Q

Un driver JDBC de tipo 4 es aquel que cumple:

a) Es un driver escrito en java que habla con un middleware en el lado del servidor.
b) Es un driver escrito en java que emplea el protocolo nativo de la base de datos.
c) Es un driver que habla con la librería nativa de base de datos en el cliente y esta comunica por red con la base de datos.
d) JDBC solamente tiene drivers de hasta tipo 3 inclusive.

A2 Universidad Politécnica de Madrid 2011

A

Un driver JDBC de tipo 4 es aquel que cumple:

a) Es un driver escrito en java que habla con un middleware en el lado del servidor.

b) Es un driver escrito en java que emplea el protocolo nativo de la base de datos.

c) Es un driver que habla con la librería nativa de base de datos en el cliente y esta comunica por red con la base de datos.
d) JDBC solamente tiene drivers de hasta tipo 3 inclusive.

83
Q

La cláusula HAVING de SQL:

a) Establece un filtro para seleccionar las filas que se usarán en la consulta.
b) Precisa de la presencia de la cláusula WHERE en la sentencia.
c) Establece un filtro que se aplica a las tablas agrupadas.
d) Establece una condición que deben cumplir las filas.

A2 Universidad Politécnica de Madrid 2011

A

La cláusula HAVING de SQL:

a) Establece un filtro para seleccionar las filas que se usarán en la consulta.
b) Precisa de la presencia de la cláusula WHERE en la sentencia.

c) Establece un filtro que se aplica a las tablas agrupadas.

d) Establece una condición que deben cumplir las filas.

84
Q

¿Cuántas tuplas devuelve una sentencia SQL del tipo “SELECT… FROM Tabla1 LEFT OUTER JOIN Tabla2 ON…”?

a) El número máximo entre las tuplas de Tabla1 y Tabla2.
b) Al menos el número de tuplas de Tabla1.
c) El número de tuplas que están en Tabla1 pero no en Tabla2.
d) El número de tuplas que, en el producto cartesiano de ambas tablas, cumplen una determinada condición.

A1 AGE 2017

A

¿Cuántas tuplas devuelve una sentencia SQL del tipo “SELECT… FROM Tabla1 LEFT OUTER JOIN Tabla2 ON…”?

a) El número máximo entre las tuplas de Tabla1 y Tabla2.

b) Al menos el número de tuplas de Tabla1.

c) El número de tuplas que están en Tabla1 pero no en Tabla2.
d) El número de tuplas que, en el producto cartesiano de ambas tablas, cumplen una determinada condición.

85
Q

¿Cuál de las siguientes operaciones del álgebra relacional es una operación unitaria?

a) Proyección.
b) Diferencia de conjuntos.
c) Producto cartesiano.
d) Unión.

GSI-2015

A

¿Cuál de las siguientes operaciones del álgebra relacional es una operación unitaria?

a) Proyección.
b) Diferencia de conjuntos.
c) Producto cartesiano.
d) Unión.

86
Q

¿Cuál de los siguientes tipos de drivers interacciona con un Middleware que será el que convierta las peticiones JDBC en el protocolo específico del SGBD?

a) Native-Api Driver
b) Network Protocol Driver
c) Native Protocol Driver
d) JDBC-OBDC Bridge

A

¿Cuál de los siguientes tipos de drivers interacciona con un Middleware que será el que convierta las peticiones JDBC en el protocolo específico del SGBD?

a) Native-Api Driver

b) Network Protocol Driver

c) Native Protocol Driver
d) JDBC-OBDC Bridge