JavaRush /Java Blogu /Random-AZ /Biz verilənlər bazası və SQL dilini təhlil edirik. (2-ci ...
Roman Beekeeper
Səviyyə

Biz verilənlər bazası və SQL dilini təhlil edirik. (2-ci hissə) - "A-dan Z-yə Java layihəsi"

Qrupda dərc edilmişdir
Java layihəsinin yaradılması haqqında silsilədən məqalə (digər materiallara keçidlər sonundadır). Onun məqsədi əsas texnologiyaları təhlil etməkdir, nəticə teleqram botunu yazmaqdır. "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  Hissə 2 - 1Can sağlığı, əziz oxucular. Bu gün bir az danışacağıq və daha çox yazacağıq, çünki əllərimiz gözlərimizdən daha yaxşı xatırlayır. Sizi maraqlandıra bilərsiniz: niyə MySQL-dən istifadə edirik? Məsələn, eyni PostgreSQL və digər həllər var. Burada hər şey sadədir. İlk növbədə, pulsuzdur. İkincisi, rahat UI interfeysinə malikdir (bu barədə ayrıca məqalədə danışacağıq). Üçüncüsü, o, mənə tanış və xoşdur. Yuxarıda göstərilənlərin hamısına əlavə olaraq, MySQL də çox yaygındır.

Ev tapşırığını yoxlamaq

Keçən dəfə bir tapşırıq verdim - MySQL-i maşınıma quraşdırın və daxil olun. Konsol vasitəsilə və ya başqa bir şəkildə. Hər şey hazırdır? "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-2 hissəBunu edənlərə halal olsun! JavaRush-da hansı səviyyədə olmağınızın fərqi yoxdur, təlimatlara uyğun olaraq işləmək üçün lazımi alətləri quraşdıra və konfiqurasiya edə bilmək vacibdir. Və sizi inandırıram ki, onların çoxu olacaq. Çalışanlar, amma bacarmayanlar da qorxmurlar. Bu, həmişə ilk dəfə baş vermir: bəzən fasilə vermək və təzə güclə yenidən cəhd etmək lazımdır. MySQL-i özünüz quraşdıran kimdir - şərhlərdə “+” yazın ki, kiminsə bunu etdiyini biləm. Bunu özüm də edəcəm. Artıq Windows noutbukum olmadığı üçün onu MacBook-da göstərəcəyəm. Quraşdırma prosesinin çox fərqli olacağını düşünmürəm. İngilis dili təlimatından istifadə edərək onu özləri quraşdırmaq istəyənlər üçün bura klikləyin .

MacOS-da MySQL-in quraşdırılması

Əvvəlcə aşağıdakı linkə keçin , Windows, Ubuntu və ya MacOS olsun, aşağıda göstərildiyi kimi əməliyyat sistemini seçin: "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-3 hissəYükləyin və işə salın. Ancaq hər şey mənim üçün dərhal getmədi. Məlum oldu ki, Apple ən son versiyanın quraşdırılmasına icazə vermir: "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-4 hissəƏlbəttə ki, bunu söndürə bilərsiniz, lakin MacBook işləyir və mən onun parametrləri ilə qarışmayacağam. Buna görə sınaq və səhv yolu ilə quraşdırıla bilən bir versiya tapdım - bu 5.7.21 . Digər versiyaları tapmaq üçün Arxiv sekmesine keçin və istədiyiniz versiyanı seçin: "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-5 hissəSonra yüklənmiş faylı işə salın. Sonrakı, sonrakı, sonrakı düymələri basın, amma sonda diqqətli olun! Verilənlər bazasına daxil olmaq üçün istifadəçi adı və parol olacaq. Mənim üçün belə görünürdü: Burada deyilir ki, root adı və Vac/zto=.24q parolu "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-6 hissəolan istifadəçi olacaq . Bu quraşdırmanı tamamlayır.

MySQL komanda xəttinə daxil olun

Daxil olmaq üçün MySQL serverinin aktiv olduğundan əmin olmalısınız. Bunu etmək üçün Sistem Preferences bölməsinə keçin , orada MySQL simvolunu tapın: "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-7 hissəOraya gedin və əvvəlcə serverin işə salınmalı olduğuna baxın. Bunu etmək üçün MySQL Serveri Başlat düyməsini sıxmağınız kifayətdir. Bəli, siz həmçinin qutunu işarələyə bilərsiniz ki, maşın hər dəfə işə düşəndə ​​server arxa planda işə başlasın. "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-8 hissəQeyd etmək vacibdir ki, terminalda bütün sorğuları aydınlaşdırmaq üçün $ simvolu ilə başlayacağam. Sonra, əmr xətti ilə MySQL serverinə birbaşa qoşulmalısınız. Bunu etmək üçün terminalı açın və yazın: $ mysql Və iki seçim var:
  1. Cavab "ERROR 1045 (28000): 'roman_beskrovnyi'@'localhost' istifadəçisi üçün giriş rədd edildi (şifrədən istifadə edərək: NO" olarsa, bu, serverin quraşdırıldığını və geri çağırıldığını bildirir. Sadəcə düzgün əmri keçmək lazımdır. ona.
  2. Cavab tapılmadısa : mysql , yaxşıdır - serverə heç bir keçid yoxdur. Bunun üçün mysql dəyişəni ilə ləqəb yaratmalı olacaqsınız, ona görə də aşağıdakı sətri yazırıq:

    $ ləqəb mysql=/usr/local/mysql/bin/mysql

    Bu, yalnız bu terminal sessiyasına kömək edəcək. Ancaq daha çox ehtiyacımız yoxdur - biz hər zaman terminalda işləməyəcəyik.

  3. MySQL quraşdırılmayıb, kompüterinizi aldatmayın.
Sonra quraşdırma zamanı verilən ad və paroldan istifadə edib yazırıq: $ mysql --user=root -p"A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-9 hissə Orada parolu yazırıq və bu formada xoşbəxt olacağıq: "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-10 hissəSadəcə sonuncu sətirdə MySQL-ə daxil olduğumuz deyilir. terminal server. Ancaq kök üçün bu parol birdəfəlik parol oldu və onu başqa birinə dəyişdirmək lazımdır. Təbii ki, təhlükəsizlik baxımından. Bunu dəyişdirməsək və serverdə yeni verilənlər bazası yaratmağa cəhd etsək, aşağıdakı cavabı alacağıq: ERROR 1820 (HY000): Bu ifadəni yerinə yetirməzdən əvvəl ALTER USER ifadəsindən istifadə edərək parolunuzu sıfırlamalısınız . "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  Hissə 2 - 11Belə demək mümkünsə, məcburdurlar. Yaxşı, yaxşı, bizim üçün çətindir? Gəlin parolu sadələşdirək (bu, yalnız yerli iş üçün nəzərdə tutulub; real iş üçün, əlbəttə ki, parol mürəkkəb olmalıdır). Deyək root∫ , istifadəçi adı kimi. Şifrəni dəyişmək üçün sətri daxil etməlisiniz: ALTER USER 'root'@'localhost' 'root' TARAFINDAN TƏYİD EDİLİR; Cavab isə belə olacaq: Hər şeyin düzgün işlədiyinə əmin olmaq üçün aşağıdakı sintaksisdən"A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  Hissə 2 - 12 istifadə edərək yeni verilənlər bazası yaratmağa çalışaq : $ CREATE DATABASE test_db; Serverdə belə verilənlər bazası yaradıldığından əmin olmaq üçün aşağıdakı əmri yazın: $ SHOW DATABASES; Və nəticədə aşağıdakıları əldə edirik: Hamısı budur :) Sadə və sürətli olduğunu söyləmək mümkün deyil. Buna görə də, kim bunu özü etdi - xüsusi hörmət. Bunu etməyənlər üçün narahat olmayın, bütün quraşdırma növləri üçün təlimatlar var:"A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  Hissə 2 - 13 Orada hər şey olduqca sağlam təsvir edilmişdir. Yeganə odur ki, hər şey ingilis dilindədir. İndi ilk sətirlərimizi SQL-də yazırıq.

