Ограничения (constraints) — это правила, которые обеспечивают целостность данных в таблице. Давайте добавим ограничения NOT NULL
и UNIQUE
к новой таблице под названием users
.
-
Создайте таблицу с именем users
с ограничениями. Выполните эту команду в командной строке sqlite>
:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL,
age INTEGER
);
Эта команда создает таблицу с именем users
со следующими ограничениями:
username
не может быть NULL
и должен быть UNIQUE
.
email
не может быть NULL
.
Давайте разберем команду:
CREATE TABLE users
: Это указывает SQLite создать новую таблицу с именем users
.
id INTEGER PRIMARY KEY
: Это определяет столбец с именем id
с типом данных INTEGER
. Ограничение PRIMARY KEY
гарантирует, что каждое значение в этом столбце является уникальным и служит первичным идентификатором для каждой строки.
username TEXT NOT NULL UNIQUE
: Это определяет столбец с именем username
с типом данных TEXT
. Ограничение NOT NULL
гарантирует, что этот столбец не может быть пустым, а ограничение UNIQUE
гарантирует, что все значения в этом столбце различны.
email TEXT NOT NULL
: Это определяет столбец с именем email
с типом данных TEXT
. Ограничение NOT NULL
гарантирует, что этот столбец не может быть пустым.
age INTEGER
: Это определяет столбец с именем age
с типом данных INTEGER
.
-
Теперь давайте попробуем вставить некоторые данные, которые нарушают эти ограничения, чтобы увидеть, как они работают. Сначала попробуйте вставить пользователя без имени пользователя (username):
INSERT INTO users (email, age) VALUES ('[email protected]', 25);
Вы увидите ошибку, потому что столбец username
определен как NOT NULL
.
Ожидаемый вывод (Expected Output):
Error: NOT NULL constraint failed: users.username
Эта ошибка показывает, что SQLite применяет ограничение NOT NULL
к username
, предотвращая вставку.
-
Далее попробуйте вставить пользователя с повторяющимся именем пользователя (username). Сначала вставьте допустимого пользователя:
INSERT INTO users (username, email, age) VALUES ('johndoe', '[email protected]', 30);
Затем попробуйте вставить другого пользователя с тем же именем пользователя:
INSERT INTO users (username, email, age) VALUES ('johndoe', '[email protected]', 25);
Вы увидите ошибку, потому что столбец username
определен как UNIQUE
.
Ожидаемый вывод (Expected Output):
Error: UNIQUE constraint failed: users.username
Эта ошибка демонстрирует, что SQLite применяет ограничение UNIQUE
к username
, предотвращая повторяющиеся значения.