สูตรโกงคำสั่ง SQL

สูตรโกงคำสั่ง SQL

SQL เป็นภาษาคิวรีที่มีโครงสร้าง มันถูกสร้างขึ้นโดยเฉพาะเพื่อจัดการและเข้าถึงข้อมูลที่เก็บไว้ในฐานข้อมูลเชิงสัมพันธ์ บริษัท ร่วมทุนเชิงพาณิชย์แห่งแรกที่ใช้ SQL คือ Oracle ซึ่งยังมีภาษาคิวรี SQL * Plus เป็นพื้นฐานของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ (RDMS) ทั้งหมด.

ทุกวันนี้ MySQL, SQL Server, SAP และ Sybase ทั้งหมดใช้ SQL สำหรับการเข้าถึงฐานข้อมูล ในคู่มือนี้เราจะให้คำสั่ง SQL เวอร์ชันมาตรฐานแก่คุณโดยเฉพาะอย่างยิ่งการใส่ใจกับการติดตั้ง Oracle ใน SQL * Plus.

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

ฐานข้อมูลเชิงสัมพันธ์

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

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

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

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

DQL, DDL, DCL และ DML

SQL มีชุดย่อยคำสั่งสี่ชุด เหล่านี้คือ ภาษาแบบสอบถามข้อมูล (DQL), ข้อมูลคำอธิบายภาษา (DDL), ภาษาควบคุมข้อมูล (DCL) และ ภาษาการจัดการข้อมูล (ดราก้อน).

ในโครงการส่วนใหญ่ ผู้ดูแลระบบฐานข้อมูล (DBA) เป็นสมาชิกในทีมเท่านั้นที่มีสิทธิ์ใช้งาน DDL. กลุ่มคำสั่งนี้สร้างเปลี่ยนแปลงและลดตารางดัชนีทริกเกอร์และมุมมอง.

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

DQL ใช้สำหรับสร้างรายงานจากฐานข้อมูล ส่วนย่อยคำสั่งนี้ถูกใช้โดยโปรแกรมเมอร์และยังสามารถทำให้ผู้ใช้ปลายทางสามารถใช้คำสั่งของตนเองได้.

การจัดการสิทธิ์ผู้ใช้จะถูกเก็บไว้ในฐานข้อมูลเดียวกับข้อมูล อย่างไรก็ตามการเข้าถึงตารางเหล่านี้มักจะ จำกัด อยู่ที่ DBA การจัดการการเข้าถึงของผู้ใช้นั้นดำเนินการผ่านทั้งหมด DCL.

มีคำสั่ง SQL ที่มีประโยชน์อย่างหนึ่งที่ไม่จัดอยู่ในประเภทของ DQL, DDL, DCL หรือ DML นี่คือ “อธิบาย” ซึ่งมักจะนำมาใช้เป็น DESC. สิ่งนี้แสดงโครงสร้างของวัตถุในฐานข้อมูล ในกรณีของตารางมันจะแสดงรายการของคอลัมน์และประเภทข้อมูลและขนาดของแต่ละ มันจะแสดง SQL ที่สร้างมุมมองหรือทริกเกอร์และมันจะแสดงคอลัมน์ที่เกี่ยวข้องในดัชนีที่กำหนด.

ผู้ประกอบการเชิงสัมพันธ์

ทฤษฎีที่อยู่เบื้องหลังฐานข้อมูลเชิงสัมพันธ์ถูกกำหนดโดย E. F. Codd ในปี 1970 ภายในข้อกำหนดของ Codd ข้อกำหนดของเครื่องมือค้นหาที่ต้องใช้การดำเนินการเชิงสัมพันธ์ที่จำเป็นแปดประการ เหล่านี้คือ:

  1. เลือก
  2. โครงการ
  3. เข้าร่วม
  4. ผลิตภัณฑ์
  5. ยูเนี่ยน
  6. ตัด
  7. ความแตกต่าง
  8. การแบ่ง

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

เลือก

เดิมชื่อว่า SELECT จำกัด. มันเป็นความสามารถในการแยกหนึ่งระเบียนหรือกลุ่มของระเบียนที่ตรงกันจากตารางในฐานข้อมูล ตลอดจนการดำเนินการทางทฤษฎี, เลือก เป็นชื่อของคำสั่งหลักในการปรับใช้ SQL ใด ๆ ในความเป็นจริงการดึงข้อมูลทั้งหมดจะถูกดำเนินการด้วย SELECT คำสั่งมีประสิทธิภาพมากจนสามารถแก้ไขได้หลายวิธี SQL ส่วนใหญ่ที่คุณจะต้องเรียนรู้คือ“ คำสั่ง” ในคำสั่ง SELECT.

โครงการ

โครงการคือความสามารถในการแยกคอลัมน์ (หรือ “แอตทริบิวต์”) ในตาราง สิ่งนี้ถูกนำไปใช้เสมอกับคำสั่ง SELECT.

เข้าร่วม

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

ผลิตภัณฑ์

ผลิตภัณฑ์เป็นที่รู้จักกันว่า“ครั้ง.” สิ่งนี้ถูกนำไปใช้เป็นคำสั่ง SELECT ที่ดึงข้อมูลจากสองตาราง แต่ไม่ได้ระบุการเข้าร่วมระหว่างพวกเขา ในชีวิตจริงมีเหตุผลเชิงปฏิบัติน้อยมากที่ใคร ๆ ก็เคยเล่นบนโต๊ะสองครั้ง โดยปกติจะเป็นสัญญาณเตือนว่าคุณได้เขียนคำสั่ง JOIN อย่างไม่ดี ผลลัพธ์ของ PRODUCT คือทุกระเบียนที่มีคุณสมบัติในหนึ่งตารางจับคู่กับทุกระเบียนที่มีคุณสมบัติเหมาะสมในตารางอื่น ดังนั้นถ้าคุณสร้างคำสั่ง SELECT จากสองตารางซึ่งแต่ละรายการมีสิบเรคคอร์ดผลลัพธ์จะมีทั้งหมด 100 เรคคอร์ด.

ยูเนี่ยน

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

ตัด

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

ความแตกต่าง

ความแตกต่างยังเป็นที่รู้จักกันในนาม“ลบ” และเครื่องหมายจะแสดงด้วยเครื่องหมายลบ (“ -“) มีหลายวิธีในการใช้ความแตกต่าง มันสามารถสร้างได้โดยการรวมบูลีน ไม่ ในเกณฑ์การคัดเลือกและสามารถนำมาใช้โดย ลบ ผู้ประกอบการตามด้วยแบบสอบถามย่อย.

การแบ่ง

การแบ่งเป็นการดำเนินการที่ผิดปกติที่เช่น PRODUCT มีแอปพลิเคชั่นที่ใช้งานได้น้อยมาก Codd ถือเป็น DIVIDE ในการทดสอบความเป็นกรดของระบบเชิงสัมพันธ์ใด ๆ และเครื่องมือการสืบค้นดังนั้นการใช้งาน SQL ทุกครั้งรวมถึงความสามารถนี้เพื่อให้มีคุณสมบัติสำหรับชื่อเรื่อง “ความสัมพันธ์” ในความเป็นจริงคุณจะไม่ใช้มันเลย การใช้ DIVIDE นั้นจำเป็นต้องมีชุดของแบบสอบถามย่อยที่ป้อนเข้าไป ลบ ใน Oracle SQL * Plus และ ยกเว้น ตัวดำเนินการในการปรับใช้ SQL อื่น ๆ เช่น SQL Server และ PostgreSQL.

ตัวดำเนินการบูลีน

George Boole เป็นนักคณิตศาสตร์ชาวอังกฤษผู้ที่เสียชีวิตในปี 2407 เขาคิดค้นพีชคณิตแบบบูลซึ่งไม่มีการใช้งานจริงจนกว่าจะมีสาขาวิชาสารสนเทศและฐานข้อมูลเชิงสัมพันธ์เกิดขึ้นในปลายศตวรรษที่ 20 พีชคณิตแบบบูลเป็นศูนย์กลางของการดำเนินงานของ SQL – คุณสามารถเขียนแบบสอบถาม SQL พื้นฐานที่สุดโดยไม่ต้องใช้ตรรกะแบบบูล ตรรกะบูลีนยังหนุนเครื่องมือค้นหาทั้งหมด ตัวดำเนินการบูลีนสำคัญใน SQL คือ:

  • และ
  • หรือ
  • ไม่

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

