İ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