SQL-də ilk sətirlərimizi yazırıq

Yuxarıda qeyd etdiyiniz kimi, biz iki əmr bilirik:
  1. CREATE DATABASE - serverdə verilənlər bazası yaradır;
  2. MƏLUMAT BAZASINI GÖSTƏR - Serverdə yaradılmış və mövcud olan bütün verilənlər bazalarını göstərir.
Qeyd edim ki, SQL onların əmrlərini necə yazdığımıza əhəmiyyət vermir - ya hamısı böyük hərflərlə, ya da yox. Bununla belə, əmrlərin böyük hərflə yazılması yaxşı ədəb sayılır. Sonra verilənlər bazasını silmək üçün DROP DATABASE database_name əmrini yazmalısınız ; burada verilənlər bazası_adı silmək istədiyimiz verilənlər bazasının adıdır. Biz artıq test_db adlı test bazası yaratmışıq , ona görə də onu silək. Bunun üçün yazırıq: $ DROP DATABASE testi; Qeyd etmək lazımdır ki, Sorğu OK, 0 sətir təsirlənmiş (0,02 san) cavabı sorğunun uğurlu olduğunu təsdiqlədiyi üçün çox vacibdir. Bundan əlavə, bu sorğunun cədvəllərdə neçə sıra və hansı vaxt ərzində dəyişdiyini sizə bildirir. "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  Hissə 2 - 15Ümumiyyətlə, DROP sözü nəyisə silməkdən məsuldur. Bu halda verilənlər bazasını sildik. Ancaq bu, başqa məqsədlər üçün də istifadə edilə bilər (məsələn, masanın atılması). İndi isə mənə etibar etmək üçün nəticəni yoxlayın, görək neçə verilənlər bazası qalıb: $ VERİLƏNİŞ BAZANLARINI GÖSTER; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 16Gördüyümüz kimi test_db adlı verilənlər bazası yoxdur. CHTD :D

Öz verilənlər bazanızı və cədvəlinizi yaradın

Şəhər məlumat bazası yaradın: $ VERİLƏNİŞ BAZASI şəhərləri YARAT; Müəyyən bir verilənlər bazasında işləmək üçün ona daxil olmalısınız. Bunu etmək üçün USE database_name əmrindən istifadə edin , bundan sonra cədvəllərlə işləmək üçün bütün əmrlər bu verilənlər bazasında yerinə yetiriləcək. $ İSTİFADƏ şəhərləri; Cavabdan da göründüyü kimi - Verilənlər bazası dəyişdirildi , bu verilənlər bazasına keçid uğurlu oldu. "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 17Növbəti addım cədvəl yaratmaqdır. Hansı? Yaxşı, əvvəlcə ölkələrlə cədvəl yaradaq. Niyə belədir? Çünki şəhərlərin yerləşdiyi ölkənin xarici açarına ehtiyacı var. Və bu ölkələr ümumiyyətlə məlumat bazasında (bundan sonra - verilənlər bazasından qısaldılmış) olmağa başladıqdan sonra əldə edilə bilər. Əvvəlki məqalədən xatırladığımız kimi , ölkələrin təsvir olunduğu cədvəldə iki sahəmiz var - ID və ad, burada ID unikal identifikator, ad isə ölkənin adıdır. Buna görə də, belə bir məlumat bazası yaratmaq armudu atəşə tutmaq qədər asandır. Yazırıq: $ CREATE TABLE ölkə (id INT, adı VARCHAR(30)); "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 18Gördüyünüz kimi, hər şey yaxşı keçdi. MƏLUMAT BAZANLARINI GÖSTƏRƏN analoji olaraq biz cədvəllərin siyahısına baxa bilərik: $ CƏDVƏLLƏRİ GÖSTER; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 19Budur, bizim masamızdır. İndi cədvəlləri necə silməyi öyrənək. Bunun üçün yazırıq: $ DROP TABLE ölkə; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 20Qeyd etmək vacibdir ki, cədvəl və ya verilənlər bazası silindikdən sonra onu bərpa etmək mümkün deyil!

Cədvəllə işləmək

Yaratdığımız cədvəli bərpa edək. Bunu etmək üçün sadəcə əvvəllər etdiyinizi təkrarlamaq lazımdır. Cədvəl strukturuna baxmaq üçün aşağıdakı əmrdən istifadə etmək lazımdır - DESC table_name : $ DESC country; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 21Gördüyünüz kimi cədvəl haqqında bütün məlumatlar burada qeyd olunur. Cədvələ nəsə əlavə etmək üçün INSERT INTO table_name VALUES() əmrindən istifadə etməlisiniz . Üç ölkə üçün üç rekord əlavə edək: $ INSERT INTO country VALUES (1, 'Ukraine'); $ INSERT INTO ILTO VALUES (2, 'Rusiya'); $ INSERT INTO ölkə DƏYƏRLƏRİ (3, 'Belorus'); "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 22Verilənlər bazasında saxlanılanlara baxmaq üçün biz məlumat əldə etmək üçün sadə sorğudan istifadə edəcəyik. Bunun üçün ölkə cədvəlindən bütün sahələrin məlumatlarını almaq istəyirik. Əvvəlki cümləni diqqətlə xatırlayın, çünki sql sorğusu belə olacaq: $ SELECT * FROM country; Harada * bütün sahələri götürməyiniz lazım olduğunu bildirir. "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 23Nə qədər gözəl olduq. Yalnız müəyyən bir sahə əldə etmək istəyiriksə, bu problem deyil: ulduz əvəzinə vergüllə ayrılmalı olan sahələrin adlarını yazırıq. Özünüz cəhd edin ;) Artıq cədvəl yaratmışıq, amma nədənsə bu barədə kifayət qədər məlumatımız yoxdur. Əhalinin sayı əlbəttə ki, zərər verməz, elə deyilmi? Və bunu necə etmək olar?
  1. Cədvəl sxeminə yeni bir sahə əlavə edin - əhali.
  2. Mövcud girişləri yeniləyin.
Birincisi, biz ALTER TABLE table_name ADD COLUMN əmrindən istifadə edəcəyik . Ümumiyyətlə, ALTER TABLE DDL əməliyyatları üçün əmrlər toplusudur (bu nə olduğunu xatırlayırsınız? Bu, əvvəlki məqalədə idi). Yeri gəlmişkən, SELECT DML əməliyyatına aiddir. Aşağıdakıları yazaq: $ ALTER TABLE country ADD COLUMN əhali INT; $ DESC ölkə; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 24Şəkildən də göründüyü kimi, biz uğurla cədvələ yeni sahə əlavə etdik və ikinci komanda ilə sahənin sxemdə olduğunu yoxladıq. İkinci addım cədvəldəki qeydləri yeniləmək və dəyərlər təyin etməkdir. Nömrəni Vikipediyadan götürək. Onlara güvəndiyim üçün deyil, amma buna baxmayaraq, bu, ən sürətli və asan yoldur. Bunu etmək üçün başqa bir DML əmrindən istifadə edin. Ancaq əvvəlcə nə etmək istədiyimizi deyək: ölkə cədvəlini yeniləmək, id = 1 olduğu qeyddə əhali sahəsini 41806221-ə bərabər etmək istəyirik. Və bu konstruksiya belə görünür: YENİLƏNİB cədvəl_adı SET table_row1 = dəyər HARƏDƏ table_row2 = dəyər2; Buna əsaslanaraq yazırıq: $ YENİLƏNİB ölkə SET əhalisi = 41806221 WHERE id = 1; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 25Burada biz ilk dəfə WHERE açar sözündən istifadə etdik . Filtrləmə üçün dəyərlər əlavə etmək lazımdır. Məsələn, bu dəfə dedik ki, yalnız id-i birinə bərabər olan sahə (sahələr) üçün yeniləmək lazımdır (sql-a bunun əsas açar olduğunu deyənə qədər - onlardan bir neçəsi ola bilər). Biz həmçinin WHERE id > 2 kimi bir şərt də təyin edə bilərik. Əgər biz heç filtrləmə təyin etməsəydik, bu dəyər bütün cədvəl qeydlərinə yazılacaqdı. Rusiya, Belarusiya və digər ölkələr üçün özünüzü yeniləyin ;) İndi id 1-dən böyük olmaq şərti ilə ad və əhali sahələri üçün cədvəldən məlumatları əldə etməyə çalışaq . "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 26Beləliklə, biz yalnız özümüz istədiyimiz sahələri aldıq. INSERT INTO vasitəsilə biz hansı sahələri əlavə etmək və hansıları boş qoymaq istədiyimizi təyin edə bilərik. Bunun üçün yazırıq: $ INSERT INTO ölkə (ad, əhali) VALUES('Georgia', 1234566); Nə baş verdiyini yoxlamaq üçün bütün sahələrin siyahısına baxaq: $ SELECT * FROM country; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 27İd olmadan giriş pisdir və əhali, əlbəttə ki, başdan götürülüb, ona görə də silmək lazımdır. DELETE FROM table_name əmrindən istifadə edin : $ DELETE FROM country WHERE name = 'Georgia'; "A-dan Z-yə Java layihəsi": verilənlər bazası və SQL dilini təhlil edirik.  2-ci hissə - 28Bu yolla cədvəldən sahəni necə silməyi öyrəndik.

Ev tapşırığı

Ev tapşırığı aşağıdakı kimi olacaq:
  1. ID sahəsindən ölkə cədvəlinin sxeminə əsas açarı (PRIMARY KEY) əlavə etməlisiniz.
  2. Ölkə cədvəlinə daha bir ölkə əlavə edin - Moldova.
  3. Əvvəlki məqalənin sxeminə uyğun olaraq, təsvir olunan bütün sahələri ehtiva edən bir cədvəl şəhəri yaradın. Sahə adları aşağıdakı kimi olacaq: id, ad, ölkə_id, əhali.
  4. Şəhər cədvəlinə əsas açar əlavə edin.
  5. Şəhər cədvəlinə xarici açar əlavə edin.
Tapşırıq maraqlıdır, bilənlər üçün sürətli və asan olacaq. Olmayanlar üçün bu məqalədəki materialın əla möhkəmləndirilməsi kimi xidmət edəcəkdir.

Gəlin ümumiləşdirək

Bu yazıda çox şey etdik. Əvvəlcə MySQL verilənlər bazası serverini quraşdırdıq və işə saldıq. İkincisi, biz açar sözlər və sorğuların tam siyahısını öyrəndik, onların köməyi ilə indi verilənlər bazası və cədvəllər yarada/silə bilərik. Cədvəllərə məlumat əlavə etməyi, onları yeniləməyi və silməyi öyrəndik. İstifadə etdiyimiz bütün əmrləri təsvirləri ilə birlikdə təqdim edirik:
  • VERİLƏNLƏR BAZASI YARATIN verilənlər bazası_adı; - yeni verilənlər bazası yaradın
  • MƏLUMAT BAZASINI GÖSTƏRİN; — verilənlər bazası siyahısına baxın
  • DROP DATABASE verilənlər bazası_adı; - verilənlər bazasını silin
  • verilənlər bazası_adından istifadə edin; - verilənlər bazasında işləmək
  • CREATE TABLE masa_adı (id INT, ....); - cədvəl yaradın
  • CƏDVƏLLƏRİ GÖSTƏRİN; — cədvəllərin siyahısına baxın
  • DESC TABLE masa_adı; - cədvəl diaqramına baxın
  • DROP TABLE masa_adı; - cədvəli silin
  • cədvəl_adı DƏYƏRLƏRİNƏ DAXİL EDİN (); - cədvələ sahə əlavə edin
  • SEÇİN * cədvəl_adından HARADA masa_sətiri = dəyər; — Cədvəldə HARADA-dan sonrakı şərtlə sahələri əldə edin
  • SEÇİN * cədvəl_adından; - cədvəldəki bütün sahələri əldə edin
  • ALTER TABLE masa_adı ADD COLUMN sütun_name COLUMN_TYPE; — cədvəl sxeminə yeni sahə sahəsi əlavə edin
  • YENİLƏNİN talbe_name SET talbe_row1 = value1 JHERE table_row2 = value2; — cədvəldəki qeydləri yeniləyin: bir sahənin qiymətlərini digər sahənin şərtlərinə uyğun olaraq təyin edin
  • Cədvəl_adından SİLİN HARADA table_row1 = value1; — müəyyən bir şərtlə cədvəldən sahəni (və ya sahələri) silmək.
Düşünürəm ki, sizinlə əla iş gördük. İşimi bəyənən hər kəsi karyeramda baş verən maraqlı layihələri və inkişafları dərc etdiyim GitHub hesabıma abunə olmağa dəvət edirəm. Açıq mənbədə işləmək istəyən hər kəsi layihələrimdə (repozitoriyalarımda) iştirak etməyə dəvət edirəm. Diqqətiniz üçün hamınıza təşəkkür edirəm. Tezliklə verilənlər bazası haqqında növbəti məqalə üçün bizi izləyin.

Serialdakı bütün materialların siyahısı bu məqalənin əvvəlindədir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION