SQLite Crear, modificar y eliminar tabla con ejemplos

⚡ Resumen inteligente

SQLite La gestión de tablas se basa en tres comandos de definición de datos: CREATE TABLE para definir una tabla, ALTER TABLE para cambiarle el nombre o añadir y modificar columnas, y DROP TABLE para eliminarla por completo de la base de datos.

  • 📐 Crear tablas: La instrucción CREATE TABLE define el nombre de una tabla y sus columnas, y cada columna necesita un nombre y un tipo de datos.
  • 🛡️ Evite errores: Agregar IF NOT EXISTS a CREATE TABLE, o IF EXISTS a DROP TABLE, evita errores cuando una tabla ya existe o no existe.
  • ✏️ Modificar tablas: ALTER TABLE cambia el nombre de una tabla, agrega una columna y en la versión moderna SQLite Cambia el nombre o elimina una sola columna.
  • 🗑️ Eliminar tablas: El comando DROP TABLE elimina permanentemente una tabla, así como todas las filas e índices que le pertenecen.
  • 📑 Copiar tablas: La instrucción CREATE TABLE AS SELECT crea una nueva tabla a partir de las columnas y filas devueltas por una consulta.
  • 🤖 Asistencia de IA: Los asistentes de IA para convertir texto a SQL y GitHub Copilot generan sentencias CREATE, ALTER y DROP a partir de indicaciones en inglés sencillo.

SQLite Crear tabla de eliminación de modificaciones

Las secciones siguientes muestran cómo crear tablas, modificar su estructura y eliminar tablas en SQLite3 con ejemplos, que cubren los comandos CREATE TABLE, ALTER TABLE y DROP TABLE.

SQLite Crear una tabla

Sintaxis

A continuación se muestra la sintaxis de la declaración CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Para crear una tabla, debe utilizar la consulta “CREATE TABLE” de la siguiente manera:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

Dentro de los dos corchetes después del nombre de la tabla, se definen las columnas de la tabla, cada columna debe tener las siguientes propiedades:

  • Un nombre, el nombre de la columna debe ser único entre las columnas de la tabla.
  • Un tipo de dato: el tipo de dato de columna.
  • Restricciones de columna opcionales, como explicaremos en las secciones posteriores de este tutorial.

SQLite CREAR TABLA SI NO EXISTE

Cuando un script se ejecuta más de una vez, una simple instrucción CREATE TABLE falla si la tabla ya existe y se detiene con un error. SQLite Esto se soluciona con la cláusula opcional IF NOT EXISTS, que crea la tabla solo cuando no existe y no hace nada cuando ya está presente.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

La instrucción anterior nunca genera el error "la tabla ya existe", lo que permite mantenerla sin problemas al principio de un script de configuración o migración.

La misma idea funciona a la inversa cuando se elimina una tabla. Agregar IF EXISTS a DROP TABLE evita un error cuando la tabla ya no existe:

DROP TABLE IF EXISTS guru99;

Ambas cláusulas son comunes en los scripts automatizados, ya que permiten que el mismo archivo se ejecute repetidamente sin necesidad de limpieza manual entre ejecuciones.

Tabla de caída

Para eliminar una tabla, utilice el comando “DROP TABLE” seguido del nombre de la tabla, como se muestra a continuación:

DROP TABLE guru99;

Alterar la mesa

Puede utilizar el comando “ALTER TABLE” para renombrar una tabla de la siguiente manera:

ALTER TABLE guru99 RENAME TO guru100;

Para verificar que el nombre de la tabla ha cambiado, puede usar el comando “.tables” para mostrar la lista de tablas, y el nombre de la tabla debería cambiarse ahora como sigue:

SQLite Salida de .tables que muestra que la tabla fue renombrada de guru99 a guru100.

Como puede observar, el nombre de la tabla "guru99" cambia a "guru100" después del comando "alter table".

SQLite agregar columnas: usando el comando ALTER TABLE

También puede utilizar el comando “ALTER TABLE” para agregar columnas:

ALTER TABLE guru100 ADD COLUMN Age INT;

Esto modificará la tabla “guru100” y le agregará una nueva columna llamada Edad.

Si no vio ninguna salida, significa que la instrucción se ejecutó correctamente y se agregó la columna. La ausencia de salida significa que el cursor se posicionará después de “sqlite>” sin texto posterior, como se muestra a continuación:

SQLite La línea de comandos no muestra ninguna salida después de una ejecución exitosa de ALTER TABLE ADD COLUMN.

Sin embargo, para verificar que la columna se haya agregado, podemos usar el comando “.schema guru100”. Esto nos dará la definición de la tabla y debería ver la nueva columna que acabamos de agregar:

SQLite Salida del esquema guru100 que muestra la nueva columna Edad añadida a la tabla.

SQLite ALTER TABLE: Cambiar el nombre y eliminar una columna

Más allá de agregar una columna, las versiones modernas de SQLite También se puede cambiar el nombre de una sola columna y eliminar una. Cambiar el nombre de una columna ha estado disponible desde SQLite 3.25, y actualiza el nombre dentro de la definición de la tabla, así como en cada índice, disparador y vista que haga referencia a la columna.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Para eliminar una columna, SQLite 3.35 y versiones posteriores admiten una cláusula DROP COLUMN directa:

