1. Funciones y procedimientos
1.1. Funciones y procedimientos de SQL
1.1.1. Resultan particularmente útiles con tipos de datos especializados tales Como las imágenes y los objetos geométricos.
1.1.1.1. Funciones de tabla
1.1.1.1.1. select nombre_cliente, calle_cliente, ciudad_cliente from cliente where recuento_cuentas(nombre_cliente) > 1
1.2. Constructores procedimentales
1.2.1. El objetivo de PSM en SQL no es sustituir a los lenguajes de programación convencionales. Más bien, los constructores procedimentales permiten que se registre la “lógica de negocio
1.2.1.1. soporta las instrucciones while y repeat
1.3. Rutinas en otros lenguajes
1.3.1. SQL permite definir funciones en lenguajes de programación como Java, C#, C o C++.
2. Restricciones de integridad
2.1. Modificaciones realizadas en la base de datos por los usuarios autorizados no den lugar a una pérdida de la consistencia de los datos.
2.1.1. El saldo de las cuentas no puede ser nulo.
2.1.2. No puede haber dos cuentas con el mismo número.
2.1.3. Todos los números de cuenta de la relación impositor deben tener el número de cuenta correspondiente en la relación cuenta.
2.1.4. El salario por hora de los empleados del banco debe ser, como mínimo, de 6,00 e la hora.
2.2. Restricciones sobre una sola relación
2.2.1. Restricción not null
2.2.1.1. En estos casos así se deseará prohibir los valores nulos,
2.2.1.1.1. número_cuenta char(10) not null
2.2.1.1.2. create domain Euros numeric(12,2) not null
2.2.2. Restricción unique
2.2.2.1. la restricción de integridad
2.2.2.1.1. unique (Aj1 ;Aj2 ; : : : ;Ajm)
2.2.3. La cláusula check
2.2.3.1. La cláusula check(P) especifica un predicado P que deben cumplir todas las tuplas de la relación.
2.2.3.1.1. check(activos>=0)
2.2.4. Integridad referencial
2.2.4.1. A menudo se desea garantizar que el valor que aparece en una relación para un conjunto dado de atributos aparezca también para un conjunto determinado de atributos en otra relación. Esta condición se denomina integridad referencial.
2.2.4.1.1. clausula foreign key, para referirse a otra tabla
2.2.4.1.2. create table impositor (nombre_cliente char(20), número_cuenta char(10), primary key (nombre_cliente, número_cuenta), foreign key (nombre_cliente) references cliente, foreign key (número_cuenta) references cuenta)
2.2.5. Asertos
2.2.5.1. Un aserto es un predicado que expresa una condición que la base de datos debe satisfacer siempre.
2.2.5.1.1. No todas las restricciones sé pueden expresar
3. Autorización
3.1. La autorización de lectura
3.1.1. grant select on cuenta to Martín, María
3.2. La autorización de inserción
3.2.1. grant update (importe) on préstamo to Martín, María
3.3. La autorización de actualización
3.3.1. revoke select on sucursal from Martín, María revoke update (importe) on préstamo from Martín, María
3.4. La autorización de borrado
3.4.1. revoke <lista de privilegios> on <nombre de la relación o nombre de la vista> from <lista de usuarios o de roles>
4. SQL dinámico
4.1. ODBC
4.1.1. Apertura de conexiones y ejecución de consultas
4.2. JDBC
4.2.1. Instrucciones preparadas
4.2.1.1. En las que algunos valores estén sustituidos por “?”, lo que indica que los valores reales se proporcionarán más tarde.
4.2.1.1.1. CallableStatement cStmt1 = con.prepareCall("{? = call alguna_función(?)}"); CallableStatement cStmt2 = con.prepareCall("{call algún_procedimiento(?,?)}");
4.2.2. Metadatos
4.2.2.1. La interfaz ResultSet tiene un método getMetaData() para obtener objetos ResultSetMetaData y proporcionar los metadatos
4.3. El constructor try { : : : } catch { : : : } permite capturar cualquier excepción (condición de error)
4.4. Otras características
4.4.1. los conjuntos de resultados actualizables
4.4.1.1. setAutoCommit()
4.4.1.2. con.rollback().
4.4.1.3. getString()
4.4.1.4. ResultSet
4.4.1.5. getBlob() y getClob(),
5. Diferencias entre tipos de datos y dominios
5.1. Sobre los dominios se pueden especificar restricciones, como not null, y valores predeterminados para las variables del tipo de dominio, mientras que no se pueden especificar restricciones ni valores predeterminados sobre los tipos de datos definidos por los usuarios.
5.2. Los dominios no tienen tipos estrictos. En consecuencia, los valores de un tipo de dominio pueden asignarse a los de otro tipo de dominio, siempre y cuando los tipos subyacentes sean compatibles.
6. se usa como
6.1. create table cuenta (número_cuenta char(10), nombre_sucursal char(15), saldo Euros)
7. Interval tipo de dato que permite realizar operaciones entre fechas horas e intervalos
7.1. Operar datos tipo date : x - y (intervalo de dias)
8. SQL incorporado
9. Tipos de datos y esquemas
9.1. Tipos de datos predefinidos
9.1.1. date
9.1.1.1. ’2001-04-25’
9.1.2. time
9.1.2.1. ’09:30:00’
9.1.3. timestamp
9.1.3.1. ’2001-04-25 10:29:01.45’
9.1.3.1.1. Una combinación de date y time
9.2. Tipos de datos definidos por el usuario
9.2.1. Alias de tipos
9.2.1.1. Asignaciones o comparaciones
9.2.1.1.1. Cláusula create type para definir nuevos tipos de datos
9.2.1.1.2. Dominios
9.2.2. Tipos de datos estructurados
9.2.2.1. Permite la creación de tipos de datos complejos, que pueden anidar estructuras de registro, arrays y multiconjuntos.
9.3. Tipos de datos para objetos grandes
9.3.1. clob (para caracteres)
9.3.1.1. revista_literaria clob(10KB)
9.3.2. blob (para datos binarios)
9.3.2.1. película blob(2GB)
9.4. Esquemas, catálogos y entornos
9.4.1. El nivel superior de la jerarquía consta de catálogos, cada uno de los cuales puede contener esquemas. Los objetos de SQL, como las relaciones y las vistas, están contenidos en esquemas.
9.4.1.1. create schema para creación catálogos
9.4.1.2. drop squema para la eliminación de catalogos
10. Definidos por los usuarios
11. ¿Como extraer un campo en concreto ?
11.1. Utilizar extract (campo from d)
12. Consultas recursivas
12.1. Cierre transitivo mediante iteración
12.1.1. El bucle repeat termina cuando no encuentra más subordinados (indirectos) nuevos.
12.1.2. except en la función garantiza que la función trabaje incluso en el caso (anormal) de que haya un ciclo en la jerarquía de jefes. Por ejemplo, si a trabaja para b, b trabaja para c y c trabaja para a, hay un ciclo
12.2. Recursión en SQL
12.2.1. El cierre transitivo de la relación jefe es una relación que contiene todos los pares (emp, jef ) tales que emp es subordinado directo o indirecto de jef .
12.2.1.1. Personas cuyo jefe es Santos.
12.2.1.2. Personas cuyo jefe está supervisado (directa o indirectamente) por Santos.
12.2.1.3. Recuérdese que la cláusula with se emplea para definir una vista temporal cuya definición sólo está disponible para la consulta en la que se define.
12.2.1.4. a palabra clave adicional recursive especifica que la vista es recursiva.
13. Características avanzadas de SQL
13.1. Creación de tablas a partir de otras
13.2. Otros aspectos sobre las subconsultas
13.2.1. Permite que las subconsultas se produzcan siempre que haga falta un valor, siempre y cuando la consulta sólo devuelva un valor; estas subconsultas se denominan subconsultas escalares.
13.3. Constructores avanzados para la actualización de las bases de datos
13.3.1. fondos_recibidos(número_cuenta, importe)