Aprendienddo Sql
Enviado por inazebe • 20 de Octubre de 2011 • 3.005 Palabras (13 Páginas) • 490 Visitas
Aprendiendo SQL con PostgreSQL
Introducción.
Una base de datos es el corazón de toda empresa, en ella se almacena y se gestiona toda la información que se necesita para operar y crecer. Las (buenas) bases de datos se manejan a través de SQL (Standar Query Lenguage) que es un conjunto de comandos a través de los cuales podemos insertar, borrar y editar la información de la base de datos además de hacer consultas (queries) sobre la información contenida. PostgreSQL (PgSQL) es un excelente y veloz gestor de base de datos de código abierto que posee características avanzadas como manejo de concurrencia, procedimientos almacenados e integridad referencial. Como en muchos otros casos en el mundo del software libre, uno se sorprende de que algo tan bueno como PostgreSQL pueda ser descargado y usado sin pagar nada.
Creando una nueva base de datos.
Para crear una nueva base de datos solo en necesario teclear el siguiente comando desde el intérprete de comandos (nota: no se debe escribir el signo de pesos, este representa el prompt del intérprete de comandos):
$createdb empresa
Una vez que hemos creado la base de datos podemos acceder a ella con el cliente de PgSQL, escribiendo el comando :
$psql empresa
Al acceder a la base de datos verá el mensaje de bienvenida de PgSQL, un prompt con el nombre de la base de datos en la que se encuentra, seguido de un signo de igual y un sostenido (o gato):
Bienvenido a psql 8.3.1, la terminal interactiva de PostgreSQL.
Digite: \copyright para ver los términos de distribución
\h para ayuda de órdenes SQL
\? para ayuda de órdenes psql
\g o punto y coma («;») para ejecutar la consulta
\q para salir
empresa=#
Tablas y campos
Como cualquier otra base de datos, PGSQL guarda los datos en tablas. Si usted ha usado una hoja de cálculo como Excel u OpenCalc usted ya posee el concepto de tabla: una serie de columnas y renglones en donde las intersecciones son llamadas “celdas”. De hecho, una hoja de cálculo puede considerarse un tipo de base de datos. La diferencia principal con una verdadera base de datos radica en que cada columna guarda un tipo de valor específico (números, decimales, fechas, alfanuméricos, ) y que en lugar de “celdas”, el lugar donde se guardan los datos son llamados “campos”. Por otra parte, a los renglones se les llama “registros”.
De este modo, para crear una tabla es necesario definir el tipo de información que se almacenara en cada columna. PgSQL posee varios tipos de datos, los más usados son:
● VARCHAR(n) Almacena cadena de caracteres de longitud variable, de longitud máxima n.
● CHAR(n). Almacena cadena de caracteres de longitud fija, de longitud n.
● INTEGER. Almacena números enteros como 2,33,107,15228, etc.
● NUMERIC. Almacena números enteros y decimales.
● DATE, almacena fechas.
● FLOAT: numérico con signo de doble palabra y coma flotante.
● TEXT. Guarda textos largos.
● SERIAL. Crea una secuencia y la asigna a una columna como llave de la tabla.
Para crear una tabla se usa el comando “CREATE TABLE nombre_de_tabla”. Por ejemplo, vamos a crear la tabla empleados. Copie las siguientes lineas en psql, tomando en cuenta que los espacios no son necesarios, solo se escriben para dar mayor claridad (Nota: Obviamente no se escribe empresa=#, ya que este es el prompt de psql):
empresa=# CREATE TABLE empleados (
empresa(# id serial, --Indice de la tabla
empresa(# nombre varchar(50), --nombre del empleado
empresa(# rfc varchar(20) UNIQUE, --registro de hacienda del empleado
empresa(# fecnac date, --fecha de nacimiento del empleado
empresa(# sucursal varchar(30), --sucursal donde labora
empresa(# sueldo money NOT NULL --Sueldo
empresa(# );
Al ejecutar la consulta anterior verá un mensaje indicando que se ha creado una tabla, una secuencia para el campo id y un índice para el campo rfc.
Al hacer uso de psql debemos finalizar los comandos con un punto y coma (;) de otro modo, si sólo damos enter, el comando no se ejecutará y el prompt cambiará a empresa(#, indicando que psql está en espera del punto y la coma para ejecutar el comando SQL.
Por convención (no sólo en PostgreSQL sino en todas las bases de datos) se usan las MAYÚSCULAS para escribir las palabras SQL en las sentencias, mientras que el nombre de los campos y las tablas se escriben en minúsculas, por ejemplo:
empresa=# SELECT * FROM empleados;
id | nombre | rfc | fecnac | sucursal | sueldo
----+--------+-----+--------+----------+--------
(0 filas)
Algunos diseñadores recomiendan nombrar a los campos de una tabla con el formato nbd_ntb_campo. Donde nbd es el nombre de la base de datos y ntb es el nombre de la tabla. Yo encuentro particularmente fastidioso usar este sistema de nombrado sobre todo en los queries de varias tablas. Sin embargo, es una buena practica hacerlo si usted esta trabajando con varias personas en un proyecto y desea evitar confusiones.
Dado que usamos el tipo “serial” al crear la columna id, se creará una secuencia para esta columna. El nombre de las secuencias se crea conjuntando el nombre de la tabla, mas el nombre de la columna, mas el postfijo “seq”. De modo que en este caso la secuencia se llamará empleados_id_seq.
Ya que hemos creado la tabla, teclearemos el comando “\dt” para visualizarla:
empresa=# \dt;
Listado de relaciones
Schema | Nombre | Tipo | Dueño
--------+-----------+-------+----------
public | empleados | tabla | postgres
(1 fila)
Este comando dt (describe tables) muestra las tablas (también llamadas “relaciones”) de la base de datos así como el dueño de la tabla (el usuario postgres). En este caso sólo vemos una tabla, la recién creada “empleados”. Para ver la descripción de una tabla específica utilice “\d nombre_de_tabla”. Por ejemplo:
empresa=# \d empleados;
Tabla «public.empleados»
Columna | Tipo | Modificadores
----------+-----------------------+---------------------------
id | integer | not null default nextval
nombre | character varying(50) |
rfc | character varying(20) |
fecnac | date |
sucursal | character varying(30) |
sueldo | money | not null
Índices:
«empleados_rfc_key» UNIQUE,
...