SQLite - Ограничения: Ваш гид по целостности данных

Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир ограничений SQLite. Не волнуйтесь, если вы новички в программировании - я буду вашим доброжелательным гидом, объясняя все шаг за шагом. К концу этого руководства вы будете ограничивать свои данные как профи!

SQLite - Constraints

Что такое ограничения?

Прежде чем мы углубимся, давайте поговорим о том, что такое ограничения. Представьте, что вы строите карточный домик. Вы хотите, чтобы он был устойчивым, верно? Ограничения в базах данных 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