Pelajari Mysql / Mariadb untuk Pemula - Bagian 1
- 2824
- 551
- Ian Parker
Dalam artikel ini kami akan menunjukkan cara membuat database (juga dikenal sebagai skema), tabel (dengan tipe data), dan menjelaskan cara melakukan Bahasa manipulasi data (DML) Operasi dengan data pada a Mysql / Mariadb server.
Diasumsikan bahwa Anda sebelumnya 1) menginstal paket yang diperlukan pada sistem Linux Anda, dan 2) dieksekusi mysql_secure_installation untuk meningkatkan keamanan server database. Jika tidak, ikuti panduan di bawah ini untuk menginstal server mysql/mariadb.
- Instal database MySQL terbaru di sistem Linux
- Instal basis data mariadb terbaru di sistem linux
Untuk singkatnya, kami akan merujuk Mariadb Secara eksklusif di seluruh artikel ini, tetapi konsep dan perintah yang diuraikan di sini berlaku untuk Mysql demikian juga.
Bagian 1: Pelajari mysql / mariadb untuk pemula Bagian 2: Pelajari cara menggunakan beberapa fungsi mysql dan mariadbMembuat basis data, tabel, dan pengguna yang berwenang
Seperti yang Anda ketahui, database dapat didefinisikan secara sederhana sebagai kumpulan informasi yang terorganisir. Khususnya, Mariadb adalah sistem manajemen basis data relasional (Rdbms) dan menggunakan bahasa kueri struktur untuk melakukan operasi pada database. Selain itu, perlu diingat bahwa Mariadb menggunakan istilah database dan skema secara bergantian.
Untuk menyimpan informasi yang terus -menerus dalam database, kami akan menggunakan tabel Barisan data toko itu. Seringkali, dua atau lebih tabel akan terkait satu sama lain dalam beberapa cara. Itu adalah bagian dari organisasi yang menjadi ciri penggunaan database relasional.
Membuat database baru
Untuk membuat database baru bernama Booksdb
, Masukkan prompt mariadb dengan perintah berikut (Anda akan diminta untuk memasukkan kata sandi untuk pengguna root mariadb):
[[Email Dilindungi] ~]# 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)]> Buat BookStoredB Database; Kueri ok, 1 baris terpengaruh (0.00 dtk) mariadb [(tidak ada)]>
Setelah database dibuat, kita perlu membuat setidaknya dua tabel di atasnya. Tapi pertama -tama mari kita jelajahi konsep tipe data.
Memperkenalkan tipe data Mariadb
Seperti yang kami jelaskan sebelumnya, tabel adalah objek database di mana kami akan menyimpan informasi yang terus -menerus. Setiap tabel terdiri dari dua atau lebih bidang (juga dikenal sebagai kolom) dari tipe data yang diberikan (jenis informasi) yang dapat disimpan oleh bidang tersebut.
Jenis data yang paling umum di MariaDB adalah sebagai berikut (Anda dapat berkonsultasi dengan daftar lengkap dalam dokumentasi online MariaDB resmi):
Numeric:
- Boolean menganggap 0 sebagai false dan nilai lainnya sebagai benar.
- Tinyint, Jika digunakan dengan ditandatangani, menutupi kisaran dari -128 hingga 127, sedangkan rentang yang tidak ditandatangani adalah 0 hingga 255.
- Smallint, Jika digunakan dengan ditandatangani, sampul kisaran dari -32768 hingga 32767. Kisaran yang tidak ditandatangani adalah 0 hingga 65535.
- Int, Jika digunakan dengan unsigned, tutupi kisaran dari 0 hingga 4294967295, dan -2147483648 hingga 2147483647 Sebaliknya.
Catatan: Di Tinyint, Smallint, dan Int, Default yang Ditandatangani Diasumsikan.
Ganda (m, d), Di mana M adalah jumlah total digit dan D adalah jumlah digit setelah titik desimal, mewakili angka floating-point presisi ganda. Jika tidak ditandatangani ditentukan, nilai negatif tidak diperbolehkan.
Rangkaian:
- Varchar (M) mewakili string panjang variabel di mana M adalah panjang kolom maksimum yang diizinkan dalam byte (65.535 secara teori). Dalam kebanyakan kasus, jumlah byte identik dengan jumlah karakter, kecuali untuk beberapa karakter yang dapat mengambil sebanyak 3 byte. Misalnya, huruf Spanyol ñ mewakili satu karakter tetapi mengambil 2 byte.
- Teks (m) mewakili kolom dengan panjang maksimum 65.535 karakter. Namun, seperti yang terjadi dengan Varchar (M), Panjang maksimum aktual dikurangi jika karakter multi-byte disimpan. Jika M ditentukan, kolom dibuat sebagai tipe terkecil yang dapat menyimpan jumlah karakter seperti itu.
- MediumText (M) Dan LongText (M) mirip dengan Teks (m), Hanya bahwa panjang maksimum yang diizinkan adalah 16.777.215 dan 4.294.967.295 karakter, masing -masing.
Tanggal dan waktu:
- TANGGAL mewakili tanggal masuk Yyyy-mm-dd format.
- WAKTU mewakili waktu masuk HH: MM: SS.SSS format (jam, menit, detik, dan milidetik).
- TANGGAL WAKTU adalah kombinasi dari TANGGAL Dan WAKTU di dalam Yyyy-mm-dd hh: mm: ss format.
- Cap waktu digunakan untuk menentukan saat baris ditambahkan atau diperbarui.
Setelah meninjau tipe data ini, Anda akan berada di posisi yang lebih baik untuk menentukan tipe data mana yang perlu Anda tetapkan ke kolom yang diberikan dalam tabel.
Misalnya, nama seseorang dapat dengan mudah masuk ke dalam Varchar (50), sedangkan posting blog akan membutuhkan a TEKS ketik (pilih M Sesuai kebutuhan spesifik Anda).
Membuat tabel dengan kunci primer dan asing
Sebelum kita terjun membuat tabel, ada dua konsep mendasar tentang database relasional yang perlu kita ulas: utama Dan luar negeri kunci.
A kunci utama berisi nilai yang secara unik mengidentifikasi setiap baris, atau merekam, dalam tabel. Di sisi lain, a kunci asing digunakan untuk membuat tautan antara data dalam dua tabel, dan untuk mengontrol data yang dapat disimpan dalam tabel di mana kunci asing berada. Kunci primer dan asing umumnya adalah ints.
Untuk mengilustrasikan, mari kita gunakan BookStoredb
dan membuat dua tabel bernama Authorstbl
Dan Bookstbl
sebagai berikut. Itu Bukan nol Kendala menunjukkan bahwa bidang yang terkait membutuhkan nilai selain BATAL.
Juga, Auto_increment digunakan untuk meningkat dengan satu nilai Int Kolom kunci utama saat catatan baru dimasukkan ke dalam tabel.
Mariadb [(tidak ada)]> Gunakan BookStoredB; Mariadb [(tidak ada)]> Buat tabel AuthorSTBL (otorid int not null auto_increment, authorname varchar (100), kunci primer (otorid)); Mariadb [(tidak ada)]> Buat Table Bookstbl (BookID int not null auto_increment, Bookname varchar (100) bukan null, otorid int not null, bookprice desimal (6,2) bukan nol, booklastupdated timestamp, bookisvailable boolean, kunci utama (bookid), kunci asing (otorid) Referensi AuthorSTBL (AuthorID));Buat tabel mysql dengan kunci primer dan asing
Mariadb [(tidak ada)]> Gunakan BookStoredB; Database mengubah mariadb [bookstoredb]> Buat tabel AuthorSTBL ( -> otorid int not null auto_increment, -> authorname varchar (100), -> kunci primer (otorid) ->); Permintaan ok, 0 baris terpengaruh (0.05 dtk) mariadb [bookstoredb]> Buat Table Bookstbl ( -> bookId int not null auto_increment, -> bookname varchar (100) not null, -> otorid int not null, -> bookprice decimal (6,2) not null, -> bookLastupdated timestamp, -> bookisavailable boolean, bookisable boolean, -> bookLastupdated stempt, -> bookisavailable boolean bookisable bookisable bookisable bookisabel , -> Kunci utama (BookID), -> Kunci Asing (AuthorID) Referensi AuthorSTBL (AuthorID) ->); Permintaan ok, 0 baris terpengaruh (0.05 dtk) mariadb [bookstoredb]>
Sekarang kita bisa melanjutkan dan mulai memasukkan catatan ke Authorstbl
Dan Bookstbl
.
Memilih, memasukkan, memperbarui, dan menghapus baris
Pertama -tama kita akan mengisi Authorstbl
meja. Mengapa? Karena kita perlu memiliki nilai untuk Authorid
sebelum memasukkan catatan ke Bookstbl.
Jalankan kueri berikut dari prompt mariadb Anda:
Mariadb [bookstoredb]> masukkan ke dalam woritstbl (authorname) values ('agatha christie'), ('stephen king'), ('paulo coelho');
Setelah itu, kami akan memilih semua catatan dari Authorstbl. Ingatlah kita akan membutuhkan Authorid untuk setiap catatan untuk membuat MENYISIPKAN permintaan untuk Bookstbl.
Jika Anda ingin mengambil satu catatan pada satu waktu, Anda dapat menggunakan a DI MANA Klausul untuk menunjukkan suatu kondisi yang harus dipenuhi oleh barisan untuk dikembalikan. Misalnya,
Mariadb [bookstoredb]> SELECT * DARI AUTHORSTBL WHERE AUTHORNAME = "Agatha Christie";
Atau, Anda dapat memilih semua catatan secara bersamaan:
Mariadb [bookstoredb]> SELECT * DARI AUTHORSTBL;Pilih dan Permintaan Catatan di MySQL
Mariadb [bookstoredb]> SELECT * DARI AUTHORSTBL WHERE AUTHORNAME = "Agatha Christie"; +----------+-----------------+ | Authorid | Authorname | +----------+-----------------+| 1 | Agatha Christie | +----------+-----------------+1 baris di set (0.00 dtk) mariadb [bookstoredb]> SELECT * DARI AUTHORSTBL; +----------+-----------------+ | Authorid | Authorname | +----------+-----------------+| 1 | Agatha Christie | | 2 | Stephen King | | 3 | Paulo Coelho | +----------+-----------------+3 baris dalam set (0.00 dtk) mariadb [bookstoredb]>Pilih dan query a string di database MySQL
Sekarang mari kita buat MENYISIPKAN permintaan untuk Bookstbl, menggunakan yang sesuai Authorid untuk mencocokkan penulis setiap buku. Nilai 1 di dalam Bookisavailable menunjukkan buku ini tersedia, 0 jika tidak:
Mariadb [bookstoredb]> Sisipkan ke BookStBL (Bookname, Authorid, BookPrice, BookIsavailable) Values ('Dan kemudian tidak ada', 1, 14.95, 1), ('The Man in the Brown Suit', 1, 23.99, 1), ('The Stand', 2, 35.99, 1), ('Pet Sematary', 2, 17.95, 0), ('The Green Mile', 2, 29.99, 1), ('The Alchemist', 3, 25, 1), ('oleh sungai Piedra I duduk dan menangis', 3, 18.95, 0);Masukkan kueri di tabel mysql
Mariadb [bookstoredb]> Sisipkan ke BookStBL (Bookname, Authorid, BookPrice, BookIsAvailable) -> Values ('dan kemudian tidak ada', 1, 14.95, 1), -> ('The Man in the Brown Suit', 1, 23.99, 1), -> ('The Stand', 2, 35.99, 1), -> ('Pet Sematary', 2, 17.95, 0), -> ('The Green Mile', 2, 29.99, 1), -> ('The Alchemist', 3, 25, 1), -> ('oleh sungai Piedra I duduk dan menangis', 3, 18.95, 0); Kueri ok, 7 baris terpengaruh (0.03 dtk) Catatan: 7 Duplikat: 0 Peringatan: 0
Pada titik ini kami akan melakukan a PILIH untuk melihat catatan masuk Bookstbl. Lalu ayo MEMPERBARUI harga “Alkemis" oleh Paulo Coelho Dan PILIH Catatan spesifik itu lagi.
Perhatikan bagaimana BookLastupdated Bidang sekarang menunjukkan nilai yang berbeda. Seperti yang kami jelaskan sebelumnya, a Cap waktu Bidang menunjukkan nilai saat catatan dimasukkan atau terakhir dimodifikasi.
Mariadb [bookstoredb]> Pilih * dari BookStBL; Mariadb [bookstoredb]> Perbarui BookStBl Set BookPrice = 22.75 di mana bookId = 6; Mariadb [bookstoredb]> Pilih * dari BookStBL Where BookID = 6;Masukkan kueri dan perbarui tabel di database MySQL
Mariadb [bookstoredb]> Pilih * dari BookStBL; +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+ | BookID | Bookname | Authorid | Buku buku | BookLastupdated | Bookisavailable | +--------+----------------------------------------- -+----------+-----------+---------------------+--- --------------+ | 1 | Dan kemudian tidak ada | 1 | 14.95 | 2016-10-01 23:31:41 | 1 | | 2 | Pria dalam setelan coklat | 1 | 23.99 | 2016-10-01 23:31:41 | 1 | | 3 | The Stand | 2 | 35.99 | 2016-10-01 23:31:41 | 1 | | 4 | SEMATARY PET | 2 | 17.95 | 2016-10-01 23:31:41 | 0 | | 5 | The Green Mile | 2 | 29.99 | 2016-10-01 23:31:41 | 1 | | 6 | The Alchemist | 3 | 25.00 | 2016-10-01 23:31:41 | 1 | | 7 | Di tepi sungai piedra saya duduk dan menangis | 3 | 18.95 | 2016-10-01 23:31:41 | 0 | +--------+----------------------------------------- -+----------+-----------+---------------------+--- --------------+ 7 baris dalam set (0.00 dtk) mariadb [bookstoredb]> Perbarui BookStBl Set BookPrice = 22.75 di mana bookId = 6; Kueri ok, 1 baris terpengaruh (0.04 dtk) baris yang dicocokkan: 1 Berubah: 1 Peringatan: 0 mariadb [bookstoredb]> Pilih * dari BookStBL Where BookID = 6; +--------+---------------+----------+-----------+---------------------+-----------------+ | BookID | Bookname | Authorid | Buku buku | BookLastupdated | Bookisavailable | +--------+---------------+----------+-----------+- --------------------+ -----------------+ | 6 | The Alchemist | 3 | 22.75 | 2016-10-01 23:35:00 | 1 | +--------+---------------+----------+-----------+- --------------------+ -----------------+ 1 baris di set (0.00 dtk) mariadb [bookstoredb]>Masukkan dan Perbarui Catatan Tabel Basis Data
Meskipun kami tidak akan melakukannya di sini, Anda juga dapat menghapus catatan jika tidak digunakan lagi. Misalnya, anggaplah kita ingin menghapus "Alkemis" dari Bookstbl.
Untuk melakukannya, kami akan menggunakan MENGHAPUS pernyataan sebagai berikut:
Mariadb [bookstoredb]> Hapus dari bookstbl di mana bookId = 6;
Seperti dalam kasus MEMPERBARUI, Ide yang bagus untuk melakukan a PILIH pertama untuk melihat catatan yang berpotensi dipengaruhi oleh MENGHAPUS.
Juga, jangan lupa untuk menambahkan DI MANA klausa dan kondisi (BookId = 6) untuk memilih catatan spesifik yang akan dihapus. Jika tidak, Anda berisiko menghapus semua baris di tabel!
Jika Anda ingin menggabungkan dua (atau lebih) bidang, Anda dapat menggunakan Concat penyataan. Sebagai contoh, katakanlah kami ingin mengembalikan set hasil yang terdiri dari satu bidang dengan nama buku dan penulis dalam bentuk “The Alchemist (Paulo Coelho)”Dan kolom lainnya dengan harga.
Ini akan membutuhkan a BERGABUNG di antara Authorstbl Dan Bookstbl di bidang umum yang dibagikan oleh kedua tabel (Authorid):
Mariadb [bookstoredb]> Pilih Concat (BookstBL.Bookname, '(', AuthorstBL.Authorname, ')') sebagai deskripsi, bookstbl.BookPrice dari Authorstbl bergabung dengan BookStBL di AuthorstBL.AUTHORID = BOOKSTBL.Authorid;
Seperti yang bisa kita lihat, Concat memungkinkan kami untuk bergabung dengan beberapa ekspresi string yang dipisahkan oleh koma. Anda juga akan memperhatikan bahwa kami memilih alias Keterangan untuk mewakili set hasil gabungan.
Output dari kueri di atas ditampilkan pada gambar di bawah:
Meminta beberapa bidang di tabel MySQLMariadb [bookstoredb]> Pilih Concat (BookstBL.Bookname, '(', AuthorstBL.Authorname, ')') sebagai deskripsi, bookstbl.BookPrice dari Authorstbl bergabung dengan BookStBL di AuthorstBL.AUTHORID = BOOKSTBL.Authorid; +--------------------------------------------------------+-----------+ | Deskripsi | Buku buku | +------------------------------------------------- -------+ -----------+ | Dan kemudian tidak ada (Agatha Christie) | 14.95 | | The Man in the Brown Suit (Agatha Christie) | 23.99 | | The Stand (Stephen King) | 35.99 | | Pet Sematary (Stephen King) | 17.95 | | The Green Mile (Stephen King) | 29.99 | | The Alchemist (Paulo Coelho) | 25.00 | | Oleh sungai Piedra I duduk dan menangis (Paulo Coelho) | 18.95 | +------------------------------------------------- -------+ -----------+ 7 baris di set (0.00 detik)Permintaan beberapa bidang dalam tabel database
Buat Pengguna untuk Mengakses Basis Data BookStoredB
Menggunakan akar untuk melakukan semua DML Operasi dalam database adalah ide yang buruk. Untuk menghindari ini, kita dapat membuat yang baru Mariadb Akun Pengguna (Kami akan menamainya BookStoreUser) dan tetapkan semua izin yang diperlukan untuk BookStoredb:
Mariadb [bookstoredb]> Buat pengguna [email dilindungi] yang diidentifikasi oleh 'yourpasswordhere'; Mariadb [bookstoredb]> Berikan semua hak istimewa di BookStoredb.* ke [email dilindungi]; Mariadb [bookstoredb]> Hak istimewa flush;Buat pengguna database baru dengan hak istimewa
Mariadb [bookstoredb]> Buat pengguna [email dilindungi] yang diidentifikasi oleh 'tecmint'; Permintaan ok, 0 baris terpengaruh (0.00 dtk) mariadb [bookstoredb]> Berikan semua hak istimewa di BookStoredb.* ke [email dilindungi]; Permintaan ok, 0 baris terpengaruh (0.00 dtk) mariadb [bookstoredb]> Hak istimewa flush; Permintaan ok, 0 baris terpengaruh (0.00 detik)
Memiliki pengguna yang berdedikasi dan terpisah untuk setiap database akan mencegah kerusakan pada seluruh database jika satu akun menjadi terganggu.
Tips MySQL ekstra
Untuk membersihkan Mariadb prompt, ketik perintah berikut dan tekan Memasuki:
Mariadb [bookstoredb]> \! jernih
Untuk memeriksa konfigurasi tabel yang diberikan, lakukan:
Mariadb [bookstoredb]> Pilih kolom di [nama tabel di sini];
Misalnya,
Mariadb [bookstoredb]> Tampilkan kolom di BookStBL;Daftar kolom dalam tabel database
Mariadb [bookstoredb]> Tampilkan kolom di BookStBL; +-----------------+--------------+------+-----+-------------------+-----------------------------+ | Bidang | Ketik | Null | Kunci | Default | Ekstra | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ | BookID | int (11) | Tidak | Pri | Null | auto_increment | | Bookname | Varchar (100) | Tidak | | Null | | | Authorid | int (11) | Tidak | Mul | Null | | | Buku buku | desimal (6,2) | Tidak | | Null | | | BookLastupdated | Timestamp | Tidak | | Current_timestamp | Pada pembaruan Current_Timestamp | | Bookisavailable | Tinyint (1) | Ya | | Null | | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ 6 baris masuk set (0.02 detik)Daftar kolom dalam tabel database
Inspeksi cepat mengungkapkan bahwa Bookisavailable Lapangan mengakui BATAL nilai. Karena kami tidak ingin mengizinkannya, kami akan MENGUBAH Tabel sebagai berikut:
Mariadb [bookstoredb]> Ubah tabel bookstbl memodifikasi bookisavailable boolean not null;
(Jangan ragu untuk menunjukkan kolom lagi - yang disorot YA pada gambar di atas sekarang harus menjadi a TIDAK).
Akhirnya, untuk melihat semua database di server Anda, lakukan:
Mariadb [bookstoredb]> Tampilkan basis data; ATAU Mariadb [bookstoredb]> Tampilkan skema;Sebutkan semua database MySQL
[[Email Dilindungi] ~]# mysql -u bookstoreUser -p Masukkan Kata Sandi: Selamat datang di monitor mariadb. Perintah diakhiri dengan; atau \ g. ID koneksi mariadb Anda adalah 3 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 [bookstoredb]> Tampilkan basis data; +--------------------+ | Database | + --------------------+ | BookStoredB | | Informasi_schema | + --------------------+ 2 baris dalam set (0.00 dtk) mariadb [bookstoredb]> Tampilkan skema; +--------------------+ | Database | + --------------------+ | BookStoredB | | Informasi_schema | + --------------------+ 2 baris dalam set (0.00 detik)
Gambar berikut menunjukkan hasil dari perintah di atas setelah mengakses prompt mariadb sebagai BookStoreUser (Perhatikan bagaimana akun ini tidak dapat "melihat" database apa pun selain BookStoredb Dan Informasi_schema (Tersedia untuk semua pengguna):
Sebutkan semua database MySQLRingkasan
Dalam artikel ini kami telah menjelaskan cara menjalankan DML Operasi dan Cara Membuat Database, Tabel, dan Pengguna Berdedikasi di Basis Data MariaDB. Selain itu, kami membagikan beberapa tips yang mungkin membuat hidup Anda sebagai administrator sistem / basis data lebih mudah.
- Bagian Administrasi Basis Data MySQL - 1
- Bagian Administrasi Basis Data MySQL - 2
- MySQL Performance Tinning and Optimization - Bagian 3
Jika Anda memiliki pertanyaan tentang artikel ini, jangan ragu untuk memberi tahu kami! Jangan ragu untuk menggunakan formulir komentar di bawah ini untuk menghubungi kami.
- « Cara memperluas/mengurangi LVM (manajemen volume logis) di Linux - Bagian II
- Cloudlayar - Perlindungan DNS gratis untuk situs web Anda »