![]() |
|
![]() |
|
![]() |
การใช้ภาษาเอสคิวแอลกับฐานข้อมูลจากโครงร่างฐานข้อมูลเชิงสัมพันธ์ของระบบฐานข้อมูลงานซื้อขายสินค้าในซุปเปอร์สโตร์ในเรื่องที่ 7.2.2 ข้างต้น หากใช้ภาษาเอสคิวแอลเพื่อดำกนินการกับฐานข้อมูลจะประกอบด้วยขั้นตอนดังนี้ 1. การสร้างฐานข้อมูลและตารางขั้นตอนนี้เป็นการสร้างฐานข้อมูลและนำรีเลชันต่าง ๆ ที่ได้ทำการออกแบบไว้แล้วในเรื่องที่ 7.2.2 มาสร้างตารางในภาษาเอสคิวแอล โดยในที่นี้ขอเสนอตัวอย่างการสร้างตารางเพียง 4 รีเลชัน เท่านั้น คือ รีเลชันบริษัทขายส่ง รีเลชันสินค้า รีเลชันการขาย และรีเลชันใบเสร็จรับเงิน - รีเลชันบริษัทขายส่ง ประกอบด้วยแอททริบิวต์ รหัสบริษัท ชื่อบริษัท ที่อยู่ โทรศัพท์ โดยมี แอททริบิวต์รหัสบริษัทเป็นคีย์หลัก CREATE TABLE SALES_ORG (SALE_NO INTEGER NOT NULL UNIQUE, SALE_NAME CHAR(15) NOT NULL UNIQUE, SALE_ADD CHAR(20), SALE_TEL CHAR(9), PRIMARY KEY (SALE_NO)); - รีเลชันสินค้า ประกอบด้วยแอททริบิวต์ รหัสสินค้า ชื่อสินค้า สินค้าในคลัง ราคาขายต่อหน่วย จุดสั่งซื้อ โดยมีแอททริบิวต์รหัสสินค้าเป็นคีย์หลัก และแอททริบิวต์รหัสบริษัทเป็นคีย์นอกที่ใช้ในการเชื่อมโยงข้อมูลกับรีเลชันบริษัทขายส่ง CREATE TABLE GOOD (GOOD_NO CHAR(5) NOT NULL UNIQUE, GOOD_NAME CHAR(15) NOT NULL, STOCK INTEGER, SALE_PRI DECIMAL, REORD_PT INTEGER, SALE_NO INTEGER, PRIMARY KEY (GOOD_NO), FOREIGN KEY (SALE_NO) REFERENCES SALES_ORG (SALE_NO)); - รีเลชันใบเสร็จรับเงิน ประกอบด้วยแอททริบิวต์ เลขที่ใบเสร็จรับเงิน วันที่ออกใบเสร็จ โดยมี แอททริบิวต์เลขที่ใบเสร็จรับเงินเป็นคีย์หลัก CREATE BILL (BILL_NO INTEGER NOT NULL UNIQUE, BILL_DATE DATE, PRIMARY KEY (BILL_NO)); - รีเลชันการขาย ประกอบด้วยแอททริบิวต์ เลขที่ใบเสร็จรับเงิน รหัสสินค้า จำนวนที่ขาย โดยมี แอททริบิวต์เลขที่ใบเสร็จรับเงินและรหัสสินค้าประกอบกันเป็นคีย์หลัก แอททริบิวต์เลขที่ใบเสร็จรับเงินเป็น คีย์นอกที่ใช้ในการเชื่อมโยงข้อมูลกับรีเลชันใบเสร็จรับเงิน และแอททริบิวต์รหัสสินค้าเป็นคีย์นอกที่ใช้ใน การเชื่อมโยงข้อมูลกับรีเลชันสินค้า CREATE DETAIL (BILL_NO INTEGER NOT NULL, GOOD_NO CHAR(5), AMT_SALE INTEGER, PRIMARY KEY (BILL_NO, GOOD_NO), FOREIGN KEY (BILL_NO) REFERENCES BILL(BILL_NO), FOREIGN KEY (GOOD_NO) REFERENCES GOOD (GOOD_NO)); 2. การป้อนข้อมูลลงในตารางข้อมูลเมื่อได้ทำการสร้างตารางจากรีเลชันต่าง ๆ เรียบร้อยแล้ว ขั้นตอนนี้จะเป็นการป้อนข้อมูลลงใน ตารางข้อมูลทีละทูเพิล โดยในที่นี้ขอเสนอเฉพาะตัวอย่างการป้อนข้อมูลลงในตารางทั้ง 4 จากข้อ 1 คือ SALES_ORG GOOD BILL และ DETAIL - การป้อนข้อมูลลงในตาราง SALES_ORG หากต้องการป้อนข้อมูล รหัสบริษัท คือ 1001 ชื่อบริษัท คือ KIDSIRI ที่อยู่ คือ BANGKOK และโทรศัพท์ คือ 028585075 ทำได้ดังนี้ INSERT INTO SALES_ORG (SALE_NO, SALE_NAME, SALE_ADD, SALE_TEL) VALUES (1001, KIDSIRI, BANGKOK, 028585075); ผลจากคำสั่งดังกล่าว จะทำให้สดมภ์ SALE_NO มีค่า 1001 สดมภ์ SALE_NAME มีค่า KIDSIRI SALE_ADD มีค่า BANGKOK และสดมภ์ SALE_TEL มีค่า 028585075 บรรจุอยู่
- การป้อนข้อมูลลงในตาราง GOOD หากต้องการป้อนข้อมูล รหัสสินค้า คือ E-003 ชื่อสินค้า คือ VIDEO สินค้าในคลัง คือ 250 ราคาขายต่อหน่วย คือ 5500 จุดสั่งซื้อ คือ 20 และรหัสบริษัท คือ 1002 ทำได้ดังนี้ INSERT INTO GOOD (GOOD_NO, GOOD _NAME, STOCK, SALE_PRI, REORD_PT, SALE_NO) VALUES (E-003, VIDEO, 250, 5500, 20, 1002); ผลจากคำสั่งดังกล่าว จะทำให้สดมภ์ GOOD_NO มีค่า E-003 สดมภ์ GOOD _NAME มีค่า VIDEO ให้สดมภ์ STOCK มีค่า 250 สดมภ์ SALE_PRI มีค่า 5500 สดมภ์ REORD_PT มีค่า 20 และสดมภ์ SALE_NO มีค่า 1002 บรรจุอยู่
- การป้อนข้อมูลลงในตาราง BILL หากต้องการป้อนข้อมูล เลขที่ใบเสร็จรับเงิน คือ 200889 และวันที่ออกใบเสร็จ คือ 06/03/2001 ทำได้ดังนี้ INSERT INTO BILL (BILL_NO, BILL_DATE) VALUES (200889, 06/03/2001); ผลจากคำสั่งดังกล่าว จะทำให้สดมภ์ BILL_NO มีค่า 200889 สดมภ์ BILL_DATE มีค่า 06/03/2001 บรรจุอยู่
- การป้อนข้อมูลลงในตาราง DETAIL หากต้องการป้อนข้อมูล เลขที่ใบเสร็จรับเงิน คือ 200889 รหัสสินค้า คือ E-003 และจำนวนที่ขาย คือ 1 ทำได้ดังนี้ INSERT INTO GOOD (BILL_NO, GOOD_NO, AMT_SALE) VALUES (E-003, E-003, 1); ผลจากคำสั่งดังกล่าว จะทำให้สดมภ์ BILL_NO มีค่า 200889 สดมภ์ GOOD_NO มีค่า E-003 และสดมภ์ SALE_NO มีค่า 1002 บรรจุอยู่
เพื่อเป็นข้อมูลประกอบการเรียกค้นข้อมูลจากตารางข้อมูลในหัวข้อถัดไป ในที่นี้ขอกำหนดตัวอย่าง ข้อมูลในแต่ละตาราง ดังนี้ ตาราง SALES_ORG
ตาราง GOOD
ตาราง BILL
ตาราง DETAIL
3. การเรียกค้นข้อมูลจากตารางข้อมูลเมื่อทำการป้อนข้อมูลลงในตารางจากรีเลชันต่าง ๆ แล้ว ขั้นตอนนี้จะเป็นการค้นหาข้อมูลจากตารางข้อมูล โดยในที่นี้ขอเสนอตัวอย่างการค้นหาข้อมูลจากตารางทั้ง 4 จากข้อ 1 และข้อ 2 คือ SALES_ORG GOOD BILL และ DETAIL จำนวน 5 กรณี คือ ต้องการทราบว่า สินค้าชนิดใดมีราคาขายต่อหน่วยเท่าใด สามารถทำได้ดังนี้ SELECT GOOD_NO, GOOD_NAME, SALE_PRI FROM GOOD; ผลจากคำสั่งดังกล่าว คือ
ต้องการทราบหมายเลขโทรศัพท์ของบริษัทขายส่งที่อยู่ในจังหวัดนนทบุรี สามารถทำได้ดังนี้ SELECT SALE_NAME, SALE_ADD, SALE_TEL FROM SALE; ผลจากคำสั่งดังกล่าว คือ
ต้องการทราบว่า สินค้าชนิดใดมีปริมาณต่ำกว่าหรือเท่ากับจุดสั่งซื้อ และสินค้าดังกล่าวส่งมาจากบริษัทขายส่งใด SELECT GOOD.GOOD_NO, GOOD.GOOD_NAME, GOOD.STOCK, GOOD.REORD_PT, SALE_ORG.SALE_NAME, SALE_ORG.SALE_TEL FROM GOOD, SALE_ORG WHERE GOOD.STOCK <= GOOD.REORD_PT AND GOOD.SALE_NO = SALE_ORG.SALE_NO; ผลจากคำสั่งดังกล่าว คือ
ต้องการทราบรายการสินค้าที่จำหน่ายตามใบเสร็จรับเงินเลขที่ 200889 สามารถทำได้ดังนี้ SELECT BILL.BILL_NO, BILL.BILLDATE, DETAIL.GOOD_NO, GOOD.GOOD_NAME, DETAIL.AMT_SALE, GOOD.SALE_PRI * DETAIL.AMT_SALE FROM BILL, DETAIL, GOOD WHERE BILL.BILL_NO = 200889 AND BILL.BILL_NO = DETAIL.BILL_NO AND DETAIL.GOOD_NO = GOOD.GOOD_NO; ผลจากคำสั่งดังกล่าว คือ
ต้องการทราบยอดขายจากการจำหน่ายสินค้าในวันที่ 06/04/2001 สามารถทำได้ดังนี้ SELECT SUM(GOOD.SALE_PRI * DETAIL.AMT_SALE) FROM BILL, DETAIL, GOOD WHERE BILL.BILL_DATE = 06/04/2001 AND BILL.BILL_NO = DETAIL.BILL_NO AND DETAIL.GOOD_NO = GOOD.GOOD_NO; ผลจากคำสั่งดังกล่าว คือ
ทั้งนี้ ที่กล่าวมาข้างต้นเป็นเพียงการนำเสนอตัวอย่างของการใช้ภาษาเอสคิวแอลกับฐานข้อมูลเพียงบางกรณีและบางประเด็นเท่านั้น หากต้องการทราบรายละเอียดและการใช้งานเพิ่มเติมอาจทำการศึกษา รายละเอียดได้จากบทก่อนหน้านี้ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|