และ

และดำเนินการ ตัด ในทฤษฎีเซต หากคุณต้องการดึงระเบียนออกจากฐานข้อมูลที่ตรงกับข้อกำหนดสองข้อเท่านั้นและไม่ใช่เพียงหนึ่งในเกณฑ์ประกอบนั้นคุณต้องใช้ AND ตัวอย่างเช่นคุณอาจดำเนินธุรกิจเมล็ดพันธุ์และฐานข้อมูลของคุณมีตารางที่เก็บเมล็ดพันธุ์ทั้งหมดของคุณด้วยคุณลักษณะของพวกเขา ลูกค้าโทรเข้ามาและต้องการ begonias สีเหลืองเท่านั้น ดังนั้นคุณจะค้นหาฐานข้อมูลของคุณ สายพันธุ์ = “ต้นดาดตะกั่ว” และสี = “สีเหลือง” เพื่อรับแคตตาล็อกเมล็ดพันธุ์ที่ถูกต้อง.

หรือ

หรือให้สมาชิกทั้งหมดของสองชุด – มันคือ UNION ในทฤษฎีเซต ดังนั้นในฐานข้อมูลเมล็ดของคุณหากคุณเรียกใช้แบบสอบถาม: สายพันธุ์ = “ต้นดาดตะกั่ว” หรือสี = “สีเหลือง”, คุณจะได้รับผลลัพธ์ที่รวมดอกกุหลาบสีเหลืองต้นดาดตะกั่วสีเหลืองต้นกำเนิดสีชมพูและดอกแดฟโฟดิลสีเหลือง ในตัวอย่างนี้ begonias สีเหลืองมีคุณสมบัติสองครั้ง ในทฤษฎีเชิงสัมพันธ์ควรส่งคืนระเบียนเดียวเท่านั้น โชคดีที่ SQL รวมคุณสมบัติไว้ด้วย ที่แตกต่าง, ดังนั้นโดยการเข้าสู่ เลือก DISTINCT * จากดอกไม้ WHERE ขยายพันธุ์ =“ ต้นดาดตะกั่ว” หรือสี =“ สีเหลือง”, บันทึกต้นดาดตะกั่วสีเหลืองนั้นจะปรากฏเพียงครั้งเดียว.

ไม่

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

วงเล็บ

ตามกฎหมายของ De Morgan:

“ การปฏิเสธของความแตกแยกคือการรวมกันของการปฏิเสธ; และการปฏิเสธของการรวมเป็นความร้าวฉานของการปฏิเสธ”.

ในภาษาอังกฤษธรรมดาให้ใช้วงเล็บอย่างระมัดระวังในคำสั่ง SQL ของคุณเมื่อรวมถึงการห้ามเพื่อป้องกันไม่ให้ AND ของคุณเปลี่ยนเป็น ORs และในทางกลับกัน การถ่ายคร่อมเงื่อนไขร่วมกันสามารถทำให้เกณฑ์การเลือกของคุณสั้นลง ตัวอย่างเช่น, ไม่ (สปีชีส์ =“ ต้นดาดตะกั่ว” และสี =“ สีเหลือง”) เป็นเช่นเดียวกับ ไม่ใช่สายพันธุ์ = “ต้นดาดตะกั่ว” หรือไม่สี = “สีเหลือง”.

แยกบันทึก

การใช้ SQL ที่แตกต่างกันใช้ไวยากรณ์ที่แตกต่างกัน แต่ในคู่มือนี้เราจะปฏิบัติตาม SQL * Plus ของ Oracle โครงสร้างพื้นฐานของการเลือกข้อมูล SQL คือ:

เลือก
จาก

WHERE

สิ่งนี้จะให้รายการค่าจากหนึ่งคอลัมน์ในหนึ่งตาราง นี้เป็น โครงการ การดำเนินการเชิงสัมพันธ์ที่กำหนดโดย Codd.

คุณสามารถเพิ่มคอลัมน์ลงใน SELECT หรือใช้ตัวดำเนินการตัวแทน (“* * * *”) เพื่อรับคอลัมน์ทั้งหมดในตาราง:

เลือก *
จาก

WHERE

นี่คือ Codd’s เลือก การดำเนินงานเชิงสัมพันธ์ ปราศจาก WHERE ข้อคุณจะได้รับทุกบันทึกในตาราง.

มีหลายคอลัมน์คั่นด้วยเครื่องหมายจุลภาค (“,“):

เลือกคอลัมน์ 1, คอลัมน์ 2, คอลัมน์ 7
จาก

WHERE

WHERE ข้อเลือกระเบียนที่เฉพาะเจาะจง นี่คือจุดประสงค์ที่สำคัญที่สุดของโอเปอเรเตอร์บูลีน:

เลือก seed_num, seed_desc
จากเมล็ด
WHERE สายพันธุ์ = “ต้นดาดตะกั่ว” และสี = “สีเหลือง”

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

เข้าร่วมตาราง

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

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

เลือก a.seed_num, a.seed_desc, b.supplier_name
จากเมล็ด a ซัพพลายเออร์ b
WHERE a.species =“ ต้นดาดตะกั่ว” และ a.color =“ สีเหลือง”
AND b.supplier_ID = a.supplier_ID

ในตัวอย่างข้างต้น, supplier_id เป็นคีย์หลักในตารางซัพพลายเออร์และฟิลด์ที่มีชื่อเดียวกันคือคีย์ต่างประเทศในตารางเมล็ดที่เชื่อมโยงกับบันทึกที่เหมาะสมในตารางซัพพลายเออร์.

แม้ว่าจะเป็นไปได้ในทางเทคนิคที่จะใช้ OR สำหรับการเข้าร่วม แต่ก็เป็นเรื่องปกติที่จะใช้ AND ใช้ ORs สำหรับเกณฑ์การเลือกเท่านั้นและไม่ใช้สำหรับสร้างการเข้าร่วม.

subqueries

คุณสามารถใช้ เลือก คำสั่งเป็นแหล่งข้อมูลสำหรับหลัก เลือก และคุณยังสามารถเข้าร่วมหลาย ๆ เลือก คำสั่งพร้อมกับผู้ประกอบการเช่น ลบ. อินสแตนซ์ของข้อความค้นหาพิเศษเหล่านี้ที่ให้บริการคำสั่ง SELECT หลักเรียกว่าsubqueries.” เมื่อสร้างเคียวรีย่อยคีย์เวิร์ด ใน มีประโยชน์มาก.

ตัวอย่างเช่นหากคุณต้องการได้รับ begonias สีเหลืองจากซัพพลายเออร์ในสหภาพยุโรปคุณสามารถสร้างรายการค่าด้วย ใน เช่น:

เลือก a.seed_num, a.seed_desc, b.supplier_name
จากเมล็ด a ซัพพลายเออร์ b
WHERE a.species =“ ต้นดาดตะกั่ว” และ a.color =“ สีเหลือง”
AND b.supplier_ID = a.supplier_ID
และ b.supplier_country IN (“ สหราชอาณาจักร”,” ฝรั่งเศส”,” เยอรมนี” …)

รายการของทุกประเทศในสหภาพยุโรปนั้นจะมีค่าถึง 28 ค่าและคุณจะต้องพิมพ์ในทั้งหมดของพวกเขา – “… ” ในตัวอย่างนั้นเป็นเพียงความกะทัดรัดเท่านั้น ในตัวอย่างนี้คุณจะต้องทบทวนการสืบค้นของคุณทั้งหมดและแก้ไขรายการของค่าเมื่อใดก็ตามที่ประเทศเข้าร่วมหรือออกจากสหภาพยุโรป มันมีประสิทธิภาพมากกว่าในการสร้างตารางของประเทศในสหภาพยุโรปและอ้างถึงสิ่งนั้น จากนั้นคุณจะต้องเพิ่มหรือลบบันทึกในตารางเดียวเนื่องจากองค์ประกอบของการเปลี่ยนแปลงของสหภาพยุโรป.

ในสถานการณ์นี้คุณจะสร้างตารางชื่อ EU_countries โดยมีฟิลด์ country_ID เป็นคีย์หลักและคอลัมน์ country_name จากนั้นคุณสามารถสร้างแบบสอบถามย่อยเพื่อสร้างรายการประเทศ EU นั้น:

เลือก a.seed_num, a.seed_desc, b.supplier_name
จากเมล็ด a ซัพพลายเออร์ b
WHERE a.species =“ ต้นดาดตะกั่ว” และ a.color =“ สีเหลือง”
AND b.supplier_ID = a.supplier_ID
และ b.supplier_country IN (เลือก country_name จาก EU_countries)

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

เลือก a.seed_num, a.seed_desc, b.supplier_name
จากเมล็ด a ซัพพลายเออร์ b
WHERE a.species =“ ต้นดาดตะกั่ว” และ a.color =“ สีเหลือง”
AND b.supplier_ID = a.supplier_ID
ลบ
SELECT c.seed_num, c.seed_desc, d.supplier_name
จากเมล็ด c, ซัพพลายเออร์ d, EU_countries e
WHERE d.supplier_country_ID = e.country_ID
AND b.supplier_ID = a.supplier_ID

ในตัวอย่างด้านบนแบบสอบถามที่สองจะนำระเบียนกลับมาไกลกว่าแบบสอบถามแรก อย่างไรก็ตามจะไม่มีผลลัพธ์จากการสืบค้นนั้นปรากฏในผลลัพธ์ ผลลัพธ์ใด ๆ ในแบบสอบถามหลักที่ตรงกับผลลัพธ์ของแบบสอบถามที่สองจะถูกลบออกจากรายการผลลัพธ์.

จัดกลุ่มตาม

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

SELECT ดอกไม้สายพันธุ์อินสแตนซ์นับ (1)
จากเมล็ด
จำแนกตามสายพันธุ์

ในตัวอย่างนี้คุณสามารถเห็นฟังก์ชั่น, นับ. สิ่งนี้ต้องการคอลัมน์เป็นพารามิเตอร์ แต่คุณสามารถกำหนดโทเค็นแทนได้ในกรณีนี้, 1.  ตัวอย่างนี้ยังแสดงให้เห็นว่าคุณสามารถให้ชื่อแทนชื่อคอลัมน์ ไม่มีอาการโคม่าระหว่างสปีชีส์และดอกไม้ในบรรทัดแรกของ เลือก. DBMS จะตีความคำที่สองนี้ให้เป็นชื่อคอลัมน์ที่จะแสดงในผลลัพธ์ ในการประยุกต์ใช้ SQL บางตัวนามแฝงนั้นจำเป็นต้องอยู่ในเครื่องหมายคำพูดและในตัวอื่น ๆ ควรระบุด้วยคำสำคัญ เช่น:

พันธุ์ที่เลือกเป็น“ ดอกไม้” นับ (1) เป็น“ อินสแตนซ์”
จากเมล็ด
จำแนกตามสายพันธุ์

การใส่ชื่อที่มีความหมายลงในคอลัมน์เป็นสิ่งสำคัญอย่างยิ่งหากคุณกำลังใช้ฟังก์ชั่นในการสืบค้นของคุณ.

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

สั่งโดย

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

เลือก DISTINCT สปีชีส์
จากเมล็ด
เรียงตามสายพันธุ์ DESC

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

ในตัวอย่างนี้คุณจะเห็น ที่แตกต่าง ตัวเลือกใน เลือก, ซึ่งมีผลเช่นเดียวกับ a จัดกลุ่มตาม. อย่างไรก็ตามหากคุณเพิ่มฟังก์ชั่นการรวมเข้ากับ SELECT คุณจะต้องใช้ จัดกลุ่มตาม แทน ที่แตกต่าง.

ฟังก์ชัน SQL

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

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

ชีตโกง Comparitech SQL

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

About the author