JavaRush /Java blogi /Random-UZ /Biz ma'lumotlar bazalarini va SQL tilini tahlil qilamiz. ...

Biz ma'lumotlar bazalarini va SQL tilini tahlil qilamiz. (2-qism) - "A dan Zgacha Java loyihasi"

Guruhda nashr etilgan
Java loyihasini yaratish haqidagi turkum maqola (boshqa materiallarga havolalar oxirida). Uning maqsadi - asosiy texnologiyalarni tahlil qilish, natijada telegram botini yozish. "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-1-qismSalomatlik, aziz o'quvchilar. Bugun biz biroz gaplashamiz va ko'proq yozamiz, chunki qo'llarimiz ko'zlarimizdan ko'ra yaxshiroq eslaydi. Sizni qiziqtirgandirsiz: nega biz MySQL-dan foydalanamiz? Masalan, bir xil PostgreSQL va boshqa echimlar mavjud. Bu erda hamma narsa oddiy. Birinchidan, bu bepul. Ikkinchidan, u qulay UI interfeysiga ega (bu haqda alohida maqolada gaplashamiz). Uchinchidan, u menga tanish va yoqimli. Yuqoridagilarning barchasiga qo'shimcha ravishda, MySQL ham juda keng tarqalgan.

Uy vazifasini tekshirish

Oxirgi marta men topshiriq berdim - MySQL-ni kompyuterimga o'rnating va unga kiring. Konsol orqali yoki boshqa yo'l bilan. Hammasi bajarildimi? "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-2 qismBuni qilganlarga afsus! JavaRush-da qaysi darajadagi bo'lishingiz muhim emas, qo'llanmalarga muvofiq ish uchun zarur vositalarni o'rnatish va sozlash imkoniyatiga ega bo'lish muhimdir. Va sizni ishontirib aytamanki, ularning ko'plari bo'ladi. Harakat qilganlar, lekin muvaffaqiyatga erisha olmaganlar ham qo'rqmaydilar. Bu har doim ham birinchi marta sodir bo'lmaydi: ba'zida siz tanaffus qilishingiz va yangi kuch bilan yana urinib ko'rishingiz kerak. MySQL-ni kim o'rnatgan - kimdir buni qilayotganini bilishim uchun izohlarda "+" yozing. Men ham buni o'zim qilaman. Menda endi Windows noutbuki yo'qligi sababli uni MacBook-da ko'rsataman. O'rnatish jarayoni unchalik farq qilmaydi deb o'ylamayman. Ingliz tili qo'llanmasidan foydalanib uni o'zlari o'rnatmoqchi bo'lganlar uchun bu yerni bosing .

MySQL-ni MacOS-da o'rnatish

Avvalo, quyidagi havolaga o'ting , operatsion tizimni tanlang, u Windows, Ubuntu yoki MacOS bo'lsin, quyida ko'rsatilganidek: "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-3 qismYuklab oling va ishga tushiring. Biroq, hamma narsa men uchun darhol to'g'ri kelmadi. Ma'lum bo'lishicha, Apple so'nggi versiyani o'rnatishga ruxsat bermaydi: "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-4 qismAlbatta, siz buni o'chirib qo'yishingiz mumkin, lekin MacBook ishlayapti va men uning sozlamalari bilan aralashmayman. Shuning uchun, sinov va xato orqali men o'rnatilishi mumkin bo'lgan versiyani topdim - bu 5.7.21 . Boshqa versiyalarni topish uchun "Arxiv" yorlig'iga o'ting va kerakli versiyani tanlang: "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-5 qismKeyin yuklab olingan faylni ishga tushiring. Keyingi, keyingi, keyingi tugmasini bosing, lekin oxirida ehtiyot bo'ling! Ma'lumotlar bazasiga kirish uchun foydalanuvchi nomi va parol bo'ladi. Men uchun bu shunday ko'rinardi: Bu yerda root nomi va paroli Vac/zto=.24q"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-6 qism bo'lgan foydalanuvchi bo'lishi aytilgan . Bu o'rnatishni yakunlaydi.

MySQL buyruq qatoriga kiring

