17:19
Ограничения целостности: NOT NULL, UNIQUE, CHECK, DEFAULT.

Курс по SQL

Урок 13: Ограничения целостности: NOT NULL, UNIQUE, CHECK, DEFAULT

В этом уроке мы рассмотрим ограничения целостности, которые помогают обеспечить правильность и надежность данных в таблицах базы данных. Мы изучим такие ограничения, как NOT NULL, UNIQUE, CHECK и DEFAULT, их синтаксис и примеры использования.

Ограничение NOT NULL

Ограничение NOT NULL указывает, что поле не может содержать значение NULL. Это означает, что при вставке или обновлении записи в таблице в это поле должно быть обязательно указано значение.

Пример использования NOT NULL

Рассмотрим пример создания таблицы «Студенты» с полями, которые не могут содержать значение NULL:

CREATE TABLE Студенты (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Имя VARCHAR(50) NOT NULL,
 Фамилия VARCHAR(50) NOT NULL,
 ДатаРождения DATE,
 Email VARCHAR(50) NOT NULL
);

Результат выполнения

Таблица "Студенты" создана. Поля "Имя", "Фамилия" и "Email" не могут содержать значение NULL.

Ограничение UNIQUE

Ограничение UNIQUE обеспечивает уникальность значений в одном или нескольких столбцах. Это означает, что значения в этих столбцах не могут повторяться.

Пример использования UNIQUE

Рассмотрим пример создания таблицы «Курсы» с уникальным полем «Название»:

CREATE TABLE Курсы (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Название VARCHAR(100) UNIQUE,
 Описание TEXT
);

Результат выполнения

Таблица "Курсы" создана. Поле "Название" должно содержать уникальные значения.

Ограничение CHECK

Ограничение CHECK используется для определения условий, которым должны удовлетворять значения в столбце. Это ограничение помогает обеспечить корректность данных в таблице.

Пример использования CHECK

Рассмотрим пример создания таблицы «Студенты» с ограничением CHECK, которое проверяет, что дата рождения студента не может быть в будущем:

CREATE TABLE Студенты (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Имя VARCHAR(50) NOT NULL,
 Фамилия VARCHAR(50) NOT NULL,
 ДатаРождения DATE CHECK (ДатаРождения <= CURDATE()),
 Email VARCHAR(50) NOT NULL
);

Результат выполнения

Таблица "Студенты" создана. Поле "ДатаРождения" не может содержать дату в будущем.

Ограничение DEFAULT

Ограничение DEFAULT используется для задания значения по умолчанию для столбца, если при вставке записи в таблицу значение для этого столбца не указано.

Пример использования DEFAULT

Рассмотрим пример создания таблицы «Студенты» с полем «ДатаРегистрации», для которого задано значение по умолчанию — текущая дата:

CREATE TABLE Студенты (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Имя VARCHAR(50) NOT NULL,
 Фамилия VARCHAR(50) NOT NULL,
 ДатаРождения DATE,
 Email VARCHAR(50) NOT NULL,
 ДатаРегистрации DATE DEFAULT CURDATE()
);

Результат выполнения

Таблица "Студенты" создана. Поле "ДатаРегистрации" будет содержать текущую дату по умолчанию.

Упражнения

Упражнение 1: Создание таблицы «Преподаватели» с ограничениями

Создайте таблицу «Преподаватели», которая будет содержать следующие поля: «ID», «Имя», «Фамилия», «Email». Поля «Имя» и «Фамилия» не могут содержать значение NULL, поле «Email» должно быть уникальным.

Решение:

CREATE TABLE Преподаватели (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Имя VARCHAR(50) NOT NULL,
 Фамилия VARCHAR(50) NOT NULL,
 Email VARCHAR(50) UNIQUE
);

Объяснение: Мы создали таблицу «Преподаватели» с полями «Имя» и «Фамилия», которые не могут содержать значение NULL, и уникальным полем «Email».

Упражнение 2: Создание таблицы «Курсы» с ограничением CHECK

Создайте таблицу «Курсы», которая будет содержать следующие поля: «ID», «Название», «Описание», «Длительность» (в днях). Ограничьте значение поля «Длительность» так, чтобы оно не могло быть меньше 1 дня.

Решение:

CREATE TABLE Курсы (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Название VARCHAR(100),
 Описание TEXT,
 Длительность INT CHECK (Длительность >= 1)
);

Объяснение: Мы создали таблицу «Курсы» с ограничением CHECK на поле «Длительность», чтобы его значение не могло быть меньше 1 дня.

Упражнение 3: Создание таблицы «Регистрации» с ограничением DEFAULT

Создайте таблицу «Регистрации», которая будет содержать следующие поля: «ID», «СтудентID», «КурсID», «ДатаРегистрации». Поле «ДатаРегистрации» должно по умолчанию содержать текущую дату.

Решение:

CREATE TABLE Регистрации (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 СтудентID INT,
 КурсID INT,
 ДатаРегистрации DATE DEFAULT CURDATE()
);

Объяснение: Мы создали таблицу «Регистрации» с полем «ДатаРегистрации», которое по умолчанию будет содержать текущую дату.

Категория: SQL | Просмотров: 97 | Добавил: Admin | Рейтинг: 1.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: