Postgres buyruqlari va skriptlari. PostgreSQL-ning asosiy buyruqlari So'rovning bajarilish vaqtini qanday aniqlash mumkin

Ushbu maqolada men sizga boshqarish uchun eng foydali 15 ta buyruqni ko'rsataman postgreSQL.

1. PostgreSQL da root parolni qanday o'zgartirish mumkin?

$ / usr / local / pgsql / bin / psql postgres postgres Parol: (eski parol) # FOYDALANUVCHI postgreslarini PASSWORD BILAN ALTER 'tmppassword'; $ / usr / local / pgsql / bin / psql postgres postgres Parol: (tmppassword)

Oddiy foydalanuvchi uchun parolni o'zgartirish ham xuddi shunday. Ildiz foydalanuvchi har qanday foydalanuvchi uchun parolni o'zgartirishi mumkin.

# FOYDALANUVCHI foydalanuvchi nomini PAROL BILAN ALTER 'tmppassword';

2. PostgreSQL-ni autorunga qanday sozlash mumkin?

$ su - root # tar xvfz postgresql-8.3.7.tar.gz # cd postgresql-8.3.7 # cp hissa / start-skriptlar / linux /etc/rc.d/init.d/postgresql # chmod a + x / etc / rc.d / init.d / postgresql

3. Server holatini tekshirish

$ /etc/init.d/postgresql holati Parol: pg_ctl: server ishlayapti (PID: 6171) / usr / local / pgsql / bin / postgres “-D” “/ usr / local / pgsql / data” [ Izoh: Bu xabar server normal ishlayotganligini bildiradi] $ /etc/init.d/postgresql holati Parol: pg_ctl: server ishlamaydi [ Izoh: Bu xabar server ishlamayotganligini bildiradi]

4. PostgreSQL qanday ishga tushiriladi, to‘xtatiladi, qayta ishga tushiriladi?

# xizmat postgresql stop PostgreSQL to'xtatilmoqda: server to'xtab qoldi # xizmat postgresql start PostgreSQL-ni boshlash: ok # postgresql xizmatini qayta ishga tushiring PostgreSQL qayta ishga tushirilmoqda: server to'xtadi

5. PostgreSQL ning qaysi versiyasi ishlayotganini qanday ko'rishim mumkin?

$ / usr / local / pgsql / bin / psql testi psql 8.3.7, PostgreSQL interaktiv terminaliga xush kelibsiz. Turi: \ tarqatish shartlari uchun mualliflik huquqi \ SQL buyruqlari bo'yicha yordam uchun \ h? psql buyruqlari bilan yordam olish uchun \ g yoki so'rovni bajarish uchun nuqta-vergul bilan yakunlang \ testdan chiqish uchun q = # versiyani tanlang (); versiya ————————————————————————————————— i686-pc-linux-gnu-da PostgreSQL 8.3.7, tuzilgan GCC gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42) (1 qator) testi = #

5. PostgreSQL da foydalanuvchi qanday yaratiladi?

Buning uchun ikkita usul mavjud ..

1-usul: CREATE USER buyrug'i yordamida PSQL qobig'i orqali foydalanuvchi yarating.

# 'tmppassword' paroli BILAN FOYDALANUVCHI rameshini YARATING; ROL YARATING

Usul2: Shell orqali createuser buyrug'ida foydalanuvchi yarating.

$ / usr / local / pgsql / bin / createuser sathiya Yangi rol superuser bo'ladimi? (y / n) n Yangi rolga ma'lumotlar bazalarini yaratishga ruxsat beriladimi? (y / n) n Yangi rolga ko'proq yangi rollarni yaratishga ruxsat beriladimi? (y / n) n ROL YARATING

6. PostgreSQL da ma'lumotlar bazasi qanday yaratiladi?

Buning uchun 2 ta usul mavjud.

Usul1: CREATE DATABASE buyrug'i yordamida PSQL qobig'i orqali ma'lumotlar bazasini yarating.

# Egasi ramesh BILAN mydb ma'lumotlar bazasini yaratish; MA'LUMOTLAR BAZASI YARATING

Usul2: Createb buyrug'idan foydalanamiz.

$ / usr / local / pgsql / bin / createdb mydb -O ramesh MA'LUMOTLAR BAZASI YARATING

7. Postgresql-dagi barcha ma'lumotlar bazalari ro'yxatini olish?

# \ l Ma'lumotlar bazalari ro'yxati Nomi | Egasi | Kodlash ———- + ———- + ———- zahira | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | UTF8 shabloni0 | postgres | UTF8 andozasi1 | postgres | UTF8

8. PostgreSQL da ma'lumotlar bazasini qanday o'chirish mumkin?

# \ l Ma'lumotlar bazalari ro'yxati Nomi | Egasi | Kodlash ———- + ———- + ———- zahira | postgres | UTF8 mydb | ramesh | UTF8 postgres | postgres | UTF8 shabloni0 | postgres | UTF8 andozasi1 | postgres | UTF8 # DROP DATABASE mydb; TO'CHIRISH MA'LUMOTLAR BAZASI

9. Buyruqlar uchun o'rnatilgan yordamdan foydalanish

Jamoa \? PSQL buyrug'i uchun yordam liniyasini ko'rsatadi. \ h CREATE CREATE bilan boshlanadigan barcha buyruqlar uchun yordamni ko'rsatadi.

# \? # \ h YARAT # \ h INDEKS YARATISH

10. Postgresql da ma'lumotlar bazasidagi barcha jadvallar ro'yxatini qanday olish mumkin?

# \ d

Bo'sh baza uchun siz "Hech qanday aloqa topilmadi" xabarini olasiz.

11. So'rovning bajarilish vaqtini qanday aniqlash mumkin?

# \ timing - ushbu buyruqni bajargandan so'ng, har bir keyingi so'rov bajarilish vaqtini ko'rsatadi.

# \ vaqt Vaqt yoqilgan. # pg_catalog.pg_atributidan SELECT *; Vaqt: 9,583 ms

12. PostgreSQL da ma'lumotlar bazalari va jadvallarni qanday zahiralash va tiklash mumkin?

Bu savol juda katta va men uni keyinroq alohida maqolada e'lon qilaman.

13. PostgreSQL da mavjud funksiyalar ro'yxatini qanday ko'rishim mumkin?

Mavjud funktsiyalar ro'yxati uchun \ df + deb ayting

# \ df # \ df +

14. PostgreSQL so'rovini tahrirlovchida qanday tahrirlash mumkin?

# \ e

\ e so'rovni tahrirlash va saqlashingiz mumkin bo'lgan muharrirni ochadi.

15. PostgreSQL tarixi faylini qayerdan topsam bo'ladi?

~ / .bash_history fayli singari, postgreSQL ham barcha sql buyruqlarini ~ / .psql_history faylida saqlaydi.

$ cat ~ / .psql_history foydalanuvchi postgreslarini "tmppassword" paroli bilan o'zgartiring; \ h foydalanuvchi tanlash versiyasini o'zgartirish (); "tmppassword" paroli bilan foydalanuvchi ramesh yaratish; \ timing pg_catalog.pg_attribute dan * ni tanlang;

15 ta foydali PostgreSQL buyruqlari

Tarmoqda asosiy buyruqlarni tavsiflovchi ko'plab PostgreSQL qo'llanmalari mavjud. Ammo ishga chuqurroq sho‘ng‘ish sari ilg‘or jamoalarni talab qiladigan amaliy masalalar paydo bo‘ladi.

Bunday buyruqlar yoki parchalar kamdan-kam hujjatlashtiriladi. Keling, ishlab chiquvchilar va ma'lumotlar bazasi ma'murlari uchun foydali bo'lgan bir nechta misollarni ko'rib chiqaylik.

Ma'lumotlar bazasi haqida ma'lumot olish

Ma'lumotlar bazasi hajmi

Ma'lumotlar bazasi fayllari (saqlash) jismoniy hajmini olish uchun biz quyidagi so'rovdan foydalanamiz:

SELECT pg_maʼlumotlar bazasi_size (joriy_maʼlumotlar bazasi ());

Natija 41809016 kabi raqam sifatida taqdim etiladi.

joriy_ma'lumotlar bazasi () - joriy ma'lumotlar bazasi nomini qaytaruvchi funktsiya. Buning o'rniga matnga nom kiritishingiz mumkin:

pg_ma'lumotlar bazasi_sizeni SELECT ("mening_ma'lumotlar bazasi");

Ma'lumotni odam o'qiy oladigan shaklda olish uchun biz pg_size_pretty funktsiyasidan foydalanamiz:

SELECT pg_size_pretty (pg_ma'lumotlar bazasi_size (joriy_ma'lumotlar bazasi ()));

Natijada biz 40 Mb shaklidagi ma'lumotlarni olamiz.

Jadvallar ro'yxati

Ba'zan siz ma'lumotlar bazasi jadvallari ro'yxatini olishni xohlaysiz. Buning uchun quyidagi so'rovdan foydalaning:

table_name FROM information_schema.tables QAYERDA jadval_sxema YO'Q ("information_schema", "pg_catalog");

information_schema - jadvallar, maydonlar va boshqalar kabi ko'rinishlar to'plamini o'z ichiga olgan standart ma'lumotlar bazasi sxemasi. Jadval ko'rinishlarida ma'lumotlar bazasidagi barcha jadvallar haqidagi ma'lumotlar mavjud.

Quyida tavsiflangan so'rov joriy ma'lumotlar bazasining belgilangan sxemasidan barcha jadvallarni tanlaydi:

table_name FROM information_schema.tables QAYERDA jadval_sxema YO'Q ("information_schema", "pg_catalog") VA table_schema IN ("ommaviy", "myschema");

Oxirgi IN bandida siz ma'lum bir sxema nomini belgilashingiz mumkin.

Jadval hajmi

Ma'lumotlar bazasi hajmini olish bilan taqqoslaganda, jadval ma'lumotlarining hajmini mos keladigan funktsiya yordamida hisoblash mumkin:

SELECT pg_relation_size ("hisoblar");

pg_relation_size funktsiyasi belgilangan jadval yoki indeksning belgilangan qatlami diskda egallagan bo'sh joy miqdorini qaytaradi.

Eng katta jadvalning nomi

Joriy ma'lumotlar bazasida jadvallar hajmi bo'yicha tartiblangan jadvallar ro'yxatini ko'rsatish uchun quyidagi so'rovni bajaring:

RENOMI TANGLASH, pg_class FROM REpages ORDER BY repages DESC;

Eng katta jadval haqidagi ma'lumotlarni ko'rsatish uchun biz LIMIT yordamida so'rovni cheklaymiz:

RENOMI TANGLASH, pg_class dan qayta sahifalar.

relname - jadval, indeks, ko'rinish va boshqalarning nomi.
relpages - sahifalar sonidagi ushbu jadvalning diskdagi ko'rinishi hajmi (sukut bo'yicha, bitta sahifa 8 KB).
pg_class - bu ma'lumotlar bazasi jadvallari orasidagi munosabatlar haqidagi ma'lumotlarni o'z ichiga olgan tizim jadvali.

Ulangan foydalanuvchilar ro'yxati

Ulangan foydalanuvchilarning nomi, IP va foydalanilgan portini bilish uchun quyidagi so'rovni bajaring:

pg_stat_activity FROM ma'lumotlar nomi, foydalanuvchi nomi, client_addr, client_port ni tanlang;

Foydalanuvchi faoliyati

Muayyan foydalanuvchining ulanish faolligini bilish uchun biz quyidagi so'rovdan foydalanamiz:

pg_stat_activity WHERE FROM ma'lumotlar nomini tanlang usename = "devuser";

Ma'lumotlar va jadval maydonlari bilan ishlash

Ikki nusxadagi qatorlarni olib tashlash

