اطلاعیه

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

آموزش دستورات پایه ای 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 monitorCommands end with ; or \g.
    Your MySQL connection id is 195
    Server version
    5.5.31-0+wheezy1 (Debian)
    Copyright (c20002013Oracle and/or its affiliatesAll 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 helpType '\c' to clear the current input statement.

    mysql


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

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

    برای مشاهده همه دیتابیس های موجود از دستور زیر استفاده کنید.
    کد PHP:
    mysqlshow 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:
    mysqlCREATE TABLE minttec (
    -> 
    id Int(3),
    -> 
    first_name Varchar (15),
    -> 
    email Varchar(20)
    -> );
    Query OK0 rows affected (0.08 sec)
    mysql
    توجه : خروجی query بالا می گوید که دستور ما با موفقیت و بدون هیچ خطایی اجرا شده است.

    برای مشاهده تیبل های یک دیتابیس از دستور زیر استفاده کنید.
    کد PHP:
    mysqlshow tables;
    +-------------------+
    Tables_in_linuxzone |
    +-------------------+
    minttec |
    +-------------------+
    1 row in set (0.00 sec)
    mysql
    شما می توانید ستون های جداول را با دستور زیر مشاهده کنید.
    کد PHP:
    mysqlshow 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:
    mysqlALTER TABLE minttec ADD last_name varchar (20AFTER first_name;
    Query OK0 rows affected (0.16 sec)
    Records0  Duplicates0  Warnings
    اکنون جدول خود را بررسی کنید.
    کد PHP:
    mysqlshow 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:
    mysqlALTER TABLE minttec ADD country varchar (15AFTER email;
    Query OK0 rows affected (0.16 sec)
    Records0 Duplicates0 Warnings0
    mysql

    پس از وارد کردن query بالا جدول خود را بررسی کنید.
    کد PHP:
    mysqlshow 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:
    mysqlINSERT INTO minttec VALUES ('1' 'Ravi' 'Saive' 'raivsaive@xyz.com' 'India' );
    Query OK1 row affected (0.02 sec)
    mysql
    نحوه ی وارد کردن بیش از یک مقدار در یک جدول به صورت همزمان به صورت زیر است.
    کد PHP:
    mysqlINSERT 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 OK3 rows affected (0.05 sec)
    Records3 Duplicates0 Warnings

    ورودی های خود را به صورت زیر بررسی کنید.
    کد PHP:
    mysqlselect from minttec;
    +------+------------+-----------+-------------------+---------+
    id first_name last_name email country |
    +------+------------+-----------+-------------------+---------+
    Ravi Saive raivsaive@xyz.com India |
    Narad Shrestha narad@xyz.com India |
    user singh user@xyz.com Aus |
    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 `mohammadSET `description` = 'Added in 13 Jan 2020' WHERE `mohammad`.`id` = 25
    شما میتوانید id دلخواه و ستون مد نظر در تیبل تان را انتخاب کرده و با همین روش هر ستون و ردیفی که میخواهید مقدار آن را تغییر یا به روز رسانی کنید.




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

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

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


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



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

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

    یک مثال دیگر، فرض کنید می خواهیم فیلد id=4 را ویرایش کنیم.
    کد PHP:
    mysqlUPDATE minttec SET id 3 WHERE first_name 'linuxzone';
    Query OK1 row affected (0.02 sec)
    Rows matched1 Changed1 Warnings0
    mysql

    query بالا را بررسی کنید.
    کد PHP:
    mysqlUPDATE minttec SET id 3 WHERE first_name 'linuxzone';
    Query OK1 row affected (0.02 sec)
    Rows matched1 Changed1 Warnings0
    mysql

    توجه : query بالا ایده ی خوبی نیست. به دلیل اینکه آن id را هر جایی که first name ،linuxzone باشد، تغییر می دهد، بهتر است که همیشه از دو شرط استفاده کنیم.
    کد PHP:
    mysqlUPDATE minttec SET id 6 WHERE first_name 'linuxzone'AND last_name '[dot]com';
    Query OK1 row affected (0.03 sec)
    Rows matched1 Changed1 Warnings0
    mysql



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

    می خواهیم ستون country را از جدول حذف کنیم.
    کد PHP:
    mysqlALTER TABLE minttec drop country;
    Query OK3 rows affected (0.15 sec)
    Records3 Duplicates0 Warnings0

    mysql

    جدول را بررسی کنید.
    کد PHP:
    mysqlselect from minttec;

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

    mysql


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

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

    mysql


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

    تمامی جداول دیتابیس جاری را با استفاده از دستور زیر ببینید.
    کد PHP:
    mysqlshow 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:
    mysqldrop database linuxzone;
    Query OK1 row affected (0.02 sec 
    با استفاده از دستور زیر لیست تمامی دیتابیس ها را مشاهده کنید.
    کد PHP:
    mysqlshow 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:
    mysqlcreate database linuxzone;
    Query OK1 row affected (0.00 sec)

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


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

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

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

    +------+------------+-----------+-------------------+
    id first_name last_name email |
    +------+------------+-----------+-------------------+
    Ravi Saive raivsaive@xyz.com |
    Narad Shrestha narad@xyz.com |
    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