Проектируй собственные таблицы с подходящими типами и ограничениями NOT NULL, UNIQUE и PRIMARY KEY, которые защищают твои данные.
Открыть этот урок в KodokonДо сих пор ты запрашивал готовые таблицы; профессиональный разработчик их проектирует. Хорошая схема отклоняет некорректные данные в момент вставки: это твоя первая линия обороны, ещё до всякого кода приложения. В sqliteonline.com или sqlite3 создай эту таблицу:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL UNIQUE,
username TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL
DEFAULT (datetime('now'))
);SQLite знает всего пять типов хранения: INTEGER, REAL, TEXT, BLOB и NULL. Даты хранятся в нём как TEXT в формате ISO (2026-07-04). В других СУБД (PostgreSQL, MySQL) ты объявил бы VARCHAR(255), TIMESTAMP или BOOLEAN: принцип тот же, меняются только названия типов. Теперь проверь свои ограничения:
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice');
INSERT INTO users (email, username)
VALUES ('alice@example.com', 'alice2');Первичный ключ идентифицирует каждую строку: никогда не NULL, никогда не дублируется, только один на таблицу. В SQLite у INTEGER PRIMARY KEY есть ценная особенность: столбец автоинкрементируется, когда ты не указываешь значение, как во вставках выше. В PostgreSQL ты написал бы GENERATED ALWAYS AS IDENTITY, в MySQL - AUTO_INCREMENT. Наконец, добавь бизнес-правило через CHECK:
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
sku TEXT NOT NULL UNIQUE,
price REAL NOT NULL CHECK (price >= 0)
);
INSERT INTO products (name, sku, price)
VALUES ('Keyboard', 'KB-01', -5);