Ketahui Cara Menggunakan Beberapa Fungsi MySQL dan MariaDB - Bahagian 2

Ketahui Cara Menggunakan Beberapa Fungsi MySQL dan MariaDB - Bahagian 2

Ini adalah bahagian kedua siri 2 artikel mengenai keperluan penting MariaDB / MySQL Perintah. Sila rujuk artikel sebelumnya mengenai topik ini sebelum meneruskan.

  1. Ketahui Asas Mysql/MariaDB untuk Pemula - Bahagian 1

Di bahagian kedua siri MySQL/MariaDB Beginner ini, kami akan menerangkan bagaimana untuk mengehadkan bilangan baris yang dikembalikan oleh Pilih pertanyaan, dan bagaimana untuk memesan set hasil berdasarkan keadaan tertentu.

Di samping. Semua ini akan membantu kami membuat skrip SQL yang boleh kami gunakan untuk menghasilkan laporan yang berguna.

Prasyarat

Untuk memulakan, sila ikuti langkah -langkah ini:

1. Muat turun pekerja Pangkalan Data Contoh, yang merangkumi enam jadual yang terdiri daripada 4 Juta rekod secara keseluruhan.

# wget https: // launchpad.Net/Test-DB/Pekerja-DB-1/1.0.6/+Muat turun/Pekerja_DB-Full-1.0.6.tar.BZ2 # TAR XJF Pekerja_DB-Full-1.0.6.tar.BZ2 # CD Pekerja_DB 

2. Masuk ke Mariadb segera dan buat pangkalan data yang dinamakan pekerja:

# mysql -u root -p Masukkan Kata Laluan: Selamat Datang ke Monitor MariaDB. Perintah berakhir dengan; atau \ g. ID sambungan MariaDB anda ialah 2 versi pelayan: 10.1.Hak Cipta Pelayan MariaDB 14-Mariadb (c) 2000, 2016, Oracle, Mariadb Corporation AB dan lain-lain. Taipkan 'bantuan;' atau '\ h' untuk mendapatkan bantuan. Taipkan '\ c' untuk membersihkan pernyataan input semasa. Mariadb [(Tiada)]>> Buat pekerja pangkalan data; Pertanyaan ok, 1 baris terjejas (0.00 saat) 

3. Importnya ke pelayan MariaDB anda seperti berikut:

Mariadb [(Tiada)]>> pekerja sumber.SQL 

Tunggu 1-2 minit sehingga pangkalan data sampel dimuatkan (perlu diingat kita bercakap 4m Rekod di sini!).

4. Sahkan bahawa pangkalan data diimport dengan betul dengan menyenaraikan jadualnya:

Mariadb [Pekerja]> Menggunakan pekerja; Pangkalan data berubah Mariadb [Pekerja]> Tunjukkan jadual; +---------------------+ | Tables_in_employees | + ---------------------+ | Jabatan | | DEPT_EMP | | DEPT_MANAGER | | Pekerja | | Gaji | | Tajuk | + ---------------------+ 6 baris dalam set (0.02 saat) 

5. Buat akaun khas untuk digunakan dengan pekerja Pangkalan Data (Jangan ragu untuk memilih nama dan kata laluan akaun lain):

Mariadb [Pekerja]> Buat pengguna [dilindungi e -mel] yang dikenal pasti oleh 'empadminpass'; Pertanyaan ok, 0 baris terjejas (0.03 saat) Mariadb [Pekerja]> Memberi semua keistimewaan kepada pekerja.* untuk [dilindungi e -mel]; Pertanyaan ok, 0 baris terjejas (0.02 saat) Mariadb [Pekerja]> Keistimewaan siram; Pertanyaan ok, 0 baris terjejas (0.00 saat) Mariadb [Pekerja]> keluar Bye 

Sekarang log masuk sebagai empadmin pengguna ke MariaDB Prompt.

# mysql -u empadmin -p Masukkan Kata Laluan: Selamat Datang ke Monitor MariaDB. Perintah berakhir dengan; atau \ g. ID sambungan MariaDB anda ialah 4 versi pelayan: 10.1.Hak Cipta Pelayan MariaDB 14-Mariadb (c) 2000, 2016, Oracle, Mariadb Corporation AB dan lain-lain. Taipkan 'bantuan;' atau '\ h' untuk mendapatkan bantuan. Taipkan '\ c' untuk membersihkan pernyataan input semasa. Mariadb [(Tiada)]>> Menggunakan pekerja; Maklumat jadual membaca untuk menyelesaikan nama dan nama lajur, anda boleh mematikan ciri ini untuk mendapatkan permulaan yang lebih cepat dengan -a pangkalan data berubah 
Ketahui Perintah MySQL Asas untuk Pemula

Pastikan semua langkah yang digariskan dalam imej di atas telah selesai sebelum meneruskan.

Memesan dan mengehadkan bilangan baris dalam set hasil

Jadual Gaji mengandungi semua pendapatan setiap pekerja dengan tarikh permulaan dan akhir. Kita mungkin ingin melihat gaji emp_no = 10001 lebih masa. Ini akan membantu menjawab soalan berikut:

  1. Adakah dia mendapat kenaikan?
  2. Sekiranya ya, bila?

Laksanakan pertanyaan berikut untuk mengetahui:

Mariadb [Pekerja]> Pilih * dari gaji di mana emp_no = 10001 order by from_date; +--------+--------+------------+------------+ | emp_no | Gaji | dari_date | to_date | +--------+--------+------------+------------+| 10001 | 60117 | 1986-06-26 | 1987-06-26 | | 10001 | 62102 | 1987-06-26 | 1988-06-25 | | 10001 | 66074 | 1988-06-25 | 1989-06-25 | | 10001 | 66596 | 1989-06-25 | 1990-06-25 | | 10001 | 66961 | 1990-06-25 | 1991-06-25 | | 10001 | 71046 | 1991-06-25 | 1992-06-24 | | 10001 | 74333 | 1992-06-24 | 1993-06-24 | | 10001 | 75286 | 1993-06-24 | 1994-06-24 | | 10001 | 75994 | 1994-06-24 | 1995-06-24 | | 10001 | 76884 | 1995-06-24 | 1996-06-23 | | 10001 | 80013 | 1996-06-23 | 1997-06-23 | | 10001 | 81025 | 1997-06-23 | 1998-06-23 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 88958 | 2002-06-22 | 9999-01-01 | +--------+--------+------------+------------+17 baris dalam set ( 0.03 saat) 

Sekarang bagaimana jika kita perlu melihat 5 terbaru menimbulkan? Kita boleh lakukan Pesan oleh dari_date desc. The Desc Kata kunci menunjukkan bahawa kami ingin menyusun hasil yang ditetapkan dalam urutan menurun.

Di samping itu, Had 5 membolehkan kita kembali ke bahagian atas 5 baris dalam set keputusan:

Mariadb [Pekerja]> Pilih * dari gaji di mana emp_no = 10001 order oleh from_date desc had 5; +--------+--------+------------+------------+ | emp_no | Gaji | dari_date | to_date | +--------+--------+------------+------------+| 10001 | 88958 | 2002-06-22 | 9999-01-01 | | 10001 | 85097 | 2001-06-22 | 2002-06-22 | | 10001 | 85112 | 2000-06-22 | 2001-06-22 | | 10001 | 84917 | 1999-06-23 | 2000-06-22 | | 10001 | 81097 | 1998-06-23 | 1999-06-23 | +--------+--------+------------+------------+5 baris dalam set ( 0.00 saat) 
Pertanyaan mysql jadual mengikut pesanan tarikh

