การใช้ไวยากรณ์ SELECT ใน ADO
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:54:37
เลือกนิพจน์
ต่อไป มาดูนิพจน์ SELECT กัน SELECT ใช้ในการค้นหาระเบียนที่ตรงตามเงื่อนไขที่ระบุในตาราง
SELECT [คำสำคัญ] { * |. ชื่อตาราง.* |. [ชื่อตาราง] ชื่อฟิลด์ 1 [AS alias 1] [, [ชื่อตาราง] ชื่อฟิลด์ 2 [AS alias 2] [, ...]]}
จาก นิพจน์ตาราง [, ...] [ในตารางภายนอก]
[ที่ไหน... ]
[จัดกลุ่มตาม... ]
[มี...]
[เรียงตาม... ]
[ด้วยตัวเลือกการเข้าถึงความเป็นเจ้าของ]
คำสำคัญ: สามารถใช้เพื่อจำกัดจำนวนระเบียนที่ส่งคืน และสามารถตั้งค่าเป็น ALL, DISTINCT, DISTINCTROW หรือ TOP หากไม่มีการระบุเพรดิเคต ค่าเริ่มต้นคือ ALL
*: เลือกทุกช่อง
นามแฝง: แทนที่ชื่อฟิลด์เดิมในตาราง
นิพจน์ตาราง: ชื่อตารางที่คั่นด้วยเครื่องหมายจุลภาคตั้งแต่หนึ่งชื่อขึ้นไป
ตารางภายนอก: หากไม่มีตารางอยู่ในตารางปัจจุบัน จะต้องตั้งชื่อตารางที่มีตารางในการดำเนินการของตาราง
การดำเนินการนิพจน์ SELECT จะไม่เปลี่ยนแปลงข้อมูลที่มีอยู่ในตาราง
ไวยากรณ์พื้นฐานที่สุดของนิพจน์ SELECT คือ:
SELECT * FROM นิพจน์ตาราง
คุณสามารถใช้เครื่องหมายดอกจัน (*) เพื่อเลือกเขตข้อมูลทั้งหมดของตารางได้ ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะเลือกฟิลด์ทั้งหมดในตาราง [ผลิตภัณฑ์]:
เลือก * จากผลิตภัณฑ์
เมื่อชื่อฟิลด์มีการเว้นวรรคหรือเครื่องหมายวรรคตอน จะต้องอยู่ในวงเล็บ [ ] ตัวอย่างเช่น:
SELECT [ผลิตภัณฑ์คอมพิวเตอร์]
ถ้าชื่อเขตข้อมูลในส่วนคำสั่ง FROM มีหลายตาราง คุณต้องเพิ่มชื่อตารางและตัวดำเนินการจุด (.) ก่อนชื่อเขตข้อมูล นั่นคือ ชื่อตาราง ชื่อเขตข้อมูล ตัวอย่างเช่น ตัวอย่างต่อไปนี้เลือกฟิลด์ [ราคา] ของตาราง [ผลิตภัณฑ์] และฟิลด์ [ปริมาณ] ของตาราง [คำสั่งซื้อ]:
เลือก product.price, order.quantity
จากผลิตภัณฑ์คำสั่งซื้อ
โดยที่ product.code = order.code
เมื่อคุณใช้วัตถุ Recordset ชุดระเบียนจะไม่รู้จักรูปแบบ rs (ชื่อตาราง ชื่อเขตข้อมูล) นั่นคือ rs ("product.price") จะทำให้เกิดข้อผิดพลาด และคุณต้องใช้ AS เพื่อตั้งค่านามแฝงของเขตข้อมูล ชื่อ. ตัวอย่างเช่น:
เลือก product.priceAS price, order.quantityAS quantity
จากผลิตภัณฑ์คำสั่งซื้อ
โดยที่ product.code = order.code
ด้วยวิธีนี้ คุณสามารถใช้ rs ("ราคา") และ rs ("ปริมาณ") เพื่ออ่านข้อมูลในช่องต่างๆ ได้
ไวยากรณ์ที่เกี่ยวข้องกับนิพจน์ SELECT:
คำสำคัญ: ทั้งหมด/ ความแตกต่าง/ ความแตกต่าง/ TOP
WHERE: ค้นหาบันทึกข้อมูลในตาราง FROM ที่ตรงตามเงื่อนไขที่กำหนด WHERE สามารถใช้ตัวดำเนินการ BETWEEN, LIKE และ IN ต่อไปนี้:
ระหว่าง...และ: ตรวจสอบว่าค่าของนิพจน์อยู่ภายในช่วงที่ระบุหรือไม่
ชอบ: ค้นหาคำหลักที่ตรงกัน
นิพจน์ IN: ช่วงที่จำกัด
NOT IN expression: บ่งชี้ว่าไม่ได้อยู่ในช่วงที่ระบุ
ORDER BY clause: คุณสามารถตั้งค่าฟิลด์การเรียงลำดับได้
GROUP BY clause: สร้างสถิติเกี่ยวกับผลลัพธ์ของแบบสอบถาม
HAVING clause: ใช้ในนิพจน์ SELECT เพื่อกรองบันทึกที่ได้รับการจัดกลุ่มตามสถิติ
Union: สามารถรวมผลลัพธ์ของการสืบค้นหลายชุดเข้าด้วยกันได้
เข้าร่วม: รวมบันทึกภาคสนามในสองตาราง
แบบสอบถามย่อย: นิพจน์สามารถรวมนิพจน์ SELECT ได้
เลือก...ลงใน: สร้างตารางที่สร้างขึ้นตามผลลัพธ์แบบสอบถาม
รายละเอียดมีดังนี้:
คำหลักทั้งหมด/DISTINCT/DISTINCTROW/TOP
เมื่อใช้แบบสอบถาม SELECT คุณสามารถเพิ่มคำสำคัญเพื่อเลือกระเบียนที่กำลังสอบถามได้ ดังต่อไปนี้:
ทั้งหมด: ส่งคืนบันทึกทั้งหมด
ความแตกต่าง: เมื่อมีระเบียนที่ซ้ำกันในฟิลด์ที่ระบุ จะมีเพียงระเบียนเดียวเท่านั้นที่จะถูกส่งกลับ และระเบียนจะไม่ถูกทำซ้ำ
DISTINCTROW: จะไม่มีการส่งกลับบันทึกใดในฟิลด์ที่ระบุหากมีข้อมูลซ้ำกัน
TOP: ส่งกลับระเบียนก่อนหน้าหรือเปอร์เซ็นต์ของระเบียน
ไวยากรณ์มีดังนี้:
เลือก [ทั้งหมด |. DISTINCTROW |.
จากตาราง
ALL ส่งคืนระเบียนทั้งหมด เมื่อไม่ได้เพิ่มคำหลัก คำนั้นจะมีความหมายเหมือนกับการเพิ่ม ALL และบันทึกทั้งหมดจะถูกส่งกลับ ตัวอย่างเช่น สองตัวอย่างต่อไปนี้มีผลการดำเนินการเหมือนกัน โดยทั้งสองตัวอย่างส่งคืนระเบียนทั้งหมดจากตารางผลิตภัณฑ์:
เลือกทั้งหมด * จากผลิตภัณฑ์
ผลลัพธ์การดำเนินการจะเหมือนกับ:
เลือก * จากผลิตภัณฑ์
DISTINCT จะไม่เลือกข้อมูลที่ซ้ำกันในช่องที่ระบุ หลังจากใช้ DISTINCT ผลลัพธ์ของคิวรีจะแสดงรายการค่าข้อมูลของแต่ละฟิลด์หลัง SELECT DISTINCT หากเหมือนกัน จะมีการบันทึกเพียงระเบียนเดียวเท่านั้น ตัวอย่างเช่น มีผลิตภัณฑ์บางอย่างที่มีชื่อผลิตภัณฑ์เดียวกันในตารางผลิตภัณฑ์ และนิพจน์ SQL ของ DISTINCT จะส่งกลับเพียงระเบียนเดียวที่มีฟิลด์ที่มีข้อมูลชื่อผลิตภัณฑ์เหมือนกัน:
เลือกชื่อผลิตภัณฑ์ที่แตกต่างจากผลิตภัณฑ์
หากคุณไม่รวม DISTINCT คิวรีตัวอย่างข้างต้นจะส่งกลับหลายระเบียนที่มีชื่อผลิตภัณฑ์เดียวกัน
หากมีการระบุหลายฟิลด์หลังจากส่วนคำสั่ง SELECT DISTINCT ค่ารวมของฟิลด์ทั้งหมดในผลลัพธ์ของแบบสอบถามจะไม่ถูกทำซ้ำ
DISTINCTROW ไม่ส่งคืนระเบียนที่ซ้ำกันทั้งหมดของฟิลด์ที่ระบุ
TOP n [PERCENT] ส่งคืนระเบียนก่อนหน้าหรือเปอร์เซ็นต์ของระเบียน ลำดับของการเรียงลำดับสามารถระบุได้โดยใช้คำสั่งย่อย ORDER BY เช่น ค้นหารายชื่อนักเรียน 10 อันดับแรก:
เลือกชื่อ 10 อันดับแรก
จากนักเรียน
เรียงตามคะแนน
ถ้าคุณไม่รวมส่วนคำสั่ง ORDER BY คิวรีจะส่งกลับระเบียน 10 รายการจากตารางนักเรียน
TOP จะไม่เลือกระหว่างค่าเดียวกัน หากผลลัพธ์อันดับที่ 10 และ 11 เหมือนกัน แบบสอบถามจะส่งกลับ 11 ระเบียน
คุณสามารถใช้ PERCENT เพื่อตั้งค่าบันทึกของสองสามเปอร์เซ็นต์แรก เช่น เพื่อค้นหาชื่อของนักเรียนที่มีคะแนนสูงสุด 10%:
เลือกชื่อ 10 เปอร์เซ็นต์สูงสุด
จากนักเรียน
เรียงตามคะแนน
ลองดูตัวอย่างการใช้คำสั่ง SQL นี้ในโปรแกรม ASP
คุณสามารถใช้ Distinct เพื่อค้นหาเร็กคอร์ดที่ไม่ซ้ำได้ ตัวอย่างเช่น โปรแกรม ASP rs7.asp เป็นดังนี้ [Insert Into product (code name, name) Select Distinct code name, name From product โดยที่ code name = 'C2000'] โดยใช้ Distinct และแทรกเข้าไปในชื่อรหัสใหม่คือระเบียน C2000:
-
'รหัสที่แตกต่าง ชื่อจะเป็นตัวกำหนดรหัสเท่านั้น ไม่ว่าชื่อจะเหมือนกันหรือไม่ก็ตาม เพิ่มเพียงหนึ่งระเบียนเท่านั้นหากเหมือนกัน
sql = "แทรกลงในผลิตภัณฑ์ (ชื่อรหัส, ชื่อ) เลือกชื่อรหัสที่แตกต่าง, ชื่อจากผลิตภัณฑ์โดยที่รหัส = 'C2000'"
ตั้งค่า = conn1.Execute (sql)
ตั้งค่า rs3 = Server.CreateObject("ADODB.Recordset")
sql = "เลือก * จากผลิตภัณฑ์โดยที่รหัส = 'C2000'"
rs3.เปิด sql,conn1,1,1,1
-
<ตาราง COLSPAN=8 เซลล์แพ็ด=5 เส้นขอบ=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">รหัส</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">ชื่อ</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">ราคา</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">ปริมาณ</FONT></TD>
</TR>
<% ทำในขณะที่ไม่ใช่ rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("ชื่อรหัส")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("ชื่อ")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("ราคา")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("ปริมาณ")%></TD>
</TR>
-
rs3.MoveNext
วนซ้ำ
rs3.ปิด
-
</ตาราง>
ที่ไหน
WHERE ค้นหาบันทึกข้อมูลที่ตรงตามเงื่อนไขเฉพาะในตาราง FROM WHERE ใช้ในนิพจน์ SELECT, UPDATE หรือ DELETE
หากไม่ได้ระบุส่วนคำสั่ง WHERE ในแบบสอบถาม SELECT ข้อมูลทั้งหมดในตารางจะถูกส่งกลับ หากคุณสืบค้นหลายตารางใน SELECT โดยไม่ใช้ส่วนคำสั่ง WHERE หรือส่วนคำสั่ง JOIN ผลลัพธ์ของการสืบค้นจะเป็นผลคูณของข้อมูลในหลายตาราง
WHERE กำหนดเงื่อนไขเฉพาะ เช่น:
จากผลิตภัณฑ์ WHERE Category = 'คอมพิวเตอร์': ระบุการเลือก [ผลิตภัณฑ์] ซึ่ง [หมวดหมู่] เป็น [คอมพิวเตอร์]
WHERE ราคาระหว่าง 1,000 ถึง 5,000: ระบุว่าราคาอยู่ระหว่าง 1,000 ถึง 5,000
ส่วนคำสั่ง WHERE สามารถมีนิพจน์การดำเนินการได้สูงสุด 40 รายการ ซึ่งเชื่อมต่อกันด้วยตัวดำเนินการเชิงตรรกะ เช่น AND หรือ OR
เมื่อกำหนดเงื่อนไขเฉพาะ ให้เพิ่มสัญลักษณ์ต่างๆ ก่อนและหลัง ตามประเภทช่อง เช่น
ข้อความ: เพิ่มเครื่องหมายคำพูดเดี่ยวก่อนและหลัง เช่น WHERE category = 'Computer'
ตัวเลข: ไม่มีสัญญาณก่อนและหลัง เช่น WHERE ปริมาณ > 100
วันที่: เพิ่มเครื่องหมาย # ก่อนและหลัง เช่น WHERE date = #5/15/99#
WHERE สามารถใช้ตัวดำเนินการ BETWEEN, LIKE และ IN ต่อไปนี้