Tema_4_LENGUAJE_SQL Flashcards
¿Cual es la sintaxis de GRANT en DCL?
-
GRANT “privilegio” ON “objectname” TO “USUARIO O ROLE” [WITH GRANT OPTION]
También lo podemos ver como:
GRANT….TO
O
GRANT USE OF….
Ejemplo de un procedimiento almacenado:
CREATE PROCEDURE nombreProcedimiento([parametro1,parametro2,….])
[Atributos]
BEGIN Instrucciones
END
¿Que es una “TABLA MUTANTE”?
Las tablas mutantes son aquellas que están siendo modificadas por una operación DML (DIU)
(DELETE;INSERT;UPDATE)
¿Que es TCL?
- Es un subconjunto de DCL.
- Transaction Control Language.
- Trabaja conjuntamente con DML, para mantener la consistencia de la base de datos.
- COMMIT, ROLLBACK, SAVEPOINT
Principales características de SQL
- Integridad de los datos.
- Lenguaje estandarizado.
- Aporta sencillez y claridad.
- Flexibilidad.
¿Qué comandos admiten los Procedures (Procedimiento Almacenado), para su gestión?
- CREATE procedure
- DROP procedure
- ALTER procedure
- DELIMETER
¿Qué son las CONSTRAINTS?
Son restricciones que se utilizan para limitar el tipo de dato que puede recibir una columna de una tabla.
Solo se usan en ALTER TABLE Y CREATE TABLE.
Se pueden crear restricciones en un solo campo o en varios.
¿Que es DML?
Data Manipulation Languaje
Es un sublenguaje de SQL, que se
usa para trabajar con los DATOS.
¿Qué son los Predicados Condicionales?
Cuando se crea un Trigger para más de una operación DML.
- Inserting - Retorna TRUE cuando el trigger ha sido disparado por un INSERT.
- Deleting - Retorna TRUE cuando el trigger ha sido disparado por un DELETE.
- Updating - Retorna TRUE cuando el trigger ha sido disparado por un UPDATE.
- Updating (columna) - Retorna TRUE cuando el trigger ha sido disparado por un UPDATE y la columna ha sido modificada.
Dime las cuatro sentencias de DDL:
- Create Table, para crear una nueva BBDD, TABLA, ÍNDICE o PROCEDIMIENTO ALMACENADO.
- Drop Table, se dice que quita la definición de la tabla (junto con los datos). POR SI SOLO, NO QUITA NI LAS VISTAS NI LOS PROCEDURES
- Alter Table, crear o borrar COLUMNAS.
- Truncate, borra los registros de una tabla entera, pero la estructura de la tabla se mantiene.. OJO en algunos SGBD, elimina la estructura de la tabla entera y la vuelve a crear vacía. NO ES TRANSACIONAL
¿Qué restricciones podemos definir con CONSTRAINT?
- NOT NULL → Indica que una columna, NO puede almacenar un valor nulo.
- UNIQUE → Asegura que cada fila de una columna, debe tener un valor único, pero ADMITE UN SOLO NULL
- PRIMARY KEY → Es una combinación de un valor NO NULO y ÚNICO. Asegura que una columna o combinación de varias, tiene una identidad única.
- FOREIGN KEY → Asegura la integridad referencial de los datos en una tabla para que coincida con los valores de otra tabla. Se aplica a COLUMNA
- CHECK → Asegura que el valor de una columna cumple con una condición específica.
- DEFAULT → Especifica un valor por defecto para una columna.
¿Que comandos tiene TCL?
- COMMIT→ Consolidar cambios.
- ROLLBACK → Deshacer cambios en una TX
- SAVEPOINT → Establecer el Punto de salvaguarda.
- RELEASE SAVEPOINT→ Elimina el punto de salvaguarda.
- SET TRANSACTION→ Configuración de TX
- START TRANSACTION → Inicio de TX
Versiones de ANSI-SQL
- ANSI - 1986 (1ª)
- ANSI - 1992 (Revisión Mayor)
- SQL: 1999 (SQL3) Triggers
- SQL: 2003 (Obj. Sequences)
- SQL: 2006 (XML)
- SQL: 2008 (sentencia TRUNCATE, para borrar)
- SQL: 2016 (compatibilidad JSON)
¿En que ISO se integra SQL?
ISO 9075
¿A qué tareas podemos conceder o denegar “privilegios” con GRANT Y REVOKE?
SEDUUCIA
- SELECT
- EXECUTE
- DELETE
- UPDATE
- USAGE
- CONNECT
- INSERT
- ALL
¿Qué tipos de datos, podemos usar en SQL?
Numéricos:
- INT
- BIGINT
- FLOAT (Decimales)
- DOUBLE
Texto:
- CHAR(n) (255 CARACTERES, LETRAS Y NÚMEROS) Tamaño fijo.”n” es un valor en bytes que representa el tamaño en bytes, no el número de caracteres. 1 byte=256 caracteres.
- VARCHAR (255 CARACTERES, SI SE PONE MÁS, SE CONVIERTE EN TIPO TEXTO).Tamaño variable.
- TINYTEXT (255 CARACTERES)
- TEXTO (65535 CARACTERES)
Fecha y hora:
- DATE → AA-MM-DD
- TIME → HH:MM:SS
- DATATIME
- TIMESTAMP
- YEAR
¿Que es DDL?
Data Definition Language
- Sublenguaje de SQL, para manipular las TABLAS de la base de datos.
Características principales de los procedimientos almacenados MySQL:
- Pueden recibir y devolver parámetros.
- Pueden manejar tablas, ejecutando operaciones e iteraciones de lectura/escritura.
- Pueden devolver una tabla como resultado.
- Se almacenan en la base de datos en la cual se crean.
- No dependen de ninguna tabla en particular.
- Pueden aceptar recursividad.
- CROSS JOIN → Todos con Todos. Los datos de la tabla 1 con los datos de la tabla 2 y así. Ejemplo: Tabla 1 (a, b) Tabla 2 (1, 2, 3) Cross Join= a1, a2, a3, b1, b2, b3.
- INNER JOIN → Las filas de una tabla que coincidan con las filas de la otra tabla. Por ejemplo, la PK, coincide con la FK. Es la Join natural.
- LEFT OUTER JOIN → Todas las filas de la tabla izquierda, todas las coincidentes y si no se rellenan a NULL las correspondientes de la derecha. Si la tabla de la izquierda tiene 150 filas. Al hacer el Left Outer Join, voy a tener también 150 filas, solo que algunas tendrán valores NULL.
- RIGHT OUTER JOIN → Lo contrario de la anterior.
- FULL OUTER JOIN → Se hace un Inner Join, después un Left Outer Join y después un Right Outer Join.
¿Qué comando podemos usar para sacar una descripción de una tabla?
DESCRIBE nombretabla;
¿Que significa READ UNCOMMITTED?
Se pueden leer filas modificadas por un transacción, pero no confirmadas aún.
¿Hay alguna forma de que un Trigger ejecute un ROLLBACK?
Si. Hay que ejecutar “error/exception”, mediante la sentencia:
raise_application_error
Cuya sintaxis es:
RAISE_APPLICATION_ERROR(num_error,’mensaje de error’);
Restricciones que tienen los Triggers
- No admite comandos DDL
- Bloquea las tablas que han disparado el Trigger
- No se pueden actualizar las PK’s ni las FK’s. Regla de integridad.
- No admite Commit, Rollback o Savepoint
- No puede declarar variables de tipo Long
¿Como se ejecuta un procedimiento almacenado o PROCEDURE?
Mediante “exec + nombreprocedimiento” o execute, símplemente con el “nombreprocedimiento”.
También con el comando CALL PROCEDURE.
¿Como se llama a una función?
Usando por ejemplo, SELECT.
¿Cuando puede dispararse un Trigger?
Antes o después de la sentencia SQL, con AFTER y BEFORE.
Las sentencias son, INSERT, DELETE o UPDATE.
Generaciones de los lenguajes de programación:
Existen 5 generaciones de lenguajes de programación:
- 1ª→ Lenguaje máquina. BAJO NIVEL de abstracción.
- 2ª→ Ensambladores BAJO NIVEL. Se usan en Kernels y hardware. También, para edición de video, gráficos y videojuegos.
- 3ª →ALTO NIVEL. C, C++, C#, Java, BASIC, JavaScript y Visual Basic.
- 4ª → Similares al lenguaje humano. Se usan en la programación de BASES DE DATOS y SCRIPTS. UnixShell, Perl, PHP, Python, Ruby y SQL.
- 5ª → Son lenguajes con herramientas visuales, para ayudar a desarrollar un programa. Mercury, OPS5, Prolog.
En resumen, los de 1GL y 2GL, son de BAJO NIVEL y los de 3GL, 4GL y 5GL son de ALTO NIVEL.
¿Que tipo de transacciones hay?
- LOCALES, cuando usamos UN SOLO SGBD.
- DISTRIBUIDAS, cuando usamos más de un SGBD diferente. Para gobernar esto, se usa un Monitor Transacional. (two-phase commit)
En un Trigger, ¿Qué significa OR Replace?
OR REPLACE permite sobrescribir un trigger existente. Si se omite, y el trigger existe, se producirá, un error.
Orden de ejecución, en el caso de que existan varios Triggers.
- Si existe, primero se ejecuta BEFORE, con nivel de Sentencia.
- Para cada fila a la que afecte la orden:
- Si existe, se ejecuta BEFORE, con nivel de fila.
- Si existe, se ejecuta AFTER, con nivel de fila.
- Si existe, se ejcuta AFTER, con nivel de sentencia.
¿Qué es la cardinalidad en una tabla de una BBDD?
Es el número de Tuplas o filas de una tabla.
¿Qué es DCL?
DATA CONTROL LANGUAGE
Se usa para dar o quitar permisos de acceso y también para controlar las transacciones, por que TCL es un subconjunto de DCL.
Nombra productos SQL
- ORACLE DATABASE
- Microsoft SQL Server
- MYSQL/Mariadb
- Informix
- IBM DB2
- PostgreSQL
- MAXDB
- FileMaker
- SQLite
¿Sentencias de DML?
SUIDM
- SELECT (joins, agrupaciones, subconsultas, etc)
- UPDATE
- INSERT INTO
- DELETE FROM (Delete siempre se usa para borrar datos, información)
- MERGE
¿Tipos de cardinalidades?
1: 1 = Una entidad se puede relacionar solo con una entidad.
1: N = Una entidad se puede relacionar con varias entidades.
N:1 = Varias entidades solo se pueden relacionar con una entidad.
N:M = Varias entidades se pueden relacionar con varias entidades.
¿Qué eventos disparan un trigger?
DIU
- Delete- Borrar datos.
- Insert- Meter datos.
- Update- Actualizar datos.
¿Qué es el grado de una tabla?
El número de columnas que tiene, que a su vez son el número de atributos.
4 columnas = grado 4
Sentencias de DCL en cuanto a permisos.
GRANT
REVOKE
¿Cuando no podemos usar Where, que usamos en su lugar y por qué?
Where no se puede usar con funciones SQL del tipo SUM, MAX, etc.
Para ello usamos HAVING
¿A qué objeto está asociado un Trigger?
A una tabla y solo a una tabla.
¿Qué es un Trigger?
Es un tipo de EXTENSIÓN PROCEDURAL, que se ejecuta automáticamente, ante cierto evento en una tabla.
¿Qué hace una Cross Join entre dos tablas?
El producto cartesiano de las filas de las dos tablas.
En el ejemplo, el producto de AxB=(3,5)(3,6)(3,7)(4,5)(4,6)(4,7)
¿Qué es SQL?
- Lenguaje de 4ª generación.
- En parte, Declarativo + una Extensión Procedural.
- Para Bases de datos RELACIONALES.
Niveles de aislamiento
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
Tipos de Triggers
- FILA, que se identifican por la orden FOR EACH ROW y se ejecuta una vez por cada fila.
- SENTENCIA, que se ejecutan solo una vez, antes o después de la sentencia SQL.
Ejemplo de una función:
CREATE FUNCTION dbo.helloworldfunction()
RETURNS varchar(20)
AS
BEGIN
RETURN ‘Hello world’
END
¿Cual es la sintaxis de REVOKE en DCL?
-
REVOKE privilegio ON objectname FROM USUARIO/ROLE
Para quitar permisos concretos sobre una tabla concreta a un usuario o Role concreto.
También lo podemos ver como: - REVOKE….FROM….
Que sería para quitar permisos concretos a un usuario concreto
¿Qué son EXTENSIONES PROCEDURALES (Procedimientos almacenados) en SQL?
- Es un programa almacenado físicamente en la BBDD, para ejecutar muy cerquita de los datos..
- Los Triggers son Procedimientos Almacenados
- Son conjuntos de instrucciones escritas en lenguaje SQL.
- Su objetivo es realizar una tarea determinada.
- Es reutilizable y se crea para acciones repetitivas.
¿Qué significa SQL?
Structured Query Language
¿Qué bases de datos maneja SQL?
Bases de datos Relacionales.
Las CONSTRAINTS solo se pueden usar en…
- ALTER TABLE
- CREATE TABLE
¿Qué dos tipos de CONSTRAINTS hay, según al número de objetos que se aplique?
- Campo único
- Varios campos
¿Qué es una TRANSACCIÓN?
Es una INTERACCIÓN con una base de datos, compuesta por varios procesos que se han de aplicar uno detrás del otro. Una transacción, se tiene que hacer de una vez y sin que la estructura de datos a medio manipular, pueda ser alcanzada por el sistema, hasta que acabe.
¿Qué 4 propiedades tiene que cumplir una transacción?
Se denominan ACID:
- ATOMICIDAD(Atomicity)-Asegura que la operación se ha realizado o no.O TODO O NADA
- CONSISTENCIA(Consistency Integridad)-Asegura que solo se empieza aquello que se puede acabar.
- AISLAMIENTO(Isolation)-Asegura que una transacción, no puede afectar a otra.
- DURABILIDAD (Durability Persistencia)-Asegura que una vez realizada la operación, esta persistirá, aunque falle el sistema.
Curso SQL con Pildoras Informáticas
Si queremos modificar la restricción de una columna de una tabla, la sintaxis que usamos sería..
ALTER TABLE nombredelatabla ALTER COLUMN nombredelacolumna tipodevalor restricción.
Ejemplo:
ALTER TABLE ConstraintDemo1 ALTER COLUMN [Name] VARCHAR(50) NOT NULL
¿Como se llaman las funciones de SQL, que devuelven siempre el mismo resultado? ¿ Y si devuelven distintos resultados, con el mismo conjunto de valores de entrada?
DETERMINISTAS y NO DETERMINISTAS.
¿Qué es una función en SQL?
- Una función es un conjunto de sentencias que operan como una unidad lógica.
- Una función, tiene un nombre.
- Retorna un parámetro de salida.
- Opcionalmente acepta parámetros de entrada.
¿Cuales son las funciones de Agregado?
Las que combinan varios valores y retornan un resultado:
- COUNT
- SUM
- MIN
- MAX
SUPERCLAVE
- CONJUNTO DE CLAVES CANDIDATAS
- ES REDUCIBLE
SUBLENGUAJES DE SQL
- DDL=> Creación, borrado, eliminación de objetos (TABLAS)
- DML=> Consulta, borrado, modificación, inserción de DATOS
- DCL=> Control de permisos con GRANT y REVOKE.
- TCL =>, que está dentro de DCL y es para el control de transacciones..
¿Qué es lo que no se quita con DROP?
- LAS VISTAS
- LOS PROCEDURES
SENTENCIAS PARA QUITAR LAS VISTAS Y LOS PROCEDURES:
- DROP VIEW
- DROP PROCEDURE
¿Para qué sirve un índice?
- Para agilizar búsquedas
- Se hace con “CREATE INDEX nombreindice ON nombretabla(columna/columnas)”
¿Como se crea una vista?
CREATE VIEW view_name AS
SELECT column1, column2, …
FROM table_name
WHERE condition;
¿Como se declaran las constraints en SQL?
Se pueden establecer al usar CREATE TABLE o con ALTER TABLE.
* Con create table sería:
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
- Con alter table sería:
ALTER TABLE nombre-tabla ALTER COLUMN nombre-columna tipo-dato constraint
Los operadores Wildcard, son como comodines, para buscar en las tablas.
Dos operadores Wildcard de SQL para estudiar:
- % , sustituye a VARIOS caracteres.
- _ sustituye a UN solo caracter.
Extensiones Procedurales según el fabricante:
- PL/SQL, para ORACLE
- SQL/PSM, para el Estandar SQL
- Transact-SQL, para Microsoft
- PL/pgSQL, para PostgreSQL
Peculiaridades de SQLite
- No es un SGBD.
- Es un formato de fichero.
- Usa una librería, con capacidad de ejecutar sentencias SQL.
- Se usa mucho en Android.
¿Qué son PROCEDURE y FUNCTION?
Son objetos, procedurales, que se ejecutan dentro del SGBD.
¿Que estructura usan los índices, dentro de un SQL?
Pueden usar Árboles B, Tablas Hash, etc.
¿Qué son las vistas?
Es la forma de mostrar al usuario, solo, los datos que le interesan, abstrayéndole de los SELECT u otros comandos que se usen por debajo.
¿Qué son los SCHEMAS?
Es una forma de agrupas los subsistemas, según su función. Para no mostrar todas las tablas a cholón.
¿Qué es un ROLE?
Es como un perfil, que se genera, con unos permisos determinados y que luego se puede asignar a cada usuario, el cual tendrá los permisos de ese ROLE.
¿Qué usamos si queremos borrar datos?
- Podemos usar DELETE, que es transacional.
- Podemos usar TRUNCATE, que no es transacional y va más rápido, pero sin seguridad.
Sintaxis de Alter en DDL:
ALTER TABLE nombretabla ADD COLUMN o ALTER COLUMN o DROP COLUMN
Tambien se puede añadir una constraint con:
ALTER TABLE nombretabla ADD CONSTRAINT
¿Qué es Explain Plan?
Es una sentencia que te sirve para ver qué pasos se van a seguir internamente, para ejecutar tu query.
Para ver el Execution Plan del SGBD que usas en ese momento.
Unión de tuplas
Es para juntar tuplas, que no tienen coincidencias, pero que nos interesa juntar.
Si ponemos UNION ALL, NO ELIMINA FILAS DUPLICADAS
MERGE
Se usa para mezclar filas de una tabla, sobre otra.
La sintaxis sería:
Merge into “nombre_tabla_destino”
Using “nombre_tabla_origen”
ON search-condición
When Matched then update…
When not matched then Insert….
TRUNCATE con MySql
Necesita permisos de DROP, por que hace DROP TABLEy un CREATE TABLE.
¿Para qué se usa Instead of?
Dispara un trigger, pero anula la sentencia disparadora (Insert, Delete, Update), y solo tiene efecto lo que pongas en el cuerpo del trigger.
¿Qué es Result Set?
Es la tabla, resultado de hacer una consulta, con los datos que hemos pedido.