MySQL คำสั่ง SELECT พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔎 วัตถุประสงค์หลัก: คำสั่ง SELECT ใช้สำหรับดึงข้อมูลแถวที่จัดเก็บไว้ซึ่งตรงกับเกณฑ์ที่กำหนด จากพรอมต์คำสั่งหรือจาก PHP Pythonและภาษาอื่นๆ
  • 🧩 ลำดับไวยากรณ์: คำสั่ง SELECT, FROM, WHERE, GROUP BY, HAVING และ ORDER BY ต้องปรากฏตามลำดับที่กำหนดไว้
  • ทางลัดดาว: SELECT * FROM `members`; จะส่งคืนทุกคอลัมน์ ในขณะที่การระบุชื่อคอลัมน์อย่างชัดเจนจะทำให้ชุดผลลัพธ์มีขนาดเล็กลงและประมวลผลได้เร็วขึ้น
  • 🔗 นิพจน์: ฟังก์ชัน Concat() จะรวมค่าในคอลัมน์เข้าด้วยกัน และฟังก์ชัน LEFT() จะตัดอักขระที่ไม่จำเป็นออก เพื่อให้ฟิลด์ที่คำนวณแล้วปรากฏในชุดผลลัพธ์โดยตรง
  • 🏷️ ชื่อเรียกแทนคอลัมน์: คีย์เวิร์ด AS ที่เป็นตัวเลือกจะเปลี่ยนชื่อนิพจน์ใดๆ โดยแทนที่ส่วนหัวที่อ่านยาก เช่น Concat(`title`) ด้วยป้ายกำกับที่ชัดเจน
  • 🖱️ การเปรียบเทียบโต๊ะทำงาน: MySQL Workbench สร้างคำสั่งค้นหาแบบเห็นภาพ แต่คำสั่ง SELECT ที่เขียนด้วยมือยังคงจำเป็นสำหรับการดึงข้อมูลที่ซับซ้อนและแม่นยำ

คำสั่ง SELECT คืออะไรในภาษาอื่น MySQL?

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

เลือกแบบสอบถามใน MySQL

เนื่องจากคำสั่ง SELECT เป็นคำสั่งที่คุณจะใช้บ่อยที่สุด การเรียนรู้ไวยากรณ์ของคำสั่งนี้ก่อนที่จะลองใช้ข้อมูลตัวอย่างจึงเป็นสิ่งสำคัญ

ไวยากรณ์คำสั่ง SQL SELECT

SELECT เป็นคำสั่ง SQL ที่ใช้บ่อยที่สุด และมีไวยากรณ์ทั่วไปดังนี้:

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

ที่นี่

  • SELECT เป็นคีย์เวิร์ด SQL ที่ช่วยให้ฐานข้อมูลทราบว่าคุณต้องการดึงข้อมูล
  • [แตกต่าง | ทั้งหมด] คำหลักเสริมเหล่านี้ใช้ปรับแต่งผลลัพธ์ที่ได้จากคำสั่ง SQL SELECT หากไม่ได้ระบุอะไรเลย ระบบจะถือว่า ALL เป็นค่าเริ่มต้น
  • - [fieldExpression [เป็นชื่อใหม่]} ต้องระบุอย่างน้อยหนึ่งส่วน เครื่องหมาย “*” จะเลือกทุกฟิลด์จากชื่อตารางที่ระบุ ส่วน fieldExpression จะทำการคำนวณกับฟิลด์ที่ระบุ เช่น การบวกตัวเลข หรือการรวมฟิลด์สตริงสองฟิลด์เข้าด้วยกัน
  • จาก tableName เป็นพารามิเตอร์ที่จำเป็นและต้องมีอย่างน้อยหนึ่งตาราง หากมีหลายตารางจะต้องคั่นด้วยเครื่องหมายจุลภาคหรือเชื่อมต่อกันโดยใช้คำสั่ง JOIN
  • WHERE เงื่อนไขเป็นตัวเลือกเสริม ใช้ระบุเกณฑ์ในชุดผลลัพธ์ที่ได้จากการสืบค้น
  • จัดกลุ่มตาม ใช้เพื่อรวบรวมบันทึกที่มีค่าฟิลด์เหมือนกัน
  • การมี เงื่อนไขใช้สำหรับระบุเกณฑ์เมื่อใช้งานร่วมกับคีย์เวิร์ด GROUP BY
  • สั่งโดย ใช้เพื่อระบุลำดับการเรียงลำดับของชุดผลลัพธ์

*

สัญลักษณ์ดอกจัน (*) ใช้สำหรับเลือกทุกคอลัมน์ในตาราง คำสั่ง SELECT แบบง่ายจะมีลักษณะดังที่แสดงด้านล่าง

SELECT * FROM `members`;

คำสั่งข้างต้นเลือกฟิลด์ทั้งหมดจากตารางสมาชิก เครื่องหมายเซมิโคลอนเป็นตัวจบคำสั่ง ไม่จำเป็นต้องใช้ แต่การจบคำสั่งด้วยวิธีนี้ถือเป็นวิธีปฏิบัติที่ดี

เลือก DISTINCT และ LIMIT ใน MySQL

มีคำสำคัญเสริมสองคำในไวยากรณ์ที่ควรพิจารณาอย่างละเอียด เพราะผู้เริ่มต้นจะพบเจอคำเหล่านี้ทันทีที่ตารางมีขนาดใหญ่ขึ้น

DISTINCT ลบแถวที่ซ้ำกันออกจากชุดผลลัพธ์ ตาราง movies เก็บภาพยนตร์หลายเรื่องที่ออกฉายในปี 2007 ดังนั้นการค้นหาแบบธรรมดาจึงแสดงปีนั้นซ้ำกัน DISTINCT จะคืนค่าแต่ละค่าเพียงครั้งเดียว

SELECT DISTINCT `year_released` FROM `movies`;

LIMIT ฟังก์ชันนี้จำกัดจำนวนแถวที่ส่งคืน ซึ่งจะช่วยป้องกันลูกค้าจากคำสั่งค้นหาที่อาจดึงข้อมูลมานับล้านรายการ

SELECT * FROM `movies` LIMIT 5;
คำหลัก สิ่งที่มันไม่ ควรใช้เมื่อใด
ทั้งหมด (ค่าเริ่มต้น) ส่งคืนทุกแถวที่ตรงกัน รวมถึงแถวที่ซ้ำกันด้วย การนับหรือการแสดงรายการบันทึกดิบ
DISTINCT ยุบแถวที่ซ้ำกันให้เหลือแถวเดียว การสร้างรายการค่าที่ไม่ซ้ำกัน
LIMIT แสดงผลลัพธ์เฉพาะ 10 แถวแรกเท่านั้น การดูตัวอย่างข้อมูลหรือการแบ่งหน้าผลลัพธ์

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

ตัวอย่างการใช้งานคำสั่ง SELECT

คลิกเพื่อดาวน์โหลด ฐานข้อมูล myflix DB ถูกนำมาใช้สำหรับตัวอย่างเชิงปฏิบัติ

คุณสามารถเรียนรู้วิธีการนำเข้าไฟล์ .sql ลงในระบบได้ MySQL ม้านั่งทำงานของช่างเครื่อง.

ตัวอย่างต่อไปนี้แสดงการใช้งานบนตารางสองตารางต่อไปนี้

1 ตาราง: สมาชิก ตาราง

หมายเลขสมาชิก full_names เพศ วันเกิด ที่อยู่ทางกายภาพ_ รหัสไปรษณีย์ เบอร์ติดต่อ อีเมล
1 เจเน็ต โจนส์ หญิง 21-07-1980 ถนนสายแรก แปลงที่ 4 กระเป๋าส่วนตัว 0759 253 542 janetjones@yagoo.cm
2 เจเน็ต สมิธ โจนส์ หญิง 23-06-1980 เมลโรส 123 NULL NULL jj@fstreet.com
3 โรเบิร์ต ฟิล ชาย 12-07-1989 3 ถนน 34 NULL 12345 rm@tstreet.com
4 กลอเรียวิลเลียมส์ หญิง 14-02-1984 2 ถนน 23 NULL NULL NULL

2 ตาราง: ภาพยนตร์ ตาราง

movie_id ชื่อเรื่อง ผู้อำนวยการ year_released Category_id
1 โจรสลัดแห่งแคริบเบียน 4 มาร์แชลล์ร็อบ 2011 1
2 ลืมซาราห์ มาร์แชล นิโคลัสสตอลเลอร์ 2008 2
3 X-Men NULL 2008 NULL
4 Code ชื่อ แบล็ค เอ็ดการ์ จิมซ์ 2010 NULL
5 สาวน้อยของพ่อ NULL 2007 8
6 เทวดาและปีศาจ NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey moonERS จอห์น ชูลท์ซ 2005 8
16 67% มีความผิด NULL 2012 NULL

