บทเรียน PostgreSQL Stored Procedures

บทเรียน PostgreSQL Stored Procedures เป็นเนื้อหาสำหรับสอน Store Procedure ด้วยภาษา SQL สำหรับ PostgreSQL แนะนำ ใช้ PostgreSQL เวอร์ชั่น 9.x

ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

Create Table with INHERITS (ครีเอท เทเบิล วิธ อินเฮริท) หรือ การสร้างตารางด้วยการสืบทอดตาราง

!! การสร้างตารางนี้สร้างขึ้นมาสำหรับเป็นตัวอย่างในการเขียน SQL บน PostgreSQL เท่านั้น

  ในบทความเรื่อง PostgreSQL : คำสั่ง SQL การ Create Table นั้น เป็นการสร้างตารางแบบพื้นฐาน ซึ่งจะทำการกำหนดชื่อตาราง ชื่อคอลัมน์ที่ต้องการ และค่าต่างๆ เอง

  ส่วนในบทความนี้ จะเป็นการสร้างตารางโดยวิธี INHERITS หรือ การสืบทอดคุณสมบัติ

INHERITS คืออะไร? 

“Inherits” หรือ “Inheritance” คือการสืบทอด Class (คลาส) จาก Class ต้นฉบับไปยัง Class ใหม่ โดยจะทำการ copy (ก๊อปปี้) สิ่งที่อยู่ใน Class ต้นฉบับไปยัง Class ใหม่ทั้งหมด อธิบายตามภาษาบ้านๆ ก็คือ การสืบทอดคุณสมบัติจากแม่ไปสู่ลูก

CREATE TABLE table_name (

  column_name TYPE column_constraint,

  table_constraint table_constraint

) INHERITS (existing_table_name);

อธิบายคำสั่ง

table_name (เทเบิล_เนม)    :  ชื่อตาราง

column_name (คอลลัมน์_เนม) :  ขื่อคอลัมน์

TYPE (ไทป์)                :  ชนิดของคอลัมน์

column_constraint (คอลลัมน์_คอนสเตรนท) :  ข้อจำกัดของคอลัมน์

table_constraint (เทเบิล_คอนสเตรนท)  : ข้อจำกัดของตาราง

INHERITS (อินเฮริท)      :  คำสั่งการสืบทอด

existing_table_name (เอ็กซิสทิ้ง_เทเบิล_เนม) :  ชื่อตารางที่ต้องการสืบทอดมา

ตัวอย่างการสร้างตาราง

CREATE TABLE z_testcreatetable_inherit(

  in_id serial PRIMARY KEY,

  in_name VARCHAR (255) UNIQUE NOT NULL

) INHERITS (z_testcreatetable);

ตัวอย่าง : 

การสร้างตารางแบบสืบทอด
การสร้างตารางแบบสืบทอด

ผลที่ได้ :

CREATE TABLE z_testcreatetable_inherit

(

-- Inherited from table z_testcreatetable:  id character varying(5) NOT NULL,

-- Inherited from table z_testcreatetable:  username character varying(50) NOT NULL,

-- Inherited from table z_testcreatetable:  pass character varying(50) NOT NULL,

-- Inherited from table z_testcreatetable:  email character varying(355) NOT NULL,

       in_id serial NOT NULL,

       in_name character varying(255) NOT NULL,

  CONSTRAINT z_testcreatetable_inherit_pkey PRIMARY KEY (in_id),

  CONSTRAINT z_testcreatetable_inherit_  in_name_key  UNIQUE (in_name)

)

INHERITS (z_testcreatetable)

WITH (

  OIDS=FALSE

);

ALTER TABLE z_testcreatetable_inherit

  OWNER TO openpg;

คำอธิบาย : 

ในตัวอย่าง เป็นการสร้างตารางที่มีชื่อว่า "z_testcreatetable_inherit" (แซดเทสครีเอทเทเบิล_อินเฮริท)โดยทำการสืบทอดคุณสมบัติของตาราง "z_testcreatetable" มาใช้โดยคำสั่ง Inherited from table z_testcreatetable: ซึ่งจะนำ คอลัมน์ id (ไอดี), username (ยูสเซอร์เนม), pass (พาส) และ email (อีเมล)มาโดยที่ผู้ใช้ไม่ต้องพิมพ์เอง

สามารถศึกษาเพิ่มเติมได้ที่ คำสั่ง SQL ต่างๆ

www.postgresqltutorial.com Eng.ver

www.postgresql.org Eng.ver

โดย : http://www.mindphp.com

ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

Create Table (ครีเอท เทเบิล) หรือ การสร้างตาราง 

!! การสร้างตารางนี้สร้างขึ้นมาสำหรับเป็นตัวอย่างในการเขียน SQL (เอชคิวแอล) บน PostgreSQL (โพสต์เกรสเอสคิวเอล) เท่านั้น

ใน PostgreSQL สามารถใช้คำสั่งต่อไปนี้เพื่อทำการสร้างตารางใหม่

CREATE TABLE table_name (

  column_name TYPE column_constraint,

  table_constraint table_constraint

); 

อธิบายคำสั่ง

table_name (เทเบิล_เนม)     : ชื่อตาราง

column_name (คอลลัมน์_เนม) :   ขื่อคอลัมน์

TYPE (ไทป์)             :   ชนิดของคอลัมน์

column_constraint (คอลลัมน์_คอนสเตรนท) : ข้อจำกัดของคอลัมน์

table_constraint (เทเบิล_คอนสเตรนท)        :    ข้อจำกัดของตาราง

ประเภทของ CONSTRAINT(คอนสเตรนท)

- NOT NULL (น็อต นัล) ค่าของข้อมูลในคอลัมน์นั้นๆ จะต้องไม่เป็นค่าว่าง

- UNIQUE (ยูนีค) เป็นการบังคับโดยระบุว่าค่าของข้อมูลในคอลัมน์นั้นๆ (คอลัมน์ในวงเล็บ) จะต้องไม่ซ้ำกัน

- CHECK (เช็ค) ตรวจสอบเงื่อนไขก่อนทำการเพิ่มหรือแก้ไขข้อมูล

- PRIMARY KEY (ไพมารี่ คีย์)เป็นการกำหนดคีย์หลัก โดยที่จะประกอบไปด้วยหลายคอลัมน์ ซึ่งในแต่ละคอลัมน์จะนำคุณสมบัติของ NOT NULL และ UNIQUE มาใช้ทันที

- FOREIGN KEY เป็นคีย์รอง สำหรับใช้ทำงานร่วมกับ PRIMARY KEY ในการสร้างความสัมพันธ์กับตารางอื่น

- Default (ดีฟอลท์) ในกรณีที่ไม่มีการกำหนดค่าใดๆ ลงในตาราง ข้อมูลจะเป็นค่าเริ่มต้นที่ได้กำหนดไว้ทันที

ตัวอย่างการสร้างตาราง

CREATE TABLE z_testcreatetable(

  id VARCHAR (5) PRIMARY KEY,

  username VARCHAR (50) UNIQUE NOT NULL,

  pass VARCHAR (50) NOT NULL,

  email VARCHAR (355) UNIQUE NOT NULL

);

ตัวอย่าง : การสร้างตารางที่มีชื่อว่า "z_testcreatetable" (แซด_เทสครีเอทเทเบิล)

การสร้างตาราง
การสร้างตาราง

 

ผลที่ได้ :

CREATE TABLE z_testcreatetable

(

       id character varying(5) NOT NULL,

       username character varying(50) NOT NULL,

       pass character varying(50) NOT NULL,

       email character varying(355) NOT NULL,

  CONSTRAINT z_testcreatetable_pkey PRIMARY KEY (id),

  CONSTRAINT z_testcreatetable_  email_key" UNIQUE (email),

  CONSTRAINT z_testcreatetable_  username_key" UNIQUE (username)

)

WITH (

  OIDS=FALSE

);

ALTER TABLE z_testcreatetable

  OWNER TO openpg;

คำอธิบาย : 

ดังตัวอย่าง เป็นการสร้างตารางที่มีชื่อว่า "z_testcreatetable"

โดยในตารางจะประกอบไปด้วย

- คอลัมน์ id (ไอดี) มีประเภท (TYPE) เป็น VARCHAR มีขนาด (5) เป็นคีย์หลักของตาราง (PRIMARY KEY)

- คอลัมน์ username (ยูเซอร์เนม) มีประเภท(TYPE (ไทป์)) เป็น VARCHAR (วาร์ชาร์) มีขนาด (50) โดยกำหนดค่าคือห้ามซ้ำและห้ามมีค่าว่าง

- คอลัมน์ pass (พาส) มีประเภท (TYPE) เป็น VARCHAR มีขนาด (50) โดยกำหนดค่าคือห้ามมีค่าว่าง

- คอลัมน์ email (อีเมล) มีประเภท (TYPE) เป็น VARCHAR มีขนาด (355) โดยกำหนดค่าคือห้ามซ้ำและห้ามมีค่าว่าง

สามารถศึกษาเพิ่มเติมได้ที่ คำสั่ง SQL ต่างๆ

www.postgresqltutorial.com Eng.ver

www.postgresql.org Eng.ver

โดย : http://www.mindphp.com

ให้เรตสมาชิก: 5 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งานดาวใช้งาน

Create Database ( การสร้างฐานข้อมูล )

Create Database ชื่อฐานข้อมูล

OWNER (โอนเนอร์) = ชื่อผู้ใช้ // ไม่จำเป็นต้องใส่ ค่าเริ่มต้นจะเป็นชื่อผู้ใช้ที่ตั้งไว้เมื่อตอนติดตั้งโปรแกรม PostgreSQL

Template = เทมเพลตของฐานข้อมูลใน PostgreSQL // ไม่จำเป็นต้องใส่ โดยค่าเริ่มต้นของ Template คือ template1

ENCODING (เอ็นโคนิ่ง)  = การกำหนดค่าชุดตัวอักษรที่ใช้ // ไม่จำเป็นต้องใส่ โดยค่าเริ่มต้นของชุดตัวอักษร คือ UTF8

LC_COLLATE (ซีแอล_คอลเล็ต) = การเรียงลำดับของฐานข้อมูล // ไม่จำเป็นต้องใส่ 

LC_CTYPE (แอลซี_ซีไทป์) = การจัดหมวดหมู่ของฐานข้อมูล // ไม่จำเป็นต้องใส่ 

TABLESPACE (เทเบิลสเปซ) = การระบุชื่อตาราง เพื่อกำหนดค่าเริ่มต้นของข้อมูล // ไม่จำเป็นต้องใส่ 

CONNECTION LIMIT (คอลเนคชั่น ลิมิต) = กำหนดค่าการเชื่อมต่อพร้อมกันของฐานข้อมูล // ค่าเริ่มต้นของการกำหนดการเชื่อต่อ คือ -1 หมายความว่า สามารถเชื่อมต่อได้อย่างไม่จำกัด

โค้ด :

   CREATE DATABASE ชื่อฐานข้อมูล;

ตัวอย่าง : การสร้างฐานข้อมูลที่ชื่อ "test_postgre"

การสร้างฐานข้อมูลด้วยคำสั่ง SQL
การสร้างฐานข้อมูลด้วยคำสั่ง SQL
CREATE DATABASE test_postgre

  WITH OWNER = openpg

       ENCODING = 'UTF8'

       TABLESPACE = pg_default

       LC_COLLATE = 'Thai_Thailand.874'

       LC_CTYPE = 'Thai_Thailand.874'

       CONNECTION LIMIT = -1;

คำอธิบาย : เป็นการสร้างฐานข้อมูลอย่างง่าย โดยกำหนดเพียงแค่ชื่อของฐานข้อมูลที่ต้องการสร้าง ซึ่งในส่วนอื่นๆ จะถูกกำหนดเป็นค่าเริ่มต้นทั้งหมด

สามารถศึกษาเพิ่มเติมได้ที่ คำสั่ง SQL

www.postgresqltutorial.com Eng.ver

www.postgresql.org Eng.ver

โดย : http://www.mindphp.com

ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

การเพิ่มผู้ใช้งานใน PostgreSQL(โพสต์เกรส)

   การเพิ่มผู้ใช้งาน หรือ Login Roles (ล็อกอิน โรวส) ทำได้ตามขั้นตอนดังนี้

ขั้นตอนที่ 1: เปิด PgAdmin (พีจีแอดมิน) ขึ้นมา จากนั้น ทำการ Login ใน user ที่เป็น Superuser (ซุปเปอร์ยูสเซอร์)

การ login เป็น superuser
การ login เป็น superuser

ขั้นตอนที่ 2: เมื่อ login เข้าได้แล้ว ให้เลือกที่ส่วนสุดท้ายของ Server (เซิร์ฟเวอร์) ซึ่งก็คือ Login Roles

การเลือก Login Roles
การเลือก Login Roles

ขั้นตอนที่ 3: คลิกขวาที่ Login Role และเลือก New Login Role(นิวล็อกอิน โรวส)...

บทบาทการเข้าสูระบบใหม่
บทบาทการเข้าสูระบบใหม่

ขั้นตอนที่ 4: จะแสดงหน้า New Login Role จะอยู่ในแท็บ Properties (พรอปเพอร์ตี้)ในส่วนนี้ให้กรอก username (ยูสเซอร์เนม) ลงไปในส่วนของ Role name (โรวเนม)

การกรอก username
การกรอก username

ขั้นตอนที่ 5: แท็บต่อไปที่ต้องกรอกข้อมูลคือ Definition (ดีฟินิชั่น) ให้กรอก password (พาสเวิร์ด) พร้อม ยืนยัน password และ มีการตั้งค่าอายุการใช้งานของ user นี้

การกรอก password และ อายุการใช้งาน
การกรอก password และ อายุการใช้งาน

ขั้นตอนที่ 6: แท็บต่อไปจะเป็น Role privileges (โรว พริวิเล่จ) โดยส่วนนี้จะเป็นส่วนของการตั้งค่าว่าต้องการให้ user นี้ใช้งานส่วนไหนได้บาง โดยติ๊กเลือกส่วนที่ต้องการ จากนั้นกด OK

การกำหนดสิทธิว่า user นี้ใช้งานส่วนใดได้บ้าง
การกำหนดสิทธิว่า user นี้ใช้งานส่วนใดได้บ้าง

ขั้นตอนที่ 7: เมื่อเข้าไปในส่วนของ Login Roles อีกครั้งจะเห็นว่ามี user ที่เราตั้งขึ้น

แสดง user ที่สร้างไว้
แสดง user ที่สร้างไว้

ขั้นตอนที่ 8: เป็นการใช้งาน เมื่อเรามี user อยู่แล้ว โดยคลิกที่ รูปปลั๊กดังรูป หรือ คลิกที่ File (ไฟล์) แล้วเลือก Add Server (แอด เซิร์ฟเวอร์)

การเพิ่ม server
การเพิ่ม server

ขั้นตอนที่ 9: จะแสดงหน้า New Server Registration (นิว เซิร์ฟเวอร์ รีจิสสเตรชั่น)โดยต้องกรอกข้อมูล Name (เนม) , Host (โฮส) , Username , Password จากนั้นกด OK (โอเค)

การลงทะเบียนเซิร์ฟเวอร์ใหม่
การลงทะเบียนเซิร์ฟเวอร์ใหม่

