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 ข้อกำหนดของเครื่องมือค้นหาที่ต้องใช้การดำเนินการเชิงสัมพันธ์ที่จำเป็นแปดประการ เหล่านี้คือ:
- เลือก
- โครงการ
- เข้าร่วม
- ผลิตภัณฑ์
- ยูเนี่ยน
- ตัด
- ความแตกต่าง
- การแบ่ง
คุณต้องมีความเชี่ยวชาญในแต่ละการดำเนินการเหล่านี้เพื่อที่จะเข้าถึงข้อมูลได้อย่างมีประสิทธิภาพจากฐานข้อมูลเชิงสัมพันธ์ เหล่านี้อธิบายไว้ด้านล่าง.
เลือก
เดิมชื่อว่า 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 คือ:
เลือก
จาก