คอมพิวเตอร์ Windows อินเทอร์เน็ต

ส่งแบบสอบถามฐานข้อมูลใน 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);
query.setQuery ("เลือกแผนก, ผลรวม (เงินเดือน) กลุ่มตามแผนก");
query.send (handleQueryResponse);

คุณสามารถเพิ่มสตริงการสืบค้นไปยังแหล่งข้อมูลได้โดยใช้พารามิเตอร์ tq... ดังนั้นจึงเป็นไปได้ที่จะใช้การแสดงภาพที่เขียนโดยนักพัฒนารายอื่น เพียงแค่ปรับชุดข้อมูลของพวกเขา
สตริงการสืบค้นต้องเข้ารหัส 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 ไมค์
ส่วนคำสั่ง where ใช้เพื่อส่งคืนเฉพาะแถวที่ตรงกับเงื่อนไขเท่านั้น
ตัวดำเนินการเปรียบเทียบอย่างง่ายใช้เพื่ออธิบายเงื่อนไข<=, <, >, >=, =, !=, <>... โอเปอเรเตอร์ทั้งสอง! =,<>หมายถึง ไม่เท่ากับ... สตริงจะถูกเปรียบเทียบตามความหมายของพจนานุกรม หมายเหตุ ความเท่าเทียมกันจะถูกตรวจสอบผ่านตัวดำเนินการ = ไม่ผ่าน == เช่นเดียวกับในหลายภาษา... การเปรียบเทียบกับค่า 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])

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