Ограничения (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 ('test@example.com', 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', 'john.doe@example.com', 30);
Затем попробуйте вставить другого пользователя с тем же именем пользователя:
INSERT INTO users (username, email, age) VALUES ('johndoe', 'jane.doe@example.com', 25);
Вы увидите ошибку, потому что столбец username определен как UNIQUE.
Ожидаемый вывод (Expected Output):
Error: UNIQUE constraint failed: users.username
Эта ошибка демонстрирует, что SQLite применяет ограничение UNIQUE к username, предотвращая повторяющиеся значения.