P. 1
Postgresql Orientado a Objetos

Postgresql Orientado a Objetos

|Views: 982|Likes:
Published by marvictux

More info:

Published by: marvictux on Apr 17, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

09/15/2013

pdf

text

original

POSTGRESQL ORIENTADO A OBJETOS

INTRODUCCION
PostgreSQL: Sistema de gestión de base de datos relacional orientada a objetos de software libre, publicado bajo la licencia BSD. Como muchos otros proyectos open source, el desarrollo de PostgreSQL no es manejado por una sola compañía sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). Tipo de licencia: Licencia BSD: es la licencia de software otorgada principalmente para los sistemas BSD (Berkeley Software Distribution). Pertenece al grupo de licencias de software Libre. Esta licencia tiene menos restricciones en comparación con otras como la GPL estando muy cercana al dominio público. La licencia BSD al contrario que la GPL permite el uso del código fuente en software no libre. Bajo esta licencia, el autor mantiene la protección de copyright únicamente para la renuncia de garantía y para requerir la adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y modificación. Puede argumentarse que esta licencia asegura “verdadero” software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Principales características:  Alta concurrencia: mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de bloqueos.  Integridad de los datos: claves primarias, llaves foráneas con capacidad de actualizar en cascada o restringir la acción y restricción not null.  Resistencia a fallas. Escritura adelantada de registros (WAL) para evitar pérdidas de datos en caso de fallos por: Energía, Sistema Operativo, Hardware.  Multi Linux, Unix, BSD's, Mac OS X, Solaris, AIX, Irix, HP-UX, Windows.  PITR. Puntos de recuperación en el tiempo.  Tablespaces. (Ubicaciones alternativas para los datos)  Replicación síncrona y asincrónica.  Cumple con factores que determinan la calidad del software. (ISO 9126-1)  Características operativas: Corrección, Fiabilidad, Eficiencia, Integridad, Facilidad de uso.  Capacidad para soportar cambios: Facilidad de mantenimiento, Flexibilidad, Facilidad de prueba. Requerimientos de hardware: Realmente PostgreSQL no tiene requerimientos específicos de hardware. Se considera suficiente con satisfacer los requerimientos recomendados para instalar el sistema operativo que se vaya a utilizar. Como mismo se pude realizar todo el desarrollo con un servidor Pentium IV de 1.7 MHz y 1 GB de RAM con Red Hat Linux 8.0, para una mínima cantidad de usuarios, también podemos emplear recursos de hardware distribuidos para una BD considerablemente grande. Naturalmente, si se desea que el sistema ofrezca servicio a un número relativamente grande de usuarios concurrentes habrá que tener este factor en cuenta a la hora de elegir el hardware más apropiado de acuerdo a nuestras necesidades. Principales funcionalidades: Bloques de código que se ejecutan en el servidor. Pueden ser escritos en varios lenguajes, con

la potencia que cada uno de ellos ofrece. Multiplataforma: PostgreSQL está disponible en casi cualquier Unix (34 plataformas en la última versión estable). conservando todas las características. pueden hacerlo con un mínimo esfuerzo. El concepto de funciones. puesto que no hay costo asociado a la licencia del software. Perl. sin costos adicionales. Extensible: El código fuente está disponible para todos sin costo. PHP. C++. es extremadamente común que compañías reporten que PostgreSQL nunca ha presentado caídas en varios años de operación de alta actividad. Algunos de los lenguajes que se pueden usar son los siguientes: Un lenguaje propio llamado [PL/PgSQL (similar al PL/SQL de Oracle). nadie puede demandarlo por violar acuerdos de licencia. donde la salida puede tratarse como un conjunto de valores que pueden ser tratados igual a una fila retornada por una consulta (query en inglés). Python. tenemos una importante comunidad de profesionales y entusiastas de PostgreSQL de los que su compañía puede obtener beneficios y contribuir. VENTAJAS DE POSTGRESQL Respecto a otros sistemas de bases de datos: Instalación ilimitada: Es frecuente que las bases de datos comerciales sean instaladas en más servidores de lo que permite la licencia. Además de esto. y una versión nativa de Windows está actualmente en estado beta de pruebas. Esto es complementado por la comunidad de profesionales y entusiastas de PostgreSQL alrededor del mundo que también extienden PostgreSQL todos los días. en otros DBMS. Ahorros considerables en costos de operación: Nuestro software ha sido diseñado y creado para tener un mantenimiento y ajuste mucho menor que los productos de los proveedores comerciales. Si su equipo necesita extender o personalizar PostgreSQL de alguna manera. Ni una sola vez. Mejor soporte que los proveedores comerciales: Además de nuestras ofertas de soporte. Java. C. Ruby PostgreSQL soporta funciones que retornan "filas". Gambas. estabilidad y rendimiento. Simplemente funciona. Algunos proveedores comerciales consideran a esto la principal fuente de incumplimiento de licencia. nuestros programas de entrenamiento son reconocidamente mucho más costo-efectivos. hasta las complejidades de la programación orientada a objetos o la programación funcional. Las funciones pueden ser definidas para ejecutarse con los derechos del usuario ejecutor o con los derechos de un usuario previamente definido. Diseñado para ambientes de alto volumen: PostgreSQL usa una estrategia de almacenamiento de filas llamada MVCC para conseguir una respuesta más eficiente en . Con PostgreSQL. manejables y prácticos en el mundo real que aquellos de los principales proveedores comerciales. Los disparadores (triggers en inglés) son funciones enlazadas a operaciones sobre los datos. tales como bifurcaciones y bucles. son muchas veces referidas como "procedimientos almacenados" (stored procedures en inglés). Estabilidad y confiabilidad legendarias: En contraste a muchos sistemas de bases de datos comerciales. desde las operaciones básicas de programación.

etc. aunque se puede aumentar a 32K. 4. Tiene un límite de 8K por fila. 3. por las mismas razones. Los nombres de las bases de datos deben comenzar por un carácter alfabético y están limitados a una longitud de 32 caracteres. Es de 2 a 3 veces más lento que MySQL. agencias gubernamentales. como se suele hacer en muchos casos. podemos decir que MySQL junto con Apache y PHP forman un buen equipo para servir páginas web con contenido dinámico. Simplemente se trata de escoger el más conveniente en cada caso. Si Postgres le niega la creación de bases de datos. con una disminución considerable del rendimiento. En ese caso. Ninguno de estos dos gestores es totalmente perfecto. y la seguridad no sea muy importante. En cambio. por lo que no hay que obsesionarse en la elección única y fanática. verá lo siguiente: % createdb mydb NOTICE:user "su nombre de usuario" is not allowed to create/destroy databases createdb: database creation failed on pruebas. . MySQL se considera más eficiente para sistemas en los que la velocidad y el número de accesos concurrentes sea algo primordial. Postgres le permite crear cualquier número de bases de datos en un sistema dado y automáticamente será el administrador de la base de datos que creó. DESVENTAJAS DE POSTGRESQL     Consume gran cantidad de recursos. bancos. No todos los usuarios están autorizados para ser administrador de una base de datos.ambientes de grandes volúmenes.) PostgreSQL es una mejor opción pese a su mayor lentitud. Los principales proveedores de sistemas de bases de datos comerciales usan también esta tecnología. Menos funciones en PHP. En general. BREVE COMPARACIÓN DE POSTGRESQL CON MYSQL Como conclusión a la comparación entre MySQL y PostgresSQL. seguramente es debido a que el administrador del sistema ha de otorgarle permisos para hacerlo. noticias. discusiones. etc. consulte al administrador del sistema. INICIANDO CON POSTRESQL CREACIÓN DE UNA BASE DE DATOS Digamos que quiere crear una base de datos llamada pruebas. Puede hacerlo con la siguiente orden: % createdb pruebas Si no cuenta con los privilegios requeridos para crear bases de datos. para sistemas más serios en las que la consistencia de la base de datos sea fundamental (BD con información realmente importante.

así como otros de tipo general y otros con un rico conjunto de tipos geométricos. Consecuentemente. la cual le permite enviar órdenes SQL desde C y obtener mensajes de respuesta en su programa. para probar los ejemplos en este manual. Postgres SQL soporta los tipos habituales de SQL como: int.  Escribiendo un programa en C usando la librería de subrutinas LIBPQ. EL LENGUAJE SQL Tenga en cuenta que las palabras clave y los identificadores son sensibles a las mayúsculas y minúsculas. time. así que deberá hacerse con precaución. real. smallint. y timestamp. El programa psql responde a los códigos de escape que empiezan por el carácter “\”. Esta interfaz es discutida más adelante en la Guía de Programadores de PostgreSQL. varchar(N). los nombres de tipo no son sintácticamente palabras clave. puede eliminarla utilizando la siguiente orden Unix: % dropdb mydb Esta acción elimina físicamente todos los archivos Unix asociados a la base de datos y no pueden recuperarse. puede acceder a ella:  Ejecutando los programas de monitorización de Postgres (por ejemplo psql) los cuales le permiten introducir. Tal como veremos más tarde. date. Lo puede activar para la base de datos pruebas escribiendo la orden: % psql pruebas Se le dará la bienvenida con el siguiente mensaje: Welcome to the POSTGRESQL interactive sql monitor: Please read the file COPYRIGHT for copyright terms of POSTGRESQL type \? for help on slash commands type \q to quit type \g or terminate with semicolon to execute query You are currently connected to the database: template1 mydb=> Este prompt indica que el monitor está listo y puede escribir sus consultas SQL dentro de un espacio de trabajo mantenido por el monitor. Puede que desee ejecutar psql. char(N). puede obtener la ayuda acerca de la sintaxis de varias órdenes SQL Postgres escribiendo: mydb=> \h ELIMINANDO BASES DE DATOS Si es el administrador de la base de datos mydb. Postgres puede ser configurado con un número arbitrario de tipos de datos definidos por el usuario. excepto donde se requiera para soportar casos especiales en el estándar SQL92. . Los identificadores pueden llegar a ser sensibles a mayúsculas o minúsculas si se les pone entre dobles comillas. editar y ejecutar órdenes SQL interactivamente. Por ejemplo.ACCEDER A UNA BASE DE DATOS Una vez que ha construido una base de datos. tal como lo permite SQL92. float.

Sin embargo. etc. CONCEPTOS ORIENTADO A OBJETOS La noción fundamental en Postgres es la de clase. suma (sum). se pueden aplicar a las columnas de una relación para obtener una cantidad única. Generalmente esto suele ser más rápido porque los datos son leídos (o escritos) como una única transacción directamente a o desde la tabla destino. Como resultado.25. usaremos los términos tabla y clase indistintamente. capacidades que van más allá del cálculo o del álgebra relaciona.txt’ USING DELIMITERS ’|’. 0. También puede usar el comando copy para cargar grandes cantidades de datos desde ficheros (ASCII) . máximo (max). ya que el servidor lee el fichero directamente Como en el caso de los más modernos lenguajes relacionales. 46. una fila SQL es una instancia y las columnas SQL son atributos. INSERT. ’11/27/1994’). • Asignación y comandos de impresión: es posible imprimir una relación construida por una consulta y asignar una relación calculada a un nombre de relación. el comando Postgres CREATE es idéntico al comando usado para crear una tabla en el sistema relacional de siempre. Aquí tenemos una lista de algunas características proporcionadas por SQL que no forman parte del álgebra y del cálculo relacionales: • Comandos para inserción. veremos que las clases tienen propiedades que son extensiones del modelo relacional. SQL está basado en el cálculo relacional de tuplas. toda consulta formulada utilizando el cálculo relacional de tuplas ( o su equivalente. que es único a lo largo de toda la instalación. UPDATE). donde el path del fichero origen debe ser accesible al servidor backend . que es una colección de instancias de un objeto. Asimismo. las clases se agrupan en bases de datos y una colección de bases de datos gestionada por un único proceso postmaster constituye una instalación o sitio. (SELECT. . por ejemplo A < B + 3. • Funciones agregadas: Operaciones tales como promedio (average).Yendo más lejos. • Capacidades aritméticas: En SQL es posible incluir operaciones aritméticas así como comparaciones. Un ejemplo sería: COPY clima FROM ’/home/user/clima. DROP. Como ya se dijo anteriormente. borrado o modificación de datos. DELETE. no al cliente. cada instancia tiene un identificador de objeto (OID) permanente. LLENANDO UNA CLASE CON INSTANCIAS La declaración insert se usa para llenar una clase con instancias: INSERT INTO clima VALUES (’Oaxaca’. el álgebra relacional) se pude formular también utilizando SQL. Hay. Cada instancia tiene la misma colección de atributos y cada atributo es de un tipo específico. sin embargo. 50. Más aún. Ya que la sintaxis SQL hace referencia a tablas. Nótese que ni + ni otros operadores aritméticos aparecían en el álgebra relacional ni en cálculo relacional.

Por ejemplo. SELECT DISTINCT ciudad FROM clima ORDER BY ciudad. escriba: SELECT * FROM clima.precipitación fecha date ).CREACIÓN DE UNA NUEVA CLASE Puede crear una nueva clase especificando el nombre de la clase. además de todos los nombres de atributo y sus tipos: CREATE TABLE clima ( ciudad varchar(80). Por ejemplo.0.temperatura máxima prcp real. . . CONSULTAR A UNA CLASE La clase “clima” puede ser consultada con una selección relacional normal y consultas de proyección. (temp_max+temp_min)/2 AS temp_prom. Por ejemplo. temp_min int. date FROM clima. da como resultado: +---------+------+------+----+--------+ |ciudad | temp_min | temp_max | prcp | fecha | +---------+------+------+----+--------+ |Oaxaca | 6 | 25 | 0. . La declaración SQL SELECT se usa para hacer esto. SELECT * FROM clima WHERE ciudad = ’Oaxaca’ AND prcp > 0. . Y la salida debería ser: +---------+------+------+----+--------+ |ciudad | temp_min | temp_max | prcp | fecha | +---------+------+------+----+--------+ |Oaxaca| 6 | 25 | 0.temperatura mínima temp_max int. puede hacer: SELECT ciudad. Los operadores booleanos (and. puede especificar que los resultados de un select puedan ser devueltos de manera ordenada o quitando las instancias duplicadas.25 | 11-27-2000 | +---------+------+------+----+--------+ Como apunte final. La declaración se divide en una lista destino (la parte que lista los atributos que han de ser devueltos) y una cualificación (la parte que especifica cualquier restricción).25 | 11-27-2000 | +---------+------+------+----+--------+ |Oaxaca | 15 | 35 | 0 | 11-29-2000 | +---------+------+------+----+--------+ |Puebla | 3 | 14 | | 11-29-2000 | +---------+------+------+----+--------+ Puede especificar cualquier expresión en la lista de destino. or and not) ) se pueden usar en la cualificación de cualquier consulta. para recuperar todas las filas de clima.

