Temel Veritabanı İşlemleri
Mevcut veritabanlarını listeleme:
postgres=# \l
List of databases
Name | Owner | Enc. | Collate | Ctype | Access
privileges
-----------+----------+------+-------------+-------------+--------------+
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
postgres=CTc/postgres
(3 rows)
Yeni bir veritabanı oluşturma:
postgres=# CREATE DATABASE pagila;
CREATE DATABASE
Sahip belirterek veritabanı oluşturma:
postgres=# CREATE DATABASE pg02 OWNER postgres;
CREATE DATABASE
CREATE DATABASE testdb
WITH
OWNER = postgres
TEMPLATE = template0
ENCODING = 'UTF8'
LC_COLLATE = 'C'
LC_CTYPE = 'C'
CONNECTION LIMIT = 20;
Tek bir veritabanının sunucudaki bütün kaynakları kullanmasını istemiyorsak veritabanı bazlı bağlantı limiti koyulabilir.
postgres=# CREATE DATABASE test CONNECTION LIMIT 5
CREATE DATABASE
Veritabanı silme:
postgres=# DROP DATABASE testdb;
DROP DATABASE
Türkçe sıralama destekli veritabanı oluşturma:
postgres=# CREATE DATABASE guzel_turkcem ENCODING 'UTF8' LC_COLLATE
postgres-# 'tr_TR.UTF-8' LC_CTYPE 'tr_TR.UTF-8' TEMPLATE template0;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Enc. | Collate | Ctype | Access
privileges
---------------+----------+------+-------------+-------------+--------
guzel_turkcem | postgres | UTF8 | tr_TR.UTF-8 | tr_TR.UTF-8 |
Tablo İşlemleri
Bir veritabanı içinde yeni bir tablo oluşturma:
postgres=# \c pagila
You are now connected to database "pagila" as user "postgres".
pagila=# CREATE TABLE personel (
ad varchar(40),
soyad varchar(40),
kidem int,
uid int PRIMARY KEY
);
CREATE TABLE
Tabloları listeleme:
pagila=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | personel | table | postgres
(1 row)
Tablo sahipliğini değiştirmek için:
pagila=# CREATE USER yildirim;
CREATE ROLE
pagila=# ALTER TABLE personel OWNER TO yildirim;
ALTER TABLE
pagila=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+-------
public | personel | table | yildirim
Tablo yapısını gösterme:
pagila=# \d personel
Table "public.personel"
Column | Type | Modifiers
--------+-----------------------+-----------
ad | character varying(40) |
soyad | character varying(40) |
kidem | integer |
uid | integer | not null
Indexes:
"personel_pkey" PRIMARY KEY, btree (uid)
Tabloyu düzenleme: Yeni sütun ekleme
ALTER TABLE public.personel
ADD COLUMN pagila text;
Tabloyu düzenleme: Bir sütunun tipini değiştirme
ALTER TABLE public.personel
ALTER COLUMN ad TYPE character varying (50);
Veri İşlemleri
Tabloya bir satır ekleme:
pagila=# INSERT INTO personel VALUES ('John','Doe',5,01);
INSERT 0 1
Tabloya birden fazla satır ekleme:
pagila=# INSERT INTO personel VALUES ('Jane','Doe',1,02),
('Richard','Roe',3,03), ('Fred','Bloggs', 7,04),
('Juan','Perez',11,05);
INSERT 0 4
Satır sorgulama:
pagila=# SELECT * FROM personel;
ad | soyad | kidem | uid
---------+--------+-------+-----
John | Doe | 5 | 1
Jane | Doe | 1 | 2
Richard | Roe | 3 | 3
Fred | Bloggs | 7 | 4
Juan | Perez | 11 | 5
(5 rows)
İndeks İşlemleri
PostgreSQL Primary Key ya da Unique Constraint için indeksi otomatik olarak oluşturur.
postgres=# \c pagila
You are now connected to database "pagila" as user "postgres".
pagila=# \d personel
Table "public.personel"
Column | Type | Modifiers
--------+-----------------------+-----------
ad | character varying(40) |
soyad | character varying(40) |
kidem | integer |
uid | integer | not null
Indexes:
"personel_pkey" PRIMARY KEY, btree (uid)
Standart indeks oluşturma:
pagila=# CREATE INDEX soyad_idx ON personel (soyad);
CREATE INDEX
Referans Verme İşlemleri
Bir tablodan başka bir tabloya o tablonun Primary Key alanı aracılığıyla referans verilir.
pagila=# CREATE TABLE items
(
code int PRIMARY KEY,
name text,
price numeric(10,2)
);
CREATE TABLE
pagila=# CREATE TABLE orders
(
no int PRIMARY KEY,
date date,
amount numeric,
item_code int REFERENCES items (code)
);
CREATE TABLE
Referans veren tablo:
pagila=# \d orders
Table "public.orders"
Column | Type | Modifiers
-----------+---------+-----------
no | integer | not null
date | date |
amount | numeric |
item_code | integer |
Indexes:
"orders_pkey" PRIMARY KEY, btree (no)
Foreign-key constraints:
"orders_item_code_fkey" FOREIGN KEY (item_code) REFERENCES items(code)
Çalışma Zamanı Parametreleri
SHOW
ile belirli bir çalışma parametresinin bilgisi alınabilir:
postgres=# SHOW DateStyle;
DateStyle
_____________
ISO, MDY
(1 row)
Tüm parametrelerin listesine ve bilgisine erişmek için:
postgres=# SHOW ALL;
name | setting | description
-------------------------+---------+-------------------------------------------------
allow_system_table_mods | off | Allows modifications of the structure
of ...
.
.
.
xmloption | content | Sets whether XML data in implicit
parsing ...
zero_damaged_pages | off | Continues processing past damaged
page headers.
(290 rows)
SET
komutu ile bir parametre çalışma zamanında değiştirilebilir:
postgres=# SET timezone='Europe/Rome';
SET