b3t4 - SQL Flashcards

1
Q

Que tipo de lenguaje es el Sql? Generacion y delcararivo/imperativo

A

Es un lenguaje de 4gl (4º generación) declarativo + una extensión procedural

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

Cuál es el standar ISO de SQL?

A

ISO 9075
Antes era ANSI-86 y luego ANSI-92

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

Cuál fué la versión del standar SQL que ya incluyó SQL3 con triggers?

A

SQL3
ISO9075 - SQL:1999

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

Cuál es la última versión del stadar de SQL?

A

ISO9075 - SQL:2016 (compatibilidad con json)

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

Qué es SQL/PSM?

A

Persistent Stored modules: Es la extensión del standar ISO9075 de SQL que es el lenguaje procedural en lugar de declarativo, que se usa en los procedimientos almacenados
Por ejemplo el Oracle PL/SQL o Sybase Transact-SQL está derivado de este standar

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

Qué es SQLite?

A

Es un formato de ficheros y una librería que usa ese fichero y que entiende el estandar SQL y transacciones sobre ese fichero. Es para uso local, no es cliente-servidor. Se usa en Android

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

Qué son cada uno de estos sublenguajes de SQL?
DDL
DML
DCL

A

DDL -> Data Definition Languaje -> Creación, borrado, eliminarción de objetos
DML -> Data Manipulation Languaje -> consulta/borrado/modificación/inserción de datos
DCL -> Data Control Languaje -> Control sobre permisos, transacciones, etc … -> Dentro está el TCL (Transaction Control Languaje)

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

Sentencias de DML
SELECT
UPDATE
INSERT
DELETE
MERGE
TRUNCATE *

A

SELECT (joins, agrupaciones, consultas)
UPDATE
INSERT
DELETE
MERGE -> mezcla de registros de una tabla sobre otra
TRUNCATE -> (es DML o DDL) -> borra los datos de una tabla. Sin tener en cuenta las transacciones

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

Sentencias de DDL
CREATE
DROP
ALTER
TRUNCATE*

A

CREATE -> crear
DROP -> borrar
ALTER -> modificar
TRUNCATE -> (es DML o DDL) -> borra los datos de una tabla. Sin tener en cuenta las transacciones
+
TABLE
INDEX
VIEW
PROCEDURE
SEQUENCE
FUNCTION
TYPE -> tipos compuestos de datos
TRIGGER
DOMAIN -> dominio de valores
SCHEMA -> una forma de agrupar tablas para subsistemas funcionales
ROLE -> para asignar permisos y funcionalidades a ese rol. El rol se asigna a usuarios

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

Sentencias de DCL
CALL procedure
GRANT
REVOKE
COMMIT/ROLLBACK
SAVEPOINT
SET TRANSACTION / START TRANSACTION

A

CALL procedure -> para llamar a procedimientos almacenados
GRANT -> dar permisos
REVOKE -> quitar permisos

TCL —————
COMMIT/ROLLBACK -> confirmar o deshacer los cambios en una transacción
SAVEPOINT -> poner un savepoint, para que si se hace rollback sólo se deshace a partir del savepoint /RELEASE SAVEPOINT (para quitar el savepoint)
SET TRANSACTION / START TRANSACTION -> Configurar e iniciar una transacción

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

Mirar cómo se hacen en los distintos gestores de bbdd (oracle, mysql, postgres, sqlserver)
create index
create view
call
funciones de fechas y cadenas

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

Constraints
CHECK
PRIMARY KEY
UNIQUE
FOREIGN KEY

A

CHECK -> establecer condiciones que ha de cumplir el valor del campo
PRIMARY KEY
UNIQUE -> admite 1 solo null en toda la columna
FOREIGN KEY

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

Sintaxis de CREATE y las distintas CONSTRAINT

A

CREATE TABLE nombre-tabla (campo1 CHAR(4) not null, campo 2 INT, …),
CONSTRAINT nombre-constraint PRIMARY KEY (campo key),
CONSTRAINT nombre-constraint FOREIGN KEKY (campo fk) REFERENCES tabla_referenciada (campo_referenciado),
CONSTRAINT nombre-constraint UNIQUE (campo),
CONSTRAINT nombre-constraint CHECK (condición o exp regular)

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

Sintaxis ALTER TABLE, y sus distintas opciones para
añadir columna
modificar columna
eliminar columna
añadir restriccion

A

ALTER TABLE nombre_tabla ADD COLUMN nombre_col tipo_dato atributos

ALTER TABLE nombre_tabla ALTER COLUMN nombre_col SET DEFAULT/SET NOT NULL/SET DATA TYPE tipo dato

ALTER TABLE nombre_tabla DROP COLUMN nombre_col

ALTER TABLE nombre_tabla ADD CONSTRAINT…

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

Sintáxis de GRANT

A

GRANT tipo-privilegio ON objeto TO destinatario-privilegio [WITH GRANT OPTIONS]
- tipo privilegio: (SELECT, UPDATE, INSERT, DELETE, REFERENCES (para poder hacer fks)) + columnas, ALL, USAGE (ej. secuencia), EXECUTE
- objeto: tabla, vista, …
- destinatario-privilegio: usuario, rol
- WITH GRANT OPTIONS: para que el destinatario del permiso también pueda darlo a otros. Delegación de permisos

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

Sintáxis REVOKE

A

REVOKE privilegio ON objeto FROM destinatario-privilegio

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

En qué consisten los siguentes niveles de aislamiento que se pueden configurar en un monitor de transacciones de una base de datos?
READ UNCOMMITED
READ COMMITED
REPEATABLE READ
SERIALIZABLE

A

READ UNCOMMITED -> (lectura no confirmada) se permite leer los datos de las transacciones no comiteadas
READ COMMITED -> (lectura confirmada) solo se pueden leer los datos de transacciones comiteadas
REPEATABLE READ (lectura repetible)-> no permite durante una transacción que otra transacción haga commits, mediante bloqueos de registro
SERIALIZABLE (serializable)-> todas las transacciones una detrás de otra, no da problemas de concurrencia, es que peor rendimiento tiene

18
Q

Ver el vídeo para entender los niveles de las transacciones

A

https://www.youtube.com/watch?v=ky7zUJwfWQc

19
Q

Qué son los problemas de concurrencia siguientes y a qué niveles de aislamiento de transacciones afecta?

Lectura sucia
Lectura no repetible
Lectura fantasma

A

Lectura sucia -> Cuando se permite leer los datos no comiteados de otra transacción
Lectura no repetible -> Ocurre cuando a lo largo de una transacción, la misma lectura que se haga varias veces y de datos distintos, porque entre una lectura y otra haya comiteado otra transacción
Lectura fantasma -> Cuando en la lectura se leen un rango de registros, y no se puede solucionar por bloqueos porque no se pueden bloquean rangos, si otra transacción inserta, modifica, etc … ya hay lectura fantasma

20
Q

Sintaxis INSERT

A

INSERT INTO tabla (col1, col2,…) VALUES (valor1, valor2…)

Se puede hacer un INSERT a partir de los datos de una sélect

INSERT INTO tabla (col1, col2,…) SELECT …

21
Q

Sintáxis UPDATE

A

UPDATE tabla SET col1 = valor, col2=valor WHERE

22
Q

Sintáxis DELETE

A

DELETE FROM tabla WHERE condiciones

23
Q

Sintáxis SELECT

A
24
Q

Qué tres usos tienen las subconsultas?

A

where [NOT] EXISTS (subconsulta) -> da true/false si la subconsulta devuelve resultados o no
where col1 [NOT] IN (subconsulta) -> da true si el campo está (o no si se pone NOT) en la subconsulta
where col1 [operador =, >=, < …] ANY/SOME/ALL (subconsulta) -> compara el campo con otros de la subconsulta

