SQL คือทุกอย่างของเรา
อย่างที่คุณอาจเดาได้อยู่แล้ว คำสั่งทั้งหมดไปยังเซิร์ฟเวอร์ SQL สามารถกำหนดได้ผ่านคำสั่ง SQL ทุกอย่าง.
ทีมเหล่านี้แบ่งออกเป็น 4 กลุ่มอย่างเป็นทางการ:
-
คำสั่งนิยามข้อมูล (Data Definition Language, DDL ):
- CREATEสร้างวัตถุฐานข้อมูล (ฐานข้อมูลเอง ตาราง มุมมอง ผู้ใช้ และอื่นๆ)
- ALTERเปลี่ยนวัตถุ
- DROPลบวัตถุ
-
ตัวดำเนินการจัดการข้อมูล (Data Manipulation Language, DML ):
- SELECTเลือกข้อมูลที่ตรงตามเงื่อนไขที่กำหนด
- INSERTเพิ่มข้อมูลใหม่
- UPDATEเปลี่ยนแปลงข้อมูลที่มีอยู่
- DELETEลบข้อมูล
-
ตัวดำเนินการข้อกำหนดการเข้าถึงข้อมูล (ภาษาควบคุมข้อมูล, DCL ):
- GRANTให้สิทธิ์ผู้ใช้ (กลุ่ม) เพื่อดำเนินการบางอย่างกับวัตถุ
- REVOKEเพิกถอนการอนุญาตที่ออกมาก่อนหน้านี้
- DENYกำหนดข้อห้ามที่มีผลเหนือกว่าใบอนุญาต
-
คำสั่งTransaction Control Language ( TCL ) :
- COMMITใช้การทำธุรกรรม
- ROLLBACKย้อนกลับการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นในบริบทของธุรกรรมปัจจุบัน
- SAVEPOINTแบ่งการทำธุรกรรมออกเป็นส่วนย่อยๆ
และสองระดับแรก เราศึกษาเฉพาะคำสั่ง SELECT ที่หลากหลาย ลองนึกดูว่าในอนาคตจะมีอะไรน่าสนใจรอเราอยู่มากมาย
แต่เรากำลังเตรียมที่นี่เป็นหลักเกี่ยวกับโปรแกรมเมอร์ Java ดังนั้นเราจะศึกษาสถานการณ์เหล่านั้นที่คุณจะต้องเจอในที่ทำงานอย่างแน่นอน
ผู้ดูแลระบบในโครงการมักจะสร้างฐานข้อมูลทั้งหมด แต่คุณจะต้องเลือกจากข้อมูลด้วยตัวเองหลายครั้ง
ยิ่งไปกว่านั้น บางครั้งโค้ดของคุณก็ไม่ได้เขียนข้อมูลทั้งหมดลงในฐานข้อมูลหรือเขียนผิดวิธี ดังนั้นคุณมักจะต้องปีนขึ้นไปด้วยปากกาและดูว่าอะไรถูกเก็บไว้ที่นั่นจริงๆ
เรามาพูดถึงสิ่งที่เราได้สัมผัสในการบรรยายครั้งก่อนกันอีกครั้ง
การสร้างสคีมาในฐานข้อมูล
ในการสร้าง schema ใหม่ใน DBMS คุณต้องเรียกใช้คำสั่ง:
CREATE SCHEMA Name;
นี่เป็นตัวเลือกที่ง่ายที่สุด นอกจากนี้ เมื่อสร้างสคีมาใหม่ คุณสามารถระบุรูปแบบการเข้ารหัสข้อมูลและพารามิเตอร์อื่นๆ
หากคุณต้องการลบสคีมา แต่คุณไม่แน่ใจว่ามีอยู่หรือไม่ คุณต้องเรียกใช้คำสั่ง:
DROP SCHEMA IF EXIST Name;
คุณมักจะเห็นคำสั่งเหล่านี้ในไฟล์ที่มีข้อมูลสำรองของฐานข้อมูลต่างๆ นั่นเป็นเหตุผลที่ฉันนำมาไว้ที่นี่
การเลือกโครงร่างปัจจุบัน
หากคุณมีสคีมาจำนวนมากใน DBMS ของคุณ อาจเกิดขึ้นได้โดยง่ายที่สคีมาต่างๆ มีตารางเดียวกัน เพื่อหลีกเลี่ยงความสับสน คุณสามารถทำสองสิ่ง:
- ใส่ชื่อ schema ก่อนชื่อตารางเสมอ
- ระบุสคีมาเริ่มต้น
มาเขียนแบบสอบถามที่จะเลือกข้อมูลจากตารางผู้ใช้ซึ่งอยู่ในสคีมาทดสอบ มันจะมีลักษณะดังนี้:
SELECT * FROM test.user;
นี่เป็นสิ่งที่ขาดไม่ได้หากคุณต้องการเข้าร่วม (JOIN) หลายตารางจากสคีมาที่แตกต่างกันในแบบสอบถามเดียว
อย่างไรก็ตามในภาษา Java เรามักจะทำสิ่งที่คล้ายกัน: หากในรหัสเราจำเป็นต้องใช้คลาสที่มีชื่อเดียวกันจากแพ็คเกจต่างๆ เราจะเพิ่มชื่อแพ็คเกจก่อนชื่อคลาส
วิธีที่สองคือการระบุสคีมาเริ่มต้น ถ้าคิวรีระบุชื่อตารางแต่ไม่มีสคีมา ระบบจะใช้สคีมาเริ่มต้น ในการทำเช่นนี้ ให้ใช้คำสั่ง USE :
USE name - schemes;
ลองเขียนแบบสอบถามก่อนหน้านี้ใหม่โดยใช้คำสั่ง USE:
USE test;
SELECT * FROM user;
การสร้างมุมมอง
นอกจากตารางที่มีข้อมูลจริงแล้ว SQL ยังให้คุณจัดเก็บบางอย่าง เช่น ตารางเสมือน ซึ่งข้อมูลจะถูกดึงมาจากตารางจริง ตารางเสมือนดังกล่าวเรียกว่า VIEW
ตารางดังกล่าวไม่สามารถเก็บข้อมูลจริงได้ และทุกครั้งที่มีการเข้าถึง ตารางดังกล่าวจะดึงข้อมูลจากตารางจริง เนื้อหาของ VIEW ดังกล่าวถูกระบุโดยใช้แบบสอบถาม SQL
คุณสามารถสร้าง VIEW จากแบบสอบถาม SELECT ด้วยคำสั่งเช่น:
CREATE VIEW Name AS
SELECT-request;
CREATE VIEW public_employee AS
SELECT id, name FROM employee
ในตัวอย่างข้างต้น ตารางของเรา (VIEW) public_employee จะมีเฉพาะรหัสพนักงานและชื่อเท่านั้น แต่ไม่มีข้อมูลเกี่ยวกับเงินเดือน คุณสามารถใช้มุมมองดังกล่าวในที่เดียวกับตารางจริง
เหตุใดจึงจำเป็นต้องมีการดู พวกเขามีข้อดีหลายประการ:
การควบคุมการเข้าถึงข้อมูลที่ยืดหยุ่น คุณสามารถให้สิทธิ์การเข้าถึง VIEW แก่ผู้ใช้บางรายเท่านั้น แต่ไม่สามารถให้สิทธิ์การเข้าถึงตารางได้ และใน View นำเฉพาะข้อมูลสาธารณะออกจากตาราง นอกจากนี้ หากมีการเพิ่มคอลัมน์ใหม่ที่มีข้อมูลสำคัญลงในตารางในอนาคต คอลัมน์นั้นจะไม่เข้าไปใน View โดยไม่ได้ตั้งใจ
การ ทำให้เป็นมาตรฐานของข้อมูล เพื่อความสะดวกในการจัดเก็บข้อมูลมักถูกแบ่งออกเป็นตารางหลายแสนตาราง แต่ไม่สะดวกสำหรับคนธรรมดาที่จะทำงานกับข้อมูลดังกล่าว - คุณต้องเขียนแบบสอบถามที่ซับซ้อนเกินไป ด้วย View คุณสามารถสร้างตารางเสมือนที่แสดงข้อมูลจากตารางที่แตกต่างกันหลายสิบตารางในตารางเดียว
ความหลากหลายและการห่อหุ้ม . คุณสามารถเปลี่ยนโครงสร้างของฐานข้อมูลของคุณได้ ในขณะเดียวกัน ผู้ใช้โปรแกรมที่ทำงานกับ Views ของคุณจะไม่เดาว่ามีอะไรเปลี่ยนแปลง และไม่จำเป็นต้องเขียนโค้ดของโปรแกรมที่มีสิทธิ์เข้าถึง View ใหม่ คุณจะต้องปรับแต่งสคริปต์ SQL ที่เกี่ยวข้องกับ VIEW
อ่านอย่างเดียว . มุมมองสามารถตั้งค่าได้ด้วยคิวรี SELECT เท่านั้น ดังนั้นการทำงานกับวิวจึงไม่สามารถเปลี่ยนแปลงข้อมูลในตารางจริงได้แต่อย่างใด อย่างไรก็ตาม นี่เป็นข้อดีอีกอย่างของการแคชข้อความค้นหา แต่ในครั้งต่อไป
GO TO FULL VERSION