PostgreSQL'i sağlam biçimde öğrenmenin yolu, resmî kılavuzun izlediği sırayı takip edip her konuyu kendi kurduğunuz bir deneme kümesinde çalıştırarak pekiştirmektir: önce kurulum, psql ve temel nesneler (veritabanı, şema, tablo, kısıt, veri tipi), sonra sorgular, ardından fonksiyonlar ve PL/pgSQL, en sonda da transaction, performans, güvenlik, yedekleme ve replikasyon. Bu sayfa serideki 49 yazıyı bu öğrenme yoluna göre sekiz gruba ayırır ve her birinin size ne kazandırdığını kısaca söyler.

Serideki bilgilerin tamamı PostgreSQL 18 resmî kılavuzuna (18.6 sürüm notları dahil) dayanır ve örnekler PostgreSQL 18.1 üzerinde psql ile tek tek çalıştırılıp çıktıları olduğu gibi aktarılmıştır. PostgreSQL'in ne olduğunu, tarihçesini ve MVCC, ACID gibi genel kavramları merak ediyorsanız önce PostgreSQL nedir yazısına göz atın; burada o konuları tekrar etmeden doğrudan pratik öğrenmeye odaklanıyoruz.

Resmî kılavuz nasıl düzenlenmiş?

Resmî kılavuz nasıl düzenlenmiş? Part I. Tutorial, Part II. The SQL Language, Part III. Server Administration, Part VI. Reference

PostgreSQL belgeleri tek bir uzun kitap gibi yazılmıştır ve farklı okuyucu gruplarına göre bölümlere (Part) ayrılır. Önsözde anlatılan düzen şöyledir: Part I yeni başlayanlar için gayriresmî bir giriş (Tutorial), Part II SQL dilinin kendisi (sözdizimi, veri tanımlama, veri değiştirme, sorgular, veri tipleri, fonksiyonlar, indeksler, eşzamanlılık), Part III sunucu kurulumu ve yönetimi, Part IV istemci arayüzleri (libpq gibi), Part V sunucu tarafı programlama ve genişletilebilirlik, Part VI başvuru (reference) sayfaları, Part VII geliştiricilere yönelik iç yapı ve Part VIII ekler. Sürüm notları ve hata kodu tablosu gibi sık başvurulan sayfalar eklerin içindedir.

Bu yapıyı bilmek arama süresini çok kısaltır. Bir komutun ne işe yaradığını hikâye akışı içinde öğrenmek istiyorsanız Part II veya Part III'teki anlatı bölümlerine gidersiniz; örneğin şemalar ddl-schemas, kısıtlar ddl-constraints sayfasında anlatılır. Bir komutun bütün seçeneklerini tam liste hâlinde görmek istediğinizde ise Part VI'daki başvuru sayfasına bakarsınız: SQL komutları sql- önekiyle (sql-createtable, sql-altertable), istemci programları ve sunucu programları ise app- önekiyle (app-psql, app-initdb, app-pg-ctl) adlandırılır. Başvuru sayfaları hep aynı kalıbı izler: Synopsis (söz dizimi özeti), Description, Parameters, Notes, Examples, Compatibility ve See Also.

BölümİçerikNe zaman açılır
Part I. Tutorialpsql ile ilk adımlar, basit tablolar, JOIN, view, foreign key, transactionPostgreSQL ile ilk kez çalışırken
Part II. The SQL LanguageSözdizimi, DDL, DML, sorgular, veri tipleri, fonksiyonlar, indeks, eşzamanlılıkSQL davranışını derinlemesine öğrenirken
Part III. Server AdministrationKurulum, yapılandırma, kimlik doğrulama, roller, bakım, yedek, replikasyonKendi sunucunuzu çalıştırırken
Part VI. ReferenceHer SQL komutu ve her program için tam seçenek listesiBir seçeneğin tam adını veya varsayılanını ararken
Part VIII. AppendixesHata kodları, tarih/saat ayrıntıları, sürüm notlarıHata kodu veya sürüm farkı ararken

SQL komut özeti (synopsis) nasıl okunur?

