PostgreSQL : คำสั่ง SQL การใช้ Operator

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 การใช้ Operator

โพสต์โดย thitikorn_lp » 09/09/2014 3:59 pm

Operator ( ตัวดำเนินการ )

  Operator หรือ ตัวดำเนินการ ที่ใช้ในการดำเนินการทางคณิตศาสตร์หรือการเปรียบเทียบเป็นต้น นิยมใช้กันในภาษา SQL เพื่อเป็นการกำหนดเงื่อนไขในคำสั่ง SQL และทำหน้าที่เป็นตัวเชื่อมเงื่อนไขหลาย ๆ เงื่อนไขเข้าด้วยกัน

โดยสามารถเรียงลำดับความสำคัญของตัวดำเนินการได้ดังนี้
1. ( )
2. NOT
3. AND
4. ALL, BETWEEN, IN, LIKE, OR

• NOT ใช้สำหรับในการปฏิเสธค่า เปลี่ยนแปลงค่าฟังก์ชันต่าง ๆ ให้เป็นตรงกันข้าม
• AND ใช้สำหรับการเชื่อมเงื่อนไขที่เป็นจริง มากกว่า 2 เงื่อนไข
• ALL ใช้สำหรับเปรียบเทียบค่ากับค่าทั้งหมดร่วมกับ SUB QUERY
• BETWEEN...AND... ใช้สำหรับกำหนดเงื่อนไขในการค้นหาค่าที่อยู่ระหว่างค่า ๆ หนึ่ง กับค่า ๆ หนึ่ง
• IN ใช้สำหรับเปรียบเทียบค่าในที่อยู่ในกลุ่มที่กำหนด
• LIKE ใช้สำหรับเปรียบเทียบตัวอักษร
• OR ใช้สำหรับการเชื่อมโยงเงื่อนไขและต้องมีเงื่อนใขใดเงื่อนไขหนึ่งที่เป็นจริง


** SUB QUERY คือการใช้คำสั่ง SELECT ซ้อนคำสั่ง SELECT

ตัวอย่าง : การใช้ Operator มีดังนี้
» การใข้ตัวดำเนินการ NOT
» การใข้ตัวดำเนินการ AND
» การใข้ตัวดำเนินการ ALL
» การใข้ตัวดำเนินการ BETWEEN...AND...
» การใข้ตัวดำเนินการ IN
» การใข้ตัวดำเนินการ LIKE
» การใข้ตัวดำเนินการ OR

ซึ่ง Operator บางตัวใน MySQL ไม่สามารถทำงานใน PostgreSQL ได้
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 23/09/2014 1:01 pm, แก้ไขไปแล้ว 11 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 09/09/2014 4:14 pm

NOT การปฏิเสธค่า เปลี่ยนแปลงค่าฟังก์ชันต่าง ๆ ให้เป็นตรงกันข้าม

โค้ด :

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

NOT condition

อธิบายคำสั่ง
condition       :  เงื่อนไขที่ต้องการจะปฏิเสธค่า

ตัวอย่าง :

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

SELECT *
FROM res_partner
WHERE name NOT IN ( 'Your Company', 'Administrator','Mediapole', 'Maxtor' );


ผลที่ได้ :
operater 01.jpg

operater 02.jpg


คำอธิบาย :
จากภาพที่ 1 เป็นรายชื่อในตาราง res_partner จำนวน 25 ชื่อ เราต้องการให้แสดงข้อมูลโดยที่ได้ต้องการชื่อ 'Your Company', 'Administrator', 'Mediapole', 'Maxtor' จำนวน 4 ชื่อนี้ ในกรอบสีแดงๆ

จะเห็นได้ว่า ในภาพที่ 2 ชื่อที่เราทำการ NOT IN ไว้ หรือที่เราไม่ต้องให้แสดง ส่วนที่ขีดสีแดงไว้จะหายไป


เรายังสามารถใช้ NOT ร่วมกับตัวดำเนินการอื่นๆ ได้อีกหลายตัว เช่น
• NULL

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

SELECT *
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ IS NOT NULL;

• LIKE

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

SELECT ชื่อคอลัมน์
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ NOT LIKE 'ตัวอักษร%';

• BETWEEN...AND

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

SELECT *
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ NOT BETWEEN ค่าที่ 1 AND ค่าที่ 2 ;

• EXISTS

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

SELECT *
FROM ชื่อตารางที่ 1
WHERE NOT EXISTS (SELECT *
                  FROM ชื่อตารางที่ 2
                  WHERE ชื่อตารางที่ 1.ชื่อคอลัมน์ของตารางที่ 1 = ชื่อตารางที่ 2.ชื่อชื่อคอลัมน์ของตารางที่ 2 ที่เชื่อมกับตารางที่ 1);



ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 10/09/2014 2:12 pm, แก้ไขไปแล้ว 2 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 10/09/2014 11:12 am

AND การเชื่อมเงื่อนไขที่เป็นจริง มากกว่า 2 เงื่อนไข

โค้ด :

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

WHERE เงื่อนไขที่ 1
AND เงื่อนไขที่ 2
...
AND เงื่อนไขที่ n ;


ตัวอย่าง :

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

SELECT id, name, street, city
FROM res_partner
WHERE name like '%l%'
AND street like '%c%'
ORDER BY id;


ผลที่ได้ :
operater 03.jpg

operater 04.jpg

operater 05-1.jpg

operater 05-2.jpg

operater 05.jpg


อธิบาย :
จากภาพที่ 1 และ ภาพที่ 2 เป็นรายชื่อทั้งหมดจากตาราง res_partner
เมื่อทำการตั้งเงื่อนไขให้แสดงโดยใช้คำสั่ง name like '%l%' จะได้รายชื่อดังที่แสดงใน ภาพที่ 3
และคำสั่ง street like '%c% รายชื่อจะแสดงดังภาพที่ 4
เมื่อใช้ตัวดำเนินการ AND เข้ามาเชื่อม ทั้ง 2 คำสั่งเข้าด้วยกัน
ทำให้ได้รายชื่อดังที่แสดงในภาพที่ 5 นั่นคือ ชื่อที่จะแสดงจะต้องที่ ตัว l และ ที่อยู่จะต้องมีตัว c อยู่ในชื่อ



ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 10/09/2014 2:15 pm, แก้ไขไปแล้ว 1 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 10/09/2014 2:08 pm

ALL การเปรียบเทียบค่ากับค่าทั้งหมดร่วมกับ SUB QUERY

โค้ด :

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

SELECT ชื่อคอลัมน์ที่ 1, ชื่อคอลัมน์ที่ 2
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ที่ต้องการตั้งเงื่อนไข <= ALL ( SELECT ชื่อคอลัมน์ที่ต้องการตั้งเงื่อนไข FROM ชื่อตาราง );




ย้อนกลับด้านบน
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 10/09/2014 5:22 pm

BETWEEN...AND...การกำหนดเงื่อนไขในการค้นหาค่าที่อยู่ระหว่างค่า ๆ หนึ่ง กับค่า ๆ หนึ่ง

โค้ด :

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

expression BETWEEN value1 AND value2;

อธิบายคำสั่ง
expression      :  ค่าที่ต้องการให้แสดงหรือค่าที่ค้องการคำนวณ
value1 ,value2    :  ค่าที่ต้องการให้แสดงค่าระหว่าง หรือค่าที่ต้องการเปรียบเทียบ

ตัวอย่าง :

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

SELECT amount_total
FROM sale_order
WHERE amount_total BETWEEN 2000  AND 5000;

ผลที่ได้ :
operater 06.jpg

operater 06-1.jpg


