🛢️
PostgreSQL
Grokking Algorithm
  • Content
  • Environment
  • Getting Started
    • Introduction
      • What is PostgreSQL
      • Introduction to PostgreSQL sample database
    • Postgres on Windows
      • Install PostgreSQL on Windows
      • Connect to PostgreSQL database server
      • Load the sample database into the PostgreSQL database server
    • Postgres on Linux
    • Install PostgreSQL on macOS
  • Basic
    • Querying Data
      • SELECT
      • Column alias
      • ORDER BY
      • SELECT DISTINCT
    • Filtering Data
      • WHERE
      • AND
      • OR
      • LIMIT
      • FETCH
      • IN
      • BETWEEN
      • LIKE
      • IS NULL
    • Joining Multiple tables
      • Joins
      • Table aliases
      • INNER JOIN
      • LEFT JOIN
      • RIGHT JOIN
      • SELF JOIN
      • FULL OUTER JOIN
      • CROSS JOIN
      • NATURAL JOIN
    • Grouping data
      • GROUP BY
      • HAVING
    • Set Operations
      • UNION
      • INTERSECT
      • EXCEPT
    • Grouping sets, Cube, and Rollup
      • Grouping sets
      • CUBE
      • ROLLUP
    • Subquery
      • Subquery
      • ANY
      • ALL
      • EXISTS
    • Common Table Expressions
      • PostgreSQL CTE
      • Recursive query using CTEs
    • Modifying Data
      • Insert
      • Insert multiple rows
      • Update
      • Update join
      • Delete
      • Upsert
    • Transactions
      • PostgreSQL Transaction
    • Import & Export Data
      • Import CSV file into Table
      • Export PostgreSQL Table to CSV file
    • Managing Tables
      • Data types
      • Create a table
      • Select into
      • Create table as
      • Auto-increment
      • Sequences
      • Identity column
      • Alter table
      • Rename table
      • Add column
      • Drop column
      • Change column data type
      • Rename column
      • Drop table
      • Truncate table
      • Temporary table
      • Copy a table
    • Understanding PostgreSQL constraints
      • Primary key
      • Foreign key
      • UNIQUE constraint
      • CHECK constraint
      • NOT NULL constraint
    • PostgreSQL Data Types in Depth
      • Boolean
      • CHAR, VARCHAR and TEXT
      • NUMERIC
      • Integer
      • DATE
      • Timestamp
      • Interval
      • TIME
      • UUID
      • Array
      • hstore
      • JSON
      • User-defined data types
  • Advanced
  • PG-PGSQL
  • Functions
  • Adminstration
  • API
Powered by GitBook
On this page
  • Mavjud jadval tuzilmasini o'zgartirishda primary keyni aniqlash
  • Mavjud jadvalga avtomatik ravishda oshirilgan primary keyni qanday qo'shish mumkin
  • Primary keyni olib tashlash

Was this helpful?

Edit on GitHub
  1. Basic
  2. Understanding PostgreSQL constraints

Primary key

Ushbu qo'llanmada biz sizga asosiy kalit nima ekanligini va SQL bayonotlari orqali PostgreSQL primary key cheklovlarini qanday boshqarishni ko'rsatamiz.

Primary key(asosiy kalit) - bu jadvaldagi satrni yagona aniqlash uchun ishlatiladigan ustun yoki ustunlar guruhi.

Siz primary keylarni primary key cheklovlar orqali aniqlaysiz. Texnik jihatdan, primary key null boʻlmagan cheklov va UNIQUE cheklovning kombinatsiyasi hisoblanadi.

Jadvalda bitta va faqat bitta primary key bo'la oladi. Har bir jadvalga primary keyni qo'shish yaxshi amaliyotdir. Jadvalga primary key qo'shsangiz, PostgreSQL ustunda noyob B-tree indeksini yoki primary keyni aniqlash uchun foydalaniladigan ustunlar guruhini yaratadi.

Odatda, biz CREATE TABLE iborasi yordamida jadval tuzilishini aniqlaganimizda, jadvalga primary keyni qo'shamiz.

CREATE TABLE TABLE (
	column_1 data_type PRIMARY KEY,
	column_2 data_type,
	…
);

Quyidagi bayonot po_headers nomi bilan xarid buyurtmasi (PO-purchase order) sarlavhalari jadvalini yaratadi.

CREATE TABLE po_headers (
	po_no INTEGER PRIMARY KEY,
	vendor_no INTEGER,
	description TEXT,
	shipping_address TEXT
);

po_no - po_headers jadvalining primary keyi bo'lib, u po_headers jadvalidagi xarid tartibini noyob tarzda aniqlaydi.

Agar primary key ikki yoki undan ortiq ustundan iborat bo'lsa, siz primary key cheklovini quyidagicha belgilaysiz:

CREATE TABLE TABLE (
	column_1 data_type,
	column_2 data_type,
	… 
        PRIMARY KEY (column_1, column_2)
);

Masalan, quyidagi bayonot xarid buyurtmasi satrlari jadvalini yaratadi, uning primary keyi xarid buyurtmasi raqami ( po_no) va qator elementi raqami ( item_no) kombinatsiyasidan iborat.

CREATE TABLE po_items (
	po_no INTEGER,
	item_no INTEGER,
	product_no INTEGER,
	qty INTEGER,
	net_price NUMERIC,
	PRIMARY KEY (po_no, item_no)
);

Agar siz birlamchi kalit cheklovi nomini aniq belgilamasangiz, PostgreSQL primary key chekloviga standart nom tayinlaydi. Odatiy bo'lib, PostgreSQL primary key cheklovi uchun standart nom sifatida table-name_pkey dan foydalanadi. Ushbu misolda PostgreSQL po_items jadvali uchun po_items_pkey nomi bilan primary key cheklovini yaratadi.

Agar siz primary key cheklovi nomini belgilamoqchi boʻlsangiz, CONSTRAINT bandidan quyidagi tarzda foydalanasiz:

CONSTRAINT constraint_name PRIMARY KEY(column_1, column_2,...);

Mavjud jadval tuzilmasini o'zgartirishda primary keyni aniqlash

Mavjud jadval uchun primary keyni aniqlash kamdan-kam uchraydi. Agar buni qilish kerak bo'lsa, primary key cheklovini qo'shish uchun ALTER TABLE iborasidan foydalanishingiz mumkin.

ALTER TABLE table_name ADD PRIMARY KEY (column_1, column_2);

Quyidagi bayonot hech qanday primary keyni belgilamasdan products nomli jadval yaratadi.

CREATE TABLE products (
	product_no INTEGER,
	description TEXT,
	product_cost NUMERIC
);

Siz mahsulotlar jadvaliga primary key cheklovini qo'shmoqchi bo'lsangiz, quyidagi bayonotni bajarishingiz mumkin:

ALTER TABLE products 
ADD PRIMARY KEY (product_no);

Mavjud jadvalga avtomatik ravishda oshirilgan primary keyni qanday qo'shish mumkin

Aytaylik, bizda primary keyga ega bo'lmagan vendors jadvali bor.

CREATE TABLE vendors (name VARCHAR(255));

Va biz INSERT iborasi yordamida vendors jadvaliga bir nechta qatorlarni qo'shamiz:

INSERT INTO vendors (NAME)
VALUES
	('Microsoft'),
	('IBM'),
	('Apple'),
	('Samsung');

Qo'shish amalini tekshirish uchun quyidagi SELECT iborasi yordamida vendors jadvalidagi ma'lumotlarni so'raymiz:

SELECT
	*
FROM
	vendors;

Endi, agar biz vendors jadvaliga id nomli primary keyni qo'shishni istasak va id maydoni avtomatik ravishda bittaga ko'paytirilsa, biz quyidagi bayonotdan foydalanamiz:

ALTER TABLE vendors ADD COLUMN ID SERIAL PRIMARY KEY;

Keling, vendors jadvalini yana bir bor tekshiramiz.

SELECT
	id,name
FROM
	vendors;

Primary keyni olib tashlash

Mavjud primary key cheklovini olib tashlash uchun siz quyidagi sintaksis bilan ALTER TABLE iborasidan ham foydalanasiz.

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint;

Masalan, mahsulotlar jadvalidagi primary keyni olib tashlash uchun siz quyidagi bayonotdan foydalanasiz:

ALTER TABLE products
DROP CONSTRAINT products_pkey;

Ushbu qo'llanmada siz CREATE TABLE va ALTER TABLE iboralari yordamida primary key cheklovlarini qanday qo'shish va olib tashlashni o'rgandingiz.

PreviousUnderstanding PostgreSQL constraintsNextForeign key

Last updated 1 year ago

Was this helpful?

vendors table
vendors table

©

postgresqltutorial.com