ขั้นตอนที่ 10: เมื่อมาดูที่ Server จะเห็นที่เข้าได้เพิ่มเข้าไป สามารถใช้งานได้ตามปกติตามที่เราตั้งค่าให้ user นั้นสามารถใช้งานได้

การลงทะเบียนเซิร์ฟเวอร์ใหม่
การลงทะเบียนเซิร์ฟเวอร์ใหม่

สามารถศึกษาเพิ่มเติมได้ที่ รวมคำสั่ง SQL

โดย : http://www.mindphp.com

ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน

เริ่มต้นการเขียน SQL ใน PgAdmin เพื่อจัดการฐานข้อมูลPostgreSQL

      ก่อนจะเริ่มทำการเขียน SQL นี้ ต้องทำความรู้จักกับการใช้งาน PgAdmin เพื่อจัดการฐานข้อมูล PostgreSQL เสียก่อน 

โดยสามารถศึกษาเพิ่มเติมได้จาก... บทเรียน สอนการใช้งาน PgAdmin จัดการข้อมูล PostgreSQL ...

เมื่อรู้จักวิธีการใช้งาน PgAdmin พอสมควรแล้ว สามารถเริ่มทำการเขียน sql เพื่อเชื่อมฐานข้อมูลได้เลย

1.หลังจากการทำการเชื่อมต่อโปรแกรม PgAdmin กับ ฐานข้อมูล PostgreSQL แล้ว ให้ทำการคลิกที่ SQL ในวงกลมสีแดง

การเชื่อมต่อโปรแกรมกับฐานข้อมูล
การเชื่อมต่อโปรแกรมกับฐานข้อมูล

2.เมื่อคลิกแล้วจะมีหน้าต่างการทำงานแสดงขึ้นมา ให้เราสามารถเขียนคำสั่งต่างๆ ได้

หน้าต่างการเขียนคำสั่ง SQL
หน้าต่างการเขียนคำสั่ง SQL

 

เริ่มต้นการเขียน SQL ใน PgAdmin เพื่อจัดการฐานข้อมูล PostgreSQL สามารถศึกษาเพิ่มเติมได้ที่ SQL

โดย : http://www.mindphp.com

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
ขอความช่วยเหลือ ปัญหาการ restart service
โดย bom_002 จ 27 มี.ค. 2017 8:25 pm บอร์ด OpenERP
0
9
จ 27 มี.ค. 2017 8:25 pm โดย bom_002
B - Validate customer payment ไม่ได้
โดย thatsawan จ 27 มี.ค. 2017 7:01 pm บอร์ด OpenERP Light Tester
0
3
จ 27 มี.ค. 2017 7:01 pm โดย thatsawan
ถามวิธีการแก้ตารางล้นกรอบ
โดย dawthana จ 27 มี.ค. 2017 6:16 pm บอร์ด OpenERP
0
7
จ 27 มี.ค. 2017 6:16 pm โดย dawthana
ติดตั้ง Google Chrome(กรูเกิลโครม) บน ubuntu 16.04
โดย bom_002 จ 27 มี.ค. 2017 5:11 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
10
จ 27 มี.ค. 2017 5:11 pm โดย bom_002
การติดตั้ง Skype(สไกป์) บนระบบปฏิบัติการ ubuntu 16.04
โดย bom_002 จ 27 มี.ค. 2017 4:01 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
15
จ 27 มี.ค. 2017 4:01 pm โดย bom_002
Laragon โปรแกรมจำลอง Server สำหรับพัฒนาเว็บไซต์ด้วยภาษา PHP
โดย tsukasaz จ 27 มี.ค. 2017 3:45 pm บอร์ด Weekly Knowledge
2
8
จ 27 มี.ค. 2017 3:45 pm โดย mindphp
GRUB (Restoring GRUB) คืออะไร
โดย bom_002 จ 27 มี.ค. 2017 12:32 pm บอร์ด Linux - Web Server
0
15
จ 27 มี.ค. 2017 12:32 pm โดย bom_002
รายงานประจำวันที่ 27 มีนาคม 2560
โดย bom_002 จ 27 มี.ค. 2017 10:15 am บอร์ด M043 - นพรัตน์ เกษเจริญคุณ
3
8
จ 27 มี.ค. 2017 10:15 am โดย bom_002
TODO - extension ปิดสิทธิ์ไม่ให้สมาชิกส่ง PM หากันได้ ยกเว้น ส่งหา admin
โดย thatsawan อ 26 มี.ค. 2017 11:35 pm บอร์ด phpBB3 Mods & Extensions
0
1
อ 26 มี.ค. 2017 11:35 pm โดย thatsawan
เมื่อลงโปรแกรม ubuntu 16.04 ใกล้เสร็จแล้ว แต่เกิด error ขึ้นครับ
โดย bom_002 ส 25 มี.ค. 2017 5:13 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
31
ส 25 มี.ค. 2017 5:13 pm โดย mindphp
วิธีแก้ error UnicodeDecodeError: 'ascii' ด้วย ตัวแปล,encode('utf-8','ignore') ปัญหาจากข้อมูลที่เป็นภาษาไทย
โดย thatsawan ส 25 มี.ค. 2017 3:23 pm บอร์ด OpenERP
0
5
ส 25 มี.ค. 2017 3:23 pm โดย thatsawan
วิธีเปลี่ยนรูปแบบวันที่ ปี- เดือน - วัน เวลา [2017-02-23 05:00:00] -> วัน - เดือน - ปี [23 - 02 -2017]
โดย thatsawan ส 25 มี.ค. 2017 3:04 pm บอร์ด OpenERP
0
1
ส 25 มี.ค. 2017 3:04 pm โดย thatsawan
วิธีเปิด debug เเละวิธีการใช้ _logger.debug
โดย thatsawan ส 25 มี.ค. 2017 2:43 pm บอร์ด OpenERP
0
3
ส 25 มี.ค. 2017 2:43 pm โดย thatsawan
วิธีการสร้าง USB boot(ยูเอสบี บูท) บนระบบปฏิบัติการ Ubuntu(ยูบันตู)
โดย bom_002 ส 25 มี.ค. 2017 11:50 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
18
ส 25 มี.ค. 2017 11:50 am โดย bom_002
วิธีการ format(ฟอแมต) และลบ partition(พาสดิชัน) ของ USB disk(ยูเอสบี ดิส) ด้วย command line(คอมมาน ไล)
โดย bom_002 ส 25 มี.ค. 2017 11:13 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
22
ส 25 มี.ค. 2017 11:13 am โดย bom_002
รายงานประจำวันที่ 25 มีนาคม 2560
โดย bom_002 ส 25 มี.ค. 2017 10:11 am บอร์ด M043 - นพรัตน์ เกษเจริญคุณ
3
11
ส 25 มี.ค. 2017 10:11 am โดย bom_002
ต้องการจัดทำระบบ CRM ค่ะต้องทำยังไงบ้างคะ อย
โดย Sawika Maekai ส 25 มี.ค. 2017 4:13 am บอร์ด Programming - PHP
1
22
ส 25 มี.ค. 2017 4:13 am โดย mindphp
อยากสอบถามเรื่องการทำโปรแกรม CRM ค่ะ
โดย Sawika Maekai ส 25 มี.ค. 2017 4:12 am บอร์ด Programming - PHP
0
9
ส 25 มี.ค. 2017 4:12 am โดย Sawika Maekai
ติดตั้ง Pycharm(ไพชาม) บนระบบปฏิบัติการ Ubuntu(อูบันตู)
โดย bom_002 ศ 24 มี.ค. 2017 8:24 pm บอร์ด Linux - Web Server
1
23
ศ 24 มี.ค. 2017 8:24 pm โดย bom_002
R - List module OpenERP และ Odoo
โดย M032 ศ 24 มี.ค. 2017 7:14 pm บอร์ด shop.mindphp.com
0
2
ศ 24 มี.ค. 2017 7:14 pm โดย M032