สอนเขียนคำสั่งฐานข้อมูล การ SELECT database (MySQL) รูปแบบ การ Query

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

สอนเขียนคำสั่งฐานข้อมูล การ SELECT database (MySQL) รูปแบบ การ Query

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

สอนเขียนคำสั่งฐานข้อมูล การ SELECT database (MySQL) รูปแบบ การ Query

การ SELECT เป็นคำสั่งของฐานข้อมูลที่ใช้ในการดำเนินการบ่อยที่สุด โดยรูปแบบของ SELECT มีดังนี้

โค้ด: เลือกทั้งหมด

SELECT ชื่อคอลัมน์_1, ชื่อคอลัมน์_2, ชื่อคอลัมน์_3;
FORM   ชื่อตาราง
คำอธิบาย
SELECT คือการเลือกคอลัมน์ที่เรากำหนดเอาไว้
FORM คือการเลือกตารางข้อมูล

การ SELECT ข้อมูลมีหลากหลายรูปแบบ ดังนี้

บทที่ 1 การ SELECT ข้อมูลทั้งหมด
บทที่ 2 การ SELECT ข้อมูลบางคอลัมน์
บทที่ 3 การ SELECT ข้อมูลโดยการจัดลำดับการเเสดงผล
บทที่ 4 การ SELECT ข้อมูลด้วย SELECT... AS (เปลี่ยนชื่อคอลัมน์ในการเเสดงผล)
บทที่ 5 การ SELECT ข้อมูลด้วย Distinct (เเสดงข้อมูลไม่ซ้ำ)
บทที่ 6 การ SELECT ข้อมูลด้วย Order By (จัดเรียงข้อมูล)
บทที่ 7 การ SELECT ข้อมูลด้วย SELECT... WHERE (แบบมีเงื่อนไข)
บทที่ 8 การ SELECT ข้อมูลโดยการคำนวณทางคณิตศาสตร์
บทที่ 9 การ SELECT ข้อมูลด้วย Aggregate Functions (ฟังก์ชันการหาผลรวม หาค่าเฉลี่ย หาค่าสูงสุด หาค่าต่ำสุด)
บทที่ 10 การ SELECT ข้อมูลด้วย Scalar functions (ฟังก์ชันการคำนวณ)
บทที่ 11 การ SELECT ข้อมูลด้วย String functions (ฟังก์ชันตัวอักษร)
บทที่ 12 การ SELECT ข้อมูลด้วย Date and time functions (ฟังก์ชันวันที่เเละเวลา)
บทที่ 13 การ SELECT ข้อมูลด้วย SELECT ซ้อน SELECT
บทที่ 14 การ SELECT ข้อมูลด้วย SELECT ... GROUP BY (แบบจัดกลุ่ม)
บทที่ 15 การ SELECT ข้อมูลด้วย HAVING และ WHERE

เสริมการ SELECT จากตาราง
MySQL คำสั่งค้นหาข้อมูล SQL FIND_IN_SET ค้นหาฟิลด์ที่มี (,)

Advance SQL
MySQL Database :การสร้าง View Table และการเรียกใช้งาน View Table
MySQL PROCEDURE วิธีใช้ชื่อ Table จาก argument เเละเงื่อนไขอื่นๆ
แก้ไขล่าสุดโดย iss.f เมื่อ 16/08/2013 10:01 am, แก้ไขไปแล้ว 67 ครั้ง.
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

การ SELECT ข้อมูลทั้งหมด

ตัวอย่างการใช้งาน
ตารางข้อมูลนักศึกษา
ภาพที่ 1.1 ตารางข้อมูลนักศึกษา
ภาพที่ 1.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234189 times

โค้ด: เลือกทั้งหมด

SELECT Student_id, Student_Fname, Student_Lname, Gender, Age
FORM Student;
หรือ

โค้ด: เลือกทั้งหมด

SELECT *
FORM Student;
# ใช้ได้ทั้ง 2 วิธีผลไที่ได้เหมือนกัน #

