Продолжая тему моей предыдущей статьи об SQL, я приглашаю вас изучить предыдущий этап нашего обсуждения, который можно найти по следующей ссылке:



Содержание

Ограничения создания SQL

  1. НЕ НОЛЬ
  2. ОСНОВНОЙ КЛЮЧ
  3. ВНЕШНИЙ КЛЮЧ
  4. ПО УМОЛЧАНИЮ
  5. УНИКАЛЬНЫЙ
  6. ПРОВЕРЯТЬ

SQL-создание ограничений

Думайте об ограничениях SQL как о правилах, которые вы устанавливаете для данных вашей таблицы, чтобы обеспечить их правильное поведение. Вы можете установить эти правила двумя способами:

Ограничения можно указать при создании таблицы с помощью инструкции CREATE TABLE или после создания таблицы с помощью инструкции ALTER TABLE.

Синтаксис

CREATE TABLE table_name (
 column1 datatype constraint,
 column2 datatype constraint,
 column3 datatype constraint,
 ….
);

После того, как таблица построена. Кроме того, вы можете устанавливать правила даже после того, как головоломка собрана, например, определить новые правила после того, как вы собрали головоломку.

ALTER TABLE table_name
ADD CONSTRAINT constraint_type (column_name);

Почему ограничения важны:

  1. Точность данных. Ограничения гарантируют, что данные, входящие в вашу таблицу, являются правильными и надежными.
  2. Предотвращение ошибок. Они предотвращают ошибки. Если что-то не соответствует правилам, действие прекращается до того, как оно что-то испортит.

Типы ограничений:

  1. NOT NULL: Думайте об этом как о фразе: «Эй, это место не может быть пустым!» Это гарантирует, что столбец всегда имеет значение.
  2. УНИКАЛЬНО: Представьте, что у всех в группе разные имена. Это гарантирует, что все значения в столбце отличаются друг от друга.
  3. ПЕРВИЧНЫЙ КЛЮЧ: Это своего рода специальный идентификатор для каждой строки. Это комбинация NOT NULL и UNIQUE. Каждая строка получает уникальный идентификатор.
  4. ВНЕШНИЙ КЛЮЧ: Думайте об этом как о сильной связи между двумя таблицами. Это удерживает вас от действий, которые могут нарушить эти связи.
  5. ПРОВЕРЬТЕ: Это похоже на свод правил. Вы можете установить определенные правила, которым должны следовать значения в столбце.
  6. ПО УМОЛЧАНИЮ: Это похоже на план по умолчанию. Если вы не укажете значение, столбец получит значение по умолчанию.
  7. СОЗДАТЬ ИНДЕКС: Думайте об этом как об указателе в книге. Это поможет вам очень быстро найти вещи на вашем столе.

Где применяются ограничения:

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

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

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

Давайте разберем объяснение и приведем примеры от простого к сложному:

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

Пример 1:

Представьте, что у вас есть таблица «Студенты» со столбцами «Идентификатор», «Имя» и «Возраст». Применение ограничения NOT NULL к столбцу «Имя» означает, что каждая запись об ученике должна иметь имя, и вы не можете оставить поле имени пустым при добавлении или обновлении записи.

Пример 2

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

CREATE TABLE Students (
  ID int NOT NULL,
  Name varchar(255) NOT NULL,
  Age int NOT NULL
);

В этом примере столбцы «ID» и «Возраст» также ограничены и НЕ принимают значения NULL. Это гарантирует, что при добавлении в таблицу каждый учащийся должен иметь идентификатор, имя и возраст.

Пример 3

Теперь давайте рассмотрим более сложный сценарий с таблицей «Заказы», ​​в которой отслеживаются заказы клиентов. Мы хотим гарантировать, что столбцы «CustomerID» и «ProductID» не могут оставаться пустыми:

CREATE TABLE Orders (
  OrderID int NOT NULL,
  CustomerID int NOT NULL,
  ProductID int NOT NULL,
  Quantity int
);

Здесь ограничение NOT NULL применяется к столбцам «OrderID», «CustomerID» и «ProductID», что делает обязательным предоставление значений для этих столбцов при вставке новых заказов.

Пример 4

Теперь предположим, что у нас есть таблица «Сотрудники», в которой отслеживается информация о сотрудниках. Изначально мы создаем таблицу без ограничения NOT NULL в столбце «Зарплата», но позже решаем применить это ограничение:

-- Create the table without NOT NULL constraint
CREATE TABLE Employees (
  EmployeeID int NOT NULL,
  LastName varchar(255) NOT NULL,
  FirstName varchar(255) NOT NULL,
  Salary decimal(10, 2)
);

-- Add NOT NULL constraint to Salary column using ALTER TABLE
ALTER TABLE Employees
ALTER COLUMN Salary decimal(10, 2) NOT NULL;

