PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

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 การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 2:56 pm

ALTER TABLE (การปรับเปลี่ยนโครงสร้างตาราง )

  เราสามารถใช้คำสั่ง ALTER TABLE ในการปรับเปลี่ยนโครงสร้างตารางเก่าที่มีอยู่แล้วได้

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

ALTER TABLE table_name action;

ในส่วนของ action มีการกระทำหลายอย่าง ได้แก่
- การเปลี่ยนชื่อตาราง
- การเพิ่มลบคอลัมน์
- การเปลี่ยนชื่อคอลัมน์
- การตั้งค่าเริ่มต้นสำหรับคอลัมน์
- การเพิ่มข้อจำกัด ตรวจสอบกับคอลัมน์


คำสั่งการปรับเปลี่ยนโครงสร้างตารางมีดังนี้
1. การเพิ่มคอลัมน์ใหม่ลงในตาราง
2. การลบคอลัมน์ในตาราง
3. การเปลี่ยนชื่อคอลัมน์
4. การเปลี่ยนค่าเริ่มต้น (default value)
5. การเปลี่ยนข้อจำกัดของค่าว่าง
6. การเพิ่มการตรวจสอบข้อจำกัดของการเปลี่ยนแปลงตาราง
7. การเพิ่มข้อจำกัดของตาราง
8. การเปลี่ยนชื่อตาราง
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:24 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:18 pm

1. การเพิ่มคอลัมน์ใหม่ลงในตาราง

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

ALTER TABLE table_name ADD COLUMN new_column_name TYPE;

อธิบายคำสั่ง
table_name       :  ชื่อตารางที่ต้องการเพิ่มคอลัมน์
ADD COLUMN      :  คำสั่งเพิ่มคอลัมน์
new_column_name :  ชื่อคอลัมน์ที่ต้องการเพิ่ม
TYPE             :  ประเภทชนิดของข้อมูล

ตัวอย่าง :
จากตาราง z_testcreatetable จะเห็นได้ว่า มีคอลัมน์ทั้งหมด 5 คอลัมน์
ALTER TABLE1.jpg
ALTER TABLE1.jpg (27.31 KiB) เปิดดู 3529 ครั้ง

เราจะทำการเพิ่มคอลัมน์ datetime เข้าไปอีก 1 คอลัมน์โดยใช้

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

ALTER TABLE z_testcreatetable ADD COLUMN datetimp timestamp;

ผลที่ได้
ALTER TABLE2.jpg
ALTER TABLE2.jpg (28.78 KiB) เปิดดู 3529 ครั้ง
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:39 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:19 pm

2. การลบคอลัมน์ในตาราง

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

ALTER TABLE table_name DROP COLUMN column_name;

อธิบายคำสั่ง
table_name       :  ชื่อตารางที่ต้องการลบคอลัมน์
DROP COLUMN      :  คำสั่งลบคอลัมน์
new_column_name :  ชื่อคอลัมน์ที่ต้องการลบ

ตัวอย่าง :
จากตาราง z_testcreatetable จะเห็นได้ว่า มีคอลัมน์อยู่ทั้งหมด 6 คอลัมน์
ALTER TABLE3.jpg
ALTER TABLE3.jpg (27.85 KiB) เปิดดู 3521 ครั้ง

เราจะทำการลบคอลัมน์ที่มีชื่อว่า active ออกไป โดยใช้คำสั่ง

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

ALTER TABLE z_testcreatetable DROP COLUMN active;

ผลที่ได้
ALTER TABLE4.jpg
ALTER TABLE4.jpg (26.45 KiB) เปิดดู 3521 ครั้ง
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:53 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:19 pm

3. การเปลี่ยนชื่อคอลัมน์

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

ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;

อธิบายคำสั่ง
table_name       :  ชื่อตารางที่ต้องการเปลี่ยนชื่อคอลัมน์
RENAME COLUMN    :  คำสั่งเปลี่ยนชื่อคอลัมน์
column_name     :  ชื่อคอลัมน์ที่ต้องการเปลี่ยนชื่อ
new_column_name  :  ชื่อใหม่ของคอลัมน์ที่ต้องการเปลี่ยน

ตัวอย่าง :
จากตาราง z_testcreatetable เราต้องการเปลี่ยนชื่อคอลัมน์ pass ให้เป็น password
ALTER TABLE5.jpg
ALTER TABLE5.jpg (29.51 KiB) เปิดดู 3521 ครั้ง

เราจะทำการเปลี่ยนชื่อคอลัมน์โดยใช้คำสั่ง

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

ALTER TABLE z_testcreatetable  RENAME COLUMN pass TO password;

ผลที่ได้
ALTER TABLE6.jpg
ALTER TABLE6.jpg (29.46 KiB) เปิดดู 3521 ครั้ง
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:54 pm, แก้ไขไปแล้ว 4 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:19 pm

4.การเปลี่ยนค่าเริ่มต้น (default value)
สามารถทำได้ทั้ง การตั้งค่าเริ่มต้นใหม่ หรือ ลบค่าเริ่มต้นเก่า

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

ALTER TABLE table_name ALTER COLUMN column_name [SET DEFAULT value | DROP DEFAULT]

อธิบายคำสั่ง
table_name       :  ชื่อตารางที่ต้องการตั้งค่าเริ่มต้นให้คอลัมน์
ALTER COLUMN      :  คำสั่งเลือกคอลัมน์ที่ต้องการตั้งค่าเริ่มต้น
column_name      :  ชื่อคอลัมน์ที่ต้องการตั้งค่าเริ่มต้น
SET DEFAULT      :  คำสั่งกำหนดค่าเริ่มต้นของคอลัมน์ที่ต้องการ
value           :  ค่าที่ต้องการกำหนดให้แก่คอลัมน์นั้น
DROP DEFAULT      :  คำสั่งลบค่าเริ่มต้นของคอลัมน์

ตัวอย่าง :
จากตาราง z_testcreatetable เราต้องการกำหนดค่าเริ่มต้นให้แก่คอลัมน์ email
ALTER TABLE7.jpg
ALTER TABLE7.jpg (72.27 KiB) เปิดดู 3521 ครั้ง

เราจะทำการกำหนดค่าเริ่มต้นให้แก่คอลัมน์ email คือ '-' เช่นถ้าเกิดมีการแทรกแถวข้อมูลขึ้นมาใหม่โดยที่ไม่ได้ระบุค่าใดๆ ให้แก่คอลัมน์ email ค่าในคอลัมน์จะใช้ ' - ' เป็นค่าเริ่มต้น คำสั่งที่ใช้ในการกำหนดค่าเริ่มต้นคือ

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email SET DEFAULT '-';

ผลที่ได้
ALTER TABLE8.jpg
ALTER TABLE8.jpg (82.33 KiB) เปิดดู 3521 ครั้ง

หากต้องการลบค่าเริ่มต้น เราสามารถใช้คำสั่งข้างนี้ลบได้

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email DROP DEFAULT;
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 4:58 pm, แก้ไขไปแล้ว 4 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:20 pm

5.การเปลี่ยนข้อจำกัดของค่าว่าง

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

ALTER TABLE table_name ALTER COLUMN column_name [SET NOT NULL| DROP NOT NULL]

อธิบายคำสั่ง
table_name       :  ชื่อตารางที่ต้องการตั้งข้อจำกัดให้คอลัมน์
ALTER COLUMN      :  คำสั่งเลือกคอลัมน์ที่ต้องการตั้งข้อจำกัด
column_name      :  ชื่อคอลัมน์ที่ต้องการตั้งข้อจำกัด
SET NOT NULL      :  คำสั่งกำหนดข้อจำกัดไม่ให้เป็นค่าว่าง
DROP NOT NULL      :  คำสั่งลบข้อจำกัดให้เป็นค่าว่าง

ตัวอย่าง :
จากตาราง z_testcreatetable เราต้องการกำหนดข้อจำกัดให้แก่คอลัมน์ email ให้ไม่เป็นค่าว่าง
ALTER TABLE9.jpg
ALTER TABLE9.jpg (81.31 KiB) เปิดดู 3521 ครั้ง

เราจะทำการกำหนดข้อจำกัดให้แก่คอลัมน์ email คือให้ไม่เป็นค่าว่าง ( NOT NULL ) เราจะให้คำสั่ง

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email SET NOT NULL

ผลที่ได้
ALTER TABLE10.jpg
ALTER TABLE10.jpg (81.87 KiB) เปิดดู 3521 ครั้ง

ถ้าต้องการลบข้อจำกัดค่าว่างของคอลัมน์ เราสามารถใช้คำสั่งข้างล่างนี้ได้

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email DROP NOT NULL
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 01/09/2014 1:54 pm, แก้ไขไปแล้ว 4 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:20 pm

6.การเพิ่มการตรวจสอบข้อจำกัดของการเปลี่ยนแปลงตาราง
  เป็นการเพิ่มเงื่อนไขในการตรวจสอบกับคอลัมน์ที่ต้องการเพื่อให้คอลัมน์ยอมรับเฉพาะเงื่อนไขที่กำหนดเท่าน้ัน

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

ALTER TABLE table_name ADD CHECK expression;

อธิบายคำสั่ง:
table_name       :  ชื่อตารางที่ต้องการกำหนดดารตรวจสอบ
ADD CHECK        :  คำสั่งเพิ่มข้อกำหนดในการตรวจสอบ
expression        :  คอลัมน์และเงื่อนไขที่ต้องการให้แสดงผล

ตัวอย่าง :
จากตาราง z_testcreatetable_cpartner เราต้องการกำหนดการตรวจสอบเงื่อนไขให้แก่คอลัมน์ state_id
ALTER TABLE11.jpg
ALTER TABLE11.jpg (104 KiB) เปิดดู 3496 ครั้ง

เราจะกำหนดคอลัมน์ state_id ให้มีค่าเท่ากับ 0 กับ 1 เท่านั้น

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

ALTER TABLE z_testcreatetable_cpartner ADD CHECK (state_id IN ('0', '1'));

และทำการทดลอง insert ข้อมูลลงในฐานข้อมูล ถ้าทำการ insert
โดยที่ state_id มีค่าเท่ากับ 0 หรือ 1 จะสามารถทำการ insert ได้ตามปกติ
แต่ถ้าไม่ตรงตามเงื่อนไข จะไม่สามารถทำการ insert ได้
จะมี error แจ้งเตือนว่า

ERROR: new row for relation "z_testcreatetable_cpartner" violates check constraint "z_testcreatetable_cpartner_state_id_check"
DETAIL: Failing row contains (2, test test, 1, test(แอท)hotmail.com, 0900000000, 1987-10-02, 3)
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 7:19 pm, แก้ไขไปแล้ว 1 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การปรับเปลี่ยนโครงสร้างตาราง ด้วย ALTER TABLE

โพสต์โดย thitikorn_lp » 26/08/2014 3:20 pm

7. การเพิ่มข้อจำกัดของตาราง

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

   
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition

ตัวอย่าง :
รูปภาพ


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

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

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

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