Tutorial PgAdmin III

Embed Size (px)

Citation preview

  • 7/22/2019 Tutorial PgAdmin III

    1/27

    Tutorial pgAdmin III

    Este es un manual instructivo bsico (paso a paso) en espaol (castellano) para usuarios principiantes que deseenconocer la herramienta pgAdmin III. Cubre las principales caractersticas, pero no abarca las uncionalidades avan!adas(para ello se recomienda instalar el programa " consultar la documentaci#n en linea).

    $ara ingresar a pgAdmin III%

    En &indo's% men Inicio, Programas, PostgreSQL,pgAdmin 3 En inu*% men Programas, Programacin,pgAdmin III

    Ventana Principal

    +na ve! abierto pgAdmin III, la Ventana Principalmuestra la estructura de la base de datos%

    Consta de%

    arra de men con las distintas uncionalidades de la herramienta arra de herramientas (que actuarn sobre los ob-etos seleccionados) E*plorador de ob-etos% rbol con las bases de datos deinidas " su contenido $anel de detalle% solapa de $ropiedades, Estadsticas, ependencias " ependientes del ob-eto seleccionado

    $anel /0% sentencias /0generadas mediante ingeniera inversa sobre el ob-eto seleccionado

    $ara abrir una cone*i#n con un servidor de base de datos $ostgre/0, debe ubicarlo en el Explorador de objetos" hacerdoble clic1 o presionar la tecla Enter. /i no tiene registrado el servidor, deber agregarlo.

    Agregar Servidor

    $ara conectarse a un servidor, se debe agregar los datos del mismo mediante el bot#n Aadir una conexin a un servidor

    (cono simil enchue en la barra de herramientas), o la opci#n de menArcivo,Aadir Servidor, con lo que aparecerla pantalla de !ueva "egistracin de Servidor%

    http://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQL
  • 7/22/2019 Tutorial PgAdmin III

    2/27

    Completar%

    2ombre% denominaci#n de antasa de la base de datos /ervidor% direcci#n I$ o nombre de host $uerto% nmero de puerto (usualmente 3456) //% modo de encriptaci#n de la cone*i#n (requerir, preerir, permitir, desactivar, veriicar de autoridad certiicante,

    veriicar completo) ase de datos de 7antenimiento% cone*i#n inicial, contiene adminpac1 " esquema pgAgent 2ombre de usuario% rol de postrges para la cone*i#n

    Contrasea% clave del rol de postgres para la cone*i#n Almacenar contrasea (para pr#*imas sesiones). Importante% la contrasea se graba en un archivo de te*to8 9estaurar env% almacenar " recuperar el entorno de navegaci#n de pgAdmin 9estricci#n % limitar las bases de datos " esquemas que se muestran en pgAdmin /ervicio% parmetros para controlar el servicio (depende del /.:.) Conectar ahora: intenta la conexin inmediatamente

    Crear una base de datos

    $ara poder agregar tablas, es necesario crear primero una base de datos. $ara ello, ubicar el item #ases de datosen elExplorador de $bjetos, hacer clic1 derecho " seleccionar ;2ueva ase de atos; del men conte*tual o ir al men principal%Editar, !uevo $bjeto, !ueva #ase de datos, aparecer la pantalla de 2ueva ase de atos%

  • 7/22/2019 Tutorial PgAdmin III

    3/27

    Completar los campos principales%

    2ombre% denominaci#n de la base de datos (por simplicidad, evitar espacios, ma"sculas " acentos, separar congui#n ba-o ;?, A=I2@, &I2@636). er $reguntas>recuentes para ma"or

    inormaci#n.

    Presionar OKy se crear la base de datos.

    Agregar una tabla

    $ara agregar una tabla, ubicar en el Explorador de $bjetos, el esquema (schema) al cual pertenecer (por deecto en

    Es%uemas,public), " sobre el item &ablashacer clic1 derecho " seleccionar ;2ueva =abla; del men conte*tual o ir al menprincipal% Editar, !uevo $bjeto, !ueva &abla, aparecer la pantalla de 2ueva =abla%

    http://www.arpug.com.ar/trac/wiki/PreguntasFrecuenteshttp://www.arpug.com.ar/trac/wiki/PreguntasFrecuentes
  • 7/22/2019 Tutorial PgAdmin III

    4/27

    e esta solapa propiedades, completar%

    2ombre% denominaci#n de la tabla (por simplicidad, evitar espacios, ma"sculas " acentos, separar con gui#n ba-o;

  • 7/22/2019 Tutorial PgAdmin III

    5/27

    Completar%

    2ombre% denominaci#n de la columna (por simplicidad, evitar espacios, ma"sculas " acentos, separar con gui#nba-o ;

  • 7/22/2019 Tutorial PgAdmin III

    6/27

    +na ve! deinida la clave primaria, en la solapa "estricciones, seleccionar 'lave Ajena(oreing 1e") " presionarAadir,aparecer la pantalla para deinir una clave ornea%

    Completar% 2ombre% denominaci#n de la restricci#n (e-. mi

  • 7/22/2019 Tutorial PgAdmin III

    7/27

    Herramienta de ConsultaSQL

    Al seleccionar una base de datos, se habilita la herramienta de consulta, que permite e-ecutar consultas /0arbitrarias.

    $ara ingresar a dicha herramienta, presionar el bot#n Ejecutar consultasSQLarbritrarias(cono simil ho-a, sql, lapi!)de la barra de herramientas o dirigirse al men (erramientas, (erramienta de consulta *'trl+E,.

    >uncionalidades importantes%

    E-ecutar consulta (cono simil $la")

    E*portar datos consulta (cono simil $la" con isquete)% para guardar las ilas resultantes (ver siguiente)

    Anali!ar consulta (cono simil rbol)% para mostrar un EXPLAINgrico (e*plicaci#n visual de los nodos del

    plan de e-ecuci#n de la consulta)

    Constructor Grico de Consultas

    A su ve!, la herramienta de consulta posee una solapa para disear consultas visualmente (similar a Access " otrasherramientas), llamado 'onstructor -r./ico de 'onsultas%

    1. En el panel superior i!quierdo aparecern la base de datos, con sus esquemas, los cuales una ve! abierto (por e-.public) mostrar un arbol de las tablas disponibles.

    6. Al hacer doble clic1 en la tabla, aparecer en el panel superior derecho, con la posibilidad de arrastrar " unir suscampos con los de otra tabla, para construir las -untas (-oins). =ambiBn se debe seleccionar la columna a mostrarcomo resultado de la consulta.

    5. En el panel inerior, se encuentran las solapas de 'olumnas(para detallar las columnas de salida del SELECT),

    'ritero(para incluir condicionesWHERE

    ), $rdenamiento(ORDER

    ), "0untas(para especiicar los tipos deJOIN

    )

    http://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQLhttp://en.wikipedia.org/wiki/SQL
  • 7/22/2019 Tutorial PgAdmin III

    8/27

    Herramienta de !"portacin

    a herramienta de e*portaci#n permite e*portar datos de la herramienta de consulta. $ara ello, en la herramienta de

    consulta, presionar el bot#n Ejecute consulta1 escriba resultado en arcvio(cono simil pla" con disquete) de la barra deherramientas o mediante el men 'onsulta, Ejecutar a un arcivo%

    /e debe completar el nombre del archivo " dems datos, " una

    ve! generado dicho archivo, se puede abrir con cualquier planilla de clculo (numeric, :pen:iceD, E*cel).

    Herramienta de #esguardo

    a herramienta de resguardo (bac1up) llama a la herramienta de volcado de $ostgre/0 para crear copias de seguridadde los datos. $ara utili!arla, seleccionar la base de datos del Explorador de objetos, presionar bot#n derecho " elegir

    "esguardar(o men (erramientas, "esguardo)%

    Completar los campos principales%

    2ombre de archivo% >ormato% C:7$9E// (binario comprimido), $AI2 (te*tual sin comprimir), =A9 (archivador) :pciones%

    o lobs% incluir ob-etos grandeso Comandos I2/E9=s% generar sentencias I2/E9= en ve! de C:$

    $resionar $2" se generar el archivo con la copia de seguridad (bac1up) de los datos seleccionados.

  • 7/22/2019 Tutorial PgAdmin III

    9/27

    Herramienta de #estauracin

    a herramienta de restauraci#n (restore) llama a la herramienta hom#nima de $ostgre/0 para restaurar los datos desdecopias de seguridad (archivos de bac1up) $ara utili!arla, crear una base de datos en blanco (ver arriba), seleccionarla enel ;E*plorador de ob-etos1 presionar botn dereco elegir 9estaurar*o men4 Ferramientas1 9estaurar,5

    Completar los campos principales%

    2ombre de archivo% ubicaci#n de la copia de seguridad /olo datos% si solo se desea restaurar los datos, no el esquema de tablas :b-eto individual% si se quiere restaurar solo una tabla especica (ver solapa 'ontenido)

    $resionar $2" leer el archivo con la copia de seguridad (bac1up) restaurando los datos. En caso de B*ito, el bot#ncambiar a (eco, en caso de all# permanecer en $6para volver a restaurar (algunos de los allos son triviales "pueden ser ignorados, por e-., al crear un lengua-e que "a e*iste.)

    $ota% con esta herramienta solo se pueden restaurar copias de seguridad comprimidas (ormato C:7$9E//)

    Herramienta de %antenimiento

    Esta herramienta de mantenimiento (maintance) e-ecuta la tarea de reconstruir las estadsticas sobre la base de datos "tablas, limpiar los datos no utili!ados " reorgani!ar los ndices. $ara utili!arla, seleccionar la base de datos del Exploradorde objetos, presionar bot#n derecho " elegir 7antenimiento (o men (erramientas, 7antenimiento)%

  • 7/22/2019 Tutorial PgAdmin III

    10/27

    :pciones de mantenimiento%

    AC++7% limpie!a de las tuplas muertas A2AGE% anali!ar los datos para calcular estadsticas 9EI2EH% reorgani!ar los ndices

    :pciones de AC++7%

    >+% compactar la tabla . Cuidado% esta operaci#n bloquea la tabla, no es recomendada en producci#n. >9EEGE% congelamiento agresivo de las tuplas A2AGE% anali!ar los datos para calcular estadsticas

    $ara ms inormaci#n ver comandos AC++7"A2AGE

    Herramienta de !stado del Servidor

    a ventana Estado del Servidormostrar los usuarios actualmente conectados, bloqueos, transacciones preparadas " elarchivo de bitcora (logs) del servidor de base de datos seleccionado. $ara utili!arla, seleccionar el servidor en elExplorador de objetos, ir al men (erramientas, Estado del Servidor)%

    >uncionalidad%

    Cancelar consulta (cono )% enva la seal para cancelar la consulta seleccionada =erminar bac1end (cono )% enva la seal para inali!ar el proceso servidor seleccionado

    9E>E9E2CIA/http%JJ'''.arpug.com.arJtracJ'i1iJ$gAdmin+=I7A C:2/+=A 6@ IC.6K@@http%JJ'''.postgresql"a.com.arJinde*.phpDinicioL3K+=I7A C:2/+=A 6@ IC.6K@@

    http://www.arpug.com.ar/trac/wiki/sql-vacuum.htmlhttp://www.arpug.com.ar/trac/wiki/sql-analyze.htmlhttp://www.arpug.com.ar/trac/wiki/sql-analyze.htmlhttp://www.arpug.com.ar/trac/wiki/sql-analyze.htmlhttp://www.arpug.com.ar/trac/wiki/PgAdminhttp://www.postgresqlya.com.ar/index.php?inicio=50http://www.arpug.com.ar/trac/wiki/sql-vacuum.htmlhttp://www.arpug.com.ar/trac/wiki/sql-analyze.htmlhttp://www.arpug.com.ar/trac/wiki/PgAdminhttp://www.postgresqlya.com.ar/index.php?inicio=50
  • 7/22/2019 Tutorial PgAdmin III

    11/27

    - C&$'IG(#ACI)$ *!L S!#VI*+ ,P&STG#!S-

    9eerencia%http%JJtranslate.google.co.veJtranslateDhlLesMlangpairLenNesMuLhttp%JJ'''6.artsman.comJ/ot'areJersionOJ$ostres/etupInstructions$C4.html

    http%JJtranslate.google.co.veJtranslateDhlLesMlangpairLenNesMuLhttp%JJsqlmanager.netJenJproductsJpostgresqlJmanagerJdocumentationJhs@[email protected]+ltima consulta 66 dic 6K@@.

    Cuando usted es capa! de conectarse a la base de datos mediante el Administrador de =eatro, es el momento de a-ustaralgunos de los parmetros para $ostgre/0 que son especicos de su mquina " coniguraci#n.

    Inicie el administrador de base de datos $ III aplicaci#n de gesti#n. Esto se encuentra utili!ando el men InicioPQ$rogramasPQ $ostgre/0PQ Administraci#n $ III.

    /i usted recibe algunos conse-os tiles, haga clic en Cerrar para deshacerse de ellos.

    6. Faga clic en el servidor de la mquina " el inicio de sesi#n. +tilice la contrasea que cre# al instalar el servidor de basede datosFaga doble clic en el nombre del servidor segn el diagrama de la derecha

    Escriba la misma contrasea que ha sido utili!ado en otras partes de las instrucciones de instalaci#n. $ara la base dedatos de demostraci#n, la sugerencia ue maestro.

    $ara bases de datos de producci#n, esto 'll ser dierente.

    A continuaci#n, haga clic en ;Aceptar;

    http://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://www2.artsman.com/Software/Version7/PostGresSetupInstructionsPC4.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://www2.artsman.com/Software/Version7/PostGresSetupInstructionsPC4.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://sqlmanager.net/en/products/postgresql/manager/documentation/hs10210.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://sqlmanager.net/en/products/postgresql/manager/documentation/hs10210.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://www2.artsman.com/Software/Version7/PostGresSetupInstructionsPC4.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://www2.artsman.com/Software/Version7/PostGresSetupInstructionsPC4.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://sqlmanager.net/en/products/postgresql/manager/documentation/hs10210.htmlhttp://translate.google.co.ve/translate?hl=es&langpair=en%7Ces&u=http://sqlmanager.net/en/products/postgresql/manager/documentation/hs10210.html
  • 7/22/2019 Tutorial PgAdmin III

    12/27

    +sted debe ver una lista de ob-etos en el servidor.

    En la lnea ases de datos, debe haber (6) si ha importado la base de datos o crear su propia base de datos.

    5. Faga clic en la lnea de bases de datos para iniciar el siguiente paso de coniguraci#n.4. editar el archivo pg

  • 7/22/2019 Tutorial PgAdmin III

    13/27

    Editar el pg

  • 7/22/2019 Tutorial PgAdmin III

    14/27

    RRR Al inal, el ltimo archivo FA debe ser similar a la lista de la i!quierda. /e puede tener ms lneas en Bl para grandesrecintos con varias subredes o para acceso remoto al ordenador.

    +na ve! reali!ados los cambios, haga clic en uardar icono para guardar los cambios. En el men principal,seleccione ArchivoQQ Actuali!ar servidor.

    /e le solicitar que conirme los cambios. Faga clic en /

    3. Faga clic en el bot#n de cierre " se le preguntar si desea guardar los cambios.

    Faga clic en /.

    Editar el archivo postgesql.con

    a"a al men Ferramientas " seleccione Coniguraci#n del servidorPQ postgresql.con archivo

  • 7/22/2019 Tutorial PgAdmin III

    15/27

    A continuaci#n, aparecer una lista de propiedades del servidor de base de datos que pueden ser conigiured.

    $or desgracia, no estn en orden alabBtico, por lo que puede que tenga que despla!arse hacia arriba " hacia aba-o paraencontrar los que estn en la lista de aba-o. Femos tratado de ponerlos en el orden que usted los encontrar en el archivode coniguraci#n. (er RRRRR)

    2o cambie los parmetros distintos a los sugeridos, o que se le ha aconse-ado a hacerlo por un e*perto en bases de datos$ostgre/0.

    $ara cualquier a-uste que se trata de espacio en disco o la memoria, puede escribir @ , @KKK 7, @KKKKKKU " son elequivalente. 2o de-e un espacio entre el nmero " la cantidad de memoria en el , 7 o U otra postgres no se iniciar.

    $ara modiicar cualquiera de las lneas, va"a a encontrar " haga doble clic en Bl.

    a ma"ora de los parmetros le dir algo al respecto. os valores para editar son%

    El ;Activado; bandera. /i desea activar un parmetro en, haga clic en habilitada alor P es lo que desea establecer el parmetro. Fa" valores especicos para algunos de los parmetros como se

    describe en la tabla de aba-o Comentario P esto puede e*istir como una descripci#n de lo que es el parmetro.

  • 7/22/2019 Tutorial PgAdmin III

    16/27

    ????? @uscar 9 editar los parmetros de la lista a la derec7a 9 cambiar a los valores sugeridos5 si no 9a se estableceen ese valor+

    2ota% el me-or lugar para obtener los valores de la memoria del ;7onitor de actividad en el Administrador de tareas;. eaun e-emplo a continuaci#n de lo que esta pantalla se parece.

    $ara encontrarlo, haga clic derecho sobre la barra de tareas " Administrador de tareas ;pic1.

    listenaddresses % Este valor siempre debe L ;R;

    eectivecac7esi8e Este valor debe ser apro*imadamente la cantidad de disponibles de la memoria (siempreredondeando hacia aba-o con una precisi#n de 3K 7) como se ve en el Administrador de tareas o el 7onitor de Actividadsin $ostgre/0 corriendo. Es bueno tomar la lectura antes de instalar $ostgre/0.

    maintenance;orBmemEste valor debe ser de 3K 7 para equipos con @ de 9A7 o ms " 6K 7 para los quetienen menos. Introdu!ca los valores como ** 7.

    s7aredbuersEste valor debe ser un 6KP63V de la 9A7 total del sistema total. Encontrar este valor en el administradorde tareas como la memoria ph"iscal total. Introdu!ca los valores como ** 7.

    2ota% si est utili!ando el servidor de T4 bits, el m*imo actual de este parmetro parece ser @K64. /i lo haces ms queeso, por avor veriique que $ostgres se pondr en marcha cuando se reinicia el servidor. /i no es as, a-ustar esteparmetro para que sea @K64 o menos.

    tempbuersEste valor debe ser de 3K 7 para equipos con 6 de 9A7 o ms " 6K 7 para los que tienen menos.Introdu!ca los valores como ** 7.

    ;orBmemEste valor debe ser de 3K 7 para equipos con @ de 9A7 o ms " 6K 7 para los que tienen menos.Introdu!ca los valores como ** 7.

    +na ve! reali!ados los cambios, va"a al men Archivo " seleccionar Actuali!ar servidores (otra alternativa es utili!ar lalecha verde en la barra de herramientas que es el icono de la tercera desde la derecha).

    /e le pedir que conirme los cambios

  • 7/22/2019 Tutorial PgAdmin III

    17/27

    - I$*IC! *! ($A TA@LA+ ,Por Consola-

    $ara acilitar la obtenci#n de inormaci#n de una tabla se utili!an ndices.

    El indice de una tabla desempea la misma unci#n que el ndice de un libro% permite encontrar datos rpidamenteW en elcaso de las tablas, locali!a registros.

    +na tabla se inde*a por un campo (o varios).

    El ndice es un tipo de archivo con 6 entradas% un dato (un valor de algn campo de la tabla) " un puntero.

    +n ndice posibilita el acceso directo " rpido haciendo ms eiciente las bsquedas. /in ndice, se debe recorrersecuencialmente toda la tabla para encontrar un registro.

    El ob-etivo de un indice es acelerar la recuperaci#n de inormaci#n.

    a desventa-a es que consume espacio en el disco " las inserciones " borrados de registros son ms lentas.

    a inde*aci#n es una tBcnica que optimi!a el acceso a los datos, me-ora el rendimiento acelerando las consultas " otras

    operaciones. Es til cuando la tabla contiene miles de registros.

    os ndices se usan para varias operaciones%

    P para buscar registros rpidamente.

    P para recuperar registros de otras tablas empleando -oin.

    Es importante identiicar el o los campos por los que sera til crear un indice, aquellos campos por los cuales se reali!anoperaciones de bsqueda con recuencia.

    Fa" distintos tipos de ndices, a saber%

    @) primar" 1e"% es el que deinimos como clave primaria. os valores inde*ados deben ser nicos " adems no puedenser nulos. $ostgre/0 le da el nombre $9I7A9. +na tabla solamente puede tener una clave primaria.

    6) inde*% crea un indice comn, los valores no necesariamente son nicos " aceptan valores null. $odemos darle unnombre, si no se lo damos, se coloca uno por deecto. 1e" es sin#nimo de inde*. $uede haber varios por tabla.

    5) unique% crea un indice para los cuales los valores deben ser nicos " dierentes, aparece un mensa-e de error siintentamos agregar un registro con un valor "a e*istente. $ermite valores nulos " pueden deinirse varios por tabla.

    $odemos darle un nombre, si no se lo damos, se coloca uno por deecto.

    =odos los ndices pueden ser multicolumna, es decir, pueden estar ormados por ms de @ campo.

    En las siguientes lecciones aprenderemos sobre cada uno de ellos.

    os nombres de ndices aceptan todos los caracteres.

    +na tabla puede ser inde*ada por campos de tipo numBrico o de tipo caracter. =ambiBn se puede inde*ar por un campoque contenga valores 2+, e*cepto los $9I7A9.

  • 7/22/2019 Tutorial PgAdmin III

    18/27

    - TP&S *! $*IC!S ,C#!AT! D *#&P-

    i-imos que ha" 5 tipos de ndices%

    El ndice llamado primar" se crea automticamente cuando establecemos un campo como clave primaria.

    os valores inde*ados deben ser nicos " adems no pueden ser nulos. +na tabla solamente puede tener una claveprimaria. $uede ser multicolumna, es decir, pueden estar ormados por ms de un campo.

    amos a otro tipo de ndice comn. +n ndice comn se crea con create inde*, los valores no necesariamente son nicos" aceptan valores null. $uede haber varios por tabla.

    amos a traba-ar con nuestra tabla libros.

    create table libros( codigo int not null, titulo varchar(40), autor varchar(30), editorial varchar(15), precio decimal(6,2)

    );

    +n campo por el cual reali!amos consultas recuentemente es editorial, inde*ar la tabla por ese campo sera til.

    Creamos un ndice%

    create index !libros!editorial on libros(editorial);

    ebemos deinir un nombre para el ndice (en este caso utili!amos como nomenclatura el carater I, luego el nombre de latabla " inalmente el o los nombres del campo por el cual creamos el ndice. uego de la palabra clave on indicamos elnombre de la tabla " entre parBntesis el nombre del campo o los campos por el cual se inde*a.

    eamos otro tipo de ndice llamado nico. +n ndice nico se crea con create unique inde*, los valores deben sernicos " dierentes, aparece un mensa-e de error si intentamos agregar un registro con un valor "a e*istente. $ermitevalores nulos " pueden deinirse varios por tabla.

    Crearemos un ndice nico por los campos titulo " editorial%

    create uni"ue index !libros!tituloeditorial on libros(titulo,editorial);

    $ara eliminar un ndice usamos drop inde*. E-emplo%

    drop index !libros!editorial;drop index !libros!tituloeditorial;

    /e elimina un ndice con drop inde* seguido de su nombre.

    $odemos eliminar los ndices creados, pero no el creado automticamente con la clave primaria.

  • 7/22/2019 Tutorial PgAdmin III

    19/27

    - C&$S(LTA P CA%P&S+ ,Por Consola-

    Se coloca el comando EselectF5 luego el campo 6ue se desea consultar EromF 9 el nombre de la tabla+

    Sinta"is simple%select (2ombre del Campo(s)) rom (nombre del la =abla)

    !emplo.

    select titulo,autor,editorial,precio rom libros.

    Consultas con Predicados.

    select R rom librosW PPmuestra todos los registros.

    PPselect titulo rom librosW PP muestra los registros del campo asignado.

    PPselect distinct on (titulo, autor) precio,editorial rom librosW PP muestra solo los campos distintos a los que estan entre elparentesis.

    PPselect R rom libros 'here precio Q(select avg(precio) rom libros )WPP utili!ando avg

    &rdenar registrosPPselect titulo,autor,editorial,precio rom libros order b" titulo,autor,editorial,precio descW

    - S(@C&$S(LTAS

    +na subconsulta (subquer") es una sentencia select anidada en otra sentencia select, insert, update o delete (o enotra subconsulta).

    as subconsultas se emplean cuando una consulta es mu" comple-a, entonces se la divide en varios pasos l#gicos " seobtiene el resultado con una nica instrucci#n " cuando la consulta depende de los resultados de otra consulta.

    eneralmente, una subconsulta se puede reempla!ar por combinaciones " estas ltimas son ms eicientes.

    as subconsultas se EE2 incluir entre parBntesis.

    $uede haber subconsultas dentro de subconsultas.

    /e pueden emplear subconsultas%

    P en lugar de una e*presi#n, siempre que devuelvan un solo valor o una lista de valores.

    P que retornen un con-unto de registros de varios campos en lugar de una tabla o para obtener el mismo resultado que unacombinaci#n (-oin).

    Fa" tres tipos bsicos de subconsultas%

    @. las que retornan un solo valor escalar que se utili!a con un operador de comparaci#n o en lugar de una e*presi#n.6. las que retornan una lista de valores, se combinan con in, o los operadores an", some " all.5. los que testean la e*istencia con e*ists.

    9eglas a tener en cuenta al emplear subconsultas%

    P la lista de selecci#n de una subconsulta que va luego de un operador de comparaci#n puede incluir s#lo una e*presi#n ocampo (e*cepto si se emplea e*ists " in).

  • 7/22/2019 Tutorial PgAdmin III

    20/27

    P si el 'here de la consulta e*terior inclu"e un campo, este debe ser compatible con el campo en la lista de selecci#n dela subconsulta.

    P las subconsultas luego de un operador de comparaci#n (que no es seguido por an" o all) no pueden incluir clusulasgroup b" ni having.

    P distinct no puede usarse con subconsultas que inclu"an group b".

    P una subconsulta puede estar anidada dentro del 'here o having de una consulta e*terna o dentro de otra subconsulta.

    P si una tabla se nombra solamente en un subconsulta " no en la consulta e*terna, los campos no sern incluidos en lasalida (en la lista de selecci#n de la consulta e*terna).

    - S(@C&$S(LTAS C&%& !P#!SI)$

    +na subconsulta puede reempla!ar una e*presi#n. icha subconsulta debe devolver un valor escalar (o una lista devalores de un campo).

    as subconsultas que retornan un solo valor escalar se utili!a con un operador de comparaci#n o en lugar de una

    e*presi#n%

    select #$%&' rom *$+$ -here #$%&' '&./$'/ (+#'*$);

    select #$%&' '&./$'/ (+#'*$) rom *$+$;

    /i queremos saber el precio de un determinado libro " la dierencia con el precio del libro ms costoso, anteriormentedebamos averiguar en una consulta el precio del libro ms costoso " luego, en otra consulta, calcular la dierencia con elvalor del libro que solicitamos. $odemos conseguirlo en una sola sentencia combinando dos consultas%

    select titulo,precio, precio(select max(precio) rom libros) as dierencia rom libros -here titulono;

    En el e-emplo anterior se muestra el ttulo, el precio de un libro " la dierencia entre el precio del libro " el m*imo valor deprecio.

    0ueremos saber el ttulo, autor " precio del libro ms costoso%

    select titulo,autor, precio rom libros -here precio (select max(precio) rom libros);

    2ote que el campo del 'here de la consulta e*terior es compatible con el valor retornado por la e*presi#n de lasubconsulta.

    /e pueden emplear en select, insert, update " delete.

    $ara actuali!ar un registro empleando subconsulta la sinta*is bsica es la siguiente%

    update *$+$ set #$%&'.'$'/ -here #$%&' (+#'*$);

    $ara eliminar registros empleando subconsulta empleamos la siguiente sinta*is bsica%

  • 7/22/2019 Tutorial PgAdmin III

    21/27

    delete rom *$+$ -here #$%&'(+#'*$);

    9ecuerde que la lista de selecci#n de una subconsulta que va luego de un operador de comparaci#n puede incluir s#lo unae*presi#n o campo (e*cepto si se emplea e*ists o in).

    2o olvide que las subconsultas luego de un operador de comparaci#n (que no es seguido por an" o all) no puedenincluir clusulas group b".

    - S(@C&$S(LTAS C&%& !P#!SI)$

    +na subconsulta puede reempla!ar una e*presi#n. icha subconsulta debe devolver un valor escalar (o una lista devalores de un campo).

    as subconsultas que retornan un solo valor escalar se utili!a con un operador de comparaci#n o en lugar de unae*presi#n%

    select #$%&' rom *$+$ -here #$%&' '&./$'/ (+#'*$);

    select #$%&' '&./$'/ (+#'*$) rom *$+$;

    /i queremos saber el precio de un determinado libro " la dierencia con el precio del libro ms costoso, anteriormentedebamos averiguar en una consulta el precio del libro ms costoso " luego, en otra consulta, calcular la dierencia con elvalor del libro que solicitamos. $odemos conseguirlo en una sola sentencia combinando dos consultas%

    select titulo,precio, precio(select max(precio) rom libros) as dierencia rom libros -here titulono;

    En el e-emplo anterior se muestra el ttulo, el precio de un libro " la dierencia entre el precio del libro " el m*imo valor deprecio.

    0ueremos saber el ttulo, autor " precio del libro ms costoso%

    select titulo,autor, precio rom libros -here precio (select max(precio) rom libros);

    2ote que el campo del 'here de la consulta e*terior es compatible con el valor retornado por la e*presi#n de lasubconsulta.

    /e pueden emplear en select, insert, update " delete.

    $ara actuali!ar un registro empleando subconsulta la sinta*is bsica es la siguiente%

    update *$+$ set #$%&'.'$'/ -here #$%&' (+#'*$);

    $ara eliminar registros empleando subconsulta empleamos la siguiente sinta*is bsica%

    delete rom *$+$ -here #$%&'(+#'*$);

    9ecuerde que la lista de selecci#n de una subconsulta que va luego de un operador de comparaci#n puede incluir s#lo unae*presi#n o campo (e*cepto si se emplea e*ists o in).

  • 7/22/2019 Tutorial PgAdmin III

    22/27

    2o olvide que las subconsultas luego de un operador de comparaci#n (que no es seguido por an" o all) no puedenincluir clusulas group b".

    - S(@C&$S(LTAS A$D S&%! ALL

    an" " some son sin#nimos. Chequean si alguna ila de la lista resultado de una subconsulta se encuentra el valorespeciicado en la condici#n.

    Compara un valor escalar con los valores de un campo " devuelven true si la comparaci#n con cada valor de la lista de lasubconsulta es verdadera, sino alse.

    El tipo de datos que se comparan deben ser compatibles.

    a sinta*is bsica es%

    777$'/.#$$/ '&./$'/.#'%&$/$#' $8 (+#'*$);

    0ueremos saber los ttulos de los libros de orges que pertenecen a editoriales que han publicado tambiBn libros de

    9ichard ach, es decir, si los libros de orges coinciden con A+2A de las editoriales que public# libros de 9ichardach%

    select titulo rom libros -here autor+orges and codigoeditorial an9 (select e7codigo rom editoriales as e :oin libros as l on codigoeditoriale7codigo -here l7autor/ichard +ach);

    a consulta interna (subconsulta) retorna una lista de valores de un solo campo (puede e-ecutar la subconsulta como unaconsulta para probarla), luego, la consulta e*terna compara cada valor de codigoeditorial con cada valor de la listadevolviendo los ttulos de orges que coinciden.

    all tambiBn compara un valor escalar con una serie de valores. Chequea si =::/ los valores de la lista de la consultae*terna se encuentran en la lista de valores devuelta por la consulta interna.Sinta"is.

    $'/.#$$/ '&./$'/.#'%&$/$#' all (+#'*$);

    0ueremos saber si =:A/ las editoriales que publicaron libros de orges coinciden con =:A/ las editoriales quepublicaron libros de 9ichard ach%

    select titulo rom libros -here autor+orges and codigoeditorial all (select e7codigo rom editoriales as e :oin libros as l on codigoeditoriale7codigo -here l7autor/ichard +ach);

    a consulta interna (subconsulta) retorna una lista de valores de un solo campo (puede e-ecutar la subconsulta como unaconsulta para probarla), luego, la consulta e*terna compara cada valor de codigoeditorial con cada valor de la lista, si=::/ coinciden, devuelve los ttulos.

    eamos otro e-emplo con un operador de comparaci#n dierente%

  • 7/22/2019 Tutorial PgAdmin III

    23/27

    0ueremos saber si A+2 precio de los libros de orges es ma"or a A+2 precio de los libros de 9ichard ach%

    select titulo,precio rom libros -here autor+orges and precio an9 (select precio rom libros -here autor+ach);

    El precio de cada libro de orges es comparado con cada valor de la lista de valores retornada por la subconsultaW siA+2: cumple la condici#n, es decir, es ma"or a A+2 precio de 9ichard ach, se lista.

    eamos la dierencia si empleamos all en lugar de an"%

    select titulo,precio rom libros -here autorborges and precio all (select precio rom libros

    -here autorbach);

    El precio de cada libro de orges es comparado con cada valor de la lista de valores retornada por la subconsultaW sicumple la condici#n, es decir, si es ma"or a =::/ los precios de 9ichard ach (o al ma"or), se lista.

    Emplear L an" es lo mismo que emplear in.

    Emplear XQ all es lo mismo que emplear not in.

    9ecuerde que solamente las subconsultas luego de un operador de comparaci#n al cual es seguido por an" o all)pueden incluir clusulas group b".

    - S(@C&$S(LTAS C#!LACI&$A*AS

    +n almacBn almacena la inormaci#n de sus ventas en una tabla llamada acturas en la cual guarda el nmero de actura,la echa " el nombre del cliente " una tabla denominada detalles en la cual se almacenan los distintos itemscorrespondientes a cada actura% el nombre del artculo, el precio (unitario) " la cantidad./e necesita una lista de todas las acturas que inclu"a el nmero, la echa, el cliente, la cantidad de artculos comprados "el total%

    select 7

  • 7/22/2019 Tutorial PgAdmin III

    24/27

    En este caso, especicamente, la consulta e*terna pasa un valor de numero a la consulta interna. a consulta internatoma ese valor " determina si e*iste en detalles, si e*iste, la consulta interna devuelve la suma. El proceso se repite parael registro de la consulta e*terna, la consulta e*terna pasa otro numero a la consulta interna " $ostgre/0 repite laevaluaci#n.

    os operadores e*ists " not e*ists se emplean para determinar si ha" o no datos en una lista de valores.

    Estos operadores pueden emplearse con subconsultas correlacionadas para restringir el resultado de una consulta e*terior

    a los registros que cumplen la subconsulta (consulta interior). Estos operadores retornan true (si las subconsultasretornan registros) o alse (si las subconsultas no retornan registros).

    Cuando se coloca en una subconsulta el operador e*ists, $ostgre/0 anali!a si ha" datos que coinciden con lasubconsulta, no se devuelve ningn registro, es como un test de e*istenciaW $ostgre/0 termina la recuperaci#n deregistros cuando por lo menos un registro cumple la condici#n 'here de la subconsulta.

    a sinta*is bsica es la siguiente%

    ...-here exists (+#'*$);

    En este e-emplo se usa una subconsulta correlacionada con un operador e*ists en la clusula 'here para devolver unalista de clientes que compraron el artculo lapi!%

    select cliente,numero rom acturas as -here exists (select

  • 7/22/2019 Tutorial PgAdmin III

    25/27

    Con el siguiente -oin se obtiene el mismo resultado%

    select distinct l17titulo rom libros as l1 :oin libros as l2 on l17titulol17titulo and l17autorl27autor-here l17editorial>l27editorial;

    :tro e-emplo% uscamos todos los libros que tienen el mismo precio que El aleph empleando subconsulta%

    select titulo rom libros -here titulo>.l aleph and precio (select precio rom libros -here titulo.l aleph);

    a subconsulta retorna un solo valor.

    uscamos los libros cu"o precio supere el precio promedio de los libros por editorial%

    select l17titulo,l17editorial,l17precio rom libros as l1 -here l17precio (select avg(l27precio)

    rom libros as l2 -here l17editorial l27editorial);

    $or cada valor de l@, se evala la subconsulta, si el precio es ma"or que el promedio.

    - S(@C&$S(LTA !$ L(GA# *! ($A TA@LA

    /e pueden emplear subconsultas que retornen un con-unto de registros de varios campos en lugar de una tabla.

    /e la denomina tabla derivada " se coloca en la clusula rom para que la use un select e*terno.

    a tabla derivada debe ir entre parBntesis " tener un alias para poder reerenciarla. a sinta*is bsica es la siguiente%

    select $$de*$+$./$$7#$%&'rom (*$+$./$$) as $$;

    a tabla derivada es una subsonsulta. $odemos probar la consulta que retorna la tabla derivada " luego agregar el selecte*terno%

    select 7

  • 7/22/2019 Tutorial PgAdmin III

    26/27

    (select sum(d7precio

  • 7/22/2019 Tutorial PgAdmin III

    27/27

    +n proesor almacena las notas de sus alumnos en una tabla llamada alumnos. =iene otra tabla llamada aprobados,con algunos campos iguales a la tabla alumnos pero en ella solamente almacenar los alumnos que han aprobado elciclo.

    Ingresamos registros en la tabla aprobados seleccionando registros de la tabla alumnos%

    insert into aprobados (documento,nota) select (documento,nota) rom alumnos;

    Entonces, se puede insertar registros en una tabla con la salida devuelta por una consulta a otra tablaW para ello escribimosla consulta " le anteponemos insert into -unto al nombre de la tabla en la cual ingresaremos los registros " los camposque se cargarn (si se ingresan todos los campos no es necesario listarlos).

    a cantidad de columnas devueltas en la consulta debe ser la misma que la cantidad de campos a cargar en el insert.

    /e pueden insertar valores en una tabla con el resultado de una consulta que inclu"a cualquier tipo de -oin.

    9eerencia%

    http%JJ'''.postgresql"a.com.arJinde*.phpDinicioL3K+ltima consulta 65 dic 6K@@.

    http://www.postgresqlya.com.ar/index.php?inicio=50http://www.postgresqlya.com.ar/index.php?inicio=50