psql CLI va pgAdmin — asosiy ishlatish
Muammodan boshlaylik
PostgreSQL o'rnatildi. Endi nima? Database bilan qanday gaplashiladi?
Kod yozayotganda PostgreSQL ga so'rov yuborasiz — bu avtomatik bo'ladi. Lekin ba'zida:
- Database ichida nima borligini tekshirish kerak
- SQL so'rovni sinab ko'rish kerak
- Jadval tuzilmasini ko'rish kerak
- Xatoni topish uchun to'g'ridan-to'g'ri so'rov yozish kerak
Buning uchun ikki asbob bor: psql (terminal) va pgAdmin (grafik interfeys).
psql nima?
psql — PostgreSQL ning o'z terminali. PostgreSQL bilan birga o'rnatiladi. Undagi har bir buyruq PostgreSQL serveriga yuboriladi va natija terminalda ko'rinadi.
Hayotiy o'xshatma
Oshpaz va oshxona. Oshpaz — siz, oshxona — PostgreSQL. psql — oshxonaga kirib to'g'ridan-to'g'ri buyurtma berish. pgAdmin esa — menyuli restoran: ko'rgazmali, qulay, lekin har doim ochiq bo'lavermaydi.
Tezkor tekshiruv va oddiy so'rovlar uchun psql tezroq. Vizual ko'rish, murakkab diagramma kerak bo'lsa — pgAdmin.
psql ga kirish — operatsion tizimga qarab
Linux (Ubuntu)
PostgreSQL Linux ga o'rnatilganda postgres nomli maxsus tizim foydalanuvchisi yaratiladi. Unga o'tib kiriladi:
sudo -u postgres psql
postgres=# ko'rinadi — siz hozir postgres default database dasiz. Boshqa database ga o'tish:
sudo -u postgres psql -d mydb
Yoki foydalanuvchi nomi va parol bilan:
psql -U admin -d mydb -h localhost
# Password: ...
Mac (Homebrew)
psql -U postgres
Homebrew da postgres foydalanuvchisi parolsiz kiradi. Parol so'ralsa — Enter bosing.
Boshqa foydalanuvchi bilan:
psql -U admin -d mydb -h localhost
Windows
O'rnatish bilan birga SQL Shell (psql) dasturi keladi. Start menyudan "SQL Shell" deb qidiring va oching.
Ochilganda ketma-ket so'raydi:
Server [localhost]: ← Enter bosing
Database [postgres]: ← mydb yozing
Port [5432]: ← Enter bosing
Username [postgres]: ← admin yozing
Password for user admin: ← parolingizni yozing
Yoki cmd terminaldan to'g'ridan-to'g'ri:
psql -U admin -d mydb -h localhost
psql topilmasa — to'liq yo'lni yozing:
"C:\Program Files\PostgreSQL\16\bin\psql.exe" -U admin -d mydb -h localhost
psql ichiga kirgandan so'ng
Muvaffaqiyatli kirganda mydb=# ko'rinadi:
psql (16.0)
Type "help" for help.
mydb=#
Bu — psql prompt. Endi SQL so'rov yoki meta-buyruqlar yozsa bo'ladi.
Meta-buyruqlar — \ bilan boshlanadi
psql ning o'z buyruqlari bor, ular \ bilan boshlanadi. Bu SQL emas — psql ning ichki tili.
\l — barcha databaselar ro'yxati
\c dbname — boshqa databasega o'tish
\dt — joriy databasedagi jadvallar
\d jadval_nomi — jadval tuzilmasi (ustunlar, turlar)
\du — foydalanuvchilar va rollar
\timing — so'rov bajarilish vaqtini ko'rsatish
\i fayl.sql — SQL faylni o'qib bajarish
\q — psqldan chiqish
Amalda qanday ko'rinadi:
mydb=# \l
List of databases
Name | Owner | Encoding
-----------+---------+---------
mydb | admin | UTF8
postgres | admin | UTF8
(2 rows)
mydb=# \dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+-------
public | foydalanuvchi | table | admin
public | buyurtmalar | table | admin
(2 rows)
mydb=# \d foydalanuvchi
Table "public.foydalanuvchi"
Column | Type | Nullable
----------+-------------------+---------
id | integer | not null
ism | character varying | not null
email | character varying | not null
SQL so'rov yozish
mydb=# SELECT * FROM foydalanuvchi;
id | ism | email
----+-------+--------------
1 | Ali | ali@mail.com
2 | Vali | vali@mail.com
(2 rows)
⚠️ SQL so'rovlar
;bilan tugaydi.;yozmasangiz — psql davom ettirish kutadi,mydb-#ko'rinadi.;yozib Enter bosing.
Uzun so'rovni bir necha qatorga bo'lib yozish mumkin:
mydb=# SELECT ism, email
mydb-# FROM foydalanuvchi
mydb-# WHERE id = 1;
pgAdmin — grafik interfeys
pgAdmin — PostgreSQL uchun grafik boshqaruv paneli. Jadvallarni ko'rish, so'rov yozish, backup olish — hammasini sichqoncha bilan qilish mumkin.
O'rnatish
Windows — PostgreSQL installer bilan birga pgAdmin ham o'rnatiladi. Start menyudan "pgAdmin 4" deb qidiring.
Mac:
brew install --cask pgadmin4
Linux (Ubuntu):
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/pgadmin.gpg
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/pgadmin.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'
sudo apt update
sudo apt install pgadmin4-desktop
PostgreSQL serverini pgAdmin ga ulash
pgAdmin ochilgandan so'ng chap panelda "Add New Server" tugmasini bosing:
General:
Name: Mening serverim
Connection:
Host: localhost
Port: 5432
Database: mydb
Username: admin
Password: secret
Save tugmasini bosing — server ulandi.
pgAdmin — asosiy navigatsiya
Servers
└── Mening serverim
└── Databases
└── mydb
└── Schemas
└── public
└── Tables
├── foydalanuvchi
└── buyurtmalar
Jadval ustida sichqonchaning o'ng tugmasi → View/Edit Data → All Rows — jadval mazmunini ko'rish.
SQL yozish uchun — yuqori menyudan Tools → Query Tool.
psql vs pgAdmin — qachon qaysi biri?
┌──────────────────────────────┬──────────────────────────────┐
│ psql │ pgAdmin │
├──────────────────────────────┼──────────────────────────────┤
│ Tezkor so'rov va tekshiruv │ Jadvallarni vizual ko'rish │
│ Masofaviy server (SSH) │ Jadval tuzilmasini ko'rish │
│ Skript va avtomatizatsiya │ Boshlang'ich o'rganish │
│ Har doim mavjud │ Alohida o'rnatish kerak │
└──────────────────────────────┴──────────────────────────────┘
Tez-tez uchraydigan xatolar
psql: command not found
psql PATH da yo'q. Linux da:
sudo apt install postgresql-client
Mac da Homebrew orqali o'rnatilgan bo'lsa lekin psql topilmasa:
echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Windows da psql topilmasa — to'liq yo'lni yozing yoki PostgreSQL bin papkasini PATH ga qo'shing: Tizim sozlamalari → Muhit o'zgaruvchilari → Path.
FATAL: role "postgres" does not exist
Mac da Homebrew bilan o'rnatilganda postgres foydalanuvchisi avtomatik yaratilmasligi mumkin. Buning o'rniga kompyuter foydalanuvchi nomingizni ishlating:
psql -U $(whoami) -d postgres
FATAL: password authentication failed
Parol noto'g'ri. pg_hba.conf faylida autentifikatsiya usulini tekshiring — md5 yoki scram-sha-256 bo'lishi kerak. Linux da:
sudo nano /etc/postgresql/16/main/pg_hba.conf
So'rov natijasi chiqmaydi, mydb-# turadi
; yozilmagan. Nuqtali vergul yozib Enter bosing:
mydb-# ;
Xulosa
psql — PostgreSQL ning terminal klienti. \ bilan boshlanadigan meta-buyruqlar orqali database, jadvallar, foydalanuvchilarni ko'rish mumkin. SQL so'rovlar ; bilan tugaydi.
pgAdmin — grafik interfeys. Vizual ko'rish va o'rganish uchun qulay.
Kirish:
- Linux:
sudo -u postgres psqlyokipsql -U admin -d mydb -h localhost - Mac:
psql -U postgresyokipsql -U admin -d mydb -h localhost - Windows: SQL Shell yoki
psql -U admin -d mydb -h localhost
Keyingi dars
4-dars: Ma'lumot turlari — INTEGER, SERIAL, TEXT, BOOLEAN, TIMESTAMP, UUID, ARRAY, JSONB