Volver a la lista de artículos Artículos
Lectura de 9 minutos

Cómo crear una tabla en SQL

La creación de tablas en bases de datos es una habilidad muy útil, y no sólo para ingenieros de software o administradores de bases de datos. Permite diseñar o modificar la estructura de una base de datos y almacenar datos relacionados entre sí. En este artículo, aprenderás qué es una tabla de base de datos, quién las crea y cómo utilizar la sintaxis del comando CREATE TABLE.

¿Qué es una tabla de base de datos?

Una base de datos relacional está formada por varias estructuras como tablas, vistas, procedimientos y triggers. El elemento principal de una base de datos es la tabla. Es una estructura que realmente almacena datos. En la mayoría de los casos, una base de datos contiene más de una tabla y las tablas están relacionadas entre sí (es decir, las tablas almacenan información relacionada, como el nombre, el color de los ojos y la altura de una persona).

La siguiente imagen muestra un ejemplo de base de datos para una tienda de equipos musicales en línea. (La imagen procede del blog Vertabelo; Vertabelo es una herramienta de modelado de bases de datos en línea). Observe que esta base de datos tiene varias tablas. Las líneas indican las relaciones entre las tablas:

Base de datos

Como ves, hay muchas tablas: category, instrument, manufacturer, y más. En una base de datos SQL, cada tabla tiene un nombre y almacena datos en filas y columnas. Cada fila almacena detalles sobre un objeto específico.

Por ejemplo, la tabla instrument almacena información sobre los instrumentos. Cada fila es un instrumento concreto: una fila puede almacenar información sobre una guitarra blanca comprada en "Tienda de música de Chicago"; otra fila puede almacenar información sobre un tambor de plata comprado en "En la tienda de Tom".

Los datos de cada fila deben ser atómicos (es decir, no pueden ser más pequeños o específicos), por lo que tenemos que dividirlos en columnas. Cada columna almacena un tipo de dato, como un color, un nombre, un tipo de instrumento o la tienda en la que se compró. A continuación se muestra una tabla de ejemplo con estas columnas y filas:

namecolortypestore
guitarwhitechordophoneMusic Shop in Chicago
trumpetgoldwindMusic Shop in Chicago
drumssilverpercussionIn Tom’s shop

El nombre de la tabla debe describir los datos almacenados en ella. También debe definir el tipo o tipos de datos utilizados en las columnas de la tabla cuando la cree. (Necesitas tener un permiso de CREATE TABLE para hacer todo esto, pero eso es otro artículo).

Si te interesa aprender a crear tablas en una base de datos, te recomiendo el tema Creación de estructuras de bases de datos en LearnSQL.es. Es una serie de cinco cursos interactivos que te enseñarán los detalles de la creación de tablas en SQL.

¿Quién crea las tablas?

Ya sabes lo que es una tabla, pero esto plantea otra pregunta: ¿quién crea las tablas en una base de datos? Varios grupos diferentes de personas pueden crear las tablas de la base de datos.

El primer grupo es el de los diseñadores de bases de datos. Definen la estructura de la base de datos: qué contienen las tablas, las relaciones entre ellas y cómo almacenan la información. Diseñan nuevas bases de datos para aplicaciones o servicios específicos.

Los administradores de bases de datos (DBA) se ocupan de los servidores de bases de datos. Mantienen, crean y modifican las bases de datos. La creación de nuevas tablas forma parte de su trabajo.

Los ingenieros de software y los desarrolladores de aplicaciones también crean tablas de bases de datos. Cuando crean una nueva aplicación, a menudo tienen que diseñar una base de datos para ella.

Los analistas de datos son otro grupo que a veces crea tablas. Utilizan las bases de datos para almacenar los datos que analizan y pueden utilizar tablas para guardar los resultados de sus análisis.

Por supuesto, el diseño de bases de datos y la creación de tablas pueden ser útiles para cualquiera que trabaje con datos o utilice bases de datos.

Cómo crear una tabla

Crear una tabla en una base de datos es muy sencillo. Sólo hay que utilizar la sintaxis SQL estándar para el comando CREATE TABLE:

CREATE TABLE table_name
( 
column1 data_type, 
column2 data_type,
 … 
);

Vamos a profundizar en lo que sucede aquí. Primero pones la palabra clave CREATE TABLE, seguida por el nombre de la tabla. Este nombre no debe ser una palabra clave SQL (como CREATE, LIKE o NULL). Debe ser único dentro de la base de datos - si una tabla se llama personotras tablas de la misma base de datos no pueden tener ese nombre- y describir los datos que se almacenan en la tabla. Puede leer más sobre cómo nombrar tablas en Naming Conventions in Database Modeling y An Unemotional Logical Look at SQL Server Naming Conventions.

Después del nombre, añades un par de paréntesis. Dentro de los paréntesis, se enumeran los nombres de las columnas con sus tipos de datos. Un tipo de datos define qué tipo de valores (números, texto, fechas, horas, etc.) se pueden almacenar en una columna. Los tipos de datos más populares son

  • INTEGER/INT almacena números enteros como -2567, 0 , 1 y 67.
  • VARCHAR almacena datos de texto. Se puede especificar el número máximo de caracteres así VARCHAR(n). Por ejemplo, varchar(4) puede almacenar los textos "Lisa", "Os" o "Gary".
  • CHAR es similar, pero en lugar de establecer la longitud máxima, se establece la longitud absoluta. Por ejemplo, CHAR(4) almacenará 'Os' como 'Os '. Tenga en cuenta los dos espacios adicionales, que hacen que la longitud sea de 4.
  • FLOAT almacena números de punto flotante, como -23,789, 23,5 y 78,0.
  • DECIMAL es similar a float en el sentido de que almacena números de punto decimal. Sin embargo, puede indicar el número total máximo de dígitos(p) y el número de dígitos después del decimal(s) de la siguiente manera DECIMAL(p,s). En otras palabras, decimal(4,2) puede almacenar 12.56, 1.56, 70. A diferencia de FLOAT, DECIMAL ofrece cálculos precisos. Utilízalo para almacenar valores monetarios.
  • TIME almacena datos de tiempo, por ejemplo, '12:34:50'.
  • DATE almacena datos de fecha, por ejemplo '2020-09-09'.
  • DATETIME almacena datos de fecha y hora en un solo campo, por ejemplo "2020-03-30 12:34:50".

Esta sintaxis básica de CREATE TABLE es la misma para la mayoría de los motores SQL; puede utilizarla en Oracle, SQL Server, MySQL o PostgreSQL.

Creación de una tabla de base de datos simple

Vamos a crear una tabla llamada customer que almacena detalles sobre los clientes de una empresa. Cada fila contendrá datos sobre un cliente específico. La tabla debe tener las columnas ID, last_name, first_name, y registration_date. Las columnas definidas en la tabla almacenan datos atómicos sobre cada cliente: su número de identificación, su apellido, su nombre y la fecha en que se registró como cliente.

Este es el comando que usaremos:

CREATE TABLE  customer
( 
ID int, 
last_name varchar(80),
first_name varchar(80),
registration_date date
);

Comenzamos con la palabra clave CREATE TABLE, tras la cual damos el nombre de la nueva tabla: customer. A continuación, entre paréntesis, damos los nombres de las columnas y los tipos de datos. La primera columna es ID, que almacena valores enteros como 1,2,3. La segunda y tercera columna, last_name y first_name, son valores de cadena; utilizaremos varchar(80) para ellas. Recuerda que el valor entre paréntesis indica el número máximo de caracteres de la cadena. Por último, la columna registration_date almacena la fecha en la que se registró la persona.

Los tipos de datos controlan el tipo de información que se puede introducir en una columna; no se pueden introducir letras o símbolos en una columna INT como ID. Puede encontrar más información sobre los tipos de datos en los cursos Los fundamentos de la creación de tablas en SQL y Tipos de datos en SQL.

Definición de Columnas sin Valores Vacíos/Repetidos

La sentencia CREATE TABLE mostrada en la última sección permite a los usuarios insertar valores no únicos o valores vacíos (NULLs) en un campo. Por ejemplo, puede tener el mismo valor ID para más de un cliente. Podemos cambiar este comportamiento creando una tabla con restricciones: añadiremos restricciones a ID para evitar NULLs y valores no únicos; también añadiremos restricciones en las columnas first_name y last_name para evitar NULLs en estas columnas. Echa un vistazo:

CREATE TABLE customer 
( 
ID int NOT NULL UNIQUE, 
last_name varchar(80) NOT NULL,
first_name varchar(80) NOT NULL,
registration_date date
);

SQL ofrece la palabra clave NOT NULL, que cuando se añade a la definición de la columna no permite valores vacíos (NULL) al insertar o modificar una fila. En nuestro ejemplo, no podemos omitir (o insertar un NULL) en las columnas first_name, last_name o ID. Deben tener un valor.

Otra palabra clave valiosa es UNIQUE. Añadiendo esta palabra clave, puede asegurarse de que todos los valores de esta columna son diferentes en cada fila. En nuestro ejemplo, la columna ID almacena valores únicos que identifican a cada cliente. Puede aprender más sobre los diferentes tipos de restricciones en el curso Restricciones SQL.

Creación de una tabla a partir de datos almacenados en otra tabla

Podemos crear una nueva tabla sin definir columnas: el proceso se basa en datos y columnas de otras tablas.

Utilice este método si desea crear tablas e insertar datos almacenados en columnas específicas en otra tabla. Esta es la sintaxis:

CREATE TABLE new_table_name
  SELECT col1, col2, … 
  FROM existing_table_name ;

Primero proporcionamos la palabra clave CREATE TABLE y el nombre de la nueva tabla. A continuación, utilizamos el comando SELECT. Esto permite especificar las columnas y la(s) tabla(s) desde las que se copian los datos a la nueva tabla. Los nombres y tipos de datos de estas columnas se definirán automáticamente en la nueva tabla.

A continuación, creamos la tabla history_instrument utilizando las columnas ID, name, color, y type de la instrument de la tabla:

CREATE TABLE history_instrument   
  SELECT ID, name, type  
  FROM instrument ;

Observe que la nueva tabla no almacena todas las columnas de la tabla instrument.

Más información sobre las estructuras de bases de datos

Si estás interesado en construir estructuras de bases de datos como tablas, hay mucho material en línea que puedes utilizar. En LearnSQL.es encontrarás artículos como Understanding Numerical Data Types in SQL y TRUNCATE TABLE vs. DELETE vs. DROP TABLE: Eliminación de Tablas y Datos en SQL para mejorar tus conocimientos de SQL. También puedes completar el tema Creación de la estructura de la base de datos en LearnSQL.es para obtener una visión general completa e interactiva.