Podemos hacer esto con la siguiente consulta: SELECT W1. por supuesto. En este caso.REDIRECCIONAMIENTO DE CONSULTAS SELECT Cualquier consulta select puede ser redireccionada a una nueva clase: SELECT * INTO TABLE temp FROM clima.temp_max > W2. Como ejemplo.temp_max AS alta.temp_max AS alta FROM clima W1.temp_min AS baja. nuestras consultas sólo accedían a una clase a la vez. En efecto. Esto significa que Postgres en ocasiones recalcula la misma lista de destino varias veces. Una consulta que acceda a múltiples instancias de las mismas o diferentes clases a la vez se conoce como una consulta join. W2. debe usar la declaración select distinct. El verdadero join puede hacerse de una manera más eficaz. necesitamos comparar los atributos temp_min y temp_max de cada instancia EMP con los atributos temp_min y temp_max de todas las demás instancias EMP. realizar cualquier operación sobre la clase resultante como lo haríamos sobre cualquier otra clase. Esto ocurre frecuentemente cuando las expresiones booleanas se conectan con un "or".ciudad. Postgres SQL no da ningún significado a los valores duplicados en este tipo de expresiones. clima W2 WHERE W1. W1. Nota: Esto es sólo un modelo conceptual. Entonces podremos.temp_min AS baja. tanto W1 como W2 son sustituidos por una instancia de la clase clima y se extienden por todas las instancias de la clase. Para estas instancias en el producto cartesiano cuya cualificación sea verdadera. Las consultas pueden acceder a múltiples clases a la vez. Para eliminar estos duplicados.temp_min AND W1.ciudad. W2. o acceder a la misma clase de tal modo que múltiples instancias de la clase sean procesadas al mismo tiempo. W1. Esto forma de manera implícita un comando create. pero esto es invisible para el usuario. (En la terminología de la mayoría de los sistemas .temp_max. Postgres calcula y devuelve los valores especificados en la lista de destino. W2. JOINS (UNIONES) ENTRE CLASES Hasta ahora.temp_min < W2. digamos que queremos encontrar todos los registros que están en el rango de temperaturas de otros registros. creándose una nueva clase temp con el atributo nombres y tipos especificados en la lista destino del comando select into. +---------+---+----+----------+---+----+ |ciudad | baja | alta | ciudad | baja | alta | +---------+---+----+----------+---+----+ |Oaxaca | 43 | 57 | Oaxaca | 46 | 50 | +---------+---+----+----------+---+----+ |Oaxaca | 37 | 54 | Oaxaca | 46 | 50 | +---------+---+----+----------+---+----+ Nota: Los matices de este join están en que la cualificación es una expresión verdadera definida por el producto cartesiano de las clases indicadas en la consulta.

Si queremos saber qué ciudad o ciudades donde se dieron estas temperaturas. La diferencia fundamental entre where y having es que: where selecciona las columnas de entrada antes de los grupos y entonces se computan las funciones de conjunto (de este modo controla qué filas van a la función de conjunto).2 WHERE fecha > ’11/28/1994’. El sistema no pedirá confirmación antes de hacer esto. existen funciones globales para calcular count(contar) . Debería ser precavido con las consultas de la forma DELETE FROM classname. mientras que having selecciona grupos de filas después de los grupos y entonces se computan las funciones de conjunto. USO DE FUNCIONES DE CONJUNTO Como otros lenguajes de consulta. Por ejemplo. Es importante comprender la relación entre las funciones de conjunto y las cláusulas SQL where y having. Sin una cualificación. las cláusulas having siempre contienen funciones de conjunto. temp_min = temp_min .de bases de datos W1 y W2 se conocen como range variables (variables de rango).sum (sumar). pero no merece la pena. podemos probar SELECT ciudad FROM clima WHERE temp_min = max(temp_min). . dejándola vacía.2. Suponga que descubre que la lectura de las temperaturas el 28 de Noviembre fue 2 grados superior a la temperatura real. Como ejemplo podemos buscar la mínima temperatura en cualquier parte con SELECT max(temp_min) FROM clima. usted puede escribir una cláusula having que no use funciones de grupo. Por otra parte. Una función de conjunto calcula un único resultado a partir de múltiples filas de entrada. max (máximo) and min (mínimo) sobre un conjunto de instancias. La misma condición podría ser usada de un modo más eficaz con where). De este modo la cláusula where puede no contener funciones de conjunto puesto que no tiene sentido intentar usar una función de conjunto para determinar qué fila será la entrada de la función. PostgreSQL soporta funciones de conjunto. (Estrictamente hablando. Todos los registros de clima pertenecientes a Puebla son borrados. BORRADOS Los borrados se hacen usando el comando delete: DELETE FROM clima WHERE ciudad = ’Puebla’. delete simplemente borrará todas las instancias de la clase dada. ACTUALIZACIONES Puede actualizar instancias existentes usando el comando update. Una consulta puede contener un número arbitrario de nombres de clases y sustituciones. Puede actualizar los datos de esta manera: UPDATE clima SET temp_max = temp_max . avg (media).

pero no funcionará debido a que la función max() no puede ser usada en where. la clase capitales debería heredar de ciudades. HERENCIA Creemos dos clases. En este caso usando una subseleccion: SELECT ciudad FROM clima WHERE temp_min = (SELECT max(temp_min) FROM clima). Lo que ya es correcto. max(temp_min) FROM clima GROUP BY ciudad. CARACTERÍSTICAS AVANZADAS DE SQL EN POSTGRES Habiendo cubierto los aspectos básicos de Postgre SQL para acceder a los datos. max(temp_min) FROM clima WHERE ciudad like ’P%’ GROUP BY ciudad HAVING min(temp_min) < 0.(in ft) ). Naturalmente. time travel (viaje en el tiempo) y valores no-atómicos de datos (atributos basados en vectores y conjuntos). Finalmente. . Podemos filtrar estas filas agrupadas usando having: SELECT ciudad. que nos da los mismos resultados. Sin embargo. las cuales son también ciudades. ya que no necesita funciones de conjunto. discutiremos ahora aquellas características de Postgres que los distinguen de los gestores de bases de datos convencionales. max(temp_min) FROM clima GROUP BY ciudad HAVING min(temp_min) < 0. si sólo nos interesan las ciudades cuyos nombres empiecen por ’P’. Tenga en cuenta que podemos aplicar la restricción del nombre de ciudad en where. que nos devuelve una fila por ciudad. deberíamos hacer : SELECT ciudad. debido a que evitamos hacer los cálculos de grupo para todas las filas que no pasan el filtro de where . pero de ciudades con temperaturas bajo cero. poblacion float. Estas características incluyen herencia. Por ejemplo. podemos replantar la consulta para llevar a cabo lo que buscamos. ya que la subselección es una operación independiente que calcula su propia función de grupo sin importar lo que pase en el select exterior. Esto es más eficaz que añadir la restricción a having. La clase capitales contiene las capitales de los estados. Las funciones de grupo son también muy útiles combinándolas con cláusulas group by. CREATE TABLE ciudades ( nombre text. podemos obtener la temperatura mínima tomada en cada ciudad con: SELECT ciudad. altitud int .

ciudades. un tipo nativo de Postgres para cadenas ASCII de longitud variable. and>up and> and delete) brindan soporte a esta notación de “*” al igual que otros como alter. para encontrar los nombres de todas las ciudades.nombre. VALORES NO-ATÓMICOS Uno de los principios del modelo relacional es que los atributos de una relación son atómicos Postgres no posee esta restricción. El tipo del atributo nombre es text. y una consulta puede hacer referencia tanto a todas las instancias de una clase como a todas las instancias de una clase y sus descendientes. una instancia de capitales hereda todos los atributos (nombre. +-------+-------+ |nombre | altitud | +-------+-------+ |Las Vegas | 2174 | +-------+-------+ |Mariposa | 1953 | +-------+-------+ Por otro lado. los atributos pueden contener sub-valores a los que puede . un tipo de datos. Nota: La jerarquía de la herencia es un gráfico acíclico dirigido. altitud FROM ciudades WHERE altitud > 500.CREATE TABLE capitales ( estado char(2) ) INHERITS (ciudades). una clase puede heredar de ninguna o varias otras clases. la consulta es: SELECT c. incluídas las capitales estatales. para números de punto flotante de doble precisión. En Postgres. también nativo de Postgres . que estén situadas a una altitud de 500 o más pies. Por ejemplo. la siguiente consulta encuentra todas aquellas ciudades que están situadas a un altura de 500 o más pies: SELECT nombre.altitud FROM ciudades* c WHERE c. c. que muestra a qué estado pertenecen. En este caso. which returns: +-------+-------+ |nombre | altitud | +-------+-------+ |Las Vegas | 2174 | +-------+-------+ |Mariposa | 1953 | +-------+-------+ |Madison | 845 | +-------+-------+ Aquí el “*” después de ciudades indica que la consulta debe realizarse sobre ciudades y todas las clases que estén por debajo de ella en la jerarquía de la herencia.altitud > 500. poblacion y altitud) de su padre. El tipo del atributo población es float. Muchos de los comandos que ya hemos discutido (select. estado. La clase capitales tiene un atributo extra.

pago_por_quincena[2]. INSERT INTO SAL_EMP VALUES (’Carol’. INSERT INTO SAL_EMP VALUES (’Bill’. Por ejemplo. {"entrevista"}}’). 10000. VECTORES Postgres permite que los atributos de una instancia sean definidos como vectores multidimensionales de longitud fija o variable. un vector de n elementos comienza con vector[1] y termina con vector[n]. 25000}’. ’{10000. Ahora podemos ejecutar algunas consultas sobre SAL_EMP. "lunch"}. Esta consulta devuelve los nombres de los empleados cuyos pagos han cambiado en el segundo trimestre: SELECT name FROM SAL_EMP WHERE SAL_EMP. se pueden crear atributos que sean vectores de alguno de los tipos base. ’{{"platica".pago_por_quincena[3] FROM SAL_EMP. esto no es distinto a la sintaxis para inicializar estructuras. 25000. +----+ |nombre | +----+ |Carol | +----+ La siguiente consulta recupera el pago del tercer trimestre de todos los empleados: SELECT SAL_EMP. Puede crear vectores de cualquiera de los tipos base o de tipos definidos por el usuario. CREATE TABLE SAL_EMP ( nombre text. 25000.accederse desde el lenguaje de consulta. La consulta de arriba creará una clase llamada SAL_EMP con una cadena del tipo text (nombre). pago_por_quincena int4[].un vector unidimensional del tipo int4 (pago_por_quincena). creemos primero una clase con vectores de tipos base. +----------+ |pago_por_quincena | +----------+ . {}}’). 10000}’. Si usted conoce C. agenda text[][] ). el cual representa el salario trimestral del empleado y un vector bidimensional del tipo text (agenda). ’{{"entrevista".pago_por_quincena[1] <> SAL_EMP. 10000. Primero mostramos como acceder a un solo elemento del vector por vez. Ahora realizamos algunos INSERT. Para ilustrar su uso. note que cuando agregamos valores a un vector. "consulta"}. ’{20000. encerramos los valores entre llaves y los separamos mediante comas. que representa la agenda semanal del empleado. Postgres utiliza de forma predeterminada la convención de vectores "basados en uno" – es decir.

|10000 | +----------+ |25000 | +----------+ También podemos acceder a cualquier porción de un vector. SELECT SAL_EMP.{""}} | +-------------+ MÁS CARACTERÍSTICAS AVANZADAS Postgres posee muchas características que no se han visto en este tutorial. .nombre = ’Bill’. Esta consulta recupera el primer item de la agenda de Bill para los primeros dos días de la semana. o subvectores. +-------------+ |agenda | +-------------+ |{{"entrevista"}. el cual ha sido orientado hacia usuarios nuevos de SQL.agenda[1:2][1:1] FROM SAL_EMP WHERE SAL_EMP. Las mencionadas características se discuten tanto en la Guía del Usuario como en la del Programador.

The PostgreSQL Global Development Group.org/wiki/Development_Articles http://wiki.archonet.html http://www.postgresql. Editado por Thomas Lockhart.postgresql.com/ppbook/ http://www.postgresql. Editado por Thomas Lockhart.org/docs/books/ http://wiki. The Tutorial . The User’s Guide . The PostgreSQL Global Development Group.html The PostgreSQL Tutorial Introduction .commandprompt.org/docs/books/awbook.postgresql. 1998-10-01.com/pgdocs/pgnotes. 1998-10-01. The PostgreSQL User’s Guide .org/wiki/Database_Administration_and_Maintenance http://wiki.postgresql. .BIBLIOGRAFIA http://www.org/wiki/PostgreSQL_for_Enterprise_Business_Applications http://www.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->