sql >> Base de Datos >  >> RDS >> SQLite

Crear una tabla en SQLite

Para crear una tabla en SQLite, use CREATE TABLE declaración.

Esta declaración acepta el nombre de la tabla, los nombres de las columnas y sus definiciones, así como algunas otras opciones.

Ejemplo

Este es un ejemplo básico.

CREATE TABLE Products(
  ProductId INTEGER PRIMARY KEY AUTOINCREMENT, 
  ProductName TEXT NOT NULL,
  Price NUMERIC
);

Entonces, en este caso, Products es el nombre de la tabla y contiene tres columnas; ProductId , ProductName y Price .

En este ejemplo, he agregado el tipo de datos de cada columna, así como algunas restricciones, pero todas son opcionales.

Especifique el esquema

El nombre de la tabla puede (opcionalmente) tener el prefijo del nombre del esquema. Al hacer esto, el nombre del esquema debe ser main , temp , o el nombre de una base de datos adjunta.

Así que podría hacer esto en su lugar:

CREATE TABLE Store.Products(
  ProductId, 
  ProductName,
  Price
);

En este caso, Store es el nombre de la base de datos adjunta en la que quiero crear la tabla.

El nombre de la columna puede ir seguido del tipo de datos y cualquier restricción.

El tipo de datos es opcional

Sí, leyó bien:el tipo de datos es en realidad opcional.

SQLite usa escritura dinámica, por lo que el tipo de datos de un valor está asociado con el valor en sí, no con su contenedor (columna). Esto contrasta con la mayoría de los otros sistemas de bases de datos SQL, donde debe especificar el tipo de datos cuando crea la columna.

Así que podría hacer esto en su lugar:

CREATE TABLE Products(
  ProductId, 
  ProductName,
  Price
);

Restricciones y otras opciones

Tiene la opción de especificar cualquier restricción u otras opciones que le gustaría aplicar a cada columna. Estos incluyen lo siguiente:

  • DEFAULT cláusula. Esto especifica un valor predeterminado o una expresión para cada columna de la tabla.
  • El COLLATE cláusula para especificar el nombre de una secuencia de clasificación para usar como la secuencia de clasificación predeterminada para la columna. El valor predeterminado es BINARIO.
  • PRIMARY KEY cláusula. Opcionalmente, puede especificar que una columna sea una clave principal. Tanto las claves primarias de una sola columna como las compuestas (columnas múltiples) son compatibles con SQLite.
  • SQLite también es compatible con las restricciones UNIQUE, NOT NULL, CHECK y FOREIGN KEY.
  • Una restricción de columna generada (también denominada columna calculada). Estas son columnas cuyos valores son una función de otras columnas en la misma fila.
  • Si la tabla es un WITHOUT ROWID mesa. Esta es una técnica de optimización del rendimiento que omite la columna "rowid", que es una columna especial que utiliza SQLite de forma predeterminada. Para obtener más información sobre esta técnica, consulte la documentación de SQLite.

Mesas Temporales

Puede especificar que una tabla sea una tabla temporal utilizando el TEMP o TEMPORARY palabra clave.

Si usa una de estas palabras clave, debe insertarse entre CREATE y TABLE .

He aquí un ejemplo:

CREATE TEMP TABLE Products(
  ProductId, 
  ProductName,
  Price
);

También puede agregar el temp esquema si lo desea.

Consulte Cómo crear una tabla temporal para obtener más ejemplos de creación de tablas temporales en SQLite.

Crear una tabla a partir de otra tabla

También puede usar CREATE TABLE ... AS SELECT declaración para crear una nueva tabla basada en otra tabla. Cuando hace esto, la nueva tabla se completa con los datos de SELECT instrucción (que selecciona datos de otra tabla o tablas).

He aquí un ejemplo básico:

CREATE TABLE Store.Products2 AS 
SELECT * FROM Store.Products;

Este ejemplo crea una nueva tabla llamada Products2 y lo rellena con todos los datos de los Products mesa.

Todos los nombres de columna son los mismos que en la tabla original.

Es importante tener en cuenta que las tablas creadas de esta manera no tienen PRIMARY KEY ni restricciones de ningún tipo. Además, el valor predeterminado de cada columna es NULL . Además, la secuencia de clasificación predeterminada para cada columna de la nueva tabla es BINARIA.