คำอธิบาย :
จากภาพที่ 1 ตาราง sale_order ที่แสดงราคารวมการสั่งซื้อทั้งหมด เมื่อใช้คำสั่ง WHERE amount_total BETWEEN 2000 AND 5000 เพื่อต้องการให้แสดงค่าผลรวมราคาระหว่าง 2,000 บาท - 5,000 บาท ผลที่ได้ ดังแสดงในภาพที่ 2


ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
แก้ไขล่าสุดโดย thitikorn_lp เมื่อ 22/09/2014 6:29 pm, แก้ไขไปแล้ว 1 ครั้ง.
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 10/09/2014 5:51 pm

IN การเปรียบเทียบค่าในที่อยู่ในกลุ่มที่กำหนด

โค้ด :

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

expression IN (value1, value2, .... value_n);

อธิบายคำสั่ง
expression      :  ค่าที่ต้องการทดสอบ
value1 ,value2    :  ค่าที่ต้องการให้ expression แสดงอยู่ในตัวที่กำหนด

ตัวอย่าง :

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

SELECT id, name,street,city
FROM res_partner
WHERE city IN ('Taipei', 'Fremont', 'Boston');


ผลที่ได้ :
operater 03.jpg

operater 04.jpg

operater 07.jpg


คำอธิบาย :
จากภาพที่ 1 และภาพที่ 2 ที่แสดงรายชื่อทั้งหมดของตาราง res_partner เราต้องการใช้คำสั่ง WHERE city IN ('Taipei', 'Fremont', 'Boston') เพื่อต้องการให้แสดงค่าในคอลัมน์ city ที่มีค่าเท่ากับ 'Taipei', 'Fremont', 'Boston'
ผลที่ได้ดังในภาพที่ 3

ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 10/09/2014 6:43 pm

LIKE การเปรียบเทียบตัวอักษร

โค้ด :
expression LIKE pattern [ ESCAPE 'escape_character' ]
อธิบายคำสั่ง
expression      :  ค่าที่อยู่ในคอลัมน์ หรือ ในฟิลด์ที่ต้องการให้แสดง
pattern          :  รูปแบบของค่าที่ต้องการจับคู่ หรือ ต้องการให้แสดงค่าออกมา
escape_character :  ตัวเลือกจะช่วยในการทดสอบค่าที่ต้องแสดงของอักษร อักขระ เช่น % หรือ _

%  ใช้ในการช่วยจับคู่หรือเปรียบเทียบให้ตรงกับความยาวของตัวอักษรใดๆ
_   ใช้ในการช่วยจับคู่ตัวอักษรเพียง 1 ตัว

การใช้ % (เปอร์เซ็น)
'?%' : % (เปอร์เซ็น) อยู่ข้างหลัง หมายความว่า คำใดๆ ที่ขึ้นต้นด้วย ?
'%?%' : % (เปอร์เซ็น) อยู่ทั้งขเางหน้าข้างหลัง หมายความว่า คำใดๆ ที่มีคำว่า ?
'%?' : % (เปอร์เซ็น) อยู่ข้างหน้า หมายความว่า คำใดๆ ที่ลงท้ายด้วย ?

ตัวอย่าง :

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

SELECT id, name
FROM res_partner
WHERE name like 'L%'

ผลที่ได้ :
operater 08.jpg

operater 08-1.jpg

คำอธิบาย :
ผลจากการใช้คำสั่ง WHERE name like 'L%' หมายความว่า เราต้องการค้นหาให้แสดงรายชื่อในคอลัมน์ที่ name มีตัวอักษร 'L' อยู่ข้างหน้าสุด ผลที่ได้ดังภาพที่ 2

การใช้ _ (ขีดเส้นใต้)
ใช้เมื่อกำลังมองหาตัวอักษรเพียงตัวเดียว

ตัวอย่าง :

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

SELECT ชื่อคอลัมน์
FROM ชื่อตาราง
WHERE ชื่อคอลัมน์ LIKE '??_??';




ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
รูปภาพ

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

Re: PostgreSQL : คำสั่ง SQL การใช้ Operator

โพสต์โดย thitikorn_lp » 22/09/2014 7:05 pm

OR ใช้สำหรับการเชื่อมโยงเงื่อนไขและต้องมีเงื่อนใขใดเงื่อนไขหนึ่งที่เป็นจริง

โค้ด :

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

WHERE condition1
OR condition2
...
OR condition_n;

อธิบายคำสั่ง
condition1      :  เงื่อนไขที่ 1 ที่กำหนด
....
condition_n     :  เงื่อนไขที่ n

    หมายเหตุ
    - OR ช่วยให้สามารถทำการทดสอบเงื่อนไขได้มากกว่า 2 เงื่อนไข
    - OR จะทำการตรวจสอบว่า เงื่อนไขทั้งหมดที่กล่าวมาจะต้องมีความถูกต้อง อย่างน้อย 1 เงื่อนไข
    - OR สามารถใช้ได้ทั้งในการ SELECT, INSERT, UPDATE หรือ DELETE

ตัวอย่าง : การใช้ OR ใน SELECT

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

SELECT name,street,city,zip
FROM res_partner
WHERE name like '%J%'
OR city like '%M%'
OR zip like '%33%';

ผลที่ได้ :
2014-09-22_18-45-51.jpg

คำอธิบาย :
จากภาพจะเห็นได้ว่า เราได้ทำการตั้งเงื่อนไขว่า ข้อมูลที่เลือกให้แสดงจะต้องมี
- เงื่อนไขที่ 1 คือ "name" จะต้องมี J ตัวใหญ่อยู่
- เงื่อนไขที่ 2 คือ ใน "city" จะต้องมี M อยู่ใหญ่อยู๋ในชื่อเมือง
และเงื่อนไขสุดท้ายคือ zip ในรหัสประเทศจะต้องมี เลข "33"
ดังนั้น ข้อมูลที่แสดงจะต้องมีอยู่ในเงื่อนไข อย่างน้อย 1 เงื่อนไข จึงแสดงออกมา

ตัวอย่าง : การใช้ OR ใน INSERT

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

INSERT INTO z_cpartner
(name, email)
SELECT name , email
FROM res_partner
WHERE city = 'Taipei'
OR city = 'Miami';

ผลที่ได้ :
รายชื่อทั้งหมดจากตาราง res_partner
operater 03.jpg
operater 04.jpg

รายชื่อที่ได้ที่จากเงื่อนไขที่ว่า city = 'Taipei' หรือ city = 'Miami'
2014-09-23_9-59-21.jpg
ผลที่ได้
2014-09-23_10-00-28.jpg

คำอธิบาย :
จากภาพที่ 2 และ 3 เป็นรายชื่อทั้งหมดของตาราง res_partner เราได้ทำการ insert โดยตั้งเงื่อนไขว่า ชื่อที่จะทำการ insert มานั้น จะต้องมี city ชื่อว่า 'Taipei' หรือ 'Miami' จึงจะทำการ insert มาได้

ตัวอย่าง : การใช้ OR ใน UPDATE

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

UPDATE ชื่อตาราง
SET คอลัมน์ที่ต้องการ = 'ค่าที่ต้องการ'
WHERE คอลัมน์ที่ตั้งเงื่อนไข = 'เงื่อนไข'
OR คอลัมน์ที่ตั้งเงื่อนไข > ค่า(ตัวเลข)(เงื่อนไข);


ตัวอย่าง : การใช้ OR ใน DELETE

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

DELETE FROM ชื่อตาราง
WHERE คอลัมน์ที่ตั้งเงื่อนไข= 'เงื่อนไข'
OR คอลัมน์ที่ตั้งเงื่อนไข<= ค่า(ตัวเลข)(เงื่อนไข);


** การใช้ SELECT, INSERT, UPDATE, DELETE เป็นการใช้เหมือนทั่วๆ ไป เพียงแต่การใส่ OR เพิ่มเข้าไป เราจะสามารถตั้งเงื่อนไขในการทำงานต่างๆ ให้กับตัวเลือกของเราได้มากกว่า 1 เงื่อนไข


ย้อนกลับด้านบน
คุณไม่มีสิทธิ์ดูไฟล์ที่แนบมาในกระทู้
รูปภาพ


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

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

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