MySQL විධාන මාර්ගෝපදේශය: ආරම්භක සිට මධ්‍යම මට්ටමේ මූලික කරුණු, CRUD, පරිශීලකයන්, බැකප් සහ ගැටළු නිරාකරණය

目次

1. හැඳින්වීම

MySQL යනු දත්ත සමුදා කළමනාකරණ පද්ධති (DBMS) අතර පුළුල් ලෙස භාවිතා වන විවෘත-මූලාශ්‍ර සම්බන්ධිත දත්ත සමුදායකි. එය වෙබ් යෙදුම් සහ ව්‍යාපාරික පද්ධති සඳහා විශේෂයෙන් ජනප්‍රිය වේ. මෙම ලිපියේ, අපි MySQL නියමිත මූලික විධාන විස්තරාත්මකව පැහැදිලි කර, අන්තර්ගතය එසේම සංවිධානය කරමු, එවිට ආරම්භක සිට මධ්‍යම පරිශීලකයන් ද සුවිශේෂීව ඉගෙන ගත හැක.

1.1 MySQL යනු කුමක්ද?

MySQL යනු සම්බන්ධිත දත්ත සමුදායක් (RDB) කළමනාකරණය සඳහා භාවිතා කරන මෘදුකාංගයකි. දත්ත වගු වල සුරැකුම් කර ඇති අතර, ඔබ SQL (Structured Query Language) භාවිතා කර දත්ත සංස්කරණය කරයි. MySQL සතුව පහත ලක්ෂණ ඇත:

  • විවෘත-මූලාශ්‍ර සහ ඕනෑම කෙනෙකුට නොමිලේ භාවිතා කළ හැකි
  • වේගවත් සහ සුළු බර කාර්ය සාධනය
  • බොහෝ වැඩසටහන් භාෂා සමඟ අනුකූල (උදාහරණként PHP, Python, Java)
  • විශාල පරිමාණ දත්ත සමුදා පාලනය සඳහා සුදුසු

1.2 MySQL විධාන ඉගෙන ගැනීමේ ප්‍රතිලාභ

MySQL කාර්යක්ෂමව භාවිතා කිරීමට, මූලික විධාන අවබෝධ කර ගැනීම වැදගත් වේ. ප්‍රධාන ප්‍රතිලාභ වන්නේ:

  • වඩා කාර්යක්ෂම දත්ත කළමනාකරණය : SQL විධාන පාලනය කිරීමෙන් ඔබට දත්ත ඉක්මනින් ලබා ගැනීමට, යාවත්කාලීන කිරීමට, මකා දැමීමට හැකිය.
  • වැලඳුම් ක්‍රියාවලීන් ස්වයංක්‍රීය කිරීම : ස්ක්‍රිප්ට් භාවිතයෙන් දත්ත සමුදා මෙහෙයුම් ස්වයංක්‍රීය කළ හැක.
  • සුමට දෝෂ හසුරුවීම : ගැටළු ඇති වූ විට, සුදුසු SQL විධාන භාවිතයෙන් ඒවා විසඳිය හැක.

1.3 මෙම ලිපියෙන් ඔබ ඉගෙන ගන්නා දේ

මෙම ලිපිය පහත විෂයයන් විස්තරාත්මකව පැහැදිලි කරයි:

  • මූලික MySQL මෙහෙයුම් (ආරම්භ කිරීම, සම්බන්ධ වීම, සහ දත්ත සමුදා මෙහෙයුම්)
  • දත්ත එකතු කිරීම, ලබා ගැනීම, යාවත්කාලීන කිරීම, මකා දැමීම (CRUD මෙහෙයුම්)
  • පරිශීලක කළමනාකරණය සහ අවසර සැකසුම්
  • ප්‍රයෝජනවත් විධාන සහ ගැටළු විසඳුම්

ඊළඟට, අපි එක් එක් කොටසක් පියවරෙන් පියවර ගමන් කරමු. මූලික MySQL මෙහෙයුම් වලින් ආරම්භ කරමු.

2. මූලික MySQL මෙහෙයුම් (ආරම්භක-හිතකාමී)

2.1 MySQL ආරම්භ කිරීම සහ සම්බන්ධ වීම

2.1.1 MySQL ආරම්භ කිරීම

MySQL සේවාදායක වැඩසටහනක් ලෙස ක්‍රියා කරන බැවින්, පළමුව සේවාදායකය ආරම්භ කළ යුතුය. ආරම්භ කිරීමේ ක්‍රමය මෙහෙයුම් පද්ධතිය අනුව වෙනස් වේ.

Linux / macOS හි ආරම්භ කිරීම

Linux සහ macOS හි, systemctl විධානය භාවිතා කර MySQL ආරම්භ කළ හැක.

sudo systemctl start mysql

MySQL ක්‍රියාත්මක වෙයිදැයි පරීක්ෂා කරන්න

sudo systemctl status mysql

ඔබට “active (running)” පෙන්වෙනවා නම්, MySQL සාමාන්‍ය ලෙස ක්‍රියා කරයි.

Windows හි ආරම්භ කිරීම

Windows හි, MySQL සාමාන්‍යයෙන් සේවාවක් ලෙස ක්‍රියා කරයි, එබැවින් net start විධානය භාවිතා කළ හැක.

net start mysql

හෝ, ඔබ XAMPP භාවිතා කරන්නේ නම්, XAMPP පාලන පැනලය විවෘත කර “MySQL” සඳහා “Start” බොත්තම ක්ලික් කරන්න.

2.1.2 MySQL වෙත සම්බන්ධ වීම

MySQL වෙත සම්බන්ධ වීමට, mysql විධානය භාවිතා කරන්න. මූලික සම්බන්ධතා විධානය පහත පරිදි වේ:

mysql -u username -p
root පරිශීලකයා ලෙස සම්බන්ධ වීම

පෙරනිමියෙන්, root පරිශීලකයා පරිපාලක ලෙස සකසා ඇත. පහත විධානයෙන් සම්බන්ධ විය හැක:

mysql -u root -p

Enter ඔබ ඔබන්නා පසු, මුරපදයක් ඇතුළත් කිරීමට ඉල්ලීමක් ලැබේ. නිවැරදි මුරපදය ඇතුළත් කළහොත්, MySQL වෙත පිවිසිය හැක.

නියමිත හෝස්ට් එකකට සම්බන්ධ වීම

දුරස්ථ MySQL සේවාදායකයකට සම්බන්ධ වීමට, -h විකල්පය භාවිතා කරන්න.

mysql -h hostname -u username -p

උදාහරණként, 192.168.1.100 හි MySQL සේවාදායකයට සම්බන්ධ වීමට, මෙසේ ලියන්න:

mysql -h 192.168.1.100 -u root -p
පෝට් අංකයක් නියම කර සම්බන්ධ වීම

පෙරනිමි MySQL පෝට් අංකය 3306 වේ. එය වෙනස් කර ඇත්නම්, -P විකල්පය භාවිතා කර නියම කළ හැක.

mysql -h 192.168.1.100 -P 3307 -u root -p

2.2 මූලික MySQL විධාන

MySQL වෙත සම්බන්ධ වූ පසු, මූලික විධාන කිහිපයක් ක්‍රියාත්මක කර බලන්න.

2.2.1 MySQL අනුවාදය පරීක්ෂා කිරීම

ඔබ දැනට භාවිතා කරන MySQL අනුවාදය පරීක්ෂා කිරීමට, පහත විධානය ක්‍රියාත්මක කරන්න:

SELECT VERSION();

2.2.2 වත්මන් දත්ත සමුදාය පරීක්ෂා කිරීම

වර්තමානයේ තෝරාගෙන ඇති දත්ත සමුදාය පරීක්ෂා කිරීමට, මෙය ක්‍රියාත්මක කරන්න:

SELECT DATABASE();

දත්ත සමුදායක් තෝරා නොගෙන ඇත්නම්, NULL ආපසු ලැබේ.

2.2.3 ලබා ගත හැකි දත්ත සමුදා ලැයිස්තුව

MySQL හි පවතින දත්ත සමුදා ලැයිස්තුව ලබා ගැනීමට, මෙය භාවිතා කරන්න:

SHOW DATABASES;

2.3 පොදු දෝෂ සහ විසඳුම්

2.3.1 “Access denied” දෝෂය

උදාහරණ දෝෂය:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
සකස් කිරීමේ ක්‍රමය:
  1. මුරපදය නිවැරදිදැයි පරීක්ෂා කරන්න
  2. root අවසර පරීක්ෂා කර නැවත සකසන්න
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEW_PASSWORD';
    FLUSH PRIVILEGES;
    

2.3.2 “‘localhost’ හි MySQL සේවාදායකයට සම්බන්ධ විය නොහැක” දෝෂය

උදාහරණ දෝෂය:

ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
සකස් කිරීමේ ක්‍රමය:
  1. MySQL ක්‍රියාත්මක වෙයිදැයි පරීක්ෂා කරන්න ( systemctl status mysql )
  2. MySQL නැවත ආරම්භ කරන්න
    sudo systemctl restart mysql
    

2.4 සාරාංශය

මෙම කොටසේ, MySQL ආරම්භ කිරීම සහ එයට සම්බන්ධ වීම පිළිබඳව අපි පැහැදිලි කළෙමු.

3. දත්ත ගබඩා මෙහෙයුම්

MySQL හි, ඔබ දත්ත ගබඩාව (database) එකක් සාදා දත්ත කළමනාකරණය කරයි, එවිට වගු (tables) ගබඩාවේ ඇතුළත තබා තොරතුරු සංවිධානය කරයි. මෙම කොටසේ, දත්ත ගබඩා සාදීම, තෝරා ගැනීම, ලැයිස්තුගත කිරීම, මකා දැමීම වැනි මූලික මෙහෙයුම් පිළිබඳව විස්තරාත්මකව පැහැදිලි කරමු.

3.1 දත්ත ගබඩාවක් සාදීම

MySQL හි දත්ත ගබඩාවක් සාදීමට, CREATE DATABASE විධානය භාවිතා කරන්න.

3.1.1 මූලික දත්ත ගබඩාවක් සාදන්න

පහත SQL විධානය ක්‍රියාත්මක කළහොත්, my_database නමින් නව දත්ත ගබඩාවක් සාදිය හැකිය.

CREATE DATABASE my_database;
සාර්ථකව සාදන විට පණිවුඩය
Query OK, 1 row affected (0.01 sec)

3.1.2 දැනටමත් පවතින දත්ත ගබඩාවක් සාදීමට උත්සාහ කිරීම

දත්ත ගබඩාව දැනටමත් පවතින විට, පහත පරිදි දෝෂයක් පෙන්වයි:

ERROR 1007 (HY000): Can't create database 'my_database'; database exists

මෙම දෝෂය වැළැක්වීමට, IF NOT EXISTS විකල්පය එකතු කිරීම ප්‍රයෝජනවත් වේ.

CREATE DATABASE IF NOT EXISTS my_database;

ඔබ මෙම විධානය ක්‍රියාත්මක කළ විට, දත්ත ගබඩාව පවතින්නේ නැති විට පමණක් සාදනු ලැබේ.

3.2 දත්ත ගබඩා ලැයිස්තුගත කිරීම

වත්මන් MySQL සේවාදායකයේ පවතින දත්ත ගබඩා පරීක්ෂා කිරීමට, SHOW DATABASES විධානය භාවිතා කරන්න.

SHOW DATABASES;

උදාහරණ ප්‍රතිඵලය:

+--------------------+
| Database          |
+--------------------+
| information_schema |
| my_database       |
| mysql             |
| performance_schema |
| sys               |
+--------------------+

සටහන: mysql සහ information_schema වැනි පද්ධති දත්ත ගබඩා MySQL පරිපාලනය සඳහා අවශ්‍ය වේ.

3.3 දත්ත ගබඩාව තෝරා ගැනීම

MySQL හි, ඔබ භාවිතා කිරීමට අවශ්‍ය දත්ත ගබඩාව තෝරා ගත යුතුය. දත්ත ගබඩාව නියම කිරීමට, USE විධානය ක්‍රියාත්මක කරන්න.

USE my_database;
සාර්ථක විධානයේ පණිවුඩය
Database changed

වර්තමානයේ තෝරාගෙන ඇති දත්ත ගබඩාව තහවුරු කිරීමට, පහත විධානය භාවිතා කරන්න:

SELECT DATABASE();

උදාහරණ ප්‍රතිඵලය:

+------------+
| DATABASE() |
+------------+
| my_database |
+------------+

3.4 දත්ත ගබඩාව මකා දැමීම

ඔබට අවශ්‍ය නොවන දත්ත ගබඩාවක් මකා දැමීමට, DROP DATABASE විධානය භාවිතා කරන්න.

DROP DATABASE my_database;

3.4.1 මකා දැමීමට පෙර වැදගත් සටහන්

  • ඉතා අවධානයෙන්: දත්ත ගබඩාව මකා දැමීමෙන් සියලු දත්ත මකා යයි!
  • අනවශ්‍ය දෝෂ වලින් වැළැක්වීමට, IF EXISTS එකතු කළ හැකිය.
    DROP DATABASE IF EXISTS my_database;
    

my_database නොපවතින විටත්, මෙම විධානය දෝෂයක් නොදැක්වී අවසන් වේ.

3.5 පොදු දෝෂ සහ විසඳුම්

3.5.1 “පරිශීලකයාට ප්‍රවේශය ප්‍රතික්ෂේප කරන ලදී” දෝෂය

උදාහරණ දෝෂය:

ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'
සකස් කිරීමේ ක්‍රමය
  • GRANT විධානය භාවිතා කර අවසර ලබා දෙන්න
    GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
    FLUSH PRIVILEGES;
    

3.5.2 “දත්ත ගබඩාව මකා දැමිය නොහැක” දෝෂය

උදාහරණ දෝෂය:

ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)
සකස් කිරීමේ ක්‍රමය
  • MySQL නැවත ආරම්භ කරන්න
    sudo systemctl restart mysql
    
  • පළමුව my_database තුළ ඇති සියලු වගු මකා දැමීමෙන් පසු, DROP DATABASE ක්‍රියාත්මක කරන්න.

3.6 සාරාංශය

මෙම කොටසේ, ඔබ දත්ත ගබඩා සාදීම, තෝරා ගැනීම, ලැයිස්තුගත කිරීම, මකා දැමීම පිළිබඳව ඉගෙන ගත්තා.

4. වගු මෙහෙයුම්

After creating a database, you need to create tables inside it to organize data. A table is like a grid for storing data, consisting of columns and rows (records).

දත්ත ගබඩාවක් සෑදීමෙන් පසු, දත්ත සංවිධානය කිරීම සඳහා ඔබට එහි වගු සෑදිය යුතුය. වගුවක් යනු දත්ත ගබඩා කිරීම සඳහා තීරු සහ පේළි (වාර්තා) සමඟ ග්‍රිඩ් වැනි එකකි.

In this section, we will explain basic operations such as creating, checking, listing, and deleting tables in detail.

මෙම කොටසේ, වගු සෑදීම, පරීක්ෂා කිරීම, ලැයිස්තුගත කිරීම, සහ මකා දැමීම වැනි මූලික ක්‍රියාකාරකම් විස්තරාත්මකව පැහැදිලි කරමු.

4.1 Creating a Table

To create a table, use the CREATE TABLE command. If you run the following SQL, it creates a table named users.

වගුවක් සෑදීමට, CREATE TABLE විධානය භාවිතා කරන්න. පහත SQL ක්‍රියාත්මක කළහොත්, users නමින් වගුවක් සෑදේ.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.1.1 Explanation of each element when creating a table

  • id INT AUTO_INCREMENT PRIMARY KEY
  • id තීරුව integer (INT) එකක් වන අතර, ස්වයංක්‍රීයව වැඩිවේ (AUTO_INCREMENT) සහ ප්‍රාථමික යතුර (PRIMARY KEY) ලෙස සකසයි.
  • name VARCHAR(50) NOT NULL
  • name තීරුව අක්ෂර (VARCHAR) 50 දක්වා ඇති අතර, NOT NULL නිසා අවශ්‍ය වේ.
  • email VARCHAR(100) UNIQUE NOT NULL
  • email තීරුව අක්ෂර 100 දක්වා ඇති අතර, UNIQUE සීමාව මගින් අනුපිළිවෙළ නොවන ඊමේල් ලිපින වලින් වැළකී සිටී.
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  • created_at තීරුව ස්වයංක්‍රීයව වත්මන් දිනය/වේලාව ප්‍රාථමික අගයක් ලෙස සකසයි.
Message when successful
සාර්ථක වූ විට පණිවුඩය
Query OK, 0 rows affected (0.02 sec)

4.2 Checking Table Structure

To check the structure of a table you created, use DESC or SHOW COLUMNS.

ඔබ සෑදූ වගුවක ව්‍යුහය පරීක්ෂා කිරීමට, DESC හෝ SHOW COLUMNS භාවිතා කරන්න.

DESC users;

Or

හෝ

SHOW COLUMNS FROM users;

Example output:

උදාහරණ ප්‍රතිඵලය:

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50)  | NO   |     | NULL              |                |
| email      | varchar(100) | NO   | UNI | NULL              |                |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
+------------+--------------+------+-----+-------------------+----------------+

4.3 Listing Tables

To list the tables that exist in the current database, run the SHOW TABLES command.

වත්මන් දත්ත ගබඩාවේ පවතින වගු ලැයිස්තුගත කිරීමට, SHOW TABLES විධානය ක්‍රියාත්මක කරන්න.

SHOW TABLES;

Example output:

උදාහරණ ප්‍රතිඵලය:

+------------------+
| Tables_in_mydb   |
+------------------+
| users            |
| products         |
| orders           |
+------------------+

4.4 Deleting a Table

To delete a table you no longer need, use the DROP TABLE command.

ඔබට අවශ්‍ය නොවන වගුවක් මකා දැමීමට, DROP TABLE විධානය භාවිතා කරන්න.

DROP TABLE users;

4.4.1 Important notes when deleting a table

  • Be careful: deleting a table permanently removes the data!
  • ඉතා සැලකිලිමත් වන්න: වගුවක් මකා දැමීමෙන් දත්ත ස්ථිරවම මැකේ!
  • To avoid errors when deleting, add IF EXISTS .
  • මකා දැමීමේ දෝෂ වැළැක්වීමට, IF EXISTS එකතු කරන්න.
    DROP TABLE IF EXISTS users;
    
Message when successful
සාර්ථක වූ විට පණිවුඩය
Query OK, 0 rows affected (0.01 sec)

4.5 Resetting Table Data (Delete All Rows)

If you want to keep the table structure but delete only the data inside, use TRUNCATE TABLE.

වගුවේ ව්‍යුහය රැකගෙන ඇතුළේ දත්ත පමණක් මැකීමට, TRUNCATE TABLE භාවිතා කරන්න.

TRUNCATE TABLE users;
Difference from DROP TABLE
DROP TABLE සමඟ වෙනස
  • DROP TABLE deletes the table itself.
  • DROP TABLE වගුවම මකා දමයි.
  • TRUNCATE TABLE deletes only the data and keeps the table structure.
  • TRUNCATE TABLE දත්ත පමණක් මකා දී, වගුවේ ව්‍යුහය රැක ගනී.

4.6 Common Errors and Fixes

4.6.1 “Table already exists” error

Example error:

උදාහරණ දෝෂය:

ERROR 1050 (42S01): Table 'users' already exists
How to fix
විසඳුම් ක්‍රමය
  • Check existing tables

  • පවතින වගු පරීක්ෂා කරන්න

    SHOW TABLES;
    
  • Create the table with IF NOT EXISTS

  • IF NOT EXISTS සමඟ වගුව සෑදන්න

    CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

4.6.2 “Unknown table” error

Example error:

උදාහරණ දෝෂය:

ERROR 1051 (42S02): Unknown table 'users'
How to fix
විසඳුම් ක්‍රමය
  • SHOW TABLES; භාවිතයෙන් වගුව පවතිනදැයි පරීක්ෂා කරන්න
  • එය පවතින්නේ නැත්නම්, IF EXISTS එකතු කරන්න
    DROP TABLE IF EXISTS users;
    

4.7 සාරාංශය

මෙම කොටස තුළ, අපි මූලික MySQL වගු මෙහෙයුම්: නිර්මාණය, පරීක්ෂා කිරීම, සහ වගු මකා දැමීම ආදිය ආවරණය කළෙමු.