ALTER TABLE guru100 DROP COLUMN Age;

No se puede eliminar una columna cuando forma parte de una clave primaria, una restricción única o un índice. En versiones anteriores SQLite En las versiones que carecen de DROP COLUMN, la solución clásica consiste en crear una nueva tabla con las columnas deseadas, copiar las filas, eliminar la tabla antigua y, finalmente, cambiar el nombre de la nueva.

Cómo copiar una tabla en SQLite Usando CREATE TABLE AS SELECT

En ocasiones, es necesario tener una copia de una tabla, ya sea como copia de seguridad antes de realizar un cambio arriesgado o como punto de partida para una tabla nueva. SQLite Esto se construye en un solo paso con CREATE TABLE AS SELECT, que crea una nueva tabla cuyas columnas provienen de una consulta y la llena con las filas que devuelve dicha consulta.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

La nueva tabla “guru100_backup” recibe las mismas columnas y todas las filas de “guru100”. Para copiar solo algunas filas, agregue una cláusula WHERE a la consulta SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Es importante recordar que la instrucción CREATE TABLE AS SELECT copia los nombres, tipos y datos de las columnas, pero no las claves primarias, otras restricciones ni los índices. Deberá agregarlos manualmente a la nueva tabla si la copia debe aplicar las mismas reglas que la original.

SQLite Insertar valor en una tabla

Para insertar valores en una tabla, utilizamos la instrucción “INSERT INTO” de la siguiente manera:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Puede omitir los nombres de las columnas después del nombre de la tabla y escribirlo de la siguiente manera:

INSERT INTO Tablename VALUES(value1, value2, ….);

En tal caso, si omite los nombres de las columnas de las tablas, la cantidad de valores insertados debe ser exactamente la misma que la cantidad de columnas de la tabla. Luego, cada valor se insertará en la columna correspondiente. Por ejemplo, para la siguiente instrucción de inserción:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

El resultado de esta declaración será el siguiente:

SQLite Instrucción INSERT INTO que agrega una fila de valores a la tabla guru100.

  • El valor 1 se insertará en la columna “id”.
  • El valor 'Mike' se insertará en la columna “Nombre”, y
  • El valor 25 se insertará en la columna “Edad”.

INSERTAR... declaración de VALORES POR DEFECTO

Puede completar la tabla con los valores predeterminados para las columnas a la vez de la siguiente manera:

INSERT INTO Tablename DEFAULT VALUES;

Si una columna no permite valores nulos ni valores predeterminados, recibirá un error que indica que la restricción "NOT NULL falló" para esa columna. Como se muestra a continuación:

SQLite Error de restricción NOT NULL al insertar valores predeterminados.

Preguntas Frecuentes

No. SQLite No existe el comando TRUNCATE TABLE. Para vaciar una tabla, ejecute DELETE FROM table_name sin una cláusula WHERE y, a continuación, utilice VACUUM para recuperar el espacio en disco liberado. La estructura de la tabla y sus columnas se mantienen.

DELETE elimina filas de una tabla, pero conserva la tabla, sus columnas y su estructura para nuevos datos. DROP TABLE elimina la tabla completa, incluyendo su definición, índices y disparadores, por lo que la tabla deja de existir en la base de datos.

En el SQLite En la línea de comandos, el comando .tables.dot imprime el nombre de cada tabla. Desde SQL, consulte la tabla de esquema integrada con SELECT name FROM sqlite_master WHERE type = 'table'; que también funciona desde cualquier aplicación conectada a la base de datos.

Una tabla temporal se crea con CREATE TEMP TABLE o CREATE TEMPORARY TABLE. Solo es visible para la conexión de base de datos que la creó y se elimina automáticamente cuando se cierra dicha conexión, lo que la hace útil para almacenar resultados de consultas intermedias.

Sí. Una clave primaria es opcional en SQLite. Cuando omites uno, SQLite Aún conserva un identificador de fila oculto de 64 bits que identifica cada fila. Las restricciones de columna, como CLAVE PRIMARIA, ÚNICO y NO NULO, son opcionales al definir una tabla.

Por defecto no. SQLite utiliza ty dinámicoping con afinidad de tipo, por lo que una columna acepta valores de casi cualquier tipo independientemente de su tipo declarado. Para aplicar una comprobación estricta, cree la tabla como una tabla ESTRICTA, agregada en SQLite 3.37.

Sí. Los asistentes de IA para convertir texto a SQL transforman una descripción en lenguaje natural de tus datos en sentencias CREATE TABLE con columnas, tipos de datos y claves. La precisión mejora al proporcionarle al modelo tu esquema existente, ya que reutiliza los nombres reales de las tablas y columnas.

Sí. Copiloto de GitHub sugiere ALTER TABLE, DROP TABLE y otros SQLite declaraciones en línea en editores como VS CodeLee tus archivos de migración y las consultas existentes, por lo que sus sugerencias coinciden con los nombres reales de tus tablas y columnas.

Resumir este post con: