Você está na página 1de 18

INSTITUTO TECNOLGICO SUPERIOR DE FELIPE CARRILLO PUERTO

,19(67,*$&,21'(75$16$&&,21(69,67$6<6(*85,'$'(1
3267*5(64/
1

DOCENTE:
Ing. Noem Guadalupe Castillo Sosa

MATERIA: Taller De Base De Datos ALUMNOS: Cetz Sulub Juanita Aurora Martnez Gmez Alex Adrian Alcocer Balam Alfredo Alonso Peraza Poot Gaspar de Jess CARRERA: Ingeniera en Sistemas Computacionales
GRUPO:

B SEMESTRE: Quinto AULA: H6 TURNO: Vespertino FELIPE CARRILLO PUERTO QUINTANA ROO 08 DE DICIEMBRE DEL 2010

INDICE INTRODUCCINuuuuuuuuuuuuuuuuuuuuuuuu3 TRANSACCIONESuuuuuuuuuuuuuuuuuuuuuu..4 VISTASuuuuuuuuuuuuuuuuuuuuuuuuuuuu9


2

SEGURIDADuuuuuuuuuuuuuuuuuuuuuuuuu.16 CONCLUSINuuuuuuuuuuuuuuuuuuuuuuuuu17 BIBLIOGRAFAuuuuuuuuuuuuuuuuuuuuuuu..18

INTRODUCCIN
En los ltimos aos, el software de bases de datos ha experimentado un auge extraordinario, a raz de la progresiva informatizacin de casi la totalidad de las empresas de hoy da. No es extrao pues, que existan multitud de gestores de bases 3 de datos, programas que permiten manejar la informacin de modo sencillo.

En esta investigacin de nuestro

sistema de gestin de bases de datos les

mencionaremos como maneja las transacciones, vistas y seguridad.

Explicaremos

que comandos utiliza para realizar sus transiciones as como qu

funcin realiza cada comando. Tambin se explicara como hace para tener una buena seguridad respecto a los datos que se manejen en la base de datos. Todo esto referente a postgres.

TRANSACCIONES
NOMBRE
BEGIN -- Comienza una transaccin en modo encadenado SYNOPSIS BEGIN [ WORK | TRANSACTION ]

4
INPUTS WORK, TRANSACTION Palabras clave opcionales. No tienen efecto. OUTPUTS BEGIN Esto significa que una nueva transaccin ha sido comenzada. NOTICE: BEGIN: already a transaction in progress Esto indica que una transaccin ya est en progreso. La transaccin en curso no se ve afectada. DESCRIPCIN Por defecto, PostgreSQL ejecuta las transacciones en modo no encadenado (tambin conocido como "autocommit" en otros sistemas de base de datos). En otras palabras, cada estado de usuario es ejecutado en su propia transaccin y un commit se ejecuta implcitamente al final del estatuto (si la ejecucin fue exitosa, de otro modo se ejecuta un rollback). BEGIN inicia una transaccin de usuario en modo encadenado, y en todos los estados de usuarios despus de un comando BEGIN se ejecutaran en una transaccin nica hasta un explicito COMMIT, ROLLBACK, o aborte la ejecucin. Los estados en modo encadenado se ejecutan mucho ms rpido, porque la transaccin start/commit requiere una actividad significativa de CPU y de disco. La ejecucin de mltiples estados dentro de una transaccin tambin es requerida para la consistencia cuando se cambian muchas tablas relacionadas. El nivel de aislamiento por defecto de las transacciones en PostgreSQL es READ COMMITTED, donde las consultas dentro de la transaccin solo tienen en cuenta los cambios consolidados antes de la ejecucin de la consulta. As pues, debes utilizar SET TRANSACTION ISOLATION LEVEL SERIALIZABLE justo despus de BEGIN si necesitas aislamiento de transacciones ms riguroso. Las consultas del tipo SERIALIZABLE solo tendrn en cuenta los cambios consolidados antes de que la transaccin entera comience (realmente, antes de la ejecucin del primer estado DML en una transaccin serializable).

Si la transaccin est consolidada, PostgresSQL asegurara que todas las actualizaciones sean hechas o si no que ninguna de ellas lo sea. Las transacciones tienen la propiedad estndar ACID (atmica, consistente, aislada y durable). NOTAS Remtase a LOCK para informacin ampliada sobre el bloqueo de tablas durante una transaccin. Utilice COMMIT o ROLLBACK para terminar una transaccin. UTILIZACIN

Para comenzar una transaccin de usuario: BEGIN WORK;

COMPATIBILIDAD SQL92 BEGIN es una extensin de lenguaje de PostgreSQL. No hay ningn comando BEGIN explicito en SQL92; la iniciacin de una transaccin siempre esta implcita y es terminado o con un estado COMMIT o con ROLLBACK. Muchos sistemas de bases de datos relacionales ofrecen una caracterstica de autocommit como una comodidad. Por cierto, la palabra BEGIN es utilizada para diferentes propsitos en SQL embebido. Queda avisado para que sea cuidadoso acerca de las transacciones semnticas cuando traslade aplicaciones de base de datos. SQL92 tambin requiere SERIALIZABLE para ser el nivel de aislamiento de transaccin por defecto. EJEMPLO

No se debe confundir el uso de las sentencias de agrupamiento BEGIN/END de PL/pgSQL con los comandos de la base de datos que sirven para el control de las transacciones. Las funciones y procedimientos disparadores no pueden iniciar o realizar transacciones y Postgres no soporta transacciones anidadas.

NOMBRE
COMMIT -- Realiza la transaccin actual SYNOPSIS COMMIT [ WORK | TRANSACTION ]

INPUTS

6
WORK, TRANSACTION Palabra clave opcional. No tiene efecto. OUTPUTS COMMIT Mensaje devuelto si la transaccin se realiza con xito. NOTICE: COMMIT: no transaccin en progress Si no hay transacciones en progreso. DESCRISCRIPCION COMMIT realiza la transaccin actual. Todos los cambios realizados por la transaccin son visibles a las otras transacciones, y se garantiza que se conservan si se produce una cada de la mquina. NOTAS Las palabras clave WORK y TRANSACTION son demasiado informativas, y pueden ser omitidas. Use ROLLBACK para abortar una transaccin. UTILIZACION Para hacer todos los cambios permanentes: COMMIT WORK;

COMPATIBILIDAD SQL92

SQL92 solo especifica las dos formas, COMMIT y COMMIT WORK. Por lo dems, es totalmente compatible. EJEMPLO Si no se desea hacer un rollback completo de la transaccin, entonces se pueden definir marcadores (savepoints) hasta los cuales se desea que se regrese en la transaccin, ejemplo: BEGIN; UPDATE cuentas SET balance = balance 100 WHERE nombre = Alice; SAVEPOINT marcador1; UPDATE cuentas SET balance = balance + 100 WHERE nombre = Bob; se desea descartar la actualizacin para Bob y en vez hacerla para Wally ROLLBACK TO marcador1; UPDATE cuentas SET balance = balance + 100 WHERE nombre = Wally; COMMIT

NOMBRE
ROLLBACK -- Interrumpe la transaccin en curso SYNOPSIS ROLLBACK [ WORK | TRANSACTION ]

INPUTS Ninguna. OUTPUTS ABORT Mensaje devuelto si la operacin es exitosa. NOTICE: ROLLBACK: no transaction in progress Si no hay transacciones en progreso actualmente. DESCRIPCIN ROLLBACK deshace la transaccin actual y provoca que todas las modificaciones originadas por la misma sean descartadas. NOTAS Utilice COMMIT para terminar una transaccin de forma exitosa. ABORT es un sinnimo de ROLLBACK.

UTILIZACION Para cancelar todos los cambios: ROLLBACK WORK;

COMPATIBILIDAD SQL92

8
SQL92 slo especifica las dos formas siguientes: ROLLBACK y ROLLBACK WORK. De cualquier otra forma, la compatibilidad es completa. EJEMPLO

VISTAS
Implementacin de las vistas en Postgres CREATE VIEW Las vistas en Postgres se implementan utilizando el sistema de reglas. De hecho, no hay diferencia entre

CREATE VIEW myview AS SELECT * FROM mytab; y la secuencia: CREATE TABLE myview (la misma lista de atributos de mytab); CREATE RULE "_RETmyview" AS ON SELECT TO myview DO INSTEAD SELECT * FROM mytab; Porque esto es exactamente lo que hace internamente el comando CREATE VIEW. Esto tiene algunos efectos colaterales. Uno de ellos es que la informacin sobre una vista en el sistema de catlogos de Postgres es exactamente el mismo que para una tabla. De este modo, para los traductores de queries, no hay diferencia entre una tabla y una vista, son lo mismo: relaciones. Esto es lo ms importante por ahora. SELECT SELECT -- Recupera registros desde una tabla o vista. Sintaxis SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] expression [ AS name ] [, ...] [ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table ] [ FROM table [ alias ] [, ...] ] [ WHERE condition ] [ GROUP BY column [, ...] ] [ HAVING condition [, ...] ] [ { UNION [ ALL ] | INTERSECT | EXCEPT } select ] [ ORDER BY column [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF class_name [, ...] ] ] LIMIT { count | ALL } [ { OFFSET | , } start ] Inputs expression El nombre de una columna de la tabla o una expresin. name Especifica otro nombre para una columna o una expresin que utilice la clusula AS. Este nombre se utiliza principalmente como etiqueta para la columna de salid. El nombre no puede ser utilizado en las clusulas WHERE, GROUP BY o HAVING. Sin embargo, puede ser referenciado en clusulas ORDER BY. TEMPORARY, TEMP La tabla se crea solamente para esta sesin, y es automticamente descartada al finalizar la misma. new_table Si se utiliza la clusula INTO TABLE, el resultado de la consulta se almacenar en otra tabla con el nombre indicado. La tabla objetivo (new_table) ser creada automticamente y no

deber existir previamente a la utilizacin de este comando. Consulte el comando SELECT INTO para ms informacin. Nota: La declaracin CREATE TABLE AS tambin crear una nueva tabla a partir de la consulta. table El nombre de una tabla existente a la que se refiere la clusula FROM. alias Un nombre alternativo para la tabla precedente table. Se utiliza para abreviar o eliminar ambigedades en uniones dentro de una misma tabla. condition Una expresin booleana que da como resultado verdadero o falso (true or false). Consulte la clusula WHERE. column El nombre de una columna de la tabla. select Una declaracin de seleccin (select) exceptuando la clusula ORDER BY. Outputs Registros El conjunto completo de registros (filas) que resultan de la especificacin de la consulta. count La cantidad de registros (filas) devueltos por la consulta.

10

Descripcin SELECT devuelve registros de una o ms tablas. Los candidatos a ser seleccionados son aquellos registros que cumplen la condicin especificada con WHERE; si se omite WHERE, se retornan todos los registros. DISTINCT elimina registros duplicados del resultado. ALL (predeterminado) devolver todos los registros, que cumplan con la consulta, incluyendo los duplicados. DISTINCT ON elimina los registros que cumplen con todas las expresiones especificadas, manteniendo solamente el primer registro de cada conjunto de duplicados. Note que no se puede predecir cul ser "el primer registro" a menos que se utilice ORDER BY para asegurar que el registro eseado es el que efectivamente aparece primero. Por ejemplo: SELECT DISTINCT ON (location) location, time, report FROM weatherReports ORDER BY location, time DESC; recuperea el reporte de tiempo (weather report) ms reciente para cada locacin (location). Pero si no se hubiera utilizado ORDER BY para forzar el orden descendente de los valores de fecha para cada locacin, se hubiesen recuperado reportes de una fecha impredecible para cada locacin. La clusula GROUP BY permite al usuario dividir una tabla conceptualmente en grupos. La clusula HAVING especifica una tabla con grupos derivada de la eliminacin de grupos del resultado de la clusula previamente especificada.

La clusula ORDER BY permite al usuario especificar si quiere los registros ordenados de manera ascendente o descendente utilizando los operadores de modo ASC y DESC. El operador UNION permite permite que el resultado sea una coleccin de registros devueltos por las consultas involucradas. El operador INTERSECT le da los registros comunes a ambas consultas. El operador EXCEPT le da los registros devueltos por la primera consulta que no se encuentran en la segunda consulta.

11

La clusula FOR UPDATE permite a SELECT realizar un bloqueo exclusivo de los registros seleccionados. La clusula LIMIT permite devolver al usuario un subconjunto de los registros producidos por la consulta. Usted debe tener permiso de realizar SELECT sobre una tabla para poder leer sus valores. Clusula WHERE La condicin opcional WHERE tiene la forma general: WHERE boolean_expr boolean_expr puede consistir de cualquier expresin cuyo resultado sea un valor booleano. En muchos casos, esta expresin ser: expr cond_op expr o log_op expr donde cond_op puede ser uno de: =, <, <=, >, >= or <>, un operador condicional como ALL, ANY, IN, LIKE o operador definido localmente, y log_op puede ser uno de: AND, OR, NOT. La comparacin devuelve TRUE (verdadero) o FALSE (falso) y todas las instancias sern descartadas si la expresin resulta falsa. Clusula GROUP BY GROUP BY especifica una tabla con grupos derivada de la aplicacin de esta clusula: GROUP BY column [, ...]

GROUP BY condensar en una sola fila todos aquellos registros que compartan los mismos valores para las columnas agrupadas. Las funciones de agregacin, si las hubiera, son computadas a travs de todas las filas que conforman cada grupo, produciendo un valor separado por cada uno de los grupos (mientras que sin GROUP BY, una funcin de agregacin produce un solo valor computado a travs de todas las filas seleccionadas). Cuando GROUP BY est presente, no es vlido hacer referencia a columnas no agrupadas excepto dentro de funciones de agregacin, ya que habra ms de un posible valor de retorno para una columna no agrupada. Clusula HAVING

La condicin opcional HAVING tiene la forma general: HAVING cond_expr donde cond_expr cumple las mismas condiciones que las especificadas para WHERE. HAVING especifica una tabla con grupos derivada de la eliminacin de grupos, del resultado de la clusula previamente especificada, que no cumplen con cond_expr. Cada columna referenciada en cond_expr debe referirse precisamente (sin ambigedades) a una columna de grupo, a menos que la referencia aparezca dentro de una funcin de agregacin.

12

Clusula ORDER BY ORDER BY column [ ASC | DESC ] [, ...]

column puede ser tanto el nombre de una columna como un nmero ordinal. Los nmeros ordinales hacen referencia a la posicin (de izquierda a derecha) de la columna. Esta caracterstica hace posible definir un orden basado en una columna que no tiene un nombre adecuado. Esto nunca es absolutamente necesario ya que siempre es posible asignar un nombre a una columna calculada utilizando la clusula AS, por ej.: SELECT title, date_prod + 1 AS newlen FROM films ORDER BY newlen;

A partir de la versin 6.4 de PostgreSQL, es tambin posible ordenar, con ORDER BY, segn expresiones arbitrarias, incluyendo campos que no aparecen en el resultado de SELECT. Por lo tanto, la siguiente declaracin es legal: SELECT name FROM distributors ORDER BY code;

Opcionalmente una puede agregar la palabra clave DESC (descendente) o ASC (ascendente) luego del nombre de cada columna en la clusula ORDER BY. Si no se especifica, se asume ASC de forma predeterminada. Alternativamente, puede indicarse un nombre de operador de orden especfico. ASC es equivalente a USING '<' y DESC es equivalente a USING '>'. Clusula UNION table_query UNION [ ALL ] table_query [ ORDER BY column [ ASC | DESC ] [, ...] ] donde table_query especifica cualquier declaracin SELECT sin la clusula ORDER BY. El operador UNION permite que el resultado sea una coleccin de registros devueltos por las consultas involucradas. Los dos SELECTs que representan los dos operandos directos de la UNION deben producir el mismo nmero de columnas, y las columnas correspondientes deben ser de tipos de datos compatibles. De forma predeterminada, el resultado de UNION no contiene registros duplicados a menos que se especifique la clusula ALL.

Si se utilizan varios operadores UNION en la misma declaracin SELECT se evalan de izquierda a derecha. Note que la palabra clave ALL no es global, siendo aplicada solamente al par de tablas de resultado actual. Clusula INTERSECT table_query INTERSECT table_query [ ORDER BY column [ ASC | DESC ] [, ...] ] donde table_query especifica cualquier expresin SELECT sin la clusula ORDER BY.

13

El operador INTERSECT le da los registros comunes a ambas consultas. Los dos SELECTs que representan los operandos directos de la interseccin deben producir el mismo nmero de columnas, y las columnas correspondientes deben ser de tipos de datos compatibles. Si se utilizan varios operadores INTERSECT en la misma declaracin SELECT se evalan de izquierda a derecha, a menos que se utilicen parntesis para modificar esto. Clusula EXCEPT table_query EXCEPT table_query [ ORDER BY column [ ASC | DESC ] [, ...] ] donde table_query especifica cualquier expresin SELECT sin la clusula ORDER BY. El operador EXCEPT le da los registros devueltos por la primera consulta pero no por la segunda. Los dos SELECTs que representan los operandos directos de la interseccin deben producir el mismo nmero de columnas, y las columnas correspondientes deben ser de tipos de datos compatibles. Si se utilizan varios operadores INTERSECT en la misma declaracin SELECT se evalan de izquierda a derecha, a menos que se utilicen parntesis para modificar esto. Clusula LIMIT LIMIT { count | ALL } [ { OFFSET | , } start ] OFFSET start donde count especifica el mximo nmero de registros a devolver y start especifica el nmero de registros a saltear antes de empezar a devolver registros. LIMIT le permite recuperar slo una porcin de los registros que se generan por el resto de la consulta. Si se especifica un nmero lmite, no se devolvern ms registros que esa cantidad. Si se da un valor de desplazamiento, esa cantidad de registros ser salteada antes de comenzar a devolver registros. Cuando se utiliza LIMIT es una buena idea utilizar la clusula ORDER BY para colocar los registros del resultado en un orden nico. De otra forma obtendr un subconjunto impredecible de los registros de la consulta --- tal vez est buscando los registros del dcimo al vigsimo, pero del dcimo al vigsimo en qu orden? Usted no conoce el orden a menos que utilice ORDER BY. Ya en Postgres 7.0, el optimizador de consultas toma en cuenta a LIMIT cuando genera un plan de consulta, as que es muy factible que usted obtenga diferentes planes (abarcando diferentes criterios de ordenamiento de registros) dependiendo de los valores dados a LIMIT y OFFSET. Por

lo tanto, utilizar diferentes valores para LIMIT/OFFSET para seleccionar diferentes subconjuntos del resultado de una consulta, provocar resultados inconsistentes a menos que usted se asegura un resultado predecible ordenando con ORDER BY. Esto no es un bug; es una consecuencia inherente al hecho de que SQL no establece ningn compromiso de entregar los resultados de una consulta en un orden en particular a menos que se utilice ORDER BY para especificar un criterio de orden explcitamente. DROP VIEW Nombre DROP VIEW -- Retira una vista definida en una base de datos Sintaxis DROP VIEW nombre

14
Entradas nombre El nombre de la vista definida. Salidas DROP El mensaje que se obtiene si el comando ha sido ejecutado con xito. ERROR: RewriteGetRuleEventRel: rule "_RETnombre" not found Este mensaje ocurre si la vista dada no existe en la base de datos. Descripcin DROP VIEW retira una vista definida en una base de datos. Para poder ejecutar este comando, deber ser el dueo de la vista. Notas La clusula DROP TABLE de Postgres tambin elimina vistas. Consulte CREATE VIEW para una explicacin de como se crean vistas. Uso Este comando retirar la vista llamada variedades: DROP VIEW variedades; Compatibilidad SQL92 SQL92 especifica algunas funcionalidades adicionales para DROP VIEW: DROP VIEW vista { RESTRICT | CASCADE } Entradas RESTRICT Asegura que sean destruidas nicamente vistas sin otras listas dependientes y sin restricciones de integridad. CASCADE Cualquier vista que se refiera a esta ser tambin eliminada, al igual que cualquier restriccin de integridad. Notas Actualmente, para retirar una vista referida en una base de datos Postgres esta debe ser eliminada explcitamente. SELECT INTO Nombre SELECT INTO -- Crear una nueva tabla a partir de una tabla o vista ya existente. Sintaxis SELECT [ ALL | DISTINCT [ ON ( expresin [, ...] ) ] ] expresin [ AS nombre ] [, ...]

[ INTO [ TEMPORARY | TEMP ] [ TABLE ] nueva_tabla ] [ FROM tabla [ alias ] [, ...] ] [ WHERE condicin ] [ GROUP BY columna [, ...] ] [ HAVING condicinn [, ...] ] [ { UNION [ ALL ] | INTERSECT | EXCEPT } select ] [ ORDER BY columna [ ASC | DESC | USING operador ] [, ...] ] [ FOR UPDATE [ OF Nombre_de_clase [, ...] ] ] LIMIT { contador | ALL } [ { OFFSET | , } incio ]

15

Inputs Todos los campos de entrada se describen en detalle en SELECT. Outputs Todos los campos de salida se describen en detalle en SELECT. Descripcin SELECT INTO Crea una nueva tabla a partir del resultado de una query. Tpicamente, esta query recupera los datos de una tabla existente, pero se permite cualquier query de SQL. Nota: CREATE TABLE AS es funcionalmente equivalente al comando SELECT INTO.

SEGURIDAD

Proteccin de los ficheros de la base de datos. Todos los ficheros almacenados en la base de datos estan protegidos contra escritura por cualquier cuenta que no sea la del superusuario de Postgres. Las conexiones de los clientes al servidor de la base de datos estan permitidas, por defecto, nicamente mediante sockets Unix locales y no mendiante sockets TCP/IP. Ha de arrancarse el demonio con la opcion -i para permitir la conexion de clientes no locales.  Las conexiones de los clientes se pueden restringir por direccin IP y/o por nombre de usuario mediante el fichero pg_hba.conf  A cada usuario de Postgres se le asigna un nombre de usuario y (opcionalmente) una contrasea. Por defecto, los usarios no tienen permiso de escritura a bases de datos que no hayan creado.  Los usuarios pueden ser incluidos en grupos, y el acceso a las tablas puede restringirse en base a esos grupos.

16

Copias de Seguridad y Restauracion Las copias de Seguridad para una sola Base de Datos se establece: % pg_dump nombredb > nombredb.pgdump Y se puede restaurar de esta manera: % cat nombredb.pgdump | psql nombredb

CONCLUSIN
En conclusin el software postgreSQL tambin llamado Postgres95 es una alternativa libre dado que es manejado bajo una licencia BSD esta licencia tiene menos restricciones en comparacin con otras por lo tanto se puede decir que es muy cercana al dominio pblico. PostgreSQL es un sistema de gestin de base de datos, es uno de los mejores del mercado y en su ultima versin 8.4 no tiene nada que envidiarle a otras bases de datos que existen en la actualidad. usa un lenguaje PL/PgSQL que es muy similar al PL/SQL de Oracle tambin puede utilizar otros tipos de lenguajes como por ejemplo: C, C++, java PL/java web, PL/Perl. Entre otros. Utiliza un modelo cliente/servidor y usa mulitiprocesos en vez de multihilos. Esta basado en el proyecto POSTGRE, de la universidad de Berkeley. PostgreSQL es un sistema objeto-relacional, ya que incluye caractersticas de la orientacin a objetos. Algunas caractersticas de postgreSQL son que soporta distintos tipos de datos, incorpora una estructura de datos array, incorpora funciones de diversa ndole, incluye la herencia entre tablas, entre muchas mas. Es ideal para el manejo de bases de datos dinmicas en la cual se podrn realizar consultas espaciales. Por ltimo podemos decir que postgres es uno de los mejores sistemas de gestin de bases de datos ya que tiene muchas capacidades que otros gestores no tienen y es uno de los que maneja transacciones y tiene una excelente seguridad en el cuidado de la informacin. Podemos decir que postgres es una solucin que llego para quedarse.

17

BIBLIOGRAFA
y y y
18
http://www.ibiblio.org/pub/linux/docs/LuCaS/Postgresqles/web/navegable/todopostgresql/pos tgres.html
http://mygnet.net/manuales/postgresql/vistas_y_funciones_postgres.1245 http://fbielma.org/conferencia/itesco/DB-Security.pdf

Você também pode gostar