2.1 ความรู้เบื้องต้นเกี่ยวกับ SQL
หากคุณมีฐานข้อมูล (DB) และในนั้น - ตารางที่มีข้อมูลบางส่วน งานที่พบบ่อยที่สุดคือการค้นหาข้อมูลบางอย่างในตารางนี้ นั่นคือสิ่งที่ SQL ถูกคิดค้นขึ้นเมื่อ 40 ปีที่แล้ว
SQL ย่อมาจากStructured Query Language
แบบสอบถาม SQL ที่ง่ายที่สุดมีลักษณะดังนี้:
SELECT column1, column2, … columnN FROM table
สมมติว่าคุณมีตารางพนักงานที่มีรายชื่อพนักงานของสตาร์ทอัพของคุณ:
รหัส | ชื่อ | อาชีพ | เงินเดือน | อายุ | เข้าร่วม_วันที่ |
---|---|---|---|---|---|
1 | อีวานอฟ อีวาน | โปรแกรมเมอร์ | 100,000 | 25 | 2555-06-30 |
2 | เปตรอฟ เปตรอฟ | โปรแกรมเมอร์ | 80,000 | 23 | 2013-08-12 |
3 | อีวานอฟ เซอร์เกย์ | เทสเตอร์ | 40,000 | สามสิบ | 2014-01-01 |
4 | ราบิโนวิช มอยชา | ผู้อำนวยการ | 200,000 | 35 | 2015-05-12 |
5 | คิเรียนโก อนาสตาเซีย | ผู้จัดการสำนักงาน | 40,000 | 25 | 2015-10-10 |
6 | วาสก้า | แมว | 1,000 | 3 | 2018-01-01 |
คุณต้องการเขียนแบบสอบถามที่จะแสดงemployee names
ด้วย จากนั้นsalaries
คุณต้องเขียนแบบสอบถาม:
SELECT name, salary FROM employee
คุณจะได้รับผลการสืบค้น:
ชื่อ | เงินเดือน |
---|---|
อีวานอฟ อีวาน | 100,000 |
เปตรอฟ เปตรอฟ | 80,000 |
อีวานอฟ เซอร์เกย์ | 40,000 |
ราบิโนวิช มอยชา | 200,000 |
คิเรียนโก อนาสตาเซีย | 40,000 |
วาสก้า | 1,000 |
หากคุณต้องการแสดงคอลัมน์ทั้งหมดในตารางของคุณแทนที่จะแสดงชื่อของคอลัมน์ทั้งหมด คุณเพียงแค่เขียนเครื่องหมายดอกจัน ตัวอย่าง:
SELECT * FROM employee
คุณจะได้รับผลการสืบค้น:
รหัส | ชื่อ | อาชีพ | เงินเดือน | อายุ | เข้าร่วม_วันที่ |
---|---|---|---|---|---|
1 | อีวานอฟ อีวาน | โปรแกรมเมอร์ | 100,000 | 25 | 2555-06-30 |
2 | เปตรอฟ เปตรอฟ | โปรแกรมเมอร์ | 80,000 | 23 | 2013-08-12 |
3 | อีวานอฟ เซอร์เกย์ | เทสเตอร์ | 40,000 | สามสิบ | 2014-01-01 |
4 | ราบิโนวิช มอยชา | ผู้อำนวยการ | 200,000 | 35 | 2015-05-12 |
5 | คิเรียนโก อนาสตาเซีย | ผู้จัดการสำนักงาน | 40,000 | 25 | 2015-10-10 |
6 | วาสก้า | แมว | 1,000 | 3 | 2018-01-01 |
2.2 มุมมองขั้นสูงของแบบสอบถาม SQL
ภาษา SQL ได้รับการออกแบบมาให้ใช้งานง่ายที่สุด
ประการแรกกรณีของข้อความคำขอไม่สำคัญ คุณสามารถเขียน SELECT, Select หรือ select และทุกอย่างจะทำงานได้ ประการที่สองการแบ่งบรรทัดจะไม่นำมาพิจารณาแต่อย่างใด DBMS จะยังคงเปลี่ยนการสืบค้นเป็นสตริงยาวหนึ่งสตริง ดังนั้นคุณจึงสามารถเขียนได้ตามต้องการ
ดังที่คุณอาจเดาได้แล้ว คำหลัก SELECT และ FROM นั้นไม่จำกัด มิฉะนั้นจะไม่มีการพูดถึง SQL มากนัก มุมมองแบบขยายของแบบสอบถาม SQL มีลักษณะดังนี้:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
ด้วยความช่วยเหลือของคำหลักWHERE
คุณสามารถกำหนดเงื่อนไข / ตัวกรองสำหรับแถวที่เลือกได้
ตัวอย่างที่ 1 . ลองเขียนแบบสอบถามที่จะเลือกพนักงานที่มีอาชีพ "โปรแกรมเมอร์":
SELECT * FROM employee WHERE occupation = 'Programmer'
และเราได้ผลลัพธ์ของแบบสอบถามดังต่อไปนี้:
รหัส | ชื่อ | อาชีพ | เงินเดือน | อายุ | เข้าร่วม_วันที่ |
---|---|---|---|---|---|
1 | อีวานอฟ อีวาน | โปรแกรมเมอร์ | 100,000 | 25 | 2555-06-30 |
2 | เปตรอฟ เปตรอฟ | โปรแกรมเมอร์ | 80,000 | 23 | 2013-08-12 |
อย่างที่คุณเห็น จากผลการดำเนินการค้นหา เฉพาะแถวที่อาชีพของพนักงานเรียกว่า "โปรแกรมเมอร์" เท่านั้นที่จะแสดง
คำหลักGROUP BY
และORDER BY
เราHAVING
จะกล่าวถึงในการบรรยายครั้งต่อไป และในที่นี้เราจะวิเคราะห์ตัวอย่างเพิ่มเติมด้วยคำว่า WHERE
ตัวอย่างที่ 2 . ตอนนี้มาเขียนแบบสอบถามที่จะแสดงให้เราเห็นพนักงานทุกคนที่มีเงินเดือนมากกว่า 100,000 นี่คือสิ่งที่จะมีลักษณะ:
SELECT * FROM employee WHERE salary > 100000
เราได้รับผลการสืบค้นดังต่อไปนี้:
รหัส | ชื่อ | อาชีพ | เงินเดือน | อายุ | เข้าร่วม_วันที่ |
---|---|---|---|---|---|
4 | ราบิโนวิช มอยชา | ผู้อำนวยการ | 200,000 | 35 | 2015-05-12 |
ตัวอย่างที่ 3 . ทีนี้มาลองทำอะไรที่ยากขึ้นกันดีกว่า จะแสดงพนักงานทั้งหมดที่ได้รับการว่าจ้างในปี 2558 ได้อย่างไร? และเช่นนี้:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
เราได้รับผลการสืบค้นดังต่อไปนี้:
รหัส | ชื่อ | อาชีพ | เงินเดือน | อายุ | เข้าร่วม_วันที่ |
---|---|---|---|---|---|
4 | ราบิโนวิช มอยชา | ผู้อำนวยการ | 200,000 | 35 | 2015-05-12 |
5 | คิเรียนโก อนาสตาเซีย | ผู้จัดการสำนักงาน | 40,000 | 25 | 2015-10-10 |
ในการสอบถามนี้ เราใช้ฟังก์ชันพิเศษYEAR()
ที่ช่วยให้เราได้ปีจากวันที่ แล้วเปรียบเทียบปีของวันที่กับตัวเลข 2015
2.3 ความคิดเห็นในแบบสอบถาม SQL
และอีกหนึ่งจุดสำคัญคือความคิดเห็นในแบบสอบถาม SQL ความคิดเห็นเป็นสิ่งที่มีประโยชน์มาก ประการแรก คุณสามารถเขียนคำอธิบายและ/หรือแนวคิดของคุณในนั้น ประการที่สอง ด้วยความช่วยเหลือจากความคิดเห็น คุณสามารถปิดใช้งานรหัสที่เสียได้ หรือแสดงความคิดเห็นเกี่ยวกับโค้ดเวอร์ชันเก่า
SQL เช่น Java มีความคิดเห็นแบบบรรทัดเดียวและหลายบรรทัด ยิ่งกว่านั้น ความคิดเห็นหลายบรรทัดดูเหมือนใน Java ลักษณะของมัน:
/*
comment text
comment text
comment text
*/
แน่นอนว่าใช้ได้ในเส้นเดียวด้วย ตัวอย่าง:
/*comment text*/
นอกจากนี้ยังมีประเภทของความคิดเห็น "ตั้งแต่ต้นจนจบบรรทัด" ซึ่งคล้ายกับ Java "//" เฉพาะใน SQL คุณต้องเขียนอักขระลบสองตัวและเว้นวรรค มุมมองทั่วไปของความคิดเห็นดังกล่าว:
-- comment text
ตัวอย่าง:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
ในตัวอย่างข้างต้น เราแสดงความคิดเห็นเกี่ยวกับเงื่อนไขการสืบค้น ดังนั้น MySQL จะดำเนินการเฉพาะการสืบค้นเท่านั้น:
SELECT * FROM employee
2.4 การออกเสียง SQL
หากคุณสื่อสารกับลูกค้าต่างชาติหรือ ผ่านการสัมภาษณ์ออนไลน์สำหรับบริษัทอเมริกัน คุณอาจถูกถามเกี่ยวกับประสบการณ์ของคุณกับภาษาภาคต่อ คุณจะพูดอย่างตรงไปตรงมาว่าคุณไม่ได้ร่วมงานกับเขาและสัมภาษณ์ทันที
และประเด็นก็คือ เดิมทีภาษา SQL เรียกว่า SEQUEL ซึ่งออกเสียงเหมือนภาคต่อ (ˈsēkwəl) ดังนั้นบ่อยครั้งในสหรัฐอเมริกาและแหล่งภาษาอังกฤษอื่น ๆ คุณจะไม่ได้ยินคำว่า "escuel" แต่เป็น "sequel" SQL ถูกเขียนและผลสืบเนื่องจะถูกอ่าน นี่คือความขัดแย้งทางประวัติศาสตร์
GO TO FULL VERSION