Резюме :в този урок ще научите как да създавате нови таблици с помощта на 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 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)
Имайте предвид, че ще обсъдим в FOREIGN KEY ограничение в подробности в следващия урок.
В този урок научихте как да създадете нова таблица с различни опции с помощта на SQLite CREATE TABLE изявление.