За да създадете таблица в SQLite, използвайте CREATE TABLE
изявление.
Този израз приема името на таблицата, имената на колоните и техните дефиниции, както и някои други опции.
Пример
Ето един основен пример.
CREATE TABLE Products(
ProductId INTEGER PRIMARY KEY AUTOINCREMENT,
ProductName TEXT NOT NULL,
Price NUMERIC
);
Така че в този случай Products
е името на таблицата и съдържа три колони; ProductId
, ProductName
и Price
.
В този пример добавих типа данни на всяка колона, както и някои ограничения, но всички те са по избор.
Посочете схемата
Името на таблицата може (по избор) да бъде с префикс от името на схемата. Когато правите това, името на схемата трябва да бъде или main
, temp
или името на прикачена база данни.
Така че бих могъл да направя това вместо това:
CREATE TABLE Store.Products(
ProductId,
ProductName,
Price
);
В този случай Store
е името на прикачената база данни, в която искам да създам таблицата.
Името на колоната може да бъде последвано от типа данни и всякакви ограничения.
Типът на данни е по избор
Да, правилно сте прочели – типът данни всъщност не е задължителен.
SQLite използва динамично въвеждане и така типът данни на стойност се свързва със самата стойност, а не с нейния контейнер (колона). Това е в контраст с повечето други SQL системи за бази данни, където трябва да посочите типа данни, когато създавате колоната.
Така че бих могъл да направя това вместо това:
CREATE TABLE Products(
ProductId,
ProductName,
Price
);
Ограничения и други опции
Имате възможност да зададете всякакви ограничения или други опции, които искате да бъдат приложени към всяка колона. Те включват следното:
DEFAULT
клауза. Това определя стойност по подразбиране или израз за всяка колона в таблицата.COLLATE
клауза, за да посочите името на последователност за сортиране, която да се използва като последователност за съпоставяне по подразбиране за колоната. Стойността по подразбиране е BINARY.PRIMARY KEY
клауза. Можете по избор да посочите колоната да е първичен ключ. В SQLite се поддържат както единични колони, така и съставни (множество колони) първични ключове.- SQLite също поддържа ограничения UNIQUE, NOT NULL, CHECK и FOREIGN KEY.
- Ограничение за генерирана колона (наричано още изчислена колона). Това са колони, чиито стойности са функция на други колони в същия ред.
- Дали таблицата е
WITHOUT ROWID
маса. Това е техника за оптимизиране на производителността, която пропуска колоната „rowid“, която е специална колона, която SQLite използва по подразбиране. За повече информация относно тази техника вижте документацията на SQLite.
Временни таблици
Можете да посочите, че дадена таблица е временна таблица, като използвате или TEMP
или TEMPORARY
ключова дума.
Ако използвате една от тези ключови думи, те трябва да бъдат вмъкнати между CREATE
и TABLE
.
Ето един пример:
CREATE TEMP TABLE Products(
ProductId,
ProductName,
Price
);
Можете също да добавите temp
схема, ако желаете.
Вижте Как да създадете временна таблица за повече примери за създаване на временни таблици в SQLite.
Създайте таблица от друга таблица
Можете също да използвате CREATE TABLE ... AS SELECT
оператор за създаване на нова таблица на базата на друга таблица. Когато направите това, новата таблица се попълва с данните от SELECT
оператор (който избира данни от друга таблица или таблици).
Ето един основен пример:
CREATE TABLE Store.Products2 AS
SELECT * FROM Store.Products;
Този пример създава нова таблица, наречена Products2
и го попълва с всички данни от Products
маса.
Имената на всички колони са същите като в оригиналната таблица.
Важно е да се отбележи, че таблиците, създадени по този начин, нямат ПЪРВИЧЕН КЛЮЧ и никакви ограничения от какъвто и да е вид. Също така стойността по подразбиране на всяка колона е NULL
. Също така последователността за съпоставяне по подразбиране за всяка колона на новата таблица е ДВОИЧНА.