🛢️
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

Was this helpful?

Edit on GitHub
  1. Basic
  2. Managing Tables

Auto-increment

Ushbu qoʻllanmada siz PostgreSQL SERIAL psevdo-turi va jadvallardagi avtomatik oʻsish ustunlarini aniqlash uchun SERIAL psevdo-turidan qanday foydalanish haqida bilib olasiz.

PostgreSQL-da ketma-ketlik butun sonlar ketma-ketligini hosil qiluvchi maxsus turdagi ma'lumotlar bazasi ob'ektidir. Ketma-ketlik ko'pincha jadvalda asosiy kalit (primary key) ustuni sifatida ishlatiladi.

Yangi jadval yaratishda ketma-ketlik SERIAL psevdo-tipi orqali quyidagicha yaratilishi mumkin:

CREATE TABLE table_name(
    id SERIAL
);

Id ustuniga SERIAL psevdo-turini belgilash orqali PostgreSQL quyidagilarni amalga oshiradi:

  • Birinchidan, ketma-ketlik ob'ektini yarating va ketma-ketlik tomonidan yaratilgan keyingi qiymatni ustun uchun standart qiymat sifatida o'rnating.

  • Ikkinchidan, id ustuniga NOT NULL cheklovini qo'shing, chunki ketma-ketlik har doim butun sonni hosil qiladi, bu esa null bo'lmagan qiymatdir.

  • Uchinchidan, id ustuniga ketma-ketlik egasini tayinlang; natijada id ustuni yoki jadvali tushirilganda ketma-ketlik ob'ekti o'chiriladi

Sahna ortida quyidagi bayonot:

CREATE TABLE table_name(
    id SERIAL
);

Quyidagi bayonotlarga ekvivalentdir:

CREATE SEQUENCE table_name_id_seq;

CREATE TABLE table_name (
    id integer NOT NULL DEFAULT nextval('table_name_id_seq')
);

ALTER SEQUENCE table_name_id_seq
OWNED BY table_name.id;

PostgreSQL quyidagi xususiyatlarga ega SMALLSERIAL, SERIAL va BIGSERIAL uchta ketma-ket psevdo-turlarini taqdim etadi:

Name
Storage Size
Range

SMALLSERIAL

2 bytes

1 to 32,767

SERIAL

4 bytes

1 to 2,147,483,647

BIGSERIAL

8 bytes

1 to 9,223,372,036,854,775,807

PostgreSQL SERIAL misoli

Shuni ta'kidlash kerakki, SERIAL so'zsiz ustunda indeks yaratmaydi yoki ustunni asosiy kalit ustuni sifatida qilmaydi. Biroq, buni SERIAL ustuni uchun PRIMARY KEY cheklovini belgilash orqali osonlik bilan amalga oshirish mumkin.

Quyidagi bayonot SERIAL ustuni sifatida id ustuni bilan fruits jadvalini yaratadi:

CREATE TABLE fruits(
   id SERIAL PRIMARY KEY,
   name VARCHAR NOT NULL
);

Jadvalga qator qo'shganda ketma-ket ustunga standart qiymatni belgilash uchun siz ustun nomiga e'tibor bermaysiz yoki INSERT iborasida DEFAULT kalit so'zidan foydalanasiz.

Quyidagi misolga qarang:

INSERT INTO fruits(name) 
VALUES('Orange');

yoki

INSERT INTO fruits(id,name) 
VALUES(DEFAULT,'Apple');

PostgreSQL fruits jadvaliga id ustuni uchun qiymatlar 1 va 2 bo'lgan ikkita qatorni kiritdi.

SELECT * FROM fruits;
 id |  name
----+--------
  1 | Apple
  2 | Orange

(2 rows)

Jadvaldagi SERIAL ustunining ketma-ketlik nomini olish uchun siz pg_get_serial_sequence() funksiyasidan quyidagi tarzda foydalanasiz:

pg_get_serial_sequence('table_name','column_name')

Ketma-ketlik tomonidan yaratilgan oxirgi qiymatni olish uchun currval() funksiyasiga ketma-ketlik nomini berishingiz mumkin. Misol uchun, quyidagi bayonot fruits_id_seq obyekti tomonidan yaratilgan oxirgi qiymatni qaytaradi:

SELECT currval(pg_get_serial_sequence('fruits', 'id'));
currval
---------
2
(1 row)

Agar siz jadvalga yangi qator qo'shganda ketma-ketlik tomonidan yaratilgan qiymatni olishni istasangiz, INSERT iborasida RETURNING id bandidan foydalanasiz.

Quyidagi bayonot fruits jadvaliga yangi qator qo'shadi va id ustuni uchun yaratilgan qiymatni qaytaradi.

INSERT INTO fruits(name) 
VALUES('Banana')
RETURNING id;
id
----
3
(1 row)

Sequence generator ishi tranzaksiya uchun xavfsiz emas. Bu shuni anglatadiki, agar ikkita bir vaqtning o'zida ma'lumotlar bazasi ulanishi ketma-ketlikdan keyingi qiymatni olishga harakat qilsa, har bir mijoz boshqa qiymatga ega bo'ladi.

Ushbu qo'llanmada siz PostgreSQL psevdo-tipi SERIALdan jadval uchun avtomatik o'sish ustunini yaratish uchun qanday foydalanishni o'rgandingiz.

PreviousCreate table asNextSequences

Last updated 1 year ago

Was this helpful?

©

postgresqltutorial.com