SQL Tili

All lectures for UZ purposes
Daraja, Dars
Mavjud

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.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION