নতুনদের জন্য মাইএসকিউএল/মারিয়াডিবি শিখুন - পর্ব 1


এই নিবন্ধে আমরা কীভাবে একটি ডেটাবেস তৈরি করব (স্কিমা হিসাবেও পরিচিত), টেবিলগুলি (ডেটা টাইপ সহ) এবং কীভাবে মাইএসকিউএল/মারিয়াডিবি সার্ভারে ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (ডিএমএল) অপারেশন সম্পাদন করতে হবে তা ব্যাখ্যা করব।

ধারণা করা হয় যে আপনি এর আগে 1) আপনার লিনাক্স সিস্টেমে প্রয়োজনীয় প্যাকেজ ইনস্টল করেছেন এবং 2) ডাটাবেস সার্ভারের সুরক্ষা উন্নত করতে mysql_secure_installation কার্যকর করেছেন। যদি তা না হয় তবে মাইএসকিউএল/মারিয়াডিবি সার্ভার ইনস্টল করার জন্য নীচের গাইডগুলি অনুসরণ করুন।

  1. লিনাক্স সিস্টেমে সর্বশেষ মাইএসকিউএল ডেটাবেস ইনস্টল করুন
  2. লিনাক্স সিস্টেমে সর্বশেষ মারিয়াডিবি ডাটাবেস ইনস্টল করুন

বংশবৃদ্ধির জন্য, আমরা পুরো নিবন্ধ জুড়ে মারিয়াডিবি-কে কেবলমাত্র উল্লেখ করব, তবে এখানে বর্ণিত ধারণা এবং আদেশগুলি মাইএসকিউএল-তেও প্রযোজ্য।

ডাটাবেস, সারণী এবং অনুমোদিত ব্যবহারকারী তৈরি করা হচ্ছে

আপনি যেমন জানেন, একটি ডাটাবেসকে তথ্যগুলির একটি সংগঠিত সংগ্রহ হিসাবে সাধারণ পদে সংজ্ঞায়িত করা যায়। বিশেষত, মারিয়াডিবি একটি সম্পর্কিত সম্পর্কিত ডাটাবেস ম্যানেজমেন্ট সিস্টেম (আরডিবিএমএস) এবং ডেটাবেসগুলিতে ক্রিয়াকলাপ সম্পাদনের জন্য স্ট্রাকচার কোয়েরি ল্যাঙ্গুয়েজ ব্যবহার করে। অতিরিক্ত হিসাবে, মনে রাখবেন যে মারিয়াডিবি শব্দগুলি ডেটাবেস এবং স্কিমাটি বিনিময়যোগ্যভাবে ব্যবহার করে।

একটি ডাটাবেসে অবিরাম তথ্য সঞ্চয় করতে, আমরা টেবিলগুলি ব্যবহার করব যা সারি সারি ডেটা সঞ্চয় করে। প্রায়শই, দুই বা ততোধিক টেবিলগুলি কোনওভাবে একে অপরের সাথে সম্পর্কিত হবে। এটি সেই সংস্থার অংশ যা সম্পর্কিত ডেটাবেসগুলির ব্যবহারকে চিহ্নিত করে।

BooksDB নামে একটি নতুন ডাটাবেস তৈরি করতে, নিম্নলিখিত কমান্ড সহ মারিয়াডিবি প্রম্পটটি প্রবেশ করান (আপনাকে রুট মারিয়াডিবি ব্যবহারকারীর জন্য পাসওয়ার্ড দেওয়ার জন্য অনুরোধ করা হবে):

 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)]> 

ডাটাবেসটি তৈরি হয়ে গেলে, আমাদের এটিতে কমপক্ষে দুটি সারণী তৈরি করা দরকার। তবে প্রথমে ডেটা ধরণের ধারণাটি অন্বেষণ করা যাক।

মারিয়াডিবি ডেটা প্রকারের পরিচয় দেওয়া হচ্ছে

যেমনটি আমরা আগে ব্যাখ্যা করেছি, সারণি হ'ল ডাটাবেস অবজেক্ট যেখানে আমরা অবিচ্ছিন্ন তথ্য রাখব। প্রতিটি সারণীতে প্রদত্ত ডেটা ধরণের (তথ্যের ধরণ) এমন ক্ষেত্রটি সঞ্চয় করতে পারে এমন দুটি বা ততোধিক ক্ষেত্র (কলাম হিসাবেও পরিচিত) থাকে।

মারিয়াডিবিতে সর্বাধিক প্রচলিত ডেটা হ'ল নিম্নলিখিতগুলি (আপনি অফিসিয়াল মারিয়াডিবি অনলাইন ডকুমেন্টেশনে সম্পূর্ণ তালিকার সাথে পরামর্শ করতে পারেন):

  1. বুলিয়ান 0 কে মিথ্যা এবং অন্য কোনও মানকে সত্য হিসাবে বিবেচনা করে।
  2. টিনআইএনটি, যদি স্বাক্ষরযুক্ত ব্যবহার করা হয়, তবে -128 থেকে 127 পর্যন্ত সীমাটি অন্তর্ভুক্ত করে, অন্যদিকে UNSIGNED পরিসীমা 0 থেকে 255 পর্যন্ত থাকে
  3. ছোট, যদি স্বাক্ষরযুক্ত সঙ্গে ব্যবহৃত হয়, -32768 থেকে 32767 অবধি রয়েছে The UNSIGNED পরিসীমা 0 থেকে 65535 INS, যদি UNSIGNED এর সাথে ব্যবহৃত হয় তবে 0 থেকে 4294967295 এবং অন্যথায় -2147483648 থেকে 2147483647 অবধি coversাকা পড়েছে

দ্রষ্টব্য: TINYINT, ছোট এবং INT এ, ডিফল্ট স্বাক্ষরিত অনুমান করা হয়।

ডাবল (এম, ডি), যেখানে এম হ'ল সংখ্যাগুলির সংখ্যা এবং ডি দশমিক বিন্দুর পরে সংখ্যাগুলির সংখ্যা, একটি ডাবল-স্পষ্টতা ভাসমান-পয়েন্ট সংখ্যা উপস্থাপন করে। যদি UNSIGNED নির্দিষ্ট করা থাকে তবে নেতিবাচক মানগুলি অনুমোদিত হয় না।

  1. ভর্চার (এম) পরিবর্তনশীল দৈর্ঘ্যের একটি স্ট্রিং প্রতিনিধিত্ব করে যেখানে এম বাইটে সর্বাধিক অনুমোদিত কলাম দৈর্ঘ্য (তত্ত্বের 65,535)। বেশিরভাগ ক্ষেত্রে, বাইট সংখ্যাটি অক্ষরের সংখ্যার সাথে সমান হয়, কিছু অক্ষর ব্যতীত 3 বাইট নিতে পারে। উদাহরণস্বরূপ, স্প্যানিশ অক্ষর one একটি অক্ষর উপস্থাপন করে তবে এটি 2 বাইট নেয়
  2. পাঠ্য (এম) সর্বাধিক 65,535 অক্ষর সহ একটি কলামকে উপস্থাপন করে। তবে, যেমনটি ভ্রচার (এম) এর সাথে ঘটে, মাল্টি-বাইট অক্ষর সংরক্ষণ করা থাকলে আসল সর্বাধিক দৈর্ঘ্য হ্রাস পাবে। যদি এম নির্দিষ্ট করা থাকে, কলামটি ক্ষুদ্রতম ধরণের হিসাবে তৈরি হবে যা এই জাতীয় সংখ্যক অক্ষর সংরক্ষণ করতে পারে
  3. মিডিয়ামটেক্সট (এম) এবং লং টেক্সট (এম) টি টেক্সট (এম) এর মতো, কেবলমাত্র সর্বাধিক অনুমোদিত দৈর্ঘ্য যথাক্রমে 16,777,215 এবং 4,294,967,295 টি অক্ষর are

  1. তারিখ YYYY-MM-DD ফর্ম্যাটে তারিখটি উপস্থাপন করে
  2. TIME এইচএইচ: এমএম: এসএস.এসএস ফর্ম্যাটে (ঘন্টা, মিনিট, সেকেন্ড এবং মিলিসেকেন্ড) সময়কে উপস্থাপন করে
  3. DATETIME YYYY-MM-DD HH: MM: SS ফর্ম্যাটে DATE এবং TIME এর সংমিশ্রণ
  4. একটি সারি যুক্ত বা আপডেট হওয়ার মুহুর্তটি সংজ্ঞায়িত করতে TIMESTAMP ব্যবহৃত হয়

এই ডেটা প্রকারগুলি পর্যালোচনা করার পরে, আপনি কোনও টেবিলের প্রদত্ত কলামে কোন ডেটা টাইপ আপনাকে প্রয়োজন তা নির্ধারণ করার জন্য আপনি আরও ভাল অবস্থানে থাকতে পারেন।

উদাহরণস্বরূপ, কোনও ব্যক্তির নাম ভ্রচার (50) এ সহজেই ফিট করতে পারে, অন্যদিকে ব্লগ পোস্টের জন্য একটি পাঠ্য প্রকারের প্রয়োজন হবে (আপনার নির্দিষ্ট প্রয়োজন অনুসারে এম চয়ন করুন)।

সারণী তৈরিতে ডুব দেওয়ার আগে, রিলেশনাল ডেটাবেস সম্পর্কে দুটি মৌলিক ধারণা রয়েছে যা আমাদের পর্যালোচনা করা উচিত: প্রাথমিক এবং বিদেশী কীগুলি।

একটি প্রাথমিক কীতে একটি মান থাকে যা সারণীতে প্রতিটি সারি বা রেকর্ডটিকে স্বতন্ত্রভাবে সনাক্ত করে। অন্যদিকে, দুটি টেবিলের মধ্যে ডেটার মধ্যে একটি লিঙ্ক তৈরি করতে এবং বিদেশী কী অবস্থিত যেখানে সারণীতে সংরক্ষণ করা যেতে পারে এমন ডেটা নিয়ন্ত্রণ করতে একটি বিদেশী কী ব্যবহার করা হয়। প্রাথমিক এবং বিদেশী উভয় কীগুলি সাধারণত আইএনটি হয়।

উদাহরণস্বরূপ, এর BookstoreDB ব্যবহার করুন এবং নীচে লেখক TBL এবং বই TBL নামে দুটি টেবিল তৈরি করুন। নট নয়াল সীমাবদ্ধতা নির্দেশ করে যে সম্পর্কিত ক্ষেত্রের জন্য NULL ব্যতীত অন্য একটি মান প্রয়োজন।

এছাড়াও, টেবিলের মধ্যে একটি নতুন রেকর্ড সন্নিবেশ করা হলে আইএনটি প্রাথমিক কী কলামগুলির মান এক দ্বারা বাড়িয়ে আউটপুট ক্রিমেন্ট ব্যবহার করা হয়।

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]> 

এখন আমরা এগিয়ে যেতে এবং লেখকদের টিবিএল এবং বই টিবিএল এ রেকর্ড সন্নিবেশ শুরু করতে পারি।

আমরা প্রথমে লেখকদের টিবিএল সারণীটি তৈরি করব। কেন? কারণ BookTBL- এ রেকর্ড সন্নিবেশ করার আগে আমাদের লেখক এর মান থাকতে হবে।

আপনার মারিয়াডিবি প্রম্পট থেকে নিম্নলিখিত কোয়েরি সম্পাদন করুন:

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

এরপরে, আমরা লেখক টিবিএল থেকে সমস্ত রেকর্ড নির্বাচন করব। মনে রাখবেন বুকসটিবিএল-র জন্য INSERT ক্যোয়ারী তৈরি করতে প্রতিটি রেকর্ডের জন্য আমাদের অনুমোদিত লেখকের প্রয়োজন হবে।

আপনি যদি একবারে একটি রেকর্ড পুনরুদ্ধার করতে চান তবে একটি শর্তটি ফিরে আসতে অবশ্যই একটি শর্ত পূরণ করতে একটি ক্লজটি ব্যবহার করতে পারেন। উদাহরণ স্বরূপ,

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 ক্যোয়ারী তৈরি করি। বুকআইএসএলভ্যালিভুক্ত 1 এর মানটি নির্দেশ করে যে বইটি স্টকের মধ্যে রয়েছে, অন্যথায় 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

এই মুহুর্তে আমরা বুকসটিবিএলে রেকর্ডগুলি দেখতে একটি নির্বাচন করব। তারপরে পাওলো কোয়েলহোর "দ্য অ্যালকেমিস্ট" এর দাম আপডেট করুন এবং সেই নির্দিষ্ট রেকর্ডটি আবার নির্বাচন করুন।

BookLastUpdated ক্ষেত্রটি এখন কী আলাদা মান দেখায় তা নোট করুন। যেমনটি আমরা আগে ব্যাখ্যা করেছি, একটি টাইমস্ট্যাম্প ক্ষেত্রটি যখন রেকর্ডটি সন্নিবেশ করানো হয় বা শেষবার সংশোধন করা হত তখন মানটি দেখায়।

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]> 

যদিও আমরা এটি এখানে করব না, আপনি যদি আর ব্যবহার না করেন তবে আপনি একটি রেকর্ডও মুছতে পারেন। উদাহরণস্বরূপ, ধরুন আমরা BookTBL থেকে "The Alchemist" মুছতে চাই।

এটি করার জন্য, আমরা নীচে মোছা বিবৃতিটি ব্যবহার করব:

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

আপডেটের ক্ষেত্রে যেমন, মুছে ফেলা দ্বারা প্রভাবিত হতে পারে এমন রেকর্ড (গুলি) দেখার জন্য প্রথমে একটি নির্বাচন করা ভাল ধারণা।

এছাড়াও, সুনির্দিষ্ট রেকর্ড অপসারণ করতে WHERE ধারা এবং একটি শর্ত (BookID = 6) যুক্ত করতে ভুলবেন না। অন্যথায়, আপনি টেবিলের সমস্ত সারি মুছে ফেলার ঝুঁকি চালান!

আপনি যদি দুটি (বা আরও) ক্ষেত্রের সাথে যুক্ত করতে চান তবে আপনি কনক্যাট বিবৃতিটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আসুন আমরা বলি যে আমরা একটি ক্ষেত্রের নাম এবং লেখক এবং "দ্য অ্যালকেমিস্ট (পাওলো কোলোহো)" আকারে আর একটি কলামের আকারে একটি ক্ষেত্রের সমন্বিত ফলাফল সেটটি ফিরে আসতে চাই।

এটি উভয় সারণী (অথরআইডি) দ্বারা ভাগ করা সাধারণ ক্ষেত্রের লেখক TBL এবং BooksTBL এর মধ্যে একটি জয়েন্ট দরকার হবে:

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

যেমন আমরা দেখতে পাচ্ছি, কনক্যাট আমাদেরকে কমা দ্বারা পৃথক করা একাধিক স্ট্রিং এক্সপ্রেশনগুলিতে যোগদান করতে দেয়। আপনি আরও লক্ষ্য করবেন যে আমরা উপসংহারের বর্ণনাকে উপসংহারের ফলাফলের উপস্থাপনের জন্য বেছে নিয়েছি।

উপরের ক্যোয়ারির আউটপুটটি নীচের চিত্রটিতে প্রদর্শিত হবে:

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)

ডাটাবেসে সমস্ত ডিএমএল ক্রিয়াকলাপ সম্পাদন করতে রুট ব্যবহার করা একটি খারাপ ধারণা। এটি এড়াতে, আমরা একটি নতুন মারিয়াডিবি ব্যবহারকারীর অ্যাকাউন্ট তৈরি করতে পারি (আমরা এর নামে বইয়ের দোকানদারি করব) এবং বুকস্টোরডিবির জন্য সমস্ত প্রয়োজনীয় অনুমতি নির্ধারণ করতে পারি:

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 [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)

একটি তাত্ক্ষণিক পরিদর্শন থেকে জানা যায় যে বুকআইএসএলভ্যালিড ফিল্ডটি ন্যূন্য মানগুলি স্বীকার করে। যেহেতু আমরা এটি অনুমোদন করতে চাই না, তাই আমরা নীচে টেবিলটি পরিবর্তন করব:

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

(কলামগুলি আবার নির্দ্বিধায় দেখান - উপরের চিত্রটিতে হাইলাইট করা হ্যাঁ এখন কোনও নম্বর হওয়া উচিত)।

অবশেষে, আপনার সার্ভারে সমস্ত ডাটাবেস দেখতে, করুন:

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)

নীচের চিত্রটি বইয়ের দোকানদাতা হিসাবে মারিয়াডিবি প্রম্পটে অ্যাক্সেস করার পরে উপরের কমান্ডের ফলাফল দেখায় (নোট করুন যে এই অ্যাকাউন্টটি কীভাবে বুকস্টোরডিবি এবং তথ্য_সেমিমা (সমস্ত ব্যবহারকারীর জন্য উপলব্ধ) ব্যতীত অন্য কোনও ডাটাবেস "দেখতে" পারে না:

সারসংক্ষেপ

এই নিবন্ধে আমরা কীভাবে ডিএমএল ক্রিয়াকলাপ পরিচালনা করবেন এবং মারিয়াডিবি ডাটাবেসে ডেটাবেস, টেবিল এবং নিবেদিত ব্যবহারকারীদের কীভাবে তৈরি করবেন তা ব্যাখ্যা করেছি। অতিরিক্তভাবে, আমরা কয়েকটি টিপস শেয়ার করেছি যা আপনার সিস্টেম/ডাটাবেস প্রশাসক হিসাবে আপনার জীবনকে আরও সহজ করে তুলতে পারে।

  1. মাইএসকিউএল ডাটাবেস প্রশাসনের অংশ - 1
  2. মাইএসকিউএল ডাটাবেস প্রশাসনের অংশ - 2
  3. মাইএসকিউএল পারফরম্যান্স টিউনিং এবং অপটিমাইজেশন - পার্ট 3

এই নিবন্ধটি সম্পর্কে আপনার যদি কোনও প্রশ্ন থাকে তবে আমাদের জানাতে দ্বিধা করবেন না! আমাদের কাছে পৌঁছানোর জন্য নিচের মন্তব্য ফর্মটি নির্দ্বিধায় ব্যবহার করুন।