CREATE TABLE AS(7) | SQL - Dil Deyimleri | CREATE TABLE AS(7) |
CREATE TABLE AS - bir sorgunun sonuçlarından yeni bir tablo tanımlar
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_ismi [ (sütun_ismi [, ...] ) ] [ [ WITH | WITHOUT ] OIDS ] AS sorgu
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.
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.
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';
CREATE TABLE AS SQL:2003 standardında belirtilmiştir. Komutun PostgreSQL gerçeklemesi standarttan biraz farklıdır:
CREATE TABLE [create_table(7)], EXECUTE [execute(7)], SELECT [select(7)], SELECT INTO [select_into(7)].
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005
PostgreSQL |