ส่งแบบสอบถามฐานข้อมูลใน PHP ฟังก์ชัน Almighty Query - คำแนะนำขั้นสุดท้ายสำหรับ Queries ใน mysql จาก php mysqli query
ฉันคิดว่าทุกคนเคยได้ยินกฎ Pareto ในทุกพื้นที่ 20% ของความพยายามให้ 80% ของผลลัพธ์ ตัวอย่างเช่น 20% ของตู้เสื้อผ้าที่คุณใส่ 80% ของเวลา 20% ของลูกค้าของคุณสร้างรายได้ 80% ของคุณ ในทำนองเดียวกัน ใน Google ชีต เมื่อทราบฟังก์ชันที่มีอยู่ 20% คุณสามารถแก้ปัญหาที่เป็นไปได้ทั้งหมด 80%
ฉันพบว่า Query เป็นหนึ่งในคุณลักษณะที่มีประโยชน์ที่สุดของ Google ชีต แต่ในความช่วยเหลือของ Google มีการอธิบายอย่างเผินๆ และไม่ได้เปิดเผยพลังเต็มของฟังก์ชันนี้ เมื่อตรวจสอบอย่างใกล้ชิด จะเห็นได้ชัดว่าสามารถแทนที่ฟังก์ชันส่วนใหญ่ที่มีอยู่ได้
คุณจะต้องมีความรู้พื้นฐานเกี่ยวกับ SQL เพื่อทำงานกับ QUERY สำหรับผู้ที่ไม่มีความรู้ อย่ากลัวไปเลย ฟังก์ชัน QUERY รองรับฟีเจอร์ SQL พื้นฐานที่สุด
ไวยากรณ์ QUERY
QUERY (ข้อมูล แบบสอบถาม [ส่วนหัว])- ข้อมูล- นี่คือช่วงของเซลล์ที่จะทำหน้าที่เป็นฐานข้อมูลสำหรับแบบสอบถาม SQL
- สอบถามรายละเอียดเพิ่มเติม- ข้อความของแบบสอบถาม SQL;
- พาดหัวข่าวเป็นอาร์กิวเมนต์ทางเลือกที่คุณสามารถระบุจำนวนบรรทัดแรกของอาร์เรย์ที่มีส่วนหัวได้
เพื่อให้เข้าใจถึงข้อมูลเพิ่มเติมสูงสุด ฉันขอเสนอให้เปิดและคัดลอก Google Spreadsheet ต่อไปนี้
มีหลายแผ่นใน dox ที่คุณเพิ่งทำสำเนา แผ่นฐานข้อมูลคือฐานข้อมูลที่เราจะเข้าถึงโดยใช้ฟังก์ชัน QUERY แผ่นงานระดับมีตัวอย่างที่เราจะดูในบทความนี้ ตัวอย่างจะซับซ้อนมากขึ้นในแต่ละระดับใหม่
แผนการสืบค้น SQL ในฟังก์ชัน Query
แบบสอบถาม SQL ใดๆ ประกอบด้วยบล็อกที่แยกจากกัน ซึ่งมักเรียกว่าการใส่ร้าย SQL สำหรับฟังก์ชัน Query ใช้ไวยากรณ์ Google Visualization API Query Language ซึ่งรองรับสลิปต่อไปนี้:
- เลือก- การแจงนับฟิลด์ที่จะส่งคืนโดยการร้องขอ
- ที่ไหน- มีรายการเงื่อนไขที่อาร์เรย์ข้อมูลที่ประมวลผลโดยคำขอจะถูกกรอง;
- จัดกลุ่มโดย- มีรายการฟิลด์ที่คุณต้องการจัดกลุ่มผลลัพธ์
- หมุน- ช่วยสร้างครอสแท็บโดยใช้ค่าของคอลัมน์หนึ่งเป็นชื่อคอลัมน์ของตารางสุดท้าย
- สั่งโดย- รับผิดชอบในการเรียงลำดับผลลัพธ์
- ขีดจำกัด- การใช้ส่วนนี้ของแบบสอบถาม คุณสามารถกำหนดขีดจำกัดจำนวนแถวที่ส่งกลับโดยแบบสอบถาม
- offset- ด้วยความช่วยเหลือของการใส่ร้ายนี้ คุณสามารถกำหนดจำนวนบรรทัดแรกที่ไม่ควรประมวลผลโดยข้อความค้นหา
- ฉลาก- การใส่ร้ายนี้รับผิดชอบชื่อของฟิลด์ที่ส่งคืนโดยแบบสอบถาม
- รูปแบบ- รับผิดชอบรูปแบบของข้อมูลที่ส่งออก
- ตัวเลือก -ทำให้สามารถตั้งค่าพารามิเตอร์เพิ่มเติมสำหรับการส่งออกข้อมูลได้
ฟังก์ชัน Hello World for Query (เลือก)
ไปที่แผ่นงาน Level_1 และดูสูตรในเซลล์ A1
แบบสอบถาม (DB! A1: L1143; "เลือก * จำกัด 100")
ส่วนหนึ่งของสูตร " DB! A1: L1143 "รับผิดชอบฐานข้อมูลที่เราจะทำการเลือก ส่วนที่สอง " เลือก * จำกัด 100"ประกอบด้วยข้อความของคำขอนั้นเอง "*" ในกรณีนี้หมายถึงการส่งคืนฟิลด์ทั้งหมดที่มีอยู่ในฐานข้อมูล โดยใช้ " จำกัด 100»เราจำกัดเอาต์พุตสูงสุด 100 บรรทัด นี่คือตัวอย่างการสืบค้นที่ง่ายที่สุด เราเลือก 100 แถวแรกจากฐานข้อมูล นี่คือ "สวัสดีชาวโลก" ชนิดหนึ่งสำหรับฟังก์ชัน Query
การใช้ตัวกรองและการเรียงลำดับ (ที่ไหน เรียงลำดับตาม)
ไปที่แผ่นงาน Level_2 ให้เลือกเฉพาะบางฟิลด์ที่เราต้องการ และตั้งค่าเงื่อนไขการกรองและการเรียงลำดับ ตัวอย่างเช่น เราใช้ข้อมูลสำหรับแคมเปญ Campaign_1 และ Campaign_2 สำหรับช่วงวันที่ 22-25 ตุลาคม 2015 เท่านั้น ลองเรียงลำดับจากมากไปหาน้อยโดยผลรวมของเซสชัน สำหรับการกรองและการเรียงลำดับ คุณต้องเพิ่มคำอธิบายใส่ร้ายในข้อความคำขอ ที่ไหนและ คำสั่ง... หากต้องการส่งออกตัวอย่างที่อธิบายข้างต้นไปยังตารางผลลัพธ์ เราจำเป็นต้องมีฟิลด์แคมเปญ วันที่ และเซสชัน มันคือพวกเขาที่ต้องถูกระบุในการใส่ร้าย เลือก.
การอ้างอิงไปยังฟิลด์ของฐานข้อมูลจะดำเนินการโดยใช้ชื่อของคอลัมน์ของเวิร์กชีตที่ฐานข้อมูลตั้งอยู่
ในกรณีของเรา ข้อมูลที่อยู่ในแผ่นฐานข้อมูลและอ้างอิงถึงบางฟิลด์จะถูกเขียนเป็นชื่อของคอลัมน์แผ่นงาน ดังนั้น ฟิลด์ที่ต้องระบุจะอยู่ในคอลัมน์ต่อไปนี้:
- สนาม วันที่- คอลัมน์ A;
- สนาม แคมเปญ- คอลัมน์ B;
- สนาม เซสชั่น- คอลัมน์ G.
ดังนั้น ส่วนของคิวรีที่รับผิดชอบรายการข้อมูลที่ส่งออกจะมีลักษณะดังนี้:
เลือก A, B, G
ต่อไปในคำขอคือการใส่ร้าย ที่ไหน... เมื่อเขียนคำขอต้องใส่ร้ายตามลำดับที่อธิบายไว้ในส่วนแรกของบทความนี้ หลังประกาศ ที่ไหนเราต้องแสดงรายการเงื่อนไขการกรอง ในกรณีนี้ เรากำลังกรองข้อมูลตามชื่อแคมเปญ (แคมเปญ) และวันที่ (วันที่) เราใช้เงื่อนไขการกรองหลายอย่าง ในข้อความค้นหา จะต้องมีตัวดำเนินการ OR หรือ AND ตรรกะระหว่างเงื่อนไขทั้งหมด การกรองตามวันที่แตกต่างจากการกรองตามค่าตัวเลขและข้อความเล็กน้อย คุณต้องใช้ตัวดำเนินการวันที่เพื่อนำไปใช้ ส่วนการกรองข้อมูลของแบบสอบถามมีลักษณะดังนี้:
WHERE (A> = วันที่ "2015-10-22" AND A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")
เราได้แบ่งการกรองข้อมูลโดยใช้วงเล็บออกเป็นสองส่วนตามตรรกะ: ตัวกรองแรกตามวันที่ ส่วนที่สอง - ตามชื่อแคมเปญ ในขั้นตอนนี้ สูตรที่อธิบายข้อมูลที่จะเลือกและเงื่อนไขสำหรับการกรองข้อมูลจะมีลักษณะดังนี้:
แบบสอบถาม (DB! A1: L1143; "เลือก A, B, G โดยที่ (A> = วันที่" 2015-10-22 "และ A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")
คุณสามารถคัดลอกและวาง ตัวอย่างเช่น บนแผ่นงานใหม่ของเอกสาร ซึ่งใช้เป็นตัวอย่างในโพสต์นี้ และคุณจะได้ผลลัพธ์ดังต่อไปนี้:
นอกเหนือจากตัวดำเนินการทางลอจิคัลปกติ (=,<, >) ส่วนคำสั่ง WHERE รองรับตัวดำเนินการกรองเพิ่มเติม:
- ประกอบด้วย- ตรวจสอบเนื้อหาของอักขระบางตัวในสตริง ตัวอย่างเช่น WHERE A มี 'John' จะกลับไปที่ตัวกรองค่าทั้งหมดจากคอลัมน์ A ที่มี John เช่น John Adams, Long John Silver;
- เริ่มต้นด้วย- กรองค่าตามคำนำหน้า กล่าวคือ ตรวจสอบอักขระที่จุดเริ่มต้นของบรรทัด ตัวอย่างเช่น เริ่มต้นด้วย 'en' จะคืนค่าวิศวกรรมและภาษาอังกฤษ
- ลงท้ายด้วย- กรองค่าที่ท้ายบรรทัด ตัวอย่างเช่น line 'คาวบอย 'จะถูกส่งกลับด้วย" ลงท้ายด้วย 'boy' 'หรือ' ลงท้ายด้วย 'y' ”;
- ไม้ขีด- จับคู่นิพจน์ทั่วไป ตัวอย่างเช่น: ที่ตรงกัน '. * Ia 'จะคืนค่าของอินเดียและไนจีเรีย
- ชอบ -นิพจน์ทั่วไปเวอร์ชันที่เรียบง่าย ตรวจสอบว่าสตริงตรงกับนิพจน์ที่ระบุโดยใช้อักขระตัวแทนหรือไม่ ในขณะนี้ like รองรับอักขระตัวแทนสองตัว: "%" หมายถึงจำนวนอักขระใดๆ ในสตริง และ "_" หมายถึงอักขระตัวใดตัวหนึ่ง ตัวอย่างเช่น "โดยที่ชื่อเหมือน' fre% '" จะตรงกับบรรทัด 'ฟรี ’, 'เฟร็ด ’ และ’ เฟรดดี้ ’.
คำขอได้กรองข้อมูลในช่วงระยะเวลาหนึ่งแล้ว และเหลือเพียงแคมเปญที่เราต้องการเท่านั้น ยังคงเป็นเพียงการเรียงลำดับผลลัพธ์จากมากไปหาน้อยขึ้นอยู่กับจำนวนเซสชัน การเรียงลำดับในแบบสอบถามเหล่านี้ดำเนินการตามธรรมเนียมสำหรับ SQL โดยใช้การใส่ร้าย สั่งโดย... ไวยากรณ์ค่อนข้างง่าย: คุณเพียงแค่แสดงรายการฟิลด์ที่คุณต้องการเรียงลำดับผลลัพธ์ และระบุลำดับการจัดเรียงด้วย ค่าเริ่มต้นคือลำดับ asc นั่นคือจากน้อยไปมาก หากคุณระบุพารามิเตอร์ desc หลังชื่อของฟิลด์ เคียวรีจะส่งกลับผลลัพธ์ตามลำดับจากมากไปหาน้อยที่ระบุในเครื่องหมายทับ สั่งโดยฟิลด์
ในกรณีของเรา บรรทัดในข้อความคำขอจะมีหน้าที่ในการกรอง:
สั่งซื้อโดย G desc
ดังนั้นผลลัพธ์สุดท้ายของสูตรในแผ่นงาน Level_2 ซึ่งแก้ปัญหาที่เราต้องการได้จะเป็นดังนี้:
แบบสอบถาม (DB! A1: L1143; "เลือก A, B, G โดยที่ (A> = วันที่" 2015-10-22 "และ A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")
ตอนนี้คุณสามารถกรองและจัดเรียงข้อมูลโดยใช้ไวยากรณ์ SQL ที่ง่ายที่สุดและฟังก์ชัน QUERY
".
บางทีพวกจากสำนักงานมอสโกอาจไม่มีเวลาดังนั้นจะมีการแปล Query Language Reference (เวอร์ชัน 0.7) ฟรี
API การแสดงภาพของ Google ภาษาแบบสอบถาม (เวอร์ชัน 0.7)
ภาษาการสืบค้น Google Visualization API ช่วยให้คุณสามารถจัดการข้อมูลโดยการสืบค้นแหล่งข้อมูล
ภาษาคิวรีช่วยให้เราสามารถจัดโครงสร้างข้อมูลในแบบที่เราต้องการเพื่อให้ได้ผลลัพธ์
ไวยากรณ์ภาษาแบบสอบถามคล้ายกับ SQL ผู้ที่มีความเชี่ยวชาญในการใช้ SQL จะสามารถควบคุมภาษาคิวรีได้อย่างรวดเร็ว ส่วนไวยากรณ์ระบุความแตกต่างในภาษาเหล่านี้
โปรดทราบว่าไม่จำเป็นต้องใช้ภาษาคิวรีในการแสดงผลเสมอไป จำเป็นต้องใช้ฐาน ไปที่เนื้อหา
การใช้ภาษาแบบสอบถาม
คุณสามารถเพิ่มสตริงการสืบค้นลงในแหล่งข้อมูลได้สองวิธี: จากโค้ด JavaScript หรือเป็นพารามิเตอร์ไปยังลิงก์แหล่งข้อมูล หากลิงก์ของคุณไม่มีพารามิเตอร์การค้นหา ระบบจะส่งคืนชุดข้อมูลทั้งหมดตามค่าเริ่มต้น คุณสามารถเปลี่ยนชุดนี้ได้โดยการปรับคิวรีไปยังแหล่งข้อมูลเอง หากคุณกำลังใช้ฟังก์ชัน QUERY ใน Google ชีต คุณสามารถข้ามขั้นตอนถัดไปและไปยังส่วนถัดไปได้การตั้งค่าคำขอจาก JavaScript
ในการตั้งค่าสตริงการสืบค้นจากโค้ด JavaScript คุณต้องเรียกใช้เมธอด setQuery google.visualization.Query คลาสvar query = google.visualization.Query ใหม่ (DATA_SOURCE_URL);คุณสามารถเพิ่มสตริงการสืบค้นไปยังแหล่งข้อมูลได้โดยใช้พารามิเตอร์ tq... ดังนั้นจึงเป็นไปได้ที่จะใช้การแสดงภาพที่เขียนโดยนักพัฒนารายอื่น เพียงแค่ปรับชุดข้อมูลของพวกเขา
query.setQuery ("เลือกแผนก, ผลรวม (เงินเดือน) กลุ่มตามแผนก");
query.send (handleQueryResponse);
สตริงการสืบค้นต้องเข้ารหัส URL อย่างถูกต้อง คุณสามารถใช้ฟังก์ชัน JavaScript เข้ารหัสURIส่วนประกอบสำหรับการเข้ารหัสหรือทำด้วยตนเองผ่านเครื่องมือที่ส่วนท้ายของส่วน
ตัวอย่าง
พิจารณาตัวอย่างการค้นหาสำหรับ Google ชีต (โปรดจำไว้ว่าตัวระบุคอลัมน์เป็นตัวอักษรเสมอ ชื่อคอลัมน์ไม่ใช่ตัวระบุเมื่อเผยแพร่ ตัวระบุคอลัมน์จะต้องใช้ในการค้นหา)หลังจากเข้ารหัสแล้ว คำขอจะมีลักษณะดังนี้:
เลือก% 20A% 2C% 20 ผลรวม (B)% 20 กลุ่ม% 20by% 20Aสมมติว่าที่อยู่ของตารางข้อมูลเป็นดังนี้:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDEเพิ่มพารามิเตอร์คำขอ & tq = YOUR_QUERY_STRINGไปที่ลิงก์ไปยังตารางและรับสตริงการสืบค้นที่พร้อมใช้งาน
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A
ไวยากรณ์ภาษา
ภาพรวม
ภาษาแบบสอบถามของฉันคล้ายกับ SQL มาก อย่างไรก็ตาม มีข้อมูลเฉพาะบางอย่างที่ต้องนำมาพิจารณาตารางข้อมูล
เอกสารนี้มีคำว่า "ตารางข้อมูล" เพื่ออ้างอิงถึงผลลัพธ์ของแบบสอบถาม ตารางประกอบด้วยแถวและคอลัมน์ แต่ละคอลัมน์มีคุณสมบัติดังต่อไปนี้:
- ID (หรือ ID คอลัมน์)... ใช้เพื่ออ้างถึงคอลัมน์ของตาราง โปรดทราบว่าคุณต้องอ้างอิงคอลัมน์ตามตัวระบุเท่านั้น เล่ห์เหลี่ยม: พยายามอย่าใช้ช่องว่างในตัวระบุ ซึ่งอาจทำให้เกิดปัญหาในการแก้ไขคำขอ นอกจากนี้ ตัวระบุทั้งหมดที่มีช่องว่างจะต้องอยู่ในเครื่องหมายย้อนกลับ
- ฉลาก... นี่คือสตริงที่มักจะแสดงต่อผู้ใช้ปลายทาง ตัวอย่างเช่น คำอธิบายแผนภูมิในแผนภูมิวงกลมหรือชื่อของแผนภูมิตาราง ไม่สามารถใช้ได้กับฟังก์ชัน QUERY () ใน Google ชีต.
- ชนิดข้อมูล... รองรับประเภทข้อมูลต่อไปนี้: สตริง ตัวเลข บูลีน วันที่ (วันที่) วันที่และเวลา (วันที่และเวลา) เวลา (เวลาของวัน) ค่าทั้งหมดในคอลัมน์จะเป็นชนิดข้อมูลของคอลัมน์นั้นหรือเป็นค่าว่าง ชนิดข้อมูลเหล่านี้คล้ายกับประเภท JavaScript มาก ไม่เหมือนกัน สิ่งเหล่านี้ได้อธิบายไว้ในส่วนอักษร
- การจัดรูปแบบเทมเพลต... ตารางข้อมูลสามารถรองรับรูปแบบการจัดรูปแบบสำหรับคอลัมน์ทั้งหมดหรือบางส่วนได้ สิ่งเหล่านี้ได้อธิบายไว้ในส่วนการจัดรูปแบบ
ในเอกสารนี้ ตัวอย่างใช้ตารางที่มีข้อมูลและประเภทคอลัมน์ดังต่อไปนี้:
ชื่อ สตริง |
แผนก สตริง |
เวลาอาหารกลางวัน เวลาของวัน |
เงินเดือน |
จ้างวันที่ วันที่ |
อายุ ตัวเลข |
เป็นอาวุโส บูลีน |
อาวุโสเวลาเริ่ม วันเวลา |
---|---|---|---|---|---|---|---|
จอห์น | ภาษาอังกฤษ | 12:00:00 | 2005-03-19 | 35 | จริง | 2007-12-02 15:56:00 | |
เดฟ | ภาษาอังกฤษ | 12:00:00 | 2006-04-19 | 27 | เท็จ | โมฆะ | |
แซลลี่ | ภาษาอังกฤษ | 13:00:00 | 2005-10-10 | 30 | เท็จ | โมฆะ | |
เบ็น | ฝ่ายขาย | 12:00:00 | 2002-10-10 | 32 | จริง | 2005-03-09 12:30:00 | |
ดานา | ฝ่ายขาย | 12:00:00 | 2004-09-08 | 25 | เท็จ | โมฆะ | |
ไมค์ | การตลาด | 13:00:00 | 2005-01-10 | 24 | จริง | 2007-12-30 14:40:00 |
ตัวดำเนินการภาษา
ภาษาแบบสอบถามประกอบด้วยตัวดำเนินการต่อไปนี้ ซึ่งประกอบด้วยคำหนึ่งหรือสองคำ ผู้ประกอบการต้องปฏิบัติตามตามลำดับที่แสดงในตาราง:โอเปอเรเตอร์ | การใช้งาน |
---|---|
เลือก | เลือกคอลัมน์และลำดับที่จะส่งคืน หากละเว้นโอเปอเรเตอร์ คอลัมน์ทั้งหมดของตารางจะถูกส่งคืน |
ส่งกลับเฉพาะแถวตารางที่ตรงกับเงื่อนไข หากละเว้นโอเปอเรเตอร์ แถวทั้งหมดในตารางจะถูกส่งคืน | |
จัดกลุ่มโดย | จัดกลุ่มค่าตามแถว |
หมุน | แปลงค่าที่ไม่ซ้ำในคอลัมน์เป็นคอลัมน์ใหม่ คล้ายกับตารางเดือย |
สั่งโดย | จัดเรียงสตริงตามค่า |
ขีดจำกัด | ตั้งค่าขีดจำกัดของแถวที่จะส่งคืน |
offset | ข้ามจำนวนบรรทัดที่ระบุจากเอาต์พุต |
ฉลาก | ตั้งค่าป้ายกำกับคอลัมน์ |
รูปแบบ | จัดรูปแบบค่าในคอลัมน์ที่ระบุตามรูปแบบการจัดรูปแบบ |
ตัวเลือก | ตั้งค่าพารามิเตอร์เพิ่มเติม |
จาก | ไม่ได้ใช้ตัวดำเนินการจาก |
เลือก
คำสั่ง select ระบุว่าคอลัมน์ใดควรส่งคืนและเรียงลำดับอย่างไร หากไม่มีการระบุตัวดำเนินการ หรือเลือก * คอลัมน์ตารางทั้งหมดจะถูกส่งคืนในลำดับเดิม คอลัมน์สามารถอ้างอิงได้ผ่านตัวระบุ แต่ไม่สามารถอ้างอิงผ่านป้ายกำกับได้ ตัวระบุใน Google ชีตคือชื่อคอลัมน์ที่มีตัวอักษรหนึ่งหรือสองชื่อ (A, B, C, ..., AC, ..., DC, ...)พารามิเตอร์ตัวดำเนินการอาจเป็นตัวระบุคอลัมน์ ฟังก์ชันรวม ฟังก์ชันสเกลาร์ หรือตัวดำเนินการเลขคณิต
ตัวอย่าง:
เลือก *ที่อยู่อีเมลวันที่):
เลือกแผนก, เงินเดือน
เลือกสูงสุด (เงินเดือน)
เราได้รับผลลัพธ์:
เวลาอาหารกลางวัน | ชื่อ |
---|---|
12:00:00 | จอห์น |
12:00:00 | เดฟ |
13:00:00 | แซลลี่ |
12:00:00 | เบ็น |
12:00:00 | ดานา |
13:00:00 | ไมค์ |
ตัวดำเนินการเปรียบเทียบอย่างง่ายใช้เพื่ออธิบายเงื่อนไข<=, <, >, >=, =, !=, <>... โอเปอเรเตอร์ทั้งสอง! =,<>หมายถึง ไม่เท่ากับ... สตริงจะถูกเปรียบเทียบตามความหมายของพจนานุกรม หมายเหตุ ความเท่าเทียมกันจะถูกตรวจสอบผ่านตัวดำเนินการ = ไม่ผ่าน == เช่นเดียวกับในหลายภาษา... การเปรียบเทียบกับค่า null จะดำเนินการผ่านเป็นค่าว่างและไม่เป็นค่าว่าง เมื่อใช้ QUERY () ใน Google ชีต เป็นเรื่องปกติที่ช่องสตริงจะว่างเปล่า "" ไม่ใช่ค่าว่าง
คุณสามารถรวมหลายเงื่อนไขโดยใช้ตัวดำเนินการบูลีนและหรือไม่ก็ได้ วงเล็บใช้เพื่อกำหนดลำดับความสำคัญที่ชัดเจน
ส่วนคำสั่ง where ยังใช้ตัวดำเนินการเพิ่มเติมสำหรับการเปรียบเทียบสตริงที่ซับซ้อนยิ่งขึ้น โอเปอเรเตอร์เหล่านี้รับสองอาร์กิวเมนต์ ซึ่งต้องเป็นสตริง อาร์กิวเมนต์ที่ไม่ใช่สตริงใดๆ (วันที่, ตัวเลข) จะถูกแปลงเป็นสตริงก่อนการเปรียบเทียบ การเปรียบเทียบจะพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ (เพื่อให้คุณลักษณะนี้ราบรื่น ให้ใช้ฟังก์ชันสเกลาร์ด้านบน () ด้านล่าง ())
มี - จับคู่สตริงย่อย นิพจน์จะส่งคืนค่า จริง หากส่วนหนึ่งของสตริงตรงกับอาร์กิวเมนต์ที่ระบุ - สตริงย่อย ตัวอย่างเช่น เมื่อชื่อมี "John" จะส่งกลับ "จอห์น", "จอห์น อดัมส์", "ลอง จอห์น ซิลเวอร์"แต่ไม่ "จอห์น อดัมส์".
ตัวอย่าง:
เลือก *ตัวอย่างต่อไปนี้แสดงการใช้ตัวระบุอ้างอิงด้วยการเว้นวรรค ( ที่อยู่อีเมล) และตัวระบุที่ตรงกับชื่อของคำสงวน ( วันที่):
เลือกแผนก, เงินเดือน
เลือกสูงสุด (เงินเดือน)
เลือก `ที่อยู่อีเมล' ชื่อ` วันที่`ลองใช้แบบสอบถามต่อไปนี้กับตารางจากตัวอย่าง:
เราได้รับผลลัพธ์:
เวลาอาหารกลางวัน | ชื่อ |
---|---|
12:00:00 | จอห์น |
12:00:00 | เดฟ |
13:00:00 | แซลลี่ |
12:00:00 | เบ็น |
12:00:00 | ดานา |
13:00:00 | ไมค์ |
mysql_query ()ส่งคำขอไปยังฐานข้อมูลที่ใช้งานอยู่ของเซิร์ฟเวอร์ที่อ้างอิงโดยตัวชี้ที่ส่งผ่าน หากละเว้น link_identifier การเชื่อมต่อที่เปิดล่าสุดจะถูกใช้ หากไม่มีการเชื่อมต่อแบบเปิด ฟังก์ชันจะพยายามเชื่อมต่อกับ DBMS คล้ายกับฟังก์ชัน mysql_connect ()ไม่มีพารามิเตอร์ ผลลัพธ์ของแบบสอบถามถูกบัฟเฟอร์
ความคิดเห็น:สตริงการสืบค้นต้องไม่ลงท้ายด้วยเครื่องหมายอัฒภาค
สำหรับการสืบค้น SELECT, SHOW, EXPLAIN, DESCRIBE เท่านั้น mysql_query ()ส่งกลับตัวชี้ไปยังผลลัพธ์ของคิวรีหรือ เท็จหากคำขอไม่เสร็จสิ้น
ในกรณีอื่นๆ (INSERT, UPDATE, DELETE, DROP เป็นต้น) mysql_query ()ผลตอบแทน จริงในกรณีที่คำขอสำเร็จและ เท็จในกรณีที่เกิดข้อผิดพลาด ค่าไม่เท่ากัน เท็จแสดงว่าคำขอเสร็จสมบูรณ์แล้ว เขาไม่ได้พูดถึงจำนวนแถวที่ได้รับผลกระทบหรือส่งคืน ค่อนข้างเป็นไปได้ที่คำขอที่สำเร็จจะไม่ส่งผลกระทบต่อแถวใดๆ
ข้อความค้นหาต่อไปนี้ไม่ถูกต้องและ mysql_query ()จะกลับมา เท็จ :
mysql_query ()ยังถือว่าผิดพลาดและจะกลับมา เท็จหากคุณไม่มีสิทธิ์เพียงพอในการทำงานกับตารางที่ระบุในแบบสอบถาม
เมื่อทำงานกับผลลัพธ์แบบสอบถาม คุณสามารถใช้ฟังก์ชัน mysql_num_rows ()เพื่อค้นหาจำนวนแถวที่ส่งคืนโดยแบบสอบถาม SELECT หรือ mysql_affected_rows ()เพื่อค้นหาจำนวนแถวที่ประมวลผลโดยคำสั่ง DELETE, INSERT, REPLACE หรือ UPDATE
สำหรับ SELECT, SHOW, DESCRIBE, อธิบายการสืบค้นเท่านั้น, function mysql_query ()ส่งกลับตัวชี้ไปยังผลลัพธ์ที่สามารถใช้ในฟังก์ชัน mysql_fetch_array ()และฟังก์ชันอื่นๆ ที่ทำงานกับผลลัพธ์ของคิวรี เมื่อคุณทำงานกับผลลัพธ์เสร็จแล้ว คุณสามารถปล่อยทรัพยากรที่ใช้ในการจัดเก็บโดยใช้ฟังก์ชัน
บันทึก:โครงสร้างส่วนบน แบบสอบถามพลังงานนำเสนอใน Excel 2016 เป็นกลุ่มคำสั่ง ดาวน์โหลดและแปลง... ข้อมูลในบทความนี้นำไปใช้กับทั้ง Power Query และกลุ่มใหม่ สำหรับข้อมูลเพิ่มเติม ดูดาวน์โหลดและแปลงใน Excel 2016
ใน Power Query การดำเนินการ เพิ่มสร้างคิวรีใหม่ที่มีแถวทั้งหมดจากคิวรีแรก และแถวทั้งหมดจากคิวรีที่สอง
หมายเหตุด้านความปลอดภัย: ระดับความเป็นส่วนตัวป้องกันการรวมข้อมูลจากหลายแหล่งโดยไม่ได้ตั้งใจ ซึ่งอาจเป็นข้อมูลส่วนตัวหรือขององค์กร ในการสืบค้นข้อมูล ผู้ใช้อาจส่งข้อมูลจากแหล่งข้อมูลส่วนตัวไปยังแหล่งข้อมูลอื่นโดยไม่ได้ตั้งใจ ผู้โจมตีสามารถใช้ประโยชน์จากโอกาสนี้ Power Query จะวิเคราะห์แหล่งข้อมูลแต่ละแหล่งและกำหนดระดับความเป็นส่วนตัวสำหรับแหล่งข้อมูลนั้น: สาธารณะ องค์กร และส่วนตัว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับความเป็นส่วนตัว โปรดดูที่ระดับความเป็นส่วนตัว
กำลังเพิ่ม
คุณสามารถดำเนินการเพิ่มได้สองประเภท: การเพิ่มระดับกลางหรือ ต่อท้ายแบบอินไลน์... โดยใช้ การเพิ่มระดับกลางแบบสอบถามใหม่ถูกสร้างขึ้นสำหรับการดำเนินการเพิ่มแต่ละครั้ง ที่ ต่อท้ายแบบอินไลน์คุณเพิ่มข้อมูลลงในคิวรีที่มีอยู่จนกว่าจะถึงผลลัพธ์สุดท้าย ผลลัพธ์คือขั้นตอนใหม่ที่ส่วนท้ายของคิวรีปัจจุบัน
เพิ่มอินไลน์
การบวกระดับกลาง
ดูสิ่งนี้ด้วย:
บันทึก: ตัวแก้ไขแบบสอบถามแสดงเฉพาะเมื่อโหลด แก้ไข หรือสร้างคำขอใหม่ด้วย แบบสอบถามพลังงาน... วิดีโอแสดงหน้าต่าง ตัวแก้ไขแบบสอบถามที่ปรากฏขึ้นหลังจากที่คุณเปลี่ยนคิวรีในเวิร์กบุ๊ก Excel ดู ตัวแก้ไขแบบสอบถามโดยไม่ต้องดาวน์โหลดหรือแก้ไขแบบสอบถามที่มีอยู่ในสมุดงานในส่วน การรับข้อมูลภายนอกบนแถบริบบิ้น แบบสอบถามพลังงานเลือก จากแหล่งอื่น> แบบสอบถามว่างเปล่า... วิดีโอแสดงวิธีการแสดงวิธีใดวิธีหนึ่ง ตัวแก้ไขแบบสอบถาม.
เราได้เรียนรู้วิธีเชื่อมต่อกับเซิร์ฟเวอร์ MySQL เลือกฐานข้อมูลที่จะใช้งาน เรียนรู้ฟังก์ชัน PHP ในการส่งแบบสอบถามไปยังเซิร์ฟเวอร์ MySQL เรียนรู้การสืบค้นข้อมูลอย่างง่ายสองรายการ (การสร้างและการลบตาราง) และเรียนรู้วิธีปิดการเชื่อมต่อ
ตอนนี้เราจะเจาะลึกลงไปในแบบสอบถาม MySQL มาเริ่มกันเลย!
การสร้างตาราง - CREATE TABLE
ตอนนี้เรามีฐานข้อมูลเปล่า ไม่มีตารางอยู่ในนั้น เรามาสร้างตารางกันก่อน เรารู้วิธีการทำเช่นนี้ตั้งแต่ส่วนแรกแล้ว
นี่คือรหัสสคริปต์ที่จะสร้างเพลตที่เราต้องการ:
$ link = mysqli_connect ("localhost", "root", "", "ผู้ทดสอบ"); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); $ query = "สร้างผู้ใช้ตาราง (เข้าสู่ระบบ VARCHAR (20), รหัสผ่าน VARCHAR (20))"; if (mysqli_query ($ link, $ query)) echo "ตารางถูกสร้างขึ้น"; อื่น echo "ไม่ได้สร้างตาราง:" .mysqli_error (); mysqli_close (ลิงก์ $);
มีเพียงสองฟิลด์ในตารางของเรา: ล็อกอินและรหัสผ่าน สำหรับตอนนี้ เราไม่ต้องการอะไรอีกแล้ว อย่าให้กระบวนการนี้ซับซ้อน
ดังนั้นตารางจึงถูกสร้างขึ้น
การเพิ่มแถว (บันทึก) ลงในตาราง - INSERT
คุณสามารถเพิ่มแถวใหม่ลงในตารางได้โดยใช้คำสั่งแทรก SQL นี่คือตัวอย่าง:
$ link = mysqli_connect ("localhost", "root", "", "ผู้ทดสอบ"); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); $ query = "INSERT INTO ผู้ใช้ (ล็อกอิน, รหัสผ่าน) VALUE (" zeus "," pass123 ")"; if (mysqli_query ($ link, $ query)) echo "เพิ่มผู้ใช้แล้ว"; อื่น echo "ไม่มีการเพิ่มผู้ใช้:" mysqli_error (); mysqli_close (ลิงก์ $);
คิวรี SQL ประกอบด้วยคำสั่ง INSERT INTO ชื่อฐานข้อมูล ผู้ใช้ จากนั้นชื่อฟิลด์ในวงเล็บ ตามด้วยคำว่า VALUE ตามด้วยค่าที่เพิ่มในวงเล็บ ค่าถูกยกมา
ไวยากรณ์สำหรับคำขอมีลักษณะดังนี้:
INSERT INTO table_name (คอลัมน์1, คอลัมน์2) VALUE ("x1", "x2")
ต้องใช้เครื่องหมายคำพูดในวงเล็บที่สอง
ตัวแปรสามารถแทนที่ค่าได้ นี่คือตัวอย่าง:
$ link = mysqli_connect ("localhost", "root", "", "ผู้ทดสอบ"); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); $ เข้าสู่ระบบ = "ซุส"; $ รหัสผ่าน = "pass123"; $ query = "INSERT INTO ผู้ใช้ (ล็อกอิน, รหัสผ่าน) VALUE (" $ ล็อกอิน "," $ รหัสผ่าน ")"; if (mysqli_query ($ link, $ query)) echo "เพิ่มผู้ใช้แล้ว"; อื่น echo "ไม่มีการเพิ่มผู้ใช้:" mysqli_error (); mysqli_close (ลิงก์ $);
แน่นอน ตัวอย่างนี้ไม่สมเหตุสมผล อาจเป็นประโยชน์สำหรับผู้เริ่มต้นที่จะได้ยินว่านี่คือวิธีการบันทึกการเข้าสู่ระบบและรหัสผ่านที่ผู้ใช้ให้ระหว่างการลงทะเบียนในฐานข้อมูล ข้อมูลนี้ถูกเก็บไว้ในตัวแปร หลังจากตรวจสอบแล้ว จะถูกเขียนลงในฐานข้อมูล
มีวิธีที่รวดเร็วในการแทรกหลายแถวด้วยแบบสอบถาม INSERT เดียว:
INSERT INTO ผู้ใช้ (ล็อกอิน, รหัสผ่าน) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")
อย่างที่คุณเห็น ข้อมูลที่แจกแจงไว้จะถูกคั่นด้วยเครื่องหมายจุลภาค
ด้วยการใช้คำสั่ง INSERT เราจึงได้เรียนรู้วิธีเพิ่มระเบียนลงในตาราง ก้าวต่อไป.
มุมมองตาราง: คำสั่ง SELECT
ขณะนี้เรามีตารางผู้ใช้ที่มีแถว สคริปต์ก่อนหน้าสามารถเรียกใช้ได้หลายครั้ง และแต่ละครั้งจะเพิ่มแถวลงในตาราง ตอนนี้เราอาจไม่รู้ว่าเรามีกี่แถวในตาราง และอยากทราบว่าเราเขียนอะไรไว้บ้าง
หากต้องการดึงข้อมูลจากตาราง ให้ใช้คำสั่ง SQL SELECT เครื่องหมาย * หมายความว่าเรากำลังขอข้อมูลทั้งหมด จากนั้นหลังจากคำว่า FROM เราจะเขียนชื่อของตารางที่เราต้องการรับข้อมูล
ลองสอบถามข้อมูลทั้งหมดจากตารางผู้ใช้:
$ link = mysqli_connect ("localhost", "root", "", "ผู้ทดสอบ"); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); $ query = "เลือก * จากผู้ใช้"; $ ผล = mysqli_query ($ ลิงค์ $ แบบสอบถาม); if (! $ result) echo "เกิดข้อผิดพลาด:" mysqli_error (); อื่น echo "ข้อมูลที่ได้รับ"; mysqli_close (ลิงก์ $);
ฟังก์ชัน mysqli_query () ส่งคืนตัวระบุผลลัพธ์ของแบบสอบถามให้เรา - เราใส่ไว้ในตัวแปรและในอนาคตเราจะทำงานกับมันโดยใช้ฟังก์ชัน PHP อื่น ๆ
จำนวนบันทึกในคำขอ
ลองหาว่ามีกี่แถวในแบบสอบถามของเรา? ฉันได้เรียกใช้สคริปต์เพื่อเพิ่มระเบียนลงในตารางด้วยตัวเอง ฉันจำไม่ได้ว่ากี่ครั้งแล้ว และตอนนี้ฉันไม่รู้ว่าตารางของฉันมีกี่แถว
ฟังก์ชัน mysqli_num_rows () ใช้เพื่อกำหนดจำนวนแถวในผลลัพธ์การสืบค้น ฟังก์ชันนี้จะถูกส่งผ่านตัวระบุผลลัพธ์ของคิวรี และจะส่งกลับจำนวนเรคคอร์ด
$ link = mysqli_connect ("localhost", "root", "", "ผู้ทดสอบ"); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); $ query = "เลือก * จากผู้ใช้"; $ ผล = mysqli_query ($ ลิงค์ $ แบบสอบถาม); if (! $ result) echo "เกิดข้อผิดพลาด:" mysqli_error (); อื่น echo "ข้อมูลที่ได้รับ"; จำนวน $ = mysqli_num_rows ($ ผล); echo "จำนวนแถวในตาราง: $ count"; mysqli_close (ลิงก์ $);
ถ้าเราต้องการหาจำนวนเรคคอร์ดในตาราง วิธีการที่กำหนดก็ไม่ใช่วิธีที่เหมาะสมที่สุด ที่นี่เราพบจำนวนระเบียนที่พบในแบบสอบถาม แต่จำนวนระเบียนในตารางมีการค้นหาแตกต่างกัน
จำนวนระเบียนในตาราง SELECT COUNT (*)
หากต้องการทราบจำนวนระเบียนในตาราง คุณสามารถใช้คำสั่ง SELECT COUNT (*) FROM table_name
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); $ query = "เลือก * จากผู้ใช้"; $ ผล = mysqli_query ($ ลิงค์ $ แบบสอบถาม); if (! $ result) echo "เกิดข้อผิดพลาด:" mysqli_error (); อื่น echo "ข้อมูลที่ได้รับ"; จำนวน $ = mysqli_fetch_row ($ ผล); echo "จำนวนแถวในตาราง: $ count"; mysqli_close (ลิงก์ $);
โปรดทราบว่าเราได้ใช้ฟังก์ชัน PHP ใหม่ mysqli_fetch_row () เพื่อดึงข้อมูล ฟังก์ชันนี้จะคืนค่าแถวของผลลัพธ์ของคิวรีในรูปแบบของอาร์เรย์อย่างง่าย ในกรณีของเรามีฟิลด์หนึ่งฟิลด์ในแถวและมีดัชนี 0
การดูผลลัพธ์ของการสืบค้นแบบวนซ้ำ
หลังจากดำเนินการค้นหา SQL ด้วยคำสั่ง SELECT และรับตัวระบุผลลัพธ์ของแบบสอบถาม PHP จะสร้างตัวชี้ภายในในชุดระเบียนผลลัพธ์ ตัวชี้นี้จะย้ายไปยังระเบียนถัดไปโดยอัตโนมัติหลังจากอ้างอิงไปยังระเบียนปัจจุบัน กลไกนี้ทำให้ง่ายต่อการวนรอบชุดผลลัพธ์ของแบบสอบถาม SELECT
PHP มีฟังก์ชันหลายอย่างซึ่งคุณสามารถรับอาร์เรย์ที่ประกอบด้วยฟิลด์สำหรับแต่ละบรรทัดของการสืบค้นผลลัพธ์ ลองใช้ฟังก์ชัน mysqli_fetch_row () เป็นตัวอย่าง ฟังก์ชันนี้จะถูกส่งผ่าน ID คำขอและส่งคืนอาร์เรย์ ดังนั้นในลูปผลลัพธ์การค้นหาทั้งหมดจะถูกสแกน เมื่อถึงจุดสิ้นสุดของผลลัพธ์การสืบค้น ฟังก์ชันจะส่งกลับค่าเท็จ
ดังนั้นเราจึงสืบค้นข้อมูลทั้งหมดจากตารางผู้ใช้ (SELECT * FROM users)
"; while ($ row = mysqli_fetch_row ($ result)) (echo" เข้าสู่ระบบ: $ row รหัสผ่าน: $ row
";) mysqli_close ($ ลิงก์);
Mysqli_fetch_row () ส่งคืนอาร์เรย์อย่างง่าย ในการวนซ้ำแต่ละครั้ง เราจะได้รับอาร์เรย์ที่มีแถวจากตาราง ซึ่งเป็นฟิลด์ที่เราสามารถเข้าถึงได้โดยการระบุดัชนีตัวเลข
สามารถทำได้เช่นเดียวกันโดยใช้ฟังก์ชัน mysql_fetch_assoc () ซึ่งจะส่งคืนอาร์เรย์ที่เชื่อมโยง
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); $ ผล = mysqli_query ($ ลิงก์ "เลือก * จากผู้ใช้"); if (! $ result) echo "เกิดข้อผิดพลาด:" mysqli_error (); อื่น echo "ข้อมูลที่ได้รับ
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" เข้าสู่ระบบ: $ row รหัสผ่าน: $ row
";) mysqli_close ($ ลิงก์);
นอกจากนี้ยังมีฟังก์ชัน mysqli_fetch_array () - ส่งคืนอาร์เรย์ประเภทใดก็ได้ และ mysqli_fetch_object () - ส่งคืนอ็อบเจ็กต์
SELECT DISTINCT Query - ค่าฟิลด์ที่ไม่ซ้ำ
มาสร้างตารางใหม่กันเถอะ:
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); // วางตารางที่มีอยู่ mysqli_query ($ link, "DROP TABLE users"); // สร้างตารางใหม่ $ query = "สร้างผู้ใช้ตาราง (ชื่อ VARCHAR (20), นามสกุล VARCHAR (20), อายุ TINYINT ไม่ได้ลงนาม)"; if (mysqli_query ($ link, $ query)) echo "ตารางถูกสร้างขึ้น
"; else echo" ไม่ได้สร้างตาราง: ". mysqli_error (); // ฟังก์ชันสำหรับเพิ่มระเบียนในฟังก์ชันตาราง add_new_line ($ link, $ query) (if (! mysqli_query ($ link, $ query)) echo" ผู้ใช้ไม่ เพิ่ม : ". mysqli_error ();) // เพิ่มระเบียน add_new_line ($ link," INSERT INTO users (ชื่อ, นามสกุล, อายุ) VALUE ("Max", "Jayson", "33") "); add_new_line ($ link , "INSERT INTO ผู้ใช้ (ชื่อ, นามสกุล, อายุ) VALUE (" Bob "," Freeman "," 26 ")"); add_new_line ($ ลิงก์ "INSERT INTO ผู้ใช้ (ชื่อ, นามสกุล, อายุ) VALUE (" Sara " , "Lopes", "65") "); add_new_line ($ link," INSERT INTO ผู้ใช้ (ชื่อ, นามสกุล, อายุ) VALUE ("Serg", "Pupin", "29") "); add_new_line ($ ลิงก์, " INSERT INTO ผู้ใช้ (ชื่อ, นามสกุล, อายุ) VALUE ("Serg", "Borman", "43") "); add_new_line ($ ลิงก์" INSERT INTO ผู้ใช้ (ชื่อ, นามสกุล, อายุ) VALUE ("สูงสุด", " Lopes "," 21 ")"); // แสดงเนื้อหาของตารางในเบราว์เซอร์ $ result = mysqli_query ($ link, "SELECT * FROM users"); if (! $ Result) echo "เกิดข้อผิดพลาด: " . Mysqli_error (); else echo "ได้รับข้อมูลแล้ว
"; while ($ row = mysqli_fetch_assoc ($ result)) (echo" ชื่อ: $ row นามสกุล: $ row อายุ: $ row
";) mysqli_close ($ ลิงก์);
ดังนั้นเราจึงมีตารางใหม่ที่ซับซ้อนยิ่งขึ้นพร้อมระเบียนที่ไม่ซ้ำกัน ตอนนี้เรามาดูกันว่าเรามีชื่อในฐานข้อมูลกี่ชื่อ
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); $ result = mysqli_query (ลิงก์ $ "เลือกชื่อ DISTINCT จากผู้ใช้"); echo "ชื่อทั้งหมด:". mysqli_num_rows ($ ผล) "
"; echo" รายชื่อ:
"; ในขณะที่ ($ ชื่อ = mysqli_fetch_row ($ ผล)) (echo" $ name
";) mysqli_close ($ ลิงก์);
แบบสอบถาม SQL "เลือก DISTINCT ชื่อจากผู้ใช้" ส่งคืนผลลัพธ์พร้อมชื่อที่ไม่ซ้ำทั้งหมดในตารางของเรา แต่ละชื่อที่ไม่ซ้ำกันในบรรทัดใหม่ในผลลัพธ์ของคิวรี
การเรียงลำดับผลลัพธ์ - ORDER BY
โดยการเพิ่มคำสั่ง ORDER BY ให้กับการสืบค้น SQL เราจัดเรียงผลลัพธ์การสืบค้นจากน้อยไปหามาก (ตัวเลขและตัวอักษรตามลำดับตัวอักษร) ต่อไปนี้คือตัวอย่างที่คุณสามารถเปรียบเทียบคิวรีปกติและจัดเรียงตามอายุ (ฟิลด์อายุ)
";) echo" เรียงตามอายุ:
"; $ result = mysqli_query ($ link," SELECT * FROM users ORDER BY age "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล: $ line อายุ: $ ไลน์.
";) mysqli_close ($ ลิงก์);
คุณสามารถแทนที่ฟิลด์อายุในคำสั่ง ORDER BY ด้วยฟิลด์ชื่อและดูผลลัพธ์
ในการเรียงลำดับผลลัพธ์ของแบบสอบถามในลำดับที่กลับกัน ให้ใช้คำสั่ง ORDER BY age DESC
เงื่อนไขการจับคู่ - WHERE
โดยการเพิ่มคำสั่ง WHERE ลงในแบบสอบถาม SQL เราจะสืบค้นเฉพาะระเบียนที่ตรงกับเงื่อนไขเท่านั้น เช่น ขอคนอายุต่ำกว่า 30 ปี
เมื่อต้องการทำสิ่งนี้ ให้ใช้คำสั่ง SQL "SELECT * FROM users WHERE age
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); echo "ผู้ที่มีอายุต่ำกว่า 30 ปี:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE อายุ<30");
while ($line = mysqli_fetch_row($result))
{
echo "Имя: $line. Фамилия: $line. Возраст: $line.
";) mysqli_close ($ ลิงก์);
นอกจากนี้เรายังสามารถเรียงลำดับผลลัพธ์จากน้อยไปมากตามอายุได้ทันที:
"เลือก * จากผู้ใช้ที่อายุ<30 ORDER BY age ".
ถ้าเราสร้างแบบสอบถาม "เลือกชื่อจากผู้ใช้ที่อายุ<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.
เราสามารถสอบถามค่าของสองฟิลด์: "เลือกชื่อ อายุจากผู้ใช้ WHERE อายุ
ตอนนี้ขอผู้ใช้ทั้งหมดที่ชื่อ "Max"
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); echo "สูงสุดทั้งหมด:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name = "Max" "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล: $ line อายุ : $ line.
";) mysqli_close ($ ลิงก์);
และอีกตัวอย่างหนึ่งของข้อความค้นหา - จะเลือกเฉพาะชื่อจากตารางผู้ใช้เท่านั้น ทุกอย่างยกเว้น Max
เลือกชื่อจากผู้ใช้ WHERE name! = "Max"
นั่นคือทั้งหมดที่มีส่วนคำสั่ง WHERE
จำกัดระเบียน - LIMIT
โดยการเพิ่มคำสั่ง LIMIT ในการสืบค้น SQL เราจะจำกัดขนาดของผลลัพธ์
แบบสอบถามที่พิมพ์สามระเบียนแรก: "SELECT * FROM users LIMIT 3" มาดูกันว่ามันทำงานอย่างไร:
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); echo "เนื้อหาของตาราง:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อจริง: $ line นามสกุล: $ line อายุ: $ line
";) ก้อง"
สามรายการแรก:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล: $ line อายุ: $ line .
";) ก้อง"
สามรายการที่สอง:
"; $ result = mysqli_query ($ link," SELECT * FROM users LIMIT 3, 3 "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล: $ line อายุ: เส้น $ ...
";) mysqli_close ($ ลิงก์);
นอกจากนี้ เรายังใช้ข้อความค้นหา: "SELECT * FROM users LIMIT 3, 3" ทริปเปิ้ลที่สองระบุออฟเซ็ตในผลลัพธ์ของคิวรี
การจับคู่รูปแบบ - LIKE
ภาษา SQL รองรับรูปแบบที่เรียบง่าย สำหรับสิ่งนี้ จะใช้คำสั่ง LIKE และระบุรูปแบบโดยใช้อักขระ%
นี่คือตัวอย่างคิวรีที่จะส่งคืนระเบียนทั้งหมดที่มีชื่อขึ้นต้นด้วยตัวอักษร S
เลือก * จากผู้ใช้โดยที่ชื่อเช่น "S%"
ทดสอบคำขอ:
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); echo "เนื้อหาของตาราง:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อจริง: $ line นามสกุล: $ line อายุ: $ line
";) ก้อง"
ชื่อที่ขึ้นต้นด้วย S:
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE name LIKE "S%" "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล: $ line . อายุ : $ line.
";) mysqli_close ($ ลิงก์);
นี่คือตัวอย่างแบบสอบถามที่จะส่งคืนระเบียนทั้งหมดที่มีนามสกุลที่ลงท้ายด้วยตัวอักษร s
เลือก * จากผู้ใช้โดยที่ชื่อ LIKE "% s"
ตรงกับเงื่อนไข - IN
แบบสอบถามนี้โดยใช้คำสั่ง IN จะส่งคืนเฉพาะแถวที่ตรงกับเงื่อนไขอย่างเคร่งครัด
ตัวอย่างเช่น เราสนใจผู้ที่มีอายุ 21, 26 และ 33 ปี
เลือก * จากผู้ใช้ที่อายุ (21,26,33)
ทดสอบคำขอ:
$ link = mysqli_connect ("localhost", "root", ""); ถ้า (! $ link) ตาย ("ข้อผิดพลาด"); mysqli_select_db ("ผู้ทดสอบ"); echo "เนื้อหาของตาราง:
"; $ result = mysqli_query ($ link," SELECT * FROM users "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อจริง: $ line นามสกุล: $ line อายุ: $ line
";) ก้อง"
ผู้ที่มีอายุที่กำหนด (21, 26, 33):
"; $ result = mysqli_query ($ link," SELECT * FROM users WHERE age IN (21, 26, 33) "); while ($ line = mysqli_fetch_row ($ result)) (echo" ชื่อ: $ line นามสกุล : $ line. อายุ: $ line.
";) mysqli_close ($ ลิงก์);
ค่าสูงสุดและต่ำสุดในคอลัมน์
เลือกค่าอายุสูงสุดในตารางผู้ใช้
เลือกสูงสุด (อายุ) จากผู้ใช้
คิวรีต่อไปนี้จะเลือกข้อมูลจากตารางผู้ใช้โดยใช้ฟิลด์ชื่อและอายุ โดยที่อายุคือค่าต่ำสุด
เลือกชื่อ ขั้นต่ำ (อายุ) จากผู้ใช้
กำลังอัปเดตบันทึก - UPDATE
กำหนดให้ Max Lopes อายุ 15 ปี สิ่งนี้ทำได้ด้วยแบบสอบถาม MySQL:
UPDATE ผู้ใช้ SET age = "15" WHERE name = "Max" AND นามสกุล = "Lopes"
สังเกตคำสั่ง AND ใหม่ (และ - ในภาษาอังกฤษหมายถึง "และ") ในแบบสอบถาม หากเราไม่ระบุนามสกุล อายุ 15 ปี จะถูกกำหนดเป็น Max ทั้งหมดในตาราง
หนึ่งคิวรีสามารถอัปเดตสองฟิลด์ขึ้นไปในหนึ่งบรรทัด สิ่งนี้ทำได้ดังนี้:
อัปเดตผู้ใช้ SET age = "18", นามสกุล = "Coocker" โดยที่ id = "3"
ตารางของเราไม่มีฟิลด์ id ดังนั้น แบบสอบถามนี้จะไม่ทำงาน แต่เราจะได้เรียนรู้ฟิลด์นี้ที่มีหมายเลขบรรทัดที่ไม่ซ้ำกันอย่างแน่นอน
ลบบันทึก - DELETE
แบบสอบถามฐานข้อมูล MySQL เพื่อลบบันทึก:
ลบจากผู้ใช้โดยที่ id = "10"
อีกครั้งไม่มีฟิลด์ id ในตารางของเรา แต่เราสามารถลบคนที่อายุต่ำกว่า 18 ปีออกจากมันได้
ลบจากผู้ใช้ที่อายุ< "18"
วางตาราง
แบบสอบถามฐานข้อมูล MySQL ที่ลบตารางผู้ใช้ทั้งหมด:
ผู้ใช้ DROP Table
การวางคอลัมน์ - ALTER TABLE ... DROP ...
บางครั้ง คุณอาจต้องลบคอลัมน์ออกจากตาราง ตัวอย่างเช่น ลบคอลัมน์อายุออกจากผู้ใช้:
แก้ไขผู้ใช้ตาราง DROP อายุ
แบบสอบถาม MySQL นี้ลบคอลัมน์อย่างถาวรและไม่สามารถเพิกถอนได้
เพิ่มคอลัมน์ - ALTER TABLE ... ADD ...
บางครั้ง คุณอาจต้องการเพิ่มคอลัมน์ลงในตารางที่มีอยู่ ตัวอย่างเช่น เพิ่มคอลัมน์อายุลงในตารางผู้ใช้อีกครั้ง:
แก้ไขผู้ใช้ตาราง เพิ่มอายุ TINYINT ไม่ได้ลงนาม
เปลี่ยนชื่อคอลัมน์ - ALTER TABLE ... CHANGE ...
บางครั้ง คุณอาจต้องเปลี่ยนชื่อคอลัมน์ เช่น เปลี่ยนชื่อคอลัมน์อายุเป็น vozrast เราทำเช่นนี้:
ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED . เปลี่ยนแปลงผู้ใช้ตาราง
แบบสอบถาม MySQL นี้เปลี่ยนชื่อคอลัมน์อายุเป็น vozrast ด้วยประเภทข้อมูล TINYINT UNSIGNED
การเปลี่ยนชื่อตาราง - RENAME TABLE ... TO ...
บางครั้งอาจจำเป็นต้องเปลี่ยนชื่อตาราง:
เปลี่ยนชื่อผู้ใช้ตารางเป็นประชาชน
การวางฐานข้อมูล - DROP DATABASE
แบบสอบถามนี้สามารถวางฐานข้อมูลด้วยผู้ทดสอบชื่อ:
DROP DATABASE เครื่องทดสอบ
การสร้างฐานข้อมูล - CREATE DATABASE
แบบสอบถามนี้สร้างฐานข้อมูลชื่อผู้ทดสอบ:
สร้างผู้ทดสอบฐานข้อมูล
คำขอนี้ใช้ได้กับฉันในเดนเวอร์ แต่สำหรับโฮสต์ อาจใช้ไม่ได้หากผู้ใช้ฐานข้อมูลไม่ได้รับอนุญาตให้ดำเนินการลบ
ผลลัพธ์
ดังนั้น ในส่วนนี้ เราได้ทำความคุ้นเคยกับการสืบค้น MySQL คำขอจำนวนมากที่เราได้พิจารณาแล้วมักไม่ค่อยมีประโยชน์สำหรับเราในกระบวนการทำงาน แต่คุณจำเป็นต้องทราบ เนื่องจากคำขอเหล่านี้จะมีประโยชน์ในกระบวนการพัฒนาสคริปต์อย่างแน่นอน
คำขอบางรายการมักจะสร้างจาก phpMyAdmin เท่านั้น (เช่น การสร้างและการลบฐานข้อมูล)
ในการทำงานของไซต์ คุณมักจะต้องเพิ่มระเบียนลงในตาราง แก้ไขระเบียน หรือลบระเบียนออกจากตาราง
ขั้นตอนต่อไปคือการสำรวจประเภทข้อมูล MySQL