2-bo‘lim

psql bilan ishlash

Bazaga ulanish, psql meta-buyruqlari, jadval tuzilishini ko'rish, chiqish formatlari va fayldan so'rov bajarish.

🕑 9 daqiqa o‘qish 📄 631 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Bazaga ulanish
  2. Meta-buyruqlar
  3. Kengaytirilgan ko'rinish
  4. Chiqishni tekshirish
  5. Fayldan bajarish
  6. Xulosa

psql - PostgreSQL bilan birga keladigan buyruq qatori mijozi. U oddiy ko'rinadi, lekin kundalik ishning katta qismi aynan shu yerda bajariladi.

Bazaga ulanish #

Ulanish uchun to'rtta narsa kerak:

Ulanish uchun nima kerak psql -h localhost -p 5432 -U husanboy -d kutubxona -h server manzili -p port (odatda 5432) -U foydalanuvchi (rol) -d baza nomi Bittasi ham majburiy emas Ko'rsatilmasa, PostgreSQL tizim foydalanuvchingiz nomini va 5432-portni oladi Shuning uchun ko'pincha shunchaki "psql kutubxona" yozish yetarli
Parolni buyruqqa yozmang - PostgreSQL uni o'zi so'raydi

Ulangandan keyin taklif satri paydo bo'ladi:

Natija
kutubxona=#

Bu yerdagi belgi ham ma'lumot beradi:

BelgiMa'nosi
=#Superfoydalanuvchi sifatida ulangansiz
=>Oddiy foydalanuvchi
-#So'rov tugallanmagan - nuqta-vergul kutilyapti
'#Tirnoq yopilmagan
Nuqta-vergulni unutmang

PostgreSQL so'rov tugaganini ; belgisidan biladi. Uni qo'ymasangiz, Enter bosilganda so'rov bajarilmaydi - taklif satri -# ga aylanadi va baza davomini kutadi.

Bu yangi boshlovchilarni eng ko'p chalkashtiradigan holat: "nima uchun hech narsa bo'lmayapti?" degan savolning javobi deyarli har doim shu.

Chiqib ketish uchun ; qo'ying yoki Ctrl+C bosing.

Meta-buyruqlar #

psql da ikki xil buyruq bor va ularni ajratish muhim:

TuriBoshlanishiKim bajaradi
SQL so'roviSELECT, INSERT...Server
Meta-buyruq\ belgisi bilanpsql ning o'zi

Meta-buyruqlar serverga umuman bormaydi - ular psql ichida bajariladi va nuqta-vergul talab qilmaydi.

Eng ko'p ishlatiladiganlari:

BuyruqNima qiladi
\lBazalar ro'yxati
\c bazaBoshqa bazaga ulanish
\dtJadvallar ro'yxati
\d jadvalJadval tuzilishi
\duRollar (foydalanuvchilar) ro'yxati
\dfFunksiyalar ro'yxati
\xKengaytirilgan ko'rinishni yoqish
\timingHar so'rov vaqtini ko'rsatish
\i fayl.sqlFayldagi so'rovlarni bajarish
\?Barcha meta-buyruqlar yordami
\qChiqish

\d buyrug'i eng foydalisi. U jadval haqida hamma narsani ko'rsatadi:

Natija
kutubxona=# \d kitob
                          Table "public.kitob"
   Column   |     Type      | Nullable |             Default
------------+---------------+----------+----------------------------------
 id         | integer       | not null | generated always as identity
 sarlavha   | text          | not null |
 nashr_yili | integer       |          |
 narx       | numeric(10,2) |          |
Indexes:
    "kitob_pkey" PRIMARY KEY, btree (id)

Kengaytirilgan ko'rinish #

Ustunlar ko'p bo'lganda jadval ekranga sig'maydi. \x buyrug'i ko'rinishni vertikal qilib beradi:

Natija
kutubxona=# \x
Expanded display is on.

kutubxona=# SELECT * FROM kitob WHERE id = 1;
-[ RECORD 1 ]-------------------
id         | 1
sarlavha   | O'tkan kunlar
nashr_yili | 1926
narx       | 45000.00

Bitta qatorni diqqat bilan o'qish kerak bo'lganda bu ancha qulay.

Chiqishni tekshirish #

Quyidagi so'rov joriy bazaning nomini va ulangan foydalanuvchini ko'rsatadi - adashib qolganda foydali:

Natija
kutubxona=# SELECT current_database() AS baza, current_user AS rol;
   baza    |   rol
-----------+----------
 kutubxona | husanboy
(1 row)

Vaqt bilan ishlaydigan funksiyalar ham foydali:

SQL
SELECT date_trunc('day', TIMESTAMP '2026-03-15 14:30:00') AS kun,
       EXTRACT(year FROM DATE '2026-03-15') AS yil;
Natija
         kun         | yil
---------------------+------
 2026-03-15 00:00:00 | 2026
(1 row)
\timing - optimizatsiyaning birinchi qadami

So'rovni tezlashtirishdan oldin uning qancha vaqt olayotganini bilish kerak.

Natija
kutubxona=# \timing
Timing is on.

kutubxona=# SELECT count(*) FROM kitob;
 count
-------
 10000
(1 row)

Time: 3.412 ms

Bu 15-bo'limdagi EXPLAIN bilan birga ishlatiladi: \timing qancha vaqt ketganini, EXPLAIN esa nimaga ketganini aytadi.

Fayldan bajarish #

Katta sxemani qo'lda terish o'rniga faylga yozib, bir marta bajarish qulay:

Terminal
psql -U husanboy -d kutubxona -f sxema.sql

Yoki psql ichidan:

Natija
kutubxona=# \i sxema.sql

Xato bo'lsa, psql odatda davom etaveradi. Buni to'xtatish uchun:

Terminal
psql -v ON_ERROR_STOP=1 -f sxema.sql
Migratsiyalarda ON_ERROR_STOP majburiy

Usiz birinchi so'rov yiqilsa ham, qolganlari bajariladi - va baza yarim o'zgargan holatda qoladi.

Buni topish juda qiyin: skript "muvaffaqiyatli" tugagandek ko'rinadi, lekin sxema noto'g'ri.

Ishlab chiqarishda har doim ikkalasini birga ishlating:

Terminal
psql -v ON_ERROR_STOP=1 --single-transaction -f migratsiya.sql

--single-transaction butun faylni bitta tranzaksiyaga o'raydi: xato bo'lsa, hamma narsa orqaga qaytariladi.

Amaliy topshiriq
  1. psql bilan bazaga ulaning va taklif satridagi belgini yozib oling.
  2. \l bilan bazalar ro'yxatini ko'ring.
  3. Yangi baza yarating va \c bilan unga ulaning.
  4. \dt ni bajaring - hozircha nima chiqadi?
  5. \? bilan yordamni oching va uchta yangi buyruq toping.
  6. \x ni yoqib, bitta so'rovni vertikal ko'rinishda chiqaring.
  7. \timing ni yoqing va oddiy so'rov qancha vaqt olishini ko'ring.
  8. SELECT current_database() ni bajaring.
  9. Nuqta-vergulsiz so'rov yozib, taklif satri qanday o'zgarishini kuzating.
  10. ON_ERROR_STOP nima uchun kerakligini o'z so'zingiz bilan yozing.

Xulosa #

  • psql - PostgreSQL ning asosiy buyruq qatori mijozi.
  • Ulanish uchun to'rt parametr: -h, -p, -U, -d; ko'pi standart qiymatga ega.
  • Taklif satridagi belgi holatni bildiradi: =#, =>, -#, '#.
  • SQL so'rovi serverga ketadi, \ bilan boshlangan meta-buyruq esa psql ichida bajariladi.
  • Meta-buyruqlar nuqta-vergul talab qilmaydi.
  • \d jadval - jadval tuzilishini ko'rishning eng tez yo'li.
  • \x ustunlar ko'p bo'lganda ko'rinishni vertikal qiladi.
  • \timing so'rov qancha vaqt olganini ko'rsatadi.
  • Fayldan bajarish: -f fayl.sql yoki psql ichida \i.
  • Migratsiyalarda ON_ERROR_STOP=1 va --single-transaction - majburiy odat.

Keyingi bo'limda PostgreSQL ning ma'lumot turlari bilan tanishamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.