Tizimga kirish uchun MySQL serveri yoqilganligiga ishonch hosil qilishingiz kerak. Buni amalga oshirish uchun tizim sozlamalariga o'ting , u erda MySQL belgisini toping: "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-7 qismUnga o'ting va avval server yoqilgan bo'lishi kerakligini ko'ring. Buni amalga oshirish uchun MySQL Serverni ishga tushirish tugmasini bosish kifoya. Ha, shuningdek, kompyuter har safar ishga tushganda server fonda ishga tushishi uchun katakchani belgilashingiz mumkin. "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-8 qismShuni ta'kidlash kerakki, men terminaldagi barcha so'rovlarni tushunarli qilish uchun $ belgisi bilan boshlayman. Keyinchalik, MySQL serveriga buyruq satri orqali to'g'ridan-to'g'ri ulanishingiz kerak. Buning uchun terminalni oching va yozing: $ mysql Va ikkita variant mavjud:
  1. Agar javob “ERROR 1045 (28000): “roman_beskrovnyi'@'localhost” foydalanuvchisiga kirish taqiqlangan (parol yordamida: YOʻQ” boʻlsa , bu server oʻrnatilganligini va chaqirib olinayotganini bildiradi. Siz shunchaki toʻgʻri buyruqni kiritishingiz kerak. unga.
  2. Agar javob topilmasa: mysql , hammasi joyida - serverga havola yo'q. Buning uchun siz mysql o'zgaruvchisi bilan taxallus qilishingiz kerak bo'ladi, shuning uchun biz quyidagi qatorni yozamiz:

    $ taxallus mysql=/usr/local/mysql/bin/mysql

    Bu faqat ushbu terminal sessiyasi uchun yordam beradi. Ammo bizga boshqa kerak emas - biz har doim terminal orqali ishlamaymiz.

  3. MySQL o'rnatilmagan, kompyuteringizni aldamang.
Keyinchalik, biz o'rnatish paytida taqdim etilgan nom va paroldan foydalanamiz va yozamiz: $ mysql --user=root -p"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-9-qism U erda biz parolni yozamiz va biz ushbu shaklda xursand bo'lamiz: "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-10-qismFaqat oxirgi qatorda MySQL-ga kirganligimiz aytiladi. terminal serveri. Ammo root uchun bu parol bir martalik parol bo'lib chiqdi va uni boshqasiga o'zgartirish kerak. Xavfsizlik nuqtai nazaridan, albatta. Agar biz buni o'zgartirmasak va serverda yangi ma'lumotlar bazasini yaratishga harakat qilsak, biz quyidagi javobni olamiz: ERROR 1820 (HY000): Ushbu bayonotni bajarishdan oldin ALTER USER bayonotidan foydalanib parolingizni qayta o'rnatishingiz kerak . "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-11-qismUlar, ta'bir joiz bo'lsa, majbur. Xo'sh, biz uchun qiyinmi? Keling, parolni soddalashtiraylik (bu faqat mahalliy ish uchun; haqiqiy ish uchun parol murakkab bo'lishi kerak, albatta). Aytaylik root∫ , foydalanuvchi nomi kabi. Parolni o'zgartirish uchun qatorni kiritishingiz kerak: ALTER USER 'root'@'localhost' 'root' ORQALI Identifikatsiya qilingan; Va javob quyidagicha bo'ladi: Hammasi to'g'ri ishlashiga ishonch hosil qilish uchun keling, quyidagi sintaksisdan"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-12-qism foydalanib yangi ma'lumotlar bazasini yaratishga harakat qilaylik : $ CREATE DATABASE test_db; Serverda shunday ma'lumotlar bazasi yaratilganligiga ishonch hosil qilish uchun quyidagi buyruqni yozing: $ MA'LUMOTLAR BAZALARINI SHOW; Va natijada biz quyidagilarni olamiz: Hammasi :) Bu oddiy va tez edi, deb aytish mumkin emas. Shuning uchun, kim buni o'zi qilgan bo'lsa - alohida hurmat. Buni qilmaganlar uchun tashvishlanmang, o'rnatishning barcha turlari uchun qo'llanmalar mavjud:"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-13-qism U erda hamma narsa juda oqilona tasvirlangan. Bitta narsa shundaki, hamma narsa ingliz tilida. Endi biz birinchi satrlarimizni SQL da yozamiz.

SQL da birinchi satrlarimizni yozish

Yuqorida sezganingizdek, biz ikkita buyruqni bilamiz:
  1. CREATE DATABASE - serverda ma'lumotlar bazasini yaratadi;
  2. MA'LUMOT BAZALARINI KO'RSATISH - Serverda yaratilgan va mavjud bo'lgan barcha ma'lumotlar bazalarini ko'rsatadi.
Shuni ta'kidlaymanki, SQL ularning buyruqlarini qanday yozishimiz bilan bog'liq emas - barchasi katta harflar bilan yoki yo'q. Biroq buyruqlarni bosh harflar bilan yozish yaxshi odob hisoblanadi. Keyinchalik, ma'lumotlar bazasini o'chirish uchun DROP DATABASE database_name buyrug'ini yozishingiz kerak ; bu erda database_name - biz o'chirmoqchi bo'lgan ma'lumotlar bazasi nomi. Biz allaqachon test_db deb nomlangan test ma'lumotlar bazasini yaratdik , shuning uchun uni o'chirib tashlaymiz. Buning uchun biz yozamiz: $ DROP DATABASE testi; Ta'kidlash joizki, Query OK, 0 satr ta'sirlangan (0,02 sek) javobi juda muhim, chunki bu so'rov muvaffaqiyatli bo'lganligini tasdiqlaydi. Bundan tashqari, bu so'rov jadvallarning nechta qatori va qaysi vaqt ichida o'zgarganligini aytadi. Umuman olganda, DROP"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-15-qism so'zi biror narsani olib tashlash uchun javobgardir. Bunday holda biz ma'lumotlar bazasini o'chirib tashladik. Ammo bu boshqa maqsadlar uchun ham ishlatilishi mumkin (masalan, stolni tushirish). Va endi, menga ishonish uchun , natijani tekshiring, qancha ma'lumotlar bazasi qolganligini ko'rib chiqaylik: $ MA'LUMOTLAR BAZALARINI KO'RSATISH; Ko'rib turganimizdek, test_db nomli ma'lumotlar bazasi mavjud emas. CHTD : D"A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-16-qism

O'z ma'lumotlar bazasi va jadvalingizni yarating

Shaharlar ma'lumotlar bazasini yarating: $ CREATE DATABASE shaharlar; Muayyan ma'lumotlar bazasida ishlash uchun siz unga kirishingiz kerak. Buning uchun USE database_name buyrug'idan foydalaning , shundan so'ng jadvallar bilan ishlash uchun barcha buyruqlar ushbu ma'lumotlar bazasida amalga oshiriladi. $ FOYDALANISH shaharlar; Javobdan ko'rinib turibdiki - Ma'lumotlar bazasi o'zgartirildi , ushbu ma'lumotlar bazasiga o'tish muvaffaqiyatli bo'ldi. "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-17-qismKeyingi qadam jadval yaratishdir. Qaysi? Xo'sh, birinchi navbatda, mamlakatlar bilan jadval tuzamiz. Nega bunday? Chunki shaharlar u joylashgan davlatning chet el kalitiga muhtoj. Va uni ushbu mamlakatlar odatda ma'lumotlar bazasida (keyingi o'rinlarda - ma'lumotlar bazasidan qisqartirilgan) bo'lishni boshlagandan keyin olish mumkin. Oldingi maqoladan eslaganimizdek , mamlakatlar tavsiflangan jadvalda bizda ikkita maydon mavjud - ID va nom, bu erda ID noyob identifikator, nom esa mamlakat nomidir. Shuning uchun, bunday ma'lumotlar bazasini yaratish armutni otish kabi oson. Biz yozamiz: $ CREATE TABLE country (id INT, nomi VARCHAR(30)); "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-18-qismKo'rib turganingizdek, hammasi yaxshi o'tdi. MA'LUMOTLAR BAZALARINI KO'RSATISH bilan o'xshashlik bo'yicha jadvallar ro'yxatini ko'rishimiz mumkin: $ SHOW TABLES; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-19-qismMana, bizning stolimiz. Keling, jadvallarni qanday o'chirishni bilib olaylik. Buning uchun biz yozamiz: $ DROP TABLE country; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-20-qismShuni ta'kidlash kerakki, jadval yoki ma'lumotlar bazasi o'chirilgandan keyin uni qayta tiklab bo'lmaydi!

Jadval bilan ishlash

