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 ถูกเขียนและผลสืบเนื่องจะถูกอ่าน นี่คือความขัดแย้งทางประวัติศาสตร์