سلام نو پلاس: SQL یا Structured Query Language یک زبان دامنه ای خاص است که در برنامه نویسی استفاده می شود و برای مدیریت داده های موجود در یک RDBMS (relational database management system یا مدیریت پایگاه داده رابطه ای) یا RDSMS (relational data stream management system یا سیستم مدیریت جریان داده های رابطه ای) به کار می رود.
این زبان یک زبان پرس و جوی ساختاریافته و یک زبان برنامه نویسی استاندارد شده است که برای مدیریت پایگاه داده های رابطه ای و انجام عملیات های مختلف بر روی داده های موجود در آن ها استفاده می شود. از این رو آموزش SQL اهمیت دارد.
این ویژگی SQL در مدیریت داده های ساخت یافته، یعنی داده هایی که روابط بین موجودیت ها و متغیرها را در بر می گیرد، مفید است. SQL دو مزیت اصلی نسبت به سایر API های خواندن/نوشتن قدیمیتر مانند ISAM یا VSAM دارد:
- مفهوم دسترسی داشتن به تعداد زیادی از رکوردها را با یک فرمان را معرفی می کند.
- نیاز به مشخص کردن چگونگی دستیابی به یک رکورد را از بین می برد، به عنوان مثال با اندیس یا بدون اندیس.
SQL که در اصل بر اساس جبر رابطهای و حساب رابطهای چند گانه استوار است، شامل انواع مختلفی از اصطلاح ها است، که ممکن است به عنوان زیرزبانها (sublanguages) طبقهبندی شوند، مانند:
- data query language (DQL) (یک زبان کوئری داده)
- data definition language (DDL) (یک زبان تعریف داده)
- data control language (DCL) (یک زبان تعریف داده)
- data manipulation language (DML) (زبان دستکاری داده ها)
دامنه SQL شامل پرس و جوی داده ها (data query)، دستکاری داده ها (درج، به روز رسانی و حذف)، تعریف داده ها (ایجاد و ویرایش schema ها) و کنترل دسترسی به داده ها است.
SQL در IBM توسط Donald D. Chamberlin و Raymond F. Boyce در اوایل دهه ۱۹۷۰ توسعه یافت. این نسخه که در ابتدا زبان پرس و جوی ساختاریافته نام داشت، برای دستکاری و بازیابی داده های ذخیره شده در سیستم مدیریت پایگاه داده شبه رابطه ای اصلی IBM و System R، که گروهی در آزمایشگاه تحقیقاتی IBM San Jose در طول دهه ۱۹۷۰ توسعه داده بودند، طراحی شد.
پس از آزمایش SQL در سایتهای آزمایشی ویژه مشتریان برای تعیین سودمندی و کاربردی بودن سیستم، IBM شروع به توسعه محصولات تجاری بر اساس نمونه اولیه System R خود، از جمله System/۳۸، SQL/DS و DB۲ کرد که در سالهای ۱۹۷۹، ۱۹۸۱ به صورت تجاری در دسترس قرار گرفت.
اگرچه SQL یک استاندارد ANSI/ISO است، اما نسخه های مختلفی از زبان SQL وجود دارد. با این حال، برای انطباق با استاندارد ANSI، همه آن ها حداقل از دستورات اصلی مانند SELECT ،UPDATE ،DELETE ،INSERT ،WHERE به روشی مشابه پشتیبانی می کنند.
آموزش sql رایگان
قرارگیری در مسیر آموزش SQL Server میتواند نقطه شروعی مناسبی برای ارتقای شغلی و توسعه مهارتهای شما باشد.
حوزه پایگاه داده و SQL Server، مشاغل مختلفی را شامل میشود و برای آن که نقشه راه به درستی طی شود، در وهله اول لازم است، به یادگیری مفاهیم پایگاه داده و کوئری نویسی بپردازید.
یادگیری پایگاه داده، شامل مواردی همچون، نحوه اتصال جداول و انواع JOIN، مفهوم GROUP BY، مباحث مربوط به Sub Query و DML میشود.
پس از گسترش دانش خود در زمینه پایگاه داده، میتوانید از SQL Server به عنوان یک نرم افزارِ مدیریت پایگاه داده رابطه ای (RDBMS) کمک بگیرید.
این نرم افزار اجزای گوناگونی برای ساخت، دسترسی و کار با دادهها دارا است و همچنین، ابزارهایی برای مدیریت کارایی، امنیت و یکپارچگی دادهها در اختیار شما قرار میدهد.
دستورات کاربردی SQL Server، مانند SELECT، INSERT، UPDATE و DELETE، به شما اجازه مدیریت، حذف و استخراج دادهها از پایگاه داده را میدهند و یادگیری نحوه کار با آنها، به عنوان یک بخش کلیدی در مسیر آموزش SQL Server به شمار میرود.
شما هر اندازه که دانش دیتابیس و کوئری نویسی خود را افزایش دهید، به همان اندازه احتمال استخدام شدن خود را در مشاغلی مانند مدیر پایگاه داده (DBA)، برنامه نویس پایگاه داده، تحلیلگر داده (Data Analyst)، دانشمند داده (Data Scientist) و سایر موارد را افزایش میدهید.
البته در کنار آموزش SQL Server، ضروری است که باقی نیازمندیهای هر یک از این مشاغل به طور دقیق بررسی و مطابق با آنها، مهارتهای فرد گسترش بیابند.
در نهایت، پس از آموختن مباحث بنیادی زبان اسکریپتی SQL و کسب تجربه فنی، این فرصت برای شما فراهم خواهد شد تا در مسیر شغلی ایده آل خود قرار بگیرید.
بانک اطلاعاتی به صورت یک مجموعه از جداول، هر کدام با یک ستون از اطلاعات و یک ردیف از داده ها است.
در پایگاه داده، داده ها به صورت منطقی و سازماندهی شده اند تا بتوان به راحتی آن ها را مدیریت کرد و درخواست های مختلف را برای دسترسی به داده ها پردازش کرد.
یکی از مزایای استفاده از بانک اطلاعاتی، مدیریت متمرکز داده هاست. با داشتن یک پایگاه داده، این امکان وجود دارد که داده های مرتبط را به صورت مجموعه ای در یک مکان مشخص ذخیره کرد و با استفاده از نرم افزار های مختلف به آن ها دسترسی پیدا کرد.
این مزیت به خصوص برای شرکت هایی که با داده های بزرگ کار می کنند و نیاز به مدیریت داده ها دارند، بسیار حائز اهمیت است.
آموزش sql از مبتدی تا پیشرفته
یادگیری SQL برای چند دلیل اساسی ضروری است:
- مدیریت داده: SQL به شما اجازه میدهد تا به طور مؤثر و کارآمد با دادهها در پایگاههای داده رابطهای کار کنید. با یادگیری SQL، میتوانید دادهها را جستجو کنید، اطلاعات را از جداول استخراج کنید، دادهها را بهروزرسانی کنید، جداول جدید را ایجاد کنید و دادههایی را که نیاز دارید حذف کنید. این ابزارها برای مدیریت و کنترل دادهها بسیار حیاتی هستند.
- تحلیل داده: SQL به شما امکان میدهد تا دادهها را به شیوههای مختلف تحلیل کنید و گزارشهایی را تهیه کنید. با استفاده از عملگرها و توابع SQL، میتوانید دادهها را جمعبندی، تجزیه و تحلیل کنید و نتایج را به صورت گزارشها یا نمودارها ارائه دهید.
- تعامل با سیستمهای پایگاهداده: اکثر سیستمهای نرمافزاری و وب از پایگاههای داده برای ذخیره و دسترسی به اطلاعات استفاده میکنند. با یادگیری SQL، میتوانید با این سیستمها تعامل داشته باشید و از طریق دستورات SQL به دادههای مورد نیاز دسترسی پیدا کنید.
- فرصت شغلی: دانش SQL یکی از مهارتهای اصلی مورد نیاز در صنعت فناوری اطلاعات است. بسیاری از شغلها و تخصصهای مرتبط با تجزیه و تحلیل داده، توسعه نرمافزار و مدیریت سیستمهای پایگاهداده، از یادگیری SQL به عنوان یک مهارت اساسی خواستارند.
به طور خلاصه، یادگیری SQL به شما امکان میدهد تا با دادهها به صورت مؤثر کار کنید، تحلیلهای دقیقتری را انجام دهید و از فرصتهای شغلی در صنعت فناوری اطلاعات بهرهبرداری کنید.
مهم نیست که قبلا با بانک اطلاعاتی SQL کار کرده باشید یا خیر، دوره آموزش SQL Server که در حال مشاهده آن هستید از آموزش ساده ترین مفاهیم بانک اطلاعاتی شروع به آموزش می کند و با انجام طراحی های بانک اطلاعاتی برای نرم افزارهای مختلف اعم از نرم افزارهای ویندوزی و تحت وب تا سطح پیشرفته به شما SQL را آموزش می دهد.
به همین دلیل این دوره آموزش SQL Server برای برنامه نویس ها یک آموزش مقدماتی تا پیشرفته محسوب می شود.
برای یادگیری SQL در این دوره آموزشی شما نیازی به هیچ پیش زمینه برنامه نویسی پایگاه داده خاصی نخواهید داشت.
کتاب آموزش sql
در حوزه SQL Server تنوع آموزشها و منابع آموزشی بسیار بالاست. میتوان به دورههایی اشاره کرد که توسط سایت رسمی مایکروسافت و در پلتفرمهای آموزشی این شرکت میتوانید دنبال کنید.
فیلمهای آموزشی سایتهای مطرح مانند یودمی یا لیندا که توسط افراد خبره و حرفه ایی تدوین و تهیه میشود یا مستندات مکتوب و مقالههایی که توسط MVPهای مایکروسافت ایجاد شده است.
اما یکی از غنیترین منابع در این حوزه کتابها و رفرنسهای تخصصی و زبان اصلی این حوزه هست که به جرات میتوان گفت به شکل تخصصی میتوان یک موضوع را دنبال کرد و به شاخههای دیگر این بحث دست یافت.
لذا شناخت این منابع از اهمیت بالایی برخوردار هست که به درستی کتاب و مرجع مورد نظر را انتخاب کرده و مطالعه کنیم.
در سلسله مقالاتی که در سایت نیک اموز منتشر خواهد شد قرار هست نگاهی جزییتر به سرفصلهای مختلف این کتابها و منابع مرتبط داشته باشیم تا با دید جامعتری بتوانید این منابع را انتخاب کنید.
اما قبل از این که این کتابها و سرفصلهای مرتبط معرفی گردد نیاز هست که نکاتی در خصوص نحوه مطالعه این کتابها مطابق با تجربههای کسب شده در این زمینه خدمت شما عزیزان ارائه شود که حداکثر بهره وری لازم از این مطالب کسب شود.
مسلما فرایند یادگیری به تنهایی نیاز با یادگیری دارد و باید مطابق با اصول مشخص پیش برده شود.
همان طور که می دانید اجرای کوئریها در SQL SERVER در فازهای مختلف انجام میشود. هر فاز به تنهایی شامل الگوریتمها و قواعدی هست که باید کلیه مراحل ان اجرایی شده تا خروجی به مرحله بعدی داده شود.
به عبارتی تا وقتی اسکریپت شما دارای مشکل سینتکسی هست، همانند ادرس اشتباهی خواهد بود که مسلما به هیچ راه راستی هدایت نخواهد شد.
این کتاب در واقع فاز سوم از بحث اجرای کوئریها را مورد بررسی قرار داده است.
در این فاز عملا الگوریتمهایی برای ایجاد پلنهای اجرایی به قضیه ورود خواهند کرد که بهینهترین پلن ها متناسب با کوئری ایی که به سمت SQL SERVER ارسال شده است، ساخته شود.
پلن اجرایی حکم یک زبان جدید را دارند که توسعه دهندگان و مدیران سیستم باید به خوبی بر روی این زبان مسلط باشند.
اما زبانی که باید یاد بگیریم به شکل بصری هست! یعنی مجموعه اشکالی در اختیار شما قرار میگیرد که هر کدام شامل کوله باری از Propertisها و رفتارهای مشخصی هست که باید به این اشکال تسلط پیدا کنید.
در کتاب در حدود ۸۲ شکل که تحت قالب اپراتور (Operator) شناخته میشود معرفی خواهد شد.
این کتاب در مرحله اول، شما را با مهمترین اپراتورها و خواص هر یک به تنهایی آشنا میکند سپس در اواخر کتاب، تحت قالب سناریوهای عملیاتی، ارتباط بین این اپراتورها را به خوبی تشریح میکند.
مسلما کلیه این اپراتورها نیازی به یادگیری و شناخت دقیق ندارند چرا که به مرور متوجه خواهید شد که الگوی ایجاد و ارتباط بین این اپراتورها بعد از مدتی که کوئریهای مختلف و گزارشات متنوعی ایجاد کنید به راحتی قابل فهم هست و میتوانید گلوگاه هر کوئری را به راحتی پیدا کنید.
مسلما کاربرانی که در سیستم مشغول به فعالیت هست دستوراتی به شکل مستقیم یا غیر مستقیم به سمت SQL SERVER ارسال میکنند.
این درخواستها میتواند از سمت سرویسهای مختلفی به سمت SQL SERVER ارسال شود. لذا هر ورودی باید یک نقشه راه مشخصی از Engine دریافت کند و مطابق با آن دادههای مورد نیاز خود را از سیستم استخراج کند.
این کتاب به صورت رایگان در اختیار عموم قرار گرفته و میتوانید از مطالب ارزشمند آن استفاده نمایید
آموزش sql injection
به واسطه آسیب پذیری SQL Injection میتوان با تزریق دستورات SQL به ورودی هایی که به پایگاه داده اعمال میشود، اطلاعات مورد نظر را از پایگاه داده استخراج و اهداف خود را روی آن هدف اعمال کرد.
مراحل تست نفوذ
- تست آسیب پذیر بودن وب سایت
- استخراج ستون های آسیب پذیر
- استخراج جداول پایگاه داده
- انتخاب جدول مورد نظر
- استخراج اطلاعات از جدول انتخاب شده
تست آسیب پذیر بودن وب سایت
برای تست این آسیب پذیری از تک کوتیشن ‘ استفاده میکنیم که در جواب، اگر از طرف وب سایت تارگت، با ارور mysql() مواجه شدیم پس میتوانیم بگوییم که وب سایت اسیب پذیر است. دقت کنید که ناقص لو شدن سایت یا بالا نیومدن کامل سایت هم نشانه باگ sqli هست.
استخراج ستون های آسیب پذیر
بعد از اینکه تشخیص دادیم یک وب سایت باگ SQL داره باید از طریق دستوراتی ستون های آسیب پذیر اون رو استخراج کنیم. در ادامه یاد میگیرید که چگونه ستون های اسیب پذیر یک وب سایت رو پیدا کنید.
برای این کار از دستور order by
استفاده میکنیم. دستور order by
برای مرتب کردن اطلاعات دریافتی از پایگاه داده مورد استفاده programmerها قرار میگیره، وقتی عددی بالاتر از تعداد ستونهای پایگاه داده با دستور order by
درخواست بدهیم، صفحه وب سایت جاری با مشکل اجرا میشه.
وقتی یک صفحه آسیب پذیر در سایتی پیدا کردیم به انتهای آن دستور order by
اضافه میکنیم تا بتونیم تعداد ستونهای جدول مورد نظر رو پیدا کنیم.
در دستورات بالا از +
به جای فاصله و از --
برای اعلام پایان دستورات استفاده میشود، عددی که در انتهای دستورات وجود داره تعداد ستونهای جدول است که باید آن قدر آن را امتحان کنیم که به تعداد ستون درست جدول برسیم.
تعداد ستون جدول در صورتی درسته که صفحه بدون مشکل و به صورت کامل لود بشه. معمولا کار تست را از از عدد بزرگی شروع و در هر مرحله به نصف کاهش میدهیم تا تعداد ستونها رو پیدا کنیم.
استخراج جداول پایگاه داده
برای این کار از دستور union select استفاده می کنیم.برای مثال ما با دستور order by فهمیدیم که وب سایت ۴ ستون آسیب پذیر داره پس دستور بعدی اینجوری میشه:
همچنین میتونید بجای + از فاصله استفاده کنید:
خب حالا ما تونستیم تعداد ستون های آسیب پذیر رو به دست بیاریم. مثلا اگه ستون ۲ اسیب پذیر بود رو صفحه عدد ۲ رو برای ما نشون میده.
نکته: برخی مواقع دستورات ما کار نمیکنند که امکان داره از طرف وب سایت سیاست های امنیتی برای جلوگیری از هک شدن سایت اعمال شده است. برای درست کار کردن دستوراتمون باید بایپس هایی رو بر روی وب سایت انجام بدیم. برای مثال باید یک دش(-) به پشت دستور اضافه کنیم تا ستون هارو برامون نشون بده. به صورت زیر:
همون طور که دستور بالا رو میبینید علامت دش در url بعد از =id گذاشته شده است.
نظر شما