Keling, yaratgan jadvalimizni tiklaymiz. Buning uchun siz allaqachon qilgan ishni takrorlashingiz kerak. Jadval strukturasini ko'rish uchun quyidagi buyruqdan foydalanish kerak - DESC table_name : $ DESC country; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-21-qismKo'rib turganingizdek, jadval haqidagi barcha ma'lumotlar bu erda qayd etilgan. Jadvalga biror narsa qo'shish uchun INSERT INTO table_name VALUES() buyrug'idan foydalanishingiz kerak . Keling, uchta mamlakat uchun uchta rekordni qo'shamiz: $ INSERT INTO country VALUES (1, "Ukraina"); $ INSERT INTO INTO country VALUES (2, 'Rossiya'); $ INSERT INTO COUNTRY VALUES (3, 'Belorus'); "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-22-qismMa'lumotlar bazasida saqlangan narsalarni ko'rish uchun biz ma'lumotlarni olish uchun oddiy so'rovdan foydalanamiz. Buning uchun biz mamlakat jadvalidan barcha maydonlar ma'lumotlarini olishni xohlaymiz. Oldingi gapni diqqat bilan eslang, chunki sql so'rovi shunday bo'ladi: $ SELECT * FROM country; Bu erda * barcha maydonlarni olishingiz kerakligini anglatadi. "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-23-qismMana shunday go'zallikka erishdik. Agar biz faqat ma'lum bir maydonni olishni istasak, bu muammo emas: yulduz o'rniga vergul bilan ajratilishi kerak bo'lgan maydonlarning nomlarini yozamiz. O'zingiz sinab ko'ring;) Biz allaqachon jadval yaratdik, lekin qandaydir tarzda bizda bu haqda etarli ma'lumot yo'q. Aholi soni, albatta, zarar qilmaydi, to'g'rimi? Va buni qanday qilish kerak?
  1. Jadval sxemasiga yangi maydon qo'shing - aholi.
  2. Mavjud yozuvlarni yangilang.
Birinchisi uchun biz ALTER TABLE table_name ADD COLUMN buyrug'idan foydalanamiz . Umuman olganda, ALTER TABLE - bu DDL operatsiyalari uchun buyruqlar to'plami (bu nima ekanligini eslaysizmi? Bu avvalgi maqolada edi). Aytgancha, SELECT DML operatsiyasiga ishora qiladi. Quyidagilarni yozamiz: $ ALTER TABLE country ADD COLUMN populyatsiyasi INT; $ DESC mamlakati; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2 - 24-qismRasmdan ko'rinib turibdiki, biz jadvalga yangi maydonni muvaffaqiyatli qo'shdik va ikkinchi buyruq bilan maydon sxemada ekanligini tekshirdik. Ikkinchi qadam - jadvaldagi yozuvlarni yangilash va qiymatlarni belgilash. Keling, raqamni Vikipediyadan olaylik. Men ularga ishonmayman, lekin shunga qaramay, bu eng tez va eng oson yo'l. Buning uchun boshqa DML buyrug'idan foydalaning. Lekin, avvalo, nima qilmoqchi ekanligimizni aytaylik: biz mamlakat jadvalini yangilamoqchimiz, aholi maydonini id = 1 bo'lgan yozuvda 41806221 ga teng qilmoqchimiz. Va bu konstruktsiya qanday ko'rinishga ega: UPDATE table_name SET table_row1 = value WHERE table_row2 = qiymat2; Unga asoslanib, biz yozamiz: $ UPDATE mamlakat SET aholisi = 41806221 WHERE id = 1; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2 - 25-qismBu erda biz birinchi marta WHERE kalit so'zidan foydalandik . Filtrlash uchun qiymatlarni qo'shish kerak. Masalan, bu safar biz faqat identifikatori bittaga teng bo'lgan maydon (maydonlar) uchun yangilash kerakligini aytdik (biz sql ga bu asosiy kalit ekanligini aytmaguncha - ulardan bir nechtasi bo'lishi mumkin). Biz WHERE id > 2 kabi shartni ham belgilashimiz mumkin. Agar biz filtrlashni umuman belgilamaganimizda, bu qiymat barcha jadval yozuvlariga yozilgan bo'lar edi. Rossiya, Belarus va boshqa mamlakatlar uchun o'zingizni yangilang;) Endi id 1 dan katta bo'lishi sharti bilan nom va aholi maydonlari bo'yicha jadvaldan ma'lumotlarni olishga harakat qilaylik. $ SELECT nomi, aholi FROM mamlakat WHERE id >1; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-qism - 26Shunday qilib, biz faqat o'zimiz xohlagan maydonlarni oldik. INSERT INTO yordamida biz qaysi maydonlarni qo'shishni va qaysilarini bo'sh qoldirishni belgilashimiz mumkin. Buning uchun biz yozamiz: $ INSERT INTO mamlakat (nomi, aholisi) VALUES('Gruziya', 1234566); Nima bo'lganini tekshirish uchun barcha maydonlar ro'yxatini ko'rib chiqamiz: $ SELECT * FROM country; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-27-qismId bo'lmasa, kirish yomon va aholi, albatta, boshidan olingan, shuning uchun uni o'chirishingiz kerak. DELETE FROM table_name buyrug'idan foydalaning : $ DELETE FROM country WHERE name = 'Gruziya'; "A dan Zgacha Java loyihasi": biz ma'lumotlar bazalari va SQL tilini tahlil qilamiz.  2-qism - 28Shunday qilib, biz jadvaldan maydonni qanday o'chirishni o'rgandik.

Uy vazifasi

Uy vazifasi quyidagicha bo'ladi:
  1. ID maydonidan mamlakat jadvali sxemasiga asosiy kalitni (PRIMARY KEY) qo'shishingiz kerak.
  2. Mamlakat jadvaliga yana bir mamlakatni qo'shing - Moldova.
  3. Oldingi maqolaning sxemasiga ko'ra, barcha tasvirlangan maydonlarni o'z ichiga olgan jadval shahar yarating. Maydon nomlari quyidagicha bo'ladi: id, nom, mamlakat_id, aholi.
  4. Shahar jadvaliga asosiy kalit qo'shing.
  5. Shahar jadvaliga chet el kalitini qo'shing.
Vazifa qiziqarli, bilganlar uchun u tez va murakkab bo'lmaydi. Olmaganlar uchun bu maqoladagi materialni mukammal mustahkamlash bo'lib xizmat qiladi.

Keling, xulosa qilaylik

Ushbu maqolada biz juda ko'p narsalarni qildik. Birinchidan, biz MySQL ma'lumotlar bazasi serverini o'rnatdik va ishga tushirdik. Ikkinchidan, biz kalit so'zlar va so'rovlarning to'liq ro'yxatini o'rgandik, ularning yordami bilan endi ma'lumotlar bazalari va jadvallarni yaratish/o'chirish mumkin. Biz jadvallarga ma'lumotlarni qo'shish, ularni yangilash va o'chirishni o'rgandik. Mana biz ishlatgan barcha buyruqlar va ularning tavsiflari:
  • MA'LUMOTLAR BAZASINI YARATING ma'lumotlar bazasi_nomi; - yangi ma'lumotlar bazasini yaratish
  • MA'LUMOT BAZALARINI KO'RSATISH; — maʼlumotlar bazalari roʻyxatini koʻrish
  • DROP DATABASE ma'lumotlar bazasi_nomi; - ma'lumotlar bazasini o'chirish
  • maʼlumotlar bazasi_nomidan foydalanish; - ma'lumotlar bazasida ishlash
  • CREATE TABLE jadval_nomi (id INT, ....); - jadval yaratish
  • JADVALLARNI KO'RSATISH; — jadvallar roʻyxatini koʻrish
  • DESC TABLE jadval_nomi; - jadval diagrammasiga qarang
  • DROP TABLE jadval_nomi; - jadvalni o'chirish
  • INSERT INTO jadval_nomi VALUES (); - jadvalga maydon qo'shish
  • SELECT * FROM table_name WHERE table_row = qiymat; — WHERE dan keyingi shart ostida jadvaldagi maydonlarni olish
  • SELECT * FROM table_name; - jadvaldagi barcha maydonlarni olish
  • ALTER TABLE jadval_nomi ADD COLUMN ustun_nomi COLUMN_TYPE; — jadval sxemasiga yangi maydon maydoni qo‘shish
  • YANGILANISh talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — Jadvaldagi yozuvlarni yangilash: bir maydonning qiymatlarini boshqa maydonning holatiga qarab belgilang
  • DELETE FROM table_name WHERE table_row1 = value1; — jadvaldan maydonni (yoki maydonlarni) ma'lum bir shartda olib tashlash.
O'ylaymanki, biz siz bilan ajoyib ish qildik. Mening ishimni yoqtirgan barchani GitHub akkauntimga obuna bo'lishga taklif qilaman , u erda men o'zimning kareramda sodir bo'layotgan qiziqarli loyihalar va ishlanmalarni joylashtiraman. Ochiq manbada ishlashga qiziqqan barchani loyihalarimda (omborlarimda) ishtirok etishga taklif qilaman. E'tiboringiz uchun barchangizga rahmat. Tez orada ma'lumotlar bazalari haqidagi keyingi maqolani kuzatib boring.

Seriyadagi barcha materiallar ro'yxati ushbu maqolaning boshida.

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