การแสดงผล
ภาพที่ 1.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 1.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_all_output.jpg (85.74 KiB) Viewed 234189 times
แก้ไขล่าสุดโดย iss.f เมื่อ 08/08/2013 4:33 pm, แก้ไขไปแล้ว 2 ครั้ง.
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

การ SELECT ข้อมูลบางคอลัมน์
ในกรณีที่ต้องการให้เเสดงผลเพียงไม่กี่คอลัมน์ หรือ เฉพาะคอลัมน์ที่ต้องการเท่านั้น

ตัวอย่างการใช้งาน
ตารางข้อมูลนักศึกษา
ภาพที่ 2.1 ตารางข้อมูลนักศึกษา
ภาพที่ 2.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234185 times
>>ต้องการข้อมูลรหัสนักศึกษา เเละชื่อนามสกุลของนักศึกษา

โค้ด: เลือกทั้งหมด

SELECT Student_id, Student_Fname, Student_Lname
FORM   Student;
การเเสดงผล
ภาพที่ 2.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 2.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_some_output.jpg (73.04 KiB) Viewed 234185 times
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

การจัดลำดับการเเสดงผล
หากต้องการมีการสลับกันของคอลัมน์ในการเเสดงผล SELECT ก็สามารถทำได้ดังนี้

ตัวอย่างการใช้งาน
ตารางข้อมูลนักศึกษา
ภาพที่ 3.1 ตารางข้อมูลนักศึกษา
ภาพที่ 3.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234179 times
>>ต้องการข้อมูลรหัสนักศึกษา เเละชื่อนามสกุลของนักศึกษา เเต่อยากให้ชื่อเเละนามสกุลของนักศึกษาขึ้นก่อนรหัสนักศึกษา

โค้ด: เลือกทั้งหมด

SELECT Student_Fname, Student_Lname, Student_id
FORM Studen;
การเเสดงผล
ภาพที่ 3.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 3.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_sort_output.jpg (74.27 KiB) Viewed 234179 times
***ในช่วงคำสั่งของ SELECT การแสดงผลจะออกมาตามที่ระบุเอาไว้
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

การ SELECT ... AS เปลี่ยนชื่อคอลัมน์ในการเเสดงผล
การแสดงผลไม่จำเป็นต้องให้ชื่อหัวข้อเป็นชื่อเดียวกับชื่อคอลัมน์ทุกๆครั้ง เพราะตั้งชื่อคอลัมน์อาจมีการสื่อความหมายที่ไม่ชัดเจนต่อการเเสดงผล

คำสั่งที่ใช้

โค้ด: เลือกทั้งหมด

SELECT ชื่อคอลัมน์ AS "ชื่อที่ต้องการเปลี่ยน"
ตัวอย่างการใช้งาาน
ตารางข้อมูลนักศึกษา
ภาพที่ 4.1 ตารางข้อมูลนักศึกษา
ภาพที่ 4.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234176 times
>>ต้องการเเสดงข้อมูลของนักศึกษาทั้งหมด โดยให้หัวข้อเเต่ละหัวข้อชื่อ
"Student ID", "First Name", "Last Name", "Gender", "Age"

โค้ด: เลือกทั้งหมด

SELECT Student_id AS "Student ID", Student_Fname AS "First Name", Student_Lname AS "Last Name", Gender, Age
FORM   Student;
การเเสดงผล
ภาพที่ 4.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 4.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_AS_output.jpg (86.02 KiB) Viewed 234174 times
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

DISTINCT เเสดงข้อมูลไม่ซ้ำ
เมื่อข้อมูลมีค่าที่เหมือนกันอยู่ในตารางข้อมูล เมื่อเวลาเเสดงผลออกมาก็จะเห็นข้อมูลซ้ำๆ หลายบรรทัด ซึ่งทำให้ดูยาก

คำสั่งที่ใช้

โค้ด: เลือกทั้งหมด

SELECT DISTINCE ชื่อคอลัมน์_1, ชื่อคอลัมน์_2, ชื่อคอลัมน์_3
FORM ชื่อตาราง;
ตัวอย่างการใช้งาาน
ตารางข้อมูลนักศึกษา
ภาพที่ 5.1 ตารางข้อมูลนักศึกษา
ภาพที่ 5.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234172 times
>>ต้องการทราบว่านักศึกษามีอายุเท่าไรบ้าง

โค้ด: เลือกทั้งหมด

SELECT DISTINCE Age
FROM Student;
การเเสดงผล
ภาพที่ 5.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 5.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_distinctl_output.jpg (17.33 KiB) Viewed 234172 times
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

Order By การจัดเรียงข้อมูล
เป็นคำสั่งที่ใช้เรียงข้อมูลที่ไม่เป็นระเบียบในตาราง โดยจะเรียงลำดับจากมากไปหาน้อย หรือ น้อยไปหามากก็ได้

คำสั่งที่ใช้

โค้ด: เลือกทั้งหมด

ORDER BY ชื่อคอลัมน์ [DESC];
คำอธิบาย
ตัว DESC คือตัวกำหนดวว่าจะให้มีการเรียงลำดับจากมากไปหาน้อย หรือ จากน้อยไปหามาก ดังนั้นหากมีการกำหนด DESC ไว้เเสดงว่าต้องการให้ข้อมูลเรียงจากมากไปหาน้อย

ตัวอย่างการใช้งานที่ 1
ตารางข้อมูลนักศึกษา
ภาพที่ 6.1 ตารางข้อมูลนักศึกษา
ภาพที่ 6.1 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 234170 times
>>ต้องการทราบรายชื่อนักศึกษา โดยให้เเสดงรายชื่อนักศึกษาตามลำดับชื่อจากน้อยไปมาก

โค้ด: เลือกทั้งหมด

SELECT Student_Fname, Student_Lname
FROM Student
ORDER BY Student_Fname;
การเเสดงผล
ภาพที่ 6.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 6.2 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_orderby_output.jpg (47.2 KiB) Viewed 234170 times
ตัวอย่างการใช้งานที่ 2

>>ต้องการทราบรหัสนักศึกษา เเละรายชื่อของนักศึกษา โดยให้เเสดงรหัสนักศึกษาจากมากไปน้อย

โค้ด: เลือกทั้งหมด

SELECT  Student_id, Student_Fname, Student_Lname
FROM  Student
ORDER BY Student_id DESC;
การเเสดงผล
ภาพที่ 6.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 6.3 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_orderbyDESC_output.jpg (70.66 KiB) Viewed 234170 times
ตัวอย่างการใช้งานที่ 3

>>ต้องการทราบอายุ รายชื่อของนักศึกษา โดยให้เเสดงจากกลุ่มอายุเรียงลำดับจากน้อยไปมาก และในเเต่ละกลุ่มอายุก็ให้เรียงตามรายชื่อนักศึกษาจากน้อยไปมาก

โค้ด: เลือกทั้งหมด

SELECT  Age, Student_Fname, Student_Lname 
FROM    Student
ORDER BY Age, Student_Fname;
การเเสดงผล
ภาพที่ 6.4 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 6.4 จากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_orderby_orderby_output.jpg (56.07 KiB) Viewed 234170 times
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

การ SELECT ข้อมูลแบบมีเงื่อนไข (SELECT... WHERE)
เมื่อ SELECT สามารถเลือกข้อมูลบางคอลัมน์ได้เเล้ว SELECT ยังสามารถเลือกข้อมูลบางเเถวได้ด้วย
โดยการใช้เงื่อนไข WHERE ซึ่งมีรูปแบบดังนี้

โค้ด: เลือกทั้งหมด

SELECT ชื่อคอลัมน์_1, ชื่อคอลัมน์_2, ชื่อคอลัมน์_3;
FORM   ชื่อตาราง
WHERE เงื่อนไข;
คำอธิบาย
SELECT คือการเลือกคอลัมน์ที่เรากำหนดเอาไว้
FORM คือการเลือกตารางข้อมูล
WHERE คือการกำหนดเงื่อนไข ซึ่งจะอธิบายรายละเอียดเป็นหัวข้อย่อยๆไว้ข้างล่างนี้

เงื่อนไขในการ SELECT ข้อมูลก็มีหลายเงื่อนไข ได้แก่
1.) การใช้เครื่องหมาย Operators (=, !=, >, <, >=, <=, AND, OR, NOT) https://www.mindphp.com/forums/viewtopic ... 690#p38690
2.) การเลือกข้อมูลทึ่ต้องตามชุดข้อมูลด้วย IN https://www.mindphp.com/forums/viewtopic ... 718#p38718
3.) การข้อมูลที่อยู่ในช่วงที่ต้องการด้วย BETWEEN...AND https://www.mindphp.com/forums/viewtopic ... 720#p38720
4.) การเลือกข้อมูลที่ตรงกับรูปแบบด้วย LIKE (%,_) https://www.mindphp.com/forums/viewtopic ... 723#p38723
แก้ไขล่าสุดโดย iss.f เมื่อ 09/08/2013 1:53 pm, แก้ไขไปแล้ว 4 ครั้ง.
M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

1.) การ SELECT ข้อมูลแบบเงื่อนไขการใช้เครื่องหมาย Operators
การกำหนดเงื่อนไขโดยการใช้เครื่องหมาย Operators ก่อนอื่นต้องรู้จักกับเครื่องหมาย เเละความหมายของมันก่อนดังภาพที่ 7.1
ภาพที่ 7.1 เครื่องหมาย Operators
ภาพที่ 7.1 เครื่องหมาย Operators
Operators.jpg (65.64 KiB) Viewed 71121 times
ตัวอย่างการใช้งานที่ 1
ตารางข้อมูลนักศึกษา
ภาพที่ 7.2 ตารางข้อมูลนักศึกษา
ภาพที่ 7.2 ตารางข้อมูลนักศึกษา
select_all.jpg (84.78 KiB) Viewed 71094 times
>>ต้องการทราบรายชื่อนักศึกษาที่มีอายุน้อยกว่า 20 ปี

โค้ด: เลือกทั้งหมด

SELECT *
FROM Student
WHERE Age<20;
การเเสดงผล
ภาพที่ 7.3 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 7.3 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_where_oper_output.jpg (29.02 KiB) Viewed 71121 times
ตัวอย่างการใช้งานที่ 2
>>ต้องการทราบรายชื่อนักศึกษาที่เป็นเพศหญิง และมีอายุมากกว่าหรือเท่ากับ 20 ปี

โค้ด: เลือกทั้งหมด

SELECT *
FROM Student
WHERE (Gender='หญิง') AND (Age>=20);
การแสดงผล
ภาพที่ 7.4 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 7.4 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_where_operAND_output.jpg (53.87 KiB) Viewed 71120 times
ตัวอย่างการใช้งานที่ 3
>>ต้องการทราบว่านักศึกษาที่ไม่ใช่เพศหญิงมีใครบ้าง

โค้ด: เลือกทั้งหมด

SELECT Student_Fname, Student_Lname
FROM    Student
WHERE  Gender != 'หญิง'; 
หรือ

โค้ด: เลือกทั้งหมด

SELECT Student_Fname, Student_Lname
FROM   Gender
WHERE  NOT Gender='หญิง';
การแสดงผล
ภาพที่ 7.5 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
ภาพที่ 7.5 การแสดงผลจากการใช้คำสั่งจาก Code ข้างต้นจะเเสดงผลออกมาดังภาพ
select_where_operNot_output.jpg (36.14 KiB) Viewed 71095 times
แก้ไขล่าสุดโดย iss.f เมื่อ 09/08/2013 10:30 am, แก้ไขไปแล้ว 2 ครั้ง.
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21785
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: การ SELECT database(MySQL) ในแบบต่างๆ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

เนื้อหาเยอะดีครับ พอดีกำลังหัดเขียนโปรแกรม :like:
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 4