SQL Flashcards
¿Qué significan las siglas ACID?
A tomicity (que se traten varias sentencias como una unidad de trabajo)
C onsistency (que no se queden cosas a medias)
I solation (unidades de trabajo)
D durability (información grabada)
Puerto de Oracle
1521
Puerto SQL Server
1433
Puerto Postgresql
5432
Puerto MySql/MariaDB
3306
Puerto Informix
9089
Subleguajes dentro de SQL (clasificación de los comandos)
DDL –> Data Definition Lang. Creación/Borrado/Eliminación de objetos (tablas…) [CREATE/DROP/ALTER]
DML –> Data Manipulating Lang. Consulta/ Borrado/ Modificación/ Inserción de datos [INSERT/UPDATE/DELETE/TRUNCATE]
DCL –> Data Control Lang. Control sobre permisos, transacciones [GRANT/REVOKE]. TCL–> Transacciones [ROLLBACK/COMMIT/SAVEPOINT/RELEASE SAVEPOINT]
Comandos DCL ()
GRANT –> Dar permisos
REVOKE –> Quitar permisos
COMMIT/ROLLBACK –> Confirmar o deshacer cambios en una TX
SAVEPOINT –> Para no deshacer todo (RELEASE SAVEPOINT)
SET TRANSACTION/START TRANSATION –>Configuración e inicio de una TX
Comandos DDL
CREATE
DROP
ALTER
Se aplica para
TABLE / INDEX / VIEW / PROCEDURE / SEQUENCE / FUNCTION / TYPE / TRIGGER /DOMAIN /SCHEMA / ROLE
Comandos DML
SELECT
UPDATE
INSERT
DELETE
MERGE
TRUNCATE (no Tx)
Sentencia DELETE
DELETE FROM [tabla] WHERE [condiciones]
Para que sirve SAVEPOINT y como se libera
SAVEPOINT [nombre] Sirve para ‘guardar partida’ y que no se haga un ROLLBACK de todo lo ejectuado. El punto de salvado hay que liberarlo cuando corresponda con RELEASE SAVEPOINT [nombre]
¿Cómo crearias una tabla?
CREATE TABLE nombreTabla
(
id CHAR(4) NOT NULL,
id_table2 CHAR(4) NOT NULL,
nombre VARCHAR(40) NOT NULL,
zip CHAR(6) NOT NULL,
….
CONSTRAINT pk_id PRIMARY KEY (id),
CONSTRAINT fk_id_table2 FOREING KEY (id_table2) REFERENCE table2 (id) [ON DELETE/UPDATE CASCADE],
CONSTRAINT uniq_zip UNIQUE (zip),
CONSTRAINT chk_zip CHECK(zip LIKE ‘[0-9][0-9][0-9][0-9][0-9][A-Z]’),
)
Cómo modificarias una tabla
ALTER TABLE nombreTabla [cosa que queramos modificar/añadir]
ALTER TABLE [nombreTabla] ADD COLUMN [nombreCol] [tipo datos] [atributos] ==>
ALTER TABLE tabla1 ADD COLUMN precio FLOAT(6,2) NOT NULL,
ALTER TABLE [nombreTabla] ALTER COLUMN [nombreColum] [SET DEFAULT valor | SET NOT NULL | SET DATA TYPE (tipo_datos)] ==>
ALTER TABLE tabla1 ALTER COLUMN precio SET DATA TYPE NUMBER(10),
ALTER TABLE tabla1 ALTER COLUMN precio SET DEFAULT 10,
ALTER TABLE [nombreTabla] ADD COSTRAINT [nombreCostraint] [type of constraint] [campo] [(info adicional)] ==>
ALTER TALBE tabla1 ADD CONTRAINT fk_id_tabla2 FOREING KEY(id_tabla2) REFERENCE tabla2(id)
Cómo damos y quitamos permisos en SQL
GRANT y REVOKE
(GRANT-ON-TO) (REVOKE-ON-FROM)
GRANT SELECT, INSERT, DELETE ON tabla1 TO user1 [WITH GRANT OPTION]
REVOKE DELETE ON tabla1 FROM user1
Como dirias que se borre / actualice en cascada
CREATE TABLE products
( product_id numeric(10) not null,
supplier_id numeric(10) not null,
CONSTRAINT fk_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id)
ON DELETE CASCADE
);
Niveles de aislamiento
Como se hace correctamente una sentencia INSERT
- INSERT INTO [nombreTabla] (col1, col2, col3….) VALUES (val1, val2, val3)
- INSERT INTO [nombreTabla] (col1, col2, col3….) SELECT col1, col2, col3…. FROM [tabla2]
Como se hace correctamente una sentencia DELETE
DELETE FROM [nombreTabla] WHERE [condición]
Como se hace correctamente una sentencia UPDATE
UPDATE [nombreTabla] SET [nombreCol] = [valor] WHERE [condición]
Como se hace correctamente una sentencia SELECT
SELECT col1, col2, col3…. FROM [nombreTabla] WHERE [condición] (GROUP BY [col1] HAVING [condicion] ORDER BY col1 ASC/DESC)
Cómo se usa LIKE
SELECT * FROM nombreTabla WHERE col1 LIKE ‘%texto%’
Cómo agrupamos en una SELECT
SELECT col1, min(col2), max(col3), avg(col4), count(col5)…..[de grupo]
FROM nombreTabla
GROUP BY col1
HAVING min(col2) > 5
Cómo ordenamos una select
SELECT col1, col2, col3 …. FROM nombreTabla ORDER BY col1 [ASC / DESC]
NOTA: La ordenación por defecto es ASC
Qué hace y cómo se usa DISTINCT
Afecta a todas las columnas de una select. Evita campos repetidos y te muestra solo una fila de cada ocurrencia.
SELECT DISTINCT col1, col2, col3 …. FROM nombreTabla WHERE [condicion]
Qué operadores tenemos para subconsultas
SELECT [cols] FROM [tabla] WHERE EXISTS ([subquery])
SELECT [cols] FROM [tabla] WHERE col1 [NOT] IN (select col1 from…)
SELECT [cols] FROM [tabla] WHERE col1 (operartor[<>=]) [ANY/SOME/ALL] (select col1 from…)
Clases de JOIN
CROSS JOIN –> Multiplica las dos tablas. Es lo mismo que poner select …. from tabla1, tabla2
INNER JOIN –> Muestra las tuplas de las tablas coincidentes en el campo que se determine como pivote
LEFT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 (a la izquierda) y dejando los datos de la tabla 2 a null si no hay ocurrencias
RIGHT [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 2 (a la derecha) y dejando los datos de la tabla 1 a null si no hay ocurrencias
FULL [OUTER] JOIN –> Cómo inner pero mostrando todos los datos de la tabla 1 y la tabla2 (a izquierda y derecha) y dejando los datos de a null si no hay ocurrencias en alguna de las tablas
Sintaxis CROSS JOIN
SELECT * FROM tabla1, tabla2 where …….
SELECT * FROM tabla1 CROSS JOIN tabla2 where …….
Sintaxis INNER JOIN
SELECT * FROM tabla1 AS t1 INNER JOIN tabla2 AS t2 ON t1.col = t2.col
Sintaxis LEFT JOIN
SELECT * FROM tabla1 AS t1 LEFT JOIN tabla2 AS t2 ON t1.col = t2.col
Sintaxis RIGHT JOIN
SELECT * FROM tabla1 AS t1 RIGHT JOIN tabla2 AS t2 ON t1.col = t2.col
Sintaxis FULL JOIN
SELECT * FROM tabla1 AS t1 FULL JOIN tabla2 AS t2 ON t1.col = t2.col
Qué hacen y que tipos de unión hay en SQL
Junta los datos de varias tablas a través de sus select. Dependiendo del tipo elimina duplicados o no.
- UNION –> elimina duplicados
- UNION ALL –> no elimina duplicados
SELECT t1.campoChar, t1.campoNumber FROM nombreTabla1 AS t1
UNION [ALL]
SELECT t2.campoChar, t2.campoNumber FROM nombreTabla2 AS t2
Que hace un MERGE en SQL
Junta en una misma tabla los datos de dos. Tendremos una tabla SOURCE y otra TARGET, pasaremos datos desde SOURCE a TARGET añadiendo los datos nuevos y actualizando los que ya existen a menos que indiquemos lo contrario.
MERGE INTO nombreTablaTarget AS tt
USING nombreTablaSource AS ts
ON [condición]
WHEN MATCHED THEN UPDATE SET col1 =…..
WHEN NOT MATCHED THEN INSERT (col1, col2…) VALUES (col1, col2…)
Que es un TRIGGER y como se usa
Disparador. De fila o de sentencia, se activan cuado se actua sobre una fila o cuando se lanza una sentencia. Ej.: cuando se inserta una fila o cuando se lanza un comando DELETE.
CREATE TRIGGER nombreTrigger
[AFTER/BEFORE/INSTEAD OF] [UPDATE/DELETE/INSERT] ON nombreTabla FOR EACH ROW/STATEMENT
BEGIN
INSERT INTO nombreTabla (col1, col2….) VALUES (val1, val2….)
END;
Indique el tipo de correspondencia necesaria para representar en el diagrama E/R la relacion que falta entre los tipos de zona y los tramos de las calles.
a) A través de una relación 0:1 entre TipoZona y TramoCalle
b)A través de una relación N:M entre TipoZona y TramoCalle.
c) Através de una relación 1:1 entre TipoZona y TramoCalle.
d) Através de una relación 1:N entre TipoZona y TramoCalle.
d) Através de una relación 1:N entre TipoZona y TramoCalle.
¿Cuál de las siguientes tablas se obtiene de transformar la entidad Calle del modelo EIR al modelo físico, teniendo en
cuenta las asociaciones que tieno? (PK es Primary Key y FK es Foreign Key)
a) calle(idCalle (PK), nombre)
b) calle(idCalle (PK), idTramoCalle (FK), nombre)
c) calle(idCalle (PK), idMunicipio (FK), nombre)
d) calle(idCelle (PK), idMunicipio (FK), idTramoCalle(FK), nombre)
c) calle(idCalle (PK), idMunicipio (FK), nombre)
Las bases de datos relacionales ofrecen propiedades ACID. Dicho acrónimo se refiere a:
a) Atomicidad, Consistencia, Aislamiento y Durabilidad.
b) Atomicidad, Coherencia, Integridad y Distribución.
c) Disponibilidad, Coherencia, Intensidad y Durabilidad.
d) Atomicidad, Consistencia, Aislamiento y Disponibilidad.
a) Atomicidad, Consistencia, Aislamiento y Durabilidad.
Con respecto a las sentencias del lenguaje SQL, indique la respuesta INCORRECTA:
a) Sentencia DELETE sirve para borrar en forma sencilla distintos objetos como por ejemplo base de datos, tablas o índices.
b) La sentencia INSERT agrega uno o más registros a una tabla en una base de datos relacional.
c) La sentencia UPDATE modífica los valores de un conjunto de registros existentes en una tabla.
d) La sentencia GRANT se utiliza para dar permisos a un usuario.
a) Sentencia DELETE sirve para borrar en forma sencilla distintos objetos como por ejemplo base de datos, tablas o índices.
Señale la respuesta INCORRECTA. Los tipos más corrientes de anomalías de base de datos son:
a) Lecturas no repetibles.
b) Lecturas hundidas.
c) Lecturas sucias.
d) Lecturas fantasma.
b) Lecturas hundidas.
En SQL, ¿cómo se pueden eliminar los datos en una tabla, pero no la propia definición de la tabla?
a) DROP TABLE
b) DELETE
c) REMOVE
d) ERASE
b) DELETE
Para crear una tabla llamada Usuario, ¿qué sentencia SQL debemos ejecutar?
a) ALTER TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
b) INSERT TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
c) CREATE TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
d) DROP TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
motor de Base de Datos ORACLE, indique cuál de los siguientes es un
c) CREATE TABLE Usuario (idUsuario bigint PRIMARY KEY, nombre varchar(255));
Si fuese el motor de BBDD ORACLE, indique cuál de los siguientes es un lenguaje de procedimiento cuya sintaxis permite insertar sentencias SQL y se almacena compilado dentro de la base de datos:
a) TRANSACT SOL
b) PL/SQL
c) FORTRAN
d) COBOL
b) PL/SQL
¿Cuál de las siguientes opciones NO se corresponde con una de las 12 Reglas de Codd?
a) Regla de la no subversión. Si el sistema ofrece una interfaz de acceso a bajo nivel, dicho acceso no se podrá usar para
subvertir el sistema (por ejemplo para sortear restricciones de integridad o seguridad).
b) Tratamiento sistemático de valores nulos. El sistema debe permitir que haya campos nulos. Se debe disponer de una
representación de valores desconocidos y no aplicables diferente de los valores nomales.
c) Dependencia de la distribución. Que la base de datos se almacene o gestione de forma distribuida en varios servidores
afecta al uso de la misma y a la programación de las aplicaciones de usuario.
d) Catálogo dinámico en línea basado en el modelo relacional. El sistema debe soportar un catálogo en línea, el catálogo
relacional, que da acceso a la estructura de la base de datos y que debe ser accesible a los usuarios autorizados.
Teniendo una base de datos relacional, con una tabla “Empleados” con campos (Id, Nombre, Puesto, Salario,….),
indique cuál sería una forma válida de comenzar la creación de un Trigger en ANSI SQL, si lo que se quiere validar es un cambio de valor del campo “Salario”:
a) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario OF TABLE Empleados
b) CREATE NEW TRIGGER BEFORE UPDATE OF Salario ON Empleados
c) CREATE TRIGGER Validar_salario IN Empleados BEFORE UPDATE OF Salario
d) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario ON Empleados
d) CREATE TRIGGER Validar_salario BEFORE UPDATE OF Salario ON Empleados
Si utilizamos el gestor de base de datos Oracle (v.10g), ¿qué podriamos hacer si dentro de una transacción de la base de datos se quiere establecer un punto de recuperación?
a) Utilizar la sentencia SAVEPOINT y así definir un punto de salvaguarda dentro de una transacción.
b) Ulilizar la sentencia ROLLBACK y asf definir un punto de salvaguarda dentro de una transacción
c) Usarlos comandos GRANT para dar permisos adecuados de administrador DBA sobre las tablas.
d) Ulilizar la sentencia RECOVERPOINT y así definir un puntode salvaguarda dentro de una transacción.
a) Utilizar la sentencia SAVEPOINT y así definir un punto de salvaguarda dentro de una transacción.
Enla base de dat os el campo “IdFormaAcceso” de la tabla “Proceso” es de tipo char(1) y puede tomar los valores “L” (Ingreso Libre) y “P” (Promocion Interna). ¿Qué instrucción deberá utilizar para obtener un listado de todos los IdProceso de forma que aparezca el nombre descriptivo de la correspondiente Forma de Acceso?
a) SELECT IdProceso, IF IdFomaAcceso = ‘L’ THEN ‘Ingreso Libre’ ELSE ‘Promocion Interna’ ENDIF AS FormaAcceso FROM Proceso
b) SELECT IdProceso, CASE IdFormaAcceso WHEN ‘L’ THEN ‘Ingreso Libre’ WHEN ‘P’ THEN ‘Promocion Interna’ END AS FormaAcceso FROM Proceso
c) SELECT IdProceso, SWITCH IdFormaAcceso (‘L’=’Ingreso Libre’, ‘P’=’Promocion Interna’) AS FormaAcceso FROM Proceso
d) SELECT IdProceso, IIF(IdFormaAcceso, ‘L’ = ‘Ingreso Libre’, ‘P’ = ‘Promocion Interna’) AS FormaAcceso FROM Proceso
b) SELECT IdProceso, CASE IdFormaAcceso WHEN ‘L’ THEN ‘Ingreso Libre’ WHEN ‘P’ THEN ‘Promocion Interna’ END AS FormaAcceso FROM Proceso
También le consultan sobre la sentencia SQL a utilizar para obtener el listado del identificador de los opositores (IdOpositor) que tienen más de una entrada en la tabla Solicitud.
a) SELECT IdOpositor, COUNT(IdSolicitud) AS NumeroSolicitudes FROM Solicitud GROUP BY IdOpositor WHERE NumeroSolicitudes > 1
b) SELECT IdOpositor, IdSolicitud FROM Solicitud WHERE COUNT(IdSolicitud) > 1
c) SELECT IdOpositor, COUNT(idSolicitud) FROM Solicitud WHERE COUNT(idSolicitud) > 1 GROUP BY IdOpositor
d) SELECT IdOpositor, COUNT (idSolcitud) FROM Soliciud GROUP BY IdOpositor HAVING COUNT(idSolicitud) > 1
d) SELECT IdOpositor, COUNT (idSolcitud) FROM Soliciud GROUP BY IdOpositor HAVING COUNT(idSolicitud) > 1
¿Con qué instrucción ANSI SQL incrementaría un diez por ciento el valor de la columna Duracion para todos los
registros de la tabla Ejercicio?
a) UPDATE Duracion = Duracion + (0.10 * Duracion) FROM Ejercicio
b) UPDATE Ejercicio SET Duracion = Duracion * 1.1
c) UPDATE TABLE Ejercicio (Duracion = Duracion + 10%)
d) UPDATE SET Duracion *= 1.10 FROM Ejercicio
b) UPDATE Ejercicio SET Duracion = Duracion * 1.1
¿Con qué instrucción ANSI SQL incrementaría un diez por ciento el valor de la columna Duracion para todos los
registros de la tabla Ejercicio?
a) UPDATE Duracion = Duracion + (0.10 * Duracion) FROM Ejercicio
b) UPDATE Ejercicio SET Duracion = Duracion * 1.1
c) UPDATE TABLE Ejercicio (Duracion = Duracion + 10%)
d) UPDATE SET Duracion *= 1.10 FROM Ejercicio
b) UPDATE Ejercicio SET Duracion = Duracion * 1.1
Si el campo DNI de la tabla Opositor es de tipo char(9), ¿cuál es la instrucción SQL para obtener el listado de todos los
registros de la tabla Opositor cuyo DNI empieza por 3?
a) SELECTFROM Opositor WHERE DNI = 3
b) SELECT * FROM Opositor WHERE DNI IN (‘3.’)
c) SELECT * FROM Opositor WHERE DNI LIKE ‘3%’
d) SELECT DNI(3*) FROM Opositor
c) SELECT * FROM Opositor WHERE DNI LIKE ‘3%’
Dada una tabla ‘Personal’ con una columna ‘lugar’, se quiere obtener el número de personas en cada lugar, cuando haya más de 10 personas en el mismo. Señale la sentencia SQL correcta:
a) SELECT lugar, Count( * ) AS numPersonas FROM Personal GROUP BY lugar HAVING Count( * )>10
b) SELECT lugar, Count( * )>10 AS numPersonas FROM Personal GROUP BY lugar
c) SELECT lugar, Count( * ) AS numPersonas FROM Personal WHERE Count( * )>10 GROUP BY lugar
d) SELECT lugar, Count( * ) AS numPersonas FROM Personal WHERE Count(lugar)>10
a) SELECT lugar, Count( * ) AS numPersonas FROM Personal GROUP BY lugar HAVING Count( * )>10
En relación a las sentencias utilizadas en SQL y su tipologfa, indique la afirmación INCORRECTA:
a) Las sentencias de tipo DML se utilizan para manipulación de datos e incluyen instrucciones como SELECT, INSERT o
DELETE.
b) Las sentencias de control de datos permiten la gestión de privilegios a los usuarios mediante GRANT o REVOKE
c) Las sentencias de lipo DCL permiten la definición de estructuras de dalos mediante CREATE TABLE o DROP TABLE.
d) Las sentencias de control de transacciones Incluyen las instrucciones COMMIT y ROLLBACK.
c) Las sentencias de lipo DCL permiten la definición de estructuras de dalos mediante CREATE TABLE o DROP TABLE.
Dado un procedimiento almacenado en SQL Server con la cabeceraCREATE PROCEDURE getEmployees @LastName varchar(50), @FirstName nvarchar(50) ¿Cuál NO seria una instrucción valida para ejecutar dicho procedimiento?
a) EXECUTE getEmployees @FirstName = N’Pilar’, @LastName = N’Rojas’;
b) EXEC getEmployees @LastName = N’Rojas’, @FirstName = NPilar;
c) EXECUTE getEmployees N’Rojas’, N’Pilar’;
d) EXEC gelEmployees @LastName = N’Rojas’, N’Pilar’;
d) EXEC gelEmployees @LastName = N’Rojas’, N’Pilar’;
El sistema cuenta con una tabla de inscripciones antiguas, incripcion, que contiene datos de ciudadanos que ya han realizado acciones formativas anteriormente. Teniendo en cuenta que el campo NIF es PK de Ciudadano y FK de Inscripcion, se desea saber qué ciudadanos no han realizado ninguna inscripción en anteriores convocatorias. ¿Qué sentencia SQL utilizaría para obtener dichos datos?
a) SELECT Ciudadano.NIF FROM Ciudadano LEFT JOIN Inscripcion ON ciudadano.NIF = Inscripcion.NIF WHERE InscripcionNIF IS null
b) SELECT Ciudadano.NIF FROM Ciudadano INNER JOIN Inscripcion ON Ciudadano.NIF = Inscripcion NIF WHERE Inseripcion NIF IS null
c) SELECT Ciudadano.NIF FROM Ciudadano LEFT JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF
d) SELECT DISTINCT (Ciudadano.NIF) FROM Ciudadano LEFT JOIN Inscripcion ON Ciudadano.NIF = Inscripcion.NIF GROUP BY Ciudadano NIF
a) SELECT Ciudadano.NIF FROM Ciudadano LEFT JOIN Inscripcion ON ciudadano.NIF = Inscripcion.NIF WHERE InscripcionNIF IS null
Antes de poner en marcha el sistema, se ha decidido categorizar las aulas por edificios. Para ello se crea una nueva tabla llamada Edificio (idEdificio (PK), nomEdificio, localizacion) y se debe añadir un nuevo campo, idEdif enlatabla Aula. Teniendo en cuenta que un aula pertenece a un único edificio y un edificio podrá contener múltiples aulas, ¿cuál sería la sentencia SQL adecuada para crear la tabla Aula según las premisas indicadas?
a) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio INT NOT NULL, FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdficio))
b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio INT NOT NULL, PRIMARY KEY (IdAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdíficio))
c) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio INT NOT NULL, PRIMARY KEY (idAula))
d) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEcificio INT NOT NULL)
b) CREATE TABLE Aula (idAula INT NOT NULL, nomAula VARCHAR(100) NOT NULL, numPlazas INT NOT NULL, idEdificio INT NOT NULL, PRIMARY KEY (IdAula), FOREIGN KEY (idEdificio) REFERENCES Edificio (idEdíficio))
Una vez creada la tabla Aula le piden obtener el número de aulas existentes por edificio. ¿Qué sentencia SQL ejecutaría?
a) SELECT COUNT(*) FROM Aula WHERE idEdificio IS NOT NULL
b) SELECT idEcificio, COUNT(*) FROM Aula INNER JOIN Ecificio ON Aula.idEdificio = Edificio.idEdificio
c) SELECT idEdificio, COUNT() FROM Aula WHERE COUNT()>0
d) SELECT idEdificio, COUNT(*) FROM Aula GROUP BY idEdificio
d) SELECT idEdificio, COUNT(*) FROM Aula GROUP BY idEdificio
En el ámbito del Lenguaje Control de Transacciones, ¿en qué consiste un savepoint?
a) Permite insertar un punto de parada en la ejecución de la transacción para monitorizar su ejecución.
b) Permile hacer una copia de seguridad de la base de datos a partir de un punto concreto de la transacción.
c) Permite escribir en ficheros de log a partir de un punto definido en la transacción.
d) Permite marcar un punto de recuperación en una transacción para poder revertirla hasta dicho punto mediante ROLLBACK.
d) Permite marcar un punto de recuperación en una transacción para poder revertirla hasta dicho punto mediante ROLLBACK
¿En qué consiste el estandar SQL/PSM?
Añade funcionalidades procedurales. Procedimientos almacenados. En Oracle PL/SQL y en SQL Server T-SQL
Funcionamiento de una INNER JOIN
Intersección de dos tablas (los registros resultantes tendrán una coincidencia de valores en funcion de una condición)
select …… form tabla 1 [inner] join tabla2 on tabla1.campo1 = tabla2.campo2
Qué tipo de producto es SQLite
Una libreria que soporta operaciones de SQL/ACID a nivel ‘local’
NOTA: Es la tecnología que usa Android para almacenamiento
¿En que consiste una transacción? Siglas ACID
A tomicity
C onsistency
I solation
D urability
Atomiticy –> Conjunto de sentencias SQL que se tienen que ejecutar de forma atomica (o todo o nada)
NOTA: Sentencias de control relacionas con transacciones (TCL):
- Commit
- Rollback
- Savepoint /Release savepoint
- Set transaction para configurar el nivel de ailamientoç
- Start transaction para determinar el inicio de la transaccion
Sentencias de DML
Data Management
SELECT … FROM … WHERE … GROUP BY…. HAVING ….ORDER
DELETE FROM tabla WHERE …..
UPDATE tabla SET
INSERT INTO tabla (….) VALUES (….)
TRUNCATE TABLE
MERGE INTO
¿Para que sirve una restricción UNIQUE?
Se define sobre una columna para que no admita valores duplicados. Si admite NULL
NOTA: una clave candidata tendria que llevar UNIQUE + NOT NULL
Sintaxis REVOKE
REVOKE [permisos] ON [objeto] FROM [garantee]
Uso de un Trigger
Es una rutina de negocio que se ejecuta cuando se detecta cierto ‘evento’
NOTA: Este evento puede ser INSERT, UPDATE o DELETE
NOTA: Podemos EJECUTAR la rutina (cuerpo del TRIGGER) antes o depues del evento
NOTA: Podemos EJECUTAR la rutina por cada fila afectada o a nivel de toda la sentencia que ha provocado el disparo
OJO: Entender bien el INSTEAD OF (Solo tiene efecto el cuerpo del trigger y no el evento)
Cuando se puede usar la clausula HAVING
Cuando hagamos grupos con GROUP BY (filto de grupos)
Uso de la función AVG
Función de agregado para el cálculo de la meda arigmetica
NOTA: Se puede usar sin grupos (ej. select avg(precio) from producto)