Как добавить ограничение в sql
Перейти к содержимому

Как добавить ограничение в sql

  • автор:

Как добавить ограничение в SQL: экспертное руководство для начинающих и не только!

Чтобы добавить ограничение в SQL, вы можете использовать ключевое слово CONSTRAINT вместе с именем ограничения и типом ограничения. Например, чтобы добавить ограничение на уникальное значение в столбце, вы можете использовать ограничение типа UNIQUE:

 ALTER TABLE название_таблицы ADD CONSTRAINT название_ограничения UNIQUE (название_столбца); 

Если вы хотите добавить ограничение на внешний ключ, используйте ограничение типа FOREIGN KEY:

 ALTER TABLE название_таблицы ADD CONSTRAINT название_ограничения FOREIGN KEY (столбец) REFERENCES связанная_таблица (связанный_столбец); 

Вы также можете добавить ограничение на проверку значений, используя ограничение типа CHECK:

 ALTER TABLE название_таблицы ADD CONSTRAINT название_ограничения CHECK (условие); 

Замените название_таблицы, название_ограничения, название_столбца, связанная_таблица, связанный_столбец и условие на соответствующие значения в вашем случае.

Детальный ответ

Привет! В этой статье мы рассмотрим, как добавить ограничение в SQL. Ограничения используются для обеспечения целостности данных и предотвращения некорректных или нежелательных операций с базой данных. Мы поговорим о нескольких типах ограничений и покажем примеры их использования.

PRIMARY KEY ограничение

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

 CREATE TABLE my_table ( id INT PRIMARY KEY, name VARCHAR(50) ); 

В этом примере столбец «id» является PRIMARY KEY, так что каждая запись в таблице должна иметь уникальное значение в этом столбце.

FOREIGN KEY ограничение

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

 CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, FOREIGN KEY (product_id) REFERENCES products(id) ); 

В этом примере столбец «product_id» является FOREIGN KEY, который ссылается на PRIMARY KEY столбца «id» в таблице «products». Таким образом, значения в столбце «product_id» должны существовать в столбце «id» таблицы «products».

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

UNIQUE ограничение используется для обеспечения уникальности значений в столбце или группе столбцов таблицы. Вот пример создания таблицы с UNIQUE ограничением:

 CREATE TABLE my_table ( id INT, name VARCHAR(50) UNIQUE ); 

В этом примере столбец «name» имеет UNIQUE ограничение, поэтому каждое значение в этом столбце должно быть уникальным в таблице.

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

CHECK ограничение используется для проверки значения столбца на соответствие определенному условию. Если значение не удовлетворяет условию, ограничение не позволит вставить или обновить запись в таблице. Вот пример создания таблицы с CHECK ограничением:

 CREATE TABLE my_table ( age INT CHECK (age >= 18), name VARCHAR(50) ); 

В этом примере ограничение CHECK гарантирует, что значение в столбце «age» должно быть больше или равно 18.

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

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

 CREATE TABLE my_table ( id INT, name VARCHAR(50) DEFAULT 'John' ); 

В этом примере столбец «name» будет иметь значение ‘John’, если не указано другое значение при вставке записи в таблицу.

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

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

 CREATE TABLE my_table ( id INT NOT NULL, name VARCHAR(50) ); 

В этом примере столбец «id» не может содержать пустые значения.

Заключение

В этой статье мы рассмотрели несколько типов ограничений, которые могут быть использованы в SQL. PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT и NOT NULL ограничения помогают обеспечить целостность данных и предотвращают некорректные операции с базой данных. Надеюсь, эта статья помогла вам понять, как добавить ограничение в SQL! Удачи в вашем путешествии в мир баз данных!

Как работать с ограничениями в SQL

Разрабатывая БД SQL, вы можете определять, какие данные можно добавлять в определенные столбцы таблицы, а какие – нет. Это возможно благодаря ограничениям. Если вы применили ограничение к столбцу или таблице, любые попытки добавить в них данные, которые не соответствуют этому правилу, завершатся неудачно.

Различные реализации SQL имеют свои уникальные способы работы с ограничениями. В данном руководстве мы разберем популярный синтаксис, который используют многие СУБД для управления ограничениями.

Примечание: Примеры выполнены на БД MySQL.

Требования

Чтобы следовать этому руководству, вам понадобится компьютер с какой-либо реляционной системой управления базами данных (РСУБД), которая использует SQL.

Инструкции и примеры в этом руководстве были проверены в рамках следующей среды:

  • Сервер Ubuntu 20.04 с настроенным пользователем sudo и брандмауэром UFW (подобная настройка описана в этом руководстве).
  • Копия MySQL на этом сервере. Установка и защита MySQL описаны в мануале Установка MySQL в Ubuntu 20.04.

Примечание: Обратите внимание, что многие СУБД используют собственные уникальные реализации SQL. Команды, описанные в этом руководстве, будут работать в большинстве СУБД, однако в некоторых ситуациях синтаксис или вывод могут отличаться (если вы используете не MySQL, а другую СУБД).

Также будет полезно иметь общее представление о том, что такое ограничения SQL и как они работают.

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

Подключение и настройка тестовой базы данных

Если ваша система базы данных SQL работает на удаленном сервере, подключитесь к серверу по SSH с локального компьютера:

Затем откройте командную строку сервера MySQL (заменив 8host именем вашего пользователя MySQL).

mysql -u 8host -p

Создайте базу данных limitedsDB:

CREATE DATABASE constraintsDB;

Если база данных была создана успешно, вы получите такой результат:

Query OK, 1 row affected (0.01 sec)

Чтобы выбрать базу данных ConstraintsDB в качестве текущей, выполните следующую команду USE:

Теперь у вас есть все, чтобы следовать данному руководству. Давайте поговорим о том, как создавать ограничения и управлять ими в SQL.

Создание таблиц с ограничениями

Обычно ограничения определяются во время создания таблицы. Следующий синтаксис CREATE TABLE создает таблицу по имени employeeInfo с тремя столбцами: empId, empName и empPhoneNum. Оператор также применяет ограничение UNIQUE к столбцу empId. Данное ограничение предотвратит внесение одинаковых значений в этот столбец:

CREATE TABLE employeeInfo (
empId int UNIQUE,
empName varchar(30),
empPhoneNum int
);

Этот оператор определяет ограничение UNIQUE сразу после столбца empId – значит, ограничение применяется только к этому столбцу. Если вы попытаетесь добавить в эту таблицу какие-либо данные, СУБД проверит текущее содержимое только столбца empId и убедится, что все новые значения, которые вы хотите в него добавить, действительно уникальны. Это называется ограничением уровня столбца.

Применить ограничение также можно вне определений столбцов. В следующем примере мы попробуем создать таблицу racersInfo с тремя столбцами: racerId, racerName и finish. После определений столбцов идет ограничение CHECK, которое применяется к столбцу finish. Благодаря этому ограничению мы можем быть уверены, что значения в данном столбце больше или равны 1 (поскольку здесь отражается порядок, в котором финишировали гонщики, и, очевидно, финишировать нулевым или минус первым невозможно):

CREATE TABLE racersInfo (
racerId int,
finish int,
racerName varchar(30),
CHECK (finish > 0)
);

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

Именование ограничений

Всякий раз, когда вы определяете ограничение, СУБД автоматически генерирует для него имя. Это имя используется для ссылки на ограничение в сообщениях об ошибках и в командах, используемых для управления ограничениями.

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

Чтобы присвоить ограничению имя, укажите перед типом ограничения ключевое слово CONSTRAINT, за которым укажите любое имя. В примере ниже мы возвращаемся к таблице racersInfo. Переименуем таблицу в newRacersInfo и присвоим ограничению CHECK имя noNegativeFinish:

CREATE TABLE newRacersInfo (
racerId int,
finish int,
racerName varchar(30),
CONSTRAINT noNegativeFinish
CHECK (finish >= 1)
);

Примечание: Если вы не укажете имя для ограничения или забудете его позже, вы, скорее всего, сможете найти это имя, сверившись с информационными схемами вашей СУБД. Многие современные СУБД и клиенты даже предоставляют сокращение для отображения внутренних операторов CREATE. Вот ссылки на официальную документацию по этому сокращению для MySQL и PostgreSQL:

  • MySQL включает оператор SHOW CREATE TABLE, который возвращает весь оператор CREATE TABLE, создавший именованную таблицу:

SHOW CREATE TABLE имя_таблицы;

  • Клиент PostgreSQL psql имеет ряд параметров, которые можно использовать для отображения информации о заданной таблице. Параметр \d возвращает метаданные именованной таблицы:

Управление ограничениями

В MySQL вы можете добавлять ограничения к существующим таблицам, а также удалять их с помощью команды ALTER TABLE.

Например, следующая команда добавляет ограничение UNIQUE в столбец empName в созданной ранее таблице employeeInfo:

ALTER TABLE employeeInfo ADD UNIQUE (empName);

При добавлении ограничения в существующую таблицу вы также можете использовать ключевое слово CONSTRAINT, чтобы указать имя нужного ограничения. В следующем примере в столбец racerId ранее созданной таблицы racersInfo добавляется ограничение UNIQUE по имени uID:

ALTER TABLE racersInfo ADD CONSTRAINT uID UNIQUE (racerId);

Если перед добавлением какого-либо ограничения вы вставили в таблицу данные, конфликтующие с новым ограничением, оператор ALTER TABLE выдаст ошибку.

Чтобы удалить ограничение, используйте синтаксис DROP CONSTRAINT, за которым укажите имя ограничения, которое хотите удалить. Следующая команда удаляет ограничение racersPK, созданное предыдущей командой:

ALTER TABLE racersInfo DROP CONSTRAINT uID;

Заключение

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

Ограничения в SQL

Ограничение (constraints) — это ограничение типа значений, которое накладывается на один или несколько столбцов таблицы. Это позволяет поддерживать точность и целостность данных в таблице БД.

В SQL существует несколько различных типов ограничений, в том числе:

  • NOT NULL
  • PRIMARY KEY
  • UNIQUE
  • DEFAULT
  • FOREIGN KEY
  • CHECK

Давайте обсудим каждое из этих ограничений попродробнее.

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

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

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

Пример

Следующая SQL-инструкция создает таблицу persons с четырьмя столбцами, из которых три столбца — id , name и phone — не могут иметь значение NULL .

CREATE TABLE persons ( id INT NOT NULL, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );

Примечание. Нулевое значение ( NULL ) — это не ноль(0) и не строка символов нулевой длины (»). NULL означает, что записи нет.

Ограниение PRIMARY KEY

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

Пример

Следующая SQL-инструкция создает таблицу persons и указывает столбец id в качестве первичного ключа. Это означает, что в этом поле не допускаются значения NULL или дубликаты.

CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL );

Примечание. Первичный ключ обычно состоит из одного столбца в таблице, однако несколько столбцов могут составлять первичный ключ. Например, адрес электронной почты сотрудника или присвоенный ID является логическим первичным ключом для таблицы сотрудников.

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

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

Хотя и ограничение UNIQUE, и ограничение PRIMARY KEY обеспечивают уникальность значений, есть различия.

UNIQUE лучше PRIMARY KEY, когда вы хотите обеспечить уникальность столбца или комбинации столбцов, которые не являются первичным ключом.

Пример

Следующая SQL-инструкция создает таблицу persons и определяет столбец phone как уникальный. Это означает, что это поле не допускает дублирования значений.

CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE );

Примечание. В одной таблице может быть задано ограничений UNIQUE , но только одно ограничение PRIMARY KEY . Кроме того, в отличие от ограничений PRIMARY KEY , ограничения UNIQUE допускают значения NULL .

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

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

Значение столбца по умолчанию — это некоторое значение, которое будет вставлено в столбец базой данных, если оператор INSERT явно не назначит конкретное значение.

Пример

В следующей SQL-инструкции мы задаем значение по умолчанию для столбца country .

CREATE TABLE persons ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, phone VARCHAR(15) NOT NULL UNIQUE, country VARCHAR(30) NOT NULL DEFAULT 'Россия' );

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

Ограничение FOREIGN KEY

Внешний ключ (foreign key) — это столбец или комбинация столбцов, которые используются для установления и обеспечения взаимосвязи между данными в двух таблицах.

Ниже — диаграмма, которая показывает связь между таблицами сотрудников ( employees ) и отделов ( departments ). Если вы внимательно посмотрите на нее, то заметите, что столбец dept_id таблицы сотрудников совпадает со столбцом первичного ключа таблицы отделов. Поэтому столбец dept_id таблицы сотрудников является внешним ключом для таблицы отделов.

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

Пример

В следующей SQL-инструкции мы определяем столбец dept_id таблицы employees как внешний ключ, который ссылается на столбец dept_id таблицы departments .

CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT, dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );

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

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