В этом примере мы сначала создаем таблицу «Сотрудники» со столбцом «Зарплата», допускающим значения NULL. Затем мы используем оператор ALTER TABLE, чтобы изменить столбец и добавить ограничение NOT NULL, гарантируя, что записи о сотрудниках должны иметь указанное значение зарплаты.

УНИКАЛЬНОЕ ограничение SQL:

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

Простое объяснение:

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

Пример 1:

Рассмотрим таблицу «Студенты» со столбцом «StudentID». Применяя ограничение UNIQUE к столбцу «StudentID», вы гарантируете, что каждому студенту будет присвоен уникальный идентификатор:

CREATE TABLE Students (
  StudentID int UNIQUE,
  FirstName varchar(255),
  LastName varchar(255)
);
  • В этом примере ограничение UNIQUE не позволяет нескольким студентам иметь один и тот же StudentID.

Пример 2:

Продолжая работать с таблицей «Студенты», давайте применим ограничение UNIQUE к комбинации столбцов, чтобы гарантировать уникальность адреса электронной почты каждого студента:

CREATE TABLE Students (
  StudentID int,
  FirstName varchar(255),
  LastName varchar(255),
  Email varchar(255) UNIQUE
);
  • Здесь ограничение UNIQUE в столбце «Электронная почта» не позволяет нескольким учащимся иметь один и тот же адрес электронной почты.

Пример 3:

Теперь рассмотрим таблицу «Книги», в которой вы хотите, чтобы каждая книга имела уникальный ISBN (международный стандартный номер книги):

CREATE TABLE Books (
  BookID int,
  Title varchar(255),
  ISBN varchar(13) UNIQUE,
  Author varchar(255)
);
  • Ограничение UNIQUE в столбце «ISBN» гарантирует, что каждая книга будет однозначно идентифицироваться по своему ISBN.

Пример 4:

В более сложном сценарии давайте создадим таблицу «Сотрудники», в которой вы хотите убедиться, что комбинация «DepartmentID» и «EmployeeID» уникальна:

CREATE TABLE Employees (
  EmployeeID int,
  FirstName varchar(255),
  LastName varchar(255),
  DepartmentID int,
  UNIQUE (DepartmentID, EmployeeID)
);
  • Здесь ограничение UNIQUE на комбинацию «DepartmentID» и «EmployeeID» гарантирует, что никакие два сотрудника не могут иметь одинаковую комбинацию идентификаторов отдела и сотрудника.

Ограничение ПЕРВИЧНОГО КЛЮЧА SQL:

  • Ограничение SQL PRIMARY KEY используется для уникальной идентификации каждой строки в таблице. Он обеспечивает уникальность и ненулевое свойство столбца (или набора столбцов) и автоматически создает уникальный индекс для быстрого извлечения данных.
  • Вы можете думать об этом как лидер стола. Поскольку оно не может повторяться (не может быть более одного лидера), не может иметь нулевое значение (в каждой группе должен быть лидер)

Простое объяснение:

Ограничение PRIMARY KEY гарантирует, что определенный столбец (или столбцы) содержит уникальные значения и не может иметь значений NULL. Он уникально идентифицирует каждую строку таблицы.

Пример 1:

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

CREATE TABLE Students (
  StudentID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255)
);

В этом примере ограничение PRIMARY KEY применяется к столбцу «StudentID», гарантируя уникальную идентификацию каждого учащегося.

Пример 2:

Продолжая работать с таблицей «Студенты», давайте применим составной ПЕРВИЧНЫЙ КЛЮЧ, используя как «DepartmentID», так и «StudentID», чтобы однозначно идентифицировать студентов на каждом факультете:

CREATE TABLE Students (
  StudentID int,
  FirstName varchar(255),
  LastName varchar(255),
  DepartmentID int,
  PRIMARY KEY (DepartmentID, StudentID)
);

Здесь составной ПЕРВИЧНЫЙ КЛЮЧ гарантирует уникальную идентификацию каждого студента на соответствующем факультете.

Пример 3:

Рассмотрим таблицу «Книги», в которой вы хотите использовать ISBN в качестве уникального идентификатора для каждой книги:

CREATE TABLE Books (
  BookID int,
  Title varchar(255),
  ISBN varchar(13) PRIMARY KEY,
  Author varchar(255)
);

В этом примере столбец ISBN назначен первичным ключом, что гарантирует уникальную идентификацию каждой книги по ее ISBN.

Пример 4:

В более сложном сценарии давайте создадим таблицу «Сотрудники», в которой вы хотите использовать автоматически сгенерированный идентификатор сотрудника в качестве первичного ключа:

CREATE TABLE Employees (
  EmployeeID int PRIMARY KEY AUTO_INCREMENT,
  FirstName varchar(255),
  LastName varchar(255),
  DepartmentID int
);

Здесь ограничение PRIMARY KEY применяется к столбцу «EmployeeID», а атрибут AUTO_INCREMENT гарантирует, что каждому новому сотруднику автоматически присваивается уникальный идентификатор.

ПЕРВИЧНЫЙ КЛЮЧ SQL в ALTER TABLE

Чтобы создать ограничение PRIMARY KEY для столбца «ID», когда таблица уже создана, используйте следующий SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

Чтобы разрешить присвоение имени ограничению PRIMARY KEY и определить ограничение PRIMARY KEY для нескольких столбцов, используйте следующий синтаксис SQL:

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

УДАЛИТЬ ограничение ПЕРВИЧНОГО КЛЮЧА

Чтобы удалить ограничение PRIMARY KEY, используйте следующий SQL:

MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY;

Ограничение внешнего ключа SQL

Ограничение SQL FOREIGN KEY устанавливает связь между двумя таблицами, гарантируя, что значения в столбце (или наборе столбцов) в одной таблице соответствуют значениям первичного ключа в другой таблице. Это ограничение поддерживает ссылочную целостность и помогает обеспечить связь между таблицами.

Простое объяснение:

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

Пример 1:

Рассмотрим две таблицы «Студенты» и «Курсы», где каждый студент зачислен на курс. Мы используем ограничение FOREIGN KEY, чтобы соединить столбец «StudentID» в таблице «Студенты» со столбцом «StudentID» в таблице «Курсы»:

CREATE TABLE Students (
  StudentID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255)
);

CREATE TABLE Courses (
  CourseID int PRIMARY KEY,
  CourseName varchar(255),
  StudentID int,
  FOREIGN KEY (StudentID) REFERENCES Students(StudentID)
);

В этом примере ограничение FOREIGN KEY в таблице «Курсы» ссылается на столбец «StudentID» в таблице «Студенты», устанавливая связь между студентами и зарегистрированными на них курсами.

Пример 2:

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

CREATE TABLE Students (
  StudentID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255)
);

CREATE TABLE Courses (
  CourseID int PRIMARY KEY,
  CourseName varchar(255),
  StudentID int,
  FOREIGN KEY (StudentID) REFERENCES Students(StudentID) ON DELETE CASCADE
);

Опция «ON DELETE CASCADE» гарантирует, что при удалении студента соответствующие записи курса также будут автоматически удалены.

Пример 3:

Рассмотрим таблицы «Сотрудники» и «Отделы», где каждый сотрудник закреплен за отделом. Мы устанавливаем связь, используя ограничение FOREIGN KEY:

CREATE TABLE Departments (
  DepartmentID int PRIMARY KEY,
  DepartmentName varchar(255)
);

CREATE TABLE Employees (
  EmployeeID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255),
  DepartmentID int,
  FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

Ограничение FOREIGN KEY связывает сотрудников с отделами, гарантируя принадлежность каждого сотрудника к допустимому отделу.

Пример 4:

В более сложном сценарии рассмотрим таблицы «Заказы» и «Клиенты», где каждый заказ связан с клиентом:

CREATE TABLE Customers (
  CustomerID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255)
);

CREATE TABLE Orders (
  OrderID int PRIMARY KEY,
  OrderDate date,
  CustomerID int,
  FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

Ограничение FOREIGN KEY устанавливает связь между заказами и клиентами, гарантируя, что каждый заказ связан с действительным клиентом.

УДАЛИТЬ ограничение ПО УМОЛЧАНИЮ

Чтобы удалить ограничение DEFAULT, используйте следующий SQL:

MySQL:

ALTER TABLE Persons
ALTER City DROP DEFAULT;

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

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

Вы можете думать об этом как о фильтре, позволяющем тщательно фильтровать и выбирать данные

Простое объяснение:

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

Пример 1:

Рассмотрим таблицу «Студенты», в которой вы хотите, чтобы возраст студента был от 18 до 25 лет:

CREATE TABLE Students (
  StudentID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255),
  Age int CHECK (Age BETWEEN 18 AND 25)
);

В этом примере ограничение CHECK гарантирует, что в таблицу можно добавлять только учащихся в возрасте от 18 до 25 лет.

Пример 2:

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

CREATE TABLE Students (
  StudentID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255),
  EnrollmentYear int CHECK (EnrollmentYear BETWEEN 2000 AND YEAR(GETDATE()))
);

Ограничение CHECK здесь гарантирует, что год регистрации находится в допустимом диапазоне.

Пример 3:

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

CREATE TABLE Employees (
  EmployeeID int PRIMARY KEY,
  FirstName varchar(255),
  LastName varchar(255),
  Salary decimal(10, 2) CHECK (Salary > 0)
);

Ограничение CHECK гарантирует, что зарплата сотрудника имеет положительное значение.

Не стесняйтесь подключить 🌹меня:

Твиттер: https://twitter.com/Noransaber11

Linkedin: https://www.linkedin.com/in/noran-saber-abdelfattah-6198471ba/

Github: https://github.com/Noransaber

С уважением, Норан🌹.