اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش دستورات پایه ای MySQL - بخش 1

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش دستورات پایه ای MySQL - بخش 1

    پایگاه داده (دیتابیس) مجموعه ای از داده های ذخیره شده ساخت یافته به صورت الکترونیکی می باشد. مفهوم Database توسط اجداد ما نیز شناخته شده بود، حتی زمانی که هیچ کامپیوتری وجود نداشت. اما ایجاد و نگهداری پایگاه داده شغل خیلی خسته کننده ای بود. در یک پایگاه داده دستی با حدود 100 صفحه، اگر شما بخواهید کارمندانی را که حداقل حقوق آنها زیر 10k است را جستجو کنید، تصور کنید که چقدر مشکل است که این کار را به طور دستی انجام دهید.

    در جهان امروز شما نمی توانید از پایگاه داده ها فرار کنید، همین الان میلیون ها پایگاه داده در جهان در حال کار کردن و ذخیره و بازیابی داده های استراتژیک، رکوردهای کارمندان و یا تکنولوژی های وب می باشند.


    پایگاه داده ها اغلب فرایندهای BackEnd نامیده می شوند، به دلیل اینکه آن برای کاربران نهایی قابل رویت نیست و کاربران نهایی به طور مستقیم با پایگاه داده در ارتباط نیستند. آنها بر روی فرایند های FrountEnd یعنی PHP ،VB ،ASP.NET و ... کار می کنند.

    چندین پایگاه داده سروری و کلاینتی همانند Oracle ،MySQL ،MySQLi ،MariaDB ،MongoDBوجود دارد. ساختار تمام این پایگاه داده ها کم و بیش شبیه هم است. اگر بر یکی از آنها تسط داشته باشید به این معنی است که می توانید بیشتر آنها را کنترل کنید و همچنین query گرفتن از پایگاه داده ها برایتان خیلی ساده و جذاب خواهد شد.

    بیایید با کوئری های ساده شروع کنیم. ما از پایگاه داده MySQL استفاده خواهیم کرد که همراه اکثر توزیع های لینوکسی است و شما می توانید آنرا از طریق ریپازیتوری های لینوکس آنرا نصب کنید.

    خوب، یک query دیتابیس یک قطعه کد ساده است، که برای بدست آوردن نتیجه های مورد نیاز به دیتابیس ارسال می شود.


    همچنین پیشنهاد میشود مقالات زیر را مطالعه کنید.

    آموزش کامل نصب آخرین ورژن MariaDB 10 در لینوکس CentOS/RHEL - Debian/Ubuntu
    آموزش نصب MySQL 8.0 روی Ubuntu 18.04
    آموزش نصب MySQL 5.7.9 در RedHat/CentOS 7-6-5 و Fedora 21-23
    20 نمونه از دستورات MySQL (Mysqladmin) برای مدیریت دیتابیس در Linux
    آموزش دستورات MySQL (بخش اول)
    آموزش دستورات MySQL (بخش دوم)
    آموزش کار با MySQL
    15 پرسش و پاسخ اولیه ی MySQL برای ادمین های پایگاه داده
    آموزش دستورات Select در MySQL
    دستورات بک آپ گیری و ریستور دیتابیس MySQL در لینوکس
    نحوه تغییر پسورد Root دیتابیس MySQL یا MariaDB در Linux
    نحوه ریکاوری/ریست پسورد Root در MySQL یا MariaDB در Linux
    نحوه اجرای مستقیم دستورات MySQL در ترمینال لینوکس
    پیدا کردن مسیر فایل های ( my.cnf - http.conf / apache2.conf - php.ini ) در لینوکس
    فعال کردن قابلیت Auto completion و Syntax highlighting در MySQL/MariaDB
    تغییر مسیر Defualt ذخیره دیتای MySQL در لینوکس
    نکات حیاتی کلاستر کردن دیتابیس MySQL
    15 نکته مفید برای بهینه سازی و بهبود عملکرد دیتابیس MySQL/MariaDB در Linux
    4 ابزار Commandline برای مانیتور کردن کارایی یا عملکرد دیتابیس MySQL در Linux (به زودی)
    آموزش MySQL (Master-Slave) Replication در RHEL,CentOS,Fedora
    نحوه وصل شدن به MySQL بدون وارد کردن پسورد Root در ترمینال
    نحوه ایجاد، حذف و مدیریت سطوح دسترسی کاربران در MySQL/MariaDB


    نحوه نصب پایگاه داده MySQL

    از پکیج منیجر yum یا apt با توجه به توزیع سیستم عامل خود، برای نصب MySQL استفاده کنید.
    کد PHP:
    # yum install mysql mysql-client mysql-server (on Yum based Systems)
    # apt-get install mysql mysql-client mysql-server (on Apt based Systems) 


    نحوه راه اندازی سرویس MySQL

    با استفاده از دستورات زیر، سرویس MySQL را استارت کنید :
    کد PHP:
    # service mysqld start
    OR
    # service mysql start
    OR
    # systemctl start mysql
    OR
    # systemctl start mariadb 
    ما در اینجا نصب پایگاه داده MySQL و تنظیمات آنرا به شما خواهیم گفت که در آن پسورد admin را از شما خواهد خواست. هنگامیکه نصب سرور شما به پایان رسید mysql را شروع کنید.
    کد PHP:
    # mysql -u root -p 

    نام root را با نام کاربری خود جایگزین کنید و پسوردتان را وارد کنید، پس از لاگین شما prompt مای اسکیول را به صورت چشمک زن خواهید دید.
    کد PHP:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 195
    Server version
    : 5.5.31-0+wheezy1 (Debian)
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
    Other names may be trademarks of their respective owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> 


    نحوه ایجاد پایگاه داده linuxzone

    برای ایجاد دیتابیس از دستور زیر استفاده کنید.
    کد PHP:
    mysql> create database linuxzone ;
    Query OK, 1 row affected (0.02 sec)
    mysql> 
    توجه : پیام بالا که در خروجی دستور نمایش داده شده به شما می گوید که query شما درست اجرا شده، و دیتابیس ایجاد شده است.

    برای مشاهده همه دیتابیس های موجود از دستور زیر استفاده کنید.
    کد PHP:
    mysql> show databases;
    +--------------------+
    | 
    Database |
    +--------------------+
    | 
    information_schema |
    | 
    mysql |
    | 
    performance_schema |
    | 
    linuxzone |
    | 
    test |
    +--------------------+
    9 rows in set (0.00 sec)
    mysql> 
    توجه : دقت کنید که دیتابیس شما در خروجی نمایش داده شده باشد.


    برای مشاهده Collation یک دیتابیس، ابتدا آنرا با دستور use انتخاب کنید سپس دستور زیر را وارد کنید.
    کد PHP:
    SELECT @@character_set_database, @@collation_database; 
    همچنین برای ایجاد یک دیتابیس با Collation دلخواه، (مثلا utf8_general_ci) از دستور زیر استفاده کنید. شما میتوانید به جای utf8_general_ci از collation مورد نظر خود استفاده کنید.
    کد PHP:
    CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci; 

    در صورتیکه بخواهید Collation دیتابیس خود را تغییر دهید میبایست از دستور زیر استفاده کنید. در مثال زیر من collation دیتابیس خود را از utf8_general_ci به utf8_persian_ci تغییر میدهم.
    کد PHP:
    ALTER DATABASE `mydatabase` DEFAULT CHARSET=utf8 COLLATE utf8_persian_ci 
    اگر شما بخواهید Collation یک دیتابیس را به همراه تمام تیبل هایش تغییر دهید، میبایست از دستور زیر استفاده کنید.
    کد PHP:
    ALTER TABLE `mydbname`.`mytable` DEFAULT CHARSET=latin1 COLLATE latin1_swedish_ci 


    نحوه انتخاب پایگاه داده

    در صورتی که نیاز دارید با یک دیتابیس کار کنید، ابتدا باید با دستور زیر آن را انتخاب کنید.
    کد PHP:
    mysql> use linuxzone;
    Database changed
    mysql
    > 


    نحوه ایجاد Table در پایگاه داده Mysql

    در اینجا ما یک تیبل (جدول) با سه فیلد به نام minttec ایجاد کرده ایم.
    کد PHP:
    mysql> CREATE TABLE minttec (
    -> 
    id Int(3),
    -> 
    first_name Varchar (15),
    -> 
    email Varchar(20)
    -> );
    Query OK, 0 rows affected (0.08 sec)
    mysql> 
    توجه : خروجی query بالا می گوید که دستور ما با موفقیت و بدون هیچ خطایی اجرا شده است.

    برای مشاهده تیبل های یک دیتابیس از دستور زیر استفاده کنید.
    کد PHP:
    mysql> show tables;
    +-------------------+
    | 
    Tables_in_linuxzone |
    +-------------------+
    | 
    minttec |
    +-------------------+
    1 row in set (0.00 sec)
    mysql> 
    شما می توانید ستون های جداول را با دستور زیر مشاهده کنید.
    کد PHP:
    mysql> show columns from minttec;
    +------------+-------------+------+-----+---------+-------+
    | 
    Field | Type | Null | Key | Default | Extra |
    +------------+-------------+------+-----+---------+-------+
    | 
    id | int(3) | YES | | NULL | |
    | 
    first_name | varchar(15) | YES | | NULL | |
    | 
    email | varchar(20) | YES | | NULL | |
    +------------+-------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    mysql> 
    خب تا اینجا یکسری دستورات را یاد گرفتید. در ادامه میخواهم شما را با یکسری مفاهیم دیگر در دیتابیس آشنا کنم.
    • Int یک integer است.
    • Varchar متغیریchar با طول تعریف شده است، مقدار بعد از تایپ، طولی است که ذخیره می شود.

    خوب حالا ما نیاز داریم که یک ستون به نام last_name را بعد ازfirst_name اضافه کنیم.
    کد PHP:
    mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name;
    Query OK, 0 rows affected (0.16 sec)
    Records: 0  Duplicates: 0  Warnings: 0 
    اکنون جدول خود را بررسی کنید.
    کد PHP:
    mysql> show columns from minttec;
    +------------+-------------+------+-----+---------+-------+
    | 
    Field      | Type        | Null | Key | Default | Extra |
    +------------+-------------+------+-----+---------+-------+
    | 
    id         | int(3)      | YES  |     | NULL    |       |
    | 
    first_name | varchar(15) | YES  |     | NULL    |       |
    | 
    last_name  | varchar(20) | YES  |     | NULL    |       |
    | 
    email      | varchar(20) | YES  |     | NULL    |       |
    +------------+-------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    mysql> 


    نحوه اضافه کردن ستون در MySQL

    در اینجا ما می خواهیم یک ستون به سمت راست email به نام country اضافه کنیم.
    کد PHP:
    mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email;
    Query OK, 0 rows affected (0.16 sec)
    Records: 0 Duplicates: 0 Warnings: 0
    mysql
    > 
    پس از وارد کردن query بالا جدول خود را بررسی کنید.
    کد PHP:
    mysql> show columns from minttec;
    +------------+-------------+------+-----+---------+-------+
    | 
    Field | Type | Null | Key | Default | Extra |
    +------------+-------------+------+-----+---------+-------+
    | 
    id | int(3) | YES | | NULL | |
    | 
    first_name | varchar(15) | YES | | NULL | |
    | 
    last_name | varchar(20) | YES | | NULL | |
    | 
    email | varchar(20) | YES | | NULL | |
    | 
    country | varchar(15) | YES | | NULL | |
    +------------+-------------+------+-----+---------+-------+
    5 rows in set (0.00 sec)
    mysql> 


    نحوه وارد کردن مقدار مد نظرمان در یک Field

    وارد کردن مقدار در فیلد چیست؟
    کد PHP:
    mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , 'raivsaive@xyz.com' , 'India' );
    Query OK, 1 row affected (0.02 sec)
    mysql> 
    نحوه ی وارد کردن بیش از یک مقدار در یک جدول به صورت همزمان به صورت زیر است.
    کد PHP:
    mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , 'narad@xyz.com' , 'India' ), ('3' , 'user' , 'singh' , 'user@xyz.com' , 'Aus' ), ('4' , 'linuxzone' , '[dot]com' , 'linuxzone@gmail.com' , 'India' );
    Query OK, 3 rows affected (0.05 sec)
    Records: 3 Duplicates: 0 Warnings: 0 

    ورودی های خود را به صورت زیر بررسی کنید.
    کد PHP:
    mysql> select * from minttec;
    +------+------------+-----------+-------------------+---------+
    | 
    id | first_name | last_name | email | country |
    +------+------------+-----------+-------------------+---------+
    | 
    1 | Ravi | Saive | raivsaive@xyz.com | India |
    | 
    2 | Narad | Shrestha | narad@xyz.com | India |
    | 
    3 | user | singh | user@xyz.com | Aus |
    | 
    4 | linuxzone | [dot]com | linuxzone@gmail.com | India |
    +------+------------+-----------+-------------------+---------+
    4 rows in set (0.00 sec)
    mysql> 

    مثال دیگر : من در اینجا یک تیبل با نام mohammad و ستون های id/setid/url/flags/weight/description دارم که میخواهم یک ردیف دیگر به این تیبل اضافه کنم. برای این کار از دستور زیر استفاده میکنم.
    کد PHP:
    INSERT INTO `mohammad` (`id`, `setid`, `url`, `flags`, `weight`, `description`) VALUES ('30', '0', '192.168.10.10:9090', '0', '1', 'Added in 07 Apr 2021'); 
    مثال بعدی فرض کنید من بعد از ایجاد فیلد بالا قصد دارم ستون description با آیدی 30 را از تیبل mohammad تغییر بدهم و یک مقدار جدید در آن وارد کنم. برای این کار از دستور زیر استفاده میکنیم.
    کد PHP:
    UPDATE `mohammad` SET `description` = 'Added in 13 Jan 2020' WHERE `mohammad`.`id` = 25; 
    شما میتوانید id دلخواه و ستون مد نظر در تیبل تان را انتخاب کرده و با همین روش هر ستون و ردیفی که میخواهید مقدار آن را تغییر یا به روز رسانی کنید.




    نحوه حذف مقدار از فیلد

    می خواهیم سومین ردیف از جدول را حذف کنیم.
    کد PHP:
    mysql> DELETE FROM minttec WHERE id = 3;
    Query OK, 1 row affected (0.02 sec) 
    به صورت زیر بازبینی کنید.
    کد PHP:
    mysql> select * from minttec;
    +------+------------+-----------+-------------------+---------+
    | 
    id | first_name | last_name | email | country |
    +------+------------+-----------+-------------------+---------+
    | 
    1 | Ravi | Saive | raivsaive@xyz.com | India |
    | 
    2 | Narad | Shrestha | narad@xyz.com | India |
    | 
    4 | linuxzone | [dot]com | linuxzone@gmail.com | India |
    +------+------------+-----------+-------------------+---------+
    3 rows in set (0.00 sec) 

    مثال دوم : مثلا فرض کنید من تیبلی به نام mohammad دارم و میخوام آیدی شماره 26 را از ردیف های تیبلم حذف کنم. برای این کار از دستور زیر استفاده میکنیم :
    کد PHP:
    DELETE FROM `mohammad` WHERE `mohammad`.`id` = 26 


    اگر شما بخواهید چندین id را به صورت همزمان حذف کنید میبایست از دستور زیر استفاده کنید :
    کد PHP:
    delete from table_name where id in(24,23); 



    نحوه بروزرسانی مقدار در فیلد

    در ادامه مثال بالا، فرض کنید من قصد دارم در تیبل mohammad آدرس ip آیدی شماره 25 را به مقدار جدید 192.168.38.111 تغییر دهم. برای این کار از دستور زیر برای آپدیت یک ردیف در تیبل مان استفاده میکنیم.
    کد PHP:
    UPDATE `mohammad` SET `url` = 'udp:192.168.38.111:7722' WHERE `mohammad`.`id` = 25; 

    یک مثال دیگر، فرض کنید می خواهیم فیلد id=4 را ویرایش کنیم.
    کد PHP:
    mysql> UPDATE minttec SET id = 3 WHERE first_name = 'linuxzone';
    Query OK, 1 row affected (0.02 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    mysql
    > 
    query بالا را بررسی کنید.
    کد PHP:
    mysql> UPDATE minttec SET id = 3 WHERE first_name = 'linuxzone';
    Query OK, 1 row affected (0.02 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    mysql
    > 
    توجه : query بالا ایده ی خوبی نیست. به دلیل اینکه آن id را هر جایی که first name ،linuxzone باشد، تغییر می دهد، بهتر است که همیشه از دو شرط استفاده کنیم.
    کد PHP:
    mysql> UPDATE minttec SET id = 6 WHERE first_name = 'linuxzone'AND last_name = '[dot]com';
    Query OK, 1 row affected (0.03 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    mysql
    > 


    نحوه حذف ستون در MySQL

    می خواهیم ستون country را از جدول حذف کنیم.
    کد PHP:
    mysql> ALTER TABLE minttec drop country;
    Query OK, 3 rows affected (0.15 sec)
    Records: 3 Duplicates: 0 Warnings: 0

    mysql
    > 
    جدول را بررسی کنید.
    کد PHP:
    mysql> select * from minttec;

    +------+------------+-----------+-------------------+
    | 
    id | first_name | last_name | email |
    +------+------------+-----------+-------------------+
    | 
    1 | Ravi | Saive | raivsaive@xyz.com |
    | 
    2 | Narad | Shrestha | narad@xyz.com |
    | 
    6 | linuxzone | [dot]com | linuxzone@gmail.com |
    +------+------------+-----------+-------------------+
    3 rows in set (0.00 sec)

    mysql> 


    نحوه تغییر نام جداول در MySQL

    اگر فکر می کنید که نام جدول minttec خیلی مرتبط به کار شما نیست، می توانید به linuxzone_table تغییر دهید.
    کد PHP:
    mysql> RENAME TABLE minttec TO linuxzone_table;
    Query OK, 0 rows affected (0.03 sec)

    mysql> 


    نحوه لیست کردن تمامی جداول

    تمامی جداول دیتابیس جاری را با استفاده از دستور زیر ببینید.
    کد PHP:
    mysql> show tables;

    +-------------------+
    | 
    Tables_in_linuxzone |
    +-------------------+
    | 
    linuxzone_table |
    +-------------------+
    1 row in set (0.00 sec)

    mysql> 
    جدول تغییر نام داده شده است. حالا یک بک آپ از دیتابیس خود با استفاده از هر ابزاری که می خواهید بگیرید. دستور زیر را برا ی این کار اجرا کنید.
    کد PHP:
    # mysqldump -u root -p linuxzone > linuxzone.sql

    check the dumped file on your desktop which would have contents something like
    -- MySQL dump 10.13 Distrib 5.5.31, for debian-linux-gnu (i686) --
    -- 
    Server version 5.5.31-0+wheezy1 --
    Dump completed on 2013-09-02 12:55:37 
    پشتیبان گیری ازپایگاه داده ی Mysql همیشه ایده ی خوبی است. بازیابی داده های مای اسکیول نیز کار ساده ای است و با یک خط دستور انجام می شود.
    اما صبر کنید، ما ابتدا دیتابیس را حذف خواهیم کرد و سپس بازیابی می کنیم.



    نحوه حذف یک Database

    برای حذف دیتابیسی با نام linuxzone از دستور زیر استفاده کنید.
    کد PHP:
    mysql> drop database linuxzone;
    Query OK, 1 row affected (0.02 sec 
    با استفاده از دستور زیر لیست تمامی دیتابیس ها را مشاهده کنید.
    کد PHP:
    mysql> show databases;

    +--------------------+
    | 
    Database |
    +--------------------+
    | 
    information_schema |
    | 
    my_database |
    | 
    mysql |
    | 
    performance_schema |
    | 
    phpmyadmin |
    | 
    sisso |
    | 
    test |
    +--------------------+

    7 rows in set (0.00 sec)
    mysql> 
    عالیه! دیتابیس مان حذف شد. اما نباید نگران باشیم به دلیل اینکه ما قبلا از دیتابیس مان بک آپ گیری کرده ایم.



    نحوه ریکاوری/بازیابی یک دیتابیس در MySQL

    برای Recovery دیتابیس از دست رفته، دستور زیر را اجرا کنید.
    کد PHP:
    # mysql -u root -p linuxzone < linuxzone.sql
    Enter password:
    ERROR 1049 (42000): Unknown database 'linuxzone' 
    خطای بالا می گوید که ما دیتابیس linuxzone را نداریم، بنابراین ما باید دیتابیس linuxzone را ایجاد کنیم.
    کد PHP:
    mysql> create database linuxzone;
    Query OK, 1 row affected (0.00 sec)

    mysql> 
    حالا می توانیم دستور ریکاوری را مجددا اجرا کنیم.
    کد PHP:
    # mysql -u root -p linuxzone < linuxzone.sql
    Enter password 
    لیست دیتابیس های خود را مجددا بررسی کنید.
    کد PHP:
    mysql> show databases;


    +--------------------+
    | 
    Database |
    +--------------------+
    | 
    information_schema |
    | 
    mysql |
    | 
    performance_schema |
    | 
    linuxzone |
    | 
    test |
    +--------------------+
    8 rows in set (0.00 sec) 
    محتوای پایگاه داده خود را نیز بررسی کنید.
    کد PHP:
    mysql> show tables from linuxzone;

    +-------------------+
    | 
    Tables_in_linuxzone |
    +-------------------+
    | 
    linuxzone_table |
    +-------------------+
    1 row in set (0.00 sec)

    mysql> 
    همچنین محتوای جدول بازیابی شده خود را نیز ببینید.
    کد PHP:
    mysql> select * from linuxzone_table;

    +------+------------+-----------+-------------------+
    | 
    id | first_name | last_name | email |
    +------+------------+-----------+-------------------+
    | 
    1 | Ravi | Saive | raivsaive@xyz.com |
    | 
    2 | Narad | Shrestha | narad@xyz.com |
    | 
    6 | linuxzone | [dot]com | linuxzone@gmail.com |
    +------+------------+-----------+-------------------+

    3 rows in set (0.00 sec) 
    قطعا این مقاله به اتمام نرسیده است، ما قصد داریم مفاهیم کلید اصلی، کلید خارجی و اجرای query ها را با استفاده از اسکریپت های ساده PHP در مقاله های بعدی پوشش دهیم.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 11-01-2021, 12:44 AM.
    اینستاگرام انجمن لینوکس ایران : https://www.instagram.com/iranlinuxforum

    #2
    با تشکر از شما واسه آموزشهای کامل و خوبتون

    کامنت

    در حال انجام ...
    X