SQLite - Ограничения: Ваш гид по целостности данных
Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир ограничений SQLite. Не волнуйтесь, если вы новички в программировании - я буду вашим доброжелательным гидом, объясняя все шаг за шагом. К концу этого руководства вы будете ограничивать свои данные как профи!
Что такое ограничения?
Прежде чем мы углубимся, давайте поговорим о том, что такое ограничения. Представьте, что вы строите карточный домик. Вы хотите, чтобы он был устойчивым, верно? Ограничения в базах данных resemble правилами, которые вы соблюдаете, чтобы ваш карточный домик не fell. Они обеспечивают постоянство и надежность ваших данных.
Типы ограничений
SQLite предлагает несколько типов ограничений. Давайте рассмотрим каждый из них с интересными примерами!
1. Ограничение NOT NULL
Ограничение NOT NULL resemblesouncer в клубе - оно не позволяет пустые значения entering вашу базу данных.
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
);
В этом примере мы создаем таблицу для студентов. Поле name
и age
не могут быть оставлены пустыми. Если вы попытаетесь вставить студента без имени или возраста, SQLite вежливо (но твердо) откажется.
2. Ограничение DEFAULT
Ограничение DEFAULT resemblesваша мама, пакующая ваш обед - если вы забыли принести что-то, оно обеспечивает вас запасным вариантом по умолчанию.
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
product TEXT NOT NULL,
quantity INTEGER DEFAULT 1,
order_date TEXT DEFAULT CURRENT_DATE
);
Здесь, если вы не указываете количество при размещении заказа, оно предполагает, что вы хотите один товар. И если вы забыли добавить дату, используется сегодняшняя дата.
3. Ограничение UNIQUE
Ограничение UNIQUE resemblesназначение номеров мест в классе - два студента не могут сидеть на одном и том же месте.
CREATE TABLE users (
id INTEGER PRIMARY KEY,
username TEXT UNIQUE,
email TEXT UNIQUE
);
Это обеспечивает, чтобы два пользователя не могли иметь одно и то же имя пользователя или адрес электронной почты. Это идеально для предотвращения дублирующихся аккаунтов!
4. Ограничение PRIMARY KEY
Ограничение PRIMARY KEY resemblesназначение уникального ID-карты каждому студенту. Это особый тип ограничения UNIQUE, который также не может быть NULL.
CREATE TABLE books (
isbn TEXT PRIMARY KEY,
title TEXT NOT NULL,
author TEXT NOT NULL
);
В этом примере у каждой книги есть уникальный ISBN, который служит ее идентификатором.
5. Ограничение CHECK
Ограничение CHECK resemblesучитель, проверяющий вашу домашнюю работу - оно ensures, что ваши данные соответствуют определенным условиям.
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER CHECK(age >= 18),
salary REAL CHECK(salary > 0)
);
Это ensures, что все работники не младше 18 лет и имеют положительную зарплату. Никакой child labor или unpaid internships здесь!
6. Ограничение FOREIGN KEY
Ограничение FOREIGN KEY resemblesсоединение пазлов - оно связывает таблицы друг с другом на основе связанных данных.
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer_id INTEGER,
product TEXT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
Это ограничение ensures, что каждый customer_id
в таблице orders
соответствует id
в таблице customers
.
Изменение ограничений
Иногда вам может потребоваться изменить свои ограничения. Давайте посмотрим, как это сделать.
Добавление ограничений
Вы можете добавить ограничения к существующим таблицам с помощью команды ALTER TABLE:
ALTER TABLE students ADD CONSTRAINT age_check CHECK(age > 0);
Это добавляет проверку, чтобы все возраста были положительными числами.
Удаление ограничений
Удаление ограничений немного сложнее в SQLite. Вам нужно recreate таблицу без ограничения:
-- Шаг 1: Создайте новую таблицу без ограничения
CREATE TABLE new_students AS SELECT * FROM students;
-- Шаг 2: Удалите старую таблицу
DROP TABLE students;
-- Шаг 3: Переименуйте новую таблицу
ALTER TABLE new_students RENAME TO students;
Методы работы с ограничениями
Вот удобная таблица, резюмирующая методы, которые мы можем использовать с ограничениями:
Метод | Описание |
---|---|
NOT NULL | Обеспечивает, что столбец не может содержать NULL значение |
DEFAULT | Provides a default value for a column |
UNIQUE | Обеспечивает, что все значения в столбце различаются |
PRIMARY KEY | Уникально identifies each row/record in a database table |
CHECK | Обеспечивает, что все значения в столбце удовлетворяют определенным условиям |
FOREIGN KEY | Уникально identifies a row/record in another table |
Заключение
Поздравляю! Вы только что完成了 свой express курс по ограничениям SQLite. Помните, ограничения - это ваши друзья - они помогают поддерживать ваши данные чистыми, постоянными и надежными. По мере того, как вы continue свое путешествие в мир баз данных, вы найдете эти ограничения неоценимыми для поддержания целостности данных.
Всегда думайте о том, какие правила должны follow ваши данные, и используйте ограничения для enforcement этих правил. Это гораздо легче предотвратить попадание плохих данных в вашу базу данных, чем清理 их позже!
Продолжайте практиковаться, stay curious, и счастливого кодирования! ??
Credits: Image by storyset