การใช้แบบสอบถาม SELECT เพื่อเลือกข้อมูลที่ต้องการ วัตถุประสงค์ของภาษา SQL

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

SELECT * จากเจ้าหน้าที่ WHERE แผนก

คิวรี SQL มักจะใกล้เคียงกับนิพจน์ทั่วไปในภาษาอังกฤษ คำสั่งข้างต้นสามารถแปลเป็นภาษารัสเซียได้ดังนี้

เลือกทั้งหมดจากเจ้าหน้าที่ WHERE clwjiertme"

เป็นคำสั่งที่เข้าใจได้อย่างสมบูรณ์ แต่น่าเสียดายที่เขียนเป็นภาษาอังกฤษโดยเฉพาะ จากผลของการดำเนินการค้นหาดังกล่าว DBMS จะส่งคืนบันทึกทั้งหมดจากตาราง Staff โดยที่ฟิลด์ exit* Mit_id มีค่าเท่ากับสาม ในตัวอย่างของเรา จริงๆ แล้วแบบสอบถามนี้จะเลือกเฉพาะโปรแกรมเมอร์จากฐานพนักงานทั้งหมด

หากคุณไม่เคยทำงานกับ DBMS มาก่อน คุณอาจมีคำถามที่สมเหตุสมผล: คุณจะดำเนินการได้ที่ไหนและอย่างไร คำขอนี้- มีสามวิธีในการรันคำสั่ง SQL

1. สภาพแวดล้อมแบบโต้ตอบสำหรับการโต้ตอบกับ DBMS สำหรับเซิร์ฟเวอร์ DBMS ส่วนใหญ่ มีโปรแกรมไคลเอนต์ (ในตัวหรือจัดทำโดยบุคคลที่สาม) ในสภาพแวดล้อมการทำงานที่คุณสามารถเขียนคำสั่ง SQL ดำเนินการและรับผลลัพธ์ได้ โดยทั่วไปแล้ว ผู้ดูแลระบบฐานข้อมูลจะใช้เครื่องมือดังกล่าว และไม่เกี่ยวข้องโดยตรงกับการเขียนโปรแกรม PHP ตัวอย่างของโปรแกรมไคลเอนต์สำหรับการทำงานกับ MySQL คือโปรแกรม MySQL Administrator (http: /www.mysgl.coin/product-s/administratoT/) หรือระบบ PHP ยอดนิยม phpMyAdmin (http: / /www. phpmyadi'ln r»et /itummjiage/index.php) ในการเริ่มต้นก็จะเพียงพอแล้ว ติดตั้งจำหน่ายซึ่งมีอินเทอร์เฟซคอนโซล บน Linux จำเป็นจาก บรรทัดคำสั่งพิมพ์คำสั่ง mysql เพื่อเปิดหน้าต่างพร้อมท์ให้คุณป้อนคำสั่ง SQL และใน Windows เพื่อเปิดอินเทอร์เฟซเดียวกับที่คุณต้องรัน ไฟล์ mysql- exe จากไดเร็กทอรี bin

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

3. แบบสอบถาม SQL แบบไดนามิก ถึง สายพันธุ์นี้ซึ่งรวมถึงแบบสอบถามที่ไม่สามารถกำหนดได้ครบถ้วนเมื่อเขียนแอปพลิเคชัน ฉัน" ตัวอย่างเช่น เมื่อเขียนโปรแกรมเพื่อรับรายชื่อพนักงาน" ในส่วนต่างๆ ขององค์กร โปรแกรมเมอร์ไม่ทราบ ci "> เกี่ยวกับแผนกในบริษัท และพนักงานคนใดที่จะรวมอยู่ในแผนกเหล่านั้น i" แน่นอน ข้อมูลนี้สามารถเขียนลงในโปรแกรมได้อย่างเคร่งครัด แต่เมื่อมีการเปลี่ยนแปลงโครงสร้างของบริษัทครั้งแรกโปรแกรมสามารถถูกโยนทิ้งหรือจะต้องเขียนใหม่ได้ Dynamic Queries ทำให้คุณสามารถสร้างโปรแกรมที่มีความยืดหยุ่นในการเปลี่ยนแปลงได้ ข้อมูล ใน PHP การสืบค้นดังกล่าวจะดำเนินการโดยฟังก์ชันเกือบจะเหมือนกับฟังก์ชันคงที่ มีเพียง '^v'> เท่านั้นที่ไม่สามารถส่งผ่านพารามิเตอร์บางตัวได้

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

เนื่องจาก DBMS สามารถแก้ปัญหาได้มากมาย SQL จึงถูกบังคับให้เป็นภาษามัลติฟังก์ชั่นด้วย มีการดำเนินการหลายประเภทที่สามารถทำได้< \ ществлять с помощью SQL.

1. คำจำกัดความของโครงสร้างฐานข้อมูล ประเภทนี้รวมถึงแบบสอบถามที่สร้างและแก้ไขตารางและดัชนี โดยปกติจะเป็นคำสั่ง CRE “E TA' LE, ALI'R TA' LE, ' ' '.TE INDEX เป็นต้น

2. การจัดการข้อมูล ประเภทนี้รวมถึงการสืบค้นเพื่อแทรก (ย้าย) ลบหรือเปลี่ยนแปลงข้อมูลในตาราง นี่คือคำสั่งหลักสามคำสั่ง: INSERT ลบและอัปเดต

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

4. การจัดการเซิร์ฟเวอร์ DBMS ประเภทนี้ส่วนใหญ่ประกอบด้วยข้อความค้นหาเพื่อจัดการผู้ใช้และสิทธิ์การเข้าถึง (เช่น คำสั่ง GRANT)

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

เช่นเดียวกับในด้านอื่น ๆ ของ IT มีมาตรฐานใน SQL - เหล่านี้คือ ANSI SQL ตัวย่อ ANSI ย่อมาจาก Amrican National Standards Institute อย่างไรก็ตามไม่น้อยเพราะความแตกต่างในการทำงานของ SQL DBMS เองที่แตกต่างกัน

DBMS ยังคงแตกต่างกัน ในขณะนี้ DBMS เกือบทุกตัวมีภาษาถิ่นของตัวเองซึ่งโดยปกติจะไม่แตกต่างจากมาตรฐานทั่วไปมากนัก แต่มีลักษณะเฉพาะของตัวเอง ตัวอย่างเช่น ภาษา PL/SQL เข้ากันได้กับ Oracle และ PostgreSQL และใช้ T-SQL เพื่อทำงานกับ MS SQL Server

ในการทำงานกับฐานข้อมูลในภายหลัง เราขอแนะนำให้ศึกษามาตรฐานที่คุณวางแผนจะทำงานในอนาคตทันที สำหรับนักพัฒนาเว็บส่วนใหญ่ในขณะนี้ ฟังก์ชันการทำงานของ MySQL DBMS ก็เพียงพอแล้ว (และสามารถใช้งานได้ฟรี) ดังนั้นในหนังสือเล่มนี้จะมีการยกตัวอย่างทั้งหมดของ MySQL ในภาษาถิ่นของ DBMS นี้ตามลำดับ เอกสารเกี่ยวกับภาษาคิวรีสำหรับ MySQL สามารถดูได้ที่ www.mysql.com

โปรแกรมไคลเอนต์

โปรโตคอล TFTP

TFTP-เดียวกัน โปรโตคอล FTPแต่อยู่ด้านบนของโปรโตคอล UDP (เช่น โปรโตคอลที่ไม่มีการรับประกันการจัดส่ง) สามารถนำมาใช้ใน เครือข่ายท้องถิ่นโดยที่ความเร็วในการส่งข้อมูลมีความสำคัญมากกว่า ในทางปฏิบัติไม่ค่อยได้ใช้

FTP-โปรแกรมถูกเรียกใช้จากบรรทัดคำสั่ง

ผู้บัญชาการของ Windows- สามารถทำงานเป็นไคลเอนต์ FTP ได้ ช่วยให้คุณทำงานกับไดเร็กทอรีระยะไกลได้ในลักษณะเดียวกับไดเร็กทอรีในเครื่อง

เน็ตแวมไพร์ -ไคลเอนต์ FTP เฉพาะที่ให้คุณดาวน์โหลด ไฟล์ขนาดใหญ่และดาวน์โหลดผ่านช่องทางที่ไม่ดี

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

การสืบค้นจะดำเนินการโดยระบบจัดการฐานข้อมูล (DBMS) หากคุณไม่ใช่ผู้เชี่ยวชาญในการพัฒนาและดูแลฐานข้อมูล คุณอาจเป็นผู้ใช้ฐานข้อมูลที่ดูและ/หรือเปลี่ยนแปลงข้อมูลในตารางที่มีอยู่ ในหลายกรณี การดำเนินการเหล่านี้และฐานข้อมูลอื่นๆ จะดำเนินการโดยใช้ การใช้งานพิเศษให้กับผู้ใช้ ส่วนต่อประสานที่ใช้งานง่าย- โดยทั่วไปแอปพลิเคชันจะเขียนด้วยภาษาโปรแกรมพิเศษ (C, Pascal, วิชวลเบสิกฯลฯ) และส่วนใหญ่มักสร้างขึ้นโดยใช้สภาพแวดล้อมการพัฒนาแบบรวม เช่น Delphi, C++ Builder เป็นต้น อย่างไรก็ตาม สามารถเข้าถึงฐานข้อมูลได้โดยไม่ต้องใช้สิ่งเหล่านี้ - โดยใช้เพียง SQL เท่านั้น ควรสังเกตว่าแอปพลิเคชันพิเศษมักจะใช้ส่วนของโค้ด SQL เมื่อเข้าถึงฐานข้อมูล

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

การพัฒนาครั้งแรกของระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ ( DBMS เชิงสัมพันธ์) สร้างเสร็จที่ IBM ในช่วงต้นทศวรรษ 1970 ในเวลาเดียวกัน ภาษาข้อมูลถูกสร้างขึ้นเพื่อทำงานในระบบเหล่านี้ เวอร์ชันทดลองของภาษานี้เรียกว่า SEQUEL - จากภาษาอังกฤษ แบบสอบถามภาษาอังกฤษที่มีโครงสร้าง (ภาษาแบบสอบถามภาษาอังกฤษที่มีโครงสร้าง) อย่างไรก็ตาม รุ่นอย่างเป็นทางการถูกเรียกโดยย่อ - SQL (Structured Query Language) แม่นยำยิ่งขึ้น SQL เป็นภาษาย่อยของข้อมูล เนื่องจาก DBMS มีเครื่องมือภาษาอื่น

ในปี 1981 IBM เปิดตัว SQL/DS DBMS เชิงสัมพันธ์ โดยคราวนี้ความสัมพันธ์ ซอฟต์แวร์อิงค์- (ปัจจุบันคือ Oracle Corporation) ได้เปิดตัว DBMS เชิงสัมพันธ์แล้ว ผลิตภัณฑ์เหล่านี้กลายเป็นมาตรฐานสำหรับระบบการจัดการฐานข้อมูลทันที ผลิตภัณฑ์เหล่านี้ยังรวมถึง SQL ซึ่งกลายเป็นมาตรฐานโดยพฤตินัยสำหรับภาษาย่อยของข้อมูล ผู้ผลิต DBMS อื่นๆ ได้เปิดตัว SQL เวอร์ชันของตนเองแล้ว สิ่งเหล่านี้รวมมากกว่าความสามารถหลักของผลิตภัณฑ์ IBM เพื่อให้ได้เปรียบสำหรับ DBMS “ของพวกเขา” ผู้ผลิตจึงได้แนะนำส่วนขยาย SQL บางส่วน ในเวลาเดียวกัน งานก็เริ่มสร้างมาตรฐาน SQL ที่เป็นที่ยอมรับโดยทั่วไป

ในปี 1986 American National Standards Institute (ANSI) ได้เปิดตัวมาตรฐานอย่างเป็นทางการ SQL-86 ซึ่งได้รับการอัปเดตในปี 1989 และเปลี่ยนชื่อเป็น SQL-89 ในปี 1992 มาตรฐานนี้ได้รับการตั้งชื่อว่า SQL-92 (ISO/IEC 9075:1992) เวอร์ชันล่าสุดของมาตรฐาน SQL คือ SQL:2003 (ISO/IEC 9075X:2003)

การใช้งาน SQL ใน DBMS เฉพาะจะค่อนข้างแตกต่างจากมาตรฐานที่ผู้ผลิตประกาศการปฏิบัติตาม ดังนั้น DBMS จำนวนมาก (เช่น ไมโครซอฟต์ แอคเซส 2003, PostgreSQL 7.3) ไม่รองรับ SQL-92 อย่างสมบูรณ์ แต่รองรับการปฏิบัติตามข้อกำหนดเพียงบางระดับเท่านั้น นอกจากนี้ยังรองรับองค์ประกอบที่ไม่รวมอยู่ในมาตรฐานอีกด้วย อย่างไรก็ตาม นักพัฒนา DBMS พยายามอย่างหนักเพื่อให้แน่ใจว่าผลิตภัณฑ์เวอร์ชันใหม่ของตนสอดคล้องกับมาตรฐาน SQL อย่างใกล้ชิดที่สุดเท่าที่จะเป็นไปได้

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

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

ในทางปฏิบัติ ฐานข้อมูลมักจะทำงานร่วมกับแอปพลิเคชันที่เขียนโดยโปรแกรมเมอร์ในภาษาขั้นตอน เช่น C, Visual Basic, Pascal, Java เป็นต้น แอปพลิเคชันมักถูกสร้างขึ้นในสภาพแวดล้อมการพัฒนาภาพแบบพิเศษ เช่น Delphi, Microsoft Access, Visual dBase ฯลฯ . ในขณะเดียวกันผู้พัฒนาแอปพลิเคชันก็ไม่จำเป็นต้องเขียนโค้ดโปรแกรมเนื่องจากระบบการพัฒนาทำเพื่อเขา ยังไงก็ได้ร่วมงานกับ. รหัสโปรแกรมกลายเป็นว่าน้อยที่สุด แอพพลิเคชั่นเหล่านี้มีความสะดวก กุยซึ่งไม่ได้บังคับให้ผู้ใช้ป้อนคำสั่งโดยตรงใน SQL แอปพลิเคชันทำเช่นนี้แทน อย่างไรก็ตาม แอปพลิเคชันอาจใช้หรือไม่ใช้ SQL เพื่อเข้าถึงฐานข้อมูลก็ได้ SQL ไม่ใช่เพียงวิธีเดียว แม้ว่าจะเป็นวิธีที่มีประสิทธิภาพมากในการดึง เพิ่ม และเปลี่ยนแปลงข้อมูล และหากเป็นไปได้ที่จะใช้ในแอปพลิเคชัน ก็ควรจะดำเนินการ

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

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

ตัวอย่างเช่น ในการเลือกข้อมูลเกี่ยวกับชื่อและตำแหน่งของพนักงานของแผนก 102 จากตารางพนักงาน เพียงเรียกใช้แบบสอบถามต่อไปนี้:

SELECT นามสกุล, ตำแหน่งจากพนักงาน WHERE Department=102;

ในภาษารัสเซีย การแสดงออกนี้ฟังดูเหมือน:

เลือก นามสกุลตำแหน่ง จาก พนักงาน โดยมีเงื่อนไขว่า แผนก = 102;

เพื่อเปลี่ยนค่า" อีวานอฟ "บน" เปตรอฟ " คอลัมน์ นามสกุล เพียงเรียกใช้แบบสอบถามต่อไปนี้:

อัปเดตพนักงาน SET นามสกุล = "Petrov" WHERE นามสกุล = "Ivanov";

ในภาษารัสเซียสำนวนนี้มีลักษณะดังนี้:

อัปเดต พนักงาน ติดตั้งแล้ว นามสกุล เท่ากัน " เปตรอฟ " ที่ไหน นามสกุล = "อีวานอฟ" ;

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

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

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

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

· ดีดีแอล (ภาษาคำจำกัดความข้อมูล - ภาษาคำจำกัดความของข้อมูล ) ได้รับการออกแบบเพื่อสร้าง แก้ไข และลบตารางและฐานข้อมูลทั้งหมด ตัวอย่างของข้อความที่รวมอยู่ใน DDL ได้แก่ สร้างตาราง (สร้างตาราง)" สร้างมุมมอง (สร้างมุมมอง) สร้างเชมา (สร้างไดอะแกรม) แก้ไขตาราง (เปลี่ยนโต๊ะ) หยด (ลบ) เป็นต้น

· ดีซีแอล (ภาษาควบคุมข้อมูล - ภาษาการจัดการข้อมูล ) ได้รับการออกแบบมาเพื่อปกป้องฐานข้อมูลจากความเสียหายประเภทต่างๆ DBMS ให้การปกป้องข้อมูลบางอย่างโดยอัตโนมัติ อย่างไรก็ตาม ในบางกรณี ควรพิจารณามาตรการเพิ่มเติมที่ DCL จัดให้ด้วย

ภาษา SQL

เราก็เลยเข้า โครงร่างทั่วไปทำความคุ้นเคยกับแนวคิดพื้นฐานของทฤษฎีฐานข้อมูล ติดตั้งและกำหนดค่า MySQL เพื่อใช้งาน ตอนนี้เป็นเวลาที่จะเรียนรู้วิธีจัดการข้อมูลที่จัดเก็บไว้ในฐานข้อมูล สำหรับสิ่งนี้เราต้องการ SQL – ภาษาแบบสอบถามที่มีโครงสร้าง ภาษานี้ทำให้สามารถสร้าง แก้ไข และลบข้อมูลที่จัดเก็บไว้ในฐานข้อมูล สร้างฐานข้อมูลใหม่ และอื่นๆ อีกมากมาย SQL เป็นมาตรฐาน ANSI (American National Standards Institute) และ ISO (International Organization for Standardization)

ประวัติเล็กน้อย

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

ภาษา เช่น การบูรณาการเข้ากับภาษาโปรแกรม C SQL มาตรฐานภาษาสากลถัดไป SQL/92 ถูกนำมาใช้เมื่อปลายปี พ.ศ. 2535 และเป็นที่รู้จักในนาม SQL/89 - มันกลับกลายเป็นว่าแม่นยำและสมบูรณ์กว่ามาก SQL แม้ว่าจะไม่มีข้อบกพร่องก็ตาม ปัจจุบันระบบส่วนใหญ่ใช้มาตรฐานนี้เกือบทั้งหมด อย่างไรก็ตาม อย่างที่คุณทราบ ความก้าวหน้าไม่สามารถหยุดได้ และในปี 1999 มาตรฐานใหม่ก็ปรากฏขึ้น :1999 หรือที่รู้จักกันในชื่อ SQL3 SQL - SQL3 มีลักษณะเป็น "เชิงวัตถุ" SQL” และเป็นพื้นฐานของระบบการจัดการฐานข้อมูลเชิงวัตถุสัมพันธ์หลายระบบ (เช่น ORACLE8 ของ Oracle, Universal Server ของ Informix และ DB2 Universal Database ของ IBM) มาตรฐานนี้ไม่ใช่แค่การควบรวมกิจการเท่านั้น SQL -92 และเทคโนโลยีวัตถุ มีส่วนขยายจำนวนหนึ่งจากแบบเดิมและตัวเอกสารเองก็ได้รับการออกแบบในลักษณะที่จะบรรลุผลสำเร็จมากขึ้น

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

การสนับสนุนอย่างเต็มที่ SQL มาตรฐาน ANSI SQL99 แต่ไม่กระทบต่อความเร็วและคุณภาพของโค้ด

ต่อไปจะพูดถึงพื้นฐานของภาษา SQL

เราจะปฏิบัติตามการใช้งานใน MySQL DBMS

  1. ตัวดำเนินการภาษาพื้นฐาน
  2. ฟังก์ชั่นของ DBMS ใด ๆ รวมถึง:
  3. การสร้าง ลบ เปลี่ยนแปลงฐานข้อมูล (DB)
  4. เพิ่ม เปลี่ยนแปลง ลบ กำหนดสิทธิ์ผู้ใช้

การป้อน การลบ และการเปลี่ยนแปลงข้อมูลในฐานข้อมูล (ตารางและบันทึก)

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

แก้ไขตาราง

และ วางตาราง

การใช้คำสั่ง SHOW เฉพาะ MySql คุณสามารถดูได้ ฐานที่มีอยู่ข้อมูล ตารางในฐานข้อมูล และฟิลด์ในตาราง

แสดงฐานข้อมูลทั้งหมด:

mysql>ฐานข้อมูลแสดง;

ทำให้ฐานข้อมูลหนังสือเป็นปัจจุบันและแสดงตารางทั้งหมดในนั้น:

mysql>ใช้หนังสือ; mysql>แสดงตาราง;

แสดงคอลัมน์ทั้งหมดในตารางบุคคล:

mysql> แสดงคอลัมน์จากบุคคล;

คำสั่ง DROP TABLE

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

ไวยากรณ์:

วางตาราง table_name [, table_name,...]

ใน เวอร์ชัน MySQL 3.22 และใหม่กว่า คุณสามารถใช้คีย์เวิร์ด IF EXISTS เพื่อเพิ่มข้อผิดพลาดหากไม่มีตารางที่ระบุ

ตัวเลือก RESTRICT และ CASCADE ช่วยให้ถ่ายโอนโปรแกรมจาก DBMS อื่นได้ง่ายขึ้น พวกเขาไม่ได้ใช้งานอยู่ในปัจจุบัน

mysql> วางตารางหากมีบุคคล, สิ่งประดิษฐ์, ทดสอบ; ตัวอย่างที่ 10.2 การใช้คำสั่ง DROP TABLE

คำสั่ง ALTER TABLE

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

ไวยากรณ์:

ตัวอย่างเช่น คุณสามารถเพิ่มหรือลบคอลัมน์ สร้างหรือทำลายดัชนี หรือเปลี่ยนชื่อคอลัมน์หรือตัวตารางได้

คุณยังสามารถเปลี่ยนความคิดเห็นสำหรับตารางและประเภทของตารางได้

  • แก้ไขตาราง table_name alter_specification [, alter_specification ... ]

    คุณสามารถทำการเปลี่ยนแปลงต่อไปนี้ในตาราง (ซึ่งทั้งหมดถูกบันทึกไว้ใน alter_special ):

    เพิ่มฟิลด์:

  • เพิ่ม column_definition

    เพิ่ม (column_definition, column_definition,...) เพิ่มดัชนี:เพิ่ม ดัชนี [index_name] (column_name,...)เพิ่ม หรือเพิ่มคีย์หลัก (column_name,...) ไม่ซ้ำใคร [index_name] (column_name,...)

  • หรือ

    เพิ่มข้อความแบบเต็ม [index_name] (column_name,...)คีย์หลัก (column_name,...) การเปลี่ยนแปลงฟิลด์:คีย์หลัก (column_name,...) แก้ไข column_name (SET DEFAULT ตัวอักษร | DROP DEFAULT)

  • เปลี่ยน old_column_name column_definition

    แก้ไข column_definition

  • การลบฟิลด์ ดัชนี คีย์:

    DROP column_name DROP คีย์หลัก DROP INDEX index_name

  • การเปลี่ยนชื่อตาราง:

    RENAME ใหม่_ตาราง_ชื่อ

    การเรียงลำดับฟิลด์ตารางใหม่:

เรียงลำดับตามฟิลด์ table_optionsหากผู้ปฏิบัติงาน แก้ไขตารางใช้เพื่อเปลี่ยนคำจำกัดความประเภทคอลัมน์แต่ อธิบาย table_nameแสดงว่าคอลัมน์ไม่มีการเปลี่ยนแปลง บางที MySQL อาจเพิกเฉย การปรับเปลี่ยนนี้ด้วยเหตุผลข้อใดข้อหนึ่งที่อธิบายไว้ใน ส่วนพิเศษมีคอลัมน์อื่นๆ ที่มีความยาวผันแปรได้

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

ควรสังเกตว่าเมื่อใช้ตัวเลือกอื่นสำหรับ ALTER TABLE นอกเหนือจาก RENAME นั้น MySQL จะสร้างตารางชั่วคราวเสมอ แม้ว่าจะไม่จำเป็นต้องคัดลอกข้อมูลอย่างเคร่งครัดก็ตาม (เช่น เมื่อชื่อคอลัมน์มีการเปลี่ยนแปลง)ตัวอย่างที่ 10.3

- มาเพิ่มฟิลด์ลงในตารางบุคคลที่สร้างขึ้นเพื่อบันทึกปีเกิดของบุคคลนั้น: mysql> แก้ไขตารางบุคคลเพิ่ม bday INTEGER หลังนามสกุล;

ตัวอย่างที่ 10.3 การเพิ่มเขตข้อมูลลงในตารางบุคคลเพื่อบันทึกปีเกิดของบุคคล

ดังนั้นเราจึงได้เรียนรู้วิธีทำงานกับตาราง: สร้าง ลบ และแก้ไขตาราง ตอนนี้เรามาดูวิธีทำเช่นเดียวกันกับข้อมูลที่เก็บไว้ในตารางเหล่านี้

ผู้ดำเนินการ คำสั่งเลือกเลือก

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

สามารถใช้เพื่อดึงแถวที่คำนวณโดยไม่ต้องอ้างอิงถึงตารางใด ๆ ตัวอย่างเช่น ในการคำนวณว่า 2*2 เท่ากับเท่าใด คุณก็แค่เขียนลงไป

mysql> เลือก 2*2; คำสั่งเลือกโครงสร้างตัวดำเนินการแบบง่าย

สามารถแสดงได้ดังนี้: วงเล็บเหลี่ยมหมายความว่าตัวดำเนินการภายในนั้นเป็นทางเลือกหมายถึงการแจงนับ

ตัวเลือกที่เป็นไปได้

- หลังคีย์เวิร์ด ORDER BY ให้ระบุชื่อคอลัมน์ ตัวเลข (จำนวนเต็มที่ไม่ได้ลงนาม) หรือสูตร และวิธีการเรียงลำดับ (จากน้อยไปหามาก - ASC หรือจากมากไปน้อย - DESC) ลำดับเริ่มต้นคือจากน้อยไปมากเมื่อเราเขียน “*” ใน select_expression นี่หมายถึงการเลือกคอลัมน์ทั้งหมด นอกจาก “*” แล้ว สามารถใช้ฟังก์ชันต่างๆ เช่น max , min และ avg ใน select_expressions ได้

เลือกชื่อและคำอธิบาย (ชื่อ คำอธิบาย) ของสิ่งประดิษฐ์หมายเลข 10:

คำสั่ง INSERT

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

ไวยากรณ์:

    INSERT table_name [(column_name,...)] ค่า (นิพจน์,...),(...),...

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

    ตัวอย่างเช่น:

    mysql> INSERT INTO Persons (last_name, bday) ค่า ("Ivanov", "1934");

    จะแทรกแถวลงในตารางบุคคลซึ่งค่าของนามสกุล ( Last_name ) และวันเกิด ( bday ) จะถูกตั้งค่าตามลำดับเป็น "Ivanov" และ "1934"

    INSERT table_name [(ชื่อคอลัมน์,...)] SELECT ...

    แบบคำสั่งนี้ แทรกแทรกแถวที่เลือกจากตารางหรือตารางอื่น

    ตัวอย่างเช่น:

    จะแทรกค่าของตัวระบุที่เลือกจากตารางบุคคลลงในตารางสิ่งประดิษฐ์ในฟิลด์ "ผู้เขียน" ภายใต้เงื่อนไขว่านามสกุลของบุคคลคือ Ivanov

    แทรก table_name SET column_name=expression, column_name=expression, ...

    ตัวอย่างเช่น:

    mysql> ใส่เข้าไปในบุคคล SET Last_name = "Petrov", first_name = "Ivan";

    คำสั่งนี้จะแทรกค่า “Petrov” ลงในตาราง Persons ในช่อง Last_name และสตริง “Ivan” ลงในช่อง first_name

รูปร่าง แทรก...ค่าพร้อมรายการหลายค่าที่รองรับใน MySQL 3.22.5 และใหม่กว่า ไวยากรณ์นิพจน์ column_name=การแสดงออก

รองรับ MySQL เวอร์ชัน 3.22.10 และใหม่กว่า

  • ข้อตกลงต่อไปนี้มีผลบังคับใช้ หากไม่มีการระบุรายการคอลัมน์คีย์หลัก (column_name,...) แทรก...ค่าแทรก...เลือก คำสั่งเลือกดังนั้นค่าสำหรับคอลัมน์ทั้งหมดจะต้องถูกกำหนดไว้ในรายการ VALUES() หรือเป็นผลจาก แก้ไขตาราง.
  • - หากไม่ทราบลำดับของคอลัมน์ในตาราง คุณสามารถใช้ได้
  • คอลัมน์ใดๆ ที่ไม่ได้กำหนดค่าไว้อย่างชัดเจนจะถูกตั้งค่าเป็นค่าเริ่มต้น ตัวอย่างเช่น หากรายการคอลัมน์ที่กำหนดไม่ได้ระบุคอลัมน์ทั้งหมดในตารางที่กำหนด คอลัมน์ที่ไม่ได้กล่าวถึงจะถูกตั้งค่าเป็นค่าเริ่มต้น

    นิพจน์สามารถอ้างถึงคอลัมน์ใดๆ ที่เคยรวมอยู่ในรายการค่าก่อนหน้านี้ ตัวอย่างเช่น คุณสามารถระบุสิ่งต่อไปนี้:

    mysql> แทรกลงใน table_name (col1,col2) ค่า (15,col1*2);

    แต่คุณไม่สามารถระบุ:

เรายังไม่ได้กล่าวถึงพารามิเตอร์ทางเลือกสามตัวที่มีอยู่ในคำสั่งทั้งสามรูปแบบ: LOW_PRIORITY, DELAYED และ IGNORE

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

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

ในตารางนี้จะถูกละเว้นและไม่ถูกป้อนลงในตาราง หากคุณไม่ได้ระบุ IGNORE การแทรกจะถูกยกเลิกเมื่อพบแถวที่มีค่าซ้ำกันสำหรับคีย์ที่มีอยู่

ไวยากรณ์:

ผู้ดำเนินการ คำสั่งอัปเดตอัปเดต

อัปเดตค่าของคอลัมน์ตารางที่มีอยู่ตามค่าที่ป้อน คำสั่ง SET ระบุว่าควรแก้ไขคอลัมน์ใดและควรตั้งค่าใดในคอลัมน์นั้น ส่วนคำสั่ง WHERE (ถ้ามี) จะระบุว่าแถวใดถูกอัพเดต มิฉะนั้น แถวทั้งหมดจะได้รับการอัปเดต หากมีการระบุนิพจน์ ORDER BY แถวจะได้รับการอัปเดตตามลำดับที่ระบุ คำสั่งอัปเดตหากมีการระบุคำหลัก LOW_PRIORITY การดำเนินการของคำสั่งนี้

ล่าช้าจนกว่าลูกค้ารายอื่นจะอ่านตารางนี้จบ

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

ใช้ค่าปัจจุบันของคอลัมน์นี้ ตัวอย่างเช่น คำสั่งต่อไปนี้จะตั้งค่าคอลัมน์ death_date ให้มีค่ามากกว่าค่าปัจจุบันหนึ่งค่า:

mysql> อัปเดตบุคคล SET death_date=death_date+1;

ใน MySQL เวอร์ชัน 3.23 คุณสามารถใช้พารามิเตอร์ LIMIT # เพื่อให้แน่ใจว่ามีการแก้ไขเฉพาะจำนวนแถวที่ระบุเท่านั้น ตัวอย่างเช่น การดำเนินการดังกล่าวจะแทนที่ในแถวแรกของตารางการจัดแสดงของเราไปที่บรรทัด "คอมพิวเตอร์ Tube":

mysql> UPDATE Artifacts SET title="Tube คอมพิวเตอร์" Limit 1;!}

คำสั่งลบ

ผู้ดำเนินการ ลบลบแถวออกจากตาราง table_name ที่ตรงตามเงื่อนไขที่ระบุในwhere_definition และส่งคืนจำนวนบันทึกที่ถูกลบ

เรียงลำดับตามฟิลด์ ลบทำงานโดยไม่มีคำจำกัดความ WHERE แถวทั้งหมดจะถูกลบ

ไวยากรณ์:

ตัวอย่างเช่น คำสั่งต่อไปนี้จะลบออกจากตารางบุคคล

PHP และฐานข้อมูล

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

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

บทเริ่มต้นด้วย คำอธิบายโดยละเอียดการดึงและอัปเดตข้อมูลใน MySQL - อาจเป็น DBMS ที่ได้รับความนิยมมากที่สุดที่ใช้ใน PHP (http://www.mysql.com) บน ตัวอย่าง MySQLมันจะแสดงวิธีการโหลดและอัพเดตข้อมูลในฐานข้อมูลใน PHP เราจะดูที่เครื่องมือค้นหาและการเรียงลำดับพื้นฐานที่ใช้ในเว็บแอปพลิเคชันจำนวนมาก จากนั้นเราจะดำเนินการต่อไปใน รองรับ PHP ODBC (Open Data Base Connectivity) เป็นอินเทอร์เฟซทั่วไปที่สามารถใช้ได้ การเชื่อมต่อพร้อมกันด้วย DBMS ที่แตกต่างกัน การสนับสนุน ODBC ใน PHP จะแสดงโดยใช้ตัวอย่างการเชื่อมต่อและดึงข้อมูลจากฐานข้อมูล ข้อมูลไมโครซอฟต์เข้าถึง. บทนี้สรุปด้วยโปรเจ็กต์ที่ใช้ PHP และ MySQL เพื่อสร้างไดเร็กทอรีแบบลำดับชั้นที่มีข้อมูลเกี่ยวกับไซต์โปรด เมื่อมีการรวมไซต์ใหม่ไว้ในแค็ตตาล็อก ผู้ใช้จะกำหนดไซต์เหล่านั้นให้อยู่ในหมวดหมู่มาตรฐานที่กำหนดโดยผู้ดูแลไซต์

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

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

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

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

ข้าว. 11.1.ตัวอย่างฐานข้อมูลเชิงสัมพันธ์

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

ดังนั้นการดำเนินการฐานข้อมูลเชิงสัมพันธ์ดำเนินการอย่างไร? เมื่อต้องการทำเช่นนี้ SQL มีชุดคำสั่งทั่วไปพิเศษ เช่น SELECT, INSERT, UPDATE และ DELETE เช่น หากคุณต้องการได้รับที่อยู่ อีเมลไคลเอนต์ที่มี ID 2001cu (ดูรูปที่ 11.1) เพียงรันคำสั่ง SQL ต่อไปนี้:

เลือก cust_email จากลูกค้า โดยที่ custjd = "2001cu"

ทุกอย่างค่อนข้างสมเหตุสมผลใช่ไหม? โดยสรุป คำสั่งจะมีลักษณะดังนี้:

เลือก field_name จาก table_name [ เงื่อนไข WHERE ]

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

เลือก cust_email จากลูกค้า

สมมติว่าคุณต้องการรวมผลิตภัณฑ์ไว้ในตาราง รายการใหม่- คำสั่งแทรกที่ง่ายที่สุดมีลักษณะดังนี้:

แทรกลงในค่าผลิตภัณฑ์ ("1009pr", "มะเขือเทศแดง", "1.43");

หากคุณต้องการลบข้อมูลนี้ในภายหลัง ให้ใช้คำสั่งต่อไปนี้:

ลบออกจากผลิตภัณฑ์ โดยที่ prod_id = 1009r";

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

เขียนคำสั่ง SQL โดยใช้อักขระ ตัวพิมพ์ใหญ่ไม่จำเป็น. อย่างไรก็ตาม ฉันชอบสัญลักษณ์นี้มากกว่าเพราะจะช่วยแยกแยะองค์ประกอบของคำขอได้

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

หรือภาษาอินเทอร์เฟซ (PHP, Java หรือ Perl) การเชื่อมต่อกับฐานข้อมูลจะถูกสร้างขึ้นหลังจากนั้นโปรแกรมจะเข้าถึงฐานข้อมูลด้วยการสืบค้นโดยใช้ชุดเครื่องมือมาตรฐาน ภาษาอินเทอร์เฟซถือได้ว่าเป็น "กาว" ชนิดหนึ่งที่เชื่อมโยงฐานข้อมูลกับเว็บ ฉันหันไปใช้ภาษาส่วนหน้าที่ฉันชื่นชอบ - PHP

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

ทำไมต้องเรียนภาษานี้?

ประการแรก SQL ได้รับการสอนเพื่อสร้างแอปพลิเคชันที่หลากหลายสำหรับหนึ่งในเครื่องมือบล็อกที่ได้รับความนิยมมากที่สุดในปัจจุบัน - WordPress หลังจากจบบทเรียนง่ายๆ ไม่กี่บท คุณจะสามารถสร้างคำถามที่ซับซ้อนได้ ซึ่งเป็นเพียงการยืนยันความเรียบง่ายของภาษานี้เท่านั้น

SQL คืออะไร?

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

ขั้นตอนใดบ้างที่สามารถทำได้โดยใช้ภาษานี้?

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

  • สร้างตารางที่หลากหลาย
  • รับ จัดเก็บ และแก้ไขข้อมูลที่ได้รับ
  • เปลี่ยนโครงสร้างตารางตามดุลยพินิจของคุณ
  • รวมข้อมูลที่ได้รับเป็นบล็อกเดียว
  • คำนวณข้อมูลที่ได้รับ
  • จัดเตรียม การป้องกันเต็มรูปแบบข้อมูล.

คำสั่งใดที่ได้รับความนิยมมากที่สุดในภาษานี้?

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

  1. DDL เป็นคำสั่งที่กำหนดข้อมูล ใช้เพื่อสร้าง แก้ไข และลบออบเจ็กต์ต่างๆ ในฐานข้อมูล
  2. DCL เป็นคำสั่งที่จัดการข้อมูล มันถูกใช้เพื่อจัดให้มีการเข้าถึง ผู้ใช้ที่แตกต่างกันสู่ข้อมูลในฐานข้อมูลตลอดจนการใช้ตารางหรือมุมมอง
  3. TCL เป็นทีมที่จัดการธุรกรรมที่หลากหลาย วัตถุประสงค์หลักคือเพื่อกำหนดความคืบหน้าของธุรกรรม
  4. DML - จัดการข้อมูลที่ได้รับ หน้าที่ของมันคือเพื่อให้ผู้ใช้สามารถย้ายข้อมูลต่าง ๆ จากฐานข้อมูลหรือป้อนลงไปที่นั่น

ประเภทของสิทธิ์ที่มีอยู่ในเซิร์ฟเวอร์นี้

สิทธิพิเศษหมายถึงการกระทำที่ผู้ใช้สามารถดำเนินการตามสถานะของเขา แน่นอนว่าสิ่งที่น้อยที่สุดคือการเข้าสู่ระบบปกติ แน่นอนว่าสิทธิพิเศษอาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป อันเก่าจะถูกลบและอันใหม่จะถูกเพิ่ม ทุกวันนี้ ผู้ที่เรียนหลักสูตร "for dummies" ของ SQL Server ทราบว่ามีการดำเนินการที่ได้รับอนุญาตหลายประเภท:

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

ประวัติความเป็นมาของ SQL

ภาษานี้สร้างขึ้นโดย IBM Research Laboratory ในปี 1970 ในเวลานั้นชื่อแตกต่างออกไปเล็กน้อย (SEQUEL) แต่หลังจากใช้งานไปไม่กี่ปีก็เปลี่ยนไปโดยย่อให้สั้นลงเล็กน้อย อย่างไรก็ตาม แม้กระทั่งทุกวันนี้ผู้เชี่ยวชาญด้านการเขียนโปรแกรมที่มีชื่อเสียงระดับโลกหลายคนก็ยังคงออกเสียงชื่อนี้ด้วยวิธีที่ล้าสมัย SQL ถูกสร้างขึ้นโดยมีวัตถุประสงค์เดียวคือเพื่อประดิษฐ์ภาษาที่เรียบง่ายจนสามารถใช้งานได้โดยไม่ต้องมี ปัญหาพิเศษแม้กระทั่งเรียนรู้ ผู้ใช้ทั่วไปอินเทอร์เน็ต. ข้อเท็จจริงที่น่าสนใจก็คือ ในเวลานั้น SQL ไม่ใช่ภาษาเดียวเท่านั้น ในแคลิฟอร์เนีย ผู้เชี่ยวชาญอีกกลุ่มหนึ่งได้พัฒนา Ingres ที่คล้ายกัน แต่ก็ไม่เคยแพร่หลายมากนัก ก่อนปี 1980 SQL มีหลายรูปแบบที่แตกต่างกันเพียงเล็กน้อยเท่านั้น เพื่อป้องกันความสับสน จึงได้มีการสร้างเวอร์ชันมาตรฐานขึ้นในปี 1983 ซึ่งยังคงได้รับความนิยมจนถึงปัจจุบัน หลักสูตร SQL“สำหรับหุ่นจำลอง” ช่วยให้คุณเรียนรู้เพิ่มเติมเกี่ยวกับบริการและสำรวจบริการได้อย่างเต็มที่ภายในไม่กี่สัปดาห์