Başvuru sayfalarının en üstündeki Synopsis bölümü, komutun alabileceği bütün biçimleri sıkıştırılmış bir gösterimle verir. Kılavuzun Conventions sayfasına göre köşeli parantez [ ] isteğe bağlı kısmı, süslü parantez { } ile dikey çizgi | birlikte seçmeniz gereken alternatifleri, üç nokta ... ise önceki öğenin tekrarlanabileceğini gösterir. Normal parantezler de dahil olmak üzere geri kalan bütün semboller olduğu gibi yazılır. İtalik yazılmış kelimeler (örneğin name) sizin dolduracağınız yerlerdir.

psql içinden \h ile aynı özeti anında görebilirsiniz. Aşağıdaki üç çıktı, bu gösterimin bütün parçalarını içeriyor:

bash
\h DROP TABLE
\h TRUNCATE
\h DISCARD
text
Command:     DROP TABLE
Description: remove a table
Syntax:
DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

URL: https://www.postgresql.org/docs/18/sql-droptable.html

Command:     TRUNCATE
Description: empty a table or set of tables
Syntax:
TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
    [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]

URL: https://www.postgresql.org/docs/18/sql-truncate.html

Command:     DISCARD
Description: discard session state
Syntax:
DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }

URL: https://www.postgresql.org/docs/18/sql-discard.html

Okuma şöyle yapılır: DROP TABLE yazmak zorunludur; IF EXISTS eklemek isteğe bağlıdır; ardından en az bir tablo adı gelir ve [, ...] sayesinde virgülle istediğiniz kadar tablo adı ekleyebilirsiniz; sonda isterseniz CASCADE ya da RESTRICT kelimelerinden birini yazarsınız, ikisini birden yazamazsınız. TRUNCATE özetinde TABLE kelimesinin bile köşeli parantez içinde olduğuna dikkat edin: TRUNCATE urun; ile TRUNCATE TABLE urun; aynı şeydir. DISCARD özetindeki süslü parantez ise seçimin zorunlu olduğunu söyler: yalnızca DISCARD; yazarsanız sözdizimi hatası alırsınız, ALL, PLANS, SEQUENCES, TEMPORARY veya TEMP seçeneklerinden birini yazmanız gerekir.

Uzun özetlerde bir yer tutucunun ayrıca tanımlandığını görürsünüz; örneğin CREATE SCHEMA özetinin altında where role_specification can be: satırı ve olası değerler listelenir. Böyle bir tanım gördüğünüzde yer tutucuyu o alt listeden biriyle değiştirirsiniz. Komut satırı programlarının özetleri de aynı mantıkla yazılır; pg_ctl stop özetindeki -m s[mart] | f[ast] | i[mmediate] parçası, kipin tam adını ya da yalnızca ilk harfini yazabileceğinizi gösterir.

İlk oturum: initdb, pg_ctl ve psql

Kılavuz, kurulum için işletim sisteminizin ikili paketlerini önerir ve güncel paket listesi için https://www.postgresql.org/download/ adresine yönlendirir; dağıtıma özel kurulum komutları belgelerde yer almadığı için burada da vermiyoruz. Paket kurulduktan sonra yapılacak ilk iş bir veritabanı kümesi (cluster) oluşturmak, sunucuyu başlatmak ve psql ile bağlanmaktır. Aşağıdaki oturum, makinede başka bir PostgreSQL servisi çalıştığı için 46411 portunu kullanan bir deneme kümesinde çalıştırıldı; ayrıntılar ve seçeneklerin anlamı PostgreSQL kurulumu: initdb ve pg_ctl yazısında.

bash
initdb -D pgveri -U postgres -A scram-sha-256 --pwfile=pw.txt -E UTF8 \
       --locale-provider=icu --icu-locale=tr-TR --locale=C
printf "listen_addresses = '127.0.0.1'\nport = 46411\n" >> pgveri/postgresql.conf
pg_ctl -D pgveri -l pgveri.log start
psql -h 127.0.0.1 -p 46411 -U postgres -d postgres -X -c "SELECT version();"
text
Data page checksums are enabled.

creating directory pgveri ... ok
...
syncing data to disk ... ok

waiting for server to start.... done
server started
                                 version                                 
-------------------------------------------------------------------------
 PostgreSQL 18.1 on x86_64-windows, compiled by msvc-19.44.35219, 64-bit
(1 row)

Çıktının initdb kısmını kısalttık (... satırı); tam hâli kurulum yazısında. Bağlandıktan sonra ilk veritabanınızı, ilk tablonuzu ve ilk sorgunuzu deneyebilirsiniz. Aşağıdaki betik psql'e -f ile verildi; \c yeni veritabanına geçer, \d tablonun yapısını gösterir:

sql
CREATE DATABASE ilk_deneme;
\c ilk_deneme
CREATE TABLE sehir (plaka integer PRIMARY KEY, ad text NOT NULL, bolge text);
INSERT INTO sehir VALUES (6, 'Ankara', 'İç Anadolu'), (35, 'İzmir', 'Ege'), (61, 'Trabzon', 'Karadeniz');
SELECT plaka, ad FROM sehir WHERE bolge <> 'Ege' ORDER BY plaka;
\d sehir
text
CREATE DATABASE
You are now connected to database "ilk_deneme" as user "postgres".
CREATE TABLE
INSERT 0 3
 plaka |   ad    
-------+---------
     6 | Ankara
    61 | Trabzon
(2 rows)

               Table "public.sehir"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 plaka  | integer |           | not null | 
 ad     | text    |           | not null | 
 bolge  | text    |           |          | 
Indexes:
    "sehir_pkey" PRIMARY KEY, btree (plaka)

Bu küçük oturumda serinin ilk grubundaki kavramların hepsi görünüyor: küme ve veritabanı, public şeması (tablo adı public.sehir olarak listelendi), sütun tipleri, NOT NULL ve PRIMARY KEY kısıtları ile birincil anahtarın kendiliğinden oluşturduğu B-tree indeks. Her birinin ayrıntısı aşağıdaki ilk öğrenme yolunda.

Önerilen çalışma sırası

Kılavuzun Part I ve Part II bölümleri baştan sona okunacak biçimde sıralanmıştır; seriyi de aynı mantıkla kurduk. Yeni başlıyorsanız ilk grubu sırayla bitirin, çünkü sonraki bütün örnekler psql kullanımını, veritabanı ve şema kavramını, tablo ve kısıt tanımlamayı bildiğinizi varsayar. Sorgular grubunda önce SELECT ve veri değiştirme komutlarını, sonra JOIN ve toplama fonksiyonlarını, en sonda CTE ve window function konularını okuyun. Veri tipleri ve fonksiyonlar grubu ihtiyaca göre seçilerek okunabilir; örneğin uygulamanız JSON saklıyorsa JSONB yazısına erken geçebilirsiniz.

Uygulama geliştiriyorsanız transaction ve izolasyon yazılarını, sorguların hızlanması için EXPLAIN ve indeks yazılarını, kendi sunucunuzu yönetiyorsanız kullanıcı, yetki, pg_hba.conf, yedekleme ve izleme yazılarını öne alın. Her yazıyı okurken örnekleri kendi deneme kümenizde çalıştırın: çıktıyı kendi gözünüzle görmek, özellikle hata mesajlarını tanımak için en hızlı yoldur. Gerçek veriniz olan bir sunucuda deneme yapmayın; kurulum yazısında gösterdiğimiz gibi ayrı bir veri dizini ve ayrı bir portla geçici bir küme açmak birkaç saniye sürer.

1. Kurulum ve temel yapı

  • PostgreSQL kurulumu: initdb ve pg_ctl: ikili paket önerisini, initdb ile küme oluşturmayı, pg_ctl ile başlatma, durum sorgulama ve smart/fast/immediate kapatma kiplerini anlatır.
  • psql komutları: bağlantı seçeneklerini, \l, \dt, \d, \x, \i, \timing gibi meta komutları, psql değişkenlerini ve .psqlrc dosyasını gösterir.
  • Veritabanı ve şema oluşturma: CREATE DATABASE, template0 ve template1 farkı, CREATE SCHEMA, search_path ve public şemasının güvenli kullanımını öğretir.
  • CREATE TABLE ve ALTER TABLE: tablo oluşturmayı, varsayılan değerleri, sanal ve depolanan üretilmiş sütunları, sütun ekleme, silme, tip değiştirme, DROP ve TRUNCATE komutlarını kapsar.
  • Primary key, foreign key ve kısıtlar: PRIMARY KEY, FOREIGN KEY ve ON DELETE davranışlarını, UNIQUE, CHECK, NOT NULL, EXCLUDE kısıtlarını ve NOT VALID ile sonradan doğrulamayı anlatır.
  • PostgreSQL veri tipleri: sayısal, metin, boolean, uuid, enum ve bytea tiplerini, money tipinin tuzaklarını ve hangi durumda hangi tipin seçileceğini gösterir.

