JavaRush /Blog Java /Random-MS /Kami menganalisis pangkalan data dan bahasa SQL. (Bahagia...

Kami menganalisis pangkalan data dan bahasa SQL. (Bahagian 4 - menyemak kerja rumah) - "Projek Java dari A hingga Z"

Diterbitkan dalam kumpulan
Artikel daripada siri tentang mencipta projek Java (pautan ke bahan lain ada di penghujung). Matlamatnya adalah untuk menganalisis teknologi utama, hasilnya menulis bot telegram. Artikel terdahulu dan analisis kerja rumah pada pangkalan data: 1 , 2 , 3 . Kepada semua orang yang mempunyai kesabaran dan ketabahan, kepada semua orang yang telah pergi bersama saya untuk artikel keempat - syabas. Seperti yang mereka katakan, orang yang berjalan boleh menguasai jalan. Minggu ini artikel akhir tentang Pangkalan Data akan dikeluarkan, di mana kita akan bercakap tentang jenis perhubungan dan gabungan . Tetapi sebelum kita berurusan dengan maklumat baru, mari kita semak kerja rumah kita... Saya benar-benar berasa seperti seorang guru. Jangan marah saya: Saya tidak mempunyai pendidikan pedagogi, itu pasti. Sejak minggu lepas pemeriksaan terperinci alat kawalan jauh mengambil bahagian terbesar bahan, saya memutuskan untuk membahagikan analisis kerja rumah dan semakan bahan baharu kepada dua bahagian."Projek Java dari A hingga Z": kami menganalisis pangkalan data dan bahasa SQL.  Bahagian 4 - menyemak kerja rumah - 1

Sebenarnya, analisis kerja rumah

Saya pasti gembira kerana ada orang yang melakukan PD dan bercakap mengenainya. Ini hebat! Saya seyakin mungkin bahawa hanya membaca tanpa menyatukan ilmu adalah jalan ke mana-mana. Oleh itu, setiap orang yang melakukan atau cuba melakukan - hormat. Izinkan saya mengingatkan anda syarat-syarat tugas:
  1. Fahami operator HAVING dan tulis contoh pertanyaan untuk jadual daripada contoh kami. Jika anda perlu menambah beberapa medan atau lebih banyak nilai untuk menjadikannya lebih jelas, tambahkannya. Jika sesiapa mahu, tulis penyelesaian contoh anda dalam ulasan - jadi saya juga boleh menyemaknya jika saya mempunyai masa.
  2. Pasang MySQL Workbench untuk bekerja dengan pangkalan data melalui UI. Saya rasa kita sudah mempunyai latihan yang mencukupi untuk bekerja daripada konsol. Sambung ke pangkalan data. Jika anda menggunakan sesuatu yang lain untuk bekerja dengan pangkalan data, jangan ragu untuk melangkau tugas ini. Di sini dan seterusnya saya hanya akan menggunakan MySQL Workbench.
  3. Tulis permintaan untuk penerimaan menggunakan data kami:
    1. negara terkecil/paling ramai penduduk;
    2. purata bilangan penduduk di negara ini;
    3. purata bilangan penduduk di negara yang namanya berakhir dengan “a”;
    4. bilangan negara dengan penduduk lebih daripada empat juta;
    5. menyusun negara dengan mengurangkan bilangan penduduk;
    6. menyusun negara mengikut nama mengikut susunan semula jadi.

Mari kita bercakap tentang HAVING

Mengetahui operator Having boleh membantu anda lulus lebih daripada satu temu duga di mana akan ada masalah SQL. Oleh itu, memahaminya adalah sangat penting. Kebetulan anda tidak boleh menggunakan syarat untuk mengagregatkan fungsi (SUM, MIN, MAX, AVG). Selain itu, HAVING digunakan untuk medan yang dikumpulkan. Apakah maksudnya? Sebagai contoh, jika kita ingin mendapatkan negara yang purata bilangan penduduk di bandar adalah lebih daripada 50,000 penduduk, kita tidak boleh melakukannya tanpa menggunakan HAVING. Seperti yang saya faham, ini dilakukan kerana pengagregatan berlaku selepas pernyataan WHERE telah dilaksanakan dan adalah mustahil untuk menambah nilai pengagregatan kepadanya yang akan dikira kemudian. Walaupun setakat ini pendapat saya tidak menambah banyak pemahaman, anda boleh menerima ini sebagai fakta dan meneruskannya. Dalam pengaturcaraan, ia sering berlaku bahawa jika sesuatu yang tidak jelas pada satu ketika, ia mungkin bermakna bahawa otak masih belum mencernanya. Tidur dengan pemikiran ini, dan keesokan harinya semuanya akan menjadi lebih jelas.

Memasang MySQL Workbench

Di sini dan seterusnya saya akan menggunakan Workbench untuk pertanyaan. Saya akan menunjukkan kepada anda perkara yang anda perlukan untuk memasang dan membuat sambungan ke pangkalan data. Ini adalah produk daripada Oracle, jadi anda hanya perlu pergi ke laman web mereka dan pilih versi dan sistem pengendalian yang anda mahukan. Untuk melakukan ini, ikuti pautan ini : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 2Di sini anda boleh memilih dengan tepat sistem pengendalian yang anda perlukan. Klik Muat Turun , tetapi bukannya memuat turun kami akan melihat tetingkap ini: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 3Jangan tersesat, cuma cari butang yang dipanggil Tidak, terima kasih, mulakan muat turun saya dan muat turun akan bermula. Mengapa mereka berbuat demikian? Mungkin, supaya lebih ramai orang mendaftar dengan mereka, ini tidak penting bagi kami. Selepas berjaya memuat turun, jalankan fail pemasangan. Pada MacOS ia kelihatan seperti ini: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 4Hanya seret ikon dan itu sahaja, pemasangan selesai. Tidak sesukar memasang MySQL sendiri, bukan? Atau kami baru sahaja membiasakannya dan menjadi lebih berpengalaman ;) Bahagian kedua tugas ini adalah untuk mewujudkan sambungan ke pangkalan data kami. Apa yang diperlukan untuk ini? Klik tanda tambah di sebelah MySQL Connections: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 5Dalam tetingkap yang muncul, masukkan data yang diperlukan:
  • Nama Sambungan - nama sambungan kami. Tulis nama yang sejelas mungkin supaya tiada masalah dengan pengenalan nanti. Saya memberikan sambungan ini nama JRTB_DB ;
  • Nama hos - sudah pun ditetapkan sebagai local 127.0.0.1 (aka localhost). Dalam kes kami, tiada apa yang perlu diubah, kerana pangkalan data dipasang pada komputer, tetapi jika pangkalan data berada di tempat lain, maka hos (ip mesin di mana pangkalan data sedang berjalan) perlu diubah dengan sewajarnya;
  • Nama pengguna - anda juga boleh menentukan pengguna anda jika perlu. Jika anda belum menambah apa-apa dalam kunci ini, biarkan ia tidak berubah;
  • Kata laluan - klik Simpan dalam Rantai Kunci dan tetapkan kata laluan yang anda tetapkan untuk diri anda sendiri. Saya biarkan semuanya mudah - akar .
