570 likes | 926 Views
Chapter 5- 2 กลุ่มคำสั่ง Data Query Language (DQL). โดยอาจารย์ เกศแก้ว ประดิษฐ์ สาขาวิชาการจัดการเทคโนโลยีสารสนเทศ Kate_psu08@hotmail.com. เนื้อหาที่เรียนในบทนี้ คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation มาแสดงผล คำสั่งที่ใช้ในการเลือกข้อมูลมาแสดงแบบมีเงื่อนไข
E N D
Chapter 5-2กลุ่มคำสั่ง Data Query Language (DQL) โดยอาจารย์ เกศแก้ว ประดิษฐ์ สาขาวิชาการจัดการเทคโนโลยีสารสนเทศ Kate_psu08@hotmail.com
เนื้อหาที่เรียนในบทนี้ • คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation มาแสดงผล • คำสั่งที่ใช้ในการเลือกข้อมูลมาแสดงแบบมีเงื่อนไข • Operator ที่ใช้ในคำสั่ง SQL • การใช้ Wildcard และคำสั่ง LIKE • คำสั่งที่ใช้ในการเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว Data Query Language (DQL)
เนื้อหาที่เรียนในบทนี้ (ต่อ) • คำสั่งที่ใช้ในการแสดงผลทุกรายการโดยมีข้อมูลซ้ำกัน • คำสั่งที่ใช้ในการเลือกข้อมูลจาก Relation ที่สัมพันธ์กัน • คำสั่งที่ใช้ในการเรียงลำดับ • ฟังก์ชันใน SQL • ฟังก์ชัน Group By • ฟังก์ชัน Having Data Query Language (DQL)
Data Query Language (DQL) • Data Query Language (DQL) เป็นกลุ่มคำสั่งที่ใช้ในการเลือกข้อมูลจาก Relation ต่างๆ ออกมาแสดงผลในรูปแบบตามที่ต้องการ ประกอบไปด้วย 3 ส่วนหลักคือ • SELECT เป็นคำสั่งที่ใช้สำหรับกำหนดรายชื่อ Attribute ของ Relation ที่ต้องการให้แสดงผล • FROM เป็นคำสั่งที่ใช้สำหรับกำหนดรายชื่อ Relation ที่เป็นแหล่งข้อมูลที่ต้องการเลือกมาแสดงผล • WHERE เป็นคำสั่งที่ใช้สำหรับกำหนดเงื่อนไขในการเลือกข้อมูลจาก Relation ที่กำหนดไว้ในส่วนของ FROM ขึ้นมาแสดงผล หากไม่กำหนดแสดงว่าแสดงทุก Tuple ของ Relation นั้น
Data Query Language (DQL) • รูปแบบคำสั่ง SQL จะมีรูปแบบดังต่อไปนี้ • SELECT ……FROM…….[WHERE………….]
คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation • คำสั่งโดยทั่วไป • ในกรณีที่ต้องการนำข้อมูลในทุก Tuple ของ Relation ใดๆ ขึ้นมาแสดงผล จะใช้เพียงการกำหนดคำสั่งเฉพาะในส่วนของคำสั่ง Select และ From ด้วยรูปแบบคำสั่งต่อไปนี้ • SELECT {* | attribute 1, attribute 2 ,…..,attribute N } FROM Table1 [,Table2,……,Table N ] • โดยที่ attribute หมายถึง ชื่อ attribute ที่ต้องการให้แสดงในกรณีที่ต้องการทุก attribute ให้ใช้ * แทน • Table หมายถึง ชื่อ Relation ที่เป็นเจ้าของข้อมูลที่ต้องการ
คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation • จากโครงสร้างและตัวอย่างข้อมูลของ Relation “INVENTORY” ต่อไปนี้
คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation • ให้นักศึกษาแสดงค่าข้อมูลทั้งหมดในตาราง INVENTORY • SELECT * FROM INVENTORY;
คำสั่งที่ใช้ในการเลือกทุกรายการจาก Relation • กรณีที่ต้องการแสดงบาง attribute ของ Relation ขึ้นมาแสดงผล เช่นเดียวกับการใช้คำสั่ง Project ดังนี้ • ให้นักศึกษาแสดงเฉพาะข้อมูลในส่วนของ รหัสสินค้า ชื่อสินค้า จำนวนในคลังสินค้า และราคาสินค้า • SELECT P_CODE , P_DESCRIPT , ON_HAND , PRICE FROM INVENTORY;
คำสั่งที่ใช้ในการเลือกข้อมูลขึ้นมาแสดงผลแบบมีเงื่อนไขคำสั่งที่ใช้ในการเลือกข้อมูลขึ้นมาแสดงผลแบบมีเงื่อนไข • เมื่อต้องการใช้คำสั่ง SQL เพื่อกำหนดขอบเขตของข้อมูลที่ต้องการให้แสดงผล ไม่ว่าจะเป็นคำสั่งโดยทั่วไป หรือคำสั่งใน Microsoft Access จะต้องกำหนดเงื่อนไขหลังคำสั่ง WHERE ประกอบกับคำสั่ง SELECT……FROM……. ดังนี้ • SELECT {* | attribute 1, attribute 2 ,…..,attribute N } FROM Table1 [,Table2,……,Table N ] • [WHERE condition] • โดยที่ attribute หมายถึง ชื่อ attribute ที่ต้องการให้แสดงในกรณีที่ต้องการทุก attribute ให้ใช้ * แทน • Table หมายถึง ชื่อ Relation ที่เป็นเจ้าของข้อมูลที่ต้องการ • Condition หมายถึง เงื่อนไขในการเลือกข้อมูล
คำสั่งที่ใช้ในการเลือกข้อมูลขึ้นมาแสดงผลแบบมีเงื่อนไขคำสั่งที่ใช้ในการเลือกข้อมูลขึ้นมาแสดงผลแบบมีเงื่อนไข • ให้นักศึกษาเลือกข้อมูลของสินค้าเฉพาะรหัส “003” จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY WHERE P_CODE = “003”;
Operator ที่ใช้ในคำสั่ง SQL • การกำหนดเงื่อนไขให้กับคำสั่ง SQL หลังคำสั่ง WHERE จะมีความสมบูรณ์ได้ ต้องประกอบกับ Operator ต่างๆ
Operator ที่ใช้ในคำสั่ง SQL • ให้นักศึกษาเลือกข้อมูลของสินค้าที่มีจำนวนสินค้าในคลังน้อยกว่า100 จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY WHERE ON_HAND < 100;
Arithmetic Operator • ได้แก่ Operator ที่ใช้ในการคำนวณ ซึ่งมีหน้าที่แตกต่างกันไปดังนี้
Arithmetic Operator • ให้นักศึกษาแสดงต้นทุนของสินค้าที่ผลิตจากผู้ผลิต(V_Code) รหัส “45555”ทุกตัว จาก Relation “INVENTORY” ต่อไปนี้ • SELECT P_CODE , P_DESCRIPT , STOCK_DATE , ON_HAND * PRICE AS COST • FROM INVENTORY WHERE V_CODE = 45555;
Logical Operator • Operator ที่ใช้เปรียบเทียบค่าระหว่าง 2 เงื่อนไข โดยให้ผลออกมาเป็นจริง(True) หรือ เท็จ(False) Operator กลุ่มนี้ได้แก่ • NOT ผลที่ได้ของการนำเงื่อนไขมาใช้กับ Operator นี้จะได้ผลที่ตรงข้ามกับค่าเริ่มต้นเสมอ ดังตาราง
Logical Operator • ให้นักศึกษาเลือกข้อมูลของรายการสินค้าที่มีประเภทการขายไม่ใช่ประเภทที่ 1 จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY WHERE NOT SALE_CODE = “1”;
Logical Operator • SELECT * FROM INVENTORY WHERE NOT SALE_CODE = “1”; • ผลลัพธ์ที่ได้
Logical Operator • Operator ที่ใช้เปรียบเทียบค่าระหว่าง 2 เงื่อนไข โดยให้ผลออกมาเป็นจริง(True) หรือ เท็จ(False) Operator กลุ่มนี้ได้แก่ • AND ผลที่ได้ของการนำเงื่อนไขมาใช้กับ Operator นี้จะได้ผลออกมาจริง ก็ต่อเมื่อทั้ง 2 เงื่อนไขมีค่าเป็นจริง ดังตาราง
Logical Operator • ให้นักศึกษาแสดงรายการสินค้าที่จำนวนสินค้าในคลังอยู่ระหว่าง 50 ถึง 100 จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY • WHERE ON_HAND >= 50 AND ON_HAND < =100;
Logical Operator • SELECT * FROM INVENTORY • WHERE ON_HAND >= 50 AND ON_HAND < =100; • ผลลัพธ์ที่ได้
Logical Operator • Operator ที่ใช้เปรียบเทียบค่าระหว่าง 2 เงื่อนไข โดยให้ผลออกมาเป็นจริง(True) หรือ เท็จ(False) Operator กลุ่มนี้ได้แก่ • OR ผลที่ได้ของการนำ 2 เงื่อนไขมาใช้กับ Operator นี้จะได้ผลออกมาเป็นเท็จ ก็ต่อเมื่อทั้ง 2 เงื่อนไขมีค่าเป็นเท็จ ดังตาราง
Logical Operator • ให้นักศึกษาแสดงรายการสินค้าที่มีประเภทการขายเป็น 1 และ 5 จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY • WHERE SALE_CODE = “1” OR SALE_CODE =“5”;
Logical Operator • SELECT * FROM INVENTORY • WHERE SALE_CODE = “1” OR SALE_CODE =“5”; • ผลลัพธ์ที่ได้
การใช้ Wildcard และคำสั่ง Like • เครื่องหมาย “%” เป็นเครื่องหมายที่ใช้แทนข้อความใดๆ ที่จะใช้กำหนดไว้ด้านหน้า หรือด้านหลังข้อความที่กำหนด เพื่อหาคำที่คล้ายกับข้อความที่กำหนดนั้น
การใช้ Wildcard และคำสั่ง Like • ให้นักศึกษาแสดงรายการสินค้าที่มีชื่อขึ้นต้นด้วยคำว่า “เหล็ก” จาก Relation “INVENTORY” ต่อไปนี้ • SELECT * FROM INVENTORY • WHERE P_DESCRIPT LIKE = “เหล็ก%”;
การใช้ Wildcard และคำสั่ง Like • SELECT * FROM INVENTORY • WHERE P_DESCRIPT LIKE = “เหล็ก%”; • ผลลัพธ์ที่ได้
การใช้ Wildcard และคำสั่ง Like • เครื่องหมาย “_” หรือ “?”เป็นเครื่องหมายที่ใช้แทนข้อความใดๆ ที่ใช้ร่วมกับข้อความที่กำหนด เพื่อหาคำที่คล้ายกับข้อความที่กำหนดนั้น
การใช้ Wildcard และคำสั่ง Like • ให้นักศึกษาแสดงชื่อที่มีขนาด 4 ตัวอักษร และตัวอักษรแรกเป็น “H” ตัวอักษรที่ 2 เป็นอะไรก็ได้ ส่วนตัวอักษรที่ 3 และ 4 เป็นตัวอักษร “I” จาก Relation “PERSONAL” ต่อไปนี้
การใช้ Wildcard และคำสั่ง Like • SELECT * FROM PERSONAL • WHERE P_NAME LIKE = “H_II”; • ผลลัพธ์ที่ได้
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • การใช้คำสั่ง SQL เพื่อเลือกรายการที่ต้องการออกมาแสดงผล บ่อยครั้งที่จะปรากฏรายการที่มีค่าซ้ำกันออกมาเนื่องจาก ใน Relation มีรายการที่มีค่าซ้ำกันปรากฏอยู่ เช่นใน ตาราง Inventory
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • คำสั่ง DISTINCT เป็นคำสั่งที่ใช้จัดการรายการที่มีข้อมูลซ้ำกันให้เหลือเพียงรายการเดียว โดยการพิจารณาการซ้ำกันของข้อมูล จะพิจารณาเฉพาะข้อมูลใน Field ต่างๆ ที่กำหนดในคำสั่ง SELECT • SELECT DISTINCT P_CODE , P_DESCRIPT,ON_HAND , PRICE FROM INVENTORY • WHERE ON_HAND < 200 ;
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • คำสั่ง DISTINCT เป็นคำสั่งที่ใช้จัดการรายการที่มีข้อมูลซ้ำกันให้เหลือเพียงรายการเดียว โดยการพิจารณาการซ้ำกันของข้อมูล จะพิจารณาเฉพาะข้อมูลใน Field ต่างๆ ที่กำหนดในคำสั่ง SELECT • SELECT DISTINCT FIRST_NAME FROM PEOPLE ;
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • ผลลัพธ์ที่ได้ • SELECT DISTINCT FIRST_NAME FROM PEOPLE ;
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • คำสั่ง DISTINCTROW เป็นคำสั่งที่มีหน้าที่เช่นเดียวกับ DISTINCTแต่การพิจารณาการซ้ำกันของข้อมูล จะพิจารณาจากค่าของทุก Field ใน Table เช่นตัวอย่างข้อมูล ตาราง PEOPLE ดังนี้
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • ตาราง PEOPLE • SELECT DISTINCTROW * FROM PEOPLE;
การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว การเลือกข้อมูลที่ซ้ำกันให้แสดงผลเพียงรายการเดียว • ผลลัพธ์ที่ได้
การแสดงทุกรายการแม้มีข้อมูลซ้ำกัน การแสดงทุกรายการแม้มีข้อมูลซ้ำกัน • คำสั่ง ALL คู่กับคำสั่ง SELECT ตามตัวอย่างข้อมูล ตาราง PEOPLE ดังนี้
การแสดงทุกรายการแม้มีข้อมูลซ้ำกัน การแสดงทุกรายการแม้มีข้อมูลซ้ำกัน • SELECT ALL * FROM PEOPLE;
การเลือกข้อมูลจาก Relation ที่สัมพันธ์กัน • คำสั่งในกลุ่มนี้จะมีลักษณะเช่นเดียวกับคำสั่ง JOIN เลือกข้อมูลจาก 2 Relation หรือมากว่าที่มีความสัมพันธ์กันด้วย Foreign key ตามรูปแบบดังต่อไปนี้ • SELECT …… FROM Table1 ,Table2…. ] • [WHERE Table1.attribute1 = Table2.attribute2 [and ……..] • โดยที่ Table n หมายถึง ชื่อ Relation ที่เป็นเจ้าของ attribute ที่ทำหน้าที่เป็น Foreign Key และ Candidate Key • attribute n หมายถึง ชื่อ attribute ที่ทำหน้าที่เป็น Foreign key และ • Candidate key
การเลือกข้อมูลจาก Relation ที่สัมพันธ์กัน • ตาราง Inventory • ตาราง Vender
การเลือกข้อมูลจาก Relation ที่สัมพันธ์กัน • ให้นักศึกษาแสดงคำสั่งการ JOIN กันระหว่าง ตาราง Inventory กับตาราง Vender • SELECT P_CODE , P_DESCRIPT , ON_HAND, PRICE,VENDER.V_CODE , V_NAME • FROM INVENTORY , VENDER • WHERE INVENTORY.V_CODE = VENDER.V_CODE;
การเลือกข้อมูลจาก Relation ที่สัมพันธ์กัน • ให้นักศึกษาแสดงชื่อผู้ผลิตสินค้าที่มีจำนวนในคลังสินค้ามากกว่า 150 • SELECT P_CODE , P_DESCRIPT , ON_HAND, PRICE,VENDER.V_CODE , V_NAME • FROM INVENTORY , VENDER • WHERE INVENTORY.V_CODE = VENDER.V_CODE AND ON_HAND > 150;
การเรียงลำดับข้อมูล • ใช้คำสั่ง ORDER BY ดังรูปแบบดังนี้ • SELECT ……FROM .........WHERE ORDER BY attribute 1 [ASC| DESC] [,attribute 2 [ASC | DESC]] • [,…..attribute n [ASC | DESC]]; • โดยที่ attribute หมายถึง ชื่อ attribute ที่ต้องการให้ข้อมูลใน Relation เรียงตาม • เช่น แสดงสินค้าในคลังสินค้าเรียงตามจำนวนคลังสินค้า และรหัสสินค้าตามลำดับ จากน้อยไปมาก
การเรียงลำดับข้อมูล • เช่น แสดงสินค้าในคลังสินค้าเรียงตามจำนวนคลังสินค้า และรหัสสินค้าตามลำดับ จากน้อยไปมาก • SELECT * FROM INVENTORY ORDER BY ON_HAND ASC , P_CODE ASC;
การเรียงลำดับข้อมูล • เช่น แสดงสินค้าในคลังสินค้าเรียงตามจำนวนคลังสินค้า และรหัสสินค้าตามลำดับ จากมากไปน้อย • SELECT * FROM INVENTORY ORDER BY ON_HAND DESC , P_CODE DESC;
ฟังก์ชันใน SQL • ฟังก์ชัน SUM ยกตัวอย่างเช่น จงหาผลรวมของจำนวนสินค้าทั้งหมดในคลังสินค้า จากตาราง INVENTORY • SELECT SUM (ON_HAND) FROM INVENTORY; • ยกตัวอย่างเช่น แสดงผลรวมของยอดคงคลังของสินค้าทั้งหมดในคลังสินค้า • SELECT DISTINCTROW SUM (UnitsInStock) AS SumOfUnitsInStock FROM PRODUCT;
ฟังก์ชันใน SQL • ฟังก์ชัน COUNT ใช้สำหรับนับจำนวนแถว ที่มีค่าเป็นไปตามเงื่อนไขที่กำหนด ยกตัวอย่างเช่น แสดงจำนวนรายการสินค้าทั้งหมดในคลังสินค้า • SELECT COUNT (P_CODE) FROM INVENTORY; • ยกตัวอย่างเช่น แสดงจำนวนรายการสินค้าทั้งหมดในคลังสินค้า • SELECT DISTINCTROW COUNT (UnitsInStock) AS CountOfUnitsInStock FROM PRODUCT;
ฟังก์ชันใน SQL • ฟังก์ชัน MIN ใช้สำหรับหาแถว ที่มีค่า Attribute ที่กำหนดน้อยที่สุด ยกตัวอย่างเช่น แสดงราคาต่ำสุดของสินค้าทั้งหมดในคลังสินค้า • SELECT MIN (PRICE) FROM INVENTORY; • ยกตัวอย่างเช่น แสดงราคาต่ำสุดของสินค้าทั้งหมดในคลังสินค้า • SELECT DISTINCTROW MIN (UnitsPrice) AS MinPrice FROM PRODUCT;