File: alter_table.7.xml

package info (click to toggle)
manpages-tr 1.0.5.1-3
  • links: PTS
  • area: main
  • in suites: bullseye, buster
  • size: 3,004 kB
  • sloc: xml: 31,473; ansic: 559; makefile: 134; sh: 68
file content (248 lines) | stat: -rw-r--r-- 23,153 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
<?xml version="1.0" encoding="UTF-8"?>
<!-- ********************************************************************
     $Id: alter_table.7.xml,v 1.8 2002/12/20 22:46:09 nilgun Exp $
     ******************************************************************** -->

<refentry id="tr-man7-alter_table">
 <refmeta>
  <refentrytitle>ALTER TABLE</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo class="header">SQL - Dil Deyimleri</refmiscinfo>
  <refmiscinfo class="domain">PostgreSQL</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>ALTER TABLE</refname>
  <refpurpose>bir tablonun tanımını değiştirir</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis><command>ALTER TABLE</command> [ ONLY ] <emphasis>isim</emphasis> [ * ]
    <emphasis>eylem</emphasis> [, ... ]
<command>ALTER TABLE</command> [ <command>ONLY</command> ] <emphasis>isim</emphasis> [ * ]
    <command>RENAME</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <command>TO</command> <emphasis>yeni_sütun</emphasis>
<command>ALTER TABLE</command> <emphasis>isim</emphasis>
    <command>RENAME TO</command> <emphasis>yeni_isim</emphasis>

<emphasis>eylem</emphasis> şunlardan biri olabilir:

    <command>ADD</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <emphasis>tür</emphasis> [ <emphasis>sütun_kısıtı</emphasis> [ ... ] ]
    <command>DROP</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> [ <command>RESTRICT</command> | <command>CASCADE</command> ]
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <command>TYPE</command> <emphasis>tür</emphasis> [ <command>USING</command> <emphasis>ifade</emphasis> ]
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <command>SET DEFAULT</command> <emphasis>ifade</emphasis>
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <command>DROP DEFAULT</command>
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> { <command>SET</command> | <command>DROP</command> } <command>NOT NULL</command>
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis> <command>SET STATISTICS</command> <emphasis>tamsayı</emphasis>
    <command>ALTER</command> [ <command>COLUMN</command> ] <emphasis>sütun</emphasis>
        <command>SET STORAGE</command> { <command>PLAIN</command> | <command>EXTERNAL</command> | <command>EXTENDED</command> | <command>MAIN</command> }
    <command>ADD</command> <emphasis>tablo_kısıtı</emphasis>
    <command>DROP CONSTRAINT</command> <emphasis>kısıt_ismi</emphasis> [ <command>RESTRICT</command> | <command>CASCADE</command> ]
    <command>CLUSTER ON</command> <emphasis>indeks_ismi</emphasis>
    <command>SET WITHOUT CLUSTER</command>
    <command>SET WITHOUT OIDS</command>
    <command>OWNER TO</command> <emphasis>yeni_aidiyet</emphasis>
    <command>SET TABLESPACE</command> <emphasis>tabloalanı_ismi</emphasis>
</synopsis>
 </refsynopsisdiv>

 <refsect1><title>Açıklama</title><para>
<command>ALTER TABLE</command> mevcut bir tablonun tanımını değiştirir. Çeşitli alt biçimleri vardır:
  </para><para><variablelist><varlistentry>
    <term><command>ADD COLUMN</command></term>
    <listitem><para><link linkend="tr-man7-create_table" xreflabel="CREATE TABLE"/> ile aynı sözdizimini kullanarak tabloya yeni bir sütun eklemekte kullanılır.
     </para></listitem></varlistentry><varlistentry>
    <term><command>DROP COLUMN</command></term>
    <listitem><para>Bir tablodan bir sütunu kaldırmak için kullanılır. Sütunla ilgili indeksler ve tablo kısıtları özdevimli olarak kaldırılır. Anahtar başvuruları ve sanal tablolar gibi sütuna tablo dışında bağımlı herşeyin buna dahil olmasını istiyorsanız, <command>CASCADE</command>'a da ihtiyacınız var demektir.
     </para></listitem></varlistentry><varlistentry>
    <term><command>ALTER COLUMN TYPE</command></term>
    <listitem><para>Bir tablo sütununun türünü değiştirmekte kullanılır. Sütunla ilgili indeksler ve tablo kısıtları yeni sütun türünü kullanacak şekilde, özgün olarak sağlanmış ifadelerle yeniden çözümlerek özdevimli olarak değiştirilir. İsteğe bağlı <command>USING</command> deyimiyle yeni sütun değerlerinin eski değerlerden nasıl hesaplanacağı belirtilir; kullanılmadığı takdirde, öntanımlı dönüşüm, eski veri türünden yeni veri türüne atama dönüşümü şeklinde yapılır. Eski türden yeni türe dönüşüm için bir örtük dönüşüm ya da atama dönüşümü yoksa, bir <command>USING</command> deyimi kullanılmak zorundadır.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET</command>/<command>DROP DEFAULT</command></term>
    <listitem><para>Bir sütunun öntanımlı değerini belirlemek ya da kaldırmak için kullanılır. Öntanımlı değerler, sadece sonraki <command>INSERT</command> cümlelerine uygulanır; tablodaki mevcut satırları etkilemez. Öntanımlılar, ayrıca sanal tablolar için de oluşturulmuş olabilir, bu durumda sadece, sanal tabloya <command>ON INSERT</command> uygulanmadan önce <command>INSERT</command> deyimiyle yerleştirilir.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET</command>/<command>DROP NOT NULL</command></term>
    <listitem><para>Bir sütunun NULL değerlere izin verip vermeyeceğini belirlemek için kullanılır. Sadece, sütun bir NULL değer içermediği takdirde, <command>SET NOT NULL</command> kullanabilirsiniz.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET STATISTICS</command></term>
    <listitem><para>Sonraki <link linkend="tr-man7-analyze" xreflabel="ANALYZE"/> işlemleri için sütun başına istatistik toplama hedefini belirlemek için kullanılır. Hedef 0-1000 aralığında ya da sistem öntanımlı istatistik hedefininin (bir yapılandırma parametresi olan <literal>default_statistics_target</literal>'in değerinin) kullanılması için -1 olarak belirtilebilir. <productname>PostgreSQL</productname> sorgu planlamacısı tarafından istatistiklerin kullanımı hakkında daha fazla bilgi edinmek için<sbr/><ulink url="http://www.postgresql.org/docs/8.0/static/planner-stats.html"/> adresine bakınız.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET STORAGE</command></term>
    <listitem><para>Bir sütunun saklama kipini belirlemek için kullanılır. Bu, sütunun içerde mi yoksa ek bir tabloda mı tutulacağını ve verinin sıkıştılacağını mı yoksa sıkıştılmayacağını mı denetler. <type>integer</type> gibi sabit genişlikli değerlerin için içerde ve sıkıştırılmış olması için <command>PLAIN</command> kullanılmalıdır. İçerde ve sıkıştırılmış değerler için <command>MAIN</command>, harici ve sıkıştırılmamış değerler için  <command>EXTERNAL</command>, harici ve sıkıştırılmış değerler için <command>EXTENDED</command> kullanılır. <command>EXTENDED</command>, <command>PLAIN</command> kipini desteklemeyen çoğu veri türü için öntanımlıdır. <command>EXTERNAL</command> kullanımı <type>text</type> ve <type>bytea</type> türündeki sütunlar için saklama alanını büyütmesine karşın altdizge işlemlerinin, daha hızlı yapılmasını sağlar. <command>SET STORAGE</command> tablo üzerindeki hiçbir şeyi kendisi değiştirmez, sadece gelecekteki tablo güncellemeleri sırasında izlenecek stratejiyi belirler. Daha fazla bilgi için<sbr/><ulink url="http://www.postgresql.org/docs/8.0/static/storage-toast.html"/> adresine bakınız.
     </para></listitem></varlistentry><varlistentry>
    <term><command>ADD <replaceable>tablo_kısıtı</replaceable></command></term>
    <listitem><para><link linkend="tr-man7-create_table" xreflabel="CREATE TABLE"/> ile aynı sözdizimini kullanarak tabloya yeni bir kısıt eklemekte kullanılır.
     </para></listitem></varlistentry><varlistentry>
    <term><command>DROP CONSTRAINT</command></term>
    <listitem><para>Bir tablodaki kısıtları kaldırmak için kullanılır. Şimdilik, tablolardaki kısıtların eşsiz isimlere sahip olması gerekmemektedir, dolayısıyla belirtilen isimle eşleşen birden fazla kısıt olabilir. Eşleşen tüm kısıtlar kaldırılacaktır.
     </para></listitem></varlistentry><varlistentry>
    <term><command>CLUSTER</command></term>
    <listitem><para>Sonraki <link linkend="tr-man7-cluster" xreflabel="CLUSTER"/> işlemleri için öntanımlı indeksi seçmekte kullanılır. Gerçekte tabloyu yeniden kümelemez.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET WITHOUT CLUSTER</command></term>
    <listitem><para>Tabloda en son kullanılan <link linkend="tr-man7-cluster" xreflabel="CLUSTER"/> indeks belirtimini kaldırmak için kullanılır. Bu, gelecekteki bir indeks belirtmeyen tüm kümeleme işlemlerini etkileyecektir.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET WITHOUT OIDS</command></term>
    <listitem><para>Tablodan <literal>oid</literal> sistem sütununu kaldırmak için kullanılır. Zaten bir <literal>oid</literal> sütununun bulunmadığından şikayet etmesi dışında, <command>DROP COLUMN oid RESTRICT</command> deyimine tamamen eşdeğerdir.
     </para><para>
Kaldırılmış bir <literal>oid</literal> sütununun tekrar yerine konulmasını sağlayacak bir <command>ALTER TABLE</command> alt biçimi olmadığına dikkat edin.
     </para></listitem></varlistentry><varlistentry>
    <term><command>OWNER</command></term>
    <listitem><para>Tablonun, kayıt listesinin veya sanal tablonun sahibini belirtilen kullanıcı yapar.
     </para></listitem></varlistentry><varlistentry>
    <term><command>SET TABLESPACE</command></term>
    <listitem><para>Tablonun tablo alanını değiştirmek için kullanılır. Tablo ile ilişkili tüm veri dosyalarının yani tablo alanına taşınmasını sağlar. İndeksler eğer varsa yani alana taşınmaz; taşınması isteniyorsa, ayrı bir cümle olarak bir <command>SET TABLESPACE</command> cümlesi ile yapılabilir. Ayrıca <link linkend="tr-man7-create_tablespace" xreflabel="CREATE TABLESPACE"/> kılavuz sayfasına de bakınız.
     </para></listitem></varlistentry><varlistentry>
    <term><command>RENAME</command></term>
    <listitem><para>Bir tablo (veya indeks, kayıt listesi ya da sanal tablo) ismini ya da bir tablonun tek bir sütununun ismini değiştirmekte kullanılır. Saklanmış veriler etkilenmez.
     </para></listitem></varlistentry></variablelist>
  </para><para>
<command>RENAME</command> dışında tüm eylemler çeşitli değişikliklerin birlikte uygulanması için aynı cümlede kullanılabilir. Örneğin, bazı sütunların isimleri değiştirilirken, bazı sütunların eklenmesi mümkündür. Bu işlem genellikle, tüm değişikliklerin tek bir geçişte yapılması zorunlu dev tablolarda kullanışlıdır.
  </para><para>
Çalıştırılması için ayrıcalıklı kullanıcı olmanın gerekli olduğu <command>ALTER TABLE OWNER</command> dışında, <command>ALTER TABLE</command> kullanabilmek için tablonun sahibi olmalısınız.
  </para></refsect1><refsect1><title>Parametreler</title>
    <variablelist><varlistentry>
      <term><replaceable>isim</replaceable></term>
      <listitem><para>Değiştirilecek tablonun ismi (şema nitelemeli olabilir). Eğer <command>ONLY</command> belirtilmişse sadece bu tablo değiştirilir, belirtilmemişse bu tablo ve onun çocukları olan tablolar (varsa) değiştirilir. Çocuk tablolarında değiştirileceğini belirtmek üzere tablo isminin sonuna bir <command>*</command> eklenebilirse de, bu artık öntanımlıdır. (7.1 sürümünden önce, <command>ONLY</command> öntanımlı davranıştır. Öntanımlı davranış <literal>sql_inheritance</literal> yapılandırma parametresi ile değiştirilebilir.)
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>sütun</replaceable></term>
      <listitem><para>Yeni ya da mevcut bir sütunun ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>yeni_sütun</replaceable></term>
      <listitem><para>Yeni ya da mevcut bir sütunun yeni ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>yeni_isim</replaceable></term>
      <listitem><para>Tablonun yeni ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>tür</replaceable></term>
      <listitem><para>Mevcut bir sütun için yeni veri türü ya da yeni bir sütunun veri türü.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>tablo_kısıtı</replaceable></term>
      <listitem><para>Tablo için yeni tablo kısıtı.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>kısıt_ismi</replaceable></term>
      <listitem><para>Kaldırılacak mevcut bir kısıtın ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><command>CASCADE</command></term>
      <listitem><para>Kaldırılan kısıt veya sütuna bağımlı nesnelerin (örneğin, bu sütuna başvuran sanal tabloların) özdevimli olarak kaldırılmasını sağlar.
     </para></listitem></varlistentry><varlistentry>
      <term><command>RESTRICT</command></term>
      <listitem><para>Bağımlı nesneleri olan kısıt veya sütunun kaldırılmasını engeller. Bu davranış öntanımlıdır.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>indeks_ismi</replaceable></term>
      <listitem><para>Tablonun kümeleme için imleyeceği indeks ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>yeni_aidiyet</replaceable></term>
      <listitem><para>Tablonun yeni sahibinin kullanıcı ismi.
     </para></listitem></varlistentry><varlistentry>
      <term><replaceable>tabloalanı_ismi</replaceable></term>
      <listitem><para>Tablonun taşınacağı yeni tablo alanı ismi.
     </para></listitem></varlistentry></variablelist>
 </refsect1><refsect1><title>Ek Bilgi</title><para>
<command>COLUMN</command> anahtar sözcüğü kuru gürültüdür ve atlanabilir.
   </para><para>
Bir sütun <command>ADD COLUMN</command> ile eklendiğinde, tablodaki mevcut satırların tümü  sütunun öntanımlı değeriyle ilklendirilir (bir <command>DEFAULT</command> deyimi belirtilmemişse NULL ile).
   </para><para>
Bir sütunun boş olmayan bir öntanımlı ile eklenmesi veya mevcut bir sütunun türünün değiştirilmesi tablonun tamamının yeniden yazılmasına sebep olur. Bu çok büyük tablolarda önemli sayılabilecek bir süre alır; ayrıca, geçici olarak büyüklüğünün iki katı kadar bir disk alanı gerektirecektir.
   </para><para>
Bir <command>CHECK</command> veya <command>NOT NULL</command> kısıtının eklenmesi mevcut satırların kısıtı yerine getirip getirmediğinin sınanması için tablonun taranmasını gerektirir.
   </para><para>
Tek bir <command>ALTER TABLE</command> cümlesinde çok sayıda değişikliğin belirtilebilmesi seçeneğinin sağlanmasının ana sebebi çok sayıda tablonun taranmasını ya da tablonun yeniden yazılmasının gerektiği durumlarda tüm değişikliklerin tek bir geçişte yapılmasınını sağlamaktır.
   </para><para>
<command>DROP COLUMN</command> sütunu fiziksel olarak silmez, sadece SQL işlemleri için görünmez yapar. Tablo üzerindeki sonraki veri girme ve güncelleme işlemleri sütunda boş değer saklanmasına sebep olur. Bu, bir sütunun kaldırılmasını hızlandırsa da tablonun diskte kapladığı alan, kaldırılan sütunun kapladığı alan geri alınmadığından hemen düşmeyecektir. Mevcut satırlar güncellendikçe bu alan geri kazanılacaktır ama bu çok uzun zaman alabilir.
   </para><para>
Aslında <command>ALTER TABLE</command> cümlesinin bir tablonun tümünün yeniden yazılmasını gerektirdiği durumda bir getirisi de vardır, yeniden yazma işlemi tablodaki ölü alanların elenmesini sağlar. Örneğin, kaldırılan bir sütun nedeniyle tabloda tutulan alanı hemen geri kazanmak için en hızlı yol,
   </para><para>
<programlisting indent="4">ALTER TABLE tablo ALTER COLUMN birsütun TYPE birtür;
</programlisting>
   </para><para>
yazmaktır. Burada <literal>birsütun</literal> ile mevcut bir sütunu, <literal>birtür</literal> ile ise o sütunun kendi türünü belirtiyoruz. Aslında tabloda bir değişiklik yapılmıyor ama bu cümle tablonun yeniden yazılmasını sağlıyor, böylece faydasız veri temizlenmiş oluyor.
   </para><para>
<command>ALTER TYPE</command> alt cümlesinin <command>USING</command> seçeneği aslında satırın eski değerleriyle ilişkili bir ifadeyi belirtebilir; yani, bit yandan diğer sütunlara başvururken birini dönüştürüyor olabilir. Bu, <command>ALTER TYPE</command> sözdizimi ile çok genel dönüşümler yapılmasını mümkün kılar. Bu esneklikten dolayı, <command>USING</command> ifadesi sütunun öntanımlı değerine (varsa) uygulanmaz; sonuç bir öntanımlı için gerekli olan bir sabit ifade olmayabilir. Bu, eski türden yeni türe örtük ya da atamalı tür dönüşümünün bulunmadığında, <command>USING</command> seçeneği kullanıldığında bile <command>ALTER TYPE</command> alt cümlesinin dönüşümde başarısız olacağı anlamına gelir. Böyle durumlarda, öntanımlı <command>DROP DEFAULT</command> ile kaldırılarak <command>ALTER TYPE</command> uygulanır ve bunun ardından <command>SET DEFAULT</command> kullanılarak uygun yeni öntanımlı değer eklenir. Sütünla ilgili indekslere ve kısıtlara da benzer şeyler uygulanır.
   </para><para>
Eğer bir tablonun bir çocuk tablosu varsa, çocuk tablolarda aynı değişklikler yapılmaksızın bu tablonun bir sütununun türünün ya da isminin değiştirilmesine ve bir sütun eklenmesine izin verilmez. Yani, <command>ALTER TABLE ONLY</command> reddedilir. Bu, bir tablonun çocuklarının daima ana tablonun sütunlarını içermesini sağlamak içindir.
   </para><para>
Hem ana tabloya hem de çocuk tablolara uygulanan bir <command>DROP COLUMN</command> işlemi ile sadece, çocuk tablonun ilgili sütunu aynı zamanda başka bir tablodan miras alınmamışsa ve sütun bağımsız olarak tanımlanmamışsa kaldırılacaktır. Sadece ana tabloya uygulanan <command>DROP COLUMN</command> işlemi (<command>ALTER TABLE ONLY ... DROP COLUMN</command> gibi), çocuk tablolardan bu sütunları asla kaldırmayacak, onları miras alınmış değil, bağımsız sütunlar olarak imleyecektir.
   </para><para>
Sistem katalog tablosunda herhangi bir değişikliğe izin verilmez.
   </para><para>
Geçerli parametrelerin açıklamaları için <link linkend="tr-man7-create_table" xreflabel="CREATE TABLE"/> kılavuz sayfasına bakınız. Kalıtım ile ilgili bilgileri ise<sbr/><ulink url="http://www.postgresql.org/docs/8.0/static/ddl.html"/> bölümünde bulabilirsiniz.
   </para></refsect1><refsect1><title>Örnekler</title><para>
Bir tabloya <type>varchar</type> türünde bir sütun eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors ADD COLUMN address varchar(30);
</programlisting>
   </para><para>
Bir tablodan bir sütunu kaldırmak için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors DROP COLUMN address RESTRICT;
</programlisting>
   </para><para>
Mevcut iki sütunun türünü tek bir işlemle değiştirmek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);
</programlisting>
   </para><para>
UNIX zaman değerini içeren bir sütunun türünü <command>USING</command> seçeneğini kullanarak <type>timestamp with time zone</type> (zaman dilimli zaman gösterimi) türüne dönüştürmek için:
   </para><para>
<programlisting indent="4">ALTER TABLE foo
    ALTER COLUMN foo_timestamp TYPE timestamp with time zone
    USING timestamp with time zone
        'epoch' + foo_timestamp * interval '1 second';
</programlisting>
   </para><para>Mevcut bir sütunun ismini değiştirmek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors RENAME COLUMN address TO city;
</programlisting>
   </para><para>Mevcut bir tablonun ismini değiştirmek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors RENAME TO suppliers;
</programlisting>
   </para><para>Bir sütuna boş değer içermeme kısıtı eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
</programlisting>
   </para><para>Bir sütundan boş değer içermeme kısıtını kaldırmak için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
</programlisting>
   </para><para>Bir tabloya bir sınama kısıtı eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors
    ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
</programlisting>
   </para><para>Bir tablodan ve çocuklarından bir sınama kısıtını kaldırmak için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors DROP CONSTRAINT zipchk;
</programlisting>
   </para><para>Bir tabloya bir anahtar kısıtı eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors
    ADD CONSTRAINT distfk FOREIGN KEY (address)
    REFERENCES addresses (address) MATCH FULL;
</programlisting>
   </para><para>Bir tabloya (çoksütunlu) bir eşsizlik kısıtı eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors
    ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
</programlisting>
   </para><para>
Bir tabloya bir birincil anahtarı olmasa bile, özdevimli isimlenen bir birincil anahtar kısıtı eklemek için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
</programlisting>
   </para><para>Bir tabloyu başka bir tablo alanına taşımak için:
   </para><para>
<programlisting indent="4">ALTER TABLE distributors SET TABLESPACE fasttablespace;
</programlisting>
  </para></refsect1><refsect1><title>Uyumluluk</title><para>
<command>ADD</command>, <command>DROP</command> ve <command>SET DEFAULT</command> alt biçimleri SQL standardıyla uyumludur. Diğer alt biçimler birer <productname>PostgreSQL</productname> oluşumudur. Ayrıca, tek bir <command>ALTER TABLE</command> cümlesinde birden fazla değişikliğin belirtilebilmesi özelliği de bir <productname>PostgreSQL</productname> oluşumudur.
   </para><para>
<command>ALTER TABLE DROP COLUMN</command> ile geriye bir sıfır sütunlu tablo kalmak üzere bir tablonun tek sütunu kaldırılabilir.  SQL standardı sıfır sütunluk tablolara izin vermediğinden bu da bir <productname>PostgreSQL</productname> oluşumudur.
  </para></refsect1><refsect1><title>Çeviren</title><para>
Nilgün Belma Bugüner <email>nilgun@belgeler·gen·tr</email>, Mart 2005
</para></refsect1>
</refentry>