SELECT version();
📌PostgreSQL sürümünü gösterir.
psql -U postgres
📌PostgreSQL’e bağlanır.
psql -d mydb -U postgres
📌Belirtilen veritabanına bağlanır.
\l
📌Tüm veritabanlarını listeler.
CREATE DATABASE mydb;
📌Yeni veritabanı oluşturur.
DROP DATABASE mydb;
📌Veritabanını siler.
\c mydb
📌Veritabanına geçiş yapar.
\dt
📌Veritabanındaki tabloları listeler.
CREATE TABLE users (id SERIAL, name VARCHAR(50));
📌Yeni tablo oluşturur.
DROP TABLE users;
📌Tabloyu siler.
\d users
📌Tablo sütun bilgilerini listeler.
INSERT INTO users (name) VALUES ('Ali');
📌Tabloya veri ekler.
SELECT * FROM users;
📌Tüm satırları listeler.
SELECT * FROM users WHERE name = 'Ali';
📌Koşullu sorgu yapar.
UPDATE users SET name='Ayşe' WHERE id=1;
📌Veriyi günceller.
DELETE FROM users WHERE id=1;
📌Veriyi siler.
SELECT COUNT(*) FROM users;
📌Satır sayısını verir.
CREATE USER myuser WITH PASSWORD 'mypassword';
📌Yeni kullanıcı oluşturur.
DROP USER myuser;
📌Kullanıcıyı siler.
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
📌Yetki verir.
\du
📌Tüm kullanıcı ve rollerin yetkilerini gösterir.
CREATE SCHEMA myschema;
📌Yeni şema oluşturur.
DROP SCHEMA myschema CASCADE;
📌Şemayı siler.
ALTER TABLE users ADD PRIMARY KEY (id);
📌Primary key ekler.
ALTER TABLE users ADD UNIQUE (name);
📌Unique constraint ekler.
ALTER TABLE users ADD email VARCHAR(100);
📌Sütun ekler.
ALTER TABLE users DROP COLUMN email;
📌Sütun siler.
ALTER TABLE users RENAME COLUMN name TO full_name;
📌Sütun adını değiştirir.
ALTER TABLE users ALTER COLUMN name TYPE TEXT;
📌Sütun tipini değiştirir.
CREATE INDEX idx_name ON users(name);
📌Index ekler.
DROP INDEX idx_name;
📌Index siler.
CREATE SEQUENCE myseq;
📌Sequence oluşturur.
DROP SEQUENCE myseq;
📌Sequence siler.
SELECT nextval('myseq');
📌Sequence değerini gösterir.
CREATE TABLE logs (id SERIAL PRIMARY KEY);
📌Otomatik artan sütun oluşturur.
SELECT * FROM users LIMIT 5;
📌Sonuçları sınırlar.
SELECT * FROM users OFFSET 3;
📌Sonuçları atlatır.
SELECT DISTINCT name FROM users;
📌Tekil kayıtları listeler.
SELECT * FROM users ORDER BY name;
📌Sonuçları sıralar.
SELECT * FROM users WHERE name LIKE 'A%';
📌LIKE ile arama yapar.
SELECT * FROM users WHERE name ILIKE 'a%';
📌Büyük/küçük harf duyarsız arama yapar.
SELECT * FROM users WHERE id BETWEEN 1 AND 5;
📌Aralık sorgusu yapar.
SELECT * FROM users WHERE name IN ('Ali', 'Ayşe');
📌Birden fazla değeri filtreler.
SELECT * FROM users WHERE email IS NULL;
📌Null değerleri bulur.
SELECT COALESCE(email, 'Yok') FROM users;
📌Null yerine değer döner.
SELECT NOW();
📌Mevcut tarihi verir.
SELECT CURRENT_DATE;
📌Bugünün tarihini verir.
SELECT DATE_TRUNC('month', NOW());
📌Tarihi kırpar.
SELECT LENGTH(name) FROM users;
📌Karakter uzunluğunu verir.
SELECT SUBSTRING(name, 1, 3) FROM users;
📌Substring döner.
SELECT UPPER(name) FROM users;
📌Metni büyük harfe çevirir.
SELECT LOWER(name) FROM users;
📌Metni küçük harfe çevirir.
SELECT REPLACE(name, 'A', 'X') FROM users;
📌Metin değiştirir.
SELECT ROUND(3.14159, 2);
📌Ondalıklı sayıyı yuvarlar.
SELECT FLOOR(3.9);
📌Aşağı yuvarlar.
SELECT CEIL(3.2);
📌Yukarı yuvarlar.
SELECT RANDOM();
📌Rastgele sayı üretir.
SELECT SUM(id) FROM users;
📌Toplam değer verir.
SELECT AVG(id) FROM users;
📌Ortalama hesaplar.
SELECT MIN(id) FROM users;
📌Minimum değeri verir.
SELECT MAX(id) FROM users;
📌Maksimum değeri verir.
SELECT name, COUNT(*) FROM users GROUP BY name;
📌Gruplama yapar.
SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) > 1;
📌Gruplama üzerinde filtre uygular.
SELECT name,
CASE WHEN id=1 THEN 'Admin' ELSE 'User' END AS role
FROM users;
📌Koşullu değer döner.
SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;
📌Inner join yapar.
SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id;
📌Left join yapar.
SELECT * FROM users RIGHT JOIN orders ON users.id = orders.user_id;
📌Right join yapar.
SELECT * FROM users FULL JOIN orders ON users.id = orders.user_id;
📌Full join yapar.
SELECT * FROM users CROSS JOIN orders;
📌Cross join yapar.
SELECT name FROM users
UNION
SELECT name FROM customers;
📌Birleşik sonuç döner.
SELECT name FROM users
UNION ALL
SELECT name FROM customers;
📌Tekrarlı birleşim yapar.
CREATE VIEW user_view AS SELECT * FROM users;
📌View oluşturur.
DROP VIEW user_view;
📌View siler.
CREATE FUNCTION add_nums(a INT, b INT) RETURNS INT AS $$
BEGIN
RETURN a + b;
END;
$$ LANGUAGE plpgsql;
📌Fonksiyon oluşturur.
SELECT add_nums(5, 3);
📌Fonksiyon çalıştırır.
DROP FUNCTION add_nums(INT, INT);
📌Fonksiyon siler.
CREATE PROCEDURE test_proc()
LANGUAGE SQL
AS $$
SELECT * FROM users;
$$;
📌Procedure oluşturur.
CALL test_proc();
📌Procedure çalıştırır.
DROP PROCEDURE test_proc;
📌Procedure siler.
CREATE TRIGGER trig
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_changes();
📌Trigger oluşturur.
DROP TRIGGER trig ON users;
📌Trigger siler.
EXPLAIN SELECT * FROM users;
📌Sorgu planını gösterir.
VACUUM;
📌Tabloyu temizler.
ANALYZE users;
📌İstatistik toplar.
CREATE TABLESPACE myspace LOCATION '/data/pg';
📌Yeni tablespace oluşturur.
DROP TABLESPACE myspace;
📌Tablespace siler.
pg_dump mydb > mydb.sql
📌Veritabanını yedekler.
pg_restore -d mydb mydb.dump
📌Yedeği yükler.
psql -d mydb -f script.sql
📌SQL dosyası çalıştırır.
psql -h localhost -p 5432 -U postgres -d mydb
📌Bağlantı parametrelerini belirtir.
SELECT current_user;
📌Bağlı kullanıcıyı gösterir.
SELECT current_database();
📌Aktif database’i gösterir.
SELECT * FROM pg_stat_activity;
📌Aktif bağlantıları gösterir.
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='mydb';
📌Bağlantıyı sonlandırır.
ALTER DATABASE mydb CONNECTION LIMIT 50;
📌Bağlantı limitini ayarlar.
SELECT * FROM pg_catalog.pg_tables;
📌Sistem tablolarını listeler.
SELECT * FROM pg_indexes WHERE tablename = 'users';
📌Tablonun indexlerini listeler.
COMMENT ON TABLE users IS 'Kullanıcı tablosu';
📌Tabloya açıklama ekler.
COMMENT ON TABLE users IS NULL;
📌Tablo yorumunu siler.
\q
📌psql’den çıkar.