ค้นหาเว็บไซต์

เรียนรู้ MySQL/MariaDB สำหรับผู้เริ่มต้น - ตอนที่ 1


ในบทความนี้ เราจะแสดงวิธีสร้างฐานข้อมูล (หรือที่เรียกว่าสคีมา) ตาราง (พร้อมประเภทข้อมูล) และอธิบายวิธีดำเนินการ ภาษาการจัดการข้อมูล (DML ) การดำเนินการกับข้อมูลบนเซิร์ฟเวอร์ MySQL/MariaDB

ถือว่าคุณได้ 1) ติดตั้งแพ็คเกจที่จำเป็นบนระบบ Linux ของคุณก่อนหน้านี้ และ 2) ดำเนินการ mysql_secure_installation เพื่อปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ฐานข้อมูล . ถ้าไม่ ให้ทำตามคำแนะนำด้านล่างเพื่อติดตั้งเซิร์ฟเวอร์ MySQL/MariaDB

  1. ติดตั้งฐานข้อมูล MySQL ล่าสุดในระบบ Linux
  2. ติดตั้งฐานข้อมูล MariaDB ล่าสุดในระบบ Linux

เพื่อความกระชับ เราจะอ้างอิงถึง MariaDB ตลอดทั้งบทความนี้โดยเฉพาะ แต่แนวคิดและคำสั่งที่อธิบายไว้ที่นี่ก็นำไปใช้กับ MySQL ได้เช่นกัน

การสร้างฐานข้อมูล ตาราง และผู้ใช้ที่ได้รับอนุญาต

ดังที่คุณทราบ ฐานข้อมูลสามารถกำหนดได้ในรูปแบบง่ายๆ ว่าเป็นการรวบรวมข้อมูลที่จัดระเบียบ โดยเฉพาะอย่างยิ่ง MariaDB เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) และใช้ Structure Query Language เพื่อดำเนินการกับฐานข้อมูล นอกจากนี้ โปรดทราบว่า MariaDB ใช้ฐานข้อมูลเงื่อนไขและสคีมาสลับกันได้

หากต้องการจัดเก็บข้อมูลถาวรในฐานข้อมูล เราจะใช้ ตาราง ที่จัดเก็บแถวข้อมูล บ่อยครั้งที่ตารางตั้งแต่สองตารางขึ้นไปจะเชื่อมโยงกันในทางใดทางหนึ่ง นั่นเป็นส่วนหนึ่งขององค์กรที่กำหนดลักษณะการใช้ฐานข้อมูลเชิงสัมพันธ์

การสร้างฐานข้อมูลใหม่

หากต้องการสร้างฐานข้อมูลใหม่ชื่อ BooksDB ให้ป้อนพรอมต์ MariaDB ด้วยคำสั่งต่อไปนี้ (คุณจะได้รับแจ้งให้ป้อนรหัสผ่านสำหรับผู้ใช้ root MariaDB):

[root@TecMint ~]# 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):

ตัวเลข :
  1. BOOLEAN ถือว่า 0 เป็นเท็จ และค่าอื่นๆ ถือว่าเป็นจริง
  2. TINYINT หากใช้กับ SIGNED จะครอบคลุมช่วงตั้งแต่ -128 ถึง 127 ในขณะที่ช่วง UNSIGNED คือ 0 ถึง 255
  3. SMALLINT หากใช้กับ SIGNED จะครอบคลุมช่วงตั้งแต่ -32768 ถึง 32767 ช่วง UNSIGNED คือ 0 ถึง 65535
  4. INT หากใช้กับ UNSIGNED จะครอบคลุมช่วงตั้งแต่ 0 ถึง 4294967295 และ -2147483648 ถึง 2147483647 มิฉะนั้น

หมายเหตุ: ใน TINYINT, SMALLINT และ INT จะใช้ SIGNED เริ่มต้น

DOUBLE(M, D) โดยที่ M คือจำนวนหลักทั้งหมด และ D คือจำนวนหลักหลังจุดทศนิยม แสดงถึง จำนวนจุดลอยตัวที่มีความแม่นยำสองเท่า หากระบุ UNSIGNED จะไม่อนุญาตให้ใช้ค่าลบ

สตริง :
  1. VARCHAR(M) หมายถึงสตริงที่มีความยาวผันแปร โดยที่ M คือความยาวคอลัมน์สูงสุดที่อนุญาตในหน่วยไบต์ (65,535 ในทางทฤษฎี) ในกรณีส่วนใหญ่ จำนวนไบต์จะเท่ากับจำนวนอักขระ ยกเว้นอักขระบางตัวที่อาจมีขนาดถึง 3 ไบต์ ตัวอย่างเช่น ตัวอักษรภาษาสเปน ñ แทนอักขระหนึ่งตัว แต่มีขนาดถึง 2 ไบต์
  2. TEXT(M) หมายถึงคอลัมน์ที่มีความยาวสูงสุด 65,535 อักขระ อย่างไรก็ตาม เมื่อมันเกิดขึ้นกับ VARCHAR(M) ความยาวสูงสุดที่แท้จริงจะลดลงหากจัดเก็บอักขระแบบหลายไบต์ หากระบุ M คอลัมน์จะถูกสร้างขึ้นเป็นประเภทที่เล็กที่สุดที่สามารถจัดเก็บจำนวนอักขระดังกล่าวได้
  3. MEDIUMTEXT(M) และ LONGTEXT(M) คล้ายกับ TEXT(M) เพียงแต่ความยาวสูงสุดที่อนุญาตคือ 16,777,215 และ 4,294,967,295 อักขระ ตามลำดับ
วันและเวลา:
  1. DATE แสดงวันที่ในรูปแบบ YYYY-MM-DD
  2. TIME แสดงเวลาในรูปแบบ HH:MM:SS.sss (ชั่วโมง นาที วินาที และมิลลิวินาที)
  3. DATETIME คือการรวมกันของ DATE และ TIME ในรูปแบบ YYYY-MM-DD HH:MM:SS
  4. TIMESTAMP ใช้เพื่อกำหนดช่วงเวลาที่เพิ่มหรืออัปเดตแถว

หลังจากตรวจสอบประเภทข้อมูลเหล่านี้แล้ว คุณจะอยู่ในตำแหน่งที่ดีขึ้นในการพิจารณาว่าคุณต้องกำหนดประเภทข้อมูลใดให้กับคอลัมน์ที่กำหนดในตาราง

ตัวอย่างเช่น ชื่อของบุคคลสามารถพอดีกับ VARCHAR(50) ได้อย่างง่ายดาย ในขณะที่โพสต์ในบล็อกจะต้องมีประเภท TEXT (เลือก M เป็น ตามความต้องการเฉพาะของคุณ)

การสร้างตารางด้วยคีย์หลักและคีย์ต่างประเทศ

ก่อนที่เราจะเจาะลึกในการสร้างตาราง มีแนวคิดพื้นฐานสองประการเกี่ยวกับฐานข้อมูลเชิงสัมพันธ์ที่เราจำเป็นต้องตรวจสอบ: คีย์ หลัก และ ต่างประเทศ

คีย์หลักประกอบด้วยค่าที่ระบุแต่ละแถวหรือบันทึกในตารางโดยไม่ซ้ำกัน ในทางกลับกัน คีย์ต่างประเทศ ใช้เพื่อสร้างการเชื่อมโยงระหว่างข้อมูลในสองตาราง และเพื่อควบคุมข้อมูลที่สามารถจัดเก็บไว้ในตารางที่มีคีย์ต่างประเทศอยู่ โดยทั่วไปทั้งคีย์หลักและคีย์ต่างประเทศนั้นเป็น INT

เพื่อแสดงให้เห็น ให้ใช้ BookstoreDB และสร้างตาราง 2 ตารางชื่อ 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 และ SELECT บันทึกเฉพาะนั้นอีกครั้ง

โปรดทราบว่าตอนนี้ฟิลด์ 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 ก่อนเพื่อดูบันทึกที่อาจได้รับผลกระทบจาก ลบ

นอกจากนี้ อย่าลืมเพิ่มส่วนคำสั่ง WHERE และเงื่อนไข (BookID=6) เพื่อเลือกระเบียนที่ต้องการลบ มิฉะนั้น คุณจะเสี่ยงต่อการลบแถวทั้งหมดในตาราง!

หากคุณต้องการเชื่อมสองช่อง (หรือมากกว่า) เข้าด้วยกัน คุณสามารถใช้คำสั่ง CONCAT ตัวอย่างเช่น สมมติว่าเราต้องการส่งคืนชุดผลลัพธ์ที่ประกอบด้วยช่องหนึ่งที่มีชื่อหนังสือและผู้แต่งในรูปแบบของ “The Alchemist (Paulo Coelho) ” และอีกคอลัมน์หนึ่งที่มีราคา

โดยจะต้องมีการ เข้าร่วม ระหว่าง 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)

สร้างผู้ใช้เพื่อเข้าถึงฐานข้อมูล BookstoreDB

การใช้ root เพื่อดำเนินการ DML ทั้งหมดในฐานข้อมูลถือเป็นความคิดที่ไม่ดี เพื่อหลีกเลี่ยงปัญหานี้ เราสามารถสร้างบัญชีผู้ใช้ MariaDB ใหม่ได้ (เราจะตั้งชื่อว่า ผู้ใช้ร้านหนังสือ) และกำหนดสิทธิ์ที่จำเป็นทั้งหมดสำหรับ BookstoreDB:

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

MariaDB [BookstoreDB]> GRANT ALL PRIVILEGES ON  BookstoreDB.* to bookstoreuser@localhost;
Query OK, 0 rows affected (0.00 sec)

MariaDB [BookstoreDB]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

การมีผู้ใช้เฉพาะแยกกันสำหรับแต่ละฐานข้อมูลจะป้องกันความเสียหายต่อฐานข้อมูลทั้งหมดหากบัญชีเดียวถูกบุกรุก

เคล็ดลับ MySQL เพิ่มเติม

หากต้องการล้างข้อความแจ้ง 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;

(แสดงคอลัมน์อีกครั้งได้ตามใจชอบ โดยที่ไฮไลต์ ใช่ ในภาพด้านบนควรเป็น ไม่)

สุดท้าย หากต้องการดูฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ของคุณ ให้ทำดังนี้

MariaDB [BookstoreDB]> SHOW DATABASES;
OR
MariaDB [BookstoreDB]> SHOW SCHEMAS;
[root@TecMint ~]# 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 นอกจากนี้เรายังแบ่งปันเคล็ดลับเล็กๆ น้อยๆ ที่อาจทำให้ชีวิตของคุณในฐานะผู้ดูแลระบบ/ฐานข้อมูลง่ายขึ้น

  1. การบริหารฐานข้อมูล MySQL ตอนที่ - 1
  2. การบริหารฐานข้อมูล MySQL ตอนที่ - 2
  3. การปรับแต่งประสิทธิภาพและการเพิ่มประสิทธิภาพ MySQL – ตอนที่ 3

หากคุณมีคำถามใดๆ เกี่ยวกับบทความนี้ โปรดอย่าลังเลที่จะแจ้งให้เราทราบ! โปรดใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเรา