انجمن برنامه نویس

آموزش : آموزش زبان sql

شروع موضوع توسط sorosh ‏22/1/14 در انجمن پایگاه داده MySQL

گنجینه های
برنامه نویسی
فیلم های آموزشی
زبان های برنامه نویسی
فیلم های آموزشی
پروژه محور C#
فیلم های آموزشی
برنامه نویسی اندروید
فیلم های آموزشی
طراحی سایت
فیلم های آموزشی
برنامه نویسی پایه
گنجینه برنامه نویسی C# آموزش برنامه نویسی C سیستم مدیریت بانک آموزش اندروید - مقدماتی آموزش زبان HTML اصول و مبانی برنامه نویسی
گنجینه آموزش ASP .Net آموزش برنامه نویسی C++‎ پیاده سازی مدیریت آتلیه آموزش اندروید - تکمیلی آموزش زبان CSS آموزش الگوریتم و فلوچارت
گنجینه برنامه نویسی PHP آموزش برنامه نویسی C# پیاده سازی سیستم هتلداری آموزش اندروید - پیشرفته آموزش زبان Java Script آموزش تبدیل فلوچارت به کد
گنجینه آموزش طراحی وب آموزش برنامه نویسی جاوا شبیه سازی دستگاه عابربانک آموزش ساخت لیست ایمیل آموزش زبان jQury برنامه نویسی اسمال بیسیک
گنجینه برنامه نویسی متلب آموزش برنامه نویسی PHP پیاده سازی مدیریت آموزشگاه آموزش ساخت گالری تصاویر آموزش زبان XML آموزش برنامه نویسی اسمبلی
گنجینه برنامه نویسی اندروید آموزش برنامه نویسی پایتون پیاده سازی سیستم صدور بلیت آموزش کنترل ربات با اندروید آموزش طراحی Responsive طراحی سایت ویژه کودکان
گنجینه برنامه نویسی VB .Net آموزش برنامه نویسی اندروید پیاده سازی سیستم نوبت دهی آموزش ارتباط با دیتابیس سرور ساخت سایت خبری کدنویسی سریع با Emmet
گنجینه زبان های برنامه نویسی آموزش برنامه نویسی زبان R سیستم حسابداری و انبارداری زبان بیسیک فور اندروید (B4A) ساخت سایت فروشگاه آموزش کار با پایگاه داده
  1. sorosh
    karbar Rank

    تاریخ عضویت:
    ‏21/4/13
    ارسال ها:
    186
    تشکر شده:
    37
    امتیاز دستاورد:
    32
    این مقاله که در چند بخش بر روی سایت قرار خواهد گرفت، و برای آشنایی با مفاهیم پایگاه داده و دستورات SQL در محیط کاربری phpMyAdmin نوشته شده است. یکی از مشکلات برنامه نویسان نیمه حرفه*ای عادت به استفاده از محیط*های کاربری SQL است که آنها را از دستورات مستقیم این زبان دور نگه می*دارد، که باعث بروز اشتباهاتی در برنامه نویسی در زبانهای دیگری چون PHP و ASP.Net برای آنها می*شود.
    امروزه اغلب سایت*های داینامیک از پایگاه*های داده که معمولا با زبان SQL ساخته می*شوند استفاده می*کنند. خوشبختانه یادگیری این زبان بسیار ساده است. در این مقاله با پرس وجوهایی ساده*ای از SQL آغاز خواهیم کرد و رفته رفته یک پایگاه داده را با MySQL گسترش خواهیم داد. در این مقاله هم دستورات SQL* را توضیح خواهیم داد و هم نحوه اجرای همین دستورات در phpMyAdmin را توضیح خواهیم داد. این بدان دلیل است که استفاده از phpMyAdmin سرعت ساخت پایگاه داده را افزایش می*دهد ولی در سطوح حرفه*ای تر این دستورات SQL خواهند بود که به داد شما خواهند رسید.
    دلیل انتخاب phpMyAdmin
    همانطور که نظرسنجی سایت Smashingmagazine نشان می*دهد بیشتر از 38 درصد کاربران، از محیط کاربری phpMyAdmin برای ساخت پایگاه* داده خود استفاده می*کنند و اغلب هاست*های لینوکس نیز از این محیط کاربری استفاده می*کنند. از این رو ما نیز این محیط کاربری را برای توضیح مطالب خود انتخاب کرده*ایم. تصویر بعدی، لیستی از تمام محیط*های کاربری برای SQL را با میزان محبوبیتشان در میان برنامه نویسان نمایش می*دهد.

    کد:
    Sorry, you need to register or login to see this BBcode !

    ابزار لازم
    زبان SQL (Structured Query Language) برای تعامل با سیستم*های مدیریت پایگاه*های داده*ی رابطه*ای (RDBMS)، مانند MySQL، Oracle، Sqlite و ... طراحی شده است. برای اجرای دستورات SQL در این مقاله، من فرض می کنم که شما از MySQL استفاده می*کند و از محیط کاربری phpMyAdmin برای اجرای MySQL استفاده خواهم کرد. برای داشتن این امکانات توصیه می*کنم در سیستم* عامل ویندوز WAMP نصب کنید و اگر از سیستم* عامل*های مکینتاش یا لینوکس استفاده می*کنید می*توانید به ترتیب از MAMP و LAMP استفاده کنید.
    از پنجره Command ویندوز برای نوشتن QUERYها (پرس و جو ترجمه شده است ولی از آنجاییکه QUERY به تمام مجموعه دستوراتی گفته می شود که عملی خاص را بر روی پایگاه داده انجام می*دهد، در این مقاله به همان شکل QUERY خواهم نوشت.) استفاده خواهیم کرد. در نرم* افزار WAMP می توانید MySQL Console، را از مسیر زیر بیابید.
    کد:
    Sorry, you need to register or login to see this BBcode !
    ساختن پایگاه داده:
    اگر چیزهایی درباره پایگاه*های داده*ای رابطه*ای شنیده*اید، و فکر می*کنید که پایگاه*های داده*ی رابطه*ای اطلاعاتی را خود به خود برای شما تهیه می*کنند، در همین ابتدای مقاله به شما می*گویم که هیچ جادویی در کار نیست، و همه*ی کارها را خودتان دستور به دستور برای پایگاه داده خواهید نوشت.
    اولین QUERY ما ساخت یک پایگاه داده خواهد بود. ما یک پایگاه داده خواهیم ساخت تا با آن کار کنیم.
    ابتدا، کنسول MySQL* را باز کنید و LOGIN کنید. اگر از WAMP* استفاده می*کنید، پسورد اولیه هیچ چیزی نیست و کافی است اینتر را فشار دهید. و اگر از MAMP استفاده می*کنید پسورد اولیه کلمه root خواهد بود.
    حال QUERY زیر را وارد کنید.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    سمیکلون انتهای خط، شبیه به PHP عمل می*کند و برای پایان بخشیدن به خط می*باشد، منظورم این است که، اگر عبارتی بعد از سمیکلون باشد، همانند آن است که در خط جدیدی نوشته شده است.

    کلمه کلیدی CREATE DATABASE به حروف بزرگ و کوچک حساس نیست، ولی برای خوانایی بیشتر، معمول است که کلمات کلیدی زبان SQL را با حروف بزرگ می*نویسند.
    روش phpMyAdmin

    وارد phpMyAdmin شوید، در تب Databases قسمت Create new database را با نام پایگاه داده (my_first_db) و Collation مورد نظرتان (برای زبان فارسی utf8_persian_ci) را انتخاب کنید. برای ورود به phpMyAdmin، به طریق زیر عمل کنید.
    کد:
    Sorry, you need to register or login to see this BBcode !
    مواردی که در برای پشتیبانی از زبان فارسی مهم هستند
    برای اینکه پایگاه داده شما با زبان فارسی همخوانی داشته باشد، لازم است که از مجموعه کاراکتر*هایی طبق استاندارد utf8 استفاده کنید و از COLLATE به نام utf8_persian_ci استفاده کنید.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    COLLATE (تطبیق) برای هر پایگاه داده*ای بسیار مهم است. COLLATE مشخص می*کند که عبارت*های نوشتاری به چه زبانی در پایگاه داده ذخیره شده است و پایگاه داده برای جستجو در میان عبارت*ها باید از چه مجموعه کاراکترهایی به عنوان استاندارد پایه استفاده کند. مجموعه کاراکترهای اولیه که MySQL* برای تطبیق کلمه مورد جستجو با عبارت*های نوشتاری داخل پایگاه داده از آن استفاده می*کند latin1_swedish_ci می*باشد که تمام کاراکترهای زبان انگلیسی را پشتیبانی می*کند. برای زبان فارسی لازم است که از استاندارد utf8_persian_ci برای تطبیق (COLLATE) استفاده کنید.
    ضروری است که در ساختن هر فیلدی که نوع آن از نوع نوشتاری (text, varchar) است، حتما تطبیق (COLLATE) آن را مشخص کنیم.
    برای مشاهده تمام تطبیق*های پشتیبانی شده در MySQL از دستور زیر استفاده کنید.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    مشاهده پایگاه داده*ای که ساختید
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    این دستور تمام پایگاه*های داده*ای را که در MySQL ساخته*اید برایتان لیست می*کند.
    در phpMyAdmin همین که پایگاه داده را ساختید، در لیست کناری پایگاه داده* اضافه می*شود.

    حذف یک پایگاه داده
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    برای حذف پایگاه داده*ای که ساخته*اید می*توانید از QUERY زیر استفاده کنید.
    در استفاده از این دستور بسیار دقیق باشید، چرا که هیچگونه پیغام اخطاری وجود ندارد، و به همین سادگی کل پایگاه داده حذف می*شود.
    روش phpMyAdmin
    در تب Databases می*توانید پایگاه داده مورد نظرتان را انتخاب کنید و کلید Drop را فشار دهید. در این هنگام، phpMyAdmin شما را به صفحه SQL می*برد تا دستوری را که داده*اید به شکل زبان SQL مشاهده کنید و QUERYتان را تایید کنید.

    صفحه*ای که به آن منتقل خواهید شد به شکل زیر خواهد بود.

    کار با یک پایگاه داده
    برای کار با یک پایگاه داده، از دستور USE استفاده می*کنیم، این کلمه یک دستور است و یک QUERY نیست از این رو به سمیکلون احتیاجی نیست. استفاده از این دستور یک پایگاه داده را انتخاب می*کند تا بقیه عملیات، شامل ساخت جداول را بتوانیم در درون این پایگاه داده انجام دهیم.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    بعد از اجرا، MySQL* پاسخ Database changed را نشان خواهد داد، که به این معنی است که از این خط به بعد تمام دستورات در داخل این پایگاه داده انجام خواهد گرفت. این دستور به MySQL می*گوید تا پایگاه داده my_first_db را به عنوان پایگاه داده پیش*فرض انتخاب کند تا بتوانیم عملیات دیگر را درون این پایگاه داده انجام دهیم.
    در phpMyAdmin کافی است بر روی نام پایگاه داده، از لیست سمت چپ، کلیک کنید تا وارد پایگاه داده شوید، و بقیه عملیات را در آنجا ادامه دهید.
    جدول در پایگاه داده چیست؟
    جدول* در پایگاه داده را می*توانید شبیه به یک صفحه Excell در نظر بگیرید. ماتریسی از سطرها و ستونها که در آن هر ستون نشان دهنده یک مشخصه ای خاص از اطلاعاتی است که در یک سطر ذخیره می*شود. به عنوان مثال، می خواهیم اطلاعات شخصی افراد، مانند نام، نام خانوادگی، و سن گروهی را در یک جدول ذخیره کنیم، واضح است که این اسامی و سن*ها را به ازای هر فرد زیر هم در یک جدول می*نویسیم. به عبارت دیگر، به ازای هر فرد، یک سطر اطلاعات را در ستونهای نام و نام خانوادگی و سن جای می دهیم.

    مفهوم جدول در پایگاه داده می*تواند جوانب بسیاری به خود بگیرد، ولی هیچگاه پیچیده نیست. بحث درباره ارتباطات بین جداول، نرمال سازی جداول، و گسترش پذیری جداول، ارتباطی به جدول در پایگاه داده ندارد، تمام این مطالب در لایه تحلیل سیستم قرار دارد. حال اینکه یک برنامه نویس چطور این تحلیل را پیاده سازی می*کند به خود او مربوط است ولی همیشه راه*های استانداردی وجود دارد که قبل از شما آزموده شده*اند و توصیه اکید این است که آن راه*ها را یاد بگیرید و اجرا کنید.
    ساختن جدول
    برای ساختن یک جدول در درون یک پایگاه داده، از QUERY زیر استفاده می*کنیم. متاسفانه، سایت MySQL اطلاعات خیلی مفهومی در اختیار خواننده قرار نمی*دهد، چراکه ساختار این QUERY پیچیدگی*های زیادی دارد، ولی در اینجا ما از یک QUERY ساده شروع می*کنیم و رفته رفته آن را گسترش می*دهیم.
    دستورات زیر جدولی با دو ستون به نام*های username و create_date تهیه می*کند.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    2
    کد:
    Sorry, you need to register or login to see this BBcode !
    3
    کد:
    Sorry, you need to register or login to see this BBcode !
    4
    );
    دقت کنید که می*توانید QUERY ها را در چند خط بنویسیم و از TAB هم استفاده کنیم.
    خط اول یک جدول به نام users می*سازد. در ادامه، در داخل پارانتز، لیستی از نام ستونها را همراه با نوع داده*ای (VARCHAR, DATE) که قرار است در این ستون ذخیره شود مشاهده می*کنید که با یک کاما ستورنها از یکدیگر جدا شده*اند.
    منظور از VARCHAR(20) یعنی ستونی از نوع کاراکتری با حداکثر بیست کاراکتر، که تنها می*تواند عبارت*های نوشتاریی با 20 کاراکتر را در خود ذخیره کند. منظور از DATE نوع داده تاریخ است که برای ذخیره تاریخ*های میلادی با فرمت YYYY-MM-DD استفاده می*شود.
    کلید اصلی (Primary Key)
    قبل از اجرا دستور ساخت یک جدول، ستونی در تمام جداول وجود دارد که به نام ستون کلید اصلی قرار دارد و باید این ستون را کاملتر توضیح بدهم و در آخر این ستون را نیز به جدول بالا اضافه می*کنیم.
    ستون کلید اصلی (Primary Key) ستونی است که مقادیری یکتا را در خود به عنوان معرف هر سطر ذخیره می*کند. مانند اینکه در هنگام نوشتن لیستی از نام و نام خانوادگی و سن افراد، در کنار هر شخص شماره*ای را از 1 تا ... می*نویسید تا بدانید که تا به حال مشخصات چند نفر را یادداشت کرده*اید. این ستون بعدها می*تواند به عنوان یک نشانگر به افراد لیست به شما کمک کند. مانند اینکه، شما به جای گفتن نام فردی مانند «حسن» که ممکن است در لیست شما بسیار باشند بگویید نفر ردیف «14»، به این شیوه شما به راحتی فرد مورد نظر را می*یابید. برای اینکه فرد مورد نظر را با شماره ردیف بیابید لازم است که این شماره ردیف در کل جدول یکتا باشد، از این رو در پایگاه*های داده، معمولا تولید این ستون را اتوماتیک می*کنند، تا در هنگام ساخته شدن هر سطری، یک عدد یکتا به آن سطر از طرف خود پایگاه داده اختصاص داده شود. شما مختارید این عدد یکتا را به هر روشی تولید کنید، مثلا اگر شماره ملی افراد را نیز دارید، می*توانید از این شماره به عنوان مقداری یکتار (کلید اصلی) خود استفاده کنید. ولی دو روش معمول برای تولید مقادیر یکتا، استفاده از ستونی با نوع داده integer است که به صورت Auto Increment (اتوماتیک به ازای هر سطر، یک شماره رشد می*کند) قرار داده شود و یا اینکه استفاده از زمان به صورت میلی ثانیه است.
    حال QUERY کامل شده زیر را داریم.
    کد:
    Sorry, you need to register or login to see this BBcode !
    خط دوم، ستونی به نام user_id از نوع داده INT (integer 32bit) تولید می*کند که به صورت AUTO_INCREMENT است و به عنوان PRIMARY KEY (کلید اصلی) قرار داده شده است.
    روش phpMyAdmin
    تمام مراحل بالا را می*توان در یک کنار یکدیگر در یک صفحه مشاهده کرد. برای انجام این کار مراحل زیر را دنبال کنید.

    1. بعد از انتخاب پایگاه داده، کلید Create table را فشار دهید.
    2. در این قسمت مشاهده می*کنید که در هاست محلی که WAMP آماده کرده پایگاه داده my_first_db را ساخته*اید و در درون آن هستید.
    3. نام جدول را در این قسمت وارد می کنید.
    4. ستونها را با مشخصاتشان که شامل، نوع و طول آن می*باشد، به ترتیب وارد *کنید، شاید شما تنها دو ستون را مشاهده کنید، برای اضافه کردن ستون سوم، به قسمت 9 مراجعه کنید.
    5. در اینجا می*توانید ستون را به حالت PRIMARY KEY در بیاورید.
    6. حالت AUTO_INCREMENT تنها برای ستونهایی قابل اجراست که از نوع integer باشند و Index آنها از نوع یکتا باشد.
    7. اگر در این قسمت Collation را انتخاب کنید، phpMyAdmin به طور خودکار به تمام ستونهای نوشتاری، این Collation* را تخصیص می*دهد، و دیگر مرحله 8 لازم نیست.
    8. برای هر فیلد (ستون) نوشتاری، لازم است که Collation انتخاب شود. در اینجا از utf8_persian_ci برای پشتیبانی از زبان فارسی استفاده کرده ایم.
    9. اگر تعداد ستونهای جدولتان بیشتر از 2 ستون است می*توانید تعداد ستونهای مورد نظرتان را در این قسمت وارد کنید تا به 2 ستون اول اضافه شود. در پایان با فشار دادن کلید Save جدول در پایگاه داده شما ذخیره می*شود.
    لیست جداول
    برای گرفتن لیستی از تمام جداول پایگاه داده از QUERY زیر استفاده می*کنیم.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    از آنجاییکه قبلا پایگاه داده my_first_db را به عنوان پایگاه داده پیش فرض (ر.ج دستور USE ) قرار داده*ایم، این دستور تمام جداول این پایگاه داده را لیست می*کند.
    مشاهده ساختار جدول
    ساختار (Structure) یک جدول، نشان می*دهد که ستون*هایتان را چگونه تعریف کرده اید، که شامل نام ستون (Field)، نوع داده، قبول یا عدم قبول داده Null، نوع کلید، مقدار پیش فرض و ... است. مشاهده ساختار یک جدول به شما کمک می*کند که تمام اطلاعات لازم درباره جدولتان را در یک لیست کنار هم به طور منظم مشاهده کنید.
    QUERY زیر ساختار جدول users را نمایش می*دهد.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    در phpMyAdmin برای مشاهده ساختار جدول، بعد از کلیک بر روی نام جدول، تب Structure را انتخاب کنید.
    حذف جدول
    همانند DROP DATABASES، می*توان از دستور DROP TABLE برای حذف یک جدول استفاده کرد. بار دیگر یادآور می*شوم که هیچ پیغام خطایی وجود ندارد، در استفاده از این QUERY محتاط باشید.
    1
    کد:
    Sorry, you need to register or login to see this BBcode !
    این QUERY جدول users را از پایگاه داده my_first_db حذف می*کند.
    روش phpMyAdmin

    در phpMyAdmin وارد پایگاه داده شوید، لیستی از تمام جداولتان را مشاهده خواهید کرد، جدول مورد نظرتان را انتخاب کنید، و کلید Drop را از داخل Combo box انتخاب کنید.
    ویرایش یک جدول
    در بسیاری از مواقع پیش می*آید که لازم است ستون (field) جدیدی به جدول اضافه یا کم شود، و یا مشخصات ستونی تغییر کند. تمام این سه نوع تغییر در SQL توسط دستور ALTER (تغییر دادن) انجام می*گیرد. این دستور جوانب بسیاری دارد که در اینجا به ساده**ترین و کارآمدترین آنها را اشاره خواهیم کرد.
    اضافه کردن یک ستون
    کد:
    Sorry, you need to register or login to see this BBcode !
    خط اول، نشان می*دهد که تغییر در جدول users اعمال خواهد شد، خط دوم با کلمه کلیدی ADD نشان می*دهد که ستونی به نام email با نوع داده VARCHAR که حداکثر دارای 100 کاراکتر می*تواند باشد به جدول اضافه شود. خط سوم نشان می*دهد که این ستون بعد از ستونی به نام username جا داده شود.
    حذف یک ستون
    این QUERY هم مثل QUERYهای قبلی از دستور DROP، بدون هیچگونه پیغام خطایی، برای حذف ستون استفاده می*کند.
    کد:
    Sorry, you need to register or login to see this BBcode !
    تغییر ستون
    بعضی مواقع لازم است تا مشخصات یک ستون را تغییر دهید. برای اینکار از دستور CHANGE در درون ALTER به شکل زیر استفاده می*کنیم.
    کد:
    Sorry, you need to register or login to see this BBcode !
    خط اول، جدول users را برای تغییر انتخاب می*کند و خط دوم، به MySQL می*گوید که ستون username تغییر خواهد کرد. خط ستوم نشان می*دهد که ستون username به چه شکلی تغییر خواهد کرد. در این مثال نام ستون به user_name تغییر داده شده است و طول نوع داده آن از 20 به 30 تغییر داده شده است. با مشاهده ساختار جدول تغییر انجام شده را می*توانیم مشاهده کنیم.
    روش phpMyAdmin
    برای اضافه کردن یا حذف و ویرایش یک یا چند ستون در phpMyAdmin می*توانید وارد جدول مورد نظر شوید و تب Structure را انتخاب کنید و هر کدام از اعمال را مطابق با شکل زیر انجام دهید.

    1. هر کدام از ستونها را که می خواهید تغییر دهید، بر روی دکمه Change در همان سطر کلیک کنید تا به صفحه*ای منتقل شوید که تغییرات لازم را بتوانید در آن فیلد (ستون) اعمال کنید.
    2. اگر می*خواهید تعدادی ستون جدید به جدول اضافه کنید، می*توانید تعداد مورد نظر را وارد کنید و کلید Go را فشار دهید. برای اینکه این ستون یا ستون*های جدید بعد از ستونی خاص در جدول قرار گیرند لام است که قسمت After را انتخاب کنید و ستون مورد نظرتان را انتخاب کنید.
    3. کلید Drop ستون مورد نظر شما را حذف می*کند.
    کار با محتوای پایگاه داده
    تا اینجا دو مرحله از سه مرحله ساخت پایگاه داده را با هم گذرانده*ایم. در مرحله اول، پایگاه داده*ای را ساخته*ایم، در مرحله دوم جداول پایگاه داده را ساخته*ایم و ویرایش کرده*ایم و در مرحله سوم لازم است تا کار با محتوای پایگاه داده، که شامل وارد کردن اطلاعات به درون جدول (نوشتن سطر جدید)، خواندن اطلاعات از درون جدول (یک سطر یا چند سطر که دارای مشخصه خاصی هستند، مانند اینکه لیست تمام افرادی را که نام آنها «حسن» است)، ویرایش اطلاعات هر سطر، و حذف یک سطر را با یکدیگر بیاموزیم. به این چهار بخش، در کنار یکدیگر CRUD (Create, Read, Update, Delete) اطلاق می*شود.
    در مقاله بعدی این قسمت را توضیح خواهم داد. لطفا نظراتتان را در مورد این مقاله برای ما بنویسید، تا بیشتر و بهتر در مقالات بعدی درباره آنها توضیح دهیم. اگر اطلاعات بیشتری در این زمینه دارید، از طریق نظرات در اختیار دیگران قرار دهید.