SQL ย่อมาจาก ภาษาของแบบสอบถามที่มีโครงสร้าง ; มันเป็นภาษาฐานข้อมูลที่ครอบคลุมหรือประกาศที่ใช้สำหรับการเข้าถึงข้อมูลจากฐานข้อมูล
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | WHERE | การมี |
---|---|---|
ขั้นพื้นฐาน | นำมาใช้ในการดำเนินงานแถว | นำมาใช้ในการดำเนินงานคอลัมน์ |
นำไปใช้กับ | แถวเดียว | แถวหรือกลุ่มสรุป |
การดึงข้อมูล | มันดึงข้อมูลเฉพาะจากแถวที่เฉพาะเจาะจงตามเงื่อนไข | ในตอนแรกข้อมูลที่สมบูรณ์ถูกดึงออกมาแล้วแยกออกตามเงื่อนไข |
ฟังก์ชั่นรวม | ไม่สามารถปรากฏในส่วนคำสั่ง WHERE | สามารถปรากฏในข้อ HAVING |
ใช้กับ | SELECT และข้อความอื่น ๆ เช่น UPDATE, DELETE หรือข้อความใดข้อความหนึ่ง | ไม่สามารถใช้โดยไม่มีคำสั่ง SELECT |
ทำหน้าที่เป็น | กรองก่อน | โพสต์กรอง |
จัดกลุ่มตาม | มาหลังจากไหน | มาหลังจากที่มี |
คำจำกัดความของ Where Clause
ส่วน คำสั่ง SQL WHERE จะใช้เพื่ออธิบายเงื่อนไขในเวลาที่ดึงข้อมูลจากตารางเดียวหรือโดยการเข้าร่วมกับหลายตาราง มันจะส่งกลับเฉพาะค่าจากตารางหากเงื่อนไขที่กำหนดเป็นจริง WHERE clause ถูกใช้เพื่อแทรกซึมเร็กคอร์ดและดึงเฉพาะเร็กคอร์ดที่จำเป็นเท่านั้น
SQL ยังใช้การเชื่อมต่อแบบลอจิคัล และ หรือ ไม่ อยู่ในส่วนคำสั่ง WHERE ซึ่งเป็นที่รู้จักกันว่าเป็นเงื่อนไข บูลีน เงื่อนไขจะต้องเป็นจริงเพื่อดึงสิ่งอันดับ ตัวถูกดำเนินการของนิพจน์เชื่อมต่อแบบลอจิคัลเกี่ยวข้องกับตัวดำเนินการเปรียบเทียบเช่น <, <=, >, > =, = และ . ตัวดำเนินการเปรียบเทียบเหล่านี้เปรียบเทียบสตริงและนิพจน์ทางคณิตศาสตร์ มันสามารถใช้ในคำสั่ง SELECT เช่นเดียวกับในคำสั่ง UPDATE, DELETE
ลองยกตัวอย่าง ตารางที่แสดงด้านล่างชื่อเป็นตาราง ' ขาย ' ประกอบด้วยแอตทริบิวต์ ' ผลิตภัณฑ์ ' และ ' Sales_amount '
เลือกผลิตภัณฑ์ผลรวม (Sales_amount) เป็นผลรวมจากการขาย WHERE ผลิตภัณฑ์ในกลุ่ม ('โทรศัพท์', 'ลำโพง') ตามผลิตภัณฑ์;
ความหมายของการมีข้อ
SQL มีข้อ HAVING ซึ่งสามารถใช้ร่วมกับ GROUP BY clause ได้ ส่วนคำสั่ง HAVING นี้ช่วยในการดึงค่าสำหรับกลุ่มที่ปฏิบัติตามเงื่อนไขบางประการ WHERE clause สามารถใช้ร่วมกับ HAVING clause ระหว่างการเลือก WHERE clause จะกรองแต่ละแถว จากนั้นแถวจะถูกจัดกลุ่มและทำการคำนวณรวมในที่สุด HAVING clause จะกรองกลุ่ม
มันจะทำงานเหมือนกับ WHERE เมื่อไม่ได้ใช้คำหลัก GROUP BY ฟังก์ชั่นกลุ่มเช่น min, max, avg, sum และ count สามารถปรากฏได้ในสองข้อเท่านั้น: SELECT และ HAVING clause มันมีเงื่อนไขในสิ่งอันดับที่สอดคล้องกับแต่ละค่าในกลุ่มของคุณลักษณะ ชุดระเบียนเฉพาะที่ตรงตามเงื่อนไขจะแสดงเป็นผลลัพธ์
ที่นี่เรากำลังยกตัวอย่างเช่นเดียวกับคำสั่ง WHERE และพิจารณาตาราง ' ขาย ' เดียวกัน เมื่อเราต้องการคำนวณ Total_sales ของโทรศัพท์และลำโพงโดยใช้ HAVING clause เราจะเขียนแบบสอบถามต่อไปนี้
เลือกผลิตภัณฑ์ผลรวม (Sales_amount) ตามยอดรวมจากกลุ่มการขายแยกตามผลิตภัณฑ์ที่มีผลิตภัณฑ์ใน ('โทรศัพท์', 'ลำโพง');
เคียวรีสร้างเอาต์พุตต่อไปนี้ซึ่งผลิตภัณฑ์ถูกเรียกก่อนจากนั้นจึงรวมฟังก์ชัน (ผลรวม) และที่กลุ่มสุดท้ายจะถูกกรองซึ่งแตกต่างจาก WHERE clause
เมื่อเราต้องการค้นหาเฉพาะผลิตภัณฑ์ที่มี Total_sales มากกว่า 1, 000 แบบสอบถามสามารถเขียนเป็น:
เลือกผลิตภัณฑ์ผลรวม (Sales_amount) ตามยอดรวมจากกลุ่มการขายแยกตามผลิตภัณฑ์ที่มีผลรวม (ยอดขาย _ จำนวน)> 1, 000;
ผลผลิตที่ได้คือ:
สิ่งนี้ไม่สามารถทำได้โดยใช้คำสั่ง WHERE ทั้งๆที่มี HAVING และสร้างข้อความแสดงข้อผิดพลาดเพราะ WHERE clause ไม่สามารถใช้กับฟังก์ชันรวมได้
ความแตกต่างที่สำคัญระหว่างที่และกับข้อ
- WHERE clause ถูกใช้ในการดำเนินการแถวและใช้กับแถวเดียวขณะที่ HAVING clause ถูกใช้ในการดำเนินการของคอลัมน์และสามารถนำไปใช้กับแถวหรือกลุ่มที่สรุปได้
- ในส่วนคำสั่ง WHERE ข้อมูลที่ต้องการจะถูกดึงมาตามเงื่อนไขที่ใช้ ในทางตรงกันข้ามประโยคที่มีการดึงข้อมูลทั้งหมดแล้วการแยกจะทำตามเงื่อนไข
- ฟังก์ชันการรวมเช่น min, sum, max, avg ไม่สามารถปรากฏพร้อมกับ WHERE clause ได้ เมื่อเทียบกับฟังก์ชั่นเหล่านี้สามารถปรากฏในข้อ HAVING
- ส่วนคำสั่ง HAVING ไม่สามารถใช้ได้หากไม่มีคำสั่ง SELECT ในทางกลับกัน WHERE สามารถใช้กับ SELECT, UPDATE, DELETE และอื่น ๆ ได้
- WHERE clause จะทำหน้าที่เป็นตัวกรองล่วงหน้าในขณะที่ HAVING clause ทำหน้าที่เป็นตัวกรองหลัง
- WHERE clause เมื่อใช้กับ GROUP BY มาก่อน GROUP BY นี่หมายความว่าแถวตัวกรอง WHERE ก่อนทำการคำนวณแบบรวมจะดำเนินการ ในทางกลับกัน HAVING มาหลังจาก GROUP BY ซึ่งหมายความว่ามันจะกรองหลังจากทำการคำนวณแบบรวม
ข้อสรุป
WHERE และ HAVING clause ทำงานในลักษณะเดียวกันยกเว้นคุณลักษณะเพิ่มเติมที่ HAVING clause ได้รับความนิยม ส่วนคำสั่ง HAVING สามารถทำงานกับฟังก์ชันรวมได้อย่างมีประสิทธิภาพในขณะที่ WHERE ไม่สามารถใช้งานฟังก์ชันรวมได้