2.1 SQL tili bilan tanishuv
Agar sening bazangda (BD) biror jadval mavjud bo'lsa, eng keng tarqalgan vazifa - bu jadvaldagi ma'lumotlarni topishdir. Aynan shu sababli 40 yil avval SQL tili ishlab chiqilgan edi.
SQL Structured Query Language deb o'qiladi.
Eng oddiy SQL so'rovi quyidagi ko'rinishga ega:
SELECT ustun1, ustun2, … ustunN FROM jadval
Misol uchun, sizning startapingizdagi xodimlar ro'yxati bilan employee jadvalingiz bor:
| id | ism | kasb | maosh | yosh | qo'shilgan_sana |
|---|---|---|---|---|---|
| 1 | Ivanov Ivan | Dasturchi | 100,000 | 25 | 2012-06-30 |
| 2 | Petrov Petr | Dasturchi | 80,000 | 23 | 2013-08-12 |
| 3 | Ivanov Sergey | Test qiluvchi | 40,000 | 30 | 2014-01-01 |
| 4 | Rabinovich Moysha | Direktor | 200,000 | 35 | 2015-05-12 |
| 5 | Kirienko Anastasiya | Ofis-men | 40,000 | 25 | 2015-10-10 |
| 6 | Vashka | mushuk | 1,000 | 3 | 2018-01-01 |
Agar sen xodimlarning ismlarini va ularning maoshlarini ko'rsatadigan so'rov yozmoqchi bo'lsang, so'rov quyidagicha yoziladi:
SELECT ism, maosh FROM employee
Resultat quyidagicha bo'ladi:
| ism | maosh |
|---|---|
| Ivanov Ivan | 100,000 |
| Petrov Petr | 80,000 |
| Ivanov Sergey | 40,000 |
| Rabinovich Moysha | 200,000 |
| Kirienko Anastasiya | 40,000 |
| Vashka | 1,000 |
Agar jadvalning barcha ustunlarini ko'rsatmoqchi bo'lsang, ustunlarning barcha nomlarini sanab o'tish o'rniga yulduzcha yozish mumkin. Misol:
SELECT * FROM employee
Natija quyidagicha bo'ladi:
| id | ism | kasb | maosh | yosh | qo'shilgan_sana |
|---|---|---|---|---|---|
| 1 | Ivanov Ivan | Dasturchi | 100,000 | 25 | 2012-06-30 |
| 2 | Petrov Petr | Dasturchi | 80,000 | 23 | 2013-08-12 |
| 3 | Ivanov Sergey | Test qiluvchi | 40,000 | 30 | 2014-01-01 |
| 4 | Rabinovich Moysha | Direktor | 200,000 | 35 | 2015-05-12 |
| 5 | Kirienko Anastasiya | Ofis-men | 40,000 | 25 | 2015-10-10 |
| 6 | Vashka | mushuk | 1,000 | 3 | 2018-01-01 |
2.2 SQL so'rovining kengaytirilgan ko'rinishi
SQL tilini maksimal user-friendly qilish uchun loyihalashgan.
Birinchidan, so'rov matnining registri ahamiyatga ega emas. Sen SELECT, Select yoki select deb yozishing mumkin - hammasi ishlaydi. Ikkinchidan, satrlar bo'yicha uzatish inobatga olinmaydi. Baza ma'lumotlar tizimi so'rovni uzun bir satrga aylantiradi, shuning uchun uni qanday yozish senga qulay bo'lsa, shunday yoz.
Xuddi o'ylaganing kabi, SELECT va FROM kalit so'zlari bilan tugamaydi. Aks holda, SQL haqida shuncha gap bo'lmas edi. Kengaytirilgan SQL so'rovi quyidagi ko'rinishga ega:
SELECT ustunlar
FROM jadval
WHERE shart
GROUP BY ustunlar
HAVING ustunlar
ORDER BY tartiblash
WHERE kalit so'zi yordamida tanlanadigan satrlar uchun shartni / filtrni belgilashingiz mumkin.
Misol 1. Keling, "Dasturchi" kasbiga ega xodimlarni tanlaydigan so'rov yozamiz:
SELECT * FROM employee WHERE kasb = 'Dasturchi'
Natija quyidagi ko'rinishda bo'ladi:
| id | ism | kasb | maosh | yosh | qo'shilgan_sana |
|---|---|---|---|---|---|
| 1 | Ivanov Ivan | Dasturchi | 100,000 | 25 | 2012-06-30 |
| 2 | Petrov Petr | Dasturchi | 80,000 | 23 | 2013-08-12 |
Ko'rib turganingizdek, so'rov natijasida faqatgina kasbi "Dasturchi" deb belgilangan xodimlar ko'rsatiladi.
GROUP BY, ORDER BY va HAVING kalit so'zlarini keyingi ma'ruzalarimizda ko'rib chiqamiz. Hozir esa WHERE so'zi bilan yana bir nechta misolni ko'rib chiqamiz.
Misol 2. Keling, endi bizga 100,000 dan ortiq maosh oladigan barcha xodimlarni ko'rsatadigan so'rov yozamiz. U quyidagicha ko'rinadi:
SELECT * FROM employee WHERE maosh > 100000
Natija quyidagicha bo'ladi:
| id | ism | kasb | maosh | yosh | qo'shilgan_sana |
|---|---|---|---|---|---|
| 4 | Rabinovich Moysha | Direktor | 200,000 | 35 | 2015-05-12 |
Misol 3. Endi esa murakkabroq narsa sinab ko'ramiz. 2015-yilda ishga qabul qilingan barcha xodimlarni qanday ko'rsatish mumkin? Shunday qilib:
SELECT * FROM employee WHERE YEAR(qo'shilgan_sana) = 2015
Natija quyidagicha bo'ladi:
| id | ism | kasb | maosh | yosh | qo'shilgan_sana |
|---|---|---|---|---|---|
| 4 | Rabinovich Moysha | Direktor | 200,000 | 35 | 2015-05-12 |
| 5 | Kirienko Anastasiya | Ofis-men | 40,000 | 25 | 2015-10-10 |
Ushbu so'rovda biz YEAR() maxsus funksiyasidan foydalanamiz, bu sana yildan yilni oladi, so'ngra yilni 2015 bilan solishtiramiz.
2.3 SQL so'rovlarida izohlar
Bu yerda yana bir muhim mavzu — SQL-so'rovlardagi izohlar. Izohlar juda foydali narsa. Birinchidan, ularga tushuntirish yoki o'z fikringizni yozish mumkin. Ikkinchidan, izohlar yordamida ishlamaydigan kodni o'chirib qo'yish mumkin. Yoki eski kod variantini izohlash mumkin.
SQL, singari Java ham bir satrlik va ko'p satrlik izohlarga ega. Bundan tashqari, ko'p satrli izoh Java-dagi kabi ko'rinadi. Uning ko'rinish:
/*
izoh matni
izoh matni
izoh matni
*/
Albatta, buni bitta satrda ham ishlatish mumkin. Misol:
/*izoh matni*/
Bundan tashqari, "satr boshidan to oxirigacha" izoh uslubi mavjud, bu Java-dagi "//" ga o'xshash. Ammo SQL-da ikki marta minus belgi va bo'sh joy yozish kerak. Bunday izohning umumiy ko'rinishi:
-- izoh matni
Misol:
SELECT * FROM employee -- WHERE YEAR(qo'shilgan_sana) = 2015
Yuqoridagi misolda biz so'rov shartini izohga oldik, shuning uchun MySQL faqat so'rovni bajaradi:
SELECT * FROM employee
2.4 SQL tila talaffuzi
Agar sen chet eldagi buyurtmachilar bilan suhbatlashayotgan bo'lsang yoki Amerika kompaniyasida onlayn intervyu o'tkazayotgan bo'lsang, ehtimol sizdan til sikel bilan ishlash tajribasi haqida so'rashlari mumkin. Siz rostini aytasiz, u bilan ishlamaganligingizni va shu erda suhbatni yutqazasiz.
Barchasi shundaki, SQL tili dastlab SEQUEL deb nomlangan, bu esa sikel (ˈsēkwəl) deb talaffuz qilinadi, shuning uchun AQSH va boshqa ingliz tilida so'zlashuvchi manbalarda "eskuel" emas, balki "sikel" so'zini eshitasiz. SQL deb yoziladi, lekin "sikel" deb o'qiladi. Mana shunday tarixiy paradoks.
Vazifalarni sinovdan o'tkazish init_data dagi ma'lumotlar ustida emas.
Rezultatni qattiq kodlash mumkin bo'lmasligi uchun.
GO TO FULL VERSION