Agar jadvalda birlamchi kalit bo'lmasa, yozuvlar orasida dublikatlar bo'lishi mumkin. Agar bunday jadval uchun, ayniqsa katta, butunlikni tekshirish uchun cheklovlarni o'rnatish kerak bo'lsa, biz quyidagi elementlarni olib tashlaymiz:

  • ikki nusxadagi qatorlar,
  • bir yoki bir nechta ustunlar takrorlanadigan holatlar (agar bu ustunlar asosiy kalit sifatida ishlatilishi kerak bo'lsa).

Mijoz ma'lumotlari bilan jadvalni ko'rib chiqing, bu erda butun qator takrorlanadi (ketma-ket ikkinchisi).

Quyidagi so'rov barcha dublikatlarni olib tashlashga yordam beradi:

CTID YO'Q QERDAGI mijozlardan O'CHIRISH (mijozlar GROUP BY mijozlardan max (ctid) ni tanlang. *);

Har bir yozuv uchun noyob bo'lgan ctid maydoni sukut bo'yicha yashirin, lekin u har bir jadvalda mavjud.

Oxirgi so'rov resurslarni talab qiladi, shuning uchun uni ishlab chiqarish loyihasida bajarishda ehtiyot bo'ling.

Endi maydon qiymatlari takrorlanadigan holatni ko'rib chiqing.

Agar barcha ma'lumotlarni saqlamasdan dublikatlarni o'chirish mumkin bo'lsa, biz quyidagi so'rovni bajaramiz:

CTID YO'Q QAYRDAGI mijozlardan O'CHIRISH (mijozlarning GROUP BY customer_id bo'yicha max (ctid) ni tanlang);

Agar ma'lumotlar muhim bo'lsa, avval dublikatlari bo'lgan yozuvlarni topishingiz kerak:

* CTID YO'Q QAYRDAGI mijozlarDAN SELECT (Tanlash maks. (ctid) FROM mijozlar GROUP BY customer_id);

Bunday yozuvlarni o'chirishdan oldin siz vaqtinchalik jadvalga o'tishingiz yoki ulardagi customer_id qiymatini boshqasiga almashtirishingiz mumkin.

Yuqorida tavsiflangan yozuvlarni o'chirish haqidagi so'rovning umumiy shakli quyidagicha:

DELETE FROM table_name WHERE ctid NOT IN (Tanlash max (ctid) FROM table_name GROUP BY ustun1);

Maydon turini xavfsiz o'zgartiring

Bunday vazifani ushbu ro'yxatga kiritish haqida savol tug'ilishi mumkin. Darhaqiqat, PostgreSQL-da ALTER buyrug'i yordamida maydon turini o'zgartirish juda oson. Keling, misol sifatida yana mijozlar jadvalini ko'rib chiqaylik.

customer_id maydonida varchar string ma'lumotlar turi ishlatiladi. Bu xato, chunki bu maydon butun son formatida bo'lgan mijoz identifikatorlarini saqlashi kerak. Varchar-dan foydalanish oqlanmaydi. Keling, ALTER buyrug'i yordamida ushbu tushunmovchilikni tuzatishga harakat qilaylik:

ALTER TABLE mijozlari ALTER COLUMN customer_id TYPE butun son;

Ammo bajarish natijasida biz xatoga duch kelamiz:

XATO: “customer_id” ustuni butun sonni kiritish uchun avtomatik ravishda uzatilmaydi
SQL holati: 42804
Maslahat: Konvertatsiya qilish uchun USING ifodasini belgilang.

Bu shuni anglatadiki, agar jadvalda ma'lumotlar mavjud bo'lsa, siz shunchaki maydon turini olib, o'zgartira olmaysiz. Varchar turi ishlatilganligi sababli, DBMS qiymatning butun son ekanligini aniqlay olmaydi. Ma'lumotlar ushbu turga to'liq mos keladigan bo'lsa-da. Ushbu fikrni aniqlashtirish uchun xato xabari ma'lumotlarimizni butun songa to'g'ri aylantirish uchun USING ifodasidan foydalanishni taklif qiladi:

ALTER TABLE mijozlari ALTER COLUMN customer_id TYPE integer USING (customer_id :: integer);

Natijada, hamma narsa xatosiz o'tdi:

E'tibor bering, USING-dan foydalanganda ma'lum bir ifodadan tashqari, funktsiyalar, boshqa maydonlar va operatorlardan foydalanish mumkin.

Misol uchun, customer_id maydonini yana varcharga aylantiramiz, lekin ma'lumotlar formatini o'zgartirish bilan:

ALTER TABLE mijozlari ALTER COLUMN customer_id TYPE varchar FOYDALANISH (customer_id || "-" || first_name);

Natijada, jadval quyidagicha ko'rinadi:

"Yo'qotilgan" qiymatlarni topish

Birlamchi kalit sifatida ketma-ketliklardan foydalanishda ehtiyot bo'ling: tayinlashda ketma-ketlikning ba'zi elementlari tasodifan o'tkazib yuboriladi va jadval bilan ishlash natijasida ba'zi yozuvlar o'chiriladi. Ushbu qiymatlarni qayta ishlatish mumkin, ammo ularni katta jadvallarda topish qiyin.

Keling, ikkita qidiruv variantini ko'rib chiqaylik.

Birinchi yo'l
"Yo'qolgan" qiymatga ega bo'lgan intervalning boshini topish uchun quyidagi so'rovni bajaramiz:

customer_id + 1 MAVJUD BO'LGAN mijozlarDAN TANGLASH (MISHLARDAN NULL NI QAYERDA SELECT NULL mi.customer_id = mo.customer_id + 1) customer_id BO'YICHA BUYURT;

Natijada, biz qiymatlarni olamiz: 5, 9 va 11.

Agar siz nafaqat birinchi hodisani, balki barcha etishmayotgan qiymatlarni topishingiz kerak bo'lsa, biz quyidagi (resurs talab qiladigan!) so'rovdan foydalanamiz:

seq_max AS BILAN (mijozlardan SELECT max (mijoz_identifikatori)), seq_min AS (mijozlardan min (mijoz_identifikatori) NI SELECT) *generatsiya_seriyasidan ((seq_min FROM SELECT min), (seq_max FROM max. SELECT)) MIJOLARDAN SELECT customer_id ISOS;

Natijada, biz quyidagi natijani ko'ramiz: 5, 9 va 6.

Ikkinchi yo'l
Biz customer_id bilan bog'langan ketma-ketlikning nomini olamiz:

SELECT pg_get_serial_sequence ("mijozlar", "customer_id");

Va biz barcha etishmayotgan identifikatorlarni topamiz:

sequence_info AS BILAN (boshlang'ich_qiymat, oxirgi_qiymatni "SxemaNami"DAN TANGLASH. "SequenceName") SELECT generator_series ((sequence_info.start_value), (sequence_info.last_value)) sequence_info FROM TANGLASH mijoz_identifikatoridan MISOS;

Jadvaldagi qatorlar sonini hisoblash

Qatorlar soni standart hisoblash funksiyasi bilan hisoblanadi, lekin uni qo'shimcha shartlar bilan ishlatish mumkin.

Jadvaldagi satrlarning umumiy soni:

Jadvaldan (*) sonni tanlang;

Belgilangan maydonda NULL bo'lmasa, qatorlar soni:

TANGLASH sonini (col_name) jadvaldan;

Belgilangan maydon uchun noyob qatorlar soni:

SELECT count (dict col_name) FROM jadval;

Tranzaktsiyalardan foydalanish

Tranzaksiya harakatlar ketma-ketligini bitta operatsiyaga birlashtiradi. Uning o'ziga xosligi shundaki, agar operatsiyani bajarishda xatolik yuzaga kelsa, harakatlar natijalarining hech biri ma'lumotlar bazasida saqlanmaydi.

Keling, BEGIN buyrug'i yordamida tranzaksiyani boshlaylik.

BEGIN dan keyin barcha operatsiyalarni orqaga qaytarish uchun ROLLBACK buyrug'idan foydalaning.

Va qo'llash uchun - COMMIT buyrug'i.

Bajariladigan so'rovlarni ko'rish va to'ldirish

So'rovlar haqida ma'lumot olish uchun quyidagi buyruqni bajaring:

PID, yosh (so'rov_start, soat_vaqt tamg'asi ()), foydalanuvchi nomi, so'rov FROM pg_stat_activity WHERE so'rovini tanlang! = " "VA so'rov YAXSHI EMAS"% pg_stat_activity% "QUery_start BO'YICHA BUYURT;

Muayyan so'rovni to'xtatish uchun jarayon identifikatorini (pid) ko'rsatgan holda quyidagi buyruqni bajaring:

SELECT pg_cancel_backend (procpid);

So'rovni to'xtatish uchun quyidagi amallarni bajaring:

SELECT pg_terminate_backend (procpid);

Konfiguratsiya bilan ishlash

Klaster misolining joylashuvini topish va o'zgartirish

Vaziyat turli xil portlarda "o'tirgan" bir operatsion tizimda bir nechta PostgreSQL nusxalari sozlangan bo'lishi mumkin. Bunday holda, har bir misolning jismoniy joylashuviga yo'l topish juda asabiy ishdir. Ushbu ma'lumotni olish uchun biz qiziqish klasterining har qanday ma'lumotlar bazasi uchun quyidagi so'rovni bajaramiz:

ma'lumotlar_katalogini KO'RSATISH;

Buyruq yordamida joylashuvni boshqa narsaga o'zgartiramiz:

ma'lumotlar_katalogini yangi_katalog_yo'liga SET;

Ammo o'zgarishlar kuchga kirishi uchun qayta ishga tushirish kerak.

Mavjud ma'lumotlar turlari ro'yxatini olish

Buyruq yordamida mavjud ma'lumotlar turlari ro'yxatini olamiz:

Typname SELECT, typlen from pg_type bu yerda typtype = "b";

typname - ma'lumotlar turining nomi.
typlen - ma'lumotlar turining o'lchami.

Qayta yuklamasdan DBMS sozlamalarini o'zgartirish

PostgreSQL sozlamalari postgresql.conf va pg_hba.conf kabi maxsus fayllarda joylashgan. Ushbu fayllarni o'zgartirgandan so'ng, DBMS sozlamalarni qayta qabul qilishi kerak. Buning uchun ma'lumotlar bazasi serveri qayta ishga tushiriladi. Buni qilish kerakligi aniq, lekin minglab foydalanuvchilar tomonidan foydalaniladigan loyihaning ishlab chiqarish versiyasida bu juda istalmagan. Shuning uchun PostgreSQL serverni qayta ishga tushirmasdan o'zgarishlarni qo'llashingiz mumkin bo'lgan funksiyaga ega:

SELECT pg_reload_conf ();

Ammo, afsuski, u barcha parametrlarga taalluqli emas. Ba'zi hollarda sozlamalarni qo'llash uchun qayta ishga tushirish talab qilinadi.

Biz PostgreSQL yordamida ishlab chiquvchilar va DBAlar uchun ishlarni osonlashtirishga yordam beradigan buyruqlarni ko'rib chiqdik. Ammo bu barcha mumkin bo'lgan texnikalar emas. Agar siz qiziqarli muammolarga duch kelsangiz, ular haqida sharhlarda yozing. Keling, foydali tajribani baham ko'ramiz!

Oxirgi yangilanish: 17.03.2018

Jadvallarni yaratish uchun CREATE TABLE buyrug'idan so'ng jadval nomidan foydalaning. Jadval ustunlari va ularning atributlarini belgilaydigan ushbu buyruq bilan ishlatilishi mumkin bo'lgan bir qancha operatorlar ham mavjud. Jadval yaratishning umumiy sintaksisi quyidagicha:

JADVAL YARATISH jadval_nomi (ustun_nomi1 ma'lumotlar turi ustun_atributlari1, ustun_nomi 2 ma'lumotlar turi ustun_atributlari2, ................................... ....... ustun_nomiN ma'lumotlar turi ustun_ atributlariN, jadval_ atributlari);

Barcha ustunlar uchun spetsifikatsiya jadval nomidan keyin qavs ichida keltirilgan. Bundan tashqari, har bir ustun uchun u taqdim etadigan ma'lumotlarning nomi va turi ko'rsatilishi kerak. Ma'lumotlar turi ustunda qanday ma'lumotlar (raqamlar, satrlar va boshqalar) bo'lishi mumkinligini aniqlaydi.

Masalan, pgAdmin orqali ma'lumotlar bazasida jadval tuzamiz. Buning uchun avval pgAdmin-da maqsadli ma'lumotlar bazasini tanlang, ustiga sichqonchaning o'ng tugmachasini bosing va kontekst menyusidagi So'rovlar vositasi ... bandini tanlang:

Shundan so'ng, SQL kodini kiritish uchun maydon ochiladi. Bundan tashqari, jadval SQL ga kirish uchun ushbu maydonni ochadigan ma'lumotlar bazasi uchun maxsus yaratiladi.

JADVAL mijozlarini YARATING (Id SERIAL BIRINCHI KEY, ism CHARACTER VARYING (30), Familiya CHARACTER VARYING (30), Email CHARACTER VARYING (30), Age INTEGER);

Bu holda, Mijozlar jadvali beshta ustunni belgilaydi: Id, Ism, Familiya, Yosh, Elektron pochta. Birinchi ustun, Id, mijoz identifikatorini ifodalaydi, u asosiy kalit bo'lib xizmat qiladi va shuning uchun SERIAL turiga kiradi. Aslida, bu ustunda 1, 2, 3 va hokazo raqamli qiymat saqlanadi, bu har bir yangi qator uchun avtomatik ravishda bittaga ortadi.

Keyingi uchta ustun mijozning ismi, familiyasi va elektron pochta manzilini ifodalaydi va CHARACTER VARYING (30) turiga ega, ya'ni ular 30 ta belgidan ortiq bo'lmagan qatorni ifodalaydi.

Oxirgi ustun, Yosh, foydalanuvchining yoshini bildiradi va INTEGER turiga ega, ya'ni u raqamlarni saqlaydi.

Va bu buyruqni bajargandan so'ng, mijozlar jadvali tanlangan ma'lumotlar bazasiga qo'shiladi.

Jadvallarni tushirish

Jadvallarni tushirish uchun quyidagi sintaksisga ega DROP TABLE buyrug'idan foydalaning:

DROP TABLE table1 [, table2, ...];

Masalan, mijozlar jadvalini tushirish.

Salom, bugun men PostgreSQL-ning asosiy buyruqlari haqida kichik eslatma yaratmoqchiman. Siz PosgreSQL bilan ham interaktiv, ham buyruq satridan ishlashingiz mumkin. Dastur psql. Ishonchim komilki, ushbu ro'yxat siz uchun juda foydali bo'ladi va turli manbalar bo'ylab qidirish vaqtingizni tejaydi. Eslatib o'taman, bu Postgres DBMS asosidagi ochiq manbali loyiha 1986 yilda chiqarilgan bo'lib, u butun dunyo bo'ylab PGDG ishlab chiquvchilari guruhi tomonidan ishlab chiqilmoqda, mohiyatiga ko'ra 5-8 kishini tashkil etadi, ammo shunga qaramay, u juda jadal rivojlanmoqda, barcha yangi funktsiyalarni joriy qilmoqda va eski xato va xatolarni tuzatmoqda.

Interaktiv rejimda PostgreSQL-ning asosiy buyruqlari:

  • \ connect db_name - db_name nomli ma'lumotlar bazasiga ulanish
  • \ du - foydalanuvchilar ro'yxati
  • \ dp (yoki \ z) - jadvallar, ko'rinishlar, ketma-ketliklar ro'yxati, ularga kirish huquqlari
  • \ di - indekslar
  • \ ds - ketma-ketliklar
  • \ dt - jadvallar ro'yxati
  • \ dt + - tavsifi bilan barcha jadvallar ro'yxati
  • \ dt * s * - nomdagi s ni o'z ichiga olgan barcha jadvallar ro'yxati
  • \ dv - ko'rishlar
  • \ dS - tizim jadvallari
  • \ d + - jadval tavsifi
  • \ o - so'rov natijalarini faylga yuborish
  • \ l - ma'lumotlar bazalari ro'yxati
  • \ i - fayldan kiruvchi ma'lumotlarni o'qish
  • \ e - muharrirda so'rov buferining joriy tarkibini ochadi (agar EDITOR o'zgaruvchisi muhitida boshqacha ko'rsatilmagan bo'lsa, vi sukut bo'yicha ishlatiladi)
  • \ d "jadval_nomi" - jadval tavsifi
  • \ i /my/directory/my.sql kabi tashqi fayldan buyruqni ishga tushiraman
  • \ pset - formatlash parametrlarini o'rnatish buyrug'i
  • \ echo - xabarni ko'rsatadi
  • \ set - muhit o'zgaruvchisining qiymatini o'rnatadi. Parametrlarsiz joriy o'zgaruvchilar ro'yxatini ko'rsatadi (\ o'rnatilmagan - o'chiriladi).
  • \? - psql havolasi
  • \ help - SQL havolasi
  • \ q (yoki Ctrl + D) - dasturdan chiqish

Buyruqlar qatoridan PostgreSQL bilan ishlash:

  • -c (yoki -buyruq) - SQL buyrug'ini interaktiv rejimga o'tmasdan ishga tushirish
  • -f file.sql - file.sql faylidan buyruqlarni bajarish
  • -l (yoki -list) - mavjud ma'lumotlar bazalarini ro'yxatlaydi
  • -U (yoki -username) - foydalanuvchi nomini belgilang (masalan, postgres)
  • -W (yoki -password) - parol so'rovi
  • -d dbname - dbname ma'lumotlar bazasiga ulanish
  • -h - xost nomi (server)
  • -s - bosqichma-bosqich rejim, ya'ni barcha buyruqlarni tasdiqlashingiz kerak bo'ladi
  • –S - bir qatorli rejim, ya'ni yangi qator so'rovni bajaradi (qutilish; SQL bayonotining oxirida)
  • -V - interaktiv rejimga kirmasdan PostgreSQL versiyasi

Misollar:

psql -U postgres -d dbname -c “CREATE TABLE my (some_id serial PRIMARY KEY, some_text text);” - dbname ma'lumotlar bazasida buyruqlar bajarilishi.

psql -d dbname -H -c "SELECT * FROM my" -o my.html - so'rov natijasini html faylga chiqarish.

PosgreSQL utilitlari (dasturlari):

  • createdb va dropdb - ma'lumotlar bazasini yaratish va tushirish (mos ravishda)
  • createuser va dropuser - yaratish va foydalanuvchi (mos ravishda)
  • pg_ctl - umumiy boshqaruv vazifalarini hal qilish uchun mo'ljallangan dastur (boshlash, to'xtatish, parametrlarni sozlash va boshqalar).
  • postmaster - PostgreSQL ko'p foydalanuvchili server moduli (disklarni tuzatish darajalari, portlar, ma'lumotlar kataloglarini sozlash)
  • initdb - yangi PostgreSQL klasterlarini yaratish
  • initlocation - ma'lumotlar bazalarini ikkilamchi saqlash uchun katalog yaratish dasturi
  • vacuumdb - jismoniy va analitik ma'lumotlar bazasiga xizmat ko'rsatish
  • pg_dump - ma'lumotlarni zaxiralash va tiklash
  • pg_dumpall - butun PostgreSQL klasterini zaxiralash
  • pg_restore - ma'lumotlar bazasini arxivdan tiklash (.tar, .tar.gz)

Zaxira nusxalarini yaratishga misollar:

Siqilgan shaklda mydb ma'lumotlar bazasining zaxira nusxasini yaratish

Pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f mydb.backup mydb

Mydb ma'lumotlar bazasining zaxira nusxasini oddiy matnli fayl ko'rinishida yaratish, shu jumladan ma'lumotlar bazasini yaratish buyrug'i

Pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

Mydb ma'lumotlar bazasining zaxira nusxasini siqilgan shaklda, nomidagi to'lovlarni o'z ichiga olgan jadvallar bilan yaratish

Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t * to'lovlar * -f payment_tables.backup mydb

Faqat bitta maxsus jadvaldan ma'lumotlarni chiqarib tashlang. Agar siz bir nechta jadvallarni zaxiralashingiz kerak bo'lsa, unda bu jadvallarning nomlari har bir jadval uchun -t kaliti yordamida ro'yxatga olinadi.

Pg_dump -a -t jadval_nomi -f fayl_nomi ma'lumotlar bazasi_nomi

Gz siqish bilan zaxira nusxasini yaratish

Pg_dump -h localhost -O -F p -c -U postgres mydb | gzip -c> mydb.gz

Eng ko'p ishlatiladigan variantlar ro'yxati:

  • -h xost - xost, agar ko'rsatilmagan bo'lsa, localhost yoki PGHOST muhit o'zgaruvchisi qiymati ishlatiladi.
  • -p port - port, agar ko'rsatilmagan bo'lsa, u holda 5432 yoki PGPORT muhit o'zgaruvchisi qiymati ishlatiladi.
  • -u - foydalanuvchi, agar ko'rsatilmagan bo'lsa, joriy foydalanuvchi ishlatiladi, qiymat PGUSER muhit o'zgaruvchisida ham ko'rsatilishi mumkin.
  • -a, -faqat ma'lumotlar - faqat ma'lumotlarni tashlab yuborish, ma'lumotlar va sxema sukut bo'yicha saqlanadi.
  • -b - axlatxonaga katta ob'ektlarni (bloglarni) kiritish.
  • -s, -faqat sxema - faqat dump sxemasi.
  • -C, -create - ma'lumotlar bazasini yaratish buyrug'ini qo'shadi.
  • -c - ob'ektlarni (jadvallar, ko'rinishlar va h.k.) tushirish (tushirish) buyruqlarini qo'shadi.
  • -O - ​​ob'ekt egasini belgilash uchun buyruqlar qo'shmang (jadvallar, ko'rinishlar va boshqalar).
  • -F, -format (c | t | p) - chiqish dump formati, moslashtirilgan, tar yoki oddiy matn.
  • -t, -jadval = TABLE - borini uchun maxsus jadvalni belgilang.
  • -v, -verbose - batafsil ma'lumotni chiqaradi.
  • -D, -attribute-inserts - mulk nomlari ro'yxati bilan INSERT buyrug'i yordamida tashlab yuborish.

pg_dumpall buyrug'i yordamida barcha ma'lumotlar bazalarini zaxiralang.

Pg_dumpall> all.sql

Zaxira nusxalaridan jadvallarni tiklash (zaxira):

psql - oddiy matn faylida saqlangan zaxira nusxalarini tiklash;
pg_restore - siqilgan zaxira nusxalarini tiklash (tar);

Xatolarni e'tiborsiz qoldirib, butun zahirani tiklash

Psql -h localhost -U someuser -d dbname -f mydb.sql

Butun zaxira nusxasini tiklash, birinchi xatoda to'xtatish

Psql -h localhost -U someuser -set ON_ERROR_STOP = on -f mydb.sql

Tar arxividan tiklash uchun avval CREATE DATABASE mydb dan foydalanib ma'lumotlar bazasini yaratishimiz kerak; (zaxira yaratishda -C opsiyasi ko'rsatilmagan bo'lsa) va tiklash

Pg_restore -dbname = mydb -jobs = 4 -verbose mydb.backup

GZ-siqilgan ma'lumotlar bazasi zahirasini tiklash

psql -U postgres -d mydb -f mydb

O'ylaymanki, postgresql ma'lumotlar bazasi endi siz uchun aniqroq bo'ladi. PostgreSQL buyruqlarining ushbu ro'yxati siz uchun foydali bo'ldi deb umid qilaman.

Konsol orqali ma'lumotlar bazasi bilan ishlashga alternativa grafik interfeysga ega har qanday mijoz uchun yanada intuitiv muhit hisoblanadi. Masalan, pgAdmin... Uni o'rnatish juda oddiy, biz uni superfoydalanuvchi huquqlari bilan ishlatamiz:

sudo apt-get install pgadmin3
Endi siz yugurishingiz mumkin pgAdmin grafik interfeys orqali. Ro'yxatdan mahalliy ma'lumotlar bazasi serverini tanlang (uning standart porti 5432) va biz ko'rsatgan parametrlar bilan biz allaqachon yaratgan ma'lumotlar bazasini qo'shing.
pgAdmin

Ushbu mahalliy serverda tugundan tashqari Ma'lumotlar bazalari deb nomlangan tugunni ham topishingiz mumkin Kirish rollari- barcha mavjud rollar.

Keling, barcha mavjud ma'lumotlar bazalaridan biz yaratganini tanlaylik. Ma'lumotlar bazasi juda ko'p turli xil ob'ektlarni o'z ichiga oladi. Jadvallar va ketma-ketliklarga alohida e'tibor berilishi kerak ( ketma-ketliklar).

Ko'pincha oddiy jadvalda ijobiy raqamli qiymat ko'rinishidagi asosiy kalit mavjud. Bu qiymat har bir satr uchun noyob bo'lishi kerak, shuning uchun uni har safar so'rovda to'g'ridan-to'g'ri o'rnatmaslik uchun ketma-ketlikni standart qiymat sifatida o'rnatishingiz mumkin.

Birinchidan, ketma-ketlikni yarataylik. Biz tanlaymiz Ketma-ketliklar - Yangi ketma-ketlik... Birinchi yorliqda ismni kiriting va uni shunday belgilang Egasi biz yaratgan rol. Bu ketma-ketlik boshqa rollar uchun mavjud bo'lmaydi. Maydonlarga ikkinchi tabda O'sish va Boshlash biz birma-bir kiritamiz (agar siz boshqacha talab qilmasangiz). Muloqot oynasining oxirgi yorlig'ida siz ma'lumotlar bazasiga qarshi bajariladigan SQL so'rovini ko'rishingiz mumkin.

Ketma-ketlik yaratilgandan so'ng, jadval yaratishni boshlaymiz. Shuningdek, biz uning ismini va egasini (egasini) ko'rsatamiz. To'rtinchi yorliqda Ustunlar biz birinchi navbatda asosiy kalitni qo'shamiz. Tugma Qo'shish, paydo bo'lgan oynada ustun nomini ko'rsating, masalan, id... Biz ma'lumotlar turi sifatida tanlaymiz bigint... Ikkinchi yorliqda Ta'rif dalada Standart qiymat ketma-ketligini ko'rsatamiz. Maydonda shaklning qiymati bo'lishi kerak nextval ("message_id_seq" :: regclass)... Ya'ni, har safar yangi qator qo'shilganda, keyingi qiymat ketma-ketlikdan olinadi. Zarur bo'lganda boshqa ustunlar qo'shildi. Nihoyat, yorliqda Cheklovlar asosiy kalitga cheklov qo'shing ( Asosiy kalit). Oxirgi yorliqda biz pgAdmin tomonidan yaratilgan SQL kodiga qoyil qolishimiz mumkin. OK tugmasini bosgandan so'ng jadval yaratiladi.

Asosiy kalit sifatida bigint o'rniga uni ustun turi sifatida belgilashingiz mumkin katta serial... Ushbu tur har bir yangi qator qo'shilishi bilan avtomatik ravishda oshiriladi, shuning uchun uning uchun ketma-ketlikni yaratishga hojat yo'q. Ya'ni, eng oddiy holatda, agar sizda rekord identifikatorni yaratish uchun maxsus qoidalar bo'lmasa, siz bigserialdan foydalanishni tavsiya qilishingiz mumkin.

Keling, jadvalimizning mazmunini ko'rib chiqaylik. Buni amalga oshirish uchun sichqonchaning o'ng tugmachasini bosing va kontekst menyusidan tanlang Ma'lumotlarni ko'rish - 100 qatorni ko'ring.

Xuddi shu oynada siz jadvaldagi istalgan katakning qiymatini tezda tahrirlashingiz mumkin. Agar jadvalingizda 100 dan ortiq yozuvlar bo'lsa, oynaning yuqori qismidagi ochiladigan ro'yxatda ko'rsatilgan yozuvlar sonini o'zgartiring. 100, 500, 1000 yoki barcha yozuvlarni ko'rsatishingiz mumkin. Ammo bu jadval mazmunini tezda ko'rib chiqish usulidan boshqa narsa emas va siz bunga ko'nikmasligingiz kerak. Agar jadvalingizda o'n minglab yozuvlar mavjud bo'lsa, men barcha yozuvlarni bir vaqtning o'zida ko'rsatishni tavsiya etmayman - bu holda parametrlardan foydalangan holda so'rov yozish yaxshiroqdir. chegara va ofset.

Sizga maqola yoqdimi? Do'stlar bilan baham ko'ring: