Semana 1: PostgreSQL [Aug. 20, 2011, 3:25 p.m.]
1. Lecturas
- Leer secciones "Empezando" y "El lenguaje SQL" de la traducción a español del tutorial de PostgreSQL disponible en http://www.arpug.com.ar/trac/wiki/tutorial.html
2. Ejercicios
Recordamos que es necesario tener PostgreSQL instalado para realizar estos ejercicios (ver conjunto de preguntas entre participantes), respondalos en un comentario a esta lectura:
- Indique la plataforma (procesador y sistema operativo) que está empleando y los pasos que siguió para instalar PostgreSQL.
-
Empleando psql, cree un usuario contactos para su base PostgreSQL con permiso para crear bases de datos. La forma exacta del comando variará de acuerdo a su plataforma, en adJ 4.8 emplee:
sudo su - _postgresql createuser -Upostgres -h/var/www/tmp contactos Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n
En Ubuntu 11.04 empleesudo su - postgres createuser -Upostgres contactos ¿Será el nuevo rol un superusuario? (s/n) n ¿Debe permitírsele al rol la creación de bases de datos? (s/n) s ¿Debe permitírsele al rol la creación de otros roles? (s/n) n
-
Cree una base de datos de nombre contactos cuyo dueño sea el usuario contactos. En adJ con:
createdb -h/var/www/tmp -E LATIN1 -U contactos contactos
En Ubuntu con:createdb -U contactos contactos
-
Empleando psql ingrese a su nueva base de datos y cree una tabla persona (una convención típica en nomenclatura de bases de datos es dejar el nombre de cada tabla en singular y sin espacios ni el caracter subrayado (_) --que se reserva para relaciones). Esa tabla debe tener una identificación autoincrementada y camposo como se muestra a continuación (parte de los campos de la tabla persona de SIVeL, ver http://sivel.cvs.sourceforge.net/viewvc/sivel/sivel/estructura.sql?revision=1.62&view=markup ):
CREATE SEQUENCE persona_seq; CREATE TABLE persona ( id INTEGER PRIMARY KEY DEFAULT(nextval('persona_seq')), nombres VARCHAR(100) NOT NULL, apellidos VARCHAR(100) NOT NULL, anionac INTEGER, mesnac INTEGER CHECK (mesnac IS NULL OR (mesnac>='1' AND mesnac<='12')), dianac INTEGER CHECK (dianac IS NULL OR (dianac>='1' AND (((mesnac='1' OR mesnac='3' OR mesnac='5' OR mesnac='7' OR mesnac='8' OR mesnac='10' OR mesnac='12') AND dianac<='31')) OR ((mesnac='4' OR mesnac='6' OR mesnac='9' OR mesnac='11') AND dianac<='30') OR (mesnac='2' AND dianac<='29'))), sexo CHAR(1) NOT NULL CHECK (sexo='S' OR sexo='F' OR sexo='M'), tipo_documento VARCHAR(2), numero_documento VARCHAR(50) );
- Inserte información de al menos 5 personas en la tabla recién creada. Note que no debe llenar el campo id porque este número proviene de una secuencia que lo asignará automáticamente.
- Realice consultas para a) extraer toda la información de personas con nombre "JUAN" b) nombre y sexo de todas las personas cuyo año de nacimiento no se conozca o sea anterior a 1980, c) extraer todos los códigos y numero_documento de personas cuyo campo tipo_documento sea CC.
- Opcional: Si desea tener la posibilidad de mantener más información de la hoja de vida de cada persona en su base de datos, por ejemplo sitios de estudio y de trabajo junto con el tiempo de estuvo en cada sitio, que otros campos o tablas considera que debe añadir a su base de datos? Cómo los puede añadir?
- Opcional: Revise la estructura de la base de datos de SIVeL y determine: a) problemas de nomenclatura de tablas, b) como agregar los campos latitud y longitud a las tablas departamento, municipio y clase, c) valores de dominio público de latitud y longitud para departamentos, municipios y clase de http://sivel.cvs.sourceforge.net/viewvc/sivel/sivel/datos-geo-col.sql?revision=1.13&view=markup
Publique dudas y ayudas como comentario a esta tarea.
3. Bibliografía
- Tutorial PostgreSQL. Grupo de Usuarios de PostgreSQL Argentina. http://www.arpug.com.ar/trac/wiki/tutorial.html. Consultado 2011
4. Términos y Condiciones Especiales
Este escrito se cede al dominio público de acuerdo a la legislación colombiana, agradeciendo se de crédito a Pasos de Jesús. 2011. Ver https://www.pasosdejesus.org/dominio_publico_colombia.html.