Например, диапазон значений для столбца зарплаты salary можно ограничить, создав ограничение CHECK , которое допускает значения только от 30 000 до 100 000. Это предотвратит ввод зарплат за пределами обычного (условного) диапазона.

Пример

CREATE TABLE employees ( emp_id INT NOT NULL PRIMARY KEY, emp_name VARCHAR(55) NOT NULL, hire_date DATE NOT NULL, salary INT NOT NULL CHECK (salary >= 3000 AND salary , dept_id INT, FOREIGN KEY (dept_id) REFERENCES departments(dept_id) );

Примечание. MySQL не поддерживает ограничение CHECK.

Ограничения SQL: как создать, примеры

В процессе работы с таблицами SQL вам нередко нужно будет устанавливать ограничения в базе данных SQL на типы данных, которые могут храниться в определенной таблице. Допустим, у вас есть таблица с данными о сотрудниках — логично, что значения в некоторых ячейках не могут быть пустыми. И мы можем задать такое ограничение значений SQL при помощи простой инструкции. Также можно требовать, чтобы вводимые значения были уникальными, или, например, проверять данные по условию. В статье рассмотрим, как это сделать и используем все возможные типы ограничений, но сначала немного о терминологии.

Что такое ограничения таблицы SQL

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

Добавление ограничений SQL

Создать ограничения SQL можно, используя инструкции PRIMARY KEY , FOREIGN KEY , UNIQUE , CHECK и NOT NULL .

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

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

CREATE TABLE Countries (
Country VARCHAR(46) NOT NULL,
Capital VARCHAR(46)
)

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

INSERT INTO Countries VALUES (null, 'Madrid')

Результатом будет эта ошибка:

Column 'Country' cannot be null

А вот такая запись ошибки не вызовет, потому что оставлять пустым столбец с названиями столиц ( Capital ) мы не запрещали:

INSERT INTO Countries VALUES ('Spain', null)

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

CREATE TABLE Subscribers (
SubscriberName VARCHAR(46) NOT NULL,
SubscriberContact VARCHAR(46) NOT NULL,
)

В данном случае мы требуем от пользователей обязательного ввода имени и адреса электронной почты, установив ограничение для каждого поля таблицы в 64 символа. Указывать лимиты на количество символов в некоторых полях тоже может быть полезно, чтобы предотвратить добавление заведомо некорректных данных. Также эта операция нередко применяется для экономии, чтобы не раздувать объем базы данных.

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

Unique значит «уникальный», и это название полностью отражает суть ограничения. Таким образом, ограничение UNIQUE гарантирует, что никакие два значения в определяемом столбце не будут одинаковыми. Давайте посмотрим на таблицу, в которой используется UNIQUE :

CREATE TABLE Workers1 (
WorkerName VARCHAR(46) NOT NULL,
WorkerDate DATE,
WorkerContact INTEGER UNIQUE
)

Мы создали таблицу работников, в которую будем добавлять имя работника (поле не может быть пустым, так как мы установили для него уже знакомое ограничение NOT NULL ), дату приема на работу (в формате даты, на что указывает тип данных DATE ) и номер телефона. При этом номер телефона должен быть уникальным, на что и указывает ограничение UNIQUE . Давайте вставим в нашу таблицу следующие данные:

INSERT INTO Workers1 VALUES ('Vasya Pupkin', DATE '2018-05-10', 89009000000)

Теперь при попытке добавления строки с таким же номером телефона:

INSERT INTO Workers1 VALUES ('Petya Pupkin', DATE '2020-06-11', 89009000000)

Программа выдаст ошибку:

Duplicate entry '89009000000' for key 'uniqueconstraint.WorkerContact'

Ограничение UNIQUE идеально подходит для столбцов, которые не должны содержать повторяющихся значений. Например, у каждого из нас уникальные номера паспорта и полиса социального страхования (СНИЛС). Таким образом, если таблица содержит столбцы, в которых хранятся номера паспорта и СНИЛС, эти столбцы должны использовать ограничение UNIQUE . Это необходимо, чтобы избежать того, что у двух человек будут одни и те же номера, которые могут быть вставлены по ошибке или намеренно.

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

Check в переводе с английского значит «проверять», и ограничение CHECK служит для проверки значений по определенному условию. Рассмотрим следующий пример:

CREATE TABLE Customers1 (
CustomerName1 VARCHAR(46),
CustomerName2 VARCHAR(46),
CustomerEmail VARCHAR(56),
CustomerAge INTEGER CHECK (CustomerAge>17)
)

Мы включили ограничение по возрасту, который должен быть больше 17 лет. Теперь посмотрим, что мы получим, если покупатель вводит следующие данные:

INSERT INTO Customers1 VALUES ('Vasya', 'Pupkin', 'vasya_pupkin@anysite.com', 17)

Вот что нам выдаст система:

Check constraint 'checkconstraint_chk_1' is violated

Инструкцию CHECK можно использовать для реализации пользовательских ограничений. Так, если в таблице должны храниться только данные взрослых, мы могли бы использовать ограничение CHECK для столбца «Возраст покупателя» ( CustomerAge>17 , как в примере выше). Другой пример: если в таблице должны храниться данные только граждан России, мы могли бы использовать CHECK : например, для нового столбца Customer Country: CHECK (CustomerCountry=’Russia’) .

Ограничение PRIMARY KEY

PRIMARY KEY — это одно из ограничений ключа таблицы SQL , в данном случае — первичного . PRIMARY KEY используется для создания идентификатора, с которым соотносится каждая строка в таблице. Добавим, что PRIMARY KEY в таблице может относиться только к одному столбцу (и это понятно, так как это идентификатор). Соответственно, каждое значение PRIMARY KEY обязательно должно быть уникальным, при этом нулевые значения в столбце, определенном с помощью PRIMARY KEY , не допускаются. Чтобы было понятнее, о чём речь, рассмотрим следующий пример:

CREATE TABLE Workers2 (
id INTEGER PRIMARY KEY,
WorkerName1 VARCHAR(46),
WorkerName2 VARCHAR(46),
WorkerAge INTEGER CHECK (WorkerAge>17)
)

Как видим, ключ PRIMARY KEY , позволяет нам задать id работника, чтобы затем можно было обращаться к каждой записи через уникальный числовой ключ. Также обратим внимание на уже привычное ограничение CHECK в столбце возраста.

Ограничение FOREIGN KEY

Ограничение FOREIGN KEY (внешний ключ) создает ссылку на PRIMARY KEY из другой таблицы. Таким образом, столбец, в котором есть FOREIGN KEY , ссылается на столбец с PRIMARY KEY из другой таблицы, и текущая таблица связывается с ней через это ограничение. Чтобы было понятнее, что делает этот ключ, давайте посмотрим на пример ограничения FOREIGN KEY , связанного с PRIMARY KEY из уже созданной выше таблицы:

CREATE TABLE WorkersTaxes (
WorkerTax INTEGER,
Worker_id INTEGER,
FOREIGN KEY (Worker_id) REFERENCES Workers2(id)
)

Итак, нам понадобилось создать таблицу для расчета налогов работников. И, чтобы связать эту таблицу ( WorkersTaxes ) с таблицей работников ( Workers2 ), мы использовали ссылку FOREIGN KEY , которая идентифицирует работников по PRIMARY KEY из таблицы Workers2 . Таким образом мы достигли связности значений, и теперь каждый сотрудник может быть без труда идентифицирован в обеих таблицах по связанным ключам.

Другие ограничения

Осталось добавить, что к ограничениям SQL Standard также иногда относят DEFAULT , однако DEFAULT не ограничивает тип вводимых данных, поэтому технически не может быть отнесен к ограничениям. Тем не менее эту инструкцию также следует упомянуть здесь, поскольку она позволяет реализовать довольно важную функцию: подстановку значений по умолчанию, когда пользователь их не вводит. Это может понадобится, например, для того, чтобы избежать возможных ошибок при отсутствии ввода. Рассмотрим следующий пример:

CREATE TABLE Customers2 (
CustomerName1 VARCHAR(46) NOT NULL,
CustomerName2 VARCHAR(46) NOT NULL,
CustomerAge INTEGER DEFAULT 18,
)

Теперь, если покупатель не укажет возраст, он будет проставлен автоматически. В данном случае это помогло бы избежать лишних вопросов, которые бы появились у проверяющих, если бы возраст не был указан. А обязать клиента вводить имя и фамилию мы смогли при помощи уже знакомого ограничения NOT NULL .

Надеемся, вам стало понятно, как использовать каждое ограничение SQL и какие преимущества они дают. Удачной работы!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *