Create Table AS (ครีเอทเทเบิลแอส) หรือ การสร้างตารางจากตารางที่มีอยู่
!! การสร้างตารางนี้สร้างขึ้นมาสำหรับเป็นตัวอย่างในการเขียน SQL บน PostgreSQL เท่านั้น
จากบทความเรื่องการ Create Table (ครีเอท เทเบิล) ซึ่งเป็นการเพิ่มตารางอย่างง่าย และ การ การ Create Table (ครีเอทเทเบิล) แบบ INHERITS (อินเฮริท) เป็นการเพิ่มตารางโดยทำการสืบทอดคุณสมบัติของตารางมา
ในบทความนี้ จะกล่าวถึงการสร้างตารางด้วยวิธีการ คัดลอกคอลัมน์จากตารางที่มีอยู่แล้ว
ซึ่งจะเป็นการเลือกคัดลอกมาเพียงบางคอลัมน์ ไม่ใช่การยกมาทั้งหมดเหมือนการ inherits
ตัวอย่างการสร้างตาราง
วิธีการที่ 1 : การคัดลอกคอลัมน์มาทั้งหมด
CREATE TABLE table_name
AS (SELECT * FROM table_name_old);
อธิบายคำสั่ง
table_name (เทเบิล_เนม) : ชื่อตารางที่ต้องการสร้าง
* : เลือกคอลัมน์มาทั้งหมด
table_name_old (เทเบิล_เนม_โอน) : ชื่อตารางที่ต้องการคัดลอกคอลัมน์มา
โค้ด :
CREATE TABLE z_testcreatetable_partner
AS (SELECT * FROM res_partner);
ตัวอย่าง :
ผลที่ได้ :
CREATE TABLE z_testcreatetable_partner
(
id integer,
name character varying(128),
lang character varying(64),
company_id integer,
create_uid integer,
create_date timestamp without time zone,
write_date timestamp without time zone,
write_uid integer,
comment text,
ean13 character varying(13),
color integer,
image bytea,
use_parent_address boolean,
active boolean,
street character varying(128),
supplier boolean,
city character varying(128),
user_id integer,
zip character varying(24),
title integer,
function character varying(128),
country_id integer,
parent_id integer,
employee boolean,
type character varying,
email character varying(240),
vat character varying(32),
website character varying(64),
fax character varying(64),
street2 character varying(128),
phone character varying(64),
credit_limit double precision,
date date,
tz character varying(64),
customer boolean,
image_medium bytea,
mobile character varying(64),
ref character varying(64),
image_small bytea,
birthdate character varying(64),
is_company boolean,
state_id integer
)
WITH (
OIDS=FALSE
);
ALTER TABLE z_testcreatetable_partner
OWNER TO openpg;
คำอธิบาย :
จากภาพตัวอย่างที่ 1 เป็นการสร้างตารางที่มีชื่อว่า "z_testcreatetable_partner" (แซด_เทสครีเอทเทเบิล_พาร์ทเนอร์)
โดยตาราง z_testcreatetable_partner จะทำการคัดลอกคอลัมน์ภายในตาราง "res_partner" (เรส_พาร์ทเนอร์) มาทั้งหมด
จากคำสั่ง AS (SELECT * FROM table_name_old) (แอด(ซีเล็ท*ฟอร์ม เทเบิล_เนม_โอน)
เครื่องหมาย * คือคำสั่งให้เลือกทั้งหมด
วิธีการที่ 2 : การคัดลอกมาเพียงบางคอลัมน์
CREATE TABLE table_name
AS (SELECT column_1, column2, ... column_n
FROM table_name_old);
อธิบายคำสั่ง
table_name (เทเบิล_เนม) : ชื่อตารางที่ต้องการสร้าง
column_1....n (คอลลัมน์_1...n) : คอลัมน์ที่ต้องการคัดลอกมา
table_name_old (เทเบิล_เนม_โอน) : ชื่อตารางที่ต้องการคัดลอกคอลัมน์มา
โค้ด :
CREATE TABLE z_testcreatetable_cpartner
AS (SELECT
id,
name,
lang,
title,
email,
mobile,
birthdate,
state_id FROM res_partner) ;
ตัวอย่าง :
ผลที่ได้ :
CREATE TABLE z_testcreatetable_cpartner
(
id integer,
name character varying(128),
lang character varying(64),
title integer,
email character varying(240),
mobile character varying(64),
birthdate character varying(64),
state_id integer
)
WITH (
OIDS=FALSE
);
ALTER TABLE z_testcreatetable_cpartner
OWNER TO openpg;
คำอธิบาย :
ในภาพตัวอย่างที่ 2 เป็นการสร้างตาราง "z_testcreatetable_cpartner" (แซด_เทสครีเอทเทเบิล_ซีพาร์ทเนอร์) วิธีการคล้ายกับการสร้างตาราง "z_testcreatetable_partner"
เพียงแต่ว่า จะทำการเลือกคัดลอกมาเพียงบางคอลัมน์ ในตาราง "z_testcreatetable_cpartner" นี้
เลือกทำการคัดลอกมาเพียงคอลัมร์ที่ชื่อว่า id, name, lang, title, email, mobile, birthdate และ state_id เท่านั้นไม่ได้คัดลอกมาทั้งหมด
ศึกษาเพิ่มเติมได้ที่ : รวมคำสั่ง SQL ต่างๆ
www.postgresqltutorial.com Eng.ver
www.postgresql.org Eng.ver
โดย : http://www.mindphp.com