Как задать ограничения в sql
При создании столбцов в T-SQL мы можем использовать ряд атрибутов, ряд которых являются ограничениями. Рассмотрим эти атрибуты.
PRIMARY KEY
С помощью выражения PRIMARY KEY столбец можно сделать первичным ключом.
Первичный ключ уникально идентифицирует строку в таблице. В качестве первичного ключа необязательно должны выступать столбцы с типом int, они могут представлять любой другой тип.
Установка первичного ключа на уровне таблицы:
Первичный ключ может быть составным (compound key). Такой ключ может потребоваться, если у нас сразу два столбца должны уникально идентифицировать строку в таблице. Например:
Здесь поля OrderId и ProductId вместе выступают как составной первичный ключ. То есть в таблице OrderLines не может быть двух строк, где для обоих из этих полей одновременно были бы одни и те же значения.
IDENTITY
Атрибут IDENTITY позволяет сделать столбец идентификатором. Этот атрибут может назначаться для столбцов числовых типов INT, SMALLINT, BIGINT, TYNIINT, DECIMAL и NUMERIC. При добавлении новых данных в таблицу SQL Server будет инкрементировать на единицу значение этого столбца у последней записи. Как правило, в роли идентификатора выступает тот же столбец, который является первичным ключом, хотя в принципе это необязательно.
Также можно использовать полную форму атрибута:
Здесь параметр seed указывает на начальное значение, с которого будет начинаться отсчет. А параметр increment определяет, насколько будет увеличиваться следующее значение. По умолчанию атрибут использует следующие значения:
То есть отсчет начинается с 1. А последующие значения увеличиваются на единицу. Но мы можем это поведение переопределить. Например:
В данном случае отсчет начнется с 2, а значение каждой последующей записи будет увеличиваться на 3. То есть первая строка будет иметь значение 2, вторая — 5, третья — 8 и т.д.
Также следует учитывать, что в таблице только один столбец должен иметь такой атрибут.
UNIQUE
Если мы хотим, чтобы столбец имел только уникальные значения, то для него можно определить атрибут UNIQUE .
В данном случае столбцы, которые представляют электронный адрес и телефон, будут иметь уникальные значения. И мы не сможем добавить в таблицу две строки, у которых значения для этих столбцов будет совпадать.
Также мы можем определить этот атрибут на уровне таблицы:
NULL и NOT NULL
Чтобы указать, может ли столбец принимать значение NULL, при определении столбца ему можно задать атрибут NULL или NOT NULL . Если этот атрибут явным образом не будет использован, то по умолчанию столбец будет допускать значение NULL. Исключением является тот случай, когда столбец выступает в роли первичного ключа — в этом случае по умолчанию столбец имеет значение NOT NULL.
DEFAULT
Атрибут DEFAULT определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию.
Здесь для столбца Age предусмотрено значение по умолчанию 18.
CHECK
Ключевое слово CHECK задает ограничение для диапазона значений, которые могут храниться в столбце. Для этого после слова CHECK указывается в скобках условие, которому должен соответствовать столбец или несколько столбцов. Например, возраст клиентов не может быть меньше 0 или больше 100:
Здесь также указывается, что столбцы Email и Phone не могут иметь пустую строку в качестве значения (пустая строка не эквивалентна значению NULL).
Для соединения условий используется ключевое слово AND . Условия можно задать в виде операций сравнения больше (>), меньше (<), не равно (!=).
Также с помощью CHECK можно создать ограничение в целом для таблицы:
Оператор CONSTRAINT. Установка имени ограничений.
С помощью ключевого слова CONSTRAINT можно задать имя для ограничений. В качестве ограничений могут использоваться PRIMARY KEY, UNIQUE, DEFAULT, CHECK.
Имена ограничений можно задать на уровне столбцов. Они указываются после CONSTRAINT перед атрибутами:
Ограничения могут носить произвольные названия, но, как правило, для применяются следующие префиксы:
«PK_» — для PRIMARY KEY
«FK_» — для FOREIGN KEY
«UQ_» — для UNIQUE
«DF_» — для DEFAULT
В принципе необязательно задавать имена ограничений, при установке соответствующих атрибутов SQL Server автоматически определяет их имена. Но, зная имя ограничения, мы можем к нему обращаться, например, для его удаления.
Как задать ограничения в sql
Constraints are the rules that we can apply on the type of data in a table. That is, we can specify the limit on the type of data that can be stored in a particular column in a table using constraints.
The available constraints in SQL are:
- NOT NULL: This constraint tells that we cannot store a null value in a column. That is, if a column is specified as NOT NULL then we will not be able to store null in this particular column any more.
- UNIQUE: This constraint when specified with a column, tells that all the values in the column must be unique. That is, the values in any row of a column must not be repeated.
- PRIMARY KEY: A primary key is a field which can uniquely identify each row in a table. And this constraint is used to specify a field in a table as primary key.
- FOREIGN KEY: A Foreign key is a field which can uniquely identify each row in a another table. And this constraint is used to specify a field as Foreign key.
- CHECK: This constraint helps to validate the values of a column to meet a particular condition. That is, it helps to ensure that the value stored in a column meets a specific condition.
- DEFAULT: This constraint specifies a default value for the column when no value is specified by the user.
How to specify constraints?
We can specify constraints at the time of creating the table using CREATE TABLE statement. We can also specify the constraints after creating a table using ALTER TABLE statement.
Syntax:
Below is the syntax to create constraints using CREATE TABLE statement at the time of creating the table.
Let us see each of the constraint in detail.
1. NOT NULL –
If we specify a field in a table to be NOT NULL. Then the field will never accept null value. That is, you will be not allowed to insert a new row in the table without specifying any value to this field.
For example, the below query creates a table Student with the fields ID and NAME as NOT NULL. That is, we are bound to specify values for these two fields every time we wish to insert a new row.
2. UNIQUE –
This constraint helps to uniquely identify each row in the table. i.e. for a particular column, all the rows should have unique values. We can have more than one UNIQUE columns in a table.
For example, the below query creates a table Student where the field ID is specified as UNIQUE. i.e, no two students can have the same ID. Unique constraint in detail.
3. PRIMARY KEY –
Primary Key is a field which uniquely identifies each row in the table. If a field in a table as primary key, then the field will not be able to contain NULL values as well as all the rows should have unique values for this field. So, in other words we can say that this is combination of NOT NULL and UNIQUE constraints.
A table can have only one field as primary key. Below query will create a table named Student and specifies the field ID as primary key.
4. FOREIGN KEY –
Foreign Key is a field in a table which uniquely identifies each row of a another table. That is, this field points to primary key of another table. This usually creates a kind of link between the tables.
Consider the two tables as shown below:
Orders
| O_ID | ORDER_NO | C_ID |
|---|---|---|
| 1 | 2253 | 3 |
| 2 | 3325 | 3 |
| 3 | 4521 | 2 |
| 4 | 8532 | 1 |
Customers
| C_ID | NAME | ADDRESS |
|---|---|---|
| 1 | RAMESH | DELHI |
| 2 | SURESH | NOIDA |
| 3 | DHARMESH | GURGAON |
As we can see clearly that the field C_ID in Orders table is the primary key in Customers table, i.e. it uniquely identifies each row in the Customers table. Therefore, it is a Foreign Key in Orders table.
Syntax:
(i) CHECK –
Using the CHECK constraint we can specify a condition for a field, which should be satisfied at the time of entering values for this field.
For example, the below query creates a table Student and specifies the condition for the field AGE as (AGE >= 18 ). That is, the user will not be allowed to enter any record in the table with AGE < 18. Check constraint in detail
(ii) DEFAULT –
This constraint is used to provide a default value for the fields. That is, if at the time of entering new records in the table if the user does not specify any value for these fields then the default value will be assigned to them.
For example, the below query will create a table named Student and specify the default value for the field AGE as 18.
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
SQL сдерживает
SQL CONSTRAINTS — это целостность, которая определяет некоторые условия, которые не позволяют столбцу оставаться истинным при вставке, обновлении или удалении данных в столбце. Ограничения могут быть указаны, когда таблица создается сначала с помощью оператора CREATE TABLE или во время изменения структуры существующей таблицы с помощью инструкции ALTER TABLE.
SQL CONSTRAINTS используются для реализации правил таблицы. Если какое-либо нарушение ограничений вызвало какое-либо действие, не выполняющееся над таблицей, действие отменяется ограничением.
Некоторые CONSTRAINTS могут использоваться вместе с оператором SQL CREATE TABLE.
Общая структура SQL CONSTRAINT определяется как:
За ключевым словом CONSTRAINT следует имя ограничения, за которым следует столбец или список столбцов.
Типы SQL-ограничений
SQL предоставляет следующие типы ограничений:
| скованность | Описание |
|---|---|
| НЕНУЛЕВОЙ | Это ограничение подтверждает, что столбец не может хранить значение NULL. |
| УНИКАЛЬНАЯ | Это ограничение гарантирует, что каждая строка для столбца должна иметь различное значение. |
| ОСНОВНОЙ КЛЮЧ | Это ограничение является комбинацией ограничения NOT NULL и ограничения UNIQUE. Это ограничение гарантирует, что конкретный столбец или комбинация из двух или более столбцов для таблицы имеют уникальную идентификацию, которая помогает легче и быстрее найти конкретную запись в таблице. |
| ПРОВЕРЯТЬ | Проверочное ограничение гарантирует, что значение, хранящееся в столбце, соответствует определенному условию. |
| ДЕФОЛТ | Это ограничение предоставляет значение по умолчанию, если для этого столбца указано значение none. |
| ИНОСТРАННЫЙ КЛЮЧ | Ограничение внешнего ключа используется для обеспечения ссылочной целостности данных. в одной таблице, чтобы сопоставить значения в другой таблице. |
Синтаксис:
Параметры:
| название | Описание |
|---|---|
| table_name | Имя таблицы, в которой хранятся данные. |
| column1, column2 | Наименование столбцов таблицы. |
| тип данных | Char, varchar, integer, decimal, date и многое другое. |
| размер | Максимальная длина столбца таблицы. |
| ограничение | Ограничение для столбца или таблицы. |
Содержание:
- SQL CREATE TABLE с ограничением для исключения значения NULL
- SQL CREATE TABLE для проверки уникального значения
- SQL CREATE TABLE для проверки уникального значения на нескольких столбцах
- SQL CREATE TABLE с уникальным ограничением
- SQL CREATE TABLE с ограничением CHECK
- SQL CREATE TABLE с использованием ограничения по умолчанию
- SQL CREATE TABLE с использованием значений по умолчанию и CHECK CONSTRAINT
- SQL CREATE TABLE с оператором CHECK CONSTRAINT и IN
- SQL CREATE TABLE с оператором CHECK CONSTRAINT и LIKE
- SQL CREATE TABLE с оператором CHECK CONSTRAINT и OR
- SQL CREATE TABLE с использованием оператора CHECK CONSTRAINT и AND OR
- SQL CREATE TABLE с использованием CASCADE
SQL CREATE TABLE с ограничением для исключения значения NULL
В следующем разделе будет описано, как NOT NULL CONSTRAINT подтверждает, что столбец не может иметь значение NULL в инструкции CREATE TABLE.
Пример:
В следующем примере создается таблица. Вот имя поля и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ |
|---|---|---|---|---|
| agent_code | голец | 6 | нет | |
| имя агента | голец | 25 | нет | |
| рабочая область | голец | 25 | нет |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
SQL CREATE TABLE для проверки уникального значения
В следующем разделе мы обсудим, как SQL UNIQUE CONSTRAINT гарантирует, что каждая строка для столбца имеет разные значения в операторе CREATE TABLE.
Пример:
В следующем примере создается таблица. Вот имя поля и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| ord_num | десятичный | 6 | нет | УНИКАЛЬНАЯ | |
| ord_amount | десятичный | 12 | 2 | да | |
| ord_date | Дата | нет | |||
| cust_code | голец | 6 | нет | ||
| agent_code | голец | 6 | нет |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
SQL CREATE TABLE для проверки уникального значения на нескольких столбцах
В следующем примере создается таблица. Вот имя поля и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | нет | ||
| комиссия | десятичный | 5 | 2 | да |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
SQL CREATE TABLE с уникальным ограничением
Ограничение SQL UNIQUE используется для обеспечения того, чтобы каждая строка столбца имела различное значение. На этой странице мы собираемся обсудить, как работает SQL UNIQUE CONSTRAINT, если он используется в конце инструкции CREATE TABLE вместо использования UNIQUE CONSTRAINT в определенных столбцах.
Пример :
В следующем примере создается таблица. Вот имя поля и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| cust_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| CUST_NAME | голец | 25 | нет | ||
| cust_city | голец | 25 | нет | ||
| класс | целое число | да | |||
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ |
можно использовать следующий оператор SQL :
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
SQL CREATE TABLE с ограничением CHECK
SQL CHECK CONSTRAINT гарантирует, что значение для определенного столбца или столбцов удовлетворяет заданному условию.
Задача ограничения CHECK заключается в ограничении значений для столбца таблицы.
Замечания :
- SQL CHECK CONSTRAINT нельзя использовать в VIEW.
- SQL CHECK CONSTRAINT нельзя использовать в подзапросе.
- SQL CHECK CONSTRAINT также можно использовать в инструкциях ALTER TABLE и DROP TABLE.
В следующем примере создается таблица. Таблица содержит CHECK CONSTRAINT для столбца комиссии. Ограничение гарантирует, что «комиссия» должна быть меньше 1. Вот имя поля и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | нет | ||
| комиссия | целое число | ПРОВЕРЯТЬ |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с использованием ограничения по умолчанию
SQL DEFAULT CONSTRAINT предоставляет значение по умолчанию, если для столбца не задано значение none.
Пример:
Включить DEFAULT CONSTRAINT в столбец 'working_area', который гарантирует, что —
1. «Working_area» должно быть «Mumbai», если для этого столбца не указано ни одного,
во время создания таблицы, имена полей и типы данных которой —
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | да | ДЕФОЛТ | |
| комиссия | десятичный | 8 | 2 | да |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с использованием значений по умолчанию и CHECK CONSTRAINT
В следующем разделе мы обсудили использование SQL DEFAULT CONSTRAINT и использование SQL CHECK CONSTRAINT при создании таблицы.
Пример:
Чтобы включить CHECK CONSTRAINT для «комиссии» и DEFAULT CONSTRAINT для «рабочей_области», это гарантирует, что —
1. «Комиссия» должна быть больше .1 и меньше .3,
2. «Working_area» должно быть «Mumbai», если для этого столбца не указано ни одного,
во время создания таблицы, которая содержит следующие имена полей и типы данных —
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | да | ДЕФОЛТ | |
| комиссия | десятичный | 8 | 2 | да | ПРОВЕРЯТЬ |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с оператором CHECK CONSTRAINT и IN
В следующем разделе мы обсудили, как использовать оператор SQL IN вместе с SQL CHECK CONSTRAINT.
Условие CHECK CONSTRAINT может быть определено с использованием любого из базовых операторов сравнения, таких как ( >, <, =,> =, <=, <> ), а также операторов BETWEEN, IN, LIKE и NULL.
Пример:
Чтобы включить две проверки ограничения, которые —
1. Первый столбец находится в столбце «working_area», который гарантирует, что works_area должен быть либо «London», либо «Brisban», либо «Chennai», либо «Mumbai»,
2. Второй столбец — «комиссия», который гарантирует, что комиссия должна быть меньше 1,
В следующей таблице имена полей и типы данных:
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | нет | ПРОВЕРЯТЬ | |
| комиссия | целое число | ПРОВЕРЯТЬ |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
SQL CREATE TABLE с оператором CHECK CONSTRAINT и LIKE
В следующем разделе мы обсудим, как можно использовать оператор SQL LIKE с CHECK CONSTRAINT.
Пример:
Чтобы включить CHECK CONSTRAINT в столбец 'ord_date', который гарантирует, что формат 'ord_date' должен быть похож на '- / — / —-', например, ('18 / 05/1998 ') на время создания таблицы со следующими именами полей и типов данных —
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| ord_num | десятичный | 6 | нет | УНИКАЛЬНАЯ | |
| ord_amount | десятичный | 12 | 2 | да | |
| ord_date | голец | 10 | нет | ПРОВЕРЯТЬ | |
| cust_code | голец | 6 | нет | ||
| agent_code | голец | 6 | нет |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с оператором CHECK CONSTRAINT и OR
В следующей теме мы обсуждаем использование оператора OR вместе с CHECK CONSTRAINT.
Пример:
Чтобы включить CHECK CONSTRAINT в столбцы 'Commission' и 'working_area', который гарантирует, что значение 'Commission' должно быть меньше .20, а значение 'working_area' должно быть 'London' во время создания следующей таблицы, которая состоит из имен полей и типы данных —
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | да | ПРОВЕРЯТЬ | |
| комиссия | десятичный | 8 | 2 | да | ПРОВЕРЯТЬ |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с использованием оператора CHECK CONSTRAINT и оператора AND, OR
В следующей теме мы обсудим использование операторов OR и AND вместе с CHECK CONSTRAINT. Условие начнет работать во время вставки записей в таблицу.
Пример:
Включить CHECK CONSTRAINT в столбцы 'Commission' и 'working_area', который гарантирует, что —
1. «Комиссия» должна быть меньше .14, а «working_area» должно быть «Лондон»,
2. или «комиссия» должна быть меньше .15, а «working_area» должно быть «Мумбаи»,
3. или «комиссия» должна быть меньше .13, а «working_area» должно быть «Нью-Йорк»
во время создания таблицы, имена полей и типы данных которых
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| agent_code | голец | 6 | нет | УНИКАЛЬНАЯ | |
| имя агента | голец | 25 | нет | УНИКАЛЬНАЯ | |
| рабочая область | голец | 25 | да | ПРОВЕРЯТЬ | |
| комиссия | десятичный | 8 | 2 | да | ПРОВЕРЯТЬ |
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выход :
SQL CREATE TABLE с использованием CASCADE
Опция CASCADE с ON DELETE позволяет удалять строки из дочерней таблицы, когда соответствующие строки удаляются из родительской таблицы.
DELETE CASCADE работает по ссылке внешнего ключа и удаляет дочерние записи, связанные с родительскими записями.
Пример:
Чтобы создать таблицу, которая содержит следующие имя поля и типы данных —
| Имя поля | Тип данных | Размер | Десятичные знаки | НОЛЬ | скованность |
|---|---|---|---|---|---|
| tranno | десятичный | нет | |||
| Идентификатор компании | VARCHAR | 6 | да | ИНОСТРАННЫЙ КЛЮЧ | |
| код изделия | VARCHAR | 10 | да | ОСНОВНОЙ КЛЮЧ | |
| coname | VARCHAR | 35 | да | ||
| имя элемента | VARCHAR | 35 | да | ||
| iqty | целое число | да |
Таблица содержит PRIMARY KEY для «itemcode» и FOREIGN KEY для столбца «company_id», который ссылается на столбец «company_id» таблицы «company».
можно использовать следующий оператор SQL:
Код SQL:
Чтобы увидеть структуру созданной таблицы:
Код SQL:
Выводы указанного оператора SQL, показанного здесь, взяты с использованием Oracle Database 10g Express Edition.
Упражнения по SQL
- Упражнения по SQL, практика, решение
- SQL Получить данные из таблиц [33 Упражнения]
- Булевы и реляционные операторы SQL [12 упражнений]
- Подстановочные знаки SQL и специальные операторы [22 упражнения]
- Агрегатные функции SQL [25 упражнений]
- Вывод запроса форматирования SQL [10 упражнений]
- SQL-запросы к нескольким таблицам [7 упражнений]
- ФИЛЬТРАЦИЯ И СОРТИРОВКА в базе данных персонала [38 упражнений]
- SQL СОЕДИНЯЕТ
- SQL СОЕДИНЯЕТСЯ [29 упражнений]
- SQL присоединяется к базе данных HR [27 упражнений]
- ПОДПИСИ SQL [39 упражнений]
- SQL ПОДПИСИ по базе данных HR [55 упражнений]
- href = «/ sql-упражнения / база данных фильмов-упражнение / основные упражнения-на-фильме-базе данных.php»> ОСНОВНЫЕ запросы к базе данных фильмов [10 упражнений]
- ПОДПИСКИ на фильм База данных [16 упражнений]
- ПРИСОЕДИНЯЕТСЯ к базе данных фильма [24 упражнения]
- Вступление
- ОСНОВНЫЕ запросы по футболу базы данных [29 упражнений]
- ПОДПИСКИ по футбольной базе данных [33 упражнения]
- ПРИСОЕДИНЯЕТСЯ к запросам по футбольной базе данных [61 упражнений]
- Вступление
- ОСНОВНЫЕ, ПОДПИСИ И СОЕДИНЕНИЯ [39 упражнений]
- ОСНОВНЫЕ запросы к базе данных сотрудников [115 упражнений]
- БРОНИРОВАНИЕ на сотрудника База данных [77 Упражнения]
Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.
Предыдущая: Внешний ключ
Далее: Изменить таблицуSysadminium
Из статьи вы узнаете про ограничение целостности SQL. А также, на примере PostgreSQL, я покажу, как эти ограничения создаются.
Теория
В прошлой статье: “Базовые команды SQL” я показывал как создавать таблицы в СУБД PostgreSQL. Первичный ключ уже накладывает некоторые ограничения целостности. Например, все значения в поле, которое является первичным ключом должны быть уникальными.
Ограничение целостности SQL, это определённое требование для полей в таблице SQL. За соблюдение этих требований отвечает сама СУБД. Например:
-
накладывает некоторое ограничение. Нельзя в поле с типом “integer” вставить текстовую строку. Но для некоторых типов можно ещё ужесточить правила:
- для типа “char” и “varchar” можно указать максимальную длину строки. Например, в поле “vaechar(4)” нельзя будет вставить строку из пяти символов.
- записи должны быть уникальны (unique);
- записи не могут быть пустыми (not null).
В документации об ограничениях можете почитать тут.
В этой статье будем говорить о “check” проверках, так как о первичном ключе и типах данных я уже рассказывал. Также покажу как создаются ограничения unique и not null.
Создание таблицы с ограничениями целостности
Создадим новую базу данных и подключимся к ней:
Создадим таблицу staff (сотрудники):
Название Описание Тип данных Ограничения
( NOT NULL, UNIQUE )Ограничения
(CHECK)number номер serial NOT NULL, UNIQUE fullname фио varchar (50) NOT NULL sex пол char (1) NOT NULL Может быть только “М” или “Ж” age возраст integer NOT NULL От 18 до 100 (я думаю больше 100 лет сотруднику не может быть) experience стаж integer NOT NULL Стаж должен быть меньше возраста Для создания подойдёт следующий запрос:
И посмотрим на то, что у нас получилось:
Попробуем создать 15 летнего сотрудника:
Как видно из ошибки, сработало ограничение staff_age_check.
А 18 летний создастся нормально:
А что будет, если ошибёмся с полом:
Здесь уже сработало ограничение staff_sex_check.
Если мы что-то забудем указать, то сработает ограничение NOT NULL:
И наконец введем второго пользователя в базу:
А теперь посмотрим на табличку:
Как вы могли заметить последовательность постоянно растёт, даже если мы ошибаемся при вставке. Поэтому у нас в поле number вначале 2, а затем 5.
Создание ограничения для существующей таблицы
NOT NULL
Добавить или удалить ограничение целостности NOT NULL можно с помощью ALTER TABLE таким образом:
UNIQUE
Ограничения целостности UNIQUE удаляются с помощью DROP CONSTRAINT, а добавляется с помощью ADD CONSTRAINT:
Кстати, при удалении ограничения целостности UNIQUE удаляется и индекс.
CHECK
Ограничения целостности CHECK создаются и удаляются подобным способом:
При этом названия ограничения (staff_number_key, staff_age_check и другие) вы придумываете сами.