İSİM¶
CREATE TABLE AS - bir sorgunun sonuçlarından yeni bir tablo
tanımlar
KULLANIM¶
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_ismi
[ ( sütun_ismi [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ]
AS sorgu
AÇIKLAMA¶
CREATE TABLE AS bir tablo oluşturur ve bir
SELECT
cümlesi ile ya da hazırlanmış bir
SELECT
cümlesini çalıştıran bir
EXECUTE
komutu ile hesaplanan veriyi kullanarak bu tabloyu doldurur. Tablonun
sütunları için
SELECT
çıktısındaki veri türleri ve sütun
isimleri (sütun isimleri listesi açıkça
belirtilmedikçe) kullanılır.
CREATE TABLE AS tabloyu bir sanal tablo oluşturur gibi
oluşturur, ama bunu biraz farklı yapar: yeni bir tablo
oluşturduktan sonra tabloyu doldurmak için sorguyu bir
defalığına işleme sokar. Yeni tablo, sorgulanan
kaynak tabloda sonradan yapılan değişiklikleri
izlemeyecektir. Bir sanal tabloda ise her sorgulanışında
kendini oluşturan
SELECT cümlesi yeniden işleme
sokulur.
PARAMETRELER¶
- GLOBAL veya LOCAL
- Uyumluluk içindirler ve yoksayılırlar.
Ayıntılı bilgi için CREATE TABLE
[create_table(7)] kılavuz sayfasına bakınız.
- TEMPORARY veya TEMP
- Belirtilmişse, tablo bir geçici tablo olarak
oluşturulur. Ayıntılı bilgi için
CREATE TABLE [create_table(7)] kılavuz sayfasına
bakınız.
- tablo_ismi
- Oluşturulacak tablonun ismi (şema nitelemeli olabilir).
- sütun_ismi
- Yeni tablodaki bir sütunun ismi. Eğer sütun isimleri
verilmezse, sorgunun çıktısındaki sütun
isimleri kullanılır. Eğer tablo bir EXECUTE
komutu ile oluşturuluyorsa, bir sütun listesi belirtilemez.
- WITH OIDS, WITHOUT OIDS
- Oluşturulan tablonun nesne kimliklerini içerip
içermeyeceğini belirtirler. Bunların hiçbiri
belirtilmezse, default_with_oids yapılandırma
değişkeninin değeri kullanılır.
- sorgu
- Bir sorgu cümlesi (bir SELECT cümlesi ya da
hazırlanmış bir SELECT cümlesini
çalıştıran bir EXECUTE komutu). Sorgu
cümlesinde kullanılabilecek sözdizimleri için,
SELECT [select(7)] ve EXECUTE [execute(7)] kılavuz
sayfalarına bakınız.
EK BİLGݶ
Bu komut, işlevsellik bakımından
SELECT INTO
[
select_into(7)] cümlesine benzer, fakat sözdizimi
SELECT
INTO sözdiziminden daha az karışık
olduğundan bu komut tercih edilir. Dahası,
CREATE TABLE
AS,
SELECT INTO işlevselliğini daha üst
seviyeden sunar.
PostgreSQL 8.0 öncesinde,
CREATE TABLE AS'in
oluşturduğu tablo nesne kimliklerini daima içerirdi.
PostgreSQL 8.0 sürümünden itibaren
kullanıcı oluşturulan tablonun nesne kimliklerini
içerip içermeyeceğini belirtebilmektedir. Eğer
kullanıcı seçimini belirtmezse, default_with_oids
yapılandırma değişkeninin değeri
kullanılır. Bu değişkenin şimdilik
öntanımlı değeri true olmasına
rağmen öntanımlı değer ileride
değiştirilebilir. Bu bakımdan,
uygulamalarınızda
CREATE TABLE AS ile tablo
oluşturuyorsanız, PostgreSQL'in ileri
sürümlerindeki olası değişikliklerden
etkilenmemek için
WITH OIDS seçeneğini
açıkça belirtmelisiniz.
ÖRNEKLER¶
filmler tablosundan sadece son girdileri alarak son_filmler tablosunu
oluşturmak için:
CREATE TABLE son_filmler AS
SELECT * FROM filmler WHERE tarih >= '2002-01-01';
UYUMLULUK¶
CREATE TABLE AS SQL:2003 standardında belirtilmiştir.
Komutun PostgreSQL gerçeklemesi standarttan biraz
farklıdır:
- ·
- Standart altsorgunun parantez içine alınmasını
gerektirir, PostgreSQL'de ise parantezler isteğe
bağlıdır.
- ·
- Standart bir ON COMMIT deyimi içerir; PostgreSQL'de bu
henüz gerçeklenmemiştir.
- ·
- Standart bir WITH DATA deyimi içerir; PostgreSQL'de bu
henüz gerçeklenmemiştir.
İLGİLİ BELGELER¶
CREATE TABLE [
create_table(7)],
EXECUTE [
execute(7)],
SELECT [
select(7)],
SELECT INTO [
select_into(7)].
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Nisan 2005