En las primeras lecciones sentamos las bases sobre bases de datos relacionales y PostgreSQL, aprendimos a trabajar con psql y pgAdmin, y también a crear y gestionar bases de datos. Ahora es el momento de pasar a crear el "material de construcción" principal de las bases de datos relacionales: las tablas. Justo en las tablas se guarda toda la info que luego podremos filtrar, ordenar o unir.
Para crear tablas en PostgreSQL usamos el comando CREATE TABLE. Este comando describe la estructura de la tabla: su nombre, las columnas y sus tipos de datos.
Estructura general del comando
Así se ve la sintaxis básica:
CREATE TABLE tabla (
columna1 tipo_de_dato restricciones,
columna2 tipo_de_dato restricciones,
...
);
Vamos por partes:
tabla– nombre de la tabla (por ejemplo,students).columna1– nombre de la columna (por ejemplo,id,name).tipo_de_dato– tipo de dato de la columna (por ejemplo,INTEGER,VARCHAR).restricciones– restricciones para los datos (por ejemplo,NOT NULL,PRIMARY KEY).
Ahora vamos a crear nuestra primera tabla.
Ejemplo de creación de una tabla
Escenario: en una base de datos de aprendizaje necesitamos guardar datos sobre estudiantes. Para eso creamos la tabla students con los campos:
id: identificador único del estudiante (se incrementa automáticamente);name: nombre del estudiante (cadena de hasta 100 caracteres);age: edad del estudiante (número entero positivo).
CREATE TABLE students (
id SERIAL PRIMARY KEY, -- id único del estudiante
name VARCHAR(100), -- nombre
age INTEGER -- edad
);
¿Qué pasa aquí?
id SERIAL PRIMARY KEY: se crea la columnaid, que genera automáticamente números únicos (1, 2, 3...) para cada fila. Además, es la clave primaria de la tabla.name VARCHAR(100): se crea una columna de texto, dondeVARCHAR(100)significa que la cadena puede tener hasta 100 caracteres.age INTEGER: se crea una columna numérica para guardar la edad.
Ahora, si ejecutamos esta consulta en psql o pgAdmin, la tabla students se creará.
Tipos de datos para columnas
Al crear una tabla es importante elegir el tipo de dato correcto para cada columna. PostgreSQL ofrece muchos tipos, pero vamos a empezar con los más populares.
| Tipo de dato | Descripción | Ejemplo de valores |
|---|---|---|
INTEGER |
Números enteros. Perfecto para edad, cantidades, identificadores. | 1, 42, 100 |
VARCHAR(n) |
Cadena de hasta n caracteres. Ideal para textos con longitud limitada. |
'Alice', 'Bob' |
TEXT |
Cadenas sin límite. Se usa para textos largos (por ejemplo, descripción de un producto). | 'Texto muy largo...' |
DATE |
Fecha sin hora. Se usa para guardar fechas de nacimiento, eventos. | 2023-10-12 |
BOOLEAN |
Tipo lógico: TRUE o FALSE. Se usa para flags (por ejemplo, hecho/no hecho). |
TRUE, FALSE |
Cómo elegir el tipo de dato adecuado
- Si vas a guardar números – usa
INTEGER. - Para cadenas con límite conocido de longitud – mejor
VARCHAR(n). - Para texto sin límites – usa
TEXT. - Fechas y horas guárdalas en
DATEoTIMESTAMP.
Ejemplo: creamos la tabla courses
Supón que en nuestra base de datos también necesitamos guardar info sobre cursos. Cada curso tiene:
id: identificador único;name: nombre del curso (cadena de hasta 100 caracteres);description: descripción del curso (texto largo);start_date: fecha de inicio del curso.
Código SQL:
CREATE TABLE courses (
id SERIAL PRIMARY KEY, -- id único del curso
name VARCHAR(100), -- nombre del curso
description TEXT, -- descripción
start_date DATE -- fecha de inicio
);
Ejercicio práctico
¡Ahora te toca a ti crear una tabla! Aquí va el ejercicio:
- Crea la tabla
teacherscon los campos:id: identificador único.name: nombre del profe (cadena de hasta 50 caracteres).subject: asignatura que da (cadena de hasta 50 caracteres).hire_date: fecha de contratación.
Ejemplo de código para ejecutar:
CREATE TABLE teachers (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
subject VARCHAR(50),
hire_date DATE
);
Después de ejecutarlo, usa el comando \d teachers en psql para asegurarte de que la tabla se creó.
Errores típicos al crear tablas
Cuando empiezas a trabajar con tablas, pueden aparecer errores. Aquí tienes algunas situaciones comunes:
Error en el nombre de la tabla o columna. En PostgreSQL los nombres no distinguen mayúsculas/minúsculas, pero si usas comillas " alrededor de los nombres, tienes que tener cuidado. Por ejemplo, CREATE TABLE "MyTable" crea la tabla "MyTable", pero mytable no se reconoce como su nombre.
Tipo de dato incorrecto. Si pones un tipo de dato que no existe, la consulta fallará.
CREATE TABLE example (
column1 TIPO_RARO
);
Esta consulta no se ejecutará porque TIPO_RARO no existe.
Olvidar el PRIMARY KEY. Si te olvidas de poner la clave primaria, la tabla se creará, pero identificar las filas será más complicado.
GO TO FULL VERSION