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 consqlite_
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 usarIF 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
yCHECK
restricciones de columna. - Quinto, especifique las restricciones de la tabla como
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
yCHECK
restricciones. - Finalmente, opcionalmente use el
WITHOUT ROWID
opción. De forma predeterminada, una fila en una tabla tiene una columna implícita, que se denominarowid
,oid
o_rowid_
columna. Elrowid
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 elrowid
columna, especifica elWITHOUT ROWID
opción. Una tabla que contiene elrowid
la columna se conoce comorowid
mesa. Tenga en cuenta queWITHOUT 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 ACTION
Code language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
Code 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.