🛢️
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
  • PostgreSQL NUMERIC misollar
  • 1. Raqamli qiymatlarni saqlash
  • 2. PostgreSQL NUMERIC turi va NaN
  • Xulosa

Was this helpful?

Edit on GitHub
  1. Basic
  2. PostgreSQL Data Types in Depth

NUMERIC

Ushbu qo'llanmada siz raqamli ma'lumotlarni saqlash uchun PostgreSQL NUMERIC turi haqida bilib olasiz.

NUMERIC turi ko'p sonli raqamlarni saqlashi mumkin. Odatda, siz pul miqdori yoki miqdori kabi aniqlikni talab qiladigan raqamlar uchun NUMERIC turidan foydalanasiz.

Quyida NUMERIC turining sintaksisi tasvirlangan:

NUMERIC(precision, scale)

Ushbu sintaksisda:

  • Aniqlik(precision) raqamlarning umumiy sonidir

  • Masshtab(scale) kasr qismidagi raqamlar soni.

Masalan, 1234.567 raqami 7 aniqlik va 3 shkalaga ega.

NUMERIC turi o'nli kasrdan oldin 131,072 raqamgacha bo'lgan qiymatni o'nli kasrdan keyin 16,383 ta raqamga ega bo'lishi mumkin.

NUMERIC turining shkalasi nol yoki positive bo'lishi mumkin.

Mana, nol masshtabli NUMERIC tipidagi sintaksisi:

NUMERIC(precision)

Agar siz aniqlik va masshtabni o'tkazib yuborsangiz, har qanday aniqlikni saqlashingiz va yuqorida aytib o'tilgan aniqlik va o'lchov chegarasiga qadar o'lchashingiz mumkin.

NUMERIC

PostgreSQL-da NUMERIC va DECIMAL turlari ekvivalentdir va ikkalasi ham SQL standartining bir qismidir.

Agar aniqlik talab etilmasa, NUMERIC turidan foydalanmasligingiz kerak, chunki NUMERIC qiymatlari bo'yicha hisob-kitoblar odatda butun sonlar, floatlar va doublelarga qaraganda sekinroq.

PostgreSQL NUMERIC misollar

Keling, PostgreSQL NUMERIC turidan foydalanishga misollar keltiraylik.

1. Raqamli qiymatlarni saqlash

Agar siz qiymatni NUMERIC ustunining e'lon qilingan shkalasidan kattaroq shkala bilan saqlasangiz, PostgreSQL qiymatni belgilangan kasr raqamlariga yaxlitlaydi. Masalan:

Birinchi, products deb nomlangan yangi jadval yarating:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(5,2)
);

Ikkinchi, price ustunida e'lon qilingan shkaladan oshib ketadigan narxlari bo'lgan ba'zi mahsulotlarni kiriting:

INSERT INTO products (name, price)
VALUES ('Phone',500.215), 
       ('Tablet',500.214);

price ustunining shkalasi 2 bo'lgani uchun PostgreSQL 500.215 qiymatini 500.22 gacha va 500.214 qiymatini 500.21 gacha yaxlitlaydi:

Quyidagi so'rov products jadvalining barcha qatorlarini qaytaradi:

SELECT * FROM products;
 id |  name  | price
----+--------+--------
  1 | Phone  | 500.22
  2 | Tablet | 500.21
(2 rows)

Agar siz aniqligi e'lon qilingan aniqlikdan oshib ketadigan qiymatni saqlasangiz, PostgreSQL quyidagi misolda ko'rsatilganidek xatoni keltirib chiqaradi:

INSERT INTO products (name, price)
VALUES('Phone',123456.21);
ERROR:  numeric field overflow
DETAIL:  A field with precision 5, scale 2 must round to an absolute value less than 10^3.

2. PostgreSQL NUMERIC turi va NaN

Raqamli qiymatlarni saqlashdan tashqari, NUMERIC turida NaN nomli maxsus qiymat ham bo'lishi mumkin, bu raqam emas. Quyidagi misol mahsulot identifikatori 1 narxini NaN ga yangilaydi:

UPDATE products
SET price = 'NaN'
WHERE id = 1;

E'tibor bering, yuqoridagi UPDATE bayonotida ko'rsatilganidek, NaN ni o'rash uchun bitta tirnoqdan foydalanish kerak.

Quyidagi so'rov products jadvali ma'lumotlarini qaytaradi:

SELECT * FROM products;
 id |  name  | price
----+--------+--------
  2 | Tablet | 500.21
  1 | Phone  |    NaN
(2 rows)

Odatda, NaN hech qanday raqamga, shu jumladan o'ziga teng emas. Bu NaN = NaN ifodasi false ekanligini anglatadi.

Biroq, ikkita NaN qiymati teng va NaN boshqa raqamlardan kattaroqdir. Ushbu dastur PostgreSQL-ga NUMERIC qiymatlarni saralash va ularni daraxtga asoslangan indekslarda ishlatish imkonini beradi.

Quyidagi so'rov mahsulotlarni price bo'yicha saralaydi:

SELECT * FROM products
ORDER BY price DESC;
 id |  name  | price
----+--------+--------
  1 | Phone  |    NaN
  2 | Tablet | 500.21
(2 rows)

Chiqish NaN ning 500,21 dan katta ekanligini ko'rsatadi

Xulosa

  • Aniqlikni talab qiladigan raqamlarni saqlash uchun PostgreSQL NUMERIC maʼlumotlar turlaridan foydalaning.

PreviousCHAR, VARCHAR and TEXTNextInteger

Last updated 1 year ago

Was this helpful?

©

postgresqltutorial.com