ຮຽນ MySQL/MariaDB ສຳ ລັບຜູ້ເລີ່ມຕົ້ນ - ພາກທີ 1


ໃນບົດຄວາມນີ້ພວກເຮົາຈະສະແດງວິທີການສ້າງຖານຂໍ້ມູນ (ທີ່ເອີ້ນວ່າ schema), ຕາຕະລາງ (ມີປະເພດຂໍ້ມູນ), ແລະອະທິບາຍວິທີການ ດຳ ເນີນການປະຕິບັດງານ Data Manipulation Language (DML) ກັບຂໍ້ມູນໃນ server MySQL/MariaDB.

ສົມມຸດວ່າກ່ອນ ໜ້າ ນີ້ທ່ານ 1) ໄດ້ຕິດຕັ້ງແພັກເກດທີ່ ຈຳ ເປັນໃນລະບົບ Linux ຂອງທ່ານ, ແລະ 2) ປະຕິບັດ mysql_secure_installation ເພື່ອປັບປຸງຄວາມປອດໄພຂອງຖານຂໍ້ມູນ. ຖ້າບໍ່, ໃຫ້ເຮັດຕາມ ຄຳ ແນະ ນຳ ຂ້າງລຸ່ມນີ້ເພື່ອຕິດຕັ້ງ MySQL/MariaDB server.

<

  • ຕິດຕັ້ງຖານຂໍ້ມູນ MySQL ລ້າສຸດໃນ Linux Systems
  • ຕິດຕັ້ງຖານຂໍ້ມູນ MariaDB ລ້າສຸດໃນ Linux Systems
  • ສຳ ລັບຄວາມແຕກແຍກ, ພວກເຮົາຈະອ້າງອີງເຖິງ MariaDB ສະເພາະໃນຕະຫຼອດບົດຄວາມນີ້, ແຕ່ວ່າແນວຄວາມຄິດແລະ ຄຳ ສັ່ງທີ່ລະບຸໄວ້ໃນນີ້ແມ່ນໃຊ້ກັບ MySQL ເຊັ່ນກັນ.

    ການສ້າງຖານຂໍ້ມູນ, ຕາຕະລາງແລະຜູ້ໃຊ້ທີ່ໄດ້ຮັບອະນຸຍາດ

    ຕາມທີ່ທ່ານຮູ້, ຖານຂໍ້ມູນສາມາດຖືກ ກຳ ນົດໃນເງື່ອນໄຂທີ່ງ່າຍດາຍຄືການເກັບ ກຳ ຂໍ້ມູນ. ໂດຍສະເພາະ, MariaDB ແມ່ນລະບົບການຄຸ້ມຄອງຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ (RDBMS) ແລະໃຊ້ພາສາ Structure Query Language ເພື່ອປະຕິບັດງານໃນຖານຂໍ້ມູນ. ນອກຈາກນັ້ນ, ຈົ່ງຈື່ໄວ້ວ່າ MariaDB ໃຊ້ຖານຂໍ້ມູນເງື່ອນໄຂແລະແບບແຜນທີ່ສາມາດແລກປ່ຽນກັນໄດ້.

    ເພື່ອເກັບຂໍ້ມູນທີ່ຄົງຢູ່ໃນຖານຂໍ້ມູນ, ພວກເຮົາຈະ ນຳ ໃຊ້ຕາຕະລາງທີ່ເກັບຂໍ້ມູນແຖວ. ປົກກະຕິແລ້ວ, ສອງຕາຕະລາງຫຼືຫຼາຍກວ່ານັ້ນຈະມີສ່ວນກ່ຽວຂ້ອງກັບກັນແລະກັນໃນບາງທາງ. ນັ້ນແມ່ນສ່ວນ ໜຶ່ງ ຂອງອົງກອນທີ່ມີລັກສະນະພິເສດຂອງການ ນຳ ໃຊ້ຖານຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ.

    ເພື່ອສ້າງຖານຂໍ້ມູນ ໃໝ່ ທີ່ມີຊື່ວ່າ BooksDB , ໃສ່ MariaDB ພ້ອມດ້ວຍ ຄຳ ສັ່ງຕໍ່ໄປນີ້ (ທ່ານຈະໄດ້ຮັບການກະຕຸ້ນໃຫ້ໃສ່ລະຫັດລັບ ສຳ ລັບຜູ້ໃຊ້ MariaDB ຮາກ):

     mysql -u root -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 2
    Server version: 10.1.14-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [(none)]> CREATE DATABASE BookstoreDB;
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> 
    

    ເມື່ອຖານຂໍ້ມູນຖືກສ້າງຂື້ນ, ພວກເຮົາຕ້ອງສ້າງຢ່າງ ໜ້ອຍ ສອງຕາຕະລາງໃສ່ມັນ. ແຕ່ກ່ອນອື່ນ ໝົດ ໃຫ້ຄົ້ນຫາແນວຄວາມຄິດຂອງປະເພດຂໍ້ມູນ.

    ແນະ ນຳ ປະເພດຂໍ້ມູນ MariaDB

    ດັ່ງທີ່ພວກເຮົາໄດ້ອະທິບາຍກ່ອນ ໜ້າ ນີ້, ຕາຕະລາງແມ່ນວັດຖຸຖານຂໍ້ມູນທີ່ພວກເຮົາຈະເກັບຂໍ້ມູນທີ່ຄົງຢູ່. ຕາຕະລາງແຕ່ລະບ່ອນປະກອບດ້ວຍສອງຫຼືຫຼາຍຂົງເຂດ (ທີ່ເອີ້ນກັນວ່າຄໍ ລຳ) ຂອງປະເພດຂໍ້ມູນທີ່ໃຫ້ (ປະເພດຂໍ້ມູນ) ທີ່ສາມາດເກັບຂໍ້ມູນໄດ້.

    ປະເພດຂໍ້ມູນທົ່ວໄປທີ່ສຸດໃນ MariaDB ແມ່ນຕໍ່ໄປນີ້ (ທ່ານສາມາດປຶກສາບັນຊີລາຍຊື່ຄົບຖ້ວນໃນເອກະສານທາງການຂອງ MariaDB online):

    <

  • BOOLEAN ຖືວ່າ 0 ບໍ່ຖືກຕ້ອງແລະຄຸນຄ່າອື່ນໆແມ່ນເປັນຄວາມຈິງ.
  • TINYINT, ຖ້າໃຊ້ກັບ SIGNED, ກວມເອົາລະດັບຕັ້ງແຕ່ -128 ເຖິງ 127, ໃນຂະນະທີ່ຊ່ວງ UNSIGNED ແມ່ນ 0 ເຖິງ 255.
  • SMALLINT, ຖ້າໃຊ້ກັບ SIGNED, ກວມເອົາລະດັບຕັ້ງແຕ່ -32768 ເຖິງ 32767. ຂອບເຂດ UNSIGNED ແມ່ນ 0 ເຖິງ 65535.
  • INT, ຖ້າໃຊ້ກັບ UNSIGNED, ກວມເອົາແຕ່ 0 ເຖິງ 4294967295, ແລະ -2147483648 ເຖິງ 2147483647 ຖ້າບໍ່ດັ່ງນັ້ນ.
  • ໝາຍ ເຫດ: ໃນ TINYINT, SMALLINT, ແລະ INT, ສັນຍາໄວ້ໃນຕອນຕົ້ນແມ່ນຖືກສັນຍາໄວ້.

    DOUBLE (M, D), ບ່ອນທີ່ M ແມ່ນຕົວເລກທັງ ໝົດ ຂອງຕົວເລກແລະ D ແມ່ນຕົວເລກຂອງຕົວເລກຫຼັງຈາກຈຸດທົດສະນິຍົມ, ເປັນຕົວແທນຂອງຕົວເລກຈຸດລອຍຕົວສອງເທົ່າ. ຖ້າ UNSIGNED ໄດ້ຖືກລະບຸ, ຄຸນຄ່າທາງລົບຈະບໍ່ຖືກອະນຸຍາດ.

    <

  • VARCHAR (M) ເປັນຕົວແທນຂອງຄວາມຍາວຕົວປ່ຽນແປງເຊິ່ງ M ແມ່ນຄວາມຍາວຂອງຖັນທີ່ອະນຸຍາດສູງສຸດເປັນໄບຕ໌ (65,535 ໃນທິດສະດີ). ໃນກໍລະນີຫຼາຍທີ່ສຸດ, ຈຳ ນວນໄບຕ໌ແມ່ນຄືກັນກັບ ຈຳ ນວນຕົວອັກສອນ, ຍົກເວັ້ນບາງຕົວອັກສອນທີ່ສາມາດຮັບໄດ້ 3 ໄບ. ຍົກຕົວຢ່າງ, ຕົວ ໜັງ ສືສະເປນñເປັນຕົວແທນ ໜຶ່ງ ຕົວເລກແຕ່ໃຊ້ເວລາ 2 ໄບຕ໌.
  • TEXT (M) ສະແດງເຖິງຖັນທີ່ມີຄວາມຍາວສູງສຸດ 65,535 ໂຕອັກສອນ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ຍ້ອນວ່າມັນເກີດຂື້ນກັບ VARCHAR (M), ຄວາມຍາວສູງສຸດທີ່ແທ້ຈິງຈະຖືກຫຼຸດລົງຖ້າຕົວອັກສອນຫຼາຍໄບຕ໌ຖືກເກັບໄວ້ ຖ້າ M ຖືກລະບຸ, ຖັນຖືກສ້າງຂື້ນເປັນປະເພດນ້ອຍທີ່ສຸດທີ່ສາມາດເກັບຮັກສາຕົວເລກຕົວອັກສອນດັ່ງກ່າວໄດ້.
  • MEDIUMTEXT (M) ແລະ LONGTEXT (M) ແມ່ນຄ້າຍຄືກັນກັບ TEXT (M), ພຽງແຕ່ວ່າຄວາມຍາວທີ່ອະນຸຍາດສູງສຸດແມ່ນ 16,777,215 ແລະ 4,294,967,295 ໂຕອັກສອນ, ຕາມ ລຳ ດັບ.
  • <

  • ວັນທີສະແດງວັນທີໃນຮູບແບບ YYYY-MM-DD.
  • ເວລາເປັນຕົວແທນເວລາໃນຮູບແບບ HH: MM: SS.sss (ຊົ່ວໂມງ, ນາທີ, ວິນາທີແລະວິນາທີ).
  • DATETIME ແມ່ນການປະສົມປະສານຂອງວັນທີແລະເວລາໃນຮູບແບບ YYYY-MM-DD HH: MM: SS.
  • TIMESTAMP ຖືກໃຊ້ເພື່ອ ກຳ ນົດຊ່ວງເວລາທີ່ແຖວຖືກເພີ່ມຫລືປັບປຸງ.
  • ຫຼັງຈາກໄດ້ທົບທວນປະເພດຂໍ້ມູນເຫຼົ່ານີ້ແລ້ວ, ທ່ານຈະຢູ່ໃນ ຕຳ ແໜ່ງ ທີ່ດີກວ່າເພື່ອ ກຳ ນົດປະເພດຂໍ້ມູນໃດ ໜຶ່ງ ທີ່ທ່ານຕ້ອງການ ກຳ ນົດໃຫ້ຖັນທີ່ ກຳ ນົດໄວ້ໃນຕາຕະລາງ.

    ຍົກຕົວຢ່າງ, ຊື່ຂອງຄົນເຮົາສາມາດ ເໝາະ ສົມກັບ VARCHAR (50), ໃນຂະນະທີ່ບົດຂຽນ blog ຈະຕ້ອງມີປະເພດ TEXT (ເລືອກ M ຕາມຄວາມຕ້ອງການສະເພາະຂອງທ່ານ).

    ກ່ອນທີ່ພວກເຮົາຈະເຂົ້າໄປໃນການສ້າງຕາຕະລາງ, ມີສອງແນວຄິດພື້ນຖານກ່ຽວກັບຖານຂໍ້ມູນທີ່ພົວພັນເຊິ່ງພວກເຮົາຕ້ອງໄດ້ທົບທວນຄືນຄື: ຄີຫລັກແລະຕ່າງປະເທດ.

    ຄີຫຼັກປະກອບມີຄ່າທີ່ລະບຸແຕ່ລະແຖວຫລືບັນທຶກທີ່ເປັນເອກະລັກໃນຕາຕະລາງ. ໃນທາງກົງກັນຂ້າມ, ກຸນແຈຕ່າງປະເທດແມ່ນໃຊ້ເພື່ອສ້າງຈຸດເຊື່ອມຕໍ່ລະຫວ່າງຂໍ້ມູນໃນສອງຕາຕະລາງ, ແລະຄວບຄຸມຂໍ້ມູນທີ່ສາມາດເກັບໄວ້ໃນຕາຕະລາງທີ່ຄີຕ່າງປະເທດຕັ້ງຢູ່. ທັງຄີຫຼັກແລະຕ່າງປະເທດໂດຍທົ່ວໄປແມ່ນ INTs.

    ເພື່ອເປັນຕົວຢ່າງ, ໃຫ້ໃຊ້ BookstoreDB ແລະສ້າງສອງຕາຕະລາງທີ່ມີຊື່ວ່າ AuthorsTBL ແລະ BooksTBL ດັ່ງຕໍ່ໄປນີ້. ຂໍ້ ຈຳ ກັດຂອງ NOT NULL ຊີ້ໃຫ້ເຫັນວ່າພາກສະ ໜາມ ທີ່ກ່ຽວຂ້ອງຮຽກຮ້ອງໃຫ້ມີຄ່າອື່ນນອກ ເໜືອ ຈາກ NULL.

    ນອກຈາກນີ້, AUTO_INCREMENT ຖືກ ນຳ ໃຊ້ເພື່ອເພີ່ມມູນຄ່າ ໜຶ່ງ ຂອງຖັນຫຼັກ INT ເມື່ອບັນທຶກ ໃໝ່ ຖືກໃສ່ເຂົ້າໃນຕາຕະລາງ.

    MariaDB [(none)]> USE BookstoreDB;
    
    MariaDB [(none)]> CREATE TABLE AuthorsTBL (
    AuthorID INT NOT NULL AUTO_INCREMENT,
    AuthorName VARCHAR(100),
    PRIMARY KEY(AuthorID)
    );
    
    MariaDB [(none)]> CREATE TABLE BooksTBL (
    BookID INT NOT NULL AUTO_INCREMENT,
    BookName VARCHAR(100) NOT NULL,
    AuthorID INT NOT NULL,
    BookPrice DECIMAL(6,2) NOT NULL,
    BookLastUpdated TIMESTAMP,
    BookIsAvailable BOOLEAN,
    PRIMARY KEY(BookID),
    FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL(AuthorID)
    );
    
    MariaDB [(none)]> USE BookstoreDB;
    Database changed
    MariaDB [BookstoreDB]> CREATE TABLE AuthorsTBL (
        -> AuthorID INT NOT NULL AUTO_INCREMENT,
        -> AuthorName VARCHAR(100),
        -> PRIMARY KEY(AuthorID)
        -> );
    Query OK, 0 rows affected (0.05 sec)
    
    MariaDB [BookstoreDB]> CREATE TABLE BooksTBL (
        -> BookID INT NOT NULL AUTO_INCREMENT,
        -> BookName VARCHAR(100) NOT NULL,
        -> AuthorID INT NOT NULL,
        -> BookPrice DECIMAL(6,2) NOT NULL,
        -> BookLastUpdated TIMESTAMP,
        -> BookIsAvailable BOOLEAN,
        -> PRIMARY KEY(BookID),
        -> FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL(AuthorID)
        -> );
    Query OK, 0 rows affected (0.05 sec)
    
    MariaDB [BookstoreDB]> 
    

    ດຽວນີ້ພວກເຮົາສາມາດສືບຕໍ່ເດີນ ໜ້າ ແລະເລີ່ມຂຽນບັນທຶກເຂົ້າໃນ AuthorsTBL ແລະ BooksTBL .

    ທຳ ອິດພວກເຮົາຈະສະແດງຕາຕະລາງ AuthorsTBL . ຍ້ອນຫຍັງ? ເພາະວ່າພວກເຮົາ ຈຳ ເປັນຕ້ອງມີຄຸນຄ່າ ສຳ ລັບ AuthorID ກ່ອນທີ່ຈະໃສ່ບັນທຶກເຂົ້າໃນ BooksTBL.

    ປະຕິບັດການສອບຖາມຕໍ່ໄປນີ້ຈາກການກະຕຸ້ນເຕືອນ MariaDB ຂອງທ່ານ:

    MariaDB [BookstoreDB]> INSERT INTO AuthorsTBL (AuthorName) VALUES ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho');
    

    ຫລັງຈາກນັ້ນ, ພວກເຮົາຈະເລືອກເອົາບັນທຶກທັງ ໝົດ ຈາກ AuthorsTBL. ຈື່ໄວ້ວ່າພວກເຮົາຈະຕ້ອງການ AuthorID ສຳ ລັບແຕ່ລະບັນທຶກເພື່ອສ້າງການສອບຖາມ INSERT ສຳ ລັບ BooksTBL.

    ຖ້າທ່ານຕ້ອງການດຶງເອົາບັນທຶກ ໜຶ່ງ ຄັ້ງໃນເວລາດຽວກັນ, ທ່ານສາມາດໃຊ້ປະໂຫຍກ WHERE ເພື່ອສະແດງເງື່ອນໄຂທີ່ແຖວໃດ ໜຶ່ງ ຕ້ອງຕອບສະ ໜອງ ໃຫ້ກັບຄືນ. ຍົກຕົວຢ່າງ,

    MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL WHERE AuthorName='Agatha Christie';
    

    ອີກທາງເລືອກ, ທ່ານສາມາດເລືອກເອົາບັນທຶກທັງ ໝົດ ພ້ອມກັນ:

    MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL;
    
    MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL WHERE AuthorName='Agatha Christie';
    +----------+-----------------+
    | AuthorID | AuthorName      |
    +----------+-----------------+
    |        1 | Agatha Christie |
    +----------+-----------------+
    1 row in set (0.00 sec)
    
    MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL;
    +----------+-----------------+
    | AuthorID | AuthorName      |
    +----------+-----------------+
    |        1 | Agatha Christie |
    |        2 | Stephen King    |
    |        3 | Paulo Coelho    |
    +----------+-----------------+
    3 rows in set (0.00 sec)
    
    MariaDB [BookstoreDB]>
    

    ບັດນີ້ໃຫ້ສ້າງ ຄຳ ຖາມ INSERT ສຳ ລັບ BooksTBL, ໂດຍໃຊ້ AuthorID ທີ່ສອດຄ້ອງກັນເພື່ອກົງກັບຜູ້ຂຽນຂອງປື້ມແຕ່ລະຫົວ. ມູນຄ່າ 1 ໃນ BookIsAvailable ສະແດງໃຫ້ເຫັນປື້ມທີ່ມີຢູ່ໃນສະຕັອກ, 0 ຖ້າບໍ່ດັ່ງນັ້ນ:

    MariaDB [BookstoreDB]> INSERT INTO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable)
    VALUES ('And Then There Were None', 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),
    ('By the River Piedra I Sat Down and Wept', 3, 18.95, 0);
    
    MariaDB [BookstoreDB]> INSERT INTO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable)
        -> VALUES ('And Then There Were None', 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),
        -> ('By the River Piedra I Sat Down and Wept', 3, 18.95, 0);
    Query OK, 7 rows affected (0.03 sec)
    Records: 7  Duplicates: 0  Warnings: 0
    

    ໃນຈຸດນີ້ພວກເຮົາຈະເຮັດ SELECT ເພື່ອເບິ່ງບັນທຶກໃນ BooksTBL. ຫຼັງຈາກນັ້ນ, ປັບປຸງລາຄາຂອງ "The Alchemist" ໂດຍ Paulo Coelho ແລະຄັດເລືອກເອົາບັນທຶກສະເພາະນັ້ນອີກເທື່ອ ໜຶ່ງ.

    ສັງເກດວິທີການທີ່ສະ ໜາມ BookLastUpdated ສະແດງມູນຄ່າທີ່ແຕກຕ່າງກັນ. ດັ່ງທີ່ພວກເຮົາໄດ້ອະທິບາຍກ່ອນ ໜ້າ ນີ້, ພາກສະ ໜາມ TIMESTAMP ສະແດງໃຫ້ເຫັນມູນຄ່າເມື່ອບັນທຶກຖືກປ້ອນເຂົ້າຫຼືດັດແກ້ຫຼ້າສຸດ.

    MariaDB [BookstoreDB]> SELECT * FROM BooksTBL;
    MariaDB [BookstoreDB]> UPDATE BooksTBL SET BookPrice=22.75 WHERE BookID=6;
    MariaDB [BookstoreDB]> SELECT * FROM BooksTBL WHERE BookID=6;
    
    MariaDB [BookstoreDB]> SELECT * FROM BooksTBL;
    +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+
    | BookID | BookName                                | AuthorID | BookPrice | BookLastUpdated     | BookIsAvailable |
    +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+
    |      1 | And Then There Were None                |        1 |     14.95 | 2016-10-01 23:31:41 |               1 |
    |      2 | The Man in the Brown Suit               |        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 | By the River Piedra I Sat Down and Wept |        3 |     18.95 | 2016-10-01 23:31:41 |               0 |
    +--------+-----------------------------------------+----------+-----------+---------------------+-----------------+
    7 rows in set (0.00 sec)
    
    MariaDB [BookstoreDB]> UPDATE BooksTBL SET BookPrice=22.75 WHERE BookID=6;
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    MariaDB [BookstoreDB]> SELECT * FROM BooksTBL WHERE BookID=6;
    +--------+---------------+----------+-----------+---------------------+-----------------+
    | BookID | BookName      | AuthorID | BookPrice | BookLastUpdated     | BookIsAvailable |
    +--------+---------------+----------+-----------+---------------------+-----------------+
    |      6 | The Alchemist |        3 |     22.75 | 2016-10-01 23:35:00 |               1 |
    +--------+---------------+----------+-----------+---------------------+-----------------+
    1 row in set (0.00 sec)
    
    MariaDB [BookstoreDB]> 
    

    ເຖິງແມ່ນວ່າພວກເຮົາຈະບໍ່ເຮັດມັນຢູ່ບ່ອນນີ້, ທ່ານຍັງສາມາດລຶບບັນທຶກຖ້າບໍ່ໃຊ້ອີກຕໍ່ໄປ. ຍົກຕົວຢ່າງ, ສົມມຸດວ່າພວກເຮົາຕ້ອງການລຶບ“ The Alchemist” ຈາກ BooksTBL.

    ເພື່ອເຮັດແນວນັ້ນ, ພວກເຮົາຈະ ນຳ ໃຊ້ ຄຳ ຖະແຫຼງການ DELETE ດັ່ງຕໍ່ໄປນີ້:

    MariaDB [BookstoreDB]> DELETE FROM BooksTBL WHERE BookID=6;
    

    ເຊັ່ນດຽວກັບກໍລະນີ UPDATE, ມັນເປັນການດີທີ່ຈະເຮັດ SELECT ກ່ອນເພື່ອເບິ່ງການບັນທຶກທີ່ອາດຈະມີຜົນກະທົບຈາກ DELETE.

    ນອກຈາກນັ້ນ, ຢ່າລືມເພີ່ມປະໂຫຍກ WHERE ແລະເງື່ອນໄຂ (BookID = 6) ເພື່ອເລືອກເອົາບັນທຶກສະເພາະທີ່ຈະຖືກລຶບອອກ. ຖ້າບໍ່ດັ່ງນັ້ນທ່ານຈະສ່ຽງທີ່ຈະລຶບແຖວທັງ ໝົດ ໃນຕາຕະລາງ!

    ຖ້າທ່ານຕ້ອງການສະຫຼຸບສອງຂົງເຂດ (ຫຼືຫຼາຍກວ່ານັ້ນ), ທ່ານສາມາດໃຊ້ຖະແຫຼງການ CONCAT. ຍົກຕົວຢ່າງ, ໃຫ້ເວົ້າວ່າພວກເຮົາຕ້ອງການສົ່ງຄືນຜົນໄດ້ຮັບທີ່ປະກອບດ້ວຍ 1 ພາກສະ ໜາມ ທີ່ມີຊື່ປື້ມແລະຜູ້ຂຽນໃນຮູບແບບຂອງ“ The Alchemist (Paulo Coelho)” ແລະຖັນອື່ນທີ່ມີລາຄາ.

    ສິ່ງນີ້ຈະຮຽກຮ້ອງໃຫ້ມີ JOIN ລະຫວ່າງ AuthorsTBL ແລະ BooksTBL ໃນສາຂາທົ່ວໄປທີ່ແບ່ງປັນໂດຍຕາຕະລາງທັງສອງ (AuthorID):

    MariaDB [BookstoreDB]> SELECT CONCAT(BooksTBL.BookName, ' (', AuthorsTBL.AuthorName, ')') AS Description, BooksTBL.BookPrice FROM AuthorsTBL JOIN BooksTBL ON AuthorsTBL.AuthorID = BooksTBL.AuthorID;
    

    ດັ່ງທີ່ພວກເຮົາເຫັນ, CONCAT ອະນຸຍາດໃຫ້ພວກເຮົາເຂົ້າຮ່ວມການສະແດງອອກຫລາຍໆສາຍທີ່ແຍກອອກດ້ວຍເຄື່ອງ ໝາຍ ຈຸດ. ທ່ານຍັງໄດ້ສັງເກດເຫັນວ່າພວກເຮົາເລືອກ ຄຳ ອະທິບາຍນາມແຝງເພື່ອເປັນຕົວແທນຂອງຜົນຂອງການສະຫຼຸບ.

    ຜົນໄດ້ຮັບຂອງການສອບຖາມຂ້າງເທິງແມ່ນສະແດງຢູ່ໃນຮູບຂ້າງລຸ່ມນີ້:

    MariaDB [BookstoreDB]> SELECT CONCAT(BooksTBL.BookName, ' (', AuthorsTBL.AuthorName, ')') AS Description, BooksTBL.BookPrice FROM AuthorsTBL JOIN BooksTBL ON AuthorsTBL.AuthorID = BooksTBL.AuthorID;
    +--------------------------------------------------------+-----------+
    | Description                                            | BookPrice |
    +--------------------------------------------------------+-----------+
    | And Then There Were None (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 |
    | By the River Piedra I Sat Down and Wept (Paulo Coelho) |     18.95 |
    +--------------------------------------------------------+-----------+
    7 rows in set (0.00 sec)
    

    ການໃຊ້ຮາກເພື່ອປະຕິບັດການ ດຳ ເນີນງານທັງ ໝົດ ຂອງ DML ໃນຖານຂໍ້ມູນແມ່ນຄວາມຄິດທີ່ບໍ່ດີ. ເພື່ອຫລີກລ້ຽງສິ່ງນີ້, ພວກເຮົາສາມາດສ້າງບັນຊີຜູ້ໃຊ້ MariaDB ໃໝ່ (ພວກເຮົາຈະຕັ້ງຊື່ມັນວ່າຮ້ານຂາຍປື້ມ) ແລະມອບສິດທີ່ ຈຳ ເປັນທັງ ໝົດ ສຳ ລັບ BookstoreDB:

    MariaDB [BookstoreDB]> CREATE USER [email  IDENTIFIED BY 'YourPasswordHere';
    MariaDB [BookstoreDB]> GRANT ALL PRIVILEGES ON  BookstoreDB.* to [email ;
    MariaDB [BookstoreDB]> FLUSH PRIVILEGES;
    
    MariaDB [BookstoreDB]> CREATE USER [email  IDENTIFIED BY 'tecmint';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [BookstoreDB]> GRANT ALL PRIVILEGES ON  BookstoreDB.* to [email ;
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [BookstoreDB]> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.00 sec)
    

    ມີຜູ້ໃຊ້ທີ່ອຸທິດຕົນ, ແຍກຕ່າງຫາກ ສຳ ລັບແຕ່ລະຖານຂໍ້ມູນຈະປ້ອງກັນບໍ່ໃຫ້ເກີດຄວາມເສຍຫາຍຕໍ່ຖານຂໍ້ມູນທັງ ໝົດ ຖ້າບັນຊີດຽວຈະຖືກ ທຳ ລາຍ.

    ເພື່ອ ທຳ ຄວາມສະອາດຂອງ MariaDB, ພິມ ຄຳ ສັ່ງຕໍ່ໄປນີ້ແລະກົດ Enter:

    MariaDB [BookstoreDB]> \! clear
    

    ເພື່ອກວດກາການຕັ້ງຄ່າຂອງຕາຕະລາງທີ່ໃຫ້, ເຮັດ:

    MariaDB [BookstoreDB]> SELECT COLUMNS IN [TABLE NAME HERE ];
    

    ຍົກຕົວຢ່າງ,

    MariaDB [BookstoreDB]> SHOW COLUMNS IN BooksTBL;
    
    MariaDB [BookstoreDB]> SHOW COLUMNS IN BooksTBL;
    +-----------------+--------------+------+-----+-------------------+-----------------------------+
    | Field           | Type         | Null | Key | Default           | Extra                       |
    +-----------------+--------------+------+-----+-------------------+-----------------------------+
    | BookID          | int(11)      | NO   | PRI | NULL              | auto_increment              |
    | BookName        | varchar(100) | NO   |     | NULL              |                             |
    | AuthorID        | int(11)      | NO   | MUL | NULL              |                             |
    | BookPrice       | decimal(6,2) | NO   |     | NULL              |                             |
    | BookLastUpdated | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
    | BookIsAvailable | tinyint(1)   | YES  |     | NULL              |                             |
    +-----------------+--------------+------+-----+-------------------+-----------------------------+
    6 rows in set (0.02 sec)
    

    ການກວດກາຢ່າງໄວວາສະແດງໃຫ້ເຫັນວ່າພາກສະ ໜາມ BookIsAvailable ຍອມຮັບຄ່າ NULL. ເນື່ອງຈາກວ່າພວກເຮົາບໍ່ຕ້ອງການທີ່ຈະອະນຸຍາດ, ພວກເຮົາຈະປ່ຽນຕາຕະລາງດັ່ງຕໍ່ໄປນີ້:

    MariaDB [BookstoreDB]> ALTER TABLE BooksTBL MODIFY BookIsAvailable BOOLEAN NOT NULL;
    

    (ຮູ້ສຶກບໍ່ເສຍຄ່າທີ່ຈະສະແດງຖັນອີກເທື່ອ ໜຶ່ງ - YES ທີ່ຖືກເນັ້ນໃສ່ໃນຮູບຂ້າງເທິງນີ້ຄວນຈະບໍ່ແມ່ນ).

    ສຸດທ້າຍ, ເພື່ອເບິ່ງຖານຂໍ້ມູນທັງ ໝົດ ໃນ server ຂອງທ່ານ, ເຮັດ:

    MariaDB [BookstoreDB]> SHOW DATABASES;
    OR
    MariaDB [BookstoreDB]> SHOW SCHEMAS;
    
     mysql -u bookstoreuser -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 3
    Server version: 10.1.14-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    MariaDB [BookstoreDB]> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | BookstoreDB        |
    | information_schema |
    +--------------------+
    2 rows in set (0.00 sec)
    
    MariaDB [BookstoreDB]> SHOW SCHEMAS;
    +--------------------+
    | Database           |
    +--------------------+
    | BookstoreDB        |
    | information_schema |
    +--------------------+
    2 rows in set (0.00 sec)
    

    ຮູບພາບຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນຜົນຂອງ ຄຳ ສັ່ງຂ້າງເທິງຫຼັງຈາກເຂົ້າເຖິງການກະຕຸ້ນຂອງ MariaDB ເປັນຮ້ານຂາຍປື້ມ (ໃຫ້ສັງເກດວ່າບັນຊີນີ້ບໍ່ສາມາດເບິ່ງ "ຖານຂໍ້ມູນ" ອື່ນໃດນອກ ເໜືອ ຈາກ BookstoreDB ແລະ information_schema (ມີໃຫ້ກັບຜູ້ໃຊ້ທັງ ໝົດ):

    ບົດສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍວິທີການ ດຳ ເນີນງານ DML ແລະວິທີການສ້າງຖານຂໍ້ມູນ, ຕາຕະລາງແລະຜູ້ໃຊ້ທີ່ອຸທິດຕົນໃນຖານຂໍ້ມູນ MariaDB. ນອກຈາກນັ້ນ, ພວກເຮົາໄດ້ແບ່ງປັນ ຄຳ ແນະ ນຳ ບາງຢ່າງທີ່ອາດເຮັດໃຫ້ຊີວິດທ່ານເປັນຜູ້ຄຸ້ມຄອງລະບົບ/ຖານຂໍ້ມູນງ່າຍຂຶ້ນ.

    <

  • ການບໍລິຫານຖານຂໍ້ມູນ MySQL ສ່ວນ - 1
  • ການບໍລິຫານຖານຂໍ້ມູນ MySQL ພາກ - 2
  • ການປັບແລະເພີ່ມປະສິດທິພາບຂອງ MySQL - ພາກທີ 3
  • ຖ້າທ່ານມີ ຄຳ ຖາມໃດໆກ່ຽວກັບບົດຄວາມນີ້, ຢ່າລັງເລທີ່ຈະແຈ້ງໃຫ້ພວກເຮົາຊາບ! ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້ເພື່ອເຂົ້າຫາພວກເຮົາ.