B3-T4_Modelo FÍSICO SQL Flashcards
¿Cuál es el mecanismo de protección ante fallos de disco implementado por Oracle?
ARCHIVELOG => protegerá la base de datos ante posibles fallos físicos de disco y ante modificaciones o eliminaciones NO deseadas.
¿A que recomendación se la conoce como SQL3?
SQL:1999
NOTA: era una versión Multi-Parts (5 partes) e introdujo los TRIGGERS.
¿SQL es un lenguaje 4GL puro?
No, porque tenemos una “extensión” procedural.
*SQL = PSM (Persistent Stored Module)
*Oracle => SQL / PL
*Microsoft => T - SQL
Se llama con la sentencia: CALL procedure
¿Es TRUNCATE una sentencia del estándar de SQL?
Si, desde SQL:2008.
NOTA: vacía la tabla.
¿Que características soporta SQLite?
- Compatible con SQL
- Transaciones (ACID)
NOTA: librería escrita en “C”, que implementa un SGBD (se usa en gran medida en ANDROID)
Nombre seis gestores de bbdd compatibles con SQL:
- SQL Server
- DB2
- Oracle
- MySQL
- PostgreSQL
- MaxDB
¿Qué sentencia debo de usar si NO quiero que al hacer un ROLLBACK se deshaga todo el trabajo de la transacción?
*“SAVEPOINT**
NOTA: se puede revertir con:
Release SAVEPOINT
¿Por qué TRUNCATE no soporta la clausula “where”?
Porque no puede borrar registros concretos.
NOTA: usa DROP, para borrar la table y luego CREATE, para crearla.
¿En qué se diferencian WHERE y HAVING?
HAVING se usa para poner condiciones a los datos agrupados, mientras que WHERE pone condiciones a una sóla tupla (fila).
¿En qué se diferencian UNION y MERGE?
Con UNION unes dos partes directamente (dos paquetes de filas, x ejemplo) y MERGE une dos cosas en base a ciertas condiciones de búsqueda
Define los operadores de conjuntos: EXCEPT y INTERSECT:
*EXCEPT: compara los resultados de 2 consultas y devuelve las filas de la 1ª que NO se encuentren en la 2ª, es decir, resta el conjunto de resultados de ambas consultas.
Ej: T1: 1, 2 y 3. T2: 2, 3 y 4
DEVUELVE: 1
*INTERSECT: funciona como un “AND”, es decir, sólo devuelve las filas existentes en ambas consultas.
Ej: T1: 1, 2 y 3. T2: 2, 3 y 4
DEVUELVE: 2 y 3
NOTA: “cond.1” AND “cond.2”
¿Para qué sirve la instrucción: INSTEAD OF…?
INSTEAD OF = EN LUGAR DE => es un ACTIVADOR (igual que AFTER y BEFORE), que permite omitir una instrucción DML (INSERT, DELETE o UPDATE) a una tabla y ejecutar otras instrucciones definidas en el cuerpo del TRIGGER en su lugar.
NOTA: la instruccion DML no se produce en absoluto.
¿Cómo crear un INSTEAD OF disparador?
CREATE TRIGGER trigger_name
ON {table-name}
INSTEAD OF {INSERT} o {UPDATE} o {DELETE}
AS
{sql_statements}
¿Qué se introdujo en las versiones de SQL 2006 y 2016?
*2006 => XML
*2016 => JSON
Enumera las distintas versiones de SQL:
*ANSI - 86 (1ª versión)
*ANSI - 92 (Revisión mayor)
Las siguientes versiones siguen el estándar ISO 9075:
*SQL - 1999 (SQL3) =>Triggers
*SQL - 2003 (Objeto SEQUENCE))
*SQL - 2006 (XML)
*SQL - 2008 (Truncate)
*SQL - 2016 (JSON)
Nombre seis gestores de bbdd compatibles con SQL:
- SQL Server
- DB2
- Oracle
- MySQL / MariaDB
- PostgreSQL
- MaxDB
¿Qué sentencia debo de usar sino quiero que al hacer un ROLLBACK se deshaga todo el trabajo de la transacción?
SAVEPOINT
¿En qué se diferencian SAVEPOINT y COMMIT?
En que SAVEPOINT es reversible (release savepoint), pero commit NO.
Es decir, con SAVEPOINT puedo marcar puntos que no quiero que se rebasen al hacer ROLLBACK, pero, si quiero cancelar ese punto, porque me interese manipular la zona que deja atrás, podría hacerlo con “RELEASE SAVEPOINT”. En cambio, lo guardado con COMMIT que grabado e inamovible.
¿Qué sentencia debo de usar si no quiero que al hacer un ROLLBACK se deshaga todo el trabajo de la transacción?
SAVEPOINT
¿Con que sentencia podemos crear un objeto que nos devuelva valores de forma incremental?
CREATE SEQUENCE
¿Para qué sirve SET TRANSACTION?
Para configurar parámetros de una transacción.
Expón algunas sentencias de DDL (Definición o creación):
*CREATE
*DROP (borra la tabla)
*ALTER (modificar, NO se existen ni MODIFY ni RENAME)
*TRUNCATE => VACÍA la tabla, es decir, borra el contenido, pero mantiene la tabla.
Expón algunas sentencias de DCL (Control sobre permisos y transacciones):
*GRANT (conceder permisos)
*REVOKE (quitar permisos)
*COMMIT / ROLLBACK (confirmar / deshacer cambios)
*SAVEPOINT / RELEASE POINT ( para no deshacer todo / quitar SavePoint)
*SET TRANSACTION / START TRANSACTION (configuración e inicio de transacción)
Expón algunas sentencias de DML (Manipulación de datos):
*SELECT (joins, agrupaciones, subconsultas)
*UPDATE (Actualiza toda la tabla si no le indicas una selección)
*INSERT (para añadir datos o estructuras a una tabla: INSERT TO nombre_tabla VALUES(valor1, valor2, …)
*DELETE (borrar datos)
*MERGE (mezcla registros de una tabla sobre otra => lo coincidente lo ACTUALIZAS / lo NO coincidente lo INSERTAS)
¿Cuáles son los 3 sistemas de borrados de SQL?
*DELETE table empleados ó DELETE empleados => borra el CONTENIDO o REGISTROS de la tabla.
*DROP table empleados => borra TODO: tabla+contendio
*TRUNCATE table empleados => VACÍA la table, es decir, borra el contenido, pero mantiene la tabla.
¿A que sublenguaje pertenece TRUNCATE y porque?
Al DDL, porque internamente realiza un DROP TABLE y un CREATE TABLE, aunque el efecto efectivamente es una tabla vacía.
¿Con que sentencia se modifica una columna de una tabla?
ALTER table_name ALTER column …
¿Con que sentencia borramos un tabla?
DROP table
Nombre las cuatro restricciones (CONSTRAINT) que podemos aplicar sobre las columnas:
- PRIMARY KEY (identifica de forma ÚNICA cada registro / NO NULL)
- UNIQUE (para garantizar que NO se inserten valores DUPLICADOS / admite sólo 1 NULL)
- FOREIGN KEY (es un campo (o colección de campos) en una tabla, que se refiere a la CLAVE PRIMARIA en otra tabla. La tabla con la clave externa (FORÁNEA) se denomina tabla secundaria, y la tabla con la clave principal se denomina tabla principal o de referencia (REFERENCES).
- CHECK (para establecer, x ejemplo, que cierta columna de una tabla tenga los valores mayores de 23, otra los menores, otra que tenga, … Ej: columna PRECIO => check (PRECIO>23)
¿Qué diferencia existe entre UNIQUE y PRIMARY KEY?
Que UNIQUE admite una fila a NULL
¿Con que sentencia se puede ejecutar un procedimiento almacenado?
CALL procedure
(para LLAMAR a los procedimientos almacenados => PSM)
Si queremos usar una secuencia, ¿qué permiso nos deben otorgar?
GRANT usage
*USAGE: permiso asociado a las SEQUENCE.
¿Cuál es la sintaxis de la sentencia REVOKE?
REVOKE privilegio ON object-name FROM grantee
NOTA: donde “grantee” es a quien le das o quitar el permiso, que puede ser un usuario o un rol.
¿Qué utilidad tiene conceder el privilegio: grant EXECUTE?
Para los “procedimientos almacenados”, que queramos ejecutar.
SINTAXIS: GRANT execute ON object-name FROM grantee
NOTA: donde “grantee” es a quien le das o quitar el permiso, que puede ser un usuario o un rol.
¿Cuál es sintaxis de GRANT y que privilegios puede conceder?
SINTAXIS: GRANT privilegio ON nombre_tabla TO grantee [WITH GRANT OPTION] => está coletilla opcional se pondría para que el usuario, a su vez, podrá otorgar esos privilegios a otros.
PRIVILEGIOS:
*SELECT
*UPDATE
*INSERT
*DELETE
*ALL (todos los privilegios)
*USAGE (para secuencias)
*EXECUTE (para “procedimientos almacenados” = PSM, PL o T-SQL)
¿Cuáles son los problemas de lectura de cada “Nivel de Aislamiento”?
ISOLATION LVL - SUCIA - NO REPETIBLE - FANTASMA
READ UNCOMMITED - SI - SI - SI
READ COMMITED - NO - SI - SI
REPETEABLE READ - NO - NO - SI
SERIALIZABLE - NO -NO - NO
2 MNEMOTECNIAS:
1. READ UNCOMMITED tiene TODOS los problemas de lectura y SERIALIZABLE no tiene NINGUNO.
- Los “Sies” y los “Noes”, estan colocados a la inversa, es decir, con los “Sies, empieza siendo todos Sies = todos lso problemas (READ UNCOMITED) y va descendiendo hasta SERIALIZABLE, que no tiene NINGÚN porblema de lectura.
Con los “noes” es justo al revés.
¿Cuál es la diferencia de las sintaxis de GRANT y REVOKE?
El ON/TO (Grant) y el ON/FROM (Revoke)
*grant privilegio ON object-name TO grantee
*revoke privilegio ON object-name FROM grantee
NOTA: donde “object_name” es la estructura sobre la que estamos dando/quitando el privilegio (tabla, vista, …) y “grantee” es a quien le das o quitar el permiso (usuario o rol).