Ana içeriğe atla

PostgreSQL için Başlangıç Rehberi

Bu eğitimde, PostgreSQL'de basit SQL sorgularının nasıl yazılacağını öğreneceksiniz.
Güncel 3 Eki 2026  · 13 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

İlişkisel veritabanı sistemlerini sorgulayabilmek, bir veri bilimci için olmazsa olmaz bir beceridir. SQL (Structured Query Language), bunu son derece verimli bir şekilde yapmanızı sağlar. SQL, veriye anlamlı sorular sormanıza imkân tanıdığı gibi veriyi pek çok farklı şekilde işlemenize de olanak verir. Veritabanları olmadan pratikte gerçek dünya uygulamaları mümkün değildir. Dolayısıyla veritabanlarını bilmek ve onları yönetebilmek, bir veri bilimcisinin araç setinin kritik parçalarıdır.

Hızlı bilgi: SQL, SE-QU-EL olarak da telaffuz edilir. Bunun tarihsel bir önemi vardır — SQL’in ilk adı Simple English Query Language idi.

Genel olarak ilişkisel veritabanları aşağıdakine benzer görünür -

İlişkiler, tablo olarak da adlandırılır. Veritabanları pek çok farklı şekilde temsil edilebilir. Bu sadece onlardan biridir ve en popüler olanıdır.

Bu eğitimde SQL ile yapılan en yaygın dört işlem tanıtılmaktadır: Create (Oluştur), Read (Oku), Update (Güncelle) ve Delete (Sil). Bu dört işlem bir arada sıklıkla CRUD olarak anılır. Kullanıcı etkileşimi içeren herhangi bir uygulamada bu dört işlem mutlaka yer alır.

İlişkisel veritabanı yönetim sistemi olarak PostgreSQL kullanacaksınız. PostgreSQL oldukça hafiftir ve ücretsizdir. Bu eğitimde şunları yapacaksınız -

  • PostgreSQL ile hızlı kurulum ve başlangıç
  • Bir PostgreSQL veritabanına bağlanma
  • Bu veritabanında tablolar oluşturma, okuma, güncelleme ve silme
  • Jupyter Notebook üzerinde SQL çalıştırma
  • Python içinde SQL çalıştırma

Hadi başlayalım.

PostgreSQL ile Kurulum ve Başlangıç

PostgreSQL hafif ve açık kaynak bir RDBMS’dir. Sektörde son derece yaygın kabul görmüştür. PostgreSQL hakkında daha fazlasını resmi web sitesinden öğrenebilirsiniz.

PostgreSQL’de sorgu yazmaya ve çalıştırmaya başlayabilmek için onu makinenize kurmanız gerekir. Kurulum son derece kolaydır. Aşağıdaki iki kısa video, PostgreSQL’in 32 bit Windows-7 makinesine nasıl indirileceğini ve kurulacağını göstermektedir:

Not: PostgreSQL’i kurarken girdiğiniz parola ve port numarasını not edin.

PostgreSQL’i makinenize başarıyla kurduktan sonra pgAdmin’i açın. pgAdmin, PostgreSQL kurulumuyla birlikte gelen kullanışlı bir araçtır ve düzenli veritabanı işlemlerini hoş bir grafik arayüz üzerinden yapmanızı sağlar. pgAdmin’in arayüzü şöyle görünür -

pgadmin

pgAdmin’i açtığınızda arayüzde "PostgreSQL 9.4 (localhost:5432)" adlı bir sunucu listelenmiş olarak göreceksiniz -

interface

Not: Sürümünüz yukarıdakinden farklı olabilir ve dolayısıyla port numarası (5432) da farklı olabilir.

Kurulum sırasında verdiğiniz parolayı girerek sunucuya bağlanın. Referans için - https://www.loom.com/share/71708f6a99ee483a977991e9e8a25808.

Yerel veritabanı sunucusuna başarıyla bağlandıktan sonra aşağıdakine benzer bir arayüz göreceksiniz -

interface

İlk göreviniz bir veritabanı oluşturmak olacak; bunu Databases sekmesine sağ tıklayıp açılır menüden New Database seçeneğini seçerek yapabilirsiniz. DataCamp_Courses adlı bir veritabanı oluşturalım. Veritabanı oluşturulduktan sonra bu eğitimin sonraki bölümlerine geçebilirsiniz.

PostgreSQL’de CRUD İşlemleri

Verilen bir spesifikasyona göre tablo oluşturma -

Bir veritabanı üzerinde işlem yapabilmek için bir tabloya ihtiyacınız olacak. O hâlde, aşağıdaki spesifikasyona (şema) sahip datacamp_courses adlı basit bir tablo (ilişki) oluşturalım -

create table

Spesifikasyon, tablonun sütunları hakkında epey bilgi verir -

  • Tablonun birincil anahtarı course_id olmalı (yalnızca bunun kalın yazıldığına dikkat edin) ve veri türü tamsayı olmalıdır. Birincil anahtar, sütun değerlerinin boş olamaması ve benzersiz olması kısıtını getirir. Tabloda yer alan belirli bir örneği veya örnek kümesini benzersiz biçimde tanımlamanızı sağlar.
  • Spesifikasyondaki kalan bilgilerin yorumlanması artık kolay olmalıdır.

Bir tablo oluşturmak için yeni oluşturduğunuz DataCamp_Courses veritabanına sağ tıklayın ve seçeneklerden CREATE Script’i seçin. Aşağıdakine benzer bir görünüm elde etmelisiniz -

create script

Şimdi aşağıdaki sorguyu çalıştıralım -

CREATE TABLE datacamp_courses(
 course_id SERIAL PRIMARY KEY,
 course_name VARCHAR (50) UNIQUE NOT NULL,
 course_instructor VARCHAR (100) NOT NULL,
 topic VARCHAR (20) NOT NULL
);

Sorguyu çalıştırmak için onu seçin ve menü çubuğundaki çalıştır düğmesine tıklayın -

execute query

Çıktı şöyle olmalıdır -

output

PostgreSQL’de bir tablo oluşturma sorgusunun genel yapısı şöyledir -

CREATE TABLE table_name (
 column_name TYPE column_constraint,
 table_constraint table_constraint
)

Tabloyu oluştururken herhangi bir table_constraint belirtmedik. Şimdilik bu atlanabilir. Diğer her şey oldukça okunaklıdır; SERIAL anahtar sözcüğü hariç. PostgreSQL’de Serial, otomatik artan bir sütun oluşturmanızı sağlar. Varsayılan olarak tamsayı türünde değerler üretir. Serial, bir tablonun son eklenen/güncellenen birincil anahtarını hatırlama yükünden kurtarır ve birincil anahtarlarda otomatik artış kullanmak iyi bir uygulamadır. Serial hakkında daha fazlasını buradan öğrenebilirsiniz.

Yeni oluşturulan tabloya bazı kayıtları ekleme -

Bu adımda tabloya bazı kayıtlar ekleyeceksiniz. Kayıtlarınız şunları içermelidir -

  • Bir kurs adı
  • Kursun eğitmeninin adı
  • Kursun konusu

course_id sütununun değerleri PostgreSQL tarafından otomatik olarak yönetilecektir. PostgreSQL’de bir insert sorgusunun genel yapısı şöyledir -

INSERT INTO table(column1, column2, …)
VALUES
 (value1, value2, …);

Bazı kayıtlar ekleyelim -

INSERT INTO datacamp_courses(course_name, course_instructor, topic)
VALUES('Deep Learning in Python','Dan Becker','Python');

INSERT INTO datacamp_courses(course_name, course_instructor, topic)
VALUES('Joining Data in PostgreSQL','Chester Ismay','SQL');

Birincil anahtarları açıkça belirtmediğinize dikkat edin. Bunun etkilerini birazdan göreceksiniz.

Yukarıdaki iki sorguyu çalıştırdığınızda, başarılı eklemelerden sonra aşağıdaki sonucu almalısınız -

Sorgu başarıyla döndü: bir satır etkilendi, 11 ms yürütme süresi.

Tablodan veriyi okuma/görüntüleme -

Bu, veri bilimi yolculuğunuzda muhtemelen çok sık yapacağınız bir şeydir. Şimdilik, datacamp_courses tablosunun durumuna bir bakalım.

Bu genellikle select sorgusu olarak adlandırılır ve genel yapısı şöyledir -

SELECT
 column_1,
 column_2,
 ...
FROM
 table_name;

datacamp_courses tablosundan tüm sütunları seçelim

SELECT * FROM datacamp_courses;

Ve elde ettikleriniz -

query

Şimdi birincil anahtarlara dikkat edin. Yalnızca kurs adlarını görmek isterseniz şunu yapabilirsiniz -

SELECT course_name from datacamp_courses;

Ve elde ettikleriniz -

course names

Tabloda mevcut olmaları koşuluyla sonuçlarınızda görmek istediğiniz kadar çok sütun adı belirtebilirsiniz. select course_name, number_particpants from datacamp_courses; çalıştırırsanız, tabloda number_particpants sütunu bulunmadığı için hata alırsınız. Şimdi tablodaki belirli bir kaydı nasıl güncelleyebileceğinizi göreceksiniz.

Tablodaki bir kaydı güncelleme -

SQL’de bir update sorgusunun genel yapısı aşağıdaki gibidir:

UPDATE table
SET column1 = value1,
    column2 = value2 ,...
WHERE
 condition;

course_instructor = "Chester Ismay" olan kaydı güncelleyecek ve course_name değerini "Joining Data in SQL" olarak ayarlayacaksınız. Ardından kaydın güncellenip güncellenmediğini doğrulayacaksınız. Bunu yapmak için sorgu şöyle olacaktır -

UPDATE datacamp_courses SET course_name = 'Joining Data in SQL'
WHERE course_instructor = 'Chester Ismay';

Seçim sorgusu çalıştırarak güncelleme sorgunuzun istenen etkiyi yapıp yapmadığına bakalım -

running query

Güncelleme sorgunuzun tam olarak istediğiniz şekilde çalıştığını görebilirsiniz. Şimdi tablodan bir kaydı nasıl sileceğinizi göreceksiniz.

Tablodan bir kaydı silme -

SQL’de bir delete sorgusunun genel yapısı şöyledir:

DELETE FROM table
WHERE condition;

course_name = "Deep Learning in Python" olan kaydı silecek ve ardından kaydın silinip silinmediğini doğrulayacaksınız. Yapıya bakıldığında, bunu aşağıdaki sorgu ile yapabileceğinizi görebilirsiniz -

DELETE from datacamp_courses
WHERE course_name = 'Deep Learning in Python';

SQL’de anahtar sözcüklerin büyük/küçük harfe duyarlı olmadığını, ancak verilerin büyük/küçük harfe duyarlı olduğunu unutmayın. Bu nedenle sorgularda büyük ve küçük harflerin karışık kullanıldığını görürsünüz.

Hedeflenen kaydın tablodan silinip silinmediğine bakalım -

deleted record

Ve evet, hedeflenen kayıt gerçekten silindi.

Eğitimde bahsedilen sorguların genel yapıları PostgreSQL Tutorial’dan alınmıştır.

Artık SQL’de temel CRUD sorgularını nasıl yapacağınızı biliyorsunuz. Bazılarınız Jupyter Notebook’ları yoğun kullanıyor olabilir ve bu sorguları doğrudan Jupyter Notebook üzerinden çalıştırma seçeneği olsa harika olur diye düşünebilir. Bir sonraki bölümde bunun nasıl yapılacağını göreceksiniz.

SQL + Jupyter Notebook’lar

Jupyter Notebook’lardan SQL sorguları çalıştırabilmek için ilk adım ipython-sql paketini kurmaktır.

Kurulu değilse şu komutla kurun:

pip install ipython-sql

Bu işlem tamamlandıktan sonra Jupyter Notebook’unuza sql uzantısını şu komutla yükleyin -

%load_ext sql

Bir sonraki adım, bir PostgreSQL veritabanına bağlanmak olacaktır. Oluşturduğunuz veritabanına bağlanacaksınız - DataCamp_Courses.

Sistemde zaten oluşturulmuş bir veritabanına bağlanabilmek için Python’a kullanılan diyalektiği algılamasını söylemeniz gerekir. Daha basit bir ifadeyle Python’a bunun bir PostgreSQL veritabanı olduğunu söylemelisiniz. Bunun için psycopg2 gerekir; şu şekilde kurulabilir:

pip install psycopg2

psycopg’yi kurduktan sonra veritabanına şu şekilde bağlanın -

%sql postgresql://postgres:postgres@localhost:5432/DataCamp_Courses
'Connected: postgres@DataCamp_Courses'

%sql kullanımına dikkat edin. Bu bir sihirli komuttur. Jupyter Notebook üzerinden SQL ifadeleri yürütmenizi sağlar. %sql’i izleyen ifade, aşağıdakileri belirttiğiniz bir veritabanı bağlantı URL’sidir -

  • Diyalekt (postgres)
  • Kullanıcı adı (postgres)
  • Parola (postgres)
  • Sunucu adresi (localhost)
  • Port numarası (5432)
  • Veritabanı adı (DaaCamp_Courses)

Artık pgAdmin arayüzünde yaptığınız her şeyi Jupyter Notebook üzerinden yapabilirsiniz. Aynı şemayla _datacampcourses tablosunu oluşturarak başlayalım.

Ancak bunu yapmadan önce tabloyu bırakmanız gerekir; SQL aynı ada sahip iki tabloyu saklamanıza izin vermez. Bir tabloyu şu şekilde bırakabilirsiniz -

%sql DROP table datacamp_courses;
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
Done.





[] 

_datacampcourses tablosu artık PostgreSQL’den silindi; dolayısıyla bu adla yeni bir tablo oluşturabilirsiniz.

%%sql
CREATE TABLE datacamp_courses(
 course_id SERIAL PRIMARY KEY,
 course_name VARCHAR (50) UNIQUE NOT NULL,
 course_instructor VARCHAR (100) NOT NULL,
 topic VARCHAR (20) NOT NULL
);
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
Done.





[] 

Buradaki %sql ve %%sql kullanımına dikkat edin. Tek satırlık bir sorgu çalıştırmak için %sql kullanabilirsiniz, ancak bir kerede birden fazla sorgu çalıştırmak istiyorsanız %%sql kullanmalısınız.

Bazı kayıtlar ekleyelim -

%%sql
INSERT INTO datacamp_courses(course_name, course_instructor, topic)
VALUES('Deep Learning in Python','Dan Becker','Python');
INSERT INTO datacamp_courses(course_name, course_instructor, topic)
VALUES('Joining Data in PostgreSQL','Chester Ismay','SQL');
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
1 rows affected.
1 rows affected.





[] 

Eklemenin beklenildiği gibi yapıldığından emin olmak için tabloyu görüntüleyin -

%%sql
select * from datacamp_courses;
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
2 rows affected. 
course_id course_name course_instructor topic
1 Deep Learning in Python Dan Becker Python
2 Joining Data in PostgreSQL Chester Ismay SQL

Akışı bozmadan devam edelim. Bir sonraki adım olarak tablodaki bir kaydı güncelleyeceksiniz -

%sql update datacamp_courses set course_name = 'Joining Data in SQL' where course_instructor = 'Chester Ismay';
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
1 rows affected.





[] 

SQL’de metinlerle çalışırken dikkatli olun. Geleneksel programlama dillerinden farklı olarak, metin değerleri tek tırnak içinde yazılmalıdır.

Şimdi güncelleme sorgunuzun istenen etkiyi yapıp yapmadığını doğrulayalım -

%%sql
select * from datacamp_courses;
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
2 rows affected. 
course_id course_name course_instructor topic
1 Deep Learning in Python Dan Becker Python
2 Joining Data in SQL Chester Ismay SQL

Şimdi bir kaydı silelim ve doğrulayalım -

%%sql
delete from datacamp_courses where course_name = 'Deep Learning in Python';
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
1 rows affected.





[] 
%%sql
select * from datacamp_courses;
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
1 rows affected. 
course_id course_name course_instructor topic
2 Joining Data in SQL Chester Ismay SQL

Bu noktada PostgreSQL’de CRUD işlemlerini yürütme ve bunları Jupyter Notebook üzerinden nasıl gerçekleştireceğiniz konusunda net bir fikre sahipsiniz. Python’a aşinaysanız ve veritabanınıza Python kodunuz üzerinden erişmek isterseniz bunu da yapabilirsiniz. Sıradaki bölüm bununla ilgilidir.

SQLAlchemy’ye Başlangıç ve SQL Sihirli Komutlarıyla Birlikte Kullanımı

Bu bölüm için SQLAlchemy paketine ihtiyacınız olacak. Genellikle Anaconda dağıtımıyla birlikte gelir. Ayrıca pip ile de kurulabilir. Kurduktan sonra şu şekilde içe aktarabilirsiniz -

import sqlalchemy

SQLAlchemy kullanarak veritabanlarınızla etkileşime geçebilmek için, veritabanlarınızın saklandığı ilgili RDBMS için bir engine oluşturmanız gerekir. Sizin durumunuzda bu PostgreSQL’dir. SQLAlchemy, yalnızca tek bir create_engine() çağrısıyla RDBMS için bir engine oluşturmanıza olanak tanır ve bu yöntem, daha önce gördüğünüz bir veritabanı bağlantı URL’sini alır.

from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:postgres@localhost:5432/DataCamp_Courses')
print(engine.table_names()) # Veritabanında bulunan tabloların adlarını görmenizi sağlar
['datacamp_courses']

_datacampcourses adlı tabloyu görebiliyorsunuz; bu da engine’i başarıyla oluşturduğunuzu bir kez daha doğrular. _datacampcourses tablosunun kayıtlarını görmek için basit bir select sorgusu çalıştırıp sonucu bir pandas DataFrame nesnesinde saklayalım.

pandas tarafından sağlanan ve bir SQL sorgu dizesi ile bir engine alan read_sql() yöntemini kullanacaksınız.

import pandas as pd

df = pd.read_sql('select * from datacamp_courses', engine)
df.head()
  course_id course_name course_instructor topic
0 2 Joining Data in SQL Chester Ismay SQL

%sql sihirli komutunu Python kodunuzla birlikte de kullanabilirsiniz.

df_new = %sql select * from datacamp_courses
df_new.DataFrame().head()
 * postgresql://postgres:***@localhost:5432/DataCamp_Courses
1 rows affected. 
  course_id course_name course_instructor topic
0 2 Joining Data in SQL Chester Ismay SQL

Uzun bir yol katettiniz!

Tebrikler, kendinizi takdir edin! Bu eğitimde yalnızca PostgreSQL’e başlangıç yapmakla kalmadınız, aynı zamanda SQL sorgularını çeşitli şekillerde nasıl çalıştırabileceğinizi de gördünüz. Bir sonraki adım olarak, David Robinson’ın (DataCamp’te Baş Veri Bilimcisi) SQL’i günlük işlerinde nasıl kullandığını anlattığı bu web seminerini izlemelisiniz. Ayrıca Windows ve Mac OS X’te PostgreSQL Nasıl Kurulur eğitimimize göz atın. SQL becerilerinizi geliştirmek isterseniz, başlangıç için aşağıdaki kaynaklar oldukça iyidir -

Konular
SQL

SQL kursları

Kurs

PostgreSQL Veritabanları Oluşturma

4 sa
22.7K
PostgreSQL veritabanı oluşturmayı öğrenin ve veritabanlarının yapısını, veri türlerini ve normalleştirilmesini keşfedin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör