PostgreSQL : คำสั่ง SQL การ Create Table AS

PostgreSQL แชร์ความรู้เกี่ยวกับ PostgreSQL การใช้งาน ฟังก์ชั่นต่างๆ การเขียน SQL แบบ PGSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 680
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

PostgreSQL : คำสั่ง SQL การ Create Table AS

โพสต์โดย 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);

ตัวอย่าง :
CREATE Table as all.jpg
ภาพตัวอย่างที่ 1
CREATE Table as all.jpg (250.8 KiB) เปิดดู 343 ครั้ง

ผลที่ได้ :

โค้ด: เลือกทั้งหมด

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) ;

ตัวอย่าง :
CREATE Table as.jpg
ภาพตัวอย่างที่ 2
CREATE Table as.jpg (258.39 KiB) เปิดดู 343 ครั้ง

ผลที่ได้ :

โค้ด: เลือกทั้งหมด

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
รูปภาพ

  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 3 และ บุคคลทั่วไป 0 ท่าน