Ketahui Mysql / MariaDB untuk Pemula - Bahagian 1

Ketahui Mysql / MariaDB untuk Pemula - Bahagian 1

Dalam artikel ini kita akan menunjukkan cara membuat pangkalan data (juga dikenali sebagai skema), jadual (dengan jenis data), dan terangkan cara melaksanakan Bahasa manipulasi data (DML) operasi dengan data pada a Mysql / Mariadb pelayan.

Dianggap bahawa anda pernah 1) memasang pakej yang diperlukan pada sistem linux anda, dan 2) dilaksanakan mysql_secure_installation untuk meningkatkan keselamatan pelayan pangkalan data. Jika tidak, ikuti panduan di bawah untuk memasang pelayan MySQL/MariaDB.

  1. Pasang pangkalan data MySQL terkini dalam sistem linux
  2. Pasang pangkalan data MariaDB terkini dalam sistem linux

Untuk keringkasan, kita akan merujuk Mariadb semata -mata sepanjang artikel ini, tetapi konsep dan arahan yang digariskan di sini berlaku untuk Mysql juga.

Bahagian 1: Belajar mysql / mariadb untuk pemula Bahagian 2: Ketahui cara menggunakan beberapa fungsi MySQL dan Mariadb

Membuat pangkalan data, jadual, dan pengguna yang diberi kuasa

Seperti yang anda ketahui, pangkalan data boleh ditakrifkan secara ringkas sebagai pengumpulan maklumat yang teratur. Terutamanya, Mariadb adalah sistem pengurusan pangkalan data relasi (RDBMS) dan menggunakan bahasa pertanyaan struktur untuk melaksanakan operasi di pangkalan data. Di samping itu, perlu diingat bahawa Mariadb menggunakan pangkalan data dan skema secara bergantian.

Untuk menyimpan maklumat berterusan dalam pangkalan data, kami akan menggunakan Jadual bahawa baris data menyimpan. Selalunya, dua atau lebih jadual akan berkaitan antara satu sama lain dalam beberapa cara. Itu adalah sebahagian daripada organisasi yang mencirikan penggunaan pangkalan data relasi.

Membuat pangkalan data baru

Untuk membuat pangkalan data baru bernama Booksdb, Masukkan Prompt MariaDB dengan arahan berikut (anda akan diminta memasukkan kata laluan untuk pengguna Root MariaDB):

[[dilindungi e -mel] ~]# 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 BookstoredB Pangkalan Data; Pertanyaan ok, 1 baris terjejas (0.00 saat) Mariadb [(Tiada)]>> 

Sebaik sahaja pangkalan data telah dibuat, kita perlu membuat sekurang -kurangnya dua jadual di atasnya. Tetapi pertama -tama mari kita meneroka konsep jenis data.

Memperkenalkan Jenis Data MariaDB

Seperti yang dijelaskan sebelumnya, Jadual Adakah objek pangkalan data di mana kita akan menyimpan maklumat yang berterusan. Setiap jadual terdiri daripada dua atau lebih bidang (juga dikenali sebagai lajur) jenis data yang diberikan (jenis maklumat) yang medan tersebut dapat disimpan.

Jenis data yang paling biasa di MariaDB adalah yang berikut (anda boleh merujuk senarai lengkap dalam dokumentasi dalam talian MariaDB rasmi):

Numerik:
  1. Boolean menganggap 0 sebagai palsu dan apa -apa nilai lain yang benar.
  2. Tinyint, Jika digunakan dengan ditandatangani, meliputi julat dari -128 hingga 127, sedangkan julat yang tidak ditandatangani adalah 0 hingga 255.
  3. Kecil, Jika digunakan dengan ditandatangani, meliputi julat dari -32768 hingga 32767. Julat yang tidak ditandatangani ialah 0 hingga 65535.
  4. Int, Jika digunakan dengan tidak ditandatangani, meliputi julat dari 0 hingga 4294967295, dan -2147483648 hingga 2147483647.

Catatan: Dalam Tinyint, Smallint, dan Int, lalai yang ditandatangani diandaikan.

Double (m, d), di mana M adalah jumlah digit dan D adalah bilangan digit selepas titik perpuluhan, mewakili nombor terapung dua ketepatan. Sekiranya tidak ditandatangani ditentukan, nilai negatif tidak dibenarkan.

Tali:
  1. Varchar (m) mewakili rentetan panjang berubah di mana M adalah panjang lajur yang dibenarkan maksimum dalam bait (65,535 dalam teori). Dalam kebanyakan kes, bilangan bait adalah sama dengan bilangan aksara, kecuali beberapa aksara yang boleh mengambil sebanyak 3 bait. Contohnya, surat Sepanyol mewakili satu watak tetapi mengambil 2 bait.
  2. Teks (m) mewakili lajur dengan panjang maksimum 65,535 aksara. Walau bagaimanapun, seperti yang berlaku dengan Varchar (m), Panjang maksimum sebenar dikurangkan jika aksara multi-bait disimpan. Jika M ditentukan, lajur dibuat sebagai jenis terkecil yang dapat menyimpan bilangan aksara tersebut.
  3. MediumText (m) dan LongText (m) sama dengan Teks (m), Hanya panjang maksimum yang dibenarkan adalah 16,777,215 dan 4,294,967,295 aksara.
Tarikh dan masa:
  1. TARIKH mewakili tarikh di YYYY-MM-DD format.
  2. MASA mewakili masa masuk HH: MM: SS.SSS Format (jam, minit, saat, dan milisaat).
  3. MASA TARIKH adalah gabungan dari TARIKH dan MASA dalam Yyyy-mm-dd hh: mm: ss format.
  4. Timestamp digunakan untuk menentukan saat baris ditambah atau dikemas kini.

Setelah mengkaji jenis data ini, anda akan berada dalam kedudukan yang lebih baik untuk menentukan jenis data yang anda perlukan untuk diberikan kepada lajur yang diberikan dalam jadual.

Contohnya, nama seseorang dapat dengan mudah dimuatkan ke dalam Varchar (50), sedangkan catatan blog memerlukan a Teks jenis (pilih M mengikut keperluan khusus anda).

Membuat jadual dengan kunci utama dan asing

Sebelum kita menyelam untuk membuat jadual, terdapat dua konsep asas mengenai pangkalan data relasi yang perlu kita semak: utama dan asing Kunci.

A kunci utama Mengandungi nilai yang secara unik mengenal pasti setiap baris, atau rekod, dalam jadual. Sebaliknya, a kunci asing digunakan untuk membuat pautan antara data dalam dua jadual, dan untuk mengawal data yang boleh disimpan di dalam jadual di mana kunci asing terletak. Kedua -dua kunci utama dan asing biasanya INT.

Untuk menggambarkan, mari kita gunakan Bookstoredb dan buat dua jadual yang dinamakan Authorstbl dan Bookstbl seperti berikut. The Tidak batal kekangan menunjukkan bahawa medan yang berkaitan memerlukan nilai selain daripada Batal.

Juga, AUTO_INCREMENT digunakan untuk meningkat dengan satu nilai Int Lajur utama utama apabila rekod baru dimasukkan ke dalam jadual.

Mariadb [(Tiada)]>> Gunakan bookstoredb; Mariadb [(Tiada)]>> Buat jadual authorstbl (pengarang int not null auto_increment, authorname varchar (100), kunci utama (pengarang)); Mariadb [(Tiada)]>> Buat meja bookstbl (bookid int not null auto_increment, bookname varchar (100) not null, pengarang int not null, bookprice decimal (6,2) not null, booklastupdated timestamp, bookisavailable boolean, primer (bookid) Rujukan authorstbl (pengarang)); 
Buat jadual mysql dengan kunci utama dan asing
Mariadb [(Tiada)]>> Gunakan bookstoredb; Pangkalan Data Menukar MariaDB [Bookstoredb]> Buat jadual authorstbl ( -> pengarang int not null auto_increment, -> authoramame varchar (100), -> utama utama (pengarang) ->); Pertanyaan ok, 0 baris terjejas (0.05 saat) Mariadb [bookstoredb]> Buat jadual Bookstbl ( -> BookID int tidak NULL AUTO_INCREMENT, -> BookName Varchar (100) Tidak NULL, -> Pengarang Int Tidak NULL, -> BookPrice Decimal (6,2) Tidak NULL, -> Booklastupdated Timestamp, -> bookisavailable boolean , -> Kunci Utama (BookID), -> Rujukan Kunci Asing (Pengarang) Authorstbl (Pengarang) ->); Pertanyaan ok, 0 baris terjejas (0.05 saat) Mariadb [bookstoredb]> 

Sekarang kita boleh teruskan dan mula memasukkan rekod ke dalam Authorstbl dan Bookstbl.

Memilih, memasukkan, mengemas kini, dan memadam baris

Kami akan terlebih dahulu mengisi Authorstbl Jadual. Kenapa? Kerana kita perlu mempunyai nilai untuk Pengarang sebelum memasukkan rekod ke dalam Bookstbl.

Jalankan pertanyaan berikut dari prompt MariaDB anda:

Mariadb [bookstoredb]> masukkan ke dalam nilai authorstbl (authorName) ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho'); 

Selepas itu, kami akan memilih semua rekod dari Authorstbl. Ingat kita memerlukan Pengarang untuk setiap rekod untuk membuat Masukkan pertanyaan untuk Bookstbl.

Sekiranya anda ingin mendapatkan satu rekod pada satu masa, anda boleh menggunakan a Di mana fasal untuk menunjukkan syarat bahawa baris mesti dipenuhi untuk dikembalikan. Sebagai contoh,

Mariadb [bookstoredb]> Pilih * dari Authorstbl di mana authORName = "Agatha Christie"; 

Sebagai alternatif, anda boleh memilih semua rekod secara serentak:

Mariadb [bookstoredb]> Pilih * dari Authorstbl; 
Pilih dan Rekod Pertanyaan di MySQL
Mariadb [bookstoredb]> Pilih * dari Authorstbl di mana authORName = "Agatha Christie"; +----------+-----------------+ | Pengarang | AuthorName | +----------+-----------------+| 1 | Agatha Christie | +----------+-----------------+1 baris dalam set (0.00 saat) Mariadb [bookstoredb]> Pilih * dari Authorstbl; +----------+-----------------+ | Pengarang | AuthorName | +----------+-----------------+| 1 | Agatha Christie | | 2 | Stephen King | | 3 | Paulo Coelho | +----------+-----------------+3 baris dalam set (0.00 saat) Mariadb [bookstoredb]> 
Pilih dan tanya rentetan dalam pangkalan data MySQL

Sekarang mari kita buat Masukkan pertanyaan untuk Bookstbl, menggunakan yang sepadan Pengarang untuk memadankan pengarang setiap buku. Nilai 1 dalam Bookisavailable Menunjukkan buku itu dalam stok, 0 Jika tidak:

Mariadb [bookstoredb]> Masukkan ke dalam Bookstbl (BookName, AuthorId, BookPrice, Bookisavailable) Nilai ('dan kemudian tidak ada', 1, 14.95, 1), ('lelaki dalam saman coklat', 1, 23.99, 1), ('The Stand', 2, 35.99, 1), ('Sematar Pet', 2, 17.95, 0), ('The Green Mile', 2, 29.99, 1), ('Alchemist', 3, 25, 1), ('oleh Sungai Piedra saya duduk dan menangis', 3, 18.95, 0); 
Masukkan pertanyaan dalam jadual mysql
Mariadb [bookstoredb]> Masukkan ke dalam Bookstbl (BookName, AuthorId, BookPrice, Bookisavailable) -> Nilai ('Dan kemudian tidak ada', 1, 14.95, 1), -> ('The Man in the Brown Suit', 1, 23.99, 1), -> ('The Stand', 2, 35.99, 1), -> ('Sematar Pet', 2, 17.95, 0), -> ('The Green Mile', 2, 29.99, 1), -> ('Alchemist', 3, 25, 1), -> ('oleh Sungai Piedra saya duduk dan menangis', 3, 18.95, 0); Pertanyaan ok, 7 baris terjejas (0.03 saat) Rekod: 7 Duplikat: 0 Amaran: 0 

Pada ketika ini kita akan melakukan Pilih untuk melihat rekod di Bookstbl. Kemudian mari Kemas kini harga "Ahli kimia"Oleh Paulo Coelho dan Pilih rekod khusus itu lagi.

Perhatikan bagaimana Booklastupdated medan sekarang menunjukkan nilai yang berbeza. Seperti yang dijelaskan sebelumnya, a Timestamp medan menunjukkan nilai apabila rekod dimasukkan atau diubah suai terakhir.

Mariadb [bookstoredb]> Pilih * dari Bookstbl; Mariadb [bookstoredb]> Kemas kini Bookstbl Set BookPrice = 22.75 di mana bookid = 6; Mariadb [bookstoredb]> Pilih * dari bookstbl di mana bookid = 6; 
Masukkan jadual pertanyaan dan kemas kini dalam pangkalan data MySQL
Mariadb [bookstoredb]> Pilih * dari Bookstbl; +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+ | Bookid | Bookname | Pengarang | BookPrice | Booklastupdated | Bookisavailable | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ | 1 | Dan kemudian tidak ada | 1 | 14.95 | 2016-10-01 23:31:41 | 1 | | 2 | Lelaki dalam saman 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 | Pet Sematary | 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 | Dengan sungai Piedra saya duduk dan menangis | 3 | 18.95 | 2016-10-01 23:31:41 | 0 | +--------+---------------------------------------- -+----------+-----------+---------------------+--- --------------+ 7 baris dalam set (0.00 saat) Mariadb [bookstoredb]> Kemas kini Bookstbl Set BookPrice = 22.75 di mana bookid = 6; Pertanyaan ok, 1 baris terjejas (0.04 saat) baris dipadankan: 1 Berubah: 1 amaran: 0 Mariadb [bookstoredb]> Pilih * dari bookstbl di mana bookid = 6; +--------+---------------+----------+-----------+---------------------+-----------------+ | Bookid | Bookname | Pengarang | BookPrice | Booklastupdated | Bookisavailable | +--------+---------------+----------+-----------+- --------------------+ -----------------+ | 6 | The Alchemist | 3 | 22.75 | 2016-10-01 23:35:00 | 1 | +--------+---------------+----------+-----------+- --------------------+ -----------------+ 1 baris dalam set (0.00 saat) Mariadb [bookstoredb]> 
Masukkan dan kemas kini rekod jadual pangkalan data

Walaupun kami tidak akan melakukannya di sini, anda juga boleh memadamkan rekod jika tidak digunakan lagi. Sebagai contoh, katakan kita mahu memadam "Ahli kimia"Dari Bookstbl.

Untuk berbuat demikian, kami akan menggunakan Padam pernyataan seperti berikut:

Mariadb [bookstoredb]> Padam dari Bookstbl di mana BookId = 6; 

Seperti dalam kes Kemas kini, Adalah idea yang baik untuk melakukan Pilih Pertama untuk melihat rekod yang berpotensi dipengaruhi oleh Padam.

Juga, jangan lupa untuk menambah Di mana fasal dan keadaan (Bookid = 6) Untuk memilih rekod khusus yang akan dikeluarkan. Jika tidak, anda menghadapi risiko memadam semua baris di dalam jadual!

Sekiranya anda berhasrat untuk menggabungkan dua bidang (atau lebih), anda boleh menggunakan Concat penyata. Sebagai contoh, katakan kami ingin mengembalikan set hasil yang terdiri daripada satu bidang dengan nama buku dan pengarang dalam bentuk "The Alchemist (Paulo Coelho)"Dan lajur lain dengan harga.

Ini memerlukan a Menyertai antara Authorstbl dan Bookstbl di medan biasa yang dikongsi oleh kedua -dua jadual (Pengarang):

Mariadb [bookstoredb]> Pilih Concat (bookstbl.Nama buku, '(', authorstbl.AuthorName, ')') sebagai keterangan, bookstbl.BookPrice dari Authorstbl Sertai Bookstbl on Authorstbl.Pengarang = bookstbl.Pengarang; 

Seperti yang dapat kita lihat, Concat membolehkan kami menyertai pelbagai ungkapan rentetan yang dipisahkan oleh koma. Anda juga akan menyedari bahawa kami memilih alias Penerangan untuk mewakili set keputusan penggabungan.

Output pertanyaan di atas ditunjukkan dalam imej di bawah:

Pertanyaan pelbagai bidang dalam jadual mysql
Mariadb [bookstoredb]> Pilih Concat (bookstbl.Nama buku, '(', authorstbl.AuthorName, ')') sebagai keterangan, bookstbl.BookPrice dari Authorstbl Sertai Bookstbl on Authorstbl.Pengarang = bookstbl.Pengarang; +--------------------------------------------------------+-----------+ | Penerangan | BookPrice | +------------------------------------------------- -------+ -----------+ | Dan kemudian tidak ada (Agatha Christie) | 14.95 | | Lelaki dalam saman coklat (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 | | Dengan sungai Piedra saya duduk dan menangis (Paulo Coelho) | 18.95 | +------------------------------------------------- -------+ -----------+ 7 baris dalam set (0.00 saat) 
Pertanyaan Pelbagai Bidang dalam Jadual Pangkalan Data

Buat pengguna untuk mengakses pangkalan data BookStorEdb

Menggunakan akar untuk melaksanakan semua DML Operasi dalam pangkalan data adalah idea yang tidak baik. Untuk mengelakkan ini, kita boleh membuat yang baru Mariadb akaun pengguna (kami akan namakannya BookStoreUser) dan memberikan semua kebenaran yang diperlukan untuk Bookstoredb:

Mariadb [bookstoredb]> Buat pengguna [dilindungi e -mel] yang dikenal pasti oleh 'YourPasswordHere'; Mariadb [bookstoredb]> Geran semua keistimewaan di BookStouredB.* untuk [dilindungi e -mel]; Mariadb [bookstoredb]> Keistimewaan siram; 
Buat pengguna pangkalan data baru dengan keistimewaan
Mariadb [bookstoredb]> Buat pengguna [dilindungi e -mel] yang dikenal pasti oleh 'Tecmint'; Pertanyaan ok, 0 baris terjejas (0.00 saat) Mariadb [bookstoredb]> Geran semua keistimewaan di BookStouredB.* untuk [dilindungi e -mel]; Pertanyaan ok, 0 baris terjejas (0.00 saat) Mariadb [bookstoredb]> Keistimewaan siram; Pertanyaan ok, 0 baris terjejas (0.00 saat) 

Mempunyai pengguna yang berdedikasi dan berasingan untuk setiap pangkalan data akan menghalang kerosakan ke seluruh pangkalan data sekiranya satu akaun menjadi dikompromikan.

Petua MySQL tambahan

Untuk membersihkan Mariadb segera, taipkan arahan dan tekan berikut Masukkan:

Mariadb [bookstoredb]> \! jelas 

Untuk memeriksa konfigurasi jadual yang diberikan, lakukan:

Mariadb [bookstoredb]> Pilih lajur dalam [nama jadual di sini]; 

Sebagai contoh,

Mariadb [bookstoredb]> Tunjukkan lajur di bookstbl; 
Senaraikan lajur dalam jadual pangkalan data
Mariadb [bookstoredb]> Tunjukkan lajur di bookstbl; +-----------------+--------------+------+-----+-------------------+-----------------------------+ | Bidang | Jenis | NULL | Kunci | Lalai | Tambahan | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ | Bookid | int (11) | Tidak | Pri | NULL | AUTO_INCREMENT | | Bookname | Varchar (100) | Tidak | | NULL | | | Pengarang | int (11) | Tidak | Mul | NULL | | | BookPrice | perpuluhan (6,2) | Tidak | | NULL | | | Booklastupdated | Timestamp | Tidak | | Current_TimeStamp | Pada Kemas kini Current_TimeStamp | | Bookisavailable | TinyInt (1) | Ya | | NULL | | +-----------------+--------------+------+-----+--- ----------------+ -----------------------------+ 6 baris di Tetapkan (0.02 saat) 
Senaraikan lajur dalam jadual pangkalan data

Pemeriksaan cepat mendedahkan bahawa Bookisavailable bidang mengakui Batal nilai. Oleh kerana kita tidak mahu membenarkannya, kita akan Mengubah Jadual seperti berikut:

Mariadb [bookstoredb]> Alter Table Bookstbl Modify Bookisavailable Boolean Not Null; 

(Jangan ragu untuk menunjukkan lajur lagi - yang diserlahkan Ya dalam imej di atas sekarang harus menjadi Tidak).

Akhirnya, untuk melihat semua pangkalan data di pelayan anda, lakukan:

Mariadb [bookstoredb]> Tunjukkan pangkalan data; Atau Mariadb [bookstoredb]> Tunjukkan skema; 
Senaraikan semua pangkalan data MySQL
[[dilindungi e -mel] ~]# mysql -u bookstoreerer -p Masukkan Kata Laluan: Selamat Datang ke Monitor MariaDB. Perintah berakhir dengan; atau \ g. ID sambungan MariaDB anda ialah 3 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 [bookstoredb]> Tunjukkan pangkalan data; +--------------------+ | Pangkalan Data | + --------------------+ | Bookstoredb | | Maklumat_schema | + --------------------+ 2 baris dalam set (0.00 saat) Mariadb [bookstoredb]> Tunjukkan skema; +--------------------+ | Pangkalan Data | + --------------------+ | Bookstoredb | | Maklumat_schema | + --------------------+ 2 baris dalam set (0.00 saat) 

Imej berikut menunjukkan hasil perintah di atas setelah mengakses prompt MariaDB sebagai BookStoreUser (Perhatikan bagaimana akaun ini tidak dapat "melihat" mana -mana pangkalan data selain Bookstoredb dan maklumat_schema (tersedia untuk semua pengguna):

Senaraikan semua pangkalan data MySQL

Ringkasan

Dalam artikel ini kita telah menjelaskan cara menjalankan DML Operasi dan Cara Membuat Pangkalan Data, Jadual, dan Pengguna Berdedikasikan pada Pangkalan Data MariADB. Di samping itu, kami berkongsi beberapa petua yang boleh menjadikan hidup anda sebagai pentadbir sistem / pangkalan data lebih mudah.

  1. Bahagian Pentadbiran Pangkalan Data MySQL - 1
  2. Bahagian Pentadbiran Pangkalan Data MySQL - 2
  3. Penulisan dan Pengoptimuman Prestasi MySQL - Bahagian 3

Sekiranya anda mempunyai sebarang pertanyaan mengenai artikel ini, jangan ragu untuk memberitahu kami! Jangan ragu untuk menggunakan borang komen di bawah untuk sampai ke kami.