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 TABLEpalabras clave El nombre de la tabla no puede comenzar consqlite_porque está reservado para el uso interno de SQLite. - Segundo, use
IF NOT EXISTSopción para crear una nueva tabla si no existe. Intentando crear una tabla que ya existe sin usarIF NOT EXISTSla opción dará como resultado un error. - Tercero, opcionalmente especifique el
schema_nameal que pertenece la nueva tabla. El esquema puede ser la base de datos principal,tempbase 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 NULLyCHECKrestricciones de columna. - Quinto, especifique las restricciones de la tabla como
PRIMARY KEY,FOREIGN KEY,UNIQUEyCHECKrestricciones. - Finalmente, opcionalmente use el
WITHOUT ROWIDopción. De forma predeterminada, una fila en una tabla tiene una columna implícita, que se denominarowid,oido_rowid_columna. ElrowidLa 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 elrowidcolumna, especifica elWITHOUT ROWIDopción. Una tabla que contiene elrowidla columna se conoce comorowidmesa. Tenga en cuenta queWITHOUT ROWIDLa 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
contactstabla que almacena información de contacto. - Los
groupstabla que almacena información del grupo. - Los
contact_groupstabla 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.