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

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

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

thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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) Viewed 14788 times
เราจะทำการเพิ่มคอลัมน์ datetime เข้าไปอีก 1 คอลัมน์โดยใช้

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

ALTER TABLE z_testcreatetable ADD COLUMN datetimp timestamp;
ผลที่ได้
ALTER TABLE2.jpg
ALTER TABLE2.jpg (28.78 KiB) Viewed 14788 times
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:39 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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) Viewed 14780 times
เราจะทำการลบคอลัมน์ที่มีชื่อว่า active ออกไป โดยใช้คำสั่ง

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

ALTER TABLE z_testcreatetable DROP COLUMN active;
ผลที่ได้
ALTER TABLE4.jpg
ALTER TABLE4.jpg (26.45 KiB) Viewed 14780 times
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:53 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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) Viewed 14780 times
เราจะทำการเปลี่ยนชื่อคอลัมน์โดยใช้คำสั่ง

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

ALTER TABLE z_testcreatetable  RENAME COLUMN pass TO password;
ผลที่ได้
ALTER TABLE6.jpg
ALTER TABLE6.jpg (29.46 KiB) Viewed 14780 times
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 26/08/2014 3:54 pm, แก้ไขไปแล้ว 4 ครั้ง.
รูปภาพ
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email SET DEFAULT '-';
ผลที่ได้
ALTER TABLE8.jpg
ALTER TABLE8.jpg (82.33 KiB) Viewed 14780 times
หากต้องการลบค่าเริ่มต้น เราสามารถใช้คำสั่งข้างนี้ลบได้

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

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
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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) Viewed 14780 times
เราจะทำการกำหนดข้อจำกัดให้แก่คอลัมน์ email คือให้ไม่เป็นค่าว่าง ( NOT NULL ) เราจะให้คำสั่ง

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

ALTER TABLE z_testcreatetable  ALTER COLUMN email SET NOT NULL
ผลที่ได้
ALTER TABLE10.jpg
ALTER TABLE10.jpg (81.87 KiB) Viewed 14780 times
ถ้าต้องการลบข้อจำกัดค่าว่างของคอลัมน์ เราสามารถใช้คำสั่งข้างล่างนี้ได้

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

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
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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) Viewed 14755 times
เราจะกำหนดคอลัมน์ 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
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

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

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

	
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_definition
ตัวอย่าง :
รูปภาพ
thitikorn_lp
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 677
ลงทะเบียนเมื่อ: 28/07/2014 10:24 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย thitikorn_lp »

8. การเปลี่ยนชื่อตาราง

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

ALTER TABLE table_name RENAME TO new_table_name;
อธิบายคำสั่ง
table_name        :  ชื่อตารางที่ต้องการเปลี่ยนชื่อ
RENAME TO          :  คำสั่งเปลี่ยนชื่อตาราง
new_table_name      :  ชื่อตารางใหม่ที่ต้องการเปลี่ยน

ตัวอย่าง :
จากตารางที่ชื่อว่า z_testcreatetable_cpartner เราต้องการเปลี่ยนชื่อให้สั้นลง
ALTER TABLE12.jpg
ALTER TABLE12.jpg (87.59 KiB) Viewed 4536 times
โดยจะทำการเปลี่ยนชื่อเป็น z_cpartner โดยใช้คำสั่ง

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

ALTER TABLE z_testcreatetable_cpartner RENAME TO z_cpartner;
ผลที่ได้คือ
ALTER TABLE13.jpg
ALTER TABLE13.jpg (45.11 KiB) Viewed 4536 times
รูปภาพ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 35