Anda juga boleh menggunakan PERINTAH OLEH dengan pelbagai bidang. Sebagai contoh, pertanyaan berikut akan memerintahkan set keputusan berdasarkan tarikh lahir pekerja dalam bentuk menaik (lalai) dan kemudian dengan nama terakhir dalam bentuk abjad abjad:

Mariadb [Pekerja]> Pilih CONCAT (last_name, ',', first_name) sebagai nama, jantina sebagai jantina, hire_date sebagai "tarikh sewa" dari perintah pekerja oleh BIRTH_DATE, last_name desc had 10; +--------------------+--------+------------+ | Nama | Jantina | Tarikh Sewa | +--------------------+--------+------------+| Whitcomb, Kiyokazu | M | 1988-07-26 | | Schaad, Ronghao | M | 1988-07-10 | | Remmele, Supot | M | 1989-01-27 | | Pocchiola, Jouni | M | 1985-03-10 | | Kuzuoka, Eishiro | M | 1992-02-12 | | Decaestecker, Moni | M | 1986-10-06 | | Wiegley, Mircea | M | 1985-07-18 | | Vendrig, Sachar | M | 1985-11-04 | | Tsukuda, Cedric | F | 1993-12-12 | | Tischendorf, Percy | M | 1986-11-10 | +--------------------+--------+------------+10 baris dalam set (0.31 saat) 
Pertanyaan mysql jadual mengikut tarikh lahir

Anda boleh melihat lebih banyak maklumat mengenai HAD di sini.

Rekod Pengumpulan / Max, Min, AVG, dan Pusingan

Seperti yang telah kami sebutkan tadi, gaji Jadual mengandungi pendapatan setiap pekerja dari masa ke masa. Selain HAD, kita boleh menggunakan Maks dan Min Kata kunci untuk menentukan apabila bilangan pekerja maksimum dan minimum telah diupah:

Mariadb [Pekerja]> Pilih Concat (last_name, ',', first_name) sebagai nama, max (b.gaji) sebagai "maksimum. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; +-----------------+-------------+ | Nama | Maks. Gaji | +-----------------+-------------+| FACELLO, GEORGI | 88958 | | Simmel, Bezalel | 72527 | | Bamford, Parto | 43699 | +-----------------+-------------+3 baris dalam set (0.02 saat) Mariadb [Pekerja]> Pilih Concat (last_name, ',', first_name) sebagai nama, min (b.gaji) sebagai "min. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; +-----------------+-------------+ | Nama | Min. Gaji | +-----------------+-------------+| FACELLO, GEORGI | 60117 | | Simmel, Bezalel | 65828 | | Bamford, Parto | 40006 | +-----------------+-------------+3 baris dalam set (0.00 saat) 
Mengumpulkan Rekod MySQL Menggunakan Kata Kunci Max dan Min

Berdasarkan set hasil di atas, bolehkah anda meneka apa pertanyaan di bawah akan kembali?

Mariadb [Pekerja]> Pilih Concat (last_name, ',', first_name) sebagai nama, bulat (avg (b.gaji), 2) sebagai "avg. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; +-----------------+-------------+ | Nama | Avg. Gaji | +-----------------+-------------+| FACELLO, GEORGI | 75388.94 | | Simmel, Bezalel | 68854.50 | | Bamford, Parto | 43030.29 | +-----------------+-------------+3 baris dalam set (0.01 saat) 

Sekiranya anda bersetuju bahawa ia akan mengembalikan purata (seperti yang ditentukan oleh Avg) Gaji dari masa ke masa kepada 2 perpuluhan (seperti yang ditunjukkan oleh Bulat), anda betul.

Sekiranya kita ingin melihat jumlah gaji yang dikelompokkan oleh pekerja dan mengembalikan bahagian atas 5, Kita boleh menggunakan pertanyaan berikut:

Mariadb [Pekerja]> Pilih emp_no, jumlah (gaji) sebagai gaji dari kumpulan gaji dengan urutan emp_no mengikut had gaji DESC 5; +--------+---------+ | emp_no | Gaji | +--------+---------+| 109334 | 2553036 | | 43624 | 2492873 | | 66793 | 2383923 | | 237542 | 2381119 | | 47978 | 2374024 | +--------+---------+5 baris dalam set (2.22 saat) 

Dalam pertanyaan di atas, gaji dikumpulkan oleh pekerja dan kemudian jumlahnya dilakukan.

Membawa semuanya bersama

Nasib baik, kita tidak perlu menjalankan pertanyaan selepas pertanyaan untuk menghasilkan laporan. Sebaliknya, kita boleh membuat skrip dengan satu siri arahan SQL untuk mengembalikan semua set hasil yang diperlukan.

Sebaik sahaja kami melaksanakan skrip, ia akan mengembalikan maklumat yang diperlukan tanpa campur tangan selanjutnya di pihak kami. Contohnya, mari buat fail bernama MaxMinavg.SQL Dalam direktori kerja semasa dengan kandungan berikut:

--Pilih pangkalan data menggunakan pekerja; -Mengira gaji maksimum pilih Concat (last_name, ',', first_name) sebagai nama, max (b.gaji) sebagai "maksimum. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; -Mengira gaji minimum pilih Concat (last_name, ',', first_name) sebagai nama, min (b.gaji) sebagai "min. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; -Mengira purata, bulat ke 2 tempat perpuluhan pilih concat (last_name, ',', first_name) sebagai nama, bulat (avg (b.gaji), 2) sebagai "avg. Gaji "dari Pekerja A menyertai gaji B di a.emp_no = b.emp_no di mana a.emp_no dalam (10001, 10002, 10003) kumpulan oleh a.emp_no; 

Garis bermula dengan dua sengkang diabaikan, dan pertanyaan individu dilaksanakan satu demi satu. Kami boleh melaksanakan skrip ini sama ada dari baris arahan Linux:

# mysql -u empadmin -p < maxminavg.sql Masukkan kata laluan:  Namakan Max. Gaji Facello, Georgi 88958 Simmel, Bezalel 72527 Bamford, Parto 43699 Nama Min. Gaji Facello, Georgi 60117 Simmel, Bezalel 65828 Bamford, Parto 40006 Nama AVG. Gaji Facello, Georgi 75388.94 Simmel, Bezalel 68854.50 Bamford, Parto 43030.29 

atau dari ganjaran MariaDB:

# mysql -u empadmin -p Masukkan Kata Laluan: Selamat Datang ke Monitor MariaDB. Perintah berakhir dengan; atau \ g. ID sambungan MariaDB anda ialah 4 versi pelayan: 10.1.Hak Cipta Pelayan MariaDB 14-Mariadb (c) 2000, 2016, Oracle, Mariadb Corporation AB dan lain-lain. Taipkan 'bantuan;' atau '\ h' untuk mendapatkan bantuan. Taipkan '\ c' untuk membersihkan pernyataan input semasa. Mariadb [(Tiada)]>> Sumber MaxMinavg.SQL Maklumat jadual membaca untuk menyelesaikan nama dan nama lajur, anda boleh mematikan ciri ini untuk mendapatkan permulaan yang lebih cepat dengan -a pangkalan data berubah 
Skrip Mysql untuk menjalankan arahan SQL

Ringkasan

Dalam artikel ini, kami telah menjelaskan cara menggunakan beberapa fungsi MariaDB untuk memperbaiki set keputusan yang dikembalikan oleh Pilih pernyataan. Sebaik sahaja mereka telah ditakrifkan, pelbagai pertanyaan individu boleh dimasukkan ke dalam skrip untuk melaksanakannya dengan lebih mudah dan mengurangkan risiko kesilapan manusia.

Adakah anda mempunyai sebarang pertanyaan atau cadangan mengenai artikel ini? Jangan ragu untuk menggugurkan nota kami menggunakan borang komen di bawah. Kami berharap untuk mendengar daripada anda!