2. Sorgular

2. Sorgular: SELECT, WHERE, ORDER BY ve LIMIT, INSERT, UPDATE, DELETE ve RETURNING, UPSERT, JOIN türleri ve LATERAL
  • SELECT, WHERE, ORDER BY ve LIMIT: seçim listesini, filtrelemeyi, NULLS FIRST/LAST sıralamayı, LIMIT/OFFSET ve FETCH FIRST ile sayfalamayı, DISTINCT ON ve VALUES kullanımını öğretir.
  • INSERT, UPDATE, DELETE ve RETURNING: çok satırlı INSERT, INSERT SELECT, UPDATE FROM, DELETE USING ve PostgreSQL 18 ile gelen OLD/NEW destekli RETURNING kullanımını anlatır.
  • UPSERT: ON CONFLICT ve MERGE: INSERT ON CONFLICT DO UPDATE/NOTHING, EXCLUDED satırı ve MERGE komutunu karşılaştırarak gösterir.
  • JOIN türleri ve LATERAL: INNER, LEFT, RIGHT, FULL ve CROSS JOIN, USING ile NATURAL farkı, self join ve LATERAL alt sorguları kapsar.
  • GROUP BY, HAVING ve aggregate fonksiyonlar: gruplama, HAVING ile grup filtreleme, count/sum/avg/string_agg, FILTER yan tümcesi ve GROUPING SETS, ROLLUP, CUBE konularını anlatır.
  • WITH (CTE) ve recursive sorgular: WITH sorgularını, MATERIALIZED seçeneğini, WITH RECURSIVE ile ağaç gezmeyi, SEARCH/CYCLE ve veri değiştiren WITH kullanımını öğretir.
  • Window function: row_number, rank: OVER ve PARTITION BY, sıralama fonksiyonları, lag/lead, çerçeve (frame) tanımları ve WINDOW yan tümcesini gösterir.

3. Veri tipleri ve fonksiyonlar

  • Tarih, saat, timestamp ve timezone: date, timestamp, timestamptz ve interval tiplerini, saat dilimi davranışını, now() ailesini, date_trunc, extract ve to_char fonksiyonlarını anlatır.
  • String fonksiyonları, LIKE ve regex: birleştirme, substring, split_part, format, LIKE/ILIKE, SIMILAR TO ve regexp fonksiyonlarını örneklerle gösterir.
  • JSONB kullanımı: json ile jsonb farkını, erişim ve içerme operatörlerini, jsonb_set ve jsonb_build_object fonksiyonlarını ve GIN indeksini öğretir.
  • SQL/JSON, jsonpath ve JSON_TABLE: jsonpath dilini, JSON_EXISTS, JSON_VALUE, JSON_QUERY ve JSON_TABLE ile JSON verisini tabloya çevirmeyi anlatır.
  • Array (dizi) tipi: dizi tanımlamayı, indeks ve dilim erişimini, ANY/ALL, unnest, array_agg ve dizi operatörlerini kapsar.
  • Identity, serial ve sequence: GENERATED AS IDENTITY ile serial farkını, CREATE SEQUENCE, nextval/currval/setval ve numaralardaki boşlukların nedenini açıklar.

4. Nesneler ve PL/pgSQL

  • View ve materialized view: CREATE VIEW, güncellenebilir view, WITH CHECK OPTION, materialized view ve REFRESH CONCURRENTLY kullanımını öğretir.
  • CREATE FUNCTION ve PROCEDURE: SQL dilinde fonksiyon yazmayı, parametre modlarını, RETURNS TABLE, volatilite sınıflarını ve CALL ile çağrılan prosedürleri anlatır.
  • PL/pgSQL temelleri: DO blokları, değişken tanımı, IF/CASE, döngüler, RETURN QUERY ve EXECUTE ... USING ile güvenli dinamik SQL konularını kapsar.
  • PL/pgSQL hata yakalama ve RAISE: EXCEPTION blokları, SQLSTATE ve SQLERRM, GET STACKED DIAGNOSTICS, RAISE ve ASSERT kullanımını gösterir.
  • Trigger oluşturma: BEFORE/AFTER/INSTEAD OF tetikleyicileri, satır ve komut düzeyi farkını, NEW/OLD ve TG_OP değişkenlerini ve bir denetim (audit) tablosu örneğini anlatır.
  • İndeks türleri: B-tree, GIN, GiST, BRIN: indeks türlerinin hangi sorguya uyduğunu, çok sütunlu, ifade ve kısmi indeksleri, CREATE INDEX CONCURRENTLY ve REINDEX komutlarını öğretir.

5. Transaction ve performans

  • Transaction: BEGIN, COMMIT, ROLLBACK: transaction bloklarını, SAVEPOINT ile kısmi geri almayı, autocommit davranışını ve hata sonrası iptal edilmiş transaction durumunu anlatır.
  • İzolasyon seviyeleri ve MVCC: READ COMMITTED, REPEATABLE READ ve SERIALIZABLE farkını, anomalileri ve serileştirme hatalarında yeniden deneme yaklaşımını açıklar.
  • Lock, kilitler ve deadlock: tablo ve satır kilit modlarını, SELECT FOR UPDATE, SKIP LOCKED, NOWAIT, deadlock oluşumunu ve pg_locks ile izlemeyi gösterir.
  • EXPLAIN ANALYZE ile plan okuma: plan düğümlerini, cost/rows/width değerlerini, ANALYZE ve BUFFERS çıktısını ve tahmin hatalarını yorumlamayı öğretir.
  • VACUUM, autovacuum ve bloat: VACUUM, VACUUM FULL ve ANALYZE farkını, autovacuum ayarlarını, transaction ID wraparound riskini ve izleme sorgularını anlatır.
  • Tablo partitioning (bölümleme): RANGE, LIST ve HASH bölümlemeyi, ATTACH/DETACH, partition pruning, varsayılan bölüm ve sınırlamaları kapsar.

6. Kullanıcı, güvenlik ve yapılandırma

6. Kullanıcı, güvenlik ve yapılandırma: Kullanıcı ve rol yönetimi, GRANT ve REVOKE ile yetkilendirme, pg_hba.conf ve uzak bağlantı, Row level security
  • Kullanıcı ve rol yönetimi: CREATE ROLE, rol öznitelikleri, parola, rol üyeliği ve INHERIT/SET seçenekleri, hazır roller ve rol silme adımlarını anlatır.
  • GRANT ve REVOKE ile yetkilendirme: tablo, şema, veritabanı ve sequence yetkilerini, sütun yetkisini, ALTER DEFAULT PRIVILEGES ve salt okunur kullanıcı örneğini gösterir.
  • pg_hba.conf ve uzak bağlantı: listen_addresses, pg_hba.conf satır biçimi, kimlik doğrulama yöntemleri ve yapılandırmayı yeniden yükleme adımlarını öğretir.
  • Row level security: satır düzeyi güvenliği açmayı, CREATE POLICY ile USING ve WITH CHECK koşullarını ve çok kiracılı bir uygulama örneğini anlatır.
  • SSL/TLS ile şifreli bağlantı: sunucu sertifikasını, hostssl satırlarını, istemci sslmode seçeneklerini ve pg_stat_ssl ile doğrulamayı gösterir.
  • postgresql.conf ve ALTER SYSTEM: yapılandırma dosyası sözdizimini, parametre türlerini ve birimlerini, SHOW/SET/ALTER SYSTEM ve pg_settings görünümünü açıklar.

7. Yedek, replikasyon ve izleme

  • pg_dump ve pg_restore ile yedek: yedek biçimlerini, pg_restore seçeneklerini, pg_dumpall ile rolleri yedeklemeyi ve paralel yedeklemeyi uygulamalı anlatır.
  • WAL arşivleme ve PITR: WAL arşivlemeyi, pg_basebackup ile temel yedeği, recovery_target_time ile belirli bir ana dönmeyi ve artımlı yedeği gösterir.
  • Streaming replication kurulumu: primary/standby kurulumunu, replication slot kullanımını, hot standby sorgularını ve standby sunucusunu primary yapmayı öğretir.
  • Logical replication: publication ve subscription tanımlamayı, satır filtresi ve sütun listesini, sınırlamaları ve çakışma durumlarını anlatır.
  • COPY ile CSV içe ve dışa aktarma: COPY FROM/TO seçeneklerini, psql \copy farkını, hatalı satırları atlamayı ve toplu yükleme ipuçlarını gösterir.
  • pg_stat_activity ve pg_stat_statements: çalışan sorguları izlemeyi, uzun sorguları iptal etmeyi, pg_stat_statements eklentisini ve yavaş sorgu günlüğünü anlatır.

8. İleri konular, sürüm ve hatalar

  • Full text search: tsvector, tsquery: metni tsvector olarak işlemeyi, sorgu fonksiyonlarını, ts_rank ile sıralamayı, ts_headline ve GIN indeksini öğretir.
  • Collation ve Türkçe sıralama: encoding, locale ve collation sağlayıcılarını, tr-TR-x-icu ile Türkçe I/i davranışını ve CREATE COLLATION kullanımını açıklar.
  • Sürüm yükseltme ve pg_upgrade: küçük ve büyük sürüm yükseltme farkını, pg_dumpall ile taşımayı ve pg_upgrade seçeneklerini anlatır.
  • PostgreSQL 18 yenilikleri: asenkron I/O, uuidv7(), sanal üretilmiş sütunlar, OLD/NEW destekli RETURNING ve uyumsuzluk listesini sürüm notlarına dayanarak özetler.
  • Sık hatalar ve SQLSTATE kodları: SQLSTATE sınıflarını ve 23505, 42P01, 42501, 23503, 22P02, 40001 gibi sık hataların nedenini ve çözümünü gösterir.
  • Bağlantı hataları: connection refused: connection refused, password authentication failed, no pg_hba.conf entry gibi bağlantı hatalarını ve pg_isready ile kontrolü anlatır.

Sık yapılan hatalar

  • Başvuru sayfası yerine yalnızca bloglara güvenmek: PostgreSQL her ana sürümde komutlara yeni seçenekler ekler; bir seçeneğin sizin sürümünüzde var olup olmadığını Part VI'daki başvuru sayfası ve sürüm notları kesin söyler.
  • Sürüm farkını gözden kaçırmak: Bağlandığınız sunucunun sürümünü SELECT version(); ile öğrenin ve aynı sürümün belgesini okuyun. Bu seri PostgreSQL 18 içindir; örneğin üretilmiş sütunların varsayılan olarak sanal olması 18 ile gelen bir değişikliktir.
  • Synopsis'teki köşeli parantezi yazmak: [ IF EXISTS ] gösterimi bir isteğe bağlılık işaretidir; köşeli parantezlerin kendisi komuta yazılmaz.
  • Gerçek sunucuda denemek: Öğrenirken ayrı bir veri dizini ve ayrı portla geçici bir küme kullanın. Yanlışlıkla çalıştırılan bir DROP DATABASE geri alınamaz.
  • psql meta komutlarını SQL sanmak: \dt veya \c gibi komutları sunucu değil psql işler; bunları uygulamanızın veritabanı sürücüsüne gönderemezsiniz.

Sık Sorulan Sorular

PostgreSQL öğrenmeye nereden başlamalıyım?

Kılavuzun Tutorial bölümünü bir kez hızlıca okuyun, ardından bu serinin ilk grubunu sırayla izleyin: kurulum, psql, veritabanı ve şema, tablo, kısıtlar ve veri tipleri. Bu altı yazıyı bitirdiğinizde sorgular grubundaki bütün örnekleri rahatça çalıştırabilirsiniz.

Belgelerde current ile 18 adresi arasında fark var mı?

docs/current/ adresi her zaman en son ana sürümün belgesine gider; bu yazının hazırlandığı tarihte bu PostgreSQL 18'dir. psql'in \h çıktısı ise sürüme özel docs/18/ adresini verir. Eski bir sürüm kullanıyorsanız adresteki sürüm numarasını kendi sürümünüzle değiştirin.

Bir SQL komutunun söz dizimini en hızlı nasıl görürüm?

psql'de \h KOMUT yazın; örneğin \h alter table. Çok kelimeli komutları tırnak içine almanız gerekmez. Tam açıklama ve örnekler için çıktının sonundaki adrese gidin.

PostgreSQL ile MySQL arasında seçim yapmadım, bu seri işime yarar mı?

Bu seri yalnızca PostgreSQL'in kendi davranışını anlatır. İki sistemi karşılaştırmak istiyorsanız MySQL ve PostgreSQL karşılaştırması yazısına, genel SQL kavramları için SQL nedir yazısına bakın.

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: PostgreSQL nedir · PostgreSQL performans optimizasyonu · SQL sorgu optimizasyonu · Veritabanı yedekleme stratejileri · PostgreSQL kurulumu · psql komutları