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

คำสั่ง SELECT คืออะไรในภาษาอื่น MySQL?
คำสั่ง SELECT ใช้สำหรับดึงข้อมูลจาก MySQL ฐานข้อมูล ฐานข้อมูลจะเก็บข้อมูลไว้เพื่อเรียกค้นในภายหลัง วัตถุประสงค์ของ MySQL คำสั่ง SELECT ใช้สำหรับดึงข้อมูลหนึ่งแถวหรือมากกว่าจากตารางในฐานข้อมูลที่ตรงกับเงื่อนไขที่กำหนด สามารถใช้คำสั่ง SELECT ในภาษาสคริปต์ เช่น PHP หรือ Ruby หรือเรียกใช้จากพรอมต์คำสั่งก็ได้
เนื่องจากคำสั่ง 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. ผลลัพธ์การค้นหาจะแสดงในตารางด้านล่างของตัวแก้ไข
ดังที่ภาพหน้าจอแสดงให้เห็น เราไม่ได้เขียนคำสั่ง 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 แล้วเท่านั้น



