PostgreSQL Kurulumu ve Temel Veritabanı İşlemleri

PostgreSQL Postgres SQL Veritabanı Database Linux Kurulum Temel İlişkisel Veritabanı Veritabanı İşlemleri

PostgreSQL (yada postgres), ücretsiz ve açık kaynaklı ilişkisel veritabanıdır. İlk sürümü 1996 yılında yayımlanmıştır. SQL dilini destekler. Dünya çapında en çok tercih edilen açık kaynaklı veritabanı yönetim sistemlerinden biridir.

PostgreSQL Kurulumu

Postgres, veritabanını Debian/Ubuntu Linux işletim sistemine kurmak için terminalde;

Kod

sudo apt update
sudo apt install postgresql postgresql-contrib

komutları çalıştırılır.

Kod

sudo systemctl start postgresql.service

komutu ile postgres servisi başlatılır.

Kod

sudo systemctl status postgresql.service

komutu ile postgres servisi mevcut durumu kontrol edilir.

Postgres servis durumu
Resim 1. Postgres servis durumu

Postgres'e Bağlanmak

Postgres kurulum sonrasında sisteme varsayılan olarak postgres adlı bir kullanıcı ve rol tanımlar. Varsayılan kullanıcı ile bağlanmak için;

Kod

sudo -i -u postgres

psql

yada

Kod

sudo -u postgres psql

kodu çalıştırılarak bağlanılır.

Postgres bağlanma ve çıkış
Resim 2. Postgres bağlanma ve çıkış

Postgres'ten Çıkmak

Postgres terminal ekranından çıkmak için;

Kod

\q

kodu çalıştırılır.

Yeni Bir Rol Oluşturmak

Yeni rol oluşturmak için;

Kod

sudo -u postgres createuser --interactive

Yeni veritabanı oluşturma (yeni rol ile oturum açabilmek için rol ile aynı isimde veritabanı oluşturulmalıdır);

Kod

sudo -u postgres createdb melih

Yeni kullanıcı oluşturma (linux sisteminde kullanıcı yok ise);

Kod

sudo adduser melih

Farklı Rol ile Postgres'e Bağlanmak

Farklı kullanıcı ile postgres de oturum açmak için;

Kod

sudo -u melih psql

Postgres farklı kullanıcı ile bağlanma
Resim 3. Postgres farklı kullanıcı ile bağlanma

Postgres Komutları

Terminal ekranında postgres veritabanını kullanabilmek için kullanılır;

Postgres sürüm bilgileri için;

Kod

psql --version

Postgres yardım bilgileri için;

Kod

psql --help

Postgres bağlanmak için;

Kod

psql

Postgres çıkmak için;

Kod

\q

Postgres yardım için;

Kod

\?

Postgres komutlar yardımı için;

Kod

\h

yada

Kod

\help

Postgres terminal ekranı temizlemek için; Ctrl + L yada;

Kod

\! clear

Postgres Veritabanı Komutları

Postgres veritabanlarını listelemek için;

Kod

\list

yada

Kod

\l

Postgres veritabanlarını listeleme
Resim 4. Postgres veritabanlarını listeleme

Veritabanı Oluşturmak ve Silmek

Veritabanı oluşturma;

Kod

create database melihDB;

yada

Kod

create database "MelihDB";

Mevcut bağlı olunan kullanıcıyı ve veritabanını görmek için;

Kod

\c

Detaylı bağlantı bilgisi görmek için;

Kod

\conninfo

Mevcut veritabanından farklı bir veritabanına bağlanma;

Kod

\connect melihDB2

yada

Kod

\c melihDB

Uzaktaki veritabanına bağlanma;

Kod

psql -h localhost -p 5432 -U melih melihDB

Veritabanı silmek için;

Kod

drop database melihDB;

Tablo Oluşturma

Tablo oluşturmak için;

Kod

create table city (
    id int,
    code varchar(10),
    title varchar(50),
    createdDate date
);

Birincil anahtar ile tablo oluşturmak için;

Kod

create table country(
    id bigserial not null primary key,
    code varchar(10),
    title varchar(50),
    createdDate date
);

Tabloları listelemek için;

Kod

\d

Postgres tablo listeleme
Resim 5. Postgres tablo listeleme

Sadece tabloları listelemek için;

Kod

\dt

Tablo detaylarını listelemek için;

Kod

\d car

Postgres tablo detay bilgilerini listeleme
Resim 6. Postgres tablo detay bilgilerini listeleme

Tablo Silmek

Tablo silmek için;

Kod

drop table city;

Insert

Tabloya kayıt eklemek;

Kod

insert into country (code, title, createdDate) values ('Pakistan', 'PK', date '2022-12-30');

Postgres tabloya kayıt ekleme
Resim 7. Postgres tabloya kayıt ekleme

Select

Tablo kayıtlarını getirmek;

Kod

select * from country;

Postgres tablo kayıtlarını listeleme
Resim 8. Postgres tablo kayıtlarını listeleme

Update

Tablo kayıtlarını güncellemek;

Kod

update country set title = 'Türkiye', code = 'TR' where id = 39;

Delete

Tablo kayıtlarını silmek;

Kod

delete from country where id = 78;

Truncate

Tüm tablo kayıtlarını silmek;

Kod

truncate table country restart identity;

Bulk Insert

Sql dosyasından birden fazla kayıt eklemek;

Kod

\i /home/melih/Masaüstü/Postgres/person.sql

Export Data

Tablo verilerini .csv biçiminde dosyaya kaydeder;

Kod

\copy (select * from country) TO '/home/melih/Masaüstü/Postgres/country-data.csv' delimiter ',' csv header;

SQL koduna yorum satırı eklemek;

Kod

-- Açıklama

Select İşlemleri

Tablo kayıtlarını getirmek;

Kod

select * from person;

yada

Kod

select firstname, lastname from person;

Sonuçların kolon adını değiştirmek;

Kod

select firstname as "Ad", lastname as "Soyad" from person;

Postgres tablo kayıtlarını listeleme
Resim 9. Postgres tablo kayıtlarını listeleme

Sıralama

Tablo kayıtlarını sıralayıp getirmek;

Kod

-- Ad kolonuna göre sıralama;
select * from person order by firstname asc;

-- Sorgu sonucundaki 3. kolona göre tersten sıralama;
select * from person order by 3 desc;

-- Sorgu sonucundaki 3. ve sonra 2. kolona göre sıralama;
select * from person order by 3, 2 asc;

Distinct

Tablo kayıtlarını tekrar etmeden getirmek;

Kod

select distinct lastname from person order by lastname;

Where

Koşulu sağlayan kayıtları getirmek;

Kod

-- soyadı Yılmaz olan kayıtlar;
select * from person where lastname = 'Yılmaz'

-- soyadı Yılmaz ve cinsiyeti Erkek olan kayıtlar;
select * from person where lastname = 'Yılmaz' and gender = 'Male'

-- adı ve ya soyadı Yılmaz olan kayıtlar;
select * from person where firstname = 'Yılmaz' or lastname = 'Yılmaz'

-- Doğum tarihi 2000-01-01 tarihinden büyük ve eşit olan kayıtlar;
select * from person where birthdate >= '2000-01-01'

Postgres tablo kayıtlarını where koşulu ile listeleme
Resim 10. Postgres tablo kayıtlarını where koşulu ile listeleme

Limit

Tabloda ilk 10 kaydı getirmek;

Kod

select * from person limit 10;

yada

Kod

select * from person fetch first 10 row only;

Tabloda ilk 100 kaydı sıralayıp getirmek;

Kod

select * from person order by lastname desc limit 100;

İlk 100 kaydı koşul ile ve sıralayıp getirme;

Kod

select * from person where birthdate >= '2000-01-01' order by 5 desc limit 100;

Offset

İlk 5 kayıttan sonraki tüm kayıtları getirmek;

Kod

select * from person offset 5;

Kayıt aralığı getirme (5 kayıt atlar, 10 kayıt getirir);

Kod

select * from person offset 5 limit 10;

yada

Kod

select * from person offset 5 fetch first 10 row only;

In

In; yazılan koşullardan eşleşen kayıtları getirir;

Kod

select * from person where firstname in ('Ali', 'Veli', 'Yılmaz');

Between

Between; yazılan koşullar arasındaki kayıtları getirir;

Kod

select * from person where birthDate between '2022-01-01' and '2022-12-31';

Like

Like; kelime bazında yazılan koşullarda eşleşen kayıtları getirir;

Kod

-- Email adresi .net ile biten kayıtlar;
select * from person where email like '%.net'

-- İsmi Al ile başlayan kayıtlar
select * from person where firstname like 'Al%'

-- Soyadı içinde ol geçen kayıtlar
select * from person where lastname like '%ol%'

-- 4 karakterli y ile biten soyisimli kayıtlar
select * from person where lastname like '___y'

Postgres tablo kayıtlarını like ile listeleme
Resim 11. Postgres tablo kayıtlarını like ile listeleme

Ilike

Ilike; Like gibi kelime bazında yazılan koşullarda eşleşen kayıtları getirir büyük ve küçük harf duyarsızdır;

Kod

-- Adı al ile başlayan kayıtlar;
select * from person where firstname ilike 'al%'

Group By

Group By; Tekrar eden kayıtları gruplayıp sayısını getirir;

Kod

-- Yıllara göre doğan kişi sayıları;
select date_part('year', birthdate) as "Year", count(*) from person group by "Year";

Group By Having; Tekrar eden kayıtları gruplayıp sayısını getirir ve koşul yazmayı sağlar.

Kod

-- Yıllara göre doğan kişi sayısı 15’ten büyük olan kayıtlar;
select date_part('year', birthdate) as "Year", count(*) from person group by "Year" having count(*) > 15;

Postgres tablo kayıtlarını gruplama ve koşulla göre listeleme
Resim 12. Postgres tablo kayıtlarını gruplama ve koşulla göre listeleme

Max, Min, Avg Fonksiyonları

Max; Kolondaki en fazla olan değeri getirir;

Kod

-- En pahalı aracın fiyatı;
select max(price) from car;

Min; Kolondaki en az olan değeri getirir;

Kod

-- En ucuz aracın fiyatı;
select min(price) from car;

Avg; Kolondaki ortalama değeri getirir;

Kod

-- Ortalama araç fiyatı;
select round(avg(price)) from car;

Fonksiyon ve gruplama;

Kod

-- En az fiyata göre gruplama; marka daki en düşük modeli ve fiyatını gösterir;
select brand, model, min(price) from car group by brand, model;

Postgres tablo kayıtlarını gruplama ve fonksiyon kullanımı
Resim 13. Postgres tablo kayıtlarını gruplama ve fonksiyon kullanımı
Kod

-- En az fiyata göre gruplama; markadaki en düşük fiyatı gösterir;
select brand, min(price) from car group by brand;

Postgres tablo kayıtlarını gruplama ve fonksiyon kullanımı
Resim 14. Postgres tablo kayıtlarını gruplama ve fonksiyon kullanımı

Sum; Kolondaki toplam değeri getirir;

Kod

-- Tüm kayıtların toplam fiyatı;
select sum(price) from car;

Kod

-- marka bazında toplam fiyat;
select brand, sum(price) from car group by brand;

Round; Kolondaki değeri yuvarlar;

Kod

-- Tüm kayıtlarda fiyatlara %10 indirim;
select brand, model, price, round(price*.10,2) as "İndirim Tutarı", round(price - (price*.10), 2) as "İndirimli Fiyat" from car;

Coalesce

Değer boş ise girilen yazıyı varsayılan olarak yazar;

Kod

-- Alan boş ise girilen yazıyı yazar;
select coalesce(email, 'E-posta adresi mevcut değil!') as "E-posta";

-- Diğer kolonlar ile kullanım;
select firstname, lastname, coalesce(email, 'E-posta adresi mevcut değil!') from person;

Postgres Coalesce kullanımı
Resim 15. Postgres Coalesce kullanımı

Now

Güncel tarih ve saati verir;

Kod

select now();

Postgres Now kullanımı
Resim 16. Postgres Now kullanımı

Sadece tarihi verir;

Kod

select now()::date;

Sadece saati verir;

Kod

select now()::time;

Interval

Tarihte ekleme ve çıkarma yapar;

Güncel tarihten 5 yıl çıkarır;

Kod

select now() - interval '5 year';

Güncel tarihten 5 yıl 3 ay çıkarır;

Kod

select now() - interval '5 year 3 month';

Güncel tarihe 22 gün ekler;

Kod

select now() + interval '22 day';

Güncel tarihe 9 ay ekler; tarih döndürür;

Kod

select (now() + interval '9 months')::date;

Extract

Tarihin istenilen bölümünü verir;

Yılı verir;

Kod

select extract(year from now());

Ayı verir;

Kod

select extract(month from now());

Günü verir;

Kod

select extract(day from now());

Haftanın gününü verir;

Kod

select extract(dow from now());

Yaşı verir;

Kod

select firstname, lastname, birthdate, age(now(), birthdate) from person;

Primary Key Ekleme

Birincil Anahtar ekler;

Kod

alter table person add primary key (id);

Primary Key Silme

Birincil Anahtar siler;

Kod

alter table person drop constraint person_pkey;

Unique Constraint Ekleme

Tekil Anahtar ekler;

Kod

alter table person add constraint unique_email unique (email);

Varsayılan ismi ile tekil Anahtar ekler;

Kod

alter table person add unique (email);

Unique Constraint Silme

Tekil Anahtar siler;

Kod

alter table person drop constraints unique_email;

Check Constraint Ekleme

Check Constraint ekler;

Kod

alter table person add contraint isArchive_constraint check (isArchive = 'true' or isArchive = 'false');

Inner Join

Tabloları birleştirir. Sadece tablolardaki eşleşen kayıtları getirir;

Kod

select person.firstname, person.lastname, car.make, car.model, car.price from person
join car
on person.car_id = car.id;

Left Join

Tabloları birleştirir. Sol taraftaki tablodaki tüm kayıtlar, sağ tablodan eşleşen kayıtlar getirilir;

Kod

select person.firstname, person.lastname, car.make, car.model, car.price from person
left join car
on person.car_id = car.id;

Uuid

Universal Unique IDentifier kullanabilimek için extension oluşturulmalıdır;

Kod

-- kurulu extensionları görme;
select * from pg_available_extensions;

-- UUID extension kurulumu;
create extension if not exists "uuid-ossp";

-- UUID kullanımı;
select uuid_generate_v4();

Postgres Universal Unique Identifier kullanımı
Resim 17. Postgres Universal Unique Identifier kullanımı

Kaynaklar

  1. PostgreSQL , en.wikipedia.org, 28.09.2022 tarihinde alındı.
  2. Learn PostgreSQL Tutorial - Full Course for Beginners , www.youtube.com/FreeCodeCamp, 28.09.2022 tarihinde alındı.
  3. How To Install PostgreSQL on Ubuntu 20.04 [Quickstart] , digitalocean.com, 28.09.2022 tarihinde alındı.


Beğen