2-bo‘lim
psql bilan ishlash
Bazaga ulanish, psql meta-buyruqlari, jadval tuzilishini ko'rish, chiqish formatlari va fayldan so'rov bajarish.
Ushbu bo‘lim mundarijasi
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:
Ulangandan keyin taklif satri paydo bo'ladi:
kutubxona=#
Bu yerdagi belgi ham ma'lumot beradi:
| Belgi | Ma'nosi |
|---|---|
=# | Superfoydalanuvchi sifatida ulangansiz |
=> | Oddiy foydalanuvchi |
-# | So'rov tugallanmagan - nuqta-vergul kutilyapti |
'# | Tirnoq yopilmagan |
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:
| Turi | Boshlanishi | Kim bajaradi |
|---|---|---|
| SQL so'rovi | SELECT, INSERT... | Server |
| Meta-buyruq | \ belgisi bilan | psql ning o'zi |
Meta-buyruqlar serverga umuman bormaydi - ular psql ichida bajariladi va nuqta-vergul talab qilmaydi.
Eng ko'p ishlatiladiganlari:
| Buyruq | Nima qiladi |
|---|---|
\l | Bazalar ro'yxati |
\c baza | Boshqa bazaga ulanish |
\dt | Jadvallar ro'yxati |
\d jadval | Jadval tuzilishi |
\du | Rollar (foydalanuvchilar) ro'yxati |
\df | Funksiyalar ro'yxati |
\x | Kengaytirilgan ko'rinishni yoqish |
\timing | Har so'rov vaqtini ko'rsatish |
\i fayl.sql | Fayldagi so'rovlarni bajarish |
\? | Barcha meta-buyruqlar yordami |
\q | Chiqish |
\d buyrug'i eng foydalisi. U jadval haqida hamma narsani
ko'rsatadi:
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:
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:
kutubxona=# SELECT current_database() AS baza, current_user AS rol;
baza | rol
-----------+----------
kutubxona | husanboy
(1 row)
Vaqt bilan ishlaydigan funksiyalar ham foydali:
SELECT date_trunc('day', TIMESTAMP '2026-03-15 14:30:00') AS kun,
EXTRACT(year FROM DATE '2026-03-15') AS yil;
kun | yil
---------------------+------
2026-03-15 00:00:00 | 2026
(1 row)
\timing - optimizatsiyaning birinchi qadamiSo'rovni tezlashtirishdan oldin uning qancha vaqt olayotganini bilish kerak.
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:
psql -U husanboy -d kutubxona -f sxema.sql
Yoki psql ichidan:
kutubxona=# \i sxema.sql
Xato bo'lsa, psql odatda davom etaveradi. Buni to'xtatish uchun:
psql -v ON_ERROR_STOP=1 -f sxema.sql
ON_ERROR_STOP majburiyUsiz 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:
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.
psqlbilan bazaga ulaning va taklif satridagi belgini yozib oling.\lbilan bazalar ro'yxatini ko'ring.- Yangi baza yarating va
\cbilan unga ulaning. \dtni bajaring - hozircha nima chiqadi?\?bilan yordamni oching va uchta yangi buyruq toping.\xni yoqib, bitta so'rovni vertikal ko'rinishda chiqaring.\timingni yoqing va oddiy so'rov qancha vaqt olishini ko'ring.SELECT current_database()ni bajaring.- Nuqta-vergulsiz so'rov yozib, taklif satri qanday o'zgarishini kuzating.
ON_ERROR_STOPnima 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.\xustunlar ko'p bo'lganda ko'rinishni vertikal qiladi.\timingso'rov qancha vaqt olganini ko'rsatadi.- Fayldan bajarish:
-f fayl.sqlyoki psql ichida\i. - Migratsiyalarda
ON_ERROR_STOP=1va--single-transaction- majburiy odat.
Keyingi bo'limda PostgreSQL ning ma'lumot turlari bilan tanishamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.