Title: PostgreSQL
1PostgreSQL
2Historia de PostgreSQL
- Es una base de datos de código abierto
- Su antecesor fue Ingres, desarrollado en Berkeley
(1977-1985) y fue una de las bases de datos para
servidor comercialmente más exitosas. - En 1996 cambia de nombre de Postres95 a PostreSQL.
3Iniciando una sesión
- PostgreSQL usa un modelo de comunicación
cliente/servidor. Esto significa que el servidor
está esperando las solicitudes de los clientes,
las procesa y regresa el resultado. - La interface psql permite interactuar con
PostgreSQL. - Para iniciar una sesión
- psql
- Para crear una base de datos
- create database test
- \q para salir de PostgreSQL
- Para conectarse a una base de datos hay que
teclear - psql test
- En este caso test es el nombre de la base de
datos, pero puede ser cualquier otro. - Hay que diferenciar entre mayúsculas y minúsculas
4Controlando una sesión
- Una vez conectados al servidor PostgreSQL,
teclear lo siguiente - testgtSELECT CURRENT_USER
- Esto debe mostar el login name bajo la línea
punteada. - La línea testgt indica que el servidor está
esperando el siguiente query. - Teclear SELECT CURRENT_TIMESTAMP
- Esto debe mostrar la fecha y la hora actual.
5Query multi-línea
- En psql los comandos se completan cuando ponemos
un ó \g. - Por ejemplo
- testgt SELECT
- test-gt 1 3
- test -gt Esto debe responder con un 4
- Hay que notar que el prompt cambia de gt a -gt
para indicar que aún no finaliza el query. - PostgreSQL no le importa si los queries están en
mayúsculas o en minúsculas. - Por claridad se recomienda escribir palabras
especiales en mayúsculas. - Con las teclas de las flechas derecha e izquierda
puedes recorrer lo que escribes, con las flechas
arriba y abajo recuperar líneas previamente
escritas.
6Query buffer y help
- Se puede teclear indefinidamente, hasta que se
use el punto y coma o la diagonal invertida-g.
Todo esto se irá guardando en el query buffer. - Si se teclea \p, se puede ver todo lo acumulado
en el query buffer. - Para borrar el buffer se teclea \r.
- \? Imprime todos los comandos que inician con
diagonal invertida - Para salir de una sesión usar \q.
7Comandos básicos en SQL
- CREATE TABLE crear una tabla
- INSERT INTO insertar datos en una tabla
- SELECT desplegar datos
- Renglones específicos con WHERE
- DELETE remover datos
- UPDATE reemplazar ó actualizar datos
- ORDER BY ordenar el resultado
- DROP TABLE destruir una tabla
8Tipos más comunes de datos
categoría tipo descripción
Cadena de caracteres CHAR(long) VARCHAR(long) Long. fija de almacenam. Long. variable de almacenamiento
Número INTEGER FLOAT NUMERIC(precisión, decimal) Entero, /- 2 billones Punto decimal, 15 dígitos Número usando una definición de precisión y de número de decimales.
Fecha/hora DATE TIME TIMESTAMP Fecha Hora Fecha y hora
9test gt CREATE TABLE alltypes( test(gt estado
CHAR(3), test(gt nombre char (20), test(gt hijo
INTEGER, test(gt distancia FLOAT, test(gt
presupuesto NUMERIC(16,2), test(gt nacimiento
DATE, test(gt llegada TIME, test(gt inicio
TIMESTAMP) CREATE TABLE test gt
10INSERT INTO alltypes test -gt VALUES( test(gt
'MEX', test(gt 'Mauricio', test(gt 0, test(gt
10.7, test(gt 6289.08, test(gt '14/08/1984', test(gt
'745', test(gt '25/03/2007 103000') INSERT 0
1
11Usando valores NULL
- NULL es un valor especial que es válido en
cualquier columna. Lo usamos cuando se desconoce
el valor o cuando no aplica. - test gt INSERT INTO alltypes (estado, nombre)
- test -gt VALUES ('AGS', 'Gabriel')
- test gt select from alltypes
- En algunas columnas no se insertó valor, Qué
contienen? - test gt SELECT FROM alltypes WHERE hijo IS
NULL - Hay diferencia entre cero y NULL (hijo-gtMauricio
y Gabriel) - test gt SELECT FROM alltypes WHERE hijo ltgt 100
- Los que tienen NULL en la columna hijos no
aparecen - test gt INSERT INTO alltypes (estado, nombre)
- test -gt VALUES ('', 'Arturo') ES UNA CADENA
BLANK, LOS CAMPOS NUMERICOS NO PUEDEN SER BLANK - test -gt VALUES (NULL, 'José')
- test gt SELECT FROM alltypes WHERE estado IS
NULL - test gt SELECT FROM alltypes WHERE estado ''
12NULL vs blank
- Una columna tipo cadena de caracteres además de
ser NULL, también puede ser blank. Un campo
numérico no puede ser blank, solo NULL. - test gt INSERT INTO alltypes (estado, nombre)
- test -gt VALUES ('', 'Arturo')
- test -gt VALUES (NULL, 'José')
- test gt SELECT FROM alltypes WHERE estado IS
NULL - test gt SELECT FROM alltypes WHERE estado ''
13Valores Default
- Cuando no se da un valor a la columna se le
asigna un NULL. - Cuando creamos una tabla, con la palabra clave
DEFAULT en la columna, podemos dar un valor
cuando no se asigne alguno. - Por ejemplo, para la columna timestamp el valor
de default puede ser una variable interna de
PostgrSQL que regresa la fecha y la hora actual.
14Otro ejemplo
- testgt CREATE TABLE cuenta (
- test(gt nombre VARCHAR(20),
- test(gt balance NUMERIC(16,2) DEFAULT 0,
- test(gt activa CHAR(2) DEFAULT 'SI',
- test(gt creada TIMESTAMP DEFAULT
CURRENT_TIMESTAMP) - testgt \d cuenta
- testgt INSERT INTO cuenta (nombre)
- test-gt VALUES ('Palacio de Hierro')
- testgt SELECT FROM cuenta
15Ejemplo
- test gt ALTER TABLE alltypes ALTER inicio
- test -gt SET DEFAULT CURRENT_TIMESTAMP
- ALTER TABLE
- test gt INSERT INTO alltypes (estado, nombre)
- test -gt VALUES ('MEX', 'Melissa')
- INSERT 0 1
- test gt SELECT FROM alltypes