25
Q

Qué hacen a alto nivel los distintos tipos de join?
CROSS JOIN
INNER JOIN
LEFT [OUTER] JOIN
RIGHT [OUTER] JOIN
FULL [OUTER] JOIN

A

https://zbrain-academy.es/pluginfile.php/76122/mod_resource/content/1/SQL_Joins.pdf

CROSS JOIN -> producto cartersiano, todos por todos
INNER JOIN -> solo coincidentes
LEFT [OUTER] JOIN -> tabla izquierda, completando con los que coincida de la derecha, los que no coincidan los rellena a null en la derecha
RIGHT [OUTER] JOIN -> tabla derecha, completando con los que coincida de la izquierda, los que no coincidan los rellena a null en la izquierda
FULL [OUTER] JOIN -> left join + right join

26
Q

Qué es el EXPLAIN PLAN de Oracle?

A

Sentencia que muestra el plan de ejecución de Oracle de operaciones para ejecutar internamente una sentencia SELECT, UPDATE, INSERT o DELETE

27
Q

Qué hace la sentencia UNION? Y UNION ALL?

A

Operador de conjuntos como EXCEPT, INTERSEC
Lo que hace es unir distintas selects compatibles (que sacan las mismas columnas), eliminando las repetidas

UNION ALL deja las duplicadas

28
Q

Qué hace y cuál es la sintaxis de la sentencia MERGE?

A

Sirve para, en una sola sentencia, comparar dos tablas, una source y una target por un campo, y especficicar acciones INSERT, UPDATE o DELETE en la tabla source en función de esa comparación.

MERGE INTO < tablaobjetivo> AS obj
USING < tablafuente> AS fuente
ON < clausula coincidencia>
WHEN MATCHED [ AND < clausula >]
THEN < codigo >
WHEN NOT MATCHED [BY TARGET] [AND < clausula >]
THEN INSERT…
WHEN NOT MATCHED BY SOURCE [AND < clausula >]
THEN < codigo>
[OUTPUT …]
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

MERGE INTO <tablaObjetivo> : Define la tabla a la cual le realizaremos las operaciones INSERT, UPDATE, o DELETE.
**USING** <tablaFuente>: Define la tabla de la cual provienen los datos, aunque también se puede utilizar un CTE o tabla derivada entre algunas otras opciones. Lo más común es utilizar una tabla.
**ON** <clausula>: Define la cláusula utilizada para encontrar las coincidencias entre ambas tablas, fuente y destino, muy parecido al ON de un JOIN.
**WHEN MATCHED** [ AND <clausula>] THEN <codigo>: Se utiliza cuando existen coincidencias a través de la cláusula ON, por lo tanto la acción INSERT no está permitida; es posible utilizar 2 cláusulas WHEN MATCHED, una para utilizar la acción **UPDATE** y otra para la acción **DELETE**, la única condicionante es que deben tener filtros si se utilizan ambas, esto se los explicaré con ejemplos posteriormente.
**WHEN NOT MATCHED** [BY TARGET] [AND <clausula>] THEN INSERT... Se utiliza cuando una fila existe en la fuente pero no en el destino, por lo tanto la única operación permitida es un INSERT.
**WHEN NOT MATCHED BY SOURCE** [AND < clausula >] THEN <codigo> Es el caso contrario a la cláusula anterior, cuando la fila existe en la tabla destino pero no en la fuente, no se puede aplicar una operación INSERT pero si UPDATE y DELETE, también se puede declarar dos cláusulas de este tipo al igual que la claúsula WHEN MATCHED, con la misma condicionante que deben tener filtros.
**OUTPUT** Se pueden obtener los datos insertados, eliminados y actualizados por medio de las palabras reservadas inserted y deleted, esto lo expliqué en otro en la publicación CLAUSULA OUTPUT( inserted, deleted ) SIN TRIGGERS.</codigo></clausula></codigo></clausula></clausula></tablaFuente></tablaObjetivo>

29
Q

Qué hace y cuál es la sentencia sql TRUNCATE?

A

TRUNCATE borra los datos de una tabla y deja la estructura

Es un borrado rápido, saltándose los mecanismos de integridad, hace commit automático al terminar, no se puede hacer rollback

Normalmente consiste en borrar páginas enteras de bbdd. Pero en MySQL hace un drop y un create seguidos en lugar de eso

30
Q

Cuál es la sintáxis de los TRIGGER?

A

Se ejecuta cuando ocurre el evento indicado sobre determinados objetos
Usa dos pseudotablas para usar datos de antes y después en las sentencias del cuerpo del trigger (INSERT… old.campo1…)
- Oracle: OLD/NEW
- SQLServer: INSERTED/DELETED

CREATE TRIGGER nombre-trigger
[BEFORE/AFTER/INSTEAD OF] [DELETE/INSERT/UPDATE]
ON tabla FOR EACH [ROW/STATEMENT]
WHEN condiciones
BEGIN
sentencias insert, update, delete…
END;

INSTEAD_OF*: Sirve para anular la sentencia disparadora y solo tiene efecto el trigger

31
Q

Qué son y qué sintaxis tienen los PROCEDURE de sql?

A

Lógica de negocio que se ejecuta (CALL) en el ámbito del SGBBDD
Acepta parámetros (entrada, salida, entrada/salida) pero a diferencia de las funciones, no retornan valor

CREATE PROCEDURE nombre-procedure
[param1 IN/OUT/IN OUT tipo-parametro, …]
LANGUAGE
IS
–declaración de variables locales
BEGIN
.. se hacen select, updates, etc…
hay CURSORES que recorren los resultados de una select
se usan elementos de programación FOR, IF, CASE, …
COMMIT;
END;
$$

32
Q

Hacer ejercicios de SQL

A

https://www.w3resource.com/sql-exercises/

33
Q

el count() de sql, cuenta los null?

A

No

34
Q

Para qué sirve en sql la cláusula HAVING? Un ejemplo de uso

A

SELECT postalCode, count(CustomerId) FROM Customers group by postal Code HAVING count(CustomerId)>1;

35
Q

Cómo se puede usar un condicional para mapear un valor a devolver por una select, a otro

A

SELECT IdProceso, CASE idFormaAcceso WHEN ‘L’ THEN ‘Ingreso Libre’ WHEN ‘P’ THEN ‘Promoción Interna END as FormaAcceso FROM Proceso

36
Q

¿Cual es la utilidad de un TABLESPACE en Oracle?

A

Agrupar objetos como tables, indices, etc y asociarse con una serie de ficheros de datos (datafiles)

37
Q

La operación de diferencia de conjuntos del álgebra relacional se realiza en ANSI/SQL mediante el operador:

A

EXCEPT.

38
Q

En una transacción en un Sistema de Gestión de Bases de Datos (SGBD), ¿qué se entiende por el punto de integridad?

A

El estado de la base de datos en el momento en que se inicia la transacción.

39
Q

Qué hacen los operadores de intersección
UNION
UNION ALL
INSERSEC
EXCEPT

A

UNION incluye la suma de los registros de las dos tablas, quitando duplicados
UNION ALL incluye la suma de los registros de las dos tablas, sin quitar duplicados
INSERSEC incluye sólo los registros que están en ambas tablas
EXCEPT incluye sólo los registros que están en la primera tabla, pero no están en la segunda. Es decir, los de la primera excepto los de la segunda.

40
Q

Para qué sirve DISTINCT, y cómo es su sintáxis?

A

Sirve para filtrar filas duplicadas en el resultado de la select
La sitáxis es sin paréntesis, separando por comas los campos a los que afecta. Aunque pueda parecer que sólo afecta al primer campo, afecta a todos los que vayan después.
Trata los null como si fuesen duplicados unos de otros también

SELECT
DISTINCT column_1,
column_2,
column_3
FROM
table_name;