โดย thitikorn_lp » 07/08/2014 4:14 pm
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);
ตัวอย่าง :
- ภาพตัวอย่างที่ 1
- CREATE Table as all.jpg (250.8 KiB) Viewed 1947 times
ผลที่ได้ :
โค้ด: เลือกทั้งหมด
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 : คอลัมน์ที่ต้องการคัดลอกมา
table_name_old : ชื่อตารางที่ต้องการคัดลอกคอลัมน์มา
โค้ด :
โค้ด: เลือกทั้งหมด
CREATE TABLE z_testcreatetable_cpartner
AS (SELECT
id,
name,
lang,
title,
email,
mobile,
birthdate,
state_id FROM res_partner) ;
ตัวอย่าง :
- ภาพตัวอย่างที่ 2
- CREATE Table as.jpg (258.39 KiB) Viewed 1947 times
ผลที่ได้ :
โค้ด: เลือกทั้งหมด
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 เท่านั้นไม่ได้คัดลอกมาทั้งหมด
ศึกษาเพิ่มเติมได้ที่ :
www.postgresqltutorial.com Eng.ver
www.postgresql.org Eng.ver
[b][size=120][u]Create Table AS ( การสร้างตารางจากตารางที่มีอยู่ )[/u][/size][/b]
[size=85][color=#FF0040]!! การสร้างตารางนี้สร้างขึ้นมาสำหรับเป็นตัวอย่างในการเขียน SQL บน PostgreSQL เท่านั้น[/color][/size]
จากบทความเรื่อง[url=https://www.mindphp.com/forums/viewtopic.php?f=115&t=23048]การ Create Table[/url] ซึ่งเป็นการเพิ่มตารางอย่างง่าย และ [url=https://www.mindphp.com/forums/viewtopic.php?f=115&t=23064]การ Create Table แบบ INHERITS[/url]
เป็นการเพิ่มตารางโดยทำการสืบทอดคุณสมบัติของตารางมา
ในบทความนี้ จะกล่าวถึงการสร้างตารางด้วยวิธีการ คัดลอกคอลัมน์จากตารางที่มีอยู่แล้ว
ซึ่งจะเป็นการเลือกคัดลอกมาเพียงบางคอลัมน์ ไม่ใช่การยกมาทั้งหมดเหมือนการ inherits
[b][u]ตัวอย่างการสร้างตาราง[/u][/b]
[b][u][color=#BF0040]วิธีการที่ 1[/color][/u][/b] : การคัดลอกคอลัมน์มาทั้งหมด
[code]CREATE TABLE table_name
AS (SELECT * FROM table_name_old);[/code]
[color=#4040FF][u][b]อธิบายคำสั่ง[/b][/u][/color]
[b]table_name[/b] [color=#008040]: ชื่อตารางที่ต้องการสร้าง[/color]
[b]* [/b] [color=#008040]: เลือกคอลัมน์มาทั้งหมด[/color]
[b]table_name_old [/b] [color=#008040]: ชื่อตารางที่ต้องการคัดลอกคอลัมน์มา[/color]
[b][i]โค้ด :[/i][/b]
[code]CREATE TABLE z_testcreatetable_partner
AS (SELECT * FROM res_partner);[/code]
[b][i]ตัวอย่าง :[/i][/b]
[attachment=1]CREATE Table as all.jpg[/attachment]
[b][i]ผลที่ได้ :[/i][/b]
[code]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;
[/code]
[b][i]คำอธิบาย :[/i][/b]
จากภาพตัวอย่างที่ 1 เป็นการสร้างตารางที่มีชื่อว่า "z_testcreatetable_partner"
โดยตาราง z_testcreatetable_partner จะทำการคัดลอกคอลัมน์ภายในตาราง "res_partner" มาทั้งหมด
จากคำสั่ง [i]AS (SELECT * FROM table_name_old) [/i]
เครื่องหมาย * คือคำสั่งให้เลือกทั้งหมด
[b][u][color=#BF0040]วิธีการที่ 2 [/color][/u][/b]: การคัดลอกมาเพียงบางคอลัมน์
[code]CREATE TABLE table_name
AS (SELECT column_1, column2, ... column_n
FROM table_name_old);[/code]
[color=#4040FF][u][b]อธิบายคำสั่ง[/b][/u][/color]
[b]table_name[/b] [color=#008040]: ชื่อตารางที่ต้องการสร้าง[/color]
[b]column_1....n [/b] [color=#008040]: คอลัมน์ที่ต้องการคัดลอกมา[/color]
[b]table_name_old [/b] [color=#008040]: ชื่อตารางที่ต้องการคัดลอกคอลัมน์มา[/color]
[b][i]โค้ด :[/i][/b]
[code]CREATE TABLE z_testcreatetable_cpartner
AS (SELECT
id,
name,
lang,
title,
email,
mobile,
birthdate,
state_id FROM res_partner) ;[/code]
[b][i]ตัวอย่าง :[/i][/b]
[attachment=0]CREATE Table as.jpg[/attachment]
[b][i]ผลที่ได้ :[/i][/b]
[code]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;
[/code]
[b][i]คำอธิบาย :[/i][/b]
ในภาพตัวอย่างที่ 2 เป็นการสร้างตาราง "z_testcreatetable_cpartner" วิธีการคล้ายกับการสร้างตาราง "z_testcreatetable_partner"
เพียงแต่ว่า จะทำการเลือกคัดลอกมาเพียงบางคอลัมน์ ในตาราง "z_testcreatetable_cpartner" นี้
เลือกทำการคัดลอกมาเพียงคอลัมร์ที่ชื่อว่า id, name, lang, title, email, mobile, birthdate และ state_id เท่านั้นไม่ได้คัดลอกมาทั้งหมด
[b][i]ศึกษาเพิ่มเติมได้ที่[/i][/b] :
[url=http://www.postgresqltutorial.com/]www.postgresqltutorial.com[/url] Eng.ver
[url=http://www.postgresql.org/]www.postgresql.org[/url] Eng.ver