PosgreSQL ile uğraşırken kurcaladıklarım ve öğrendiklerim oldu unutmak istemediğimden bende bir referans kartı oluşturmaya karar verdim. Bir kaç projede kullandım pekiştirme fırsatı buldum. Denedim çalışma mantığını gözlemledim güzelliklerini gördüm oldukça hoşuma gitti
Girişimizi yapalım postgres kullanıcısı ile
sudo -u postgres psql postgres
daha sonra postgres=#
olarak konsolda görebileceksiniz aşağıdaki komutları çalıştırmanız yeterli
Komut | Açıklama |
---|---|
q | Çıkış |
conninfo | veritabanı bağlantı bilgisi |
c [veritabani] | Veritabanı bağlantısı |
d+ [tabloadi] | Tablonun tanımı |
dt *.* | Tüm veritabanındaki tabloları gösterir |
l | Veritabanlarını listeler |
l+ | Veritabanlarını detaylı listeler |
dn | Şemalar listelenir |
df | Fonksiyonlar listelenir |
dv | İlişkiler listelenir |
df+ | Fonksiyon’un detayları |
x | Çıktıları güzelleştirir.(önerilir) |
dx+ | Eklentileri listeler |
encoding | Tanımlı olan karakter kodlaması |
du | Kuralları listeler |
PostgreSQL Servislerinde yapılabilecekler
sudo service postgresql stop
sudo service postgresql start
sudo service postgresql restart
Yeni kural oluşturma
CREATE ROLE kural1 WITH LOGIN ENCRYPTED PASSWORD 'sifre' CREATEDB;
Sadece kural seti olarak veritabanı oluşturmaya izin verdik diğer kurallar için durum şu şekilde;
CREATE ROLE kural1 WITH LOGIN ENCRYPTED PASSWORD 'sifre1' CREATEDB CREATEROLE REPLICATION SUPERUSER;
Çalıştırma planı
EXPLAIN SELECT * FROM pg_class;
Çalışma zamanı parametreleri
SHOW ALL;
tanımlanan kuralı silme
DROP ROLE kural1;
Veritabanı oluşturma
CREATE DATABASE test_db WITH OWNER kural1 ENCODING 'UTF8';
Yetkilendirme
GRANT ALL PRIVILEGES ON DATABASE test_db TO kural1
Veritabanını silme
DROP DATABASE test_db;
Tablo oluşturmak
CREATE TABLE tablo_adi (
id serial PRIMARY KEY,
name varchar(20) UNIQUE NOT NULL,
dateCreated timestamp DEFAULT current_timestamp
);
Birincil anahtar ekleme
ALTER TABLE tablo_adi ADD PRIMARY KEY (id);
indis oluşturmak
CREATE UNIQUE INDEX indexName ON tableName (columnNames);
ilk 10 kayıt
SELECT satır FROM tablo LIMIT 10;
regexp kullanarak kayıt getirme
SELECT satır FROM tablo WHERE column ~ 'test.*';
sayfalayarak kayıtları getirme
SELECT cols FROM table LIMIT 10 OFFSET 30;
tablodaki tüm kayıtları getir
SELECT * FROM tablo;
yeni kayıt girme
INSERT INTO tablo (satır1,satır2) VALUES (4, 'testveri');
satır güncelleme
UPDATE tablo SET test = 'test2' WHERE id = 4;
kayıt silme
DELETE FROM tablo WHERE id = 4;
Lag replication kontrol
SELECT EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()))::INT;
Devam eden sorguların kontrolü
SELECT datname,usename,client_addr,waiting,query_start FROM pg_stat_activity WHERE query_start < NOW() + INTERVAL '5 seconds';
En büyük boyutlu veritabanı tablosunu bulma
SELECT table_name, pg_relation_size(table_name) FROM information_schema.tables WHERE table_schema = 'public' ORDER BY 2;
Veri bekleyen tüm sorgular
SELECT * FROM pg_stat_activity WHERE waiting='t';
Veritabanı toplam boyutu
SELECT pg_size_pretty(pg_database_size('veritabanı_adı'));