[Pgsql-ayuda] tabla en postgresql

Alvaro Herrera alvherre@dcc.uchile.cl
Sat, 18 Oct 2003 18:07:55 -0300


On Sat, Oct 18, 2003 at 08:18:34PM +0000, Katherine Gallardo Puelles wrote:
> hola, soy una novata en postgresql y  tengo una duda, tengo entendido que 
> las tablas se crean asi:

Hola novata.  Eres de la Sta. María?

> create table employee (Name char(20),Dept char(20),jobTitle char(20));
> pero no tengo claro cómo se hace para declarar que por ejemplo Name es la 
> clave primaria o la clave foránea... no entiendo
> ¿alguien me puede ayudar?

Primero que nada, no uses CHAR(n).  Mejor VARCHAR(n) o incluso TEXT.  La
razón es que CHAR(n) se rellena con espacios hasta completar los n
caracteres.  Esto es ineficiente e inconveniente.

Puedes usar \h en psql para obtener ayuda sobre la sintaxis SQL, por
ejemplo
alvh=> \h create table
Comando:     CREATE TABLE
Descripción: crear una nueva tabla
Sintaxis:
....

Un ejemplo bien artificial:

CREATE TABLE empleados (
	id SERIAL PRIMARY KEY,
	nombre TEXT NOT NULL
);

CREATE TABLE tipos_trabajos (
	id SERIAL PRIMARY KEY,
	descripcion TEXT NOT NULL
);

CREATE TABLE trabajos (
	tipo_trabajo INT NOT NULL,
	empleado_id INT NOT NULL REFERENCES empleados,
	fecha DATE NOT NULL,
	PRIMARY KEY (tipo_trabajo, fecha),
	CONSTRAINT clave_foranea_trabajos FOREIGN KEY (tipo_trabajo)
		REFERENCES tipos_trabajos
);

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Vivir y dejar de vivir son soluciones imaginarias.
La existencia está en otra parte" (Andre Breton)