Black Moustache

วันพฤหัสบดีที่ 18 ธันวาคม พ.ศ. 2557

SQL

SQL หรือ Structured Query Language
เป็นภาษาที่ใช้ในการติดต่อกับฐานข้อมูลหรือพูดอีกอย่างก็คือ เป็นที่ใช้ในการสั่งภาษาที่ใช้ส่งให้ฐานข้อมูลกระทำการใด ๆ ตามคำสั่งที่เราสั่ง ซึ่งในการติดต่อฐานข้อมูลนั้น ไม่ว่าจะเป็น SQL Server , Microsoft Access , MySQL ,DB2 หรือแม้แต่ Oracle ก็จะต้องใช้คำสั่งภาษา SQL ในการควบคุมทั้งสิ้น และเราจะมาเรียนรู้ถึงคำสั่งพื้นฐาน ของ SQL ที่จำเป็นกัน

1.SELECT Statement
ประโยคคำสั่ง SELECT ได้รับการนำไปใช้ในการค้นหาข้อมูลในฐานข้อมูล และดึงข้อมูลที่เลือกตรงตามเกณฑ์ที่กำหนด ประโยคคาสั่ง SELECT มี 5 clause ให้เลือกใช้แต่มีเฉพาะ FROM เป็น clause บังคับ แต่ละ clause มีตัวเลือก พารามิเตอร์เป็นต้นให้ลือก

ตัวอย่าง
----------------------------------------------------------------
SELECT name, age, salary
FROM employee
WHERE age > 50;
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือกค่าทั้งหมดในคอลัมน์ name, age และ salary จาก table “employee ที่age มีค่ามากกว่า 50
NOTE: ต้องมีเครื่องหมาย semicolon(;) ปิดท้ายประโยค เพื่อชี้ว่าประโยคคำสั่ง SQL จบสมบูรณ์และพร้อมที่จะแปล

ตัวอย่าง
----------------------------------------------------------------
SELECT name, title, dept
FROM employee
WHERE title LIKE 'Pro%';
----------------------------------------------------------------
ประโยคคำสั่งข้างบนจะเลือก แถว/ค่า ในคอลัมน์ name, title และ dept จาก table “employee” ที่มีtitle เริ่มต้นด้วย ‘Pro’ ซึ่งจะส่งตำแหน่งงานของ Programmer หรือตำแหน่งอื่นที่ขึ้นต้นด้วย Pro ออกมา

2. GROUP BY
GROUP BY clause ใช้หาผลรวมของคอลัมน์จากแถวในคอลัมน์ที่ระบุและทำงานร่วมกับ aggregate function ที่ทำงานกับคอลัมน์ 1 คอลัมน์หรือมากกว่าเพื่อหาผลรวมของกลุ่มของแถวข้อมูล

ตัวอย่าง
การจัดกลุ่มภายในคอลัมน์เช่น table ‘item_order’ มีคอลัมน์ quantity ที่เก็บค่า 1, 2, 3 และอื่นๆ โดยต้องการหาค่าราคาสูงสุดของแต่ละค่าใน quantity สามารถเขียนคำสั่งได้ดังนี้
----------------------------------------------------------------
SELECT quantity, max(price)
FROM items_ordered
GROUP BY quantity;
----------------------------------------------------------------

ตัวอย่าง
ถ้าต้องการคำนวณและแสดงข้อมูลเฉพาะค่าเฉลี่ยของพนักงาน ที่มีเงินเดือนมากกว่า 20,000
----------------------------------------------------------------
SELECT dept, avg(salary)
FROM employee
GROUP BY dept
HAVING avg(salary) > 20000;
----------------------------------------------------------------

3. ORDER BY
ORDER BY clause เป็น clause ตัวเลือกซึ่งยินยอมให้แสดงผลลัพธ์ของคิวรี่ที่เรียงลำดับ (ทั้งเรียงลำดับจากนอ้อยไปมาก หรือ จากมากไปน้อย) ตามคอลัมน์ที่ระบุให้เรียงลำดับ
ASC = Ascending order (เรียงลำดับจากนอ้อยไปมาก) - เป็นค่าเริ่มต้น
DESC = Descending order (เรียงลำดับจากมากไปน้อย)

ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, dept, name, age, salary
FROM employee
WHERE dept = 'Sales'
ORDER BY salary;
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือก employee_id, dept, name, age และ salary จาก table “employee” ที่ค่า dept เท่ากับ ‘Sales’ และแสดงผลลัพธ์ในลำดับจากน้อยไปมากตาม salary ถ้าต้องการเรียงลำดับแบบหลายคอลัมน์ ต้องแยกคอลัมน์ด้วยเครื่องหมายจุลภาค

4. IN
IN เป็น operator ที่ใช้ทดสอบข้อมูลกับชุดของสมาชิก โดยทดสอบว่าค่าในคอลัมน์ (ที่ระบุก่อนคีย์เวิร์ด IN) อยู่ในรายการของค่าที่กำหนดให้หลังคีย์เวิร์ด IN

ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, name, salary
FROM employee
WHERE name IN ('Somchai', 'Sompong', 'Wanchai', 'Pornchai');
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงข้อมูล employee_id, name และ salary จาก table “employee” เฉพาะชื่อ (name) เป็นชื่อใดชื่อหนึ่งของ'Somchai', 'Sompong', 'Wanchai', 'Pornchai' ผลลัพธ์แสดงแถวข้อมูลจากการส่งออกค่าใดค่าหนึ่งในค่าเหล่านี้

5. BETWEEN
BETWEEN ใช้ทดสอบค่า (ที่ระบุก่อนคีย์เวิร์ด BETWEEN) อยู่ภายในช่วงของค่า 2 ค่าที่ระบุหลังคีย์เวิร์ด BETWEEN

ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, age, name, salary
FROM employee
WHERE age BETWEEN 30 AND 40;
----------------------------------------------------------------
ประโยคคำสั่งนี้เลือก employee_id, age, name และ salary จาก table“employee” ที่age อยู่ระหว่าง 30 ถึง 40

6. Function



ตัวอย่าง
----------------------------------------------------------------
SELECT round(salary), name
FROM employee;
----------------------------------------------------------------
ประโยคคำสั่งนี้ปรับค่า salary ให้เป็นจำนวนเต็มที่ใกล้ที่สุด และ name จาก table “employee”

7. Aggregate Function
aggregate function ใช้คำนวณเทียบกับการส่งออกคอลัมน์ของข้อมูลตัวเลขจากประโยคคำสั่ง SELECT ฟังก์ชันกลุ่มนี้ใช้หาผลรวมพื้นฐานของคอลัมน์ที่เจาะจงจากข้อมูลที่เลือกมา การทำงานของฟังก์ชันต้องใช้GROUP BY clause เพื่อครอบคลุมการทำงาน แต่ฟังก์ชันสามารถใช้ได้โดยไม่มี GROUP BY clause


ตัวอย่าง
----------------------------------------------------------------
SELECT AVG(salary)
FROM employee;
----------------------------------------------------------------
ประโยคคำสั่งจะส่งออกผลลัพธ์ที่เก็บค่าเฉลี่ยของทุกข้อมูลที่ส่งออกมาในคอลัมน์ salary จาก table “employee”

ตัวอย่าง
----------------------------------------------------------------
SELECT AVG(salary)
FROM employee;
WHERE title = 'Programmer';
----------------------------------------------------------------
ประโยคคำสั่งจะส่งออกผลลัพธ์ที่เก็บค่าเฉลี่ยเงินเดือน (salary) ของพนักงานที่มีตำแหน่ง (title) เป็น ‘Programmer’

8. JOIN
การค้นหาและเลือกข้อมูลตามหัวข้อที่ผ่านมาเป็นการทำงานกับ table เดียว ในขณะที่การทำงานจริงต้องมีการเลือกข้อมูลจากหลาย table เพื่อแสดงสารสนเทศที่ต้องการได้เนื่องจากหลักการพื้นฐานของ Relational Database System ให้ออกแบบการจัดเก็บข้อมูลในแต่ละ table สำหรับ entity เดียว เพื่อขจัดการเก็บข้อมูลที่ซ้ำซ้อนแล้วใช้ความสัมพันธ์ของ table แสดงผลเป็นสารสนเทศที่ต้องการ

ตัวอย่าง
----------------------------------------------------------------
SELECT customer_info.firstname, customer_info.lastname, purchases.item
FROM customer_info, purchases
WHERE customer_info.customer_number = purchases.customer_number;
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงผลลัพธ์ของคอลัมน์firstname และ lastname จาก table “customer_info” และคอลัมน์ item จาก table “purchases” โดยเชื่อมระหว่าง table ด้วยคอลัมน์customer_number ของ 2 table
Note: แต่ละคอลัมน์นำหน้าด้วย ชื่อ table และจุด ซึ่งไม่มีความจำเป็นในทุก
กรณีแต่จำเป็นถ้าคอลัมน์ที่เรียกมีอยู่ใน 2 table การเขียนด้วยรูปแบบนี้เป็นแบบแผนการเขียนที่ดีในการป้องกันความสับสนในเรื่องที่มาของคอลัมน์แต่ละ table

9. AND operator
AND operator ใช้เชื่อม 2 เงื่อนไข หรือมากกว่าและแสดงผลลัพธ์เฉพาะที่สอดคล้องกับเงื่อนไขที่กำหนดทั้งหมด
AND สามารถใช้เชื่อมเงื่อนไขใน WHERE clause ตั้งแต่2 เงื่อนไขขึ้นไป โดย
การแสดงแถวข้อมูลตามเงื่อนไขต้องเป็นจริงทุกค่า

ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, name, title, salary
FROM employee
WHERE salary >= 50000.00 AND title = 'Programmer';
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงข้อมูล employee_id, name, title และ salary จาก table
“employee” ที่เงินเดือน (salary) มากกว่าหรือเท่ากับ 50,000 และ ตำแหน่ง (title) เท่ากับ Programmer’ ซึ่งข้อมูลสามารถแสดงออกมา เมื่อเงื่อนไขทั้งสอง เป็นจริง ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงจะไม่แสดงออกมา

10. OR operator
OR operator ใช้เชื่อม 2 เงื่อนไข หรือมากกว่าและแสดงผลลัพธ์เมื่อข้อมูลสอดคล้องกับเงื่อนไขใดเงื่อนไขจากเงื่อนไขที่กำหนดทั้งหมด
OR สามารถใช้เชื่อมเงื่อนไขใน WHERE clause ตั้งแต่2 เงื่อนไขขึ้นไป โดยสามารถแสดงแถวข้อมูลเมื่อข้อมูลมีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง หรือทุกเงื่อนไขเป็นจริง

ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, name, title, salary
FROM employee
WHERE (title = 'Sales') OR (title = 'Programmer');
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือก employee_id, name, title และ salary จาก table “employee” โดยตำแหน่ง (title) เท่ากับ ‘Sales’ หรือตำแหน่งเท่ากับ ‘Programmer’

Note : การเขียนเงื่อนไขในวงเล็บช่วยให้การอ่านคำสั่งง่ายขึ้น

**ที่มา : SQL

ข้อสอบ O-Net วิชาการงานอาชีพและเทคโนโลยี ม.6

1.ความละเอียดของจอภาพสามารถบอกได้ด้วยปัจจัยในข้อใด (2551)
1. CRT
2. Dot pitch
3. Refresh rate
4. Color quality

2.ใช้อุปกรณ์คอมพิวเตอร์อย่างไรจึงช่วยลดภาวะโลกร้อน (2551)
1. ปิดเครื่องเมื่อไม่ใช้งาน และพิมพ์งานเมื่อจำเป็น
2. เลือกใช้จอแอลซีดีและปรับปรุงซอฟต์แวร์ให้ทันสมัย
3. ใช้คอมพิวเตอร์วันละ 1 ชม. และรักษาความสะอาดอยู่เสมอ
4. ไม่เชื่อมต่อระบบเครือข่ายและ ใช้เครื่องพิมพ์แบบ inkjet เท่านั้น

3.ข้อใดเป็นความหมายของภาษาเครื่อง (2552)
1. ภาษาที่ใช้เขียนโปรแกรม เช่น ภาษาจาวา
2. ภาษาที่ใช้เขียนโปรแกรมเพื่อควบคุมอุปกรณ์คอมพิวเตอร์โดยเฉพาะ
3. ภาษาที่ประกอบด้วยตัวเลขล้วนซึ่งคอมพิวเตอร์ใช้ประมวลผลได้ทันที
4. ภาษาที่สร้างขึ้นเพื่ออำนวยความสะดวกในการเขียนคำสั่งมาจากคำศัพท์
ภาษาอังกฤษ

4.ข้อใดต่อไปนี้ไม่ใช่ประโยชน์โดยตรงของการพาณิชย์อิเล็กทรอนิกส์ (2552)
1. ลดค่าใช้จ่ายในการลงทุน
2. สามารถใช้บริการได้ทุกที่ทุกเวลา
3. สามารถคำนวณรายรับ รายจ่ายและภาษีได้ละเอียดและถูกต้อง
4. สามารถให้ข้อมูลลูกค้าได้อย่างละเอียดและถูกต้องเป็นปัจจุบัน

5.อุปกรณ์ชนิดใดต่อไปนี้ไม่สามารถเก็บแฟ้มภาพขนาด 144 เมกะไบต์ได้ (2552)
1. แผ่นดีวีดี
2. แผ่นดิสเก็ต
3. แผ่นซีดีอาร์
4. แผ่นซีดีอาร์ดับบลิว

6.ประเทศกำลังพัฒนามีการใช้งานระบบเครือข่ายการสื่อสารไร้สายอย่างกว้างขวาง
เนื่องมาจากสาเหตุหลักใด (2552)
1. การวางสายระบบเครือข่ายสื่อสารใช้งบลงทุนสูง
2. อุปกรณ์เชื่อมต่อเครือข่ายไร้สายมีราคาถูก หาซื้อง่าย
3. อุปกรณ์เชื่อมต่อเครือข่ายไร้สายมีขนาดเล็ก น้ำหนักเบา ติดตั้งง่าย
4. สามารถเคลื่อนย้ายอุปกรณ์คอมพิวเตอร์ที่เชื่อมต่อกับเครือข่ายการสื่อสาร
ไร้สายได้สะดวก

7.รูปนี้เป็นหัวเชื่อมต่อประเภทใด และใช้สำหรับงานประเภทใด (2553)



1. VGA ใช้ต่อคอมพิวเตอร์เข้ากับจอแสดงผล
2. DVI ใช้ต่อคอมพิวเตอร์เข้ากับจอแสดงผล
3. USB ใช้ต่อคอมพิวเตอร์เข้ากับอุปกรณ์เสริม
4. FireWire ใช้ต่อคอมพิวเตอร์เข้ากับอุปกรณ์เสริม

8. ข้อใดคือวิธีทำรายงานโดยค้นคว้าข้อมูลจากอินเทอร์เน็ตที่ถูกต้อง (2554)
1.ค้นหาบทความในอินเตอร์เน็ตโดยใช้ search engine แล้วคัดลอกมาทำเป็นรายงาน
2.ค้นข้อมูลที่เกี่ยวข้องโดยใช้ search engine แล้วคัดลอกมาทำรายงานพร้อมอ้างอิงเอกสารต้นฉบับ
3. ค้นข้อมูลเพื่อทำรายงานโดยใช้ search engine  แล้วคัดลอกมาเป็นรายงานพร้อมอ้างอิง
search engine
4. ค้นข้อมูลที่เกี่ยวข้องโดยใช้ search engine  แล้วอ่านข้อความ  สรุปใจความรายงาน        พร้อมอ้างอิงเอกสารต้นฉบับ

9. ข้อใดไม่ใช่ความผิดทางตามพระราชบัญญัติว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. 2550 (2554)
1.รากแก้ว บันทึกรหัสผ่านของพนักงานการเงินแล้วนำไปใช้ส่วนตัว
2. เรยา มีอาชีพเก็บของเก่าขายนำวีซีดีเรื่องมงกุฎดอกส้มที่เก็บได้ออกจำหน่าย
3. หมอมนัส โพสต์ข้อความบนกระทู้ เพื่อเปิดเผยความผิดปกติทางเพศของคนไข้
4.เด่นจันทร์ทำรายงานโดยนำผลงานวิจัยจากอินเตอร์เน็ตแล้วอ้างถึงเจ้าของผลงาน
5.ปรุงฉัตร รวบรวมหมายเลขโทรศัพท์ของผู้ที่ติดต่อแล้วขายต่อบริษัทประชาสัมพันธ์

ใช้รูปต่อไปนี้ตอบคำถามข้อ 10


10.ในระบบฐานข้อมูลแบบสัมพันธ์ตามที่กำหนดช่องข้อมูล(Field) ใด เหมาะสมที่จะใช้เป็น Foreign key (2557)
1 ชื่อสินค้าในตารางสินค้า
2 ประเภทสินค้าในตารางสินค้า
3 รหัสสินค้าในตารางสินค้า
4 รหัสตัวแทนจำหน่ายในตารางสินค้า


**ที่มา : 2551 2552 2553 2554 2557