Java loyihasini yaratish haqidagi turkum maqola. Uning maqsadi - asosiy texnologiyalarni tahlil qilish, natijada telegram botini yozish. Kirish qismi bu yerda . Assalomu alaykum, dastur muhandislari. Bugun biz ma'lumotlar bazalari va SQL tili haqida gapiramiz. Ushbu maqola kimga mo'ljallangan? Ha, barcha qiziquvchilarga. Ba'zilar o'z sayohatlarini ushbu maqola bilan boshlashlari mumkin, boshqalari esa qiziqarli faktlar haqida xotiralarini yangilashlari mumkin. Bu qism faqat nazariy bo'ladi. Ma'lumotlar bazalari va SQL sintaksisi nima ekanligini aytishdan oldin, biz ularni nima uchun o'rganishimiz kerakligini tushunishimiz va aniqlashimiz kerak. Ushbu bosqichda biz FAQAT SQL ma'lumotlar bazalari haqida gapiramiz : Biz ushbu maqolalar seriyasida NoSQLni ko'rib chiqmaymiz.
Ma'lumotlar bazasi: bu nima
Ma'lumotlar bazasi (keyingi o'rinlarda JB deb yuritiladi) so'rovlar tili yordamida olinishi mumkin bo'lgan tuzilgan ma'lumotlar saqlanadigan joy . Ma'lumotlar bazalari nafaqat saqlashi, balki katta hajmdagi ma'lumotlarni qayta ishlash va o'zgartirishi mumkin. Eslatma: Excel-dagi qiymatlar to'plamini ba'zi mezonlar asosida tezda o'zgartirishga harakat qiling. Aslida, hech qanday murakkab narsa yo'q. Bizning raqamlashtirilmagan real dunyomizdagi kabi emas. Masalan, ko'chalar, ko'chalar, shaharlar nomini o'zgartirish. Agar hamma narsa virtual bo'lsa va ma'lumotlar bazasiga kiritilgan bo'lsa, u normallashtiriladi, bu bir-ikkita arzimas narsa bo'lar edi. Ko'pgina saqlash vositalari avtomatik ravishda o'zgarmasligi sababli azoblanadi. Shu nuqtai nazardan, ma'lumotlar bazalari uchun SQL ma'lumotlar bazasi tushunadigan va shunga mos ravishda javob beradigan tildir. Aytaylik, shahar nomini o'zgartirish qiyin bo'lmaydi, Dnepropetrovsk nomini Dneprga o'zgartirish quyidagicha ko'rinadi:UPDATE city SET name = “Днипро” WHERE id = 1231;
Tizimga keyingi barcha so'rovlar allaqachon bizga kerak bo'lgan nomni ishlab chiqaradi.
Ma'lumotlar bazalari nima uchun kerak?
Yuqorida aytib o'tganimdek, ma'lumotlar bazalari yordamida siz ma'lumotlarni saqlashingiz mumkin. Ammo bu ma'lumotlar nima? Haqiqiy hayot misolidan foydalanishni tushunish uchun biz ba'zi ilovalar haqida gapirishimiz mumkin. Masalan, xuddi shu telegram bot haqida. Biz botdan qancha odam foydalanayotganini bilmoqchimiz. Buni qanday amalga oshirish mumkin? Oddiy Java ilovasida siz ko'plab noyob elementlarni yaratishingiz mumkin - foydalanuvchining taxallusi yoki chat identifikatorini saqlaydigan to'plam. Bu ishlaydimi? iroda. Aynan Java ilovasi to'xtatilgunga qadar va u qayta ishga tushirilishi bilan noyob elementlar to'plami bo'sh bo'ladi. Ya'ni, ishlaydigan dasturda saqlangan ma'lumotlar shunchaki yo'q bo'lib ketdi. Bu haqda nima qila olasiz? Tizim holatini (ma'lumotlarni) Java ilovasidan boshqa joyga ko'chirishingiz mumkin. Buni CSV formatida kompyuteringizda oddiy faylda saqlashingiz mumkin. Buni alohida faylda bir qatorda qilishingiz mumkin. Buni amalga oshirishingiz va keyin Java ilovasi to'xtamasdan oldin ushbu ma'lumotlarni qayta yozishingiz mumkin. Yozib olishning muvaffaqiyatli bo'lishiga kafolat 100% dan uzoq bo'lsa-da, chunki siz shunchaki serverning quvvat simini tortib olishingiz mumkin va yozib bo'lmaydi. Ushbu yondashuv muhim kamchilikka ega: fayl darajasida ma'lumotlarni olish, yig'ish va qidirish uchun hech qanday funksionallik mavjud emas. Ha, albatta, siz faylni o'qishingiz va u uchun ob'ektlar yaratishingiz mumkin, lekin siz HAR safar barcha ma'lumotlarni ilovaga quyishingiz kerak bo'ladi. Va ularning ko'pi bo'lishi mumkin, masalan, bir necha gigabayt. Ma'lumotlar bazasida ma'lumotlarni saqlash orqali buning oldini olish mumkin. Qanday qilib? Jadvallar va ular orasidagi munosabatlar orqali. Barcha relyatsion ma'lumotlar bazalari shunga asoslanadi.SQL: ma'lumotlar bazasi tushunadigan til
Ma'lumotlar bazasini boshqarish tizimlari (keyingi o'rinlarda DBMS deb yuritiladi) mavjud va ular tushunadigan til SQL. SQL - bu ma'lumotlar bazasini manipulyatsiya qilish va boshqarish uchun dasturlash tili. Bu qanday ishlashini tushunish uchun rasmni ko'rib chiqamiz: Foydalanuvchi ma'lumotlar bazasiga SQL so'rovlarini yuboradi, ma'lumotlar bazasi ma'lumotlar bazasi nima qilish kerakligini tushunadi, buni qiladi va agar so'rov ma'lumotlarni olish uchun bo'lsa, uni qaytaradi. Shuning uchun, ishlab chiquvchilar sifatida biz SQL so'rovlar tilini o'zlashtirishimiz kerak. Siz shunday deb o'ylashingiz mumkin: “Oh, boshqa til. Xudoning yordami bilan men bu erda Java tilini zo'rg'a tushunaman va siz darhol menga boshqa tilni taklif qilyapsiz. Bu to'g'ri emas: SQL ma'lumotlar bazalari va umuman dasturlashdan juda uzoqda bo'lgan buxgalterlar ushbu tilda yozishlari uchun DBMS uchun spetsifikatsiya tili sifatida ixtiro qilingan. Bu shuni anglatadiki, uni o'rganish unchalik qiyin bo'lmaydi. Asosiysi AMALIY-AMALIYAT-AMALIYAT. Bugun nazariya bo'ladi, ammo keyingi maqola amaliyot haqida bo'ladi. Relyatsion ma'lumotlar bazasi ikki o'lchovli massiv-jadvallar va ular orasidagi munosabatlar to'plami bo'lganligi sababli, ish ular atrofida ishlaydi. Agar misol haqida gapiradigan bo'lsak, ikkita jadvalni ko'rsatishimiz mumkin - "Mamlakatlar" va "Shaharlar" va ular qanday bog'langan. Ushbu bosqichda biz uchun jadvaldagi yozuvlar Java olamidagi ba'zi ob'ektlar haqidagi ma'lumotlar ekanligini tushunish muhimdir. Masalan, ushbu ikkita jadvalni Java-da quyidagicha tasvirlash mumkin:public class Country {
private Long id;
private String name;
}
public class City {
private Long id;
private String name;
private Country country;
private Integer population;
}
Xo'sh, bu go'zal emasmi, a? Ma'lumotlar bazasi istalgan miqdordagi jadvallarni saqlashi mumkin. Bizning holatlarimizda ulardan ikkitasi bor.
Jadval tuzilishi
Menimcha, har bir kishi Excel jadvallari bilan u yoki bu tarzda duch kelgan va siz satr va ustun atamalarini tushunasiz . Ma'lumotlar bazalari kontekstida biz ko'proq yozuvlar va maydonlar haqida gapiramiz: Shunday qilib, City sinfining har bir ob'ekti ma'lumotlar bazasidagi jadvaldagi yozuv ekanligi ma'lum bo'ldi.Asosiy kalit
Ko'pincha ma'lumotlar bazalaridagi maydonlar bir xil qiymatlarga ega bo'ladi. Masalan, ism, familiya va hatto otasining ismi bo'yicha bir nechta odamni topish mumkin bo'lgan ijtimoiy tarmoqlar. Va relyatsion ma'lumotlar bazalari yozuvga kirish uchun ishlatilishi mumkin bo'lgan noyob maydonni talab qiladi. Bu birinchi kalit yoki asosiy kalit deb ataladi. Odatda, bunday kalit sifatida ID(id) maydoni ishlatiladi - bu identifikatorning qisqartmasi. Shuning uchun har bir jadvalga ID maydoni qo'shishingiz kerak .Tashqi kalit
Bizning misolimizda bunday maydon Shahar jadvalida joylashgan bo'lib, unda Mamlakat kalitidan foydalaniladi. Va u shunday ishlaydi: har bir shahar o'z mamlakati uchun noyob ma'lumot identifikatorini biladi va agar biz uni olib, ma'lumotlar bazasida so'rov yaratsak, biz mamlakat haqida to'liq ma'lumot olamiz. Rasmda ko'rib turganingizdek, ikkita jadval o'rtasida bog'liqlik mavjud: Bu erda chet el kalitining printsipi ko'rsatilgan.SQL da qanday bo'limlar mavjud?
Aytgancha, intervyu paytida ulardan ko'pincha SQL-da qanday operatsiyalar borligi so'raladi:- DDL (Data Definition Language) - jadvallarni, ularning tuzilishini va boshqalarni o'zgartiruvchi/yaraydigan operatorlar guruhi. Ya'ni, jadval yaratish, uni o'chirish, jadvallarda maydonlarni yaratish/o'chirish; yangi asosiy kalit yaratish va boshqalar;
- DML (Data Manipulation Language) - ma'lumotlarni o'zgartirishni boshqaradigan operatorlar guruhi. Bularning barchasi ma'lumotlar bazasidagi ma'lumotlarni o'zgartiradigan operatsiyalar: qo'shish, olish, o'zgartirish va o'chirish;
- DCL (Data Control Language) - bu foydalanuvchining harakatlarni amalga oshirish huquqlarini tasdiqlash vositasi. Muayyan foydalanuvchi DDL/DML operatsiyalarini bajarishi uchun unga kirish va huquqlarni ta'minlash bo'yicha operatsiyalar.
SQLda qanday ma'lumotlar turlari mavjud
Jadvallar ma'lum turdagi ma'lumotlarni saqlashi va qayta ishlashi mumkin. Bu erda hamma narsa biz Java-da ishlatadigan narsalarga o'xshash bo'ladi. Keling, asosiylari haqida gapiraylik. Ulardan faqat uchtasi bor, biz kerak bo'lganda va/yoki xohlagancha boshqalarni qo'shamiz: Rasmdan ko'rinib turibdiki, bular:- INT - butun qiymatlar. Noyob identifikator va oddiy butun son uchun ishlatiladi;
- VARCHAR - bu bizning String ;
- DATE bizning LocalDate.
GO TO FULL VERSION