Provided by: manpages-tr_1.0.5.1-2_all bug

ISIM

       CREATE TABLE - yeni bir tablo tanimlar

KULLANIM

       CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_ismi (
         { s"utun_ismi veri_t"ur"u [ DEFAULT "ontanimli_ifade ]
           [ s"utun_kisiti [ ... ] ]
           | tablo_kisiti
           | LIKE ana_tablo [ { INCLUDING | EXCLUDING } DEFAULTS ] }  [, ... ]
       )
       [ INHERITS ( ana_tablo [, ... ] ) ]
       [ WITH OIDS | WITHOUT OIDS ]
       [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
       [ TABLESPACE tabloalani ]

       Buradaki s"utun_kisiti:

       [ CONSTRAINT kisit_ismi ]
       { NOT NULL |
         NULL |
         UNIQUE [ USING INDEX TABLESPACE tabloalani ]
         | PRIMARY KEY [ USING INDEX TABLESPACE tabloalani ]
         | CHECK (ifade)
         | REFERENCES ba,svuru_tablosu [ ( ba,svuru_s"utunu ) ]
           [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
           [ ON DELETE eylem ] [ ON UPDATE eylem ] }
       [ DEFERRABLE | NOT DEFERRABLE ]
       [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

       ve tablo_kisiti:

       [ CONSTRAINT kisit_ismi ]
       { UNIQUE ( s"utun_ismi [, ... ] )
          [ USING INDEX TABLESPACE tabloalani ]
          | PRIMARY KEY ( s"utun_ismi [, ... ] )
             [ USING INDEX TABLESPACE tabloalani ]
             | CHECK ( ifade )
             | FOREIGN KEY ( s"utun_ismi [, ... ] )
                REFERENCES ba,svuru_tablosu [ ( ba,svuru_s"utunu [, ... ] ) ]
                [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
                [ ON DELETE eylem ] [ ON UPDATE eylem ] }
       [ DEFERRABLE | NOT DEFERRABLE ]
       [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

A,CIKLAMA

       CREATE TABLE o anki veritabanininda yeni bir tabloyu ilk olarak bos bir
       tablo  olarak  olusturacaktir.  Tablonun   sahibi   komutu   calistiran
       kullanici olacaktir.

       Eger bir sema ismi belirtilmisse (CREATE TABLE     myschema.mytable ...
       gibi), tablo belirtilen semada olusturulur. Aksi takdirde o an  gecerli
       olan   semada   olusturulur.  Gecici  tablolar  bir  ozel  sema  icinde
       mevcuttur, dolayisiyla bir gecici  tablo  olustururken  bir  sema  ismi
       belirtilmeyebilir.   Tablo   ismi   sema   icindeki  diger  tablolarin,
       indekslerin ve sanal tablolarin isimlerinden farkli olmalidir.

       CREATE TABLE ayrica, ozdevinimli olarak tablonun bir satirina  karsilik
       olarak  karma  bir  veri turu olusturur. Bu nedenle, ayni sema icindeki
       tablolar mevcut veri turleriyle ayni isme sahip olamazlar.

       Istege bagli kisit  deyimleri  ile  yeni  veya  guncellenen  satirlarin
       yerlestirme  ve  guncelleme  islemlerinin  saglamasi  gereken  kisitlar
       (sinamalar)  belirtilir.  Bir  kisit,  tablo  icinde  cesitli  yollarla
       gecerli degerlerin tanimlanmasina yardimci olacak bir SQL nesnesidir.

       Kisitlari  tanimlamanin  iki  yolu  vardir:  tablo  kisitlari  ve sutun
       kisitlari.  Bir  sutun  kisiti  bir  sutun  taniminin  parcasi   olarak
       tanimlanir ve birden fazla sutunu kusatabilir. Her sutun kisiti ayrica,
       bir tablo kisiti olarak da yazilabilir; bir  kisit  sadece  bir  sutunu
       etkilediginde bir  sutun kisiti sayilabilir.

PARAMETRELER

       TEMPORARY veya TEMP
              Belirtilmisse  tablo bir gecici tablo olarak olusturulur. Gecici
              tablolar bir oturumun sonunda ozdevinimli olarak silinir,  bazan
              istege   bagli  olarak  bir  hareketin  sonunda  da  silinebilir
              (asagidaki ON  COMMIT  aciklamasina  bakiniz).  sema  nitelemeli
              ismlerle  basvurulmadikca,  ayni  isimle varolan kalici tablolar
              gecici  tablonun  varligi  durumunda  o  anki  oturuma   gorunur
              olmazlar.   Bir  gecici  tablo uzerinde olusturulan indeksler de
              ozdevinimli olarak gecici olacaktir.

              Istege bagli olarak,  TEMPORARY veya TEMP'den once  GLOBAL  veya
              LOCAL  yazilabilir.  Bu, PostgreSQL'de bir sey farkettirmez, ama
              yine de Uyumluluk bolumune bakin.

       tablo_ismi
              Olusturulacak tablonun ismi (sema nitelemeli olabilir).

       s"utun_ismi
              Yeni tabloda olusturulacak bir sutunun ismi.

       veri_t"ur"u
              Sutunun veri turu. Bu, dizi belirtecleri icerebilir.  PostgreSQL
              tarafindan  desteklenen veri turleri hakkinda bilgi edinmek icin
              http://www.postgresql.org/docs/8.0/static/datatype.html adresine
              bakiniz.

       DEFAULT "ontanimli_ifade
              DEFAULT  deyimi  sutun taniminin icinde gorunerek sutun icin bir
              ontanimli veri degeri atar. Deger,  bir  degisken  icrmeyen  bir
              ifadedir  (tablo  icinde  diger  sutunlara cagraz basvurulara ve
              altsorgulara  izin  verilmez).  Ontanimli  ifadenin  veri   turu
              sutunun veri turu ile eslesmelidir.

              Onanimli  ifade, sutun icin bir deger belirtmeyen bir veri girme
              isleminde sutun degeri olarak kullanilacaktir.  Bir  sutun  icin
              ontanimli bir deger belirtilmezse, NULL ontanimlidir.

       INHERITS ( ana_tablo [, ... ] )
              Istege  bagli INHERITS deyimi, yeni bir tablonun tum sutunlarini
              miras  alacagi   tablolarin   bir   listesini   belirtmek   icin
              kullanilir.

              INHERITS kullanimi yeni cocuk tablo ile onun abeveyni olan tablo
              arasinda kalici bir birliktelik olusturur. Ebeveynler uzerindeki
              sema  degisiklikleri  normalde cocuklari da etkiler ve ontanimli
              olarak cocuk tablonun verisi ebeveynler tarafindan paylasilir.

              Eger ayni sutun ismi birden fazla ebeveyn tabloda mevcutsa ve bu
              tablolarin   bu   sutunlari  veri  turu  bakimindan  eslesmedigi
              takdirde bir hata raporlanacaktir. Eger boyle bir  durum  yoksa,
              yinelenen  sutunlar  yani  tabloda  tek  bir  sutun  olusturacak
              sekilde  katistirilirlar.  Eger  yeni  tablonun  sutun  isimleri
              listesi ayni zamanda miras alinmis bir sutun da iceriyorsa, veri
              turu miras alinan sutunlara benzer sekilde  eslesmeli  ve  sutun
              tanimlari  tek  bir sutun olarak katistirilmalidir. Ancak, miras
              alinan ve yeni sutun bildirimlerinin esdeger kisitla  belirtmesi
              gerekmez:    bildirimlerden   toplanan   tum  kisitlar  birlikte
              katistirilir ve tumu yeni tabloya  uygulanir.  Eger  yeni  tablo
              sutun   icin   acikca  bir  ontanimli  deger  belirtiyorsa,   bu
              ontanimli  deger,  miras  alinan   sutun   bildirimlerin   gelen
              ontanimlilarin yerine gecer. Aksi takdirde, sutun icin ontanimli
              deger belirten her ebeveyn ayni ontanimli degeri  belirtmelidir,
              yoksa bir hata raporlanacaktir.

       LIKE ana_tablo [ { INCLUDING | EXCLUDING } DEFAULTS ]
              LIKE  deyimi,  yeni  bir  tabloya  veri  turleri  ve bos olmayan
              kisitlari  ile  birlikte  tum  sutun   isimlerinin   ozdevinimli
              kopyalanacagi bir tablo belirtir.

              INHERITS'in   tersine,  yeni  tablo  ve  ozgun  tablo  olusturma
              isleminden sonra tamamen birbirlerinin  kopyasi  olurlar.  Ozgun
              tabloda  yapilacak  degisiklikler yeni tabloya uygulanmayacak ve
              yeni tabloda ozgun tablodan alinmis veri olmayacaktir.

              Kopyalanan sutun tanimlari icin ontanimli olan  ifadeler  sadece
              INCLUDING   DEFAULTS  belirtilmisse  kopyalanacaktir.  Ontanimli
              davranis ontanimli olan ifadelerin dislanmasi  ve  sonuc  olarak
              yeni   tablonun   tum   sutunlarinin   bos  ontanimlilara  sahip
              olmasidir.

       WITH OIDS, WITHOUT OIDS
              Bu istege bagli  deyimler,  yeni  tablonun  satirlarinin  onlara
              atanacak OID'lere (nesne belirteclerine) sahip olup olmayacagini
              belirtmekte kullanilir. Eger ne WITH OIDS  ne  de  WITHOUT  OIDS
              belirtilmisse,  ontanimli  deger  default_with_oids yapilandirma
              parametresinin  degerine  baglidir.  (Eger  yeni   tablo   nesne
              belirteclerine   sahip   bir  tabloyu  miras  aliyorsa,  tabloyu
              olusturan cumle WITHOUT  OIDS  icerse  bile  WITH  OIDS  gecerli
              olur.)

              Eger  WITHOUT OIDS belirtilmis ve uygulanmissa, yeni tablo nesne
              belirteclerini saklamaz ve girilen her yeni satir icin bir nesne
              belirteci  atanmaz. Nesne belirteci tuketimi azalacagindan ve bu
              suretle 32 bitlik OID sayacinin  basa  donmesi  erteleneceginden
              genelde  edilen  zahmete  deger.  Sayac  bir kere basa dondu mu,
              nesne belirteclerinin artik essiz olmayacagi  varsayilir  ve  bu
              onlari   nispeten   daha   az   yararli   hale   getirir.  Nesne
              belirteclerinin dislanmasi ek olarak,  her  satir  icin  4  bayt
              (cogu  makinede)  olmak uzere tablonun disk uzerinde kaplayacagi
              alani dusurecek ve basarimi oldukca arttiracaktir.

              Tablo olusturulduktan sonra nesne belirteclerini kaldirmak  icin
              ALTER TABLE [alter_table(7)] kullanin.

       CONSTRAINT kisit_ismi
              Bir  sutun  ya  da  tablo  kisiti  icin  istege  bagli bir isim.
              Belirtilmezse ismi sistem uretir.

       NOT NULL
              Sutunun bos deger iceremeyecegini belirtir.

       NULL   Sutunun bos deger icermesine izin verilir. bu ontanimlidir.

              Bu deyim, sadece  standartdisi  SQL  veritabanlariyla  uyumluluk
              icin vardir. Yeni uygulamalarda kullanimindan vazgecilmelidir.

       UNIQUE kisiti, bir tablonun bir veya daha fazla sutunundan olusan bir grubunun sadece essiz degerler icerebilecegini belirtir. Essiz tablo kisitinin davranisi, cok sayida sutun belirtilebilmesi disinda sutun kisitininki ile aynidir.

              Essizlik kisitinin amacina uygun olarak, bos degerlerin esit olmadiklari varsayilir.

              Her essiz tablo kisiti, ayni tabloda tanimlanmis diger essizlik veya birincil anahtar kisiti tarafindan isimlendirilmis sutun grubundan farkli bir sutun grubunu isimlendirmelidir. (Aksi takdirde, yalnizca, ayni kisit iki kere listelenmis olur.)

       Birincil anahtar kisiti bir tablonun bir sutununun ya da sutunlarinin sadece elsiz ve bos olmayan degerler icerebilecegini belirtir. Teknik olarak, PRIMARY KEY sadece UNIQUE ile NOT NULL deyiminin birlesimidir, fakat bir sutun grubunun birincil anahtar olarak belirtilmesi ayrica, sema tasarimi hakkinda hamveri saglar; bir birincil anahtar uygulanmis gibi diger tablolar, bu tablonun satirlari icin bir essiz belirtec olarak bu sutun grubuna bel baglayayabilir.

              Ister sutun ister tablo kisiti olarak belirtilsin, bir tablo icin sadece bir birincil anahtar belirtilebilir.

              Birincil anahtar kisiti, ayni tabloda tanimlanmis bir essizlik kisiti tarafindan isimlendirilmis diger sutun gruplarindan farkli bir sutun grubunu isimlendirmelidir.

       CHECK (ifade)
              CHECK deyimi, bir veri girme veya guncelleme islemi sonucunda yeni ya da guncellenmis satirlarin saglamasi gereken bir mantiksal sonuc ureten bir ifadeyi belirtmek icin kullanilir. TRUE veya UNKNOWN olarak sonuclanan ifadeler basarili kabul edilir. Bir veri girme veya guncelleme isleminin urettigi bir FALSE sonucunda bir hata olagandisiligi olusur ve bu veri girme veya guncelleme islemi veritabanini degistirmez. Bir tablo kisiti icinde gorunen bir ifade cok sayida sutunun degeri ile ilgili olabilirken, bir sutun kisiti olarak belirtilen bir sinama kisiti sadece bu sutunun degeriyle ilgili olmalidir.

              Simdilik, CHECK ifadeleri ne altsorgu icerebilir ne de uzerinde calisilan satir disindaki sutunlarin degerleriyle ilgili olabilir.

       Bu deyimler, basvurulan tablonun bir satirinin basvurulan sutunlarindaki degerlerle eslesmesi gereken degerler icermesi istenen yeni tablonun bir ya da daha fazla sutunundan olusan bir sutun grubunu gerektiren bir yabanci anahtar kisiti belirtir. Eger ba,svuru_s"utunu belirtilmezse, ba,svuru_tablosu'nun birincil anahtari kullanilir. Basvurulan sutunlar, basvurulan tablodaki bir essizlik veya bir birincil anahtar kisitininin sutunlari olmalidir.

              Bsvurulan sutunlara girilen bir deger, basvurulan tablonun ve basvurulan sutunlarin degerleriyle belirtilen eslesme turu kullanilarak eslesmelidir. Uc eslesme turu vardir: MATCH FULL, MATCH PARTIAL ve ayni zamanda ontanimli olan MATCH SIMPLE. MATCH FULL, tum yabanci anahtar sutunlari bos olmadikca, bir cok sutunlu yabanci anahtarin tek sutununun bos olmasina izin vermeyecektir. MATCH SIMPLE, diger yabanci anahtar sutunlari bos deger icermezken, bazi yabanci anahtar sutunlarinin bos deger icermesine izin verecektir. MATCH PARTIAL ise henuz gerceklenmemistir.

              Ek olarak, basvurulan sutunlardaki veri degistiginde, bu tablonun sutunlarinin verisi uzerinde bazi eylemler uygulanir. ON DELETE deyimi, basvurulan tablodaki basvurulan satir silindiginde uygulanacak eylemi belirtmekte kullanilir. Benzer sekilde, ON UPDATE deyimi, basvurulan tablodaki basvurulan sutun yeni bir degerle guncellendiginde uygulanacak eylemi belirtmekte kullanilir. Eger basvurulan satir guncellenmeksizin bu sutunu iceren satir guncellenmisse, bir islem yapilmaz. NO ACTION sinamasi disinda hicbir goreli eylem, kisitta ertelenebilecegi belirtilmis olsa bile ertelenemez. Her deyim icin olasi eylemler sunlardir:

              NO ACTION
                     Silme veya guncelleme islemini bir yabanci anahtar kisiti celiskisi urettiginde bunu belirten bir hatanin uretilmesini saglar. Eger kisit ertelenmisse ve basvurulan satirlar hala mevcutsa, bu hata kisitin sinanmasi sirasinda uretilecektir. Bu ontanimli eylemdir.

              RESTRICT
                     Silme veya guncelleme islemini bir yabanci anahtar kisiti celiskisi urettiginde bunu belirten bir hatanin uretilmesini saglar. Sinamanin ertelenebilir olmamasi disinda NO ACTION'a benzer.

              CASCADE
                     Silinen satira basvuran bir satirin silinmesini ya da basvuran sutunun degerinin basvurulan sutunun yeni degerine guncellenmesini saglar.

              SET NULL
                     Basvuran sutunlarin bos olmasini saglar.

              SET DEFAULT
                     Basvuran sutunlara ontanimli degerlerinin atanmasini saglar.

              Eger basvurulan sutunlar sikca degismiyorsa, yabanci anahtar sutununa bir indeks eklemek akillica olur, boylece yabanci anahtar sutunu ile ilgili goreli eylemler daha verimli uygulanabilir.

       DEFERRABLE, NOT DEFERRABLE
              Kisitin ertelenip ertelenmeyecegini belirler. Ertelenebilir olmayan (not deferrable) bir kisit her deyimden sonra aninda sinanacaktir. Ertelenebilir bir kisit ise, SET CONSTRAINTS [set-constraints(7)] deyimi kullanilarak hareketin sonuna kadar ertelenebilir. NOT DEFERRABLE ontanimlidir. Simdilik sadece yabanci anahtar kisitlari bu deyimleri kabul etmektedir. Diger tum kisit turleri ertelenebilir degildir.

       INITIALLY IMMEDIATE, INITIALLY DEFERRED
              Eger bir kisit ertelenebilirse, bu deyim kisitin ontanimli sinama zamanini belirtmek icin kullanilabilir. Eger kisit INITIALLY IMMEDIATE ise, her deyimden sonra sinanacaktir. Eger kisit INITIALLY DEFERRED ise, sadece hareketin sonunda sinanir. Kisitin sinama zamani SET CONSTRAINTS [set_constraints(7)] cumlesi ile degistirilebilir.

       ON COMMIT
              Gecici tablolarin hareket kumesinin sonundaki davranisi, ON COMMIT kullanilarak denetlenebilir. Uc secenegi vardir:

              PRESERVE ROWS
                     Hareketin sonunda ozel bir eylem yapilmaz. Bu ontanimli davranistir.

              DELETE ROWS
                     Her hareket kumesinin sonunda gecici tablonun satirlari silinir. Aslinda, her teslimde (commit) ozdevinimli bir TRUNCATE [truncate(7)] yapilir.

              DROP   Gecici tablo o anki hareket kumesinin sonunda silinecektir.

       TABLESPACE tabloalani
              tabloalani, yeni tablonun icinde olusturulacagi tablo alaninin ismidir. Belirtilmezse, default_tablespace yapilandirma parametresinin degeri, bu parametrenin degeri bos dizge ise veritabaninin ontanimli tablo alani kullanilir.

       USING INDEX TABLESPACE tabloalani
              Bir UNIQUE veya PRIMARY KEY kisiti ile iliskili olarak olusturulacak indeksdeki tablo alaninin secimini mumkun kilar. Belirtilmezse, default_tablespace yapilandirma parametresinin degeri, bu parametrenin degeri bos dizge ise veritabaninin ontanimli tablo alani kullanilir.

EK BILGI

       Nesne  belirteclerinin (OID) yeni uygulamalarda kullanilmasi onerilmez:
       mumkunse, bir SERIAL veya baska bir kayit listesi uretecinin,  tablonun
       birincil  anahtari  olarak  kullanilmasi onerilir. Yine de uygulamaniz,
       bir tablonun belli bir satirini  belirtmek  icin  nesne  belirteclerini
       kullaniyorsa,  tablodaki  nesne  belirteclerinin  sayac  basa dondukten
       spnra bile  satirlari  essiz  olarak  belirttiginden  emin  olmak  icin
       tablonun  oid  sutununda bir essizlik kisiti olusturmanizi oneririz. Bu
       nesne  belirteclerinin  veritabani  capinda  essiz  oldugunu   kabulden
       kacinin; eger veritabani capinda essiz bir belirtece ihtiyaciniz varsa,
       tableoid ile tablonun oid sutununu birlikte kullanin.

       Ipucu: Birincil anahtari olmayan tablolar icin, hem bir OID hem de  bir
              essiz   veri   anahtari   olmaksizin,  satirlari  belirtmek  zor
              olacagindan, WITHOUT OIDS kullanimi onerilmez.

       PostgreSQL essizligi guclendirmek  icin  her  essizlik  kisiti  ve  her
       birincil  anahtar kisiti icin bir indeksi ozdevinimli olarak olusturur.
       Bu suretle, birincil anahtar utunu icin acikca  bir  indeks  olusturmak
       gerekmez. (Daha fazla bilgi icin CREATE INDEX [create_index(7)] kilavuz
       sayfasina bakiniz.)

       Essizlik kisitlari ve birincil anahtarlar, simdiki gerceklenimde  miras
       alinmamaktadir.  Bu,  essizlik  kisitlari ile miras almanin birlesimini
       tersine islevsiz yapar.

       Bir tablo  1600  sutundan  fazla  sutun  iceremez.  (Uygulamada,  demet
       uzunlugu kisitlarindan dolayi etkin sinir daha dusuktur.)

"ORNEKLER

       films ve distributors tablolarini olusturmak icin:

           CREATE TABLE films (
               code        char(5) CONSTRAINT firstkey PRIMARY KEY,
               title       varchar(40) NOT NULL,
               did         integer NOT NULL,
               date_prod   date,
               kind        varchar(10),
               len         interval hour to minute
           );

           CREATE TABLE distributors (
               did    integer PRIMARY KEY DEFAULT nextval('serial'),
               name   varchar(40) NOT NULL CHECK (name <> '')
           );

       2 boyutlu bir dizi ile bir tablo olusturmak icin:

       CREATE TABLE array_int (
           vector  int[][]
       );

       films  tablosu icin bir essiz tablo kisitinin tanimlanmasi. Essiz tablo
       kisitlari tablonun bir veya daha fazla sutunu icin tanimlanabilir:

           CREATE TABLE films (
               code        char(5),
               title       varchar(40),
               did         integer,
               date_prod   date,
               kind        varchar(10),
               len         interval hour to minute,
               CONSTRAINT production UNIQUE(date_prod)
           );

       Bir sinama sutunu kisiti tanimlamak icin:

           CREATE TABLE distributors (
               did     integer CHECK (did > 100),
               name    varchar(40)
           );

       Bir sinama tablo kisiti tanimlamak icin:

           CREATE TABLE distributors (
               did     integer,
               name    varchar(40)
               CONSTRAINT con1 CHECK (did > 100 AND name <> '')
           );

       films tablosu icin bir birincil anahtar tablo  kisitinin  tanimlanmasi.
       Birincil  anahtar  tablo  kisitlari  tablonun  bir  ya  da  daha  fazla
       sutununda tanimlanabilir:

           CREATE TABLE films (
               code        char(5),
               title       varchar(40),
               did         integer,
               date_prod   date,
               kind        varchar(10),
               len         interval hour to minute,
               CONSTRAINT code_title PRIMARY KEY(code,title)
           );

       distributors tablosu icin bir birincil anahtar kisitinin  tanimlanmasi.
       Asagidaki iki ornek esdegerdir, ilki tablo kisiti sozdizimini, ikincisi
       sutun kisiti sozdizimini kullanir:

           CREATE TABLE distributors (
               did     integer,
               name    varchar(40),
               PRIMARY KEY(did)
           );

           CREATE TABLE distributors (
               did     integer PRIMARY KEY,
               name    varchar(40)
           );

       Asagidaki ornekte, name sutunu icin ontanimli deger  olarak  bir  dizge
       sabiti  atanmakta;  did sutununun ontanimli degeri bir kayit listesinin
       sonraki  degeri  secilerek  uretilmekte;  modtime  sutununun  ontanimli
       degeri ise satira verinin girildigi zaman olmaktadir.

           CREATE TABLE distributors (
               name      varchar(40) DEFAULT 'Luso Films',
               did       integer DEFAULT nextval('distributors_serial'),
               modtime   timestamp DEFAULT current_timestamp
           );

       distributors  tablosunda  acikca bir isim belirterek iki NOT NULL sutun
       kisitinin tanimlanmasi:

           CREATE TABLE distributors (
               did     integer CONSTRAINT no_null NOT NULL,
               name    varchar(40) NOT NULL
           );

       name sutunu icin bir essizlik kisitinin tanimlanmasi:

           CREATE TABLE distributors (
               did     integer,
               name    varchar(40) UNIQUE
           );

       Bu ornek, yukaridaki ornege esdegerdir:

           CREATE TABLE distributors (
               did     integer,
               name    varchar(40),
               UNIQUE(name)
           );

       diskvol1 tablo alaninda cinemas tablosunun olusturulmasi:

           CREATE TABLE cinemas (
                   id serial,
                   name text,
                   location text
           ) TABLESPACE diskvol1;

UYUMLULUK

       CREATE TABLE cumlesi SQL-92 ve SQL:1999'un bir alt kumesi  ile  asagida
       belirtilenler disinda uyumludur.

   Ge,cici tablolar
       CREATE  TEMPORARY TABLE sozdizimi bakimindan SQL standardina benzese de
       etkisi ayni degildir. Standartta, gecici tablolar bir defada tanimlanir
       ve onlara ihtiyac oldukca he oturumda ozdevinimli olarak mevcut olurlar
       (baslangicta bos icerikle). PostgreSQL'de ise, bir gecici tablonun  her
       gerekisinde   oturumda   CREATE   TEMPORARY   TABLE  cumlesinin  acikca
       calistirilmasi gerekir. Bu,  farkli  oturumlarin  ayni  gecici  tabloyu
       farkli  amaclarla  kullanabilmesine  olanak  saglar. Halbuki standardin
       yaklasimi, belirtilen gecici tablo ismiyle erisilen her  kopyanin  ayni
       tablo yapisina sahip olmasi seklinde bir sinirlama icerir.

       Standardin  gecici  tablolarin  davranisiyla  ilgili tanimi genis capta
       yoksayilir. Bu  noktada,  PostgreSQL'in  davranisi  cesitli  baska  SQL
       veritabanlarininkine benzerlik gosterir.

       Standardin   yerel   ve   genel  gecici  tablolari  ayrimsama  yontemi,
       PostgreSQL'in   sahip   olmadigi   modul   kavramina   oturtuldugundan,
       PostgreSQL  ayni  yontemi  kullanmaz.  Uyumluluk ugruna, PostgreSQL bir
       gecici tablo bildiriminde GLOBAL ve LOCAL  anahtar  sozcuklerini  kabul
       eder, ama bunlarin bir etkisi yoktur.

       Gecici  tablolar  icin  ON  COMMIT  deyimi  SQL  standardiyla benzerlik
       gosterse de, bazi farklar vardir. Eger  ON  COMMIT  belirtilmezse,  SQL
       ontanimli  davranis olarak ON COMMIT DELETE ROWS belirtiken, PostgreSQL
       ontanimli davranis olarak ON COMMIT PRESERVE ROWS belirtir.  ON  COMMIT
       DROP secenegi ise SQL standardinda yoktur.

   S"utun Sinama Kisitlari
       SQL  standardi,  CHECK  sutun kisitlarinin sadece uygulandigi sutun ile
       ilgili olabilecegini soyler; sadece CHECK tablo  kisitlari  cok  sayida
       sutun  ile  ilgili  olabilir.  PostgreSQL boyle bir sinirlamayi zorunlu
       kilmaz; sutun ve tablo kisitlarinin farksiz oldugunu kabul eder.

   NULL Kisiti
       NULL kisiti (aslinda bir kisit degildir) (ve simetrigi  olan  NOT  NULL
       kisiti),   bir   PostgreSQL   olusumudur   ve   bazi  baska  veritabani
       sistemleriyle uyumluluk adina vardir. Bir sutun  icin  zaten  ontanimli
       oldugundan varligi basitce kuru gurultudur.

   Kalitim
       INHERITS   deyimi   ile   cok  sayida  miras  alinmasi  bir  PostgreSQL
       olusumudur.  SQL:1999  standardi  (ama,  SQL-92  degil),   farkli   bir
       sozdizimi  ve  farkli  sozcuklerle  tek bir miras alma deyimi tanimlar.
       SQL:1999 tarzi kalitim henuz PostgreSQL tarafindan desteklenmemektedir.

   Nesne Kimlikleri
       PostgreSQL'in OID kavrami standart degildir.

   Sifir S"utunluk Tablolar
       PostgreSQL bir tablonun hic  sutun  icermeksizin  olusturulmasina  izin
       verir  (CREATE  TABLE  foo();  gibi). Bu bir PostgreSQL olusumudur. SQL
       standardi sifir sutunluk tablolara izin vermez. Sifir sutunluk tablolar
       kendi   baslarina   cok   kullanisli   olmamakla   beraber,  buna  izin
       verilmemesi,  ALTER  TABLE  DROP  COLUMN  icin  tuhaf   ozel   durumlar
       olusmasina  yol acar, dolayisiyla standardin bu sinirlamasini yoksaymak
       daha temiz gorunur.

   Tablo Alanlari
       PostgreSQL'in tablo alani  kavrami  standardin  bir  parcasi  degildir.
       Dolayisiyla,  TABLESPACE  ve  USING  INDEX  TABLESPACE  deyimleri birer
       PostgreSQL olusumudur.

ILGILI BELGELER

       ALTER  TABLE  [alter_table(7)],  DROP  TABLE  [drop_table(7)],   CREATE
       TABLESPACE [create_tablespace(7)].

,CEVIREN

       Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005