Резюме :в този урок ще научите как да създавате нови таблици с помощта на SQLite CREATE TABLE
изявление с помощта на различни опции.
Въведение в SQLite CREATE TABLE
изявление
За да създадете нова таблица в SQLite, използвате CREATE TABLE
израз, използвайки следния синтаксис:
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)
В този синтаксис:
- Първо посочете името на таблицата, която искате да създадете след
CREATE TABLE
ключови думи. Името на таблицата не може да започва сsqlite_
защото е запазен за вътрешна употреба на SQLite. - Второ, използвайте
IF NOT EXISTS
опция за създаване на нова таблица, ако не съществува. Опит за създаване на таблица, която вече съществува, без да се използваIF NOT EXISTS
опция ще доведе до грешка. - Трето, по желание посочете
schema_name
към която принадлежи новата маса. Схемата може да бъде основната база данни,temp
база данни или всяка прикачена база данни. - Четвърто, посочете списъка с колони на таблицата. Всяка колона има име, тип данни и ограничение на колоната. SQLite поддържа
PRIMARY KEY
,UNIQUE
,NOT NULL
иCHECK
ограничения в колоните. - Пето, посочете ограниченията на таблицата като
PRIMARY KEY
,FOREIGN KEY
,UNIQUE
иCHECK
ограничения. - Накрая, по желание използвайте
WITHOUT ROWID
опция. По подразбиране ред в таблица има имплицитна колона, която се наричаrowid
,oid
или_rowid_
колона.rowid
колоната съхранява 64-битов подписан целочислен ключ, който уникално идентифицира реда в таблицата. Ако не искате SQLite създаваrowid
колона, вие посочватеWITHOUT ROWID
опция. Таблица, която съдържаrowid
колоната е известна катоrowid
маса. Обърнете внимание, чеWITHOUT ROWID
опцията е налична само в SQLite 3.8.2 или по-нова версия.
Имайте предвид, че първичният ключ на таблица е колона или група от колони, които уникално идентифицират всеки ред в таблицата.
SQLite CREATE TABLE
примери
Да предположим, че трябва да управлявате контакти с помощта на SQLite.
Всеки контакт има следната информация:
- Име
- Фамилия
- Имейл
- Телефон
Изискването е имейлът и телефонът да са уникални. Освен това всеки контакт принадлежи към една или много групи и всяка група може да има нула или много контакти.
Въз основа на тези изисквания излязохме с три таблици:
contacts
таблица, която съхранява информация за контакт.groups
таблица, която съхранява информация за групата.contact_groups
таблица, която съхранява връзката между контакти и групи.
Следната диаграма на базата данни илюстрира таблици:contacts
groups
и contact_groups.
Следното изявление създава contacts
таблица.
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)
Опитайте го
contact_id
е първичният ключ на contacts
таблица.
Тъй като първичният ключ се състои от една колона, можете да използвате ограничението за колона.
first_name
и last_name
колоните имат TEXT
клас за съхранение и тези колони са NOT NULL
. Това означава, че трябва да предоставите стойности, когато вмъквате или актуализирате редове в contacts
таблица.
Имейлът и телефонът са уникални, затова използваме UNIQUE
ограничение за всяка колона.
Следното изявление създава groups
таблица:
CREATE TABLE groups (
group_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
Опитайте го
groups
таблицата е доста проста с две колони:group_id
и name
. group_id
колоната е колоната с първичен ключ.
Следното изявление създава contact_groups
таблица:
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)
Опитайте го
contact_groups
таблицата има първичен ключ, който се състои от две колони:contact_id
и group_id
.
За да добавите ограничението за първичен ключ на таблицата, използвате този синтаксис:
PRIMARY KEY (contact_id, group_id)
Code language: SQL (Structured Query Language) (sql)
В допълнение, contact_id
и group_id
са външните ключове. Следователно, вие използвате FOREIGN KEY
ограничение за дефиниране на външен ключ за всяка колона.
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)
Имайте предвид, че ще обсъдим в FOREIGN KEY
ограничение в подробности в следващия урок.
В този урок научихте как да създадете нова таблица с различни опции с помощта на SQLite CREATE TABLE
изявление.