28. Controlar el acceso a la base de datos y sus objetos SQL unifica las tareas en un lenguaje consiente Imagen: http://www.flickr.com/photos/mucio/3656302901/
31. Data Manipulation Language ( DML ) Fue creado como una solución para consultar datos relacionales por personas que no fueran programadores. Originalmente llamado Structured English Query Language (SEQUEL), se eliminó " English " para obtener las siglas de SQL SQL
34. La creación de la base de datos se realiza con una sentencia DDL
35. Antes de poder introducir datos, se deben crear los lugares donde se guardarán usando sentencias DDL; habitualmente usadas por los administradores y en ocasiones por los desarrolladores SQL DDL
36.
37.
38. Privilegios de Objeto , se aplican a un objeto particular de la base de datos los permisos pueden cambiar en función del tipo de objeto ( SELECT sobre una tabla o EXECUTE sobre un procedimiento SQL DCL
58. Cuando SQL procesa la cláusula WHERE , comprueba el valor de la columna de cada registro (o el resultado de una expresión con cada registro) contra un valor concreto SELECT WHERE
76. A continuación de la palabra clave VALUES incluimos los valores que queremos incluir en la tabla en el mismo orden que las columnas donde queremos ubicarlos
89. En una transferencia bancaria, restamos de una cuenta y sumamos en otra, no se genera espontáneamente
90. Con las transacciones podemos agrupar estas operaciones en una única acción Transacciones
91.
92. Consistencia , la transacción debe seguir las mismas reglas lógicas (en una transferencia bancaria, el dinero no se crea ni se destruye)
93. Isolación , el proceso que realiza la transacción debe tener control absoluto de los elementos a los que afecta. Oracle proporciona un entorno concurrente gracias a los bloqueos. Mientras un proceso bloquea un registro, éste no puede ser modificado. A través de los segmentos de UNDO otros procesos pueden ver los datos en las columnas antes de que se modificarán, hasta que se validen
94. Durabilidad , significa que una vez se ha completado la transacción (o validación) los datos deben permanecer y ser visibles a todos los usuarios. Si son necesarios más cambios, se iniciará otra transacción ACID Transacciones
105. Los bloqueos exclusivos previenen a otros usuarios de bloquear de forma exclusiva los datos utilizados como parte de una transacción, hasta que realicemos un COMMIT o ROLLBACK
106. Esto previene a dos usuarios de intentar actualizar los mismos datos al mismo tiempo
107. Cuando un usuario intenta actualizar datos bloqueados por otro usuario, éste debe esperar hasta que finalice el bloqueo
108.
109.
110. La instancia ( ALTER SYSTEM ), para cambiar la instancia en ejecución. Puede usarse para cambiar los parámetros de inicio de forma dinámica o en el SPFILE
111. La sesión ( ALTER SESSION ), permite a los usuarios cambiar las propiedades de su sesión, tales como la memoria utilizada para ordenaciones o si realizar o no consultas en paralelo
SQL unifica todas las tareas en un lenguaje consistente
Lenguaje de Definición de Datos Antes de añadir datos a una tabla debemos crearla: El lenguaje de definición de datos se utiliza para crear, modificar y borrar objetos de una base de datos: CREATE , añade objetos a la base de datos (tablas, vistas, procedimientos, etc.) ALTER , se usa para cambiar las características de tablas, índices y otros objetos de la base de datos. No se puede aplicar a todos los objetos DROP , con este comando podemos borrar objetos de la base de datos. Cuando lo usamos sobre una tabla, también borramos todos los datos de ésta. Una vez borrados no podrán recuperarse Definición de Objetos Los nombres de objetos deben cumplir ciertas reglas: Comenzar por una letra Tener de 1 a 30 caracteres de longitud Pueden contener letras, números y los símbolos: Subrayado Dólar Almohadilla No se pueden usar palabras reservadas (SELECT, INSERT, DROP, GRANT ...) Podemos crear objetos con el mismo nombre en esquemas diferentes Los nombres en Oracle no distinguen entres mayúsculas y minúsculas, aunque Oracle siempre los muestra en mayúsculas
Aunque solo son necesarias las dos primeras
Eliminar Duplicados del Resultado Cuando utilizamos la sentencia SELECT, Oracle nos devuelve todos los registros que coincidan con la consulta: Que pasa cuando queremos consultar, únicamente, los usuarios que son propietarios de objetos de la base de datos Para crear esta lista utilizaremos la palabra clave DISTINCT Cuando utilizamos esta clave Oracle ordena el resultado de nuestra consulta y nos devuelve únicamente la primera aparición de los valores devueltos por la consulta
Condiciones de WHERE Las condiciones de una cláusula WHERE pueden consistir en dos expresiones comparadas por un operador: igual (=) diferente (<>) menor que (<) mayor que (>) Además también podemos utilizar operadores como BETWEEN LIKE IN
Ordenando y Agrupando los Datos El orden en el que Oracle devuelve los datos es totalmente aleatorio: Es posible realizar una consulta diez veces y obtener los mismos datos en 10 ordenes diferentes Cuando queremos obtener los datos en un orden concreto, debemos utilizar la cláusula ORDER BY Puedes especificar que los datos se muestren en orden concreto ascendente o descendente Es posible ordenar por cualquier columna o tipo de datos excepto por los tipos de datos para objetos grandes (CLOB, NCLOB, BLOB, BFILE, RAW, LONGRAW y LONG)
Recuperar Datos de más de Una Tabla Es posible especificar mas de una tabla en el FROM: De esta forma, si indicamos como están relacionadas, realizar una unión de ambas Un DBA no necesita realizar uniones complejas, pero si queremos obtener una lista de los tablespaces y los nombres de archivo asociados a ellos, deberemos unir las tablas DBA_TABLESPACES y DBA_DATA_FILES Condiciones en la Unión de Tablas Es posible especificar mas de una tabla en el FROM: Además de las cláusulas SELECT y FROM, para realizar una unión necesitamos una condición Una condición de unión es la forma adecuada de unir los registros de una tabla con los registros de otra tabla diferente A esta condición se la conoce como la pareja clave primaria/clave foránea y se expresa con la cláusula WHERE (en todas las versiones de Oracle) o con la sintaxis ANSI disponible en Oracle 9i y 10g. Puntos a Tener en Cuenta Hay algunas cosas que hemos de tener en mente cuando realizamos una JOIN : Las uniones es que las columnas utilizadas en la condición no necesitan estar en la lista de la sentencia SELECT La condición no es estrictamente necesaria, en ese caso obtendremos un producto cartesiano &quot; CROSS JOIN &quot; de todos los registros de la primera tabla con todos los registros de la segunda tabla Este tipo de consultas se realiza sobretodo en el caso de realizar un data warehouse de nuestros datos
La ventaja de usar la sintaxis ANSI es la facilidad con la que podemos identificar la condición para la unión
INSERT, UPDATE y DELETE Son las instrucciones del Lenguaje de Manipulación de Datos (DML): El motor de Oracle controla el acceso al sistema y sus datos Para incluir o modificar datos en nuestras tablas deberemos indicárselo a Oracle con las instrucciones INSERT UPDATE DELETE Es importante comprender el correcto funcionamiento de estas instrucciones para administrar una base de datos Oracle
TRANSACCIONES Ayudan controlar la ejecución de sentencias DML agrupándolas en transacciones Las sentencias DML son el tipo más frecuente de transacción en una base de datos
Control de Transacciones Oracle no valida una transacción y dispone los cambios como permanentes hasta que no se le insta para hacerlo: Por esta razón existen varios comandos para controlar las transacciones Se inicia una transacción implícita por cada sentencia DML que ejecutamos. Y no se termina hasta que se valida o se recupera En Oracle podemos controlar explícitamente el final de una transacción usando los comandos: COMMIT, los cambios realizados por la sentencia DML se vuelven permanentes ROLLBACK, los cambios se recuperan a su estado anterior La ventaja de este sistema es la posibilidad de verificar una operación antes de validarla SAVEPOINT Podemos realizar rollbacks intermedios: En ocasiones no nos interesará recuperar la transacción por completo Para realizar este control en cada paso de la transacción utilizaremos savepoints. Marcas con un nombre dentro de la transacción que pueden usarse como destinos previos en una recuperación: SAVEPOINT nombre; Una vez hemos realizado un savepoint, podemos recuperar el estado de la transacción en ese punto, utilizando el operador TO y el nombre del savepoint
Otras Sentencias Sentencias de control de sesión: Administran las propiedades de una sesión de usuario Sentencias de control de sistema: Administra las propiedades de una instancia Oracle Sentencias SQL incluidas con el sistema
¿Qué es el PL/SQL? PL/SQL es un lenguaje estructurado en bloques que añade varias características al SQL: Declaraciones Variables Constantes Cursores Estructuras de control Condicional Iterativo Secuencial Control de errores Usos del PL/SQL Los bloques PL/SQL se pueden usar para: Bloques anónimos Funciones Procedimientos Paquetes Disparadores Tipos de objeto
Estructura de los Bloques Todos los bloques PL/SQL tienen la misma estructura: Una sección para la declaración de variables (DECLARE) El código que ejecutaremos (BEGIN) El control de errores (EXCEPTION) El terminador (END)