Untuk menyemak sama ada sambungan akan berfungsi, klik Sambungan Ujian : "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 6Nah, jika semuanya dilakukan dengan betul, hasilnya tidak lama lagi: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 7Sekarang kita mempunyai sambungan yang disimpan dalam pangkalan data, dan kita tidak perlu membuat sambungan dan mengisi dalam nama dan kata laluan setiap masa. Dan kebahagiaan ini akan kelihatan seperti ini: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 8Kami pergi ke sambungan yang baru dibuat dan melihat tetingkap permintaan. Untuk memastikan semuanya betul, mari semak senarai pangkalan data, pergi ke pangkalan data kami dan dapatkan semua data tentang bandar: "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 9Dan di sini kami mendapat carte blanche untuk apa yang kami perlukan. Bahagian pertama bertanggungjawab untuk skrip yang kami masukkan. Seterusnya, dalam Grid Keputusan , kita melihat hasil operasi terakhir dalam skrip. Dan Output Tindakan menunjukkan senarai operasi dan hasilnya. Satu perkara yang sangat berguna, saya ingin memberitahu anda: dengan bantuannya anda boleh memantau kelajuan pelaksanaan skrip tertentu. Mengapa ia penting? Salah satu masalah yang paling biasa dalam kelajuan pelaksanaan tugas dalam aplikasi ialah kelajuan pelaksanaan pertanyaan dalam pangkalan data. Di sini anda boleh menyemaknya dengan cepat dan mudah dengan tangan.

Kami menulis permintaan yang diperlukan

Kami hanya mempunyai 7 permintaan untuk diselesaikan, jom!

  1. Dapatkan negara yang paling ramai penduduknya. Di sini anda boleh pergi dengan licik dan mengambil beberapa laluan:

  • Mengikut jadual negara

Kemudian kita hanya perlu mengisih pertanyaan kita mengikut populasi dan hanya mengambil satu rekod. Untuk melakukan ini, anda perlu menambah operator LIMIT pada penghujung skrip dan nyatakan kuantiti yang diperlukan: $ SELECT * FROM country ORDER BY population DESC LIMIT 1;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 10

  • Mengikut jadual bandar

Segala-galanya lebih menarik di sini, kerana permintaan akan menjadi lebih kompleks, tetapi juga lebih menarik. Memandangkan kami masih tidak tahu tentang penyertaan, kami hanya boleh mendapatkan ID negara: $ SELECT country_id, SUM(populasi) DARI bandar KUMPULAN OLEH country_id ORDER BY SUM(populasi) DESC LIMIT 1; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 11Di sini kami melakukan perkara yang menarik - kami mengumpul jumlah penduduk semua bandar yang diketahui di setiap negara, diisih mengikut jumlah ini dan mengambil elemen pertama. Nah, adakah ia hebat? Saya gembira :D Selepas ini anda serta-merta berasa seperti guru pertanyaan... (tidak lama, sudah tentu))

  1. Dapatkan negara terkecil. Di sini anda boleh pergi dengan licik dan mengambil beberapa laluan

Dalam kes ini, semuanya akan sama. Satu-satunya perbezaan ialah pengisihan akan diterbalikkan - itu sahaja. Oleh itu, saya hanya menulis permintaan:

  • Mengikut jadual bandar

$ PILIH country_id, SUM(populasi) DARI bandar KUMPULAN OLEH country_id ORDER MENGIKUT JUMLAH(populasi) HAD 1;

  • Mengikut jadual negara

$ PILIH * DARI negara URUSAN MENGIKUT populasi HAD 1; Dan lihat sendiri hasilnya!

  1. Purata bilangan penduduk di negara ini

Di sini sekali lagi spesifikasi teknikal entah bagaimana tidak tepat, seolah-olah pengurus telah menulisnya... Mengapa saya memutuskan ini? Kerana tidak jelas di meja mana untuk bekerja. Tetapi ini adalah perkara biasa: tidak ada tugas di mana segala-galanya akan segera jelas dan mudah difahami. Oleh itu, anda perlu membaca tugas dengan teliti, dan jika anda mempunyai soalan, tanya mereka dengan segera! Betul, satu teguran. Dengan mengambil kira data yang kami ada dalam pangkalan data, kami akan mencari menggunakan data dari bandar. Untuk melakukan ini, tulis pertanyaan berikut: $ PILIH country_id, AVG(populasi) DARI bandar KUMPULAN OLEH country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 12Ia mudah di sini: kami menggunakan fungsi AVG dan mengumpulkan rekod bandar kami mengikut negara.

  1. Purata bilangan penduduk di negara yang namanya berakhir dengan “a”

Akan ada sedikit perubahan di sini atas permintaan. Kita perlu menambah penapisan mengikut nama sebelum kita melakukan pengumpulan. Saya membuat kerja rumah saya, seperti semua pelajar, sebelum menerbitkan artikel ini, dan saya faham bahawa masalah ini tidak dapat diselesaikan tanpa penyertaan. kenapa? Kerana selain ID negara, kita juga perlu mendapatkan namanya. Dan ini tidak boleh dilakukan tanpa menggabungkan dua jadual ke dalam satu rekod. Oleh itu, saya akan melakukan tugas ini, sudah tentu, tetapi ini adalah jamb saya...))) Saya ingin menghasilkan tugas menggunakan LIKE dalam permintaan...) $ SELECT ci.country_id, AVG(ci.population ) DARI bandar ci DALAM SERTAI negara co DI ci.country_id = co.id DI MANA co.name SEPERTI "%a" KUMPULAN OLEH country_id; "Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 13Apa yang berlaku di sini? Mula-mula, kami menyertai rekod daripada jadual bandar dan negara menggunakan country_id kunci asing, ditapis mengikut nama negara supaya berakhir dengan "a", dan kemudian dikumpulkan mengikut country_id.

  1. Bilangan negara dengan penduduk lebih daripada empat juta

Di sini kita hanya perlu menggunakan fungsi COUNT dan menambah penapisan pada populasi: $ SELECT COUNT(*) from country WHERE population > 4000000; Hasilnya, kita dapati terdapat 3 negara sedemikian. Adakah ini betul? Ya, hanya Moldova yang tidak melepasi pencapaian ini.

  1. Isih negara dengan mengurangkan bilangan penduduk

Untuk melakukan ini, kita perlu menggunakan operator ORDER BY yang telah kita ketahui. Tetapi perlu diingat bahawa secara lalai pengisihan adalah dalam susunan semula jadi. Untuk nombor ini bermakna ia diisih dalam tertib menaik, untuk rentetan bermakna ia diisih bermula daripada aksara pertama. Jika kita memerlukan isihan menurun, kita memerlukan songsangan daripada yang semula jadi: $ PILIH * DARI URUTAN negara MENGIKUT DESC penduduk;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 14

  1. Isih negara mengikut nama dalam susunan semula jadi

Di sinilah pengetahuan tentang susunan semula jadi akan berguna. Memandangkan ia adalah lalai, ia adalah sekeping kek untuk kami: $ PILIH * DARI negara PESANAN MENGIKUT nama;"Java-проект от А до Я": разбираем базы данных и язык SQL. Часть 4 — проверка домашнего задания - 15

Daripada keluaran

Kebetulan saiz penyelesaian kerja rumah akan menjadi sangat besar, jadi kami akan membuat pengecualian: Saya menerbitkan artikel ini dengan cek, dan pada hari Jumaat saya akan menerbitkan bahan baharu dengan sambungan dan sambungan. Terima kasih semua kerana membaca. Sehingga Jumaat!

Senarai semua bahan dalam siri ini adalah pada permulaan artikel ini.

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