PostgreSQL Ограничения: типы с примером
Что такое ограничение?
Типы данных используются для ограничения вида информации, которая может храниться в таблице. Но есть 2 проблемы с этим подходом.
- Выпуск 1: Ограничения, налагаемые типами данных, не подходят для некоторых приложений. Например, столбец, содержащий цену товара, должен принимать только положительные значения. Однако не существует конкретного типа данных, который принимает только положительные числа.
- Выпуск 2: Возможно, вы захотите ограничить информацию в данных строки/столбца по отношению к другим столбцам или строкам. Например, таблица, содержащая информацию об элементе, должна иметь только одну строку для каждого ограничения уникальности столбца.
Чтобы преодолеть такие проблемы и определить эти правила, вы можете использовать ограничениес в PostgreSQL. Проще говоря, ограничения — это правила, которым должны следовать ваши данные. Добавление ограничений таблицы позволяет системе базы данных обеспечить целостность данных.
Поэтому, если пользователь пытается сохранить данные в столбце, который нарушает определенное ограничение, должно отображаться сообщение об ошибке.
Тип PostgreSQL ограничения
Давайте рассмотрим различные виды PostgreSQL ограничение, которое вы можете создать для обеспечения корректности данных:
- Уникальное Произведение
- Не ноль
- СНЕСК
- Основной ключ
- Внешний ключ
- Ограничение выполнения
1) PostgreSQL Уникальное ограничение
Ограничения уникальности помогают гарантировать уникальность данных, содержащихся в столбце или группе ограничений столбца.
Пример
CREATE TABLE Item( Item_no integer UNIQUE, Name text, );
2) НЕ нулевые ограничения
Ограничение not-null определяет, что столбец никогда не должен иметь нулевое значение. Этот тип ограничения очень похож на создание проверочного ограничения. Однако, PostgreSQL создает ненулевое ограничение, что более эффективно. Проблема с этим методом заключается в том, что вы не можете явно давать имена ненулевым ограничениям.
Ограничение not null не является значением по умолчанию. PostgreSQL стандарт и не должен использоваться в переносимых приложениях. Позже он был добавлен в PostgreSQL чтобы сделать его совместимым с каким-либо другим системы СУБД. Многие используют его, потому что он позволяет легко переключать ограничения в файле сценария.
Синтаксис:
CREATE TABLE Item ( product no integer NULL, Item_name text NULL, Itm_price numeric NULL );
3) PostgreSQL Проверить ограничения
Проверочное ограничение помогает указать, что значение в каком-либо столбце должно быть логическим выражением.
Территория PostgreSQL Ограничение проверки состоит из ключевого слова CHECK, за которым следует выражение в круглых скобках. Ограничение проверки Postgres должно включать столбец, который должен быть ограничен, иначе это не имеет никакого смысла.
Синтаксис:
CREATE TABLE Item( Item_id INTEGER PRIMARY KEY, name VARCHAR(20), Item_price NUMERIC CHECK(price>0) );
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
CREATE TABLE Emp( ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l) check(gender gender='M'), Salary INTEGER NOT NULL, Dept_Num INTEGER );
CREATE TABLE ITEM( Id INTEGER PRIMARY KEY, name VARCHAR(15), price numeric CHECK (price > 0) );
4) Ограничения первичного ключа
Ограничение первичного ключа позволяет использовать столбец или группу столбцов в качестве уникального идентификатора строк в таблице. Чтобы определить ограничения первичного ключа, объявленные вами значения должны быть уникальными и не равны нулю. Это позволяет двум определениям таблиц принимать одни и те же данные.
Синтаксис:
Create Table Item( Item_no, integer PRIMARY KEY, Item_name text, Item_Price numeric );
Пример 1:
CREATE TABLE Employee( ID INTEGER PRIMARY KEY Fname VARCHAR(20), Lname VARCHAR(20), Gender CHAR(l), Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME) );
Пример 2:
CREATE TABLE first( A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl) ); Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER. );
Пример 3:
CREATE TABLE Items ( Item_no integer UNIQUE NOT NULL, name text, price numeric CREATE TABLE Items ( Items_no no integer PRIMARY KEY, name text, price numeric
5) Ограничения внешнего ключа
Ограничение внешнего ключа указывает, что значения в столбце или группе столбцов должны совпадать со значениями, появляющимися в некоторой строке другой таблицы. Это позволяет вам установить ссылочную целостность между двумя связанными таблицами.
Предположим, у вас есть таблица, в которой хранятся заказы на разные товары. Вы хотите убедиться, что таблица содержит заказы существующих продуктов. Итак, здесь вам необходимо определить ограничение внешнего ключа в таблице заказов, которое ссылается на таблицу продуктов.
Синтаксис:
CREATE TABLE ( id INTEGER PRIMARY KEY. name VARCHAR(IO) >; CREATE TABLE testable Id INTEGER PRIMARY KEY read INTEGER REFERENCES (id) );
Пример 2:
CREATE TABLE Student ( Std_ID INTEGER primary key, First_name VARCHAR(20), Last_name VARCHAR(20), Gender CHAR(l), Steam, VARCHAR(20), Dept_NUM INTEGER REFERENCES Department );
6) Ограничения исключения
Ограничения исключения помогают вам убедиться, что если любые две строки сравниваются друг с другом в указанных столбцах или выражениях с указанными операторами, то по крайней мере одно из этих сравнений операторов вернет нулевое или ложное значение. Добавление этого PostgreSQL ограничение автоматически создаст индекс типа, указанного в объявлении ограничения.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
Например, следующие PostgreSQL Оператор создает новую таблицу под названием School и добавляет пять столбцов.
CREATE TABLE SCHOOL6( STDID INT PRIMARY KEY NOT NULL, STDNAME TEXT NOT NULL, STDAGE INT NOT NULL, FEEDBACK CHAR(50), STANDARD INT NOT NULL,
Например, следующие PostgreSQL Оператор создает новую таблицу под названием Branch, в которую добавляются три столбца. Столбец STD_ID является внешним ключом и ссылается на поле ID таблицы SCHOOL6.
CREATE TABLE BRANCH ( BRANCHCODE INT PRIMARY KEY NOT NULL, BRAMCHNAME CHAR(50) NOT NULL, STD_ID INT references SCHOOL6(ID) );