Pelajari Cara Menggunakan Beberapa Fungsi MySQL dan MariaDB - Bagian 2
- 4880
- 555
- Luis Baumbach
Ini adalah bagian kedua dari seri 2-artikel tentang hal-hal penting Mariadb / mysql perintah. Silakan merujuk ke artikel kami sebelumnya tentang topik ini sebelum melanjutkan.
- Pelajari Dasar -Dasar MySQL/MariaDB untuk Pemula - Bagian 1
Di bagian kedua dari seri pemula MySQL/MariaDB ini, kami akan menjelaskan bagaimana membatasi jumlah baris yang dikembalikan oleh a PILIH permintaan, dan cara memesan hasil yang ditetapkan berdasarkan kondisi yang diberikan.
Selain itu, kami akan belajar cara mengelompokkan catatan dan melakukan manipulasi matematika dasar pada bidang numerik. Semua ini akan membantu kami membuat skrip SQL yang dapat kami gunakan untuk menghasilkan laporan yang bermanfaat.
Prasyarat
Untuk memulai, ikuti langkah -langkah ini:
1. Unduh karyawan
sampel database, yang mencakup enam tabel yang terdiri dari 4 Juta Catatan Total.
# wget https: // launchpad.net/test-db/karyawan-db-1/1.0.6/+unduh/karyawan_db-full-1.0.6.ter.bz2 # tar xjf karyawan_db-full-1.0.6.ter.bz2 # cd karyawan_db
2. Masukkan Mariadb Prompt dan Buat Database bernama karyawan:
# mysql -u root -p Masukkan Kata Sandi: Selamat datang di monitor mariadb. Perintah diakhiri dengan; atau \ g. ID koneksi mariadb Anda adalah 2 Versi Server: 10.1.14-Mariadb Mariadb Server Hak Cipta (C) 2000, 2016, Oracle, Mariadb Corporation AB dan Lainnya. Ketik 'bantuan;' atau '\ h' untuk bantuan. Ketik '\ c' untuk menghapus pernyataan input saat ini. Mariadb [(tidak ada)]> Membuat karyawan basis data; Kueri ok, 1 baris terpengaruh (0.00 detik)
3. Impor ke server mariadb Anda sebagai berikut:
Mariadb [(tidak ada)]> Sumber karyawan.SQL
Tunggu 1-2 menit sampai database sampel dimuat (perlu diingat 4m Catatan di sini!).
4. Verifikasi bahwa database diimpor dengan benar dengan mendaftarkan tabelnya:
Mariadb [Karyawan]> Menggunakan karyawan; Database berubah Mariadb [Karyawan]> Tabel tabel; +---------------------+ | Tabel_in_employees | + ---------------------+ | departemen | | DEPT_EMP | | Dept_Manager | | Karyawan | | Gaji | | Judul | + ---------------------+ 6 baris di set (0.02 detik)
5. Buat akun khusus untuk digunakan dengan karyawan Database (jangan ragu untuk memilih nama dan kata sandi akun lain):
Mariadb [Karyawan]> Buat pengguna [email dilindungi] yang diidentifikasi oleh 'empadminpass'; Permintaan ok, 0 baris terpengaruh (0.03 detik) Mariadb [Karyawan]> Berikan semua hak istimewa pada karyawan.* ke [email dilindungi]; Permintaan ok, 0 baris terpengaruh (0.02 detik) Mariadb [Karyawan]> Hak istimewa flush; Permintaan ok, 0 baris terpengaruh (0.00 detik) Mariadb [Karyawan]> KELUAR Selamat tinggal
Sekarang login sebagai Empadmin pengguna ke mariadb prompt.
# mysql -u empadmin -p Masukkan Kata Sandi: Selamat datang di monitor mariadb. Perintah diakhiri dengan; atau \ g. ID koneksi mariadb Anda adalah 4 Server Versi: 10.1.14-Mariadb Mariadb Server Hak Cipta (C) 2000, 2016, Oracle, Mariadb Corporation AB dan Lainnya. Ketik 'bantuan;' atau '\ h' untuk bantuan. Ketik '\ c' untuk menghapus pernyataan input saat ini. Mariadb [(tidak ada)]> Menggunakan karyawan; Membaca Informasi Tabel Untuk Menyelesaikan Nama Tabel dan Kolom Anda dapat mematikan fitur ini untuk mendapatkan startup yang lebih cepat dengan -a database diubahPelajari Perintah MySQL Dasar untuk Pemula
Pastikan semua langkah yang diuraikan dalam gambar di atas telah selesai sebelum melanjutkan.
Memesan dan membatasi jumlah baris dalam set hasil
Tabel Gaji berisi semua pendapatan dari setiap karyawan dengan tanggal awal dan akhir. Kami mungkin ingin melihat gaji emp_no = 10001
lembur. Ini akan membantu menjawab pertanyaan berikut:
- Apakah dia mendapatkan kenaikan gaji?
- Jika demikian, kapan?
Jalankan kueri berikut untuk mencari tahu:
Mariadb [Karyawan]> Pilih * dari gaji di mana emp_no = 10001 pesanan oleh from_date; +--------+--------+------------+------------+ | emp_no | Gaji | from_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 di set ( 0.03 detik)
Sekarang bagaimana jika kita perlu melihat 5 kenaikan gaji terbaru? Kita bisa Pesanan oleh from_date desc. Itu Desc Kata kunci menunjukkan bahwa kami ingin mengurutkan hasil yang ditetapkan dalam urutan menurun.
Selain itu, Batas 5 memungkinkan kami untuk hanya mengembalikan bagian atas 5 Baris di set hasil:
Mariadb [Karyawan]> Pilih * dari gaji di mana emp_no = 10001 pesanan oleh from_date desc limit 5; +--------+--------+------------+------------+ | emp_no | Gaji | from_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 di set ( 0.00 detik)Permintaan tabel mysql berdasarkan pesanan tanggal
Anda juga bisa menggunakan DIPESAN OLEH dengan banyak bidang. Misalnya, kueri berikut akan memesan hasil yang ditetapkan berdasarkan tanggal lahir karyawan dalam bentuk menaik (default) dan kemudian dengan nama belakang dalam bentuk turun alfabet:
Mariadb [Karyawan]> Pilih concat (last_name, ',', first_name) sebagai nama, jenis kelamin sebagai jenis kelamin, hire_date sebagai "tanggal sewa" dari pesanan karyawan oleh birth_date, last_name desc limit 10; +--------------------+--------+------------+ | Nama | Jenis kelamin | Tanggal 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 detik)Query mysql tabel berdasarkan tanggal lahir
Anda dapat melihat lebih banyak informasi tentang MEMBATASI Di Sini.
Pengelompokan Catatan / Max, Min, AVG, dan Round
Seperti yang kami sebutkan sebelumnya, gaji
Tabel berisi pendapatan setiap karyawan dari waktu ke waktu. Di samping itu MEMBATASI, kita bisa menggunakan Max Dan Min Kata kunci untuk menentukan kapan jumlah maksimum dan minimum karyawan dipekerjakan:
Mariadb [Karyawan]> Pilih concat (last_name, ',', first_name) sebagai name, max (b.gaji) sebagai "maks. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no; +-----------------+-------------+ | Nama | Max. Gaji | +-----------------+-------------+| Facello, Georgi | 88958 | | Simmel, Bezalel | 72527 | | Bamford, Parto | 43699 | +-----------------+-------------+3 baris dalam set (0.02 detik) Mariadb [Karyawan]> Pilih concat (last_name, ',', first_name) sebagai nama, min (b.gaji) sebagai "min. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no; +-----------------+-------------+ | Nama | Min. Gaji | +-----------------+-------------+| Facello, Georgi | 60117 | | Simmel, Bezalel | 65828 | | Bamford, Parto | 40006 | +-----------------+-------------+3 baris dalam set (0.00 detik)Mengelompokkan catatan MySQL menggunakan kata kunci maks dan min
Berdasarkan set hasil di atas, dapatkah Anda menebak apa kueri di bawah ini akan kembali?
Mariadb [Karyawan]> Pilih concat (last_name, ',', first_name) sebagai name, round (rata -rata (b.gaji), 2) sebagai "rata -rata. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no; +-----------------+-------------+ | Nama | Rata -rata. Gaji | +-----------------+-------------+| Facello, Georgi | 75388.94 | | Simmel, Bezalel | 68854.50 | | Bamford, Parto | 43030.29 | +-----------------+-------------+3 baris dalam set (0.01 detik)
Jika Anda setuju bahwa itu akan mengembalikan rata -rata (sebagaimana ditentukan oleh Rata -rata) gaji dari waktu ke waktu bulat menjadi 2 desimal (seperti yang ditunjukkan oleh BULAT), kamu benar.
Jika kita ingin melihat jumlah gaji yang dikelompokkan oleh karyawan dan mengembalikan bagian atas 5, kita dapat menggunakan kueri berikut:
Mariadb [Karyawan]> SELECT EMP_NO, SUM (gaji) sebagai gaji dari grup gaji dengan emp_no order berdasarkan batas gaji batas 5; +--------+---------+ | emp_no | Gaji | +--------+---------+| 109334 | 2553036 | | 43624 | 2492873 | | 66793 | 2383923 | | 237542 | 2381119 | | 47978 | 2374024 | +--------+---------+5 baris dalam set (2.22 detik)
Dalam kueri di atas, gaji dikelompokkan oleh karyawan dan kemudian jumlahnya dilakukan.
Menyatukan semuanya
Untungnya, kami tidak perlu menjalankan kueri setelah kueri untuk menghasilkan laporan. Sebaliknya, kita dapat membuat skrip dengan serangkaian perintah SQL untuk mengembalikan semua set hasil yang diperlukan.
Setelah kami menjalankan skrip, itu akan mengembalikan informasi yang diperlukan tanpa intervensi lebih lanjut dari pihak kami. Misalnya, mari kita buat file bernama MAXMINAVG.SQL Di direktori kerja saat ini dengan konten berikut:
--Pilih Database Gunakan Karyawan; -menghitung gaji maksimum pilih concat (last_name, ',', first_name) sebagai nama, maks (b.gaji) sebagai "maks. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no; -menghitung gaji minimum pilih concat (last_name, ',', first_name) sebagai nama, min (b.gaji) sebagai "min. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no; --Balculate rata-rata, putaran ke 2 tempat desimal pilih concat (last_name, ',', first_name) sebagai name, round (rata-rata (b.gaji), 2) sebagai "rata -rata. gaji "dari karyawan A bergabung dengan gaji B pada a.emp_no = b.emp_no di mana a.emp_no di (10001, 10002, 10003) grup oleh a.emp_no;
Baris yang dimulai dengan dua tanda hubung diabaikan, dan permintaan individu dieksekusi satu demi satu. Kami dapat menjalankan skrip ini baik dari baris perintah Linux:
# mysql -u empadmin -p < maxminavg.sql Masukkan kata kunci: Nama Max. Gaji Facello, Georgi 88958 Simmel, Bezalel 72527 Bamford, Parto 43699 Min. Gaji Facello, Georgi 60117 Simmel, Bezalel 65828 Bamford, Parto 40006 Nama AVG. Facello Gaji, Georgi 75388.94 Simmel, Bezalel 68854.50 Bamford, Parto 43030.29
atau dari permintaan Mariadb:
# mysql -u empadmin -p Masukkan Kata Sandi: Selamat datang di monitor mariadb. Perintah diakhiri dengan; atau \ g. ID koneksi mariadb Anda adalah 4 Server Versi: 10.1.14-Mariadb Mariadb Server Hak Cipta (C) 2000, 2016, Oracle, Mariadb Corporation AB dan Lainnya. Ketik 'bantuan;' atau '\ h' untuk bantuan. Ketik '\ c' untuk menghapus pernyataan input saat ini. Mariadb [(tidak ada)]> Sumber MaxMinavg.SQL Membaca Informasi Tabel Untuk Menyelesaikan Nama Tabel dan Kolom Anda dapat mematikan fitur ini untuk mendapatkan startup yang lebih cepat dengan -a database diubahSkrip mysql untuk menjalankan perintah sql
Ringkasan
Dalam artikel ini kami telah menjelaskan cara menggunakan beberapa fungsi Mariadb untuk memperbaiki set hasil yang dikembalikan oleh PILIH pernyataan. Setelah mereka menetapkan, beberapa kueri individu dapat dimasukkan ke dalam skrip untuk melaksanakannya dengan lebih mudah dan untuk mengurangi risiko kesalahan manusia.
Apakah Anda memiliki pertanyaan atau saran tentang artikel ini? Jangan ragu untuk memberi kami catatan menggunakan formulir komentar di bawah ini. Kami menantikan kabar dari Anda!
- « Cara menginstal nginx, mariadb 10, php 7 (lemp stack) di 16.10/16.04
- Pelajari cara menghasilkan dan memverifikasi file dengan md5 checksum di linux »