การรับรายชื่อสมาชิก

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

SELECT * FROM `members`;

กำลังเรียกใช้สคริปต์ใน MySQL โปรแกรม Workbench จะสร้างผลลัพธ์ดังต่อไปนี้

หมายเลขสมาชิก full_names เพศ วันเกิด ที่อยู่ทางกายภาพ_ รหัสไปรษณีย์ เบอร์ติดต่อ อีเมล
1 เจเน็ต โจนส์ หญิง 21-07-1980 ถนนสายแรก แปลงที่ 4 กระเป๋าส่วนตัว 0759 253 542 janetjones@yagoo.cm
2 เจเน็ต สมิธ โจนส์ หญิง 23-06-1980 เมลโรส 123 NULL NULL jj@fstreet.com
3 โรเบิร์ต ฟิล ชาย 12-07-1989 3 ถนน 34 NULL 12345 rm@tstreet.com
4 กลอเรียวิลเลียมส์ หญิง 14-02-1984 2 ถนน 23 NULL NULL NULL

คำสั่งค้นหาได้ส่งคืนข้อมูลทุกแถวและทุกคอลัมน์จากตารางสมาชิก

การเลือกคอลัมน์เฉพาะ

สมมติว่าเราสนใจเฉพาะชื่อเต็ม เพศ ที่อยู่ และอีเมลเท่านั้น สคริปต์ต่อไปนี้จะช่วยให้บรรลุเป้าหมายนี้ได้

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

กำลังเรียกใช้สคริปต์ใน MySQL โปรแกรม Workbench จะสร้างผลลัพธ์ดังต่อไปนี้

full_names เพศ ทางกายภาพ_ที่อยู่ อีเมล
เจเน็ต โจนส์ หญิง ถนนสายแรก แปลงที่ 4 janetjones@yagoo.cm
เจเน็ต สมิธ โจนส์ หญิง เมลโรส 123 jj@fstreet.com
โรเบิร์ต ฟิล ชาย 3 ถนน 34 rm@tstreet.com
กลอเรียวิลเลียมส์ หญิง 2 ถนน 23 NULL

การดึงรายชื่อภาพยนตร์พร้อมสำนวน

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

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

ที่นี่

  • คอนแคท() MySQL ฟังก์ชันนี้ใช้สำหรับรวมค่าในคอลัมน์เข้าด้วยกัน
  • บรรทัด “Concat(`title`, ' (', `director`, ')')” จะดึงชื่อเรื่องมา เพิ่มวงเล็บเปิดตามด้วยชื่อผู้กำกับ แล้วจึงเพิ่มวงเล็บปิด
  • ส่วนต่างๆ ของข้อความจะถูกคั่นด้วยเครื่องหมายจุลภาคภายในฟังก์ชัน Concat()

กำลังเรียกใช้สคริปต์ใน MySQL โปรแกรม Workbench จะสร้างชุดผลลัพธ์ดังต่อไปนี้

Concat(`ชื่อ`, ' (', `ผู้กำกับ`, ')') year_released
Pirates of the Caribean 4 (ร็อบ มาร์แชล) 2011
ลืม Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code ชื่อ แบล็ก (เอ็ดการ์ จิมซ์) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (จอห์น ชูลทซ์) 2005
NULL 2012

หมายเหตุ ฟังก์ชัน Concat() จะคืนค่า NULL เมื่อมีอาร์กิวเมนต์ใด ๆ เป็น NULL ซึ่งเป็นเหตุผลว่าทำไมภาพยนตร์ที่ไม่มีผู้กำกับจึงแสดงค่า NULL ด้านบน

ชื่อฟิลด์นามแฝง

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

SELECT `column_name|value|expression` [AS] `alias_name`;

ที่นี่

  • “SELECT `column_name|value|expression`” คือคำสั่ง SELECT ปกติ ซึ่งสามารถเป็นชื่อคอลัมน์ ค่า หรือนิพจน์ได้
  • "[เช่น]" เป็นคำหลักเสริมที่อยู่หน้าชื่อนามแฝง
  • “`นามแฝง_ชื่อ`” คือชื่อแทนที่จะปรากฏในชุดผลลัพธ์ โดยแสดงเป็นชื่อฟิลด์

แบบสอบถามเดียวกันนี้ แต่ใช้ชื่อคอลัมน์ที่มีความหมายมากขึ้น:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

เราจึงได้ผลลัพธ์ดังต่อไปนี้

คอนแคท year_released
Pirates of the Caribean 4 (ร็อบ มาร์แชล) 2011
ลืม Sarah Marshal (Nicholas Stoller) 2008
NULL 2008
Code ชื่อ แบล็ก (เอ็ดการ์ จิมซ์) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (จอห์น ชูลทซ์) 2005
NULL 2012

การแสดงรายชื่อสมาชิกพร้อมปีเกิด

สมมติว่าเราต้องการรายชื่อสมาชิกทั้งหมด โดยแสดงหมายเลขสมาชิก ชื่อเต็ม และปีเกิด เราสามารถใช้ฟังก์ชันสตริง LEFT เพื่อแสดงข้อมูลได้tract ปีเกิดจากช่องวันเดือนปีเกิด

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

ที่นี่

  • “ซ้าย(`date_of_birth`,4)” ฟังก์ชันสตริงซ้าย ฟังก์ชันนี้รับวันเดือนปีเกิดเป็นพารามิเตอร์ และแสดงผลเฉพาะ 4 ตัวอักษรจากด้านซ้ายเท่านั้น
  • “เป็น `ปี_เกิด`” คือ ชื่อนามแฝงของคอลัมน์ กลับมาในผลลัพธ์ของเรา คำหลัก AS เป็นทางเลือกคุณสามารถละเว้นส่วนนั้นได้ และคำสั่งค้นหายังคงทำงานได้

กำลังดำเนินการค้นหาใน MySQL การทดสอบด้วย Workbench กับ myflixdb ให้ผลลัพธ์ดังที่แสดงด้านล่าง

หมายเลขสมาชิก full_names ปีเกิด
1 เจเน็ต โจนส์ 1980
2 เจเน็ต สมิธ โจนส์ 1980
3 โรเบิร์ต ฟิล 1989
4 กลอเรียวิลเลียมส์ 1984

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

การใช้ SQL MySQL ม้านั่งทำงานของช่างเครื่อง

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

1. คลิกขวาที่ตารางหมวดหมู่ แล้วคลิกที่ “เลือกแถว – จำกัด 1000 แถว”

2. MySQL Workbench จะสร้างคำสั่ง SQL โดยอัตโนมัติและวางลงในตัวแก้ไข

3. ผลลัพธ์การค้นหาจะแสดงในตารางด้านล่างของตัวแก้ไข

การใช้ SQL MySQL ม้านั่งทำงานของช่างเครื่อง

ดังที่ภาพหน้าจอแสดงให้เห็น เราไม่ได้เขียนคำสั่ง SELECT ด้วยตนเอง MySQL โปรแกรม Workbench สร้างไฟล์นี้ให้เรา

ทำไมต้องใช้คำสั่ง SELECT ใน SQL ในเมื่อเรามี MySQL โต๊ะทำงาน?

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

MySQL โต๊ะทำงานจัดอยู่ในหมวดหมู่ของ “ค้นหาตามตัวอย่างเครื่องมือ (QBE) มีจุดประสงค์เพื่อสร้างคำสั่ง SQL ได้เร็วขึ้นและเพิ่มประสิทธิภาพการทำงานของผู้ใช้

การเรียนรู้คำสั่ง SQL SELECT จะช่วยให้คุณสร้างสิ่งต่างๆ ได้ แบบสอบถามที่ซับซ้อน ซึ่งไม่สามารถสร้างได้ง่ายๆ ด้วยยูทิลิตี้ Query by Example เช่น MySQL โต๊ะทำงาน

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

ทำความเข้าใจกับ MySQL คำสั่ง SELECT

คำถามที่พบบ่อย

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

คำหลัก เช่น SELECT และ FROM ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก การเปรียบเทียบสตริงจะใช้การเรียงลำดับของคอลัมน์ ดังนั้นการเรียงลำดับที่ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก เช่น utf8mb4_0900_ai_ci จะถือว่า “Janet” และ “janet” เท่ากัน

สาเหตุที่พบบ่อยที่สุดคือการขาดดัชนี ให้เรียกใช้คำสั่ง EXPLAIN ก่อนทำการค้นหาเพื่อตรวจสอบว่า... MySQL ทำการสแกนตารางทั้งหมด จากนั้นสร้างดัชนีให้กับคอลัมน์ที่ถูกกรองหรือเชื่อมต่อ และส่งคืนเฉพาะแถวที่คุณต้องการ

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

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

สรุปโพสต์นี้ด้วย: