آموزش SQL به زبان ساده – بیان مفاهیم و اصطلاحات مهم در پایگاه داده
در این پست قصد داریم آموزش SQL را به صورت ساده و روان برای شما عزیزان ارائه کنیم. در این آموزش با منابعی ارزشمند، مفاهیم اولیه و کاربردی این زبان را یاد خواهید گرفت. پس از مطالعه این آموزش انتظار می رود دستورات SQL را به راحتی استفاده کنید و آن را در پروژه های خود بکار ببرید پس با ما همراه باشید.
مقدمه
SQL مخفف عبارت Structured Query Language است که به معنای زبان پرس و جوی ساخت یافته می باشد و برای انجام عملیات روی پایگاه داده ها یا دیتابیس از آن استفاده می شود. عملیات های اصلی در پایگاه داده عبارتند از : به روز رسانی، درج، حذف، ایجاد و اصلاح جداول پایگاه داده , نماها و …
SQL یک سیستم پایگاه داده نیست ولی یک زبان پرس و جو به حساب می آید. برای شروع وقتی می خواهید پرس و جوهای زبان SQL را روی داده های ذخیره شده در پایگاه داده انجام دهید، باید یک سیستم مدیریت پایگاه داده را در سیستم های خود نصب کنید، به عنوان مثال Oracle، MySQL، MongoDB، PostgreSQL، SQL Server، DB2 و غیره.
SQL چیست؟
SQL همان زبان پرس و جوی ساخت یافته است که به صورت S-Q-L یا گاهی به صورت See-Quell تلفظ می شود. این زبان پایگاه داده،,عمدتاً برای نگهداری داده ها در سیستم های مدیریت پایگاه داده ی رابطه ای طراحی شده است. این ابزار خاص توسط متخصصان داده برای مدیریت داده های ساختاریافته (داده هایی که در قالب جداول ذخیره می شوند) استفاده می شود. همچنین برای پردازش جریانی در RDSMS (Relational Database Management System) (سیستم مدیریت پایگاه داده رابطه ای است) طراحی شده است.
شما به راحتی می توانید پایگاه داده را ایجاد و دستکاری کنید، به سطرها و ستون های جدول دسترسی داشته باشید و آنها را ویرایش کنید. این زبان پرس و جو در سال 1986 توسط استاندارد ANSI و در سال 1987 توسط ISO تایید شده است. اگر می خواهید در زمینه علم Data شغلی پیدا کنید، آموزش SQL مهم ترین آموزشی است که در حیطه زبان پرس و جو باید داشته باشید. شرکتهای بزرگ مانند فیسبوک، اینستاگرام و لینکدین از SQL برای ذخیره دادهها در back-end استفاده میکنند.
دلایل استفاده از SQL
امروزه SQL به طور گسترده در علم داده و تجزیه و تحلیل استفاده می شود.در زیر دلایلی وجود دارد که دلیل استفاده گسترده از آن را توضیح می دهد:
- دلیل استفاده اساسی متخصصان داده و کاربران SQL،از SQL , امکان درج، به روز رسانی و حذف داده ها از پایگاه داده رابطه ای است.
- SQL به متخصصان و کاربران داده اجازه می دهد تا داده ها را از سیستم های مدیریت پایگاه داده رابطه ای بازیابی کنند.
- SQL به متخصصان و کاربران داده کمک می کند تا داده های ساخت یافته را توصیف کنند.
- کاربران SQL اجازه دارند تا پایگاه داده و جداول آن را ایجاد، رها و دستکاری کنند.
- SQL به ایجاد view، رویه ذخیره شده و توابع در پایگاه داده رابطه ای کمک می کند.
- شما این امکان را دارید تا داده ها را تعریف کنید و داده های ذخیره شده را در پایگاه داده رابطه ای اصلاح کنید.
- SQL به کاربران اجازه میدهد تا مجوزها یا محدودیتها را روی ستونهای جدول، نماها و رویههای ذخیرهشده تنظیم کنند.
تاریخچه SQL
«مدل ارتباطی دادهها برای بانکهای دادهای مشترک بزرگ» مقالهای بود که توسط دانشمند بزرگ «اE.F. Codd» در سال 1970 منتشر شد. ریموند بویس و دونالد چمبرلین، محققین IBM، ابتدا پس از یادگیری از مقاله ارائه شده توسط ای , اف , کاد،SEQUEL (زبان پرس و جو انگلیسی ساختاریافته) را توسعه دادند. هر دوی آنها SQL را در آزمایشگاه تحقیقاتی سن خوزه شرکت IBM در سال 1970 توسعه دادند.
در پایان دهه 1970، شرکت نرم افزار رابطه ای اولین SQL خود را با استفاده از مفاهیم E.F. Codd، Raymond Boyce و Donald Chamberlin توسعه داد. این SQL کاملاً مبتنی بر RDBMS بود. RDBMS , سیستم مدیریت پایگاه داده رابطه ای است. RDBMS مبنایی برای SQL و برای همه سیستم های پایگاه داده مدرن مانند MS SQL Server، IBM DB2، Oracle، MySQL و Microsoft Access است.یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) , یک سیستم مدیریت پایگاه داده (DBMS) است که بر اساس مدل رابطه ای ارائه شده توسط E.F. Codd معرفی شده است.
Relational Software Inc. که اکنون با نام Oracle Corporation شناخته می شود، Oracle V2 را در ژوئن 1979 معرفی کرد که اولین پیاده سازی زبان SQL است. این نسخه Oracle V2 بر روی کامپیوترهای VAX کار می کند.
فرآیند SQL
هنگامی که ما در حال اجرای دستور SQL بر روی سیستم مدیریت پایگاه داده رابطهای هستیم، سیستم به طور خودکار بهترین روال را برای انجام درخواست ما پیدا میکند و موتور SQL نحوه تفسیر آن دستور خاص را تعیین میکند. زبان SQL شامل چهار مؤلفه زیر در فرآیند خود است:
- ارسال کننده پرس و جو
- موتورهای بهینه سازی
- موتور جستجوی کلاسیک
- SQL Query Engine
- و غیره
یک موتور پرس و جوی کلاسیک به متخصصان داده و کاربران اجازه می دهد تا Queryهای غیر SQL را حفظ کنند. معماری SQL در نمودار زیر نشان داده شده است:
دستورات SQL
در آموزش SQL به بخش دستورات میرسیم. دستورات SQL به ایجاد و مدیریت پایگاه داده ها کمک می کنند. رایج ترین مهم ترین دستورات SQL که بسیار مورد استفاده قرار می گیرند در زیر ذکر شده اند:
- CREATE
- UPDATE
- DELETE
- SELECT
- DROP
- INSERT
- دستور CREATE
این دستور به ایجاد پایگاه داده جدید، جدول جدید، نمای جدول و سایر اشیاء پایگاه داده کمک می کند.
- دستور UPDATE
این دستور به, به روز رسانی یا تغییر داده های ذخیره شده در پایگاه داده کمک می کند.
- دستور DELETE
این دستور به حذف یا پاک کردن رکوردهای ذخیره شده از جداول پایگاه داده کمک می کند. تاپل های منفرد یا چندگانه را از جداول پایگاه داده پاک می کند.
- دستور SELECT
این دستور به دسترسی به سطرهای منفرد یا چندگانه از یک یا چند جدول پایگاه داده کمک می کند. همچنین می توانیم از این دستور با عبارت WHERE استفاده کنیم.
- دستور DROP
این دستور به حذف کل جدول، نمای جدول و سایر اشیاء از پایگاه داده کمک می کند.
- دستور INSERT
این دستور به درج داده ها یا رکوردها در جداول پایگاه داده کمک می کند. به راحتی میتوانیم رکوردها را در ردیفهای تکی و چند ردیفی جدول قرار دهیم.
SQL یا NO_SQL
جدول زیر تفاوت های بین SQL و NoSQL را توضیح می دهد که درک آنها ضروری است:
NO_SQL | SQL |
---|---|
1. No-SQL یک سیستم مدیریت پایگاه داده غیر رابطه ای یا توزیع شده است. | 1. SQL یک سیستم مدیریت پایگاه داده رابطه ای است. |
2. زبان پرس و جوی مورد استفاده در سیستم های پایگاه داده No-SQL یک زبان پرس و جوی غیراعلامی است. | 2. زبان پرس و جوی مورد استفاده در این سیستم پایگاه داده یک زبان پرس و جوی ساخت یافته است. |
3. طرح واره پایگاه های داده No-SQL یک طرح واره پویا برای داده های بدون ساختار است. | 3. طرح واره پایگاه های داده SQL از پیش تعریف شده، ثابت و ایستا است. |
4. این پایگاه های داده به صورت افقی مقیاس پذیر هستند. | 4. این پایگاه های داده به صورت عمودی مقیاس پذیر هستند. |
5. نوع پایگاه داده No-SQL به صورت اسناد، کلید-مقدار و نمودار می باشد. | 5. نوع پایگاه داده SQL به صورت جداول، یعنی به صورت سطر و ستون است. |
6. از مدل BASE پیروی میکند. | 6. از مدل ACID پیروی می کند. |
7. پایگاه های داده No_SQL نمی توانند پرس و جوهای پیچیده را مدیریت کنند. | 7. پرس و جوهای پیچیده به راحتی در پایگاه داده SQL مدیریت می شوند. |
8. در حالی که پایگاه داده No-SQL یک گزینه عالی برای ذخیره داده های سلسله مراتبی است. | 8. این پایگاه داده بهترین انتخاب برای ذخیره داده های سلسله مراتبی نیست. |
9. بسیاری از پایگاه های داده No-SQL نیازی به نگاشت شی رابطه ای ندارند. | 9. همه پایگاه های داده SQL به نگاشت شی رابطه ای نیاز دارند. |
10. Airbnb، Uber و Kickstarter برترین شرکت هایی هستند که از این زبان پرس و جو استفاده می کنند. | 10. Gauges، CircleCI، Hootsuite، و غیره، شرکت های برتری هستند که از این زبان پرس و جو استفاده می کنند. |
11. Redis، MongoDB، Hbase، BigTable، CouchDB و Cassandra نمونه هایی از سیستم های پایگاه داده No_SQL هستند. | 11. SQLite، Ms-SQL، Oracle، PostgreSQL و MySQL نمونه هایی از سیستم های پایگاه داده SQL هستند. |
مزایای SQL
SQL مزیت های مختلفی دارد که باعث می شود در علوم داده محبوب واقع گردد. SQL یک زبان پرس و جوی کامل است که به متخصصان داده و کاربران اجازه می دهد تا با پایگاه داده ارتباط برقرار کنند. در زیر به بهترین مزایای SQL یا مزایای زبان پرس و جوی ساخت یافته اشاره شده است که عبارتند از:
1. بدون نیاز به برنامه نویسی
SQL به کدنویسی زیادی برای مدیریت سیستم های پایگاه داده نیاز ندارد. با استفاده از قوانین ساختاری ساده SQL می توانیم به راحتی به پایگاه داده دسترسی داشته باشیم و آن را نگهداری کنیم. این قوانین ساده SQL را کاربر پسند می کند.
2. پردازش پرس و جو با سرعت بالا
با استفاده از پرس و جوهای SQL به سرعت و به صورت کارآمد می توان به حجم زیادی از داده ها ی پایگاه داده دسترسی پیدا کرد. عملیات درج، حذف و به روز رسانی روی داده ها نیز در زمان کمتری انجام می شود.
3. زبان استاندارد
SQL از استانداردهای قدیمی ISO و ANSI پیروی می کند که این باعث می شود یک پلتفرم یکسان در سراسر جهان به همه کاربران خود ارائه می دهد.
4. قابلیت حمل
زبان پرس و جوی ساخت یافته را می توان به راحتی در رایانه های رومیزی، لپ تاپ ها، تبلت ها و حتی گوشی های هوشمند استفاده کرد. همچنین با توجه به نیاز کاربر می توان از آن از طریق سایر برنامه ها هم استفاده کرد.
5. زبان تعاملی
ما به راحتی می توانیم زبان SQL را یاد بگیریم و بفهمیم, همچنین می توانیم از این زبان برای برقراری ارتباط با پایگاه داده استفاده کنیم چرا که یک زبان پرس و جو ی ساده است. علاوه بر این می توان از این زبان برای دریافت پاسخ سوالات پیچیده در عرض چند ثانیه استفاده کرد.
6. بیش از یک نمایش داده
زبان SQL همچنین کمک می کند تا نماهای متعددی از ساختار پایگاه داده برای کاربران مختلف آن ایجاد کند.
معایب SQL
علاوه بر مزایایی که برای SQL ذکر شد ، معایبی نیز دارد که به شرح زیر است:
1. هزینه
هزینه عملیات برخی از نسخه های SQL بالا است. به همین دلیل است که برخی از برنامه نویسان نمی توانند از زبان پرس و جوی ساخت یافته استفاده کنند.
2. رابط پیچیده
یکی دیگر از معایب بزرگ SQL این است که برقراری رابط با زبان پرس و جوی ساختار یافته دشوار است و این استفاده و مدیریت آن را برای کاربران SQL دشوار می کند.
3. کنترل جزئی پایگاه داده
در SQL قوانین تجارت پنهان است. بنابراین، متخصصان داده و کاربرانی که از این زبان پرس و جو استفاده می کنند نمی توانند کنترل کامل پایگاه داده را داشته باشند.
جدول یا TABLE
داده ها در یک RDBMS در اشیاء پایگاه داده که جدول نامیده می شوند ذخیره می گردند. این جدول اساسا مجموعه ای از ورودی های داده ای مرتبط به هم است و از ستون ها و ردیف های متعددی تشکیل شده است. در واقع , جدول رایج ترین و ساده ترین شکل ذخیره سازی داده ها در یک پایگاه داده رابطه ای است.
برنامه زیر نمونه ای از CUSTOMERS -Table است:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | | 2 | Khilan | 25 | Delhi | 1500.00 | | 3 | kaushik | 23 | Kota | 2000.00 | | 4 | Chaitali | 25 | Mumbai | 6500.00 | | 5 | Hardik | 27 | Bhopal | 8500.00 | | 6 | Komal | 22 | MP | 4500.00 | | 7 | Muffy | 24 | Indore | 10000.00 | +----+----------+-----+-----------+----------+
فیلد FIELD
هر جدول به موجودیت های کوچکتری به نام فیلد تقسیم می شود. فیلدهای جدول مشتریان شامل شناسه، نام، سن، آدرس و حقوق و دستمزد است. فیلد ستونی در جدول است که برای حفظ اطلاعات خاص در مورد هر رکورد در جدول طراحی شده است.
رکورد RECORD OR ROW
رکورد همچنین به عنوان ردیفی از داده ها نامیده می شود که هر ورودی فردی است که در یک جدول وجود دارد. به عنوان مثال، 7 رکورد در جدول CUSTOMERS بالا وجود دارد. در زیر یک ردیف داده یا رکورد از جدول CUSTOMERS آمده است:
+----+----------+-----+-----------+----------+ | 1 | Ramesh | 32 | Ahmedabad | 2000.00 | +----+----------+-----+-----------+----------+
رکورد یک موجودیت افقی در جدول است.
ستون COLUMN
ستون یک موجودیت عمودی در جدول است که شامل تمام اطلاعات مرتبط با یک فیلد خاص در جدول می باشد.
به عنوان مثال، یک ستون در جدول بالا ADDRESS است که نشان دهنده توضیحات مکان است و مانند شکل زیر خواهد بود :
+-----------+ | ADDRESS | +-----------+ | Ahmedabad | | Delhi | | Kota | | Mumbai | | Bhopal | | MP | | Indore | +----+------+
محدودیت های SQL
محدودیت ها قوانینی هستند که بر روی ستون های داده روی یک جدول اعمال می شوند که برای محدود کردن نوع دادههایی که میتوانند در جدول قرار گیرند استفاده میشوند. این امر صحت و قابلیت اطمینان داده های موجود در پایگاه داده را تضمین می کند. محدودیت ها می توانند در سطح ستون یا جدول باشند. محدودیت های سطح ستون فقط برای یک ستون اعمال می شود در حالی که محدودیت های سطح جدول برای کل جدول اعمال می شود.
در زیر برخی از رایج ترین محدودیت های موجود در SQL آورده شده است:
- NOT NULL : تضمین می کند که یک ستون نمی تواند مقدار NULL داشته باشد.
- DEFAULT : یک مقدار پیش فرض را برای یک ستون ارائه می دهد که هیچ کدام مشخص نشده باشد.
- UNIQUE : اطمینان حاصل می کند که همه مقادیر در یک ستون متفاوت هستند.
- کلید اولیه : به طور منحصر به فرد هر ردیف/رکورد را در جدول پایگاه داده شناسایی می کند.
- کلید خارجی : به طور منحصر به فرد یک ردیف/رکورد را در هر جدول پایگاه داده دیگری شناسایی می کند.
- CHECK :محدودیت CHECK تضمین می کند که همه مقادیر در یک ستون شرایط خاصی را برآورده می کنند.
- INDEX : برای ایجاد و بازیابی سریع داده ها از پایگاه داده استفاده می شود.
سخن پایانی در این جلسه
در آموزش SQL به صورت ساده با ساختار SQL و کاربردهای آن آشنا شدیم. در واقع چهارچوب کلی SQL به دست آمد که می تواند نقطه شروعی برای یادگیری SQL با جزئیات بیشتر و دقیق تر باشد. امید است که توانسته باشیم با این پست در آغاز مسیر یادگیری SQL شما به صورت اساسی، قدمی برداشته باشیم.
درباره رضوان اخلاقی
کارشناس ارشد IT گرایش شبکههای کامپیوتری _ متخصص در زمینه شبکههای کامپیوتری، WSNها، مسیریابی در شبکه و الگوریتم های مربوط به شبکه . علاقهمند به برنامه نویسی و علوم مربوط به کامپیوتر و در حال حاضر در حوزه پژوهش علوم و فنون کامپیوتر، شبکههای کامپیوتری و برنامه نویسی فعالیت دارد.