อีเอ แบบสอบถามการเข้าถึง Bessonov ในภาษา SQL แบบสอบถาม SQL การใช้ sql ในการเข้าถึง

ภาษา SQL ไม่มีฟังก์ชันเหมือนกับภาษาการพัฒนาเต็มรูปแบบ แต่มุ่งเน้นไปที่การเข้าถึงข้อมูล ดังนั้นจึงรวมอยู่ในเครื่องมือการพัฒนาโปรแกรม ในกรณีนี้เรียกว่า SQL แบบฝังมาตรฐานภาษา SQL ได้รับการสนับสนุนโดยการใช้งานสมัยใหม่ของภาษาการเขียนโปรแกรมต่อไปนี้: PL/1, Ada, C, COBOL, Fortran, MUMPS และ Pascal

ในระบบการพัฒนาแอปพลิเคชันเฉพาะประเภทไคลเอ็นต์-เซิร์ฟเวอร์ สภาพแวดล้อมการเขียนโปรแกรมมักจะเสริมด้วยเครื่องมือสื่อสาร (การสร้างและยกเลิกการเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล การตรวจจับและประมวลผลข้อผิดพลาดที่เกิดขึ้นบนเครือข่าย ฯลฯ) เครื่องมือในการพัฒนา ส่วนต่อประสานกับผู้ใช้เครื่องมือออกแบบและแก้ไขจุดบกพร่อง

มีสองวิธีหลักในการใช้ SQL แบบฝัง: แบบคงที่และไดนามิก

ที่ คงที่การใช้ภาษา (SQL แบบคงที่)ข้อความของโปรแกรมมีการเรียกฟังก์ชันภาษา SQL ซึ่งรวมอยู่ในโมดูลที่ปฏิบัติการได้หลังจากการคอมไพล์ การเปลี่ยนแปลงในฟังก์ชันที่ถูกเรียกสามารถอยู่ที่ระดับของพารามิเตอร์การเรียกแต่ละรายการโดยใช้ตัวแปรภาษาการเขียนโปรแกรม

ที่ พลวัตการใช้ภาษา (ไดนามิก SQL)โดยถือว่าการสร้างการเรียกฟังก์ชัน SQL แบบไดนามิกและการตีความการเรียกเหล่านี้ เช่น การเข้าถึงข้อมูลจากฐานข้อมูลระยะไกล ในระหว่างการทำงานของโปรแกรม โดยปกติแล้ววิธีไดนามิกจะใช้ในกรณีที่แอปพลิเคชันไม่ทราบประเภทของการเรียก SQL ล่วงหน้าและมีการสนทนาในตัวกับผู้ใช้

วัตถุประสงค์หลักของภาษา SQL (เช่นเดียวกับภาษาอื่น ๆ สำหรับการทำงานกับฐานข้อมูล) คือการเตรียมและดำเนินการแบบสอบถาม อันเป็นผลมาจากการสุ่มตัวอย่างข้อมูลจากตารางตั้งแต่หนึ่งตารางขึ้นไป จึงสามารถเรียกชุดบันทึกได้ การนำเสนอ.

ผลงานโดยพื้นฐานแล้วคือตารางที่สร้างขึ้นจากการดำเนินการค้นหา เราสามารถพูดได้ว่าเป็นประเภทของแบบสอบถามที่เก็บไว้ คุณสามารถสร้างหลายมุมมองได้โดยใช้ตารางเดียวกัน มุมมองนั้นอธิบายโดยการระบุตัวระบุมุมมองและคำขอที่ต้องดำเนินการเพื่อให้ได้มา



เพื่อให้การทำงานกับมุมมองง่ายขึ้น แนวคิดของเคอร์เซอร์จึงถูกนำมาใช้ในภาษา SQL เคอร์เซอร์เป็นตัวชี้ชนิดหนึ่งที่ใช้เพื่อเลื่อนผ่านชุดของบันทึกเมื่อประมวลผล

คำอธิบายและการใช้เคอร์เซอร์ใน ภาษา SQLจะดำเนินการดังนี้ ในส่วนของคำอธิบายของโปรแกรม จะทำการเชื่อมโยง ประเภทตัวแปรเคอร์เซอร์ (CURSOR) ด้วยคำสั่ง SQL (โดยปกติจะมี คำสั่งเลือก- ในส่วนของการดำเนินการของโปรแกรม เคอร์เซอร์จะเปิดขึ้น (OPEN<имя курсора», перемещение курсора по записям (FETCI-1 <имя курсора>...) ตามด้วยการประมวลผลที่เหมาะสม และสุดท้ายปิดเคอร์เซอร์ (CLOSE<имя курсора>).

ใน DBMS เชิงสัมพันธ์เพื่อดำเนินการเกี่ยวกับความสัมพันธ์จะใช้ภาษาสองกลุ่มซึ่งมีภาษาคิวรีเชิงทฤษฎีเป็นพื้นฐานทางคณิตศาสตร์ที่เสนอโดย E. Codd:

พีชคณิตเชิงสัมพันธ์

แคลคูลัสเชิงสัมพันธ์

ในพีชคณิตเชิงสัมพันธ์ตัวถูกดำเนินการและผลลัพธ์ของการกระทำทั้งหมดมีความสัมพันธ์กัน ภาษาพีชคณิตเชิงสัมพันธ์เป็นขั้นตอนเนื่องจากความสัมพันธ์ที่เกิดจากการสืบค้นในฐานข้อมูลเชิงสัมพันธ์ได้รับการประเมินโดยดำเนินการลำดับของตัวดำเนินการเชิงสัมพันธ์ที่ใช้กับความสัมพันธ์ ตัวดำเนินการประกอบด้วยตัวถูกดำเนินการ ซึ่งเป็นความสัมพันธ์และการดำเนินการเชิงสัมพันธ์

การดำเนินการพีชคณิตเชิงสัมพันธ์ Codd สามารถแบ่งออกเป็นสองกลุ่ม: ทฤษฎีเซตพื้นฐานและความสัมพันธ์พิเศษ- การดำเนินการกลุ่มแรกประกอบด้วยการดำเนินการแบบคลาสสิกของทฤษฎีเซต: สหภาพ ความแตกต่าง การตัดกัน และผลิตภัณฑ์ กลุ่มที่สองแสดงถึงพัฒนาการของการดำเนินการตามทฤษฎีเซตทั่วไปต่อปัญหาที่แท้จริงของการจัดการข้อมูล โดยรวมถึงการดำเนินการ: การฉายภาพ การเลือก การแบ่ง และการเชื่อมต่อ

ภาษาแคลคูลัสไม่ใช่ขั้นตอน (เชิงพรรณนาหรือประกาศ) และอนุญาตให้มีการสืบค้นโดยใช้ภาคแสดงลำดับที่หนึ่ง (คำสั่งฟังก์ชัน) ที่สิ่งอันดับหรือโดเมนเชิงสัมพันธ์ต้องเป็นไปตามนั้น การสืบค้นฐานข้อมูลที่ดำเนินการโดยใช้ภาษาดังกล่าวประกอบด้วยข้อมูลเกี่ยวกับผลลัพธ์ที่ต้องการเท่านั้น ภาษาเหล่านี้มีเอกลักษณ์เฉพาะด้วยการมีชุดกฎสำหรับการเขียนแบบสอบถาม โดยเฉพาะ SQL เป็นของกลุ่มภาษานี้

คุณสมบัติของแอพพลิเคชั่น แบบสอบถาม SQL

แบบสอบถาม SQL คือแบบสอบถามที่สร้างขึ้นโดยใช้คำสั่ง SQL ตัวอย่างของแบบสอบถาม SQL ได้แก่ แบบสอบถามแบบรวม แบบสอบถามเซิร์ฟเวอร์ แบบสอบถามควบคุม และแบบสอบถามรอง

แบบสอบถามแบบรวมคือแบบสอบถามที่รวมเขตข้อมูล (คอลัมน์) จากตารางหรือแบบสอบถามตั้งแต่หนึ่งรายการขึ้นไปลงในเขตข้อมูลหรือคอลัมน์เดียวในชุดผลลัพธ์ของระเบียน ตัวอย่างเช่น พนักงานขายหกคนจัดให้มีการจัดการสินค้าคงคลังของสินค้าคงคลังของตนทุกเดือน ด้วยการสร้างคิวรีแบบรวม คุณสามารถรวมสินค้าคงคลังเหล่านี้เข้ากับชุดผลลัพธ์ของเรกคอร์ด จากนั้นจึงพัฒนาคิวรีแบบสร้างตารางโดยยึดตามคิวรีแบบรวม

คำขอไปยังเซิร์ฟเวอร์จะส่งคำสั่ง SQL ผ่าน ODBC ไปยังเซิร์ฟเวอร์ เช่น Microsoft SQL Server แบบสอบถามเซิร์ฟเวอร์ช่วยให้คุณสามารถทำงานกับตารางบนเซิร์ฟเวอร์ได้โดยตรงแทนที่จะเข้าร่วมตารางเหล่านั้น ผลลัพธ์ของการร้องขอไปยังเซิร์ฟเวอร์สามารถโหลดบันทึกหรือเปลี่ยนแปลงข้อมูลได้

คิวรีควบคุมจะสร้างหรือแก้ไขวัตถุฐานข้อมูล เช่น ตาราง Access หรือ SQL Server

แบบสอบถามย่อยประกอบด้วยคำสั่ง SQL SELECT ภายในแบบสอบถามแบบใช้เลือกหรือเปลี่ยนแบบสอบถามอื่น คำแนะนำเหล่านี้จะระบุไว้ในบรรทัด "ฟิลด์" ของแบบฟอร์มคำขอเพื่อกำหนดฟิลด์ใหม่ หรือในบรรทัด "เงื่อนไขการเลือก" เพื่อกำหนดเงื่อนไขการเลือกฟิลด์ แบบสอบถามย่อยถูกใช้เพื่อทำสิ่งต่อไปนี้:

การตรวจสอบในแบบสอบถามย่อยสำหรับการมีอยู่ของผลลัพธ์บางส่วนโดยใช้คำที่สงวนไว้ EXISTS หรือ NO EXISTS

ค้นหาข้อความค้นหาหลักสำหรับค่าใดๆ ที่เท่ากับ มากกว่า หรือน้อยกว่าค่าที่ส่งคืนในข้อความค้นหาย่อย (โดยใช้คำใดๆ, IN หรือคำสงวนทั้งหมด)

การสร้างแบบสอบถามย่อยภายในแบบสอบถามย่อย (แบบสอบถามย่อยที่ซ้อนกัน)

ภาษา SQL ใน Access สามารถใช้ในการพัฒนาฟอร์มหน้าจอ รายงาน ตลอดจนสร้างแมโครและโปรแกรม VBA

ความสัมพันธ์ระหว่างภาษา QBE และ SQL

ใน Access มีความสัมพันธ์ใกล้ชิดระหว่างภาษา QBE และ SQL ตารางแบบสอบถาม (แบบฟอร์ม) ในภาษา QBE ที่ผู้ใช้กรอกจะถูกแปลงเป็นนิพจน์ SQL ก่อนที่จะดำเนินการทันที นั่นคือภาษา SQL เป็นมาตรฐานภายในสำหรับการดำเนินการค้นหา กลไกนี้มีข้อดีในการอนุญาตให้ระบบ Access รวมการเตรียมการสืบค้นสำหรับการดำเนินการบนคอมพิวเตอร์ในระบบและระยะไกล ในกรณีหลังนี้ ข้อความ SQL จะถูกส่งไปยังคอมพิวเตอร์ - เซิร์ฟเวอร์คำขอ

ใน Access คิวรีสามารถอยู่ในโหมดใดโหมดหนึ่งจากสามโหมด (สถานะ): การออกแบบ SQL และตาราง โหมดการออกแบบใช้ในการพัฒนาแบบสอบถามใหม่ตั้งแต่เริ่มต้น (โดยไม่ต้องใช้ตัวช่วยสร้างหรือเครื่องมืออื่นๆ) หรือเพื่อเปลี่ยนเค้าโครงของแบบสอบถามที่มีอยู่ โหมด SQL ใช้เพื่อป้อนหรือดูคำสั่ง SQL โหมดตารางใช้เพื่อทำงานกับผลลัพธ์แบบสอบถาม

SQL ในแบบฟอร์มและรายงาน

แหล่งที่มาหลักของบันทึกในจอแสดงผลและรายงานคือตารางและการสืบค้น ในกรณีที่สอง คำขออาจเป็นแบบสอบถามฐานข้อมูลสำเร็จรูปหรือคำขอที่สร้างขึ้นเมื่อพัฒนาแบบฟอร์มหรือรายงาน

SQL ในมาโคร

คำสั่งแมโครเป็นส่วนหนึ่งของแมโครที่ใช้เพื่อทำให้การดำเนินการซ้ำบ่อยครั้งในการทำงานกับฐานข้อมูลเป็นแบบอัตโนมัติ แมโครคือคำสั่งแมโครตั้งแต่หนึ่งคำสั่งขึ้นไปพร้อมอาร์กิวเมนต์

แมโครถูกเรียกจากหน้าต่างฐานข้อมูลหรือโดยอัตโนมัติเมื่อมีเหตุการณ์บางอย่างเกิดขึ้น เหตุการณ์ที่ทริกเกอร์แมโครอาจเป็นได้ เช่น การคลิกปุ่มในพื้นที่ฟอร์มหรือการเปิดหน้าต่างฐานข้อมูล นอกจากการดำเนินการบางอย่างกับวัตถุฐานข้อมูลแล้ว แมโครยังสามารถเรียกใช้แมโครอื่นๆ โปรแกรม Visual Basic และแอปพลิเคชันภายนอกได้

จากคำสั่งแมโครจำนวนมาก คำสั่งแมโครสองคำสั่งเกี่ยวข้องโดยตรงกับ SQL: เรียกใช้ SQL Query (เรียกใช้ SQL) และ Open Query (OpenQuery)

คำสั่งแมโคร เรียกใช้ SQL Queryเรียกใช้การเปลี่ยนแปลงการเข้าถึงหรือแบบสอบถามการควบคุมโดยใช้คำสั่ง SQL ที่เหมาะสม มาโครนี้ทำให้สามารถดำเนินการในแมโครได้โดยไม่ต้องบันทึกแบบสอบถามก่อน คุณยังสามารถดำเนินการค้นหาที่บันทึกไว้โดยใช้มาโครได้

เปลี่ยนแปลงคำขอเป็นคำสั่ง SQL ที่ใช้ฟังก์ชันต่อไปนี้: การเพิ่ม (INSERT INTO), การลบ (DELETE), การสร้างตาราง (SELECT...INTO) และการอัปเดต (UPDATE)

คำขอควบคุมเป็นคำสั่ง SQL ที่ทำหน้าที่ดังต่อไปนี้: สร้างตาราง (CREATE TABLE), แก้ไขตาราง (ALTER TABLE), วางตาราง (DROP TABLE), สร้างดัชนี (CREATE INDEX) และปล่อยดัชนี (DROP INDEX)

อาร์กิวเมนต์เดียวและจำเป็นของคำสั่งแมโคร เรียกใช้แบบสอบถาม SQLเป็นคำสั่ง SQL อาร์กิวเมนต์แมโครเป็นข้อความ SQL - ป้อนคำสั่งด้วยตนเองในหน้าต่างอินพุตแมโครหรือคัดลอกจากหน้าต่าง SQL ซึ่งมักจะสะดวกกว่า

คำสั่งมาโคร OpenRequestช่วยให้คุณสามารถเปิดการเลือกหรือแบบสอบถามข้าม (ในโหมดตาราง การออกแบบ และการแสดงตัวอย่าง) เรียกใช้แบบสอบถามเพื่อเปลี่ยนแปลงหรือป้อนข้อมูล

แมโครระบุอาร์กิวเมนต์สามรายการ: ชื่อคำขอ โหมด และโหมดข้อมูล อาร์กิวเมนต์แรกระบุชื่อของคำขอที่จะเปิดและจำเป็น อาร์กิวเมนต์ที่สองระบุโหมดการเปิดคิวรี (ตาราง การออกแบบ และมุมมอง) อาร์กิวเมนต์ที่สามอธิบายโหมดการป้อนข้อมูลลงในคำขอ ("เพิ่ม", "เปลี่ยน" และ "อ่านอย่างเดียว")

SQL ในโปรแกรม VBA

VBA เช่นเดียวกับมาโคร ได้รับการออกแบบมาเพื่อดำเนินการซ้ำๆ บนวัตถุฐานข้อมูล Access โดยอัตโนมัติ

ใน Access มีวิธีเรียกใช้โปรแกรม VBA ดังต่อไปนี้:

รวมถึงโปรแกรมในขั้นตอนการประมวลผลเหตุการณ์

การเรียกใช้ฟังก์ชันในนิพจน์

การเรียกขั้นตอนย่อยในขั้นตอนอื่นหรือในหน้าต่างการดีบัก

การดำเนินการคำสั่งแมโคร RunCode (RunCode) ในแมโคร

ฟังก์ชันใช้ในนิพจน์ที่กำหนดเขตข้อมูลจากการคำนวณในฟอร์ม รายงาน หรือคิวรี นิพจน์ใช้เพื่อระบุเงื่อนไขในคิวรีและตัวกรอง รวมถึงในมาโคร คำสั่งและวิธีการ VBA และคำสั่ง SQL ขั้นตอนย่อยสามารถรวมรูทีนย่อย VBA สาธารณะที่ถูกเรียกจากขั้นตอนอื่น

มาดูการเรียกใช้แบบสอบถามฐานข้อมูลโดยใช้คำสั่ง SQL ในโปรแกรม Visual Basic for Applications

คำขอจะเลือกบันทึกจากฐานข้อมูลที่ตรงตามเงื่อนไขบางประการ (คำขอเลือก) หรือออกคำแนะนำเพื่อดำเนินการที่ระบุกับบันทึกที่ตรงตามเงื่อนไขบางประการ (คำขอเปลี่ยนแปลง)

มีวิธีการดำเนินการแบบสอบถามดังต่อไปนี้:

การเรียกเมธอด Execute (เพื่อดำเนินการคำสั่ง SQL สำหรับการเปลี่ยนแปลง);

การสร้างและการดำเนินการของวัตถุ QueryDef พิเศษ

การใช้คำสั่ง SQL เป็นอาร์กิวเมนต์กับเมธอด OpenRecordset

ดำเนินการวิธีการ OpenRecordset บนวัตถุ QueryDef ที่มีอยู่

การเรียกเมธอด RunSQL และ OpenQuery

ดำเนินการวิธีการใช้หากคุณต้องการเปลี่ยนแปลงฐานข้อมูลที่ไม่ส่งคืนบันทึก เช่น การดำเนินการแทรกหรือลบบันทึก

วัตถุ QueryDefแสดงถึงคำจำกัดความของแบบสอบถามที่บันทึกไว้ในฐานข้อมูล สามารถมองได้ว่าเป็นคำสั่ง SQL ที่คอมไพล์แล้ว

วิธีการ OpenRecordsetใช้เพื่อเปิดวัตถุประเภท Recordset เพื่อดำเนินการต่อไป

วิธีการ RunSQLรันแมโคร เรียกใช้แบบสอบถาม SQLในโปรแกรม VBA

วิธีการ OpenQueryดำเนินการคำสั่งแมโคร OpenQuery ในโปรแกรม VBA ด้วยเครื่องมือนี้ คุณสามารถเปิดแบบสอบถามในโหมดแผ่นข้อมูล การออกแบบ หรือมุมมองได้ ซึ่งจะตั้งค่าโหมดใดโหมดหนึ่งต่อไปนี้สำหรับการทำงานกับข้อมูล: การเพิ่ม การเปลี่ยนแปลง หรือการอ่านอย่างเดียว

ตัวเลือกการดำเนินการค้นหาจะถูกกำหนดโดยโปรแกรมเมอร์โดยคำนึงถึงลักษณะของปัญหาที่กำลังแก้ไข

แบบสอบถามใน Access เป็นเครื่องมือหลักในการเลือก อัปเดต และประมวลผลข้อมูลในตารางฐานข้อมูล Access ตามแนวคิดของฐานข้อมูลเชิงสัมพันธ์จะใช้ SQL (Structured Query Language) เพื่อดำเนินการสืบค้น การใช้คำสั่งภาษา SQL จะทำให้แบบสอบถามใดๆ ใน Access ถูกนำมาใช้

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

สามารถสร้างแบบสอบถามได้หลายประเภทใน Access:

  • คำขอตัวอย่าง- เลือกข้อมูลจากหนึ่งตารางหรือแบบสอบถามหรือหลายตารางที่สัมพันธ์กันและแบบสอบถามอื่น ๆ ผลลัพธ์คือตารางที่มีอยู่จนกระทั่งแบบสอบถามถูกปิด บันทึกตารางผลลัพธ์จะถูกสร้างขึ้นตามเงื่อนไขการเลือกที่ระบุ และเมื่อใช้หลายตารางโดยการรวมบันทึกเข้าด้วยกัน
  • ร้องขอให้สร้างตาราง- เลือกข้อมูลจากตารางที่สัมพันธ์กันและแบบสอบถามอื่น ๆ แต่เก็บผลลัพธ์ไว้ในตารางถาวรใหม่ ซึ่งต่างจากแบบสอบถามแบบใช้เลือกข้อมูล
  • การร้องขอให้ปรับปรุง เพิ่มเติม ลบ- เป็นคำขอดำเนินการซึ่งเป็นผลมาจากการเปลี่ยนแปลงข้อมูลในตาราง

การสืบค้นใน Access ในโหมดการออกแบบประกอบด้วยสคีมาข้อมูลที่แสดงตารางที่ใช้ และแบบฟอร์มการสืบค้นซึ่งมีการออกแบบโครงสร้างของตารางการสืบค้นและเงื่อนไขในการเลือกบันทึก (รูปที่ 4.1)

เมื่อใช้แบบสอบถาม คุณสามารถดำเนินการประมวลผลข้อมูลประเภทต่อไปนี้ได้:

  • รวมเขตข้อมูลตารางที่ผู้ใช้เลือกไว้ในตารางแบบสอบถาม
  • ทำการคำนวณในแต่ละบันทึกที่ได้รับ
  • เลือกบันทึกที่ตรงตามเงื่อนไขการเลือก
  • สร้างตารางเสมือนใหม่โดยอาศัยการรวมบันทึกของตารางที่สัมพันธ์กัน
  • บันทึกกลุ่มที่มีค่าเหมือนกันในหนึ่งฟิลด์ขึ้นไป ทำหน้าที่ทางสถิติพร้อมกันในฟิลด์อื่น ๆ ของกลุ่ม และด้วยเหตุนี้จึงรวมหนึ่งบันทึกสำหรับแต่ละกลุ่ม
  • สร้างตารางฐานข้อมูลใหม่โดยใช้ข้อมูลจากตารางที่มีอยู่
  • อัปเดตฟิลด์ในชุดย่อยของเรคคอร์ดที่เลือก
  • ลบชุดย่อยของบันทึกที่เลือกออกจากตารางฐานข้อมูล
  • เพิ่มชุดย่อยของบันทึกที่เลือกไปยังตารางอื่น

แบบสอบถามใน Access ทำหน้าที่เป็นแหล่งระเบียนสำหรับแบบสอบถาม ฟอร์ม และรายงานอื่นๆ เมื่อใช้แบบสอบถาม คุณสามารถรวบรวมข้อมูลที่ครบถ้วนเพื่อสร้างเอกสารหัวข้อเฉพาะจากหลายตาราง จากนั้นใช้เพื่อสร้างแบบฟอร์ม - การนำเสนอทางอิเล็กทรอนิกส์ของเอกสารนี้ หากตัวช่วยสร้างฟอร์มหรือรายงานถูกสร้างขึ้นโดยยึดตามตารางที่เชื่อมต่อถึงกันหลายตาราง แบบสอบถามจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับตารางเหล่านั้นเป็นแหล่งของระเบียน
เพื่อเน้นย้ำสิ่งนี้ โปรดดูวิดีโอบทแนะนำ

Access DBMS ใช้แบบสอบถามสองประเภท: QBE – แบบสอบถามตามตัวอย่างและ SQL(ภาษาคิวรีที่มีโครงสร้าง) - ภาษาคิวรีที่มีโครงสร้าง คำขอตัวอย่างถูกสร้างขึ้นโดยการกรอกแบบฟอร์มคำขอพิเศษในหน้าต่าง "ตัวสร้างแบบสอบถาม" SQL – แบบสอบถามถูกสร้างขึ้นโดยโปรแกรมเมอร์จากลำดับของ SQL – คำแนะนำ- ตามกฎแล้ว SQL จะถูกสร้างขึ้นโดยโปรแกรมเมอร์ในแบบฟอร์มแบบสอบถามซึ่งเปิดโดยคำสั่ง "ตัวสร้างแบบสอบถาม" บนแท็บ "การสร้าง" และเลือก "โหมด SQL" จากเมนูมุมมอง ภาษา SQL ได้รับการออกแบบมาเพื่อทำงานกับข้อมูล เช่น สำหรับการสร้าง แก้ไข และจัดการข้อมูลในฐานข้อมูลเชิงสัมพันธ์

ควรสังเกตว่ามีโหมดเคียวรี SQL หลายโหมด (เคียวรีโหมด ANSI-89 SQL และ ANSI-92 SQL) ที่สอดคล้องกับมาตรฐาน ANSI-89 SQL และ ANSI-92 SQL

คำแนะนำประกอบด้วยคำอธิบายของชุดข้อมูลใน SQL คำสั่ง SQLประกอบด้วยส่วนคำสั่ง (SELECT, FROM, WHERE ฯลฯ) ข้อเสนอในภาษา SQL ประกอบด้วยคำศัพท์ (ตัวดำเนินการหรือคำสั่ง ตัวระบุ ค่าคงที่ ฯลฯ) คำสั่งเริ่มต้นด้วยคำสั่ง (หนึ่งในคำสั่ง SELECT, CREATE, INSERT, UPDATE, DELETE ฯลฯ) และลงท้ายด้วยเครื่องหมายอัฒภาค คำสั่ง SQL พื้นฐาน: SELECT, FROM และ WHERE

ตัวอย่างเช่น คำสั่ง SQL:
เลือกนักเรียน StudentCode
จากนักเรียน;
ประกอบด้วยส่วนคำสั่ง "SELECT Students.StudentCode" และส่วนคำสั่ง "FROM Students"

ส่วนคำสั่ง SELECT ประกอบด้วย ตัวดำเนินการเลือกและ ตัวระบุ"นักศึกษา รหัสนักศึกษา". ในที่นี้ชื่อเต็มของฟิลด์ "StudentCode" จะนำหน้าด้วยชื่อของตาราง "Students" ของฐานข้อมูล SELECT - ระบุฟิลด์ที่มีข้อมูลที่ต้องการ ส่วนคำสั่ง FROM ประกอบด้วยส่วนคำสั่ง FROM และตัวระบุ "นักเรียน" FROM - กำหนดตารางที่มีเขตข้อมูลที่ระบุในส่วนคำสั่ง SELECT

ควรสังเกตว่าเมื่อสร้างแบบสอบถามใน SQL คุณต้องคำนึงถึงไวยากรณ์ของแบบสอบถามด้วย แม้ว่าไวยากรณ์ของภาษา SQL จะอิงตามไวยากรณ์ของภาษาอังกฤษ แต่ไวยากรณ์ของเวอร์ชันภาษา SQL อาจแตกต่างกันสำหรับ DBMS ที่แตกต่างกัน

มีการสืบค้นหลายประเภท: การเลือก การอัปเดต การเพิ่มและการลบบันทึก การสืบค้นข้าม การสร้างและการลบตาราง การรวมตาราง ฯลฯ ที่พบบ่อยที่สุดคือคำขอตัวอย่าง แบบสอบถามการเลือกใช้เพื่อเลือกข้อมูลที่มีอยู่ในตารางที่ผู้ใช้ต้องการ สร้างขึ้นสำหรับตารางที่เกี่ยวข้องเท่านั้น

หากต้องการดูแบบสอบถาม SQL ใน Access 2003 หรือ 2007 DBMS คุณต้องดำเนินการคำสั่ง SQL View/Mode ในหน้าต่างที่ใช้งานอยู่เพื่อออกแบบแบบสอบถามตัวอย่าง (รูปที่ 1)


ข้าว. 1.

มารับคำสั่ง SQL (SELECT) เพื่อสุ่มข้อมูลจากฐานข้อมูล Access 2003 ตามเกณฑ์การปฏิบัติงานของนักเรียน "Grade=5" (รูปที่ 2)



ข้าว. 2.

ดังต่อไปนี้จากคำสั่ง SELECT (รูปที่ 1) จะอธิบายชุดข้อมูลในภาษา SQL: SELECT - กำหนดชื่อฟิลด์ที่นำหน้าด้วยชื่อของตารางที่มีข้อมูล; FROM - กำหนดตารางและความสัมพันธ์ผ่านฟิลด์สำคัญของตาราง (ใช้โครงสร้าง INNER JOIN ... ON สำหรับสิ่งนี้) บนพื้นฐานของการเลือกข้อมูล WHREME - กำหนดเงื่อนไขในการเลือกฟิลด์ ORDER BY - กำหนดวิธีการเรียงลำดับจากน้อยไปหามาก (โดยค่าเริ่มต้นจะดำเนินการเรียงลำดับจากน้อยไปหามาก) ค่าของฟิลด์ "นามสกุล" ของตาราง "นักเรียน"

ดังต่อไปนี้จากคำแนะนำในการดึงข้อมูลจากฐานข้อมูล ภาษา SQL จะอธิบายสิ่งที่จำเป็นต้องได้รับจากฐานข้อมูล ในขณะที่การดำเนินการได้รับความไว้วางใจจาก DBMS เนื่องจากภาษา SQL ไม่มีวิธีการควบคุมการทำงานของโปรแกรมเป็นของตัวเอง

กระทรวงศึกษาธิการแห่งสหพันธรัฐรัสเซีย

มหาวิทยาลัยเทคนิคแห่งรัฐ Kuzbass

ภาควิชาวิทยาการคอมพิวเตอร์

และเทคโนโลยีสารสนเทศ

แบบสอบถามในภาษา SQL

แนวทางการทำงานในห้องปฏิบัติการสำหรับนักศึกษาสาขาวิชา “เศรษฐศาสตร์และการจัดการในสถานประกอบการ” เฉพาะทาง ในรายวิชา “การคำนวณทางเศรษฐศาสตร์อัตโนมัติ”

เรียบเรียงโดย E.A. เบสโซนอฟ

อนุมัติในที่ประชุมกรมฯ รายงานการประชุม ฉบับที่ 11 เมื่อวันที่ 23 มิถุนายน พ.ศ. 2543

สำเนาอิเล็กทรอนิกส์จะถูกเก็บไว้ในห้องสมุดของอาคารหลักของ KuzSTU

เคเมโรโว 2001

SQL (ภาษาคิวรีที่มีโครงสร้าง - ภาษาคิวรีที่มีโครงสร้าง

นกฮูก) ตั้งแต่ปี 1986 เป็นภาษาฐานข้อมูลเชิงสัมพันธ์มาตรฐาน โดยเฉพาะอย่างยิ่งมันถูกใช้ในแอปพลิเคชัน Access และ Excel มาตรฐานภาษา SQL มีการกำหนดไว้ใน .

การสืบค้นใน MS Access จะถูกบันทึกและนำไปใช้งานโดยใช้ภาษา SQL แม้ว่าแบบสอบถามส่วนใหญ่จะสามารถสร้างแบบกราฟิกได้ (แบบสอบถามรูปแบบ) แต่จะถูกจัดเก็บเป็นคำสั่ง SQL ในบางกรณี (เช่น ในแบบสอบถามย่อย) คุณสามารถใช้ได้เฉพาะภาษา SQL เท่านั้น ภาษาถิ่นของภาษานี้ใช้ใน MS Access และอธิบายไว้ด้านล่าง ตัวอย่างการสืบค้นใน SQL จำนวนมากสามารถพบได้ในฐานข้อมูล Northwind (ไฟล์ I:\Access\Sampapps\Nwind.mdb)

SQL แตกต่างจากภาษาโปรแกรมระดับสูงอื่นๆ อย่างเห็นได้ชัด

1. SQL เป็นภาษาที่ไม่ใช่ขั้นตอน เพียงประกาศสิ่งที่ต้องทำ และการดำเนินการจะเหลืออยู่ที่ DBMS (ระบบการจัดการฐานข้อมูล)

2. SQL ใช้ตรรกะสามค่า นอกเหนือจากค่าบูลีนแบบดั้งเดิม TRUE และ FALSE แล้ว จะใช้ NULL (UNKNOWN หรือ NO DATA)

3. การดำเนินการจะดำเนินการกับชุดข้อมูลทั้งหมด แทนที่จะดำเนินการกับแต่ละองค์ประกอบ เช่นเดียวกับในภาษาการเขียนโปรแกรมอื่นๆ

แบบสอบถาม SQL ประกอบด้วยคำสั่ง แต่ละคำสั่งสามารถมีได้หลายประโยค

แทบไม่มีการสอบถามใดที่จะเสร็จสมบูรณ์ได้หากไม่มีส่วนคำสั่ง FROM ซึ่งอธิบายตารางหรือแบบสอบถามที่ใช้และมีไวยากรณ์

จากตาราง

ตาราง - ตาราง/แบบสอบถามที่ใช้และความสัมพันธ์

ถ้าส่วนคำสั่ง FROM มีคำสั่งย่อย IN (วงเล็บเหลี่ยมระบุว่าส่วนคำสั่งนี้เป็นทางเลือก) ดังนั้นคำสงวน IN จะต้องตามด้วยชื่อของฐานข้อมูลที่ตารางต่างๆ ตั้งอยู่ (สมมติว่าตารางเหล่านั้นใช้ตารางที่ไม่ได้ใช้ จากฐานข้อมูลปัจจุบัน)

จากอาจารย์

หากแบบสอบถามขึ้นอยู่กับสองตารางจำเป็นต้องระบุวิธีการรวมเข้าด้วยกัน - หนึ่งในรายการต่อไปนี้ (ถือว่าผู้อ่านคุ้นเคยกับตารางเหล่านี้):

สินค้าคาร์ทีเซียน เข้าร่วมภายใน เข้าร่วมภายใน; LEFT JOIN การรวมภายนอกด้านซ้าย RIGHT JOIN การรวมภายนอกด้านขวา

ทันทีหลังจากวิธีการรวม คุณต้องวางวลี ON Table1.Key = Table2.ForeignKey

คีย์ - ชื่อของฟิลด์คีย์ที่ด้าน 1 ForeignKey - ชื่อของฟิลด์ที่เชื่อมต่อในด้าน N

สคีมาข้อมูล

รูปภาพแสดงแผนภาพการรวมตาราง (สคีมาข้อมูล) ที่จะใช้กับตัวอย่างส่วนใหญ่ด้านล่าง จากภาพ คุณจะเห็นว่าสำหรับตาราง "ผู้ตรวจสอบ" ช่อง "หัวเรื่อง" เป็นช่องคีย์ (เป็นตัวหนา) และช่อง "ครู" เป็นคีย์นอกสำหรับตาราง "ครู" การรวมระหว่างตารางที่ระบุเป็นแบบภายในและรับประกันความสมบูรณ์ของข้อมูล เห็นได้จากป้าย 1 และ ∞ ที่ปลายสายเชื่อมต่อ (“ครู” เป็นโต๊ะหลัก และ “ผู้ตรวจสอบ” เป็นโต๊ะรอง) ด้วยการรวมภายนอก คุณจะเห็นลูกศรบนเส้นรวมตารางที่มุ่งตรงไปยังตารางรอง ซึ่งหมายความว่าบันทึกทั้งหมดจะแสดงในตารางหลัก แม้ว่าจะไม่มีบันทึกที่เกี่ยวข้องในตารางรองก็ตาม เช่น คุณสามารถดูรายชื่ออาจารย์และรายวิชาได้ ถ้า

ครูบางคนไม่ได้อยู่ในตาราง "ผู้ตรวจสอบ" ดังนั้นช่องชื่อเรื่องของครูคนนี้จะว่างเปล่าหากใช้ LEFT JOIN

จากผู้สอบ INNER JOIN การสอบ ON Examiners.Subject = Exams.Subject

ในส่วนคำสั่ง FROM ก่อนคำสงวน INNER JOIN ชื่อของตารางในด้านที่ 1 จะถูกระบุ (ในกรณีของเราคือตาราง "ผู้ตรวจสอบ") หากมีมากกว่าสองตารางในส่วนคำสั่ง FROM การรวมของทั้งสองตารางสามารถอยู่ในวงเล็บและถือเป็นตารางเดียวเมื่อรวมกับตารางอื่นหรือการรวม คุณสามารถอธิบายการรวมตารางจำนวนเท่าใดก็ได้ด้วยวิธีนี้

จากอาจารย์ INNER JOIN (ผู้ตรวจสอบ

การสอบเข้าร่วมภายใน

ON Examiners.Subject = ข้อสอบ.Subject)

ON Teachers.Teacher = Examiners.Teacher มีการอธิบายโครงร่างข้อมูลทั้งหมด (ดูรูป)

คำสั่ง SELECT เลือกฟิลด์ที่ต้องการจากตารางหรือแบบสอบถาม รูปแบบขั้นต่ำ:

จากตาราง;

ฟิลด์ - ชุดของนิพจน์และชื่อฟิลด์ คั่นด้วยเครื่องหมายจุลภาค ตัวอย่าง

กลุ่มเลือก นักเรียน การประเมินจากการสอบ

หากชื่อซ้ำกันในหลายตารางที่แสดงอยู่ในส่วนคำสั่ง FROM ชื่อจะต้องนำหน้าด้วยชื่อตารางและจุด ตัวอย่างเช่น: [ผู้ตรวจสอบ].ครู หรือ [การสอบ] [รายการ]

หากชื่อของตารางหรือเขตข้อมูลมีการเว้นวรรคหรืออักขระพิเศษอื่นๆ ชื่อนี้จะต้องอยู่ในวงเล็บเหลี่ยม ในกรณีอื่นๆ วงเล็บเป็นทางเลือก

ใน ในตัวอย่างที่กำหนดในโหมดตาราง แบบสอบถามจะสร้างตาราง

กับ ส่วนหัวของคอลัมน์ “กลุ่ม”, “นักเรียน”, “เกรด” (ตามลำดับ) บางครั้งก็เป็นที่พึงปรารถนาที่ชื่อจะแตกต่างไปจากนี้

ชื่อฟิลด์ ในกรณีนี้ หลังชื่อฟิลด์ คุณควรวางคำสงวน AS และชื่อเรื่อง (นามแฝง) เช่น:

SELECT Group, นักเรียน AS ชื่อเต็ม, เกรด

ใน ในกรณีนี้ แทนที่จะแสดงส่วนหัว "นักเรียน" "ชื่อเต็ม" จะปรากฏขึ้น ถ้า

วี มีมากกว่าหนึ่งคำในชื่อเรื่อง ต้องอยู่ในวงเล็บเหลี่ยม

หากคุณต้องการแสดงฟิลด์ทั้งหมดของตาราง อาร์กิวเมนต์ของฟิลด์ควรระบุด้วยเครื่องหมายดอกจันหรือในรูปแบบ "ตาราง*"

เลือกครู* จากครู;

ระบบจะส่งคืนช่องทั้ง 5 ช่องจากตาราง "ครู"

บางครั้งคุณจำเป็นต้องส่งออกไม่ใช่ค่าของฟิลด์ แต่เป็นผลลัพธ์ของการคำนวณค่าของฟิลด์ ในกรณีนี้ คุณต้องระบุนิพจน์แทนชื่อฟิลด์ กฎสำหรับการเขียนนิพจน์ไม่แตกต่างจากกฎที่ใช้ในตัวออกแบบคิวรี

เลือก Avg([Grade]) เป็น [Grade Average] จากการสอบ

แบบสอบถามส่งคืนตัวเลขเดียวในคอลัมน์ชื่อ "GPA"

– ค่าเฉลี่ยเลขคณิตของผลการเรียนของนักเรียนทุกคน ตัวอย่าง

SELECT Count([Teacher]) เป็น [จำนวนครู] จากครู

ใต้หัวข้อ "จำนวนครู" จะถูกวางจำนวนแถวของตาราง "ครู" ซึ่งช่อง "ครู" ไม่ว่างเปล่า (และไม่ว่างเปล่าเสมอไปเนื่องจากเป็นช่องสำคัญ) นี่คือจำนวนครู เนื่องจากแต่ละบันทึกมีหมายเลขครูที่แตกต่างจากจำนวนครูคนอื่นๆ

ใน คำสั่ง SELECT ทันทีหลังจากคำว่า SELECT สามารถเป็นได้

มีการเขียนภาคแสดง - หนึ่งในคำทั้งหมด, DISTINCT, DISTINCTROW, TOP N

เพรดิเคต ALL จะทำให้เรกคอร์ดทั้งหมดถูกส่งคืน แม้ว่าจะมีรายการซ้ำก็ตาม

DISTINCT ห้ามไม่ให้แสดงบันทึกที่ซ้ำกันในช่องที่เลือก การใช้เพรดิเคต DISTINCT เทียบเท่ากับการตั้งค่าคุณสมบัติ Unique Values ​​ในแผ่นคุณสมบัติ Query Builder เป็น Yes

DISTINCTROW จะส่งผลต่อผลลัพธ์ก็ต่อเมื่อไม่ได้รวมเขตข้อมูลทั้งหมดจากตารางที่กำลังวิเคราะห์ไว้ในแบบสอบถาม เพรดิเคตจะถูกละเว้นหากแบบสอบถามมีเพียงตารางเดียว เพรดิเคต DISTINCTROW ไม่รวมรายการที่ซ้ำกันทั้งหมด การใช้เพรดิเคต DISTINCTROW เทียบเท่ากับการตั้งค่าคุณสมบัติ Unique Records ในแผ่นคุณสมบัติ Query Builder เป็น Yes

เพรดิเคต N อันดับแรกใช้เพื่อส่งคืนระเบียน N ที่จุดเริ่มต้นหรือจุดสิ้นสุดของชุด โดยเรียงลำดับตามค่าจากน้อยไปหามากหรือจากมากไปหาน้อยของฟิลด์นั้น การเรียงลำดับถูกกำหนดโดยใช้ส่วนคำสั่ง ORDER BY ที่อยู่หลังส่วนคำสั่ง FROM ของเครื่องมือ

เลือกคำแนะนำ

หลังคำว่า ORDER BY คุณต้องวางชื่อฟิลด์และคำว่า ASC (จากน้อยไปหามาก ไม่จำเป็น) หรือ DESC (จากมากไปหาน้อย) คำสั่ง SQL ต่อไปนี้ช่วยให้คุณได้รับรายชื่อนักเรียน 5 อันดับแรก

ผลงานทางวิชาการ

ตารางที่ 1

คะแนนเฉลี่ย

เมดเวเดฟ

โวโรบีฟ

เลือกนักเรียน 5 อันดับแรก [GPA] จากผลการเรียน

เรียงตาม[คะแนนเฉลี่ย] DESC;

เลือก [นักเรียน] ที่แตกต่างจากการสอบ

เรียงตาม [นักเรียน];

แบบสอบถามจะส่งกลับรายชื่อนักเรียน เรียงตามนามสกุลจากน้อยไปหามาก

หลังจากคำสั่งย่อย FROM คำสั่ง SELECT ก็สามารถเขียนได้

WHERE clause ในรูปแบบ WHERE เงื่อนไข

เงื่อนไขคือนิพจน์เชิงตรรกะที่ได้รับการประเมินสำหรับแต่ละเรกคอร์ดในตารางต้นฉบับ

หากเงื่อนไขเป็นจริง เรคคอร์ด (ชุดของฟิลด์ในรายการฟิลด์ของส่วนคำสั่ง SELECT) จะรวมอยู่ในชุดผลลัพธ์ หากเป็นเท็จ จะไม่รวมไว้ด้วย

เลือกกลุ่มที่แตกต่าง นักเรียน

จากการสอบ

โดยที่คะแนน = 2;

มีการสร้างรายชื่อนักเรียนที่ล้มเหลว ตัวอย่าง

โดยที่ [ตำแหน่ง]=”รองศาสตราจารย์” หรือ [ปริญญา]=”ปริญญาเอก” เรียงตาม [ชื่อเต็ม];

มีการออกรายชื่อคณาจารย์ที่มีตำแหน่งทางวิชาการเป็นรองศาสตราจารย์หรือวุฒิการศึกษาของผู้สมัครสาขาวิชาเทคนิคศาสตร์ ในตัวอย่างนี้ ไม่จำเป็นต้องใช้ภาคแสดงเนื่องจากรายการเป็นของครูคนละคนและไม่สามารถทำซ้ำได้

เมื่อเลือกนิพจน์สตริง คุณสามารถใช้ตัวดำเนินการรูปแบบ Expression Like ซึ่งจะตรวจสอบความสอดคล้องของผลการคำนวณ นิพจน์เทมเพลตเทมเพลตอาจใช้อักขระบางตัวที่มีวัตถุประสงค์พิเศษ:

* จำนวนอักขระใด ๆ ก็ได้;

ตัวละครอะไรก็ได้

ใน วงเล็บเหลี่ยมสามารถระบุช่วงที่อักขระอยู่หรือไม่ได้อยู่

รวมอักขระตั้งแต่ A ถึง F อักขระ [!A-F] ไม่อยู่ในช่วง A-F

เลือก [ชื่อ] จากครู

โดยที่ [ชื่อเต็ม] เช่น “B*” หรือ [ชื่อเต็ม] เช่น “Ш*”;

ใน ชุดผลลัพธ์จะรวมนามสกุลของครูที่ขึ้นต้นด้วยตัวอักษร D หรือ Ш

X เช่น “P###”

เงื่อนไขการเขียนประกอบด้วยบรรทัด 5 ตัวอักษรที่ขึ้นต้นด้วยตัวอักษร P โดยจะต้องตามด้วยตัวอักษรในช่วง A-F บรรทัดต้องลงท้ายด้วยตัวเลข 3 หลัก

หากจำเป็นต้องเปลี่ยนเงื่อนไขการเลือกก่อนดำเนินการค้นหาแต่ละครั้ง จะสะดวกในการใช้ประโยคของแบบฟอร์ม:

ข้อความพารามิเตอร์

ข้อความ - รายการข้อความคั่นด้วยเครื่องหมายจุลภาค

หลังจากแต่ละข้อความ ชนิดข้อมูลจะถูกระบุโดยคั่นด้วยช่องว่าง เมื่อเรียกใช้แบบสอบถามด้วยพารามิเตอร์ คุณไม่จำเป็นต้องเปิดหน้าต่างตัวออกแบบแบบสอบถามและทำการเปลี่ยนแปลงเงื่อนไขการเลือก แต่ผู้ใช้จะได้รับแจ้งให้ป้อนเงื่อนไขที่ต้องการในขณะที่แบบสอบถามกำลังทำงานอยู่ สำหรับแต่ละข้อความจากประโยคพารามิเตอร์ กล่องโต้ตอบจะปรากฏขึ้นบนหน้าจอ โดยแต่ละข้อความจากคำอธิบายจะทำหน้าที่เป็นคำใบ้ - สิ่งที่จำเป็นต้องป้อน คุณต้องป้อนข้อมูลประเภทที่ระบุในกล่องโต้ตอบ

หากใช้ส่วนคำสั่ง PARAMETERS จะต้องปรากฏก่อนคำสั่งอื่นๆ ทั้งหมด รวมถึงคำสั่ง SELECT และลงท้ายด้วยเครื่องหมายอัฒภาค

พารามิเตอร์ [ระบุวันที่เริ่มต้น] DATETIME, [ระบุวันที่สิ้นสุด] DATETIME;

ในเงื่อนไขการเลือกของส่วนคำสั่ง WHERE และ HAVING คุณสามารถใช้ข้อความโดยไม่ต้องระบุชนิดข้อมูลได้ เมื่อดำเนินการค้นหา ข้อความจะถูกแทนที่ด้วยค่าที่ป้อน

พารามิเตอร์ [ระบุกลุ่ม] ข้อความ; เลือกนักเรียน เกรด

จากการสอบ

โดยที่ [กลุ่ม]=[ระบุกลุ่ม] และ [รายการ]=1;

คำร้องขอคืนเกรดของนักเรียนกลุ่มที่ระบุในวิชารหัส 1

GROUP BY clause ของฟิลด์จะรวมกลุ่มของเรคคอร์ดในรายการฟิลด์ที่ระบุให้เป็นเรคคอร์ดเดียว หากคำสั่ง SELECT มีฟังก์ชันกลุ่ม (เช่น Avg หรือ Sum) ระบบจะคำนวณค่าสำหรับบันทึกในชุดผลลัพธ์ ซึ่งเป็นผลรวมของกลุ่มบันทึก ตัวอย่างเช่น หากคุณจัดกลุ่มบันทึกตามหัวเรื่องในตาราง "การสอบ" ดังนั้นเมื่อใช้ฟังก์ชัน Avg คุณจะได้รับคะแนนเฉลี่ยสำหรับวิชานั้น การจัดกลุ่มตามวิชาและกลุ่มจะทำให้คุณได้รับคะแนนเฉลี่ยของกลุ่มนักเรียนในวิชาที่กำหนด

GROUP BY ไม่ใช่ข้อกำหนดที่จำเป็น หากมีอยู่ในส่วนคำสั่ง SELECT ก็จะปรากฏหลังส่วนคำสั่ง FROM

เมื่อใช้ GROUP BY clause ฟิลด์ทั้งหมดในรายการฟิลด์ของ SELECT clause จะต้องรวมอยู่ในรายการฟิลด์ของ GROUP BY clause หรือใช้เป็นอาร์กิวเมนต์กลุ่ม ฟังก์ชัน SQL.

ถ้ามีการใช้ฟังก์ชันกลุ่มและไม่มีส่วนคำสั่ง GROUP BY บทบาทของกลุ่มจะถูกเล่นโดยชุดระเบียนต้นฉบับทั้งหมดในแบบสอบถาม

เลือกกลุ่ม นักเรียน เฉลี่ย ([เกรด]) AS [คะแนนเฉลี่ย] จากการสอบ

จัดกลุ่มตาม [กลุ่ม],[นักเรียน];

สำหรับนักเรียนแต่ละคน จะมีการคำนวณค่าเฉลี่ยเลขคณิตของเกรดของเขา

ส่วนคำสั่งเสริม HAVING จะต้องปรากฏหลัง GROUP BY จะกำหนดว่าบันทึกใดที่จัดกลุ่มไว้จะถูกรวมไว้ในชุดผลลัพธ์ เงื่อนไขใน HAVING เป็นนิพจน์เชิงตรรกะปกติ เช่นเดียวกับใน WHERE WHERE และ HAVING สามารถแสดงได้ในคำสั่ง SELECT ในเวลาเดียวกัน ในกรณีนี้ WHERE จะกรองบันทึกก่อนที่จะจัดกลุ่ม และ HAVING จะกรองบันทึกที่จัดกลุ่ม (กลุ่ม)

พารามิเตอร์ [ป้อนชื่อรายการ] ข้อความ; เลือกกลุ่ม, วิชา, เฉลี่ย ([เกรด]) AS [คะแนนเฉลี่ย] จากผู้สอบ การสอบ INNER JOIN

ON Examiners.Subject=Exams.Subject

WHERE [Subject Name]=[กรอกชื่อเรื่อง] GROUP BY Group, Student

มี Avg([Rating])>=4.5 และ Min([Rating])>2;

แบบสอบถามจะส่งกลับรายชื่อนักเรียนพร้อมคะแนนเฉลี่ย รายชื่อประกอบด้วยนักเรียนที่ไม่มีเกรดไม่ดีและมีเกรดเฉลี่ยไม่ต่ำกว่า 4.5

คำสั่ง TRANSFORM ใช้เพื่อสร้างแบบสอบถามข้าม ข้อมูลที่นำเสนอด้วยแบบสอบถามแบบข้ามจะแสดงในรูปแบบที่กะทัดรัดกว่าแบบสอบถามแบบใช้เลือกข้อมูล ไวยากรณ์:

เปลี่ยนฟังก์ชั่น SELECT ...;

ฟังก์ชัน - ฟังก์ชัน SQL กลุ่มที่ประมวลผลข้อมูลของเซลล์ตาราง - ฟิลด์หรือนิพจน์ที่ค่ากลายเป็นส่วนหัว

คอลัมน์คามิ

แบบสอบถามในโหมดตารางจะมีคอลัมน์มากเท่ากับจำนวนค่าที่แตกต่างกันที่ฟิลด์ยอมรับ ตัวอย่างเช่น หากฟิลด์แสดงชื่อของเดือน ก็จะมีคอลัมน์ได้มากถึง 12 คอลัมน์ โดยส่วนหัวจะเรียงลำดับจากน้อยไปหามาก (สิงหาคม เมษายน...มกราคม) หลังอาร์กิวเมนต์ของฟิลด์ คุณสามารถวางคำสั่งย่อย IN(value_list) ได้ ค่าคงที่ใน value_list คั่นด้วยเครื่องหมายจุลภาค เมื่อมีคำสั่ง IN ค่าของฟิลด์แต่ละค่าจะถูกเปรียบเทียบกับค่าใน value_list หากมีการจับคู่กัน ผลลัพธ์ของการคำนวณฟังก์ชันจะแสดงในคอลัมน์ที่เกี่ยวข้อง ส่วนหัวคงที่ที่ไม่สอดคล้องกับข้อมูลจริงสามารถใช้สร้างคอลัมน์เพิ่มเติมได้

การใช้ส่วนคำสั่ง PIVOT เทียบเท่ากับการกำหนดคุณสมบัติส่วนหัวคอลัมน์ในแผ่นคุณสมบัติตัวสร้างแบบสอบถาม


การเปรียบเทียบ Microsoft Access SQL และ ANSI SQL Microsoft Access SQL ส่วนใหญ่เป็น ANSI-89 (ระดับ 1) คุณลักษณะ ANSI SQL บางอย่างไม่ได้ใช้ใน Microsoft Access SQL Microsoft Access SQL ใช้คำที่สงวนไว้และคุณลักษณะที่ไม่รองรับโดย ANSI SQL ใน Access 2000 (MS Jet มีการแนะนำส่วนขยาย 4.0) ที่ทำให้ภาษาใกล้เคียงกับมาตรฐาน ANSI SQL-92 มากขึ้น - โหมดนี้จะใช้ได้เฉพาะเมื่อใช้ MS OLE DB Provider สำหรับ Jet


ไวยากรณ์คำสั่ง SELECT (Microsoft Access) SELECT [ เพรดิเคต ] ( * | table.* | [ table.] field_1 [, [ table.] field_2 [,...]]) FROM expression [,...] Clause จาก SELECT list เขตข้อมูลจากนิพจน์ Expression คือนิพจน์ที่กำหนดตารางตั้งแต่หนึ่งตารางขึ้นไปซึ่งข้อมูลจะถูกดึงออกมา นิพจน์นี้อาจเป็นชื่อของตารางเดียว ชื่อของคิวรีที่บันทึกไว้ หรือผลลัพธ์ของการดำเนินการ INNER JOIN, LEFT JOIN หรือ RIGHT JOIN เข้าร่วมภายในเข้าร่วมซ้ายเข้าร่วมขวา


อาร์กิวเมนต์ของคำสั่ง SELECT เพรดิเคต (ALL, DISTINCT, DISTINCTROW หรือ TOP) เป็นหนึ่งในเงื่อนไขการเลือก เพรดิเคตใช้เพื่อจำกัดจำนวนเร็กคอร์ดที่ส่งคืน หากหายไป เพรดิเคตเริ่มต้นคือ ALL (เลือกระเบียนทั้งหมดที่ตรงกับเงื่อนไขที่ระบุในคำสั่ง SQL) คำสั่ง SQL DISTINCT - ไม่รวมระเบียนที่มีค่าซ้ำกันในฟิลด์ที่เลือก DISTINCTROW - ละเว้นข้อมูลโดยยึดตามบันทึกที่ซ้ำกันทั้งหมด แทนที่จะเป็นช่องที่ซ้ำกันแต่ละช่อง เพรดิเคต DISTINCTROW จะถูกละเว้นหากคิวรีมีเพียงตารางเดียวหรือทุกเขตข้อมูลของตารางทั้งหมด TOP n - ส่งกลับจำนวนระเบียนที่ระบุซึ่งอยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุดของช่วงที่อธิบายโดยใช้ส่วนคำสั่ง ORDER BY SELECT ]] FROM ตาราง 5 แผนกที่มีจำนวนมากที่สุด: เลือกพนักงาน 5 อันดับแรก[รหัสแผนก], จำนวน (ชื่อพนักงาน. ชื่อเต็ม) AS number_of_employees จากพนักงาน GROUP BY พนักงาน. [รหัสแผนก] ORDER BY จำนวน (ชื่อพนักงาน. ชื่อเต็ม) ดีเอสซี;


อาร์กิวเมนต์ของคำสั่ง SELECT Table - ชื่อของตารางที่ควรเลือกระเบียน ด้วยตัวเลือกการเป็นเจ้าของ - ใช้ในสภาพแวดล้อมที่มีผู้ใช้หลายคนพร้อมระบบรักษาความปลอดภัย คณะทำงานเพื่อให้ผู้ใช้ทำงานกับสิทธิ์คำขอที่ตรงกับสิทธิ์ของเจ้าของคำขอ field_1, field_2 - ชื่อของฟิลด์ที่ควรเลือกข้อมูล หากคุณใส่หลายช่อง ระบบจะดึงข้อมูลตามลำดับที่ระบุ Alias_1, Alias_2 - ชื่อที่จะกลายเป็นส่วนหัวของคอลัมน์แทนที่จะเป็นชื่อคอลัมน์ดั้งเดิมในตาราง นิพจน์ - ชื่อของตารางตั้งแต่หนึ่งตารางขึ้นไปที่มีข้อมูลที่ถูกเลือก ฐานข้อมูลภายนอก - ชื่อของฐานข้อมูลที่มีตารางที่ระบุโดยอาร์กิวเมนต์นิพจน์ หากไม่ได้อยู่ในฐานข้อมูลปัจจุบัน เลือกพนักงานชื่อเต็ม [เงินเดือน]*0.5 AS โบนัสจากพนักงาน เลือก Avg (employee.salary) AS Average_salary จากพนักงาน


การประมวลผลร่วมของหลายตาราง SELECT Employee.Name, subject.[ชื่อย่อของหัวเรื่อง] จากพนักงาน INNER JOIN (หัวเรื่อง INNER JOIN [ความเป็นเจ้าของวัตถุ] ON subject.[รหัสหัวเรื่อง] = [ความเป็นเจ้าของวัตถุ].[รหัสวินัย] ) ON Employee.Code = [ความเป็นเจ้าของรายการ].[รหัสพนักงาน];




ระหว่าง...และนิพจน์ 1 ระหว่างนิพจน์ 2 และนิพจน์ 3 (ใน Microsoft Access SQL นิพจน์ 2 สามารถมากกว่านิพจน์ 3 ได้ แต่ไม่ใช่ใน ANSI SQL) SELECT Employee.full name, Employee.salary จากพนักงาน WHERE (((employee.salary) ระหว่าง 1,000 ถึง 2000)); ข้อความค้นหา: SELECT Employee.full name, Employee.salary จากพนักงาน WHERE (((employee.salary) ระหว่างปี 2000 ถึง 1,000)); ไม่สร้างข้อผิดพลาดและให้คำตอบเดียวกัน SELECT Employee.full name, Employee.salary จากพนักงาน WHERE (((employee.salary) 15,000)); SELECT Employee.full name, Employee.salary จากพนักงาน WHERE (((employee.salary) ไม่อยู่ระหว่าง 1,000 ถึง 2000));


อักขระรูปแบบ อักขระรูปแบบต่างๆ ถูกนำมาใช้กับภาคแสดง Like อักขระรูปแบบ MS Access SQL ANSI SQL หนึ่งอักขระ? _ (ขีดเส้นใต้) กลุ่มอักขระ * % อักขระเดี่ยวรวมอยู่ใน character_list [ character_list] ไม่มีอักขระตัวเดียวที่ไม่รวมอยู่ใน character_list [! character_list] หายไป คุณลักษณะสองประการสุดท้ายคือ Access เท่านั้น Access 2000 ในโหมด ANSI SQL-92 อนุญาตให้ใช้อักขระตัวแทน ANSI คุณไม่สามารถผสมอักขระในคำขอเดียว SELECT Employee.full name FROM Employee WHERE (((employee.full name) Like "D*"));


ข้อ GROUP BY SELECT รายการเขตข้อมูลจากตาราง WHERE เงื่อนไขการเลือกโดยที่เขตข้อมูลที่จัดกลุ่มคือชื่อของเขตข้อมูล (สูงสุด 10) ที่ใช้ในการจัดกลุ่มระเบียน ลำดับของชื่อเขตข้อมูลในอาร์กิวเมนต์เขตข้อมูลที่ถูกจัดกลุ่มจะกำหนดระดับของการจัดกลุ่มสำหรับแต่ละเขตข้อมูลเหล่านั้น ใช้ส่วนคำสั่ง WHERE เพื่อแยกระเบียนออกจากการจัดกลุ่ม และใช้ส่วนคำสั่ง HAVING เพื่อใช้ตัวกรองกับระเบียนหลังจากการจัดกลุ่ม เมื่อใช้ GROUP BY clause ฟิลด์ทั้งหมดในรายการฟิลด์ของคำสั่ง SELECT จะต้องรวมอยู่ใน GROUP BY clause หรือใช้เป็นอาร์กิวเมนต์ของฟังก์ชันการรวม SQL แผนกที่มีพนักงานมากกว่า 5 คน: SELECT co-workers[Department code], Count(co-workers' full name) AS [Number of Employees] FROM co-workers GROUP BY co-workers[department code] HAVING (((Count( ชื่อเต็มของเพื่อนร่วมงาน))>5 )); 5));">




แบบสอบถามที่ซ้อนกัน ภาคแสดงมีอยู่ บริษัท พนักงาน SELECT, จำนวน (พนักงานพนักงาน) AS number_certificate_employee จากพนักงาน WHERE (((มีอยู่ (บริษัทพนักงาน SELECT DISTINCT, พนักงานพนักงานจากพนักงาน INNER JOIN อินสแตนซ์ ON พนักงานพนักงาน = พนักงานรายบุคคล)) เท็จ)) จัดกลุ่มตามบริษัทที่ทำงานร่วมกัน; False)) GROUP BY co-owned company;"> False)) GROUP BY co-owned company;"> False)) GROUP BY co-owned company;" title="Nested query. Predicate Exists. SELECT co - บริษัทที่เป็นเจ้าของ, Count(ผู้ทำงานร่วมกัน) AS number_certificate_collaborator จากผู้ทำงานร่วมกัน WHERE (((มีอยู่ (ผู้ทำงานร่วมกัน SELECT DISTINCT, ผู้ทำงานร่วมกันจากผู้ทำงานร่วมกัน INNER JOIN อินสแตนซ์ ON ผู้ทำงานร่วมกัน = ผู้ทำงานร่วมกันของอินสแตนซ์))False)) จัดกลุ่มตามบริษัทผู้ทำงานร่วมกัน;"> title="แบบสอบถามที่ซ้อนกัน ภาคแสดงมีอยู่ บริษัท พนักงาน SELECT, จำนวน (พนักงานพนักงาน) AS number_certificate_employee จากพนักงาน WHERE (((มีอยู่ (บริษัทพนักงาน SELECT DISTINCT, พนักงานพนักงานจากพนักงาน INNER JOIN อินสแตนซ์ ON พนักงานพนักงาน = พนักงานรายบุคคล)) เท็จ)) จัดกลุ่มตามบริษัทที่ทำงานร่วมกัน;"> !}








การสร้างแบบสอบถามย่อยโดยใช้ QBE Query Builder หากคุณใช้แบบสอบถามย่อยเพื่อกำหนดเงื่อนไขสำหรับฟิลด์ ให้ป้อนคำสั่ง SELECT ในเซลล์แถวเงื่อนไขการเลือกในคอลัมน์ของฟิลด์นั้น คำสั่ง SELECT จะต้องอยู่ในวงเล็บ








กำลังลบรายการ แบบสอบถาม SQL (สร้างขึ้น) ลบ DISTINCTROW ชื่อเต็มของนักเรียนจากนักเรียน WHERE (((student.full name)="Burlak G. N."));


คำสั่ง DELETE คำขอลบจะลบบันทึกทั้งหมด ไม่ใช่แค่เนื้อหาของฟิลด์ที่ระบุ หากต้องการลบข้อมูลสำหรับฟิลด์ใดฟิลด์หนึ่ง ให้สร้างแบบสอบถามอัปเดตบันทึกที่แทนที่ค่าที่มีอยู่ด้วยค่า Null คำขอลบโดยไม่มีเงื่อนไขการค้นหาจะลบระเบียนทั้งหมดออกจากตาราง ไม่เหมือนกับคำสั่ง DROP โครงสร้างตารางและคุณสมบัติทั้งหมดจะยังคงอยู่


กำลังลบรายการ แบบสอบถาม SQL แบบสอบถาม: ลบ * จากนักเรียน WHERE นักเรียนชื่อเต็ม = "Burlak G. N. "; ให้ผลลัพธ์ที่คล้ายกัน



















35





41