PostgreSQL Ограничения: Типове с пример

⚡ Умно обобщение

PostgreSQL Ограниченията налагат шест вградени правила за цялост на ниво база данни: UNIQUE, NOT NULL, CHECK, PRIMARY KEY, FOREIGN KEY и EXCLUSION. LessОбхващат синтаксиса, примерите и кога да се приложи всяко правило.

  • Integrity Правила: Блокира невалидни данни на ниво база данни.
  • 🔑 Първичен ключ: UNIQUE плюс NOT NULL; по едно на таблица.
  • 🔗 Външен ключ: Сочи към UNIQUE или PRIMARY KEY другаде.
  • ПРОВЕРКА: Булева проверка на ред.
  • 🚫 НЕ Е НУЛА: Отхвърля NULL стойности.
  • 🎯 ИЗКЛЮЧЕНИЕ: УНИКАЛЕН с персонализирани оператори.

PostgreSQL Ограничения

Какво е ограничение?

Типовете данни се използват за ограничаване на вида информация, която може да се съхранява в таблица. Но има 2 проблема с този подход.

  • Проблем 1: Ограниченията, наложени от типове данни, не са подходящи за определени приложения. Например колона, съдържаща цена на артикул, трябва да приема само положителни стойности. Въпреки това няма конкретен тип данни, който да приема само положителното число.
  • Издаване 2: Може да искате да ограничите информацията в данни в ред/колона по отношение на други колони или редове. Например таблица, съдържаща информация за елемент, трябва да има само един ред за всяко уникално ограничение на колона.

За да преодолеете подобни проблеми и да дефинирате тези правила, можете да използвате ограничениеите в PostgreSQL. С прости думи, ограниченията са правила, които вашите данни трябва да следват. Добавянето на ограничения на таблицата позволява на системата от бази данни да налага целостта на данните.

Следователно, ако потребител се опитва да съхрани данни в колона, която нарушава дефинирано ограничение, трябва да се покаже съобщение за грешка.

Тип PostgreSQL Ограничения

Нека да разгледаме различните видове PostgreSQL ограничение, което можете да създадете, за да гарантирате коректността на данните:

  • Уникална
  • Не е нула
  • Проверете ограничението
  • Първичен ключ
  • Чужд ключ
  • Ограничение за изпълнение

PostgreSQL УНИКАЛНО ограничение

Уникалните ограничения ви помагат да гарантирате, че данните, съдържащи се в колона или група от ограничения на колони, са уникални.

Пример

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

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

Ограничение за не-нула дефинира, че колона никога не трябва да бъде нулева стойност. Този тип ограничение е много подобно на създаването на ограничение за проверка. обаче PostgreSQL създава ненулево ограничение, което е по-ефективно. Проблемът с този метод е, че не можете да дадете изрични имена на не-нулеви ограничения.

Ограничението not null не е по подразбиране PostgreSQL стандартен и не трябва да се използва в преносими приложения. По-късно е добавен в PostgreSQL за да стане съвместим с някои други СУБД системи. Много го използват, защото улеснява превключването на ограничението във файл със скрипт.

Синтаксис:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

PostgreSQL ПРОВЕРЕТЕ ограничение

Ограничението за проверка ви помага да укажете, че стойността в дадена колона трябва да бъде булев израз.

- PostgreSQL check constraint се състои от ключовата дума 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)
);

PostgreSQL Ограничение на ПЪРВИЧЕН КЛЮЧ

Ограничението за първичен ключ ви позволява да използвате колона или група от колони като уникален идентификатор за редове в таблицата. За да дефинирате ограниченията на първичния ключ, вашите декларирани стойности трябва да бъдат уникални и да не са нулеви. Това позволява две дефиниции на таблици да приемат едни и същи данни.

Синтаксис:

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

PostgreSQL Ограничение на ВЪНШЕН КЛЮЧ

Ограничение за външен ключ указва, че стойностите в колона или група колони трябва да съвпадат със стойностите, появяващи се в някой ред от друга таблица. Това ви позволява да установите референтната цялост между две свързани таблици.

Да приемем, че имате таблица, която съхранява поръчки за различни продукти. Искате да сте сигурни, че таблицата съдържа поръчки на съществуващи продукти. И така, тук трябва да дефинирате ограничение за външен ключ в таблицата с поръчки, което препраща към таблицата с продукти.

Синтаксис:

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
);

PostgreSQL Ограничение за ИЗКЛЮЧВАНЕ

Ограниченията за изключване ви помагат да се уверите, че ако всеки два реда се сравняват един с друг в указаните колони или изрази с определени оператори, тогава поне едно от тези сравнения на оператори ще върне нулева или невярна стойност. Добавяне на това PostgreSQL constraint автоматично ще създаде индекс от типа, посочен в декларацията за ограничение.

Пример:

Например следното 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)
);

Въпроси и Отговори

ПЪРВИЧЕН КЛЮЧ, ВЪНШЕН КЛЮЧ, УНИКАЛЕН, НЕ Е NULL, ПРОВЕРКА, ИЗКЛЮЧВАНЕ.

Инструменти с изкуствен интелект като Copilot генерират CREATE TABLE оператори с ограничения и CHECK условия.

Да. Инструментите с изкуствен интелект сканират схеми за осиротели външни ключове, липсващи NOT NULL и таблици без първични ключове.

PRIMARY KEY комбинира UNIQUE и NOT NULL; по един на таблица. UNIQUE позволява множество и приема NULL.

Използвайте ON DELETE CASCADE, SET NULL или RESTRICT.

Не. CHECK препраща само към колони от един и същи ред. Използвайте външни ключове или тригери.

Използвайте EXCLUDE, когато уникалността изисква оператори, различни от равенство (напр. && за припокриване)ping диапазони).

Да. ALTER TABLE ADD CONSTRAINT работи след създаването. Използвайте NOT VALID, за да пропуснете проверката на съществуващите редове.

Обобщете тази публикация с: