• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Administración de Oracle - Tema 4 - Interacción con la Base de Datos
 

Administración de Oracle - Tema 4 - Interacción con la Base de Datos

on

  • 14,560 views

Cuarto tema del curso de Administración de Oracle 10g. Curso para la preparación de la certificación OCA.

Cuarto tema del curso de Administración de Oracle 10g. Curso para la preparación de la certificación OCA.

Statistics

Views

Total Views
14,560
Views on SlideShare
14,304
Embed Views
256

Actions

Likes
4
Downloads
0
Comments
0

9 Embeds 256

http://lsnrctl.blogspot.com 133
http://www.slideshare.net 97
http://lsnrctl.blogspot.com.es 7
http://lsnrctl.blogspot.mx 6
http://lsnrctl.blogspot.co.uk 4
http://www.hmartinezlopez.es 4
http://www.linkedin.com 2
http://lsnrctl.blogspot.com.ar 2
http://webcache.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 () 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 " CROSS JOIN " 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)

Administración de Oracle - Tema 4 - Interacción con la Base de Datos Administración de Oracle - Tema 4 - Interacción con la Base de Datos Presentation Transcript

  • Interacción con la Base de Datos 4
  • Objetivos
    • Usar SQL*Plus y iSQL*Plus para acceder a Oracle 10g
    • Describir la estructura lógica de las tablas
    • Usar SQL para consultar, manipular y definir datos
  • Interacción con La BD Podemos usar una gran multitud de herramientas para interactuar con la base de datos, en todas utilizaremos SQL:
    • SQL*Plus y iSQL*Plus
    • Oracle Forms, Reports y Discoverer
    • Oracle Enterprise Manager
    • Herramientas de terceros
    Imagen: http://www.flickr.com/photos/therefromhere/518053737/
  • SQL*Plus
    • Herramienta en modo texto
    • La utilizaremos en modo interactivo o " batch "
  • iSQL*Plus
  • Java
    • Java es un estándar, un lenguaje de programación orientado a objetos. Incluye los siguientes conceptos:
      • Una maquina virtual de Java ( JVM ), que proporciona independencia de la plataforma de ejecución
      • Técnicas de gestión automática del almacenamiento
      • La sintaxis del lenguaje se basa en C pero refuerza la escritura estructurada
    Imagen: http://www.flickr.com/photos/shinyai/335249511/
  • OCI
    • " Oracle Call Interface " es la forma de hacer accesible a los equipos de desarrollo todas las funcionalidades de la base de datos
    • OCI hace posible crear aplicaciones escalables y de alto rendimiento
    • Las APIs de alto nivel y algunas herramientas utilizan OCI para acceder indirectamente a la base de datos
  • Otras APIs
    • Java Database Connectivity (JDBC)
    • Pro*C/C++
    • Pro*COBOL
    • Oracle C++ Interface (OCCI)
    • Open Database Connectivity (ODBC)
    • Oracle Data Provider for .NET ( ODP.NET )
    • Oracle Objects for OLE (OO4O)
  • ¿Que es SQL? SQL es un lenguaje que utilizaremos para:
    • Consultar los datos de la base de datos
    • Insertar, actualizar y borrar filas de una tabla
    • Crear, reemplazar, alterar y borrar objetos
    • 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/
  • Structured Query Language Se puede dividir en tres lenguajes o secciones básicas:
    • Data Definition Language ( DDL )
    • Data Control Language ( DCL )
    • 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
  • Data Definition Language
    • Se utilizan para añadir, modificar o eliminar cualquier objeto de la base de datos (tablas, vistas o índices)
    • DDL incluye todas las sentencias: CREATE , ALTER y DROP
    • La creación de la base de datos se realiza con una sentencia DDL
    • 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
  • Data Control Language
    • Cuando creamos una cuenta para un usuario, le podemos dar permisos con la sentencia GRANT y quitárselos con REVOKE
    • Hay dos tipos de permisos que podemos otorgar o quitar:
      • Privilegios de Sistema , permiten al usuario realizar acciones sobre la base de datos acciones como crear una tabla, un índice, hacer una copia de seguridad requieren de privilegios de sistema
      • 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
  • Data Manipulation Language
    • Las sentencias de DML son:
      • SELECT , recupera datos
      • INSERT , añade datos
      • UPDATE , modifica datos existentes
      • DELETE , borra datos
    • DML también incluye sentencias para el control de transacciones:
      • COMMIT
      • ROLLBACK
      • SAVEPOINT
    SQL DML
  • Consultar los Datos
    • SELECT Permite recuperar de una tabla:
      • Todos los datos
      • Algunas columnas
      • Registros concretos
    • Puede recuperar datos de más de una tabla
    • Permite, no solo recuperar los datos, sino realizar cálculos con ellos y devolver el resultado
  • Sintaxis de la Sentencia SELECT
    • Una lista de campos en SELECT
    • La cláusula FROM con las tablas de origen
    • Una condición en WHERE
    SELECT
  • Opciones para la Lista de Selección
    • La lista de selección puede contener: un asterisco (todas las columnas), una lista de nombres de columna o expresiones
    • Para recuperar la información de todos los usuarios en una base de datos, utilizaremos la siguiente sentencia:
      • SELECT * FROM DBA_USERS;
    • Para listar todos los usuarios y el estado de sus cuentas, podemos usar una expresión en la lista de SELECT y unir dos columnas de la tabla para proporcionar el resultado:
      • SELECT USERNAME || 'is' || ACCOUNT_STATUS AS "User and Status" FROM DBA_USERS;
    SELECT Lista de Selección
  • Sintaxis de la cláusula WHERE
    • Con SQL, podemos limitar el numero de registros obtenidos usando la cláusula WHERE :
    • La sintaxis completa del comando SELECT con la cláusula WHERE :
      • SELECT [DISTINCT] {* | columna,[expresion], …}
      • FROM tabla
      • [WHERE condición1 [{AND | OR [NOT]} condicion2 ...] ]
    • Dentro de la sentencia SELECT ubicamos la cláusula WHERE después de FROM
    • 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
  • Ordenando las Consultas SELECT ORDER BY
  • Unión de Tablas SELECT JOIN
  • Tipos de Sintaxis
    • Hay dos tipos de sintaxis para realizar una SELECT :
      • Clave Primaria/Clave Foránea
        • SELECT DBA_DATA_FILES.tablespace_name, file_name
        • FROM DBA_TABLESPACES, DBA_DATA_FILES
        • WHERE
        • DBA_TABLESPACES.TABLESPACE_NAME=DBA_DATA_FILES.TABLESPACE_NAME;
      • ANSI
        • SELECT DBA_TABLESPACES.tablespace_name, file_name
        • FROM DBA_TABLESPACES JOIN DBA_DATA_FILES
        • ON
        • DBA_TABLESPACES.TABLESPACE_NAME= DBA_DATA_FILES.TABLESPACE_NAME;
    SELECT JOIN
  • Tipos de JOIN
    • Hay diferentes tipos de uniones que pueden devolver los registros con una condición:
      • " equijoins “, consultas donde la condición de unión esta basada en el operador =
      • " inner joins ", donde se puede utilizar el operador igual u otros tipos de operador
      • “ outer joins ”, más registros de los que cumplan la condición
      • “ outer theta join ”, los registros que no tengan referencias
    • En la sintaxis ANSI tenemos NATURAL JOIN para realizar equijoins basados en una columna común de ambas tablas
    • La sentencia SELECT puede incluir más de una unión, haciendo referencia a varias tablas en una única sentencia
    SELECT JOIN
  • Manipular Datos DML
  • La Sentencia INSERT
    • Para añadir datos en una tabla utilizamos la sentencia INSERT :
      • INSERT INTO tabla [(columna, [columna ...] ) ]
      • VALUES (valor [, valor ...] );
    • Podemos incluir datos en una única tabla al mismo tiempo usando la sentencia INSERT
    • 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
    • Podemos utilizar la palabra NULL para no incluir ningún valor
    • Si no queremos incluir valores en todas las columnas podemos listar los nombres de la columnas específicos
    DML INSERT
  • La sentencia UPDATE
    • Para modificar datos de un registro una vez los hemos insertado en la tabla, debemos utilizar la sentencia UPDATE
    • La sintaxis básica de la sentencia UPDATE es la siguiente:
      • UPDATE tabla
      • SET columna = valor [, columna = valor, ... ]
      • [WHERE condición]
    • Es posible modificar más de una columna en una única sentencia UPDATE, pero solo una tabla a la vez
    • La condición en la cláusula WHERE controla los registros que actualizaremos
    DML UPDATE
  • La sentencia DELETE
    • En ocasiones deberemos permitir que se borren datos como una parte de las transacciones que se procesarán en nuestras bases de datos:
      • DELETE [FROM] tabla
      • [WHERE condición];
    • Del mismo modo que con las sentencias UPDATE , la cláusula WHERE controla los registros que afectados por DELETE
    • Si no concretamos los registros que queremos borrar con WHERE , borraremos todos los datos de la tabla
    DML DELETE
  • Transacciones Imagen: http://www.flickr.com/photos/dsnet/2665846741/
  • ¿Qué son las Transacciones?
    • Cada sentencia DML en Oracle es una única operación que afecta a uno o más registros:
      • Oracle guarda automáticamente los cambios que hayamos podido realizar, por si fuera necesario realizar más de un INSERT , UPDATE o DELETE para obtener un estado consistente de los datos
      • En una transferencia bancaria, restamos de una cuenta y sumamos en otra, no se genera espontáneamente
      • Con las transacciones podemos agrupar estas operaciones en una única acción
    Transacciones
  • ACID
    • El control de transacciones de Oracle se ha diseñado para cumplir el test ACID (Jim Gray y Andreas Reuter):
      • Atomicidad , la totalidad de la transacción debe validarse com una unidad, o no validarse
      • Consistencia , la transacción debe seguir las mismas reglas lógicas (en una transferencia bancaria, el dinero no se crea ni se destruye)
      • 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
      • 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
  • Sentencias de Control de Transacciones Sentencias de Control Transacciones
  • Bloqueos
    • Oracle 10g automáticamente bloquea los datos para que solo un usuario a la vez pueda realizar cambios
  • Descripción de los Bloqueos
    • Parte del test ACID consiste en Isolación:
      • Esto implica que mientras se procesa una transacción, ningún otro usuario puede realizar cambios sobre los datos afectados por la ella
      • Oracle controla la isolación mediante el uso de bloqueos
      • Hay dos tipos de bloqueos en Oracle:
        • Compartidos ( shared locks )
        • Exclusivos ( exclusive locks )
    Bloqueos
  • Bloqueos Compartidos
    • Los bloqueos compartidos se adquieren cuando se realiza una sentencia SELECT :
      • Oracle bloquea la tabla para asegurarse que nadie modifica su estructura, pero no realiza ningún bloqueo sobre los registros que estan consultando
      • Los bloqueos no previenen a otros usuarios a la hora de realizar consultas o modificaciones, solo sobre cambios en su estructura con:
        • ALTER TABLE
        • DROP TABLE
      • Varios usuarios pueden realizar bloqueos de este tipo sobre lo mismos datos o estructuras
    Compartidos Bloqueos
  • Bloqueos Exclusivos
    • Los bloqueos exclusivos se realizan cuando utilizamos sentencias DML:
      • Se aplican a todos los registros afectados por sentencias DML
      • 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
      • Esto previene a dos usuarios de intentar actualizar los mismos datos al mismo tiempo
      • Cuando un usuario intenta actualizar datos bloqueados por otro usuario, éste debe esperar hasta que finalice el bloqueo
      • Oracle permite realizar un bloqueo manualmente con la sentencia:
        • LOCK TABLE
    Exclusivos Bloqueos
  • Sentencias de Administración
    • Oracle utiliza ciertos comandos especiales para administrar:
      • La base de datos ( ALTER DATABASE ), para realizar cambios sobre la base de datos en general o una parte en concreto
      • 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
      • 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
  • Programación en la Base de Datos
    • Cuando comenzamos a desarrollar en Oracle nos encontramos con:
      • SQL es un gran lenguaje para recuperar datos de una base de datos, para añadir, cambiar o borrar datos
      • Está falto de algunas estructuras de programación importantes. No permite:
        • Controlar el flujo de ejecución
        • Almacenar datos en variables para su posterior uso
        • Realizar acciones especificas en caso de error
    Programación
  • PL/SQL
    • La solución de Oracle para este problema es PL/SQL (Procedural Language Extension to SQL):
      • PL/SQL se escribe en bloques
      • Dado que es un lenguaje compilado, estos bloques han de ser procesados por un compilador antes de ser ejecutados
      • El motor de PL/SQL no es un producto separado al servidor Oracle
    PL/SQL Programación
  • Tipos de Bloques
    • Los bloques PL/SQL tienen dos variedades:
      • Bloques Anónimos , son bloques de código PL/SQL sin cabecera y con un nombre.
        • Los bloques PL/SQL se compilan, se ejecutan y desaparecen. Si queremos volverlo a ejecutar debemos volverlo a compilar.
        • Los bloques anónimos pueden guardarse en un script del sistema operativo para ejecutarlos más tarde
      • Bloques con Nombre : se puede hacer referencia a un bloque PL/SQL por su nombre.
        • Por esta razón se usan para dar modularidad dentro de un programa
    Tipos Programación
  • Sumario
    • Usar SQL*Plus y iSQL*Plus para acceder a una base de datos Oracle 10g
    • Describir la estructura lógica de una tabla
    • Usar SQL para consultar, manipular y definir datos
    • Identificar las herramientas básicas de acceso a una base de datos