psql CLI va pgAdmin — asosiy ishlatish

~15 daq · PostgreSQL · Kirish va O'rnatish

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 psql yoki psql -U admin -d mydb -h localhost
  • Mac: psql -U postgres yoki psql -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