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

Crear tabla de SQLite

Resumen :en este tutorial, aprenderá cómo crear nuevas tablas usando SQLite CREATE TABLE declaración usando varias opciones.

Introducción a SQLite CREATE TABLE declaración

Para crear una nueva tabla en SQLite, usa CREATE TABLE declaración usando la siguiente sintaxis:

CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
	column_1 data_type PRIMARY KEY,
   	column_2 data_type NOT NULL,
	column_3 data_type DEFAULT 0,
	table_constraints
) [WITHOUT ROWID];Code language: SQL (Structured Query Language) (sql)

En esta sintaxis:

  • Primero, especifique el nombre de la tabla que desea crear después de CREATE TABLE palabras clave El nombre de la tabla no puede comenzar con sqlite_ porque está reservado para el uso interno de SQLite.
  • Segundo, use IF NOT EXISTS opción para crear una nueva tabla si no existe. Intentando crear una tabla que ya existe sin usar IF NOT EXISTS la opción dará como resultado un error.
  • Tercero, opcionalmente especifique el schema_name al que pertenece la nueva tabla. El esquema puede ser la base de datos principal, temp base de datos o cualquier base de datos adjunta.
  • Cuarto, especifique la lista de columnas de la tabla. Cada columna tiene un nombre, un tipo de datos y la restricción de la columna. SQLite admite PRIMARY KEY , UNIQUE , NOT NULL y CHECK restricciones de columna.
  • Quinto, especifique las restricciones de la tabla como PRIMARY KEY , FOREIGN KEY , UNIQUE y CHECK restricciones.
  • Finalmente, opcionalmente use el WITHOUT ROWID opción. De forma predeterminada, una fila en una tabla tiene una columna implícita, que se denomina rowid , oid o _rowid_ columna. El rowid La columna almacena una clave de entero con signo de 64 bits que identifica de forma única la fila dentro de la tabla. Si no desea que SQLite cree el rowid columna, especifica el WITHOUT ROWID opción. Una tabla que contiene el rowid la columna se conoce como rowid mesa. Tenga en cuenta que WITHOUT ROWID La opción solo está disponible en SQLite 3.8.2 o posterior.

Tenga en cuenta que la clave principal de una tabla es una columna o un grupo de columnas que identifican de forma única cada fila de la tabla.

SQLite CREATE TABLE ejemplos

Suponga que tiene que administrar contactos usando SQLite.

Cada contacto tiene la siguiente información:

  • Nombre
  • Apellido
  • Correo electrónico
  • Teléfono

El requisito es que el correo electrónico y el teléfono deben ser únicos. Además, cada contacto pertenece a uno o varios grupos, y cada grupo puede tener cero o varios contactos.

En base a estos requisitos, se nos ocurrieron tres tablas:

  • Los contacts tabla que almacena información de contacto.
  • Los groups tabla que almacena información del grupo.
  • Los contact_groups tabla que almacena la relación entre contactos y grupos.

El siguiente diagrama de base de datos ilustra las tablas:contacts groups y contact_groups.

La siguiente instrucción crea los contacts mesa.

CREATE TABLE contacts (
	contact_id INTEGER PRIMARY KEY,
	first_name TEXT NOT NULL,
	last_name TEXT NOT NULL,
	email TEXT NOT NULL UNIQUE,
	phone TEXT NOT NULL UNIQUE
);Code language: SQL (Structured Query Language) (sql)

Pruébalo

El contact_id es la clave principal de los contacts mesa.

Debido a que la clave principal consta de una columna, puede usar la restricción de columna.

El first_name y last_name las columnas tienen TEXT clase de almacenamiento y estas columnas son NOT NULL . Significa que debe proporcionar valores cuando inserta o actualiza filas en los contacts mesa.

El correo electrónico y el teléfono son únicos, por lo tanto, usamos el UNIQUE restricción para cada columna.

La siguiente declaración crea los groups tabla:

CREATE TABLE groups (
   group_id INTEGER PRIMARY KEY,
   name TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Pruébalo

Los groups la tabla es bastante simple con dos columnas:group_id y first_name . El group_id columna es la columna de clave principal.

La siguiente declaración crea contact_groups tabla:

CREATE TABLE contact_groups(
   contact_id INTEGER,
   group_id INTEGER,
   PRIMARY KEY (contact_id, group_id),
   FOREIGN KEY (contact_id) 
      REFERENCES contacts (contact_id) 
         ON DELETE CASCADE 
         ON UPDATE NO ACTION,
   FOREIGN KEY (group_id) 
      REFERENCES groups (group_id) 
         ON DELETE CASCADE 
         ON UPDATE NO ACTION
);Code language: SQL (Structured Query Language) (sql)

Pruébalo

Los contact_groups la tabla tiene una clave principal que consta de dos columnas:contact_id y group_id .

Para agregar la restricción de clave principal de la tabla, use esta sintaxis:

PRIMARY KEY (contact_id, group_id)Code language: SQL (Structured Query Language) (sql)

Además, el contact_id y group_id son las claves foráneas. Por lo tanto, usa FOREIGN KEY restricción para definir una clave externa para cada columna.

FOREIGN KEY (contact_id) 
   REFERENCES contacts (contact_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id) 
    REFERENCES groups (group_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)

Tenga en cuenta que lo discutiremos en FOREIGN KEY restricción en detalle en el tutorial posterior.

En este tutorial, ha aprendido cómo crear una nueva tabla con varias opciones usando SQLite CREATE TABLE declaración.