บทเรียน PostgreSQL Stored Procedures

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

ให้เรตสมาชิก: 1 / 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

ให้เรตสมาชิก: 1 / 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

ให้เรตสมาชิก: 3 / 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

ให้เรตสมาชิก: 1 / 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
อยากได้วิธี get attribute ของ Dropdrow
โดย thatsawan อ 30 เม.ย. 2017 4:17 pm บอร์ด JavaScript & Jquery Ajax
2
6
อ 30 เม.ย. 2017 4:17 pm โดย thatsawan
ลับซ่อมpcโน๊ตบุคลงวินโด้ล่าค่า300ทุกอาหาร
โดย รับซ่อมคอมฯ ทุกอาการ อ 30 เม.ย. 2017 11:55 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
4
อ 30 เม.ย. 2017 11:55 am โดย รับซ่อมคอมฯ ทุกอาการ
[phpBB Debug] PHP Notice: in file [ROOT]/vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/Facebook.php on line 147: Unde
โดย mindphp อ 30 เม.ย. 2017 1:02 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
1
7
อ 30 เม.ย. 2017 1:02 am โดย thatsawan
ช่วยดูโค๊ดนี้จาก error Unknown column '....' in 'where clause'
โดย Tanapat Sangtong ส 29 เม.ย. 2017 2:35 pm บอร์ด Programming - PHP
1
30
ส 29 เม.ย. 2017 2:35 pm โดย Tanapat Sangtong
server ไม่รองรับไฟล์รูปภาพที่เป็นภาษาไทย แก้ยังไงครับ
โดย tsukasaz ศ 28 เม.ย. 2017 6:18 pm บอร์ด Programming - PHP
0
10
ศ 28 เม.ย. 2017 6:18 pm โดย tsukasaz
ต้องการดึงจาก SQL มาแสดง Droplist แต่มันไม่แสดงครับ
โดย bondham ศ 28 เม.ย. 2017 5:04 pm บอร์ด Programming - PHP
2
24
ศ 28 เม.ย. 2017 5:04 pm โดย bondham
อยากทราบวิธี เช็ควัน หมดอายุ ของ SSL ได้ยังไงครับ ?
โดย M029 ศ 28 เม.ย. 2017 3:31 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
16
ศ 28 เม.ย. 2017 3:31 pm โดย M029
สอบถามคะ ติตั้ง joomla 1.5 ขึ้นแจ้งว่า Cookies do not appear to be enabled on your client. เป็นเพราะอะไรคะ
โดย moomai ศ 28 เม.ย. 2017 2:32 pm บอร์ด Joomla Development
1
21
ศ 28 เม.ย. 2017 2:32 pm โดย tsukasaz
สอบถามคะ ติดตั้ง Template ไม่ได้ขึ้น Error เป็นเพราะอะไรคะ
โดย moomai พฤ 27 เม.ย. 2017 7:52 pm บอร์ด Joomla Development
2
21
ศ 28 เม.ย. 2017 1:20 pm โดย tsukasaz
ถ้าจะออกแบบ db แบบระบบคล้ายๆmlm โครงสร้างทีไรบ้าง
โดย bondham อ 23 เม.ย. 2017 1:26 am บอร์ด SQL - Database
5
49
พฤ 27 เม.ย. 2017 7:26 pm โดย mindphp
สอบถามค่ะ ในโปรแกรมที่เราสร้างมี errpr ขึ้นหมายความว่ายังไงคะ
โดย moomai พฤ 27 เม.ย. 2017 2:09 pm บอร์ด Programming - PHP
3
30
พฤ 27 เม.ย. 2017 2:09 pm โดย tsukasaz
ติดตั้งโปรแกรม xampp ที่เป็นไฟล์ .zip ต้องทำยังไงบ้างคะ
โดย moomai พฤ 27 เม.ย. 2017 1:56 am บอร์ด Joomla Development
2
19
พฤ 27 เม.ย. 2017 1:56 am โดย moomai
ติดตั้งโปรแกรม xampp ที่เป็นไฟล์ .zip ต้องทำยังไงบ้างคะ
โดย moomai พฤ 27 เม.ย. 2017 1:55 am บอร์ด Joomla Development
0
6
พฤ 27 เม.ย. 2017 1:55 am โดย moomai
จะจัดตั้งบริษัทใหม่ มีค่าใช้จ่ายประมาณเท่าไหร่ครับ
โดย M029 พ 26 เม.ย. 2017 6:42 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
1
31
พ 26 เม.ย. 2017 6:42 pm โดย M029
ไปเรื่อง เรือดำน้ำ
โดย jataz2 พ 26 เม.ย. 2017 5:04 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
พ 26 เม.ย. 2017 5:04 pm โดย jataz2
ทำการติดตั้ง Joomla 1.5 แล้ว Error ต้องแก้ไขยังไงคะ
โดย moomai พ 26 เม.ย. 2017 4:51 pm บอร์ด Joomla Development
8
33
พ 26 เม.ย. 2017 4:51 pm โดย moomai
กำลังศึกษาภาษา Python สงสัยว่าพอเราเขียนชุดคำสั่งเสร็จแล้วจะนำไปใช้งานยังไงครับ
โดย amorn_au พ 26 เม.ย. 2017 11:25 am บอร์ด Programming - C/C++ & java & Python
0
23
พ 26 เม.ย. 2017 11:25 am โดย amorn_au
browser cache คืออะไรค่ะ
โดย thatsawan พ 26 เม.ย. 2017 10:56 am บอร์ด Programming - PHP
0
26
พ 26 เม.ย. 2017 10:56 am โดย thatsawan
มาแล้ว Joomla 3.7 มาตามสัญญา
โดย mindphp อ 25 เม.ย. 2017 11:44 pm บอร์ด PHP News
1
98
อ 25 เม.ย. 2017 11:44 pm โดย mindphp
R - mdsoft_claim_goods (ระบบเคลมสินค้า)
โดย dawthana อ 25 เม.ย. 2017 9:50 pm บอร์ด อาร์ซีพี โกลบอล จำกัด
1
21
อ 25 เม.ย. 2017 9:50 pm โดย dawthana