คอมพิวเตอร์, ประเภทไฟล์
SQL ที่แตกต่างกัน: คำอธิบายตัวอย่างคุณสมบัติ
บ่อยครั้งเมื่อคุณใช้ SQL เพื่อดึงข้อมูลจากตารางที่ผู้ใช้จะได้รับข้อมูลที่ซ้ำซ้อนคือการดำรงอยู่ของแถวที่ซ้ำกันเหมือนอย่าง เพื่อหลีกเลี่ยงสถานการณ์นี้ใช้ SQL อาร์กิวเมนต์ที่แตกต่างกันในประโยคเลือก บทความนี้จะหารือตัวอย่างของการใช้อาร์กิวเมนต์นี้เช่นเดียวกับสถานการณ์ที่แอพลิเคชันควรจะถูกทอดทิ้งโดยการโต้แย้ง
ก่อนที่เราจะดำเนินการพิจารณาตัวอย่างที่เฉพาะเจาะจงในการสร้างฐานข้อมูลที่จำเป็นในคู่ของตาราง
ตารางการเตรียมความพร้อม
ลองนึกภาพว่าเรามีฐานข้อมูลเก็บข้อมูลเกี่ยวกับวอลล์เปเปอร์ที่นำเสนอในสองตาราง Oboi นี้ตาราง (วอลล์เปเปอร์) กับเขตข้อมูล ID (ระบุเฉพาะ) ประเภท (ประเภทของวอลล์เปเปอร์ -. กระดาษไวนิล ฯลฯ ) สี (สี) ซึ่งเป็นโครงสร้าง (โครงสร้าง) และราคา (ราคา) และโต๊ะ Ostatki (ตกค้าง) กับเขต id_oboi (อ้างอิงถึงตัวบ่งชี้ที่ไม่ซ้ำกันในตาราง Oboi) และนับ (จำนวนม้วนในสต็อก)
กรอกตารางข้อมูล ในตารางเพิ่มวอลล์เปเปอร์ที่ 9 บันทึก:
Oboi | ||||
รหัส | ชนิด | สี | struct | ราคา |
1 | กระดาษ | หลากสี | นูน | 56.9 |
2 | กระดาษสองชั้น | ผ้าขนสัตว์สีธรรมชาติ | เรียบ | 114.8 |
3 | เรซิน | สีส้ม | นูน | 504 |
4 | ขนแกะ | ผ้าขนสัตว์สีธรรมชาติ | นูน | 1,020.9 |
5 | กระดาษสองชั้น | ผ้าขนสัตว์สีธรรมชาติ | เรียบ | 150.6 |
6 | กระดาษ | หลากสี | เรียบ | 95.4 |
7 | เรซิน | สีน้ำตาล | เรียบ | 372 |
8 | ขนแกะ | ขาว | นูน | 980.1 |
9 | ผ้า | สีชมพู | เรียบ | 1,166.5 |
ตารางที่มีซาก - เก้าบันทึก:
Ostatki | |
id_oboi | นับ |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
เราดำเนินการต่อไปรายละเอียดของการสั่งซื้อที่แตกต่างกันในการ SQL
สถานที่ที่แตกต่างกันในการเลือกข้อ
อาร์กิวเมนต์ที่แตกต่างกันควรจะวางไว้ทันทีหลังจากที่เลือกคำหลักในการค้นหา เขานำไปใช้กับคอลัมน์ทั้งหมดที่ระบุไว้ในประโยคที่เลือกเพราะมันจะได้รับการยกเว้นจากผลแบบสอบถามสุดท้ายคือสตริงที่เหมือนกันอย่างแน่นอน ดังนั้นเมื่อจะเพียงพอที่จะระบุเมื่อเขียน SQL «เลือกที่แตกต่างกัน»คำขอ ยกเว้นการใช้ฟังก์ชั่นรวมภายในที่แตกต่างกันที่มีลักษณะที่เล็ก ๆ น้อย ๆ ในภายหลัง
มันควรจะจำว่าส่วนใหญ่ของฐานข้อมูลและไม่รู้จักประเภทของคำขอ:
SELECT Ostatki.Count ที่แตกต่างกัน, Oboi ที่แตกต่างกัน. * จาก Oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
มีไม่ได้พิจารณาข้อโต้แย้งหลายครั้งหรือครั้งเดียวที่ระบุไว้ แต่ก่อนที่สองสามหรือคอลัมน์ที่เลือกอื่น คุณจะได้รับข้อผิดพลาดหมายถึงข้อผิดพลาดในไวยากรณ์
แอพลิเคชันที่แตกต่างกันแบบสอบถามในมาตรฐาน
เป็นที่ชัดเจนว่าด้วยการสร้างตารางโครงสร้างที่เหมาะสมและเติมเต็มพวกเขาภายในตารางเดียวยกเว้นสถานการณ์เมื่อมีสตริงที่เหมือนกันอย่างแน่นอน ดังนั้นการดำเนินการสอบถาม«เลือกที่แตกต่างกัน *»กับตัวอย่างของตารางหนึ่งจะทำไม่ได้
พิจารณาสถานการณ์เมื่อเราต้องการที่จะรู้ว่าสิ่งที่ประเภทเรามีวอลล์เปเปอร์เพียงเพื่อความสะดวกในการจัดเรียงตามประเภท:
SELECT Oboi.type จากการสั่งซื้อ Oboi โดยแบ่งตามชนิด |
และได้รับผล:
ชนิด |
กระดาษ |
กระดาษ |
กระดาษสองชั้น |
กระดาษสองชั้น |
เรซิน |
เรซิน |
ผ้า |
ขนแกะ |
ขนแกะ |
เท่าที่เห็นในตารางมีแถวที่ซ้ำกัน ถ้าเราเพิ่มข้อเสนอเลือกที่แตกต่าง:
SELECT Oboi.type ที่แตกต่างกัน จากการสั่งซื้อ Oboi โดยแบ่งตามชนิด |
เราได้รับผลที่ตามมาโดยไม่ต้องทำซ้ำ:
ชนิด |
กระดาษ |
กระดาษสองชั้น |
เรซิน |
ผ้า |
ขนแกะ |
ดังนั้นหากต้องป้อนข้อมูลในตารางแล้วทันทีหลังจากที่โทรศัพท์หรือคำขอของผู้ซื้อที่เราสามารถตอบว่าวอลล์เปเปอร์ของเหลวไฟเบอร์กลาสและวอลล์เปเปอร์คริลิคที่มีอยู่ในร้านไม่ได้ ระบุว่าช่วงของร้านค้ามักจะไม่ จำกัด ถึงหนึ่งร้อยวอลล์เปเปอร์ดูรายการประเภทที่ไม่ซ้ำกันจะค่อนข้างใช้แรงงานเข้มข้น
การประยุกต์ใช้ฟังก์ชั่นที่แตกต่างกันรวมภายใน
อาร์กิวเมนต์ที่แตกต่างกัน SQL สามารถใช้กับฟังก์ชันการรวมใด ๆ แต่สำหรับมินและแม็กซ์การประยุกต์ใช้จะไม่มีผลกระทบ แต่เมื่อคำนวณผลรวมหรือค่าเฉลี่ยจะไม่ค่อยมีสถานการณ์ที่ไม่มีใครจะต้องคำนึงถึงการเกิดซ้ำที่
สมมติว่าเราต้องการตรวจสอบความจุของคลังสินค้าของเราและจะส่งคำขอนี้คำนวณจำนวนรวมของขดลวดในสต็อก:
รวม SELECT (Ostatki.count) จาก Ostatki |
ที่ขอจะให้คำตอบที่ 143 แต่ถ้าเราจะเปลี่ยนไป:
รวม SELECT (Ostatki.count ที่แตกต่างกัน) จาก Ostatki |
เราได้รับทั้งหมด 119 เป็นวอลล์เปเปอร์สำหรับตัวเลขส่วน 3 และ 7 มีในสต็อกในปริมาณที่เท่ากัน แต่ก็เป็นที่ชัดเจนว่าคำตอบคือผิด
ส่วนใหญ่มักจะใช้ใน SQL จำนวนฟังก์ชั่นที่แตกต่างกัน ดังนั้นเราสามารถหาประเภทที่ไม่ซ้ำกันหลายวิธีของวอลล์เปเปอร์ที่เราจะมี:
นับ SELECT (Oboi.type ที่แตกต่างกัน) จาก Oboi |
และได้รับผลจากการที่ 5 - กระดาษและสองชั้นสามัญไวนิลและผ้าไม่ทอ แน่นอนทั้งหมดเห็นโฆษณาเช่น: "แต่เรามีกว่า 20 ชนิดที่แตกต่างกันของวอลล์เปเปอร์" ซึ่งมีความหมายว่าร้านนี้เป็นม้วนไม่เพียงไม่กี่โหลและความหลากหลายของวอลล์เปเปอร์แบบที่ทันสมัย
เป็นที่น่าสนใจในการสอบถามเดียวกันคุณสามารถระบุฟังก์ชั่นหลายตัวเช่นจำนวนแอตทริบิวต์ที่แตกต่างและไม่ได้ นั่นคือสถานการณ์ที่เดียวที่แตกต่างกันใน Select'e สามารถจะนำเสนอหลายครั้ง
เมื่อมีการยกเลิกการใช้อาร์กิวเมนต์
จากการใช้งานของ SQL อาร์กิวเมนต์ที่แตกต่างกันควรจะถูกทอดทิ้งในหนึ่งในสองกรณี
- คุณทำการเลือกของตารางและมีความมั่นใจในมูลค่าที่ไม่ซ้ำกันในแต่ละ ในกรณีนี้การใช้งานของการโต้แย้งไม่เหมาะสมเพราะเป็นภาระเพิ่มเติมบนเซิร์ฟเวอร์หรือลูกค้า (ขึ้นอยู่กับชนิดของ DBMS) ที่
- คุณกลัวการสูญเสียข้อมูลของคุณ ให้เราอธิบาย
เจ้านายสมมติว่าขอให้คุณรายการวอลล์เปเปอร์ที่คุณมีมีข้อบ่งชี้ในสองคอลัมน์ - ประเภทและสี ออกจากนิสัยคุณจะให้ข้อโต้แย้งที่แตกต่าง:
SELECT Oboi.type ที่แตกต่างกัน Oboi.color จาก Oboi ORDER BY Oboi.type |
และ - สูญเสียข้อมูลบางส่วน:
ชนิด | สี |
กระดาษ | หลากสี |
กระดาษสองชั้น | ผ้าขนสัตว์สีธรรมชาติ |
เรซิน | สีน้ำตาล |
เรซิน | สีส้ม |
ผ้า | สีชมพู |
ขนแกะ | ผ้าขนสัตว์สีธรรมชาติ |
ขนแกะ | ขาว |
มันอาจจะให้ความรู้สึกว่าวอลล์เปเปอร์กระดาษ (แบบธรรมดาและชั้นสอง) เราได้เพียงหนึ่งใจในความเป็นจริงแม้จะอยู่ในตารางเล็ก ๆ ของเราสองบทความ (ส่งผลที่แตกต่างกันโดยไม่ได้):
ชนิด | สี |
กระดาษ | หลากสี |
กระดาษ | หลากสี |
กระดาษสองชั้น | ผ้าขนสัตว์สีธรรมชาติ |
กระดาษสองชั้น | ผ้าขนสัตว์สีธรรมชาติ |
เรซิน | สีน้ำตาล |
เรซิน | สีส้ม |
ผ้า | สีชมพู |
ขนแกะ | ขาว |
ขนแกะ | ผ้าขนสัตว์สีธรรมชาติ |
ดังนั้นในขณะที่การเขียนคำขอกับการโต้แย้งความต้องการที่แตกต่างใด ๆ ที่จะต้องระมัดระวังและมีอำนาจในการตัดสินใจเกี่ยวกับการประยุกต์ใช้ขึ้นอยู่กับงาน
ทางเลือกที่แตกต่างกัน
ตรงกันข้ามกับข้อโต้แย้งที่แตกต่างกัน - อาร์กิวเมนต์ทั้งหมด ในการประยุกต์ใช้แถวที่ซ้ำกันจะถูกเก็บไว้ แต่เป็นฐานข้อมูลเริ่มต้นและพบว่ามันมีความจำเป็นที่จะแสดงค่าทั้งหมดอาร์กิวเมนต์ทั้งหมด - มันค่อนข้างคัดเลือกกว่าอาร์กิวเมนต์ฟังก์ชั่นที่เกิดขึ้นจริง
Similar articles
Trending Now