یادگیری SQL در 20 دقیقه!

بخش: پایگاه داده ها 85 بار مشاهده شده سه شنبه ۴ مهر ۹۶ 0 نظر ارسال شده
یادگیری SQL در 20 دقیقه!

هر توسعه دهنده وب باید SQL را بداند. اگر چه از دهه 70 تا کنون وجود دارد ،اما هنوز هم به طور گسترده مورد استفاده قرار می گیرد و نمی توانید بدون آن یک برنامه جدی ایجاد کنید. اکثر فریم های full-stack دارای کتابخانه هایی برای مقابله با پیچیدگی SQL - ActiveRecord، Doctrine، Hibernate و ... هستند. اما اغلب اوقات نیاز به نوشتن SQL سطح پایین دارید.

به همین دلیل ما یک مقدمه کوتاه و مقدماتی برای مبانی SQL ارائه دادیم. در این مقاله، ویراستاران تعاملی برای نوشتن و اجرای کد را پیدا خواهید کرد. نگران نباشید آنها را آزمایش کنید و سعی کنید این وظایف را کامل نمایید.

  1. ایجاد جدول 

هنگام ایجاد جداول جدید در SQL دستور CREATE TABLE فراخوانی می شود. انتظار می رود تا آرگومان هایش تمام ستون هایی که در جدول می خواهیم و انواع داده هایشان را قرار دهد. 

در اینجا یک جدول ساده به نام months ایجاد می کنیم. که شامل 3 ستون است: 

  •  id: شماره ماه در تقویم سال (عدد صحیح).   
  • Name: نام ماه (رشته، حداکثر 10 کاراکتر).
  •  Days: تعداد روزها در آن ماه (عدد صحیح). 

و در زیر نحوه به نظر رسیدن آن در SQL است:    

CREATE TABLE months (id int, name varchar(10), days int);

 همچنین هنگام ایجاد جداول، افزودن یک کلید اولیه به یکی از ستون ها توصیه می شود. این امر به مطالب منحصر به فرد و سرعت بخشیدن به نمایش کمک می کند. البته در این درس آنها را پوشش نمی دهیم، اما می توانید در اینجا آن ها را بخوانید. 

 

2. وارد کردن سطرها 

بیایید به ماه ها چند سطر اطلاعات بدهیم. افزودن نوشته ها به یک جدول با استفاده از عبارت INSERT انجام می شود. دو روش مختلف برای استفاده از آن وجود دارد:

 اولين روش، نام ستون (column)را در جايي که داده ها وارد مي شود، مشخص نمي کند، تنها مقدار آن ها را می پذیرد و آن را به توسعه دهنده منتقل مي کند تا تمام داده ها را در جهت درست ارائه نماید.

INSERT INTO months VALUES (1,'January',31);

روش بالا، کوتاهتر است، اما اگر ستون های اضافی در آینده اضافه کنیم، کوئری خراب می شود. راه برتر برای نوشتن آن شامل شدن ستون ها است:

INSERT INTO months (id,name,days) VALUES (2,'February',29);

می توانید این دستور را در مثال زیر مشاهده نمایید.

insert into

INSERT INTO months (id,name,days) 
VALUES (3, "March", 31);

3.Select 

زمانی که می خواهیم اطلاعات را از پایگاه داده جمع آوری کنیم، Select querieها بهترین دوست ما هستند. آنها تمام وقت مورد استفاده قرار می گیرند، بنابراین در این درس آنها را پوشش خواهیم داد. 

ساده ترین مثال SELECT این query است که تمام ستون ها و سطرها را از جدول کاراکترها باز می گرداند:

SELECT * FROM "characters"

ستاره (*) بدین معنی است که می خواهیم تمام ستون ها را بدون شامل شدن چیزی از بین ببریم. از آنجا که پایگاه های داده SQL معمولا شامل بیش از یک جدول می باشند، کلمه کلیدی FROM باید مشخص شود که می خواهیم به کدام جدول نگاه کنیم. 

گاهی اوقات تمام ستون ها را در یک جدول نمی خواهیم. SQL به ما اجازه انتخاب و دریافت آن ستون هایی را که می خواهیم می دهد: به جای قرار دادن ستاره (*)، نام ستون های مورد نظر را بنویسید.

SELECT name, weapon FROM "characters"

همچنین در بسیاری از موارد می خواهیم نتایج به گونه ای مشخص مرتب شوند. در SQL این کار را با ORDER BY انجام می دهیم. این امر می تواند یک اصلاح کننده اختیاری - ASC (به طور پیش فرض) یا DESC برای جهت مرتب سازی باشد:

SELECT name, weapon FROM "characters" ORDER BY name DESC

select

SELECT * 
FROM "characters" 
WHERE weapon = "pistol";

4. Where

آموختید که چگونه تنها ستون های خاصی را انتخاب کنید، اما اگر تنها به سطرهای خاصی نیاز باشد چه باید کرد؟ شرط WHERE، اجازۀ فیلتر کردن داده ها بسته به یک شرط را می دهد. در این کوئری ما تنها آن نوشته هایی را که برای مبارزه از pistol استفاده می کنند را جدول characters انتخاب می کنیم.

where

SELECT * 
FROM "characters" 
WHERE weapon = "pistol";

 

 5.  AND / OR 

شروط WHERE با استفاده از اپراتورهای منطقی (AND، OR) و مقایسات ریاضی (=، <،>، <=،> =، <>) می توانند شرایط را به عنوان خاصی که می خواهید ایجاد کنند. 

در اینجا یک جدول حاوی 4 آلبوم بیشترین فروش را در تمام دوران داریم. اجازه دهید آنهایی را که به عنوان rock طبقه بندی شده اند و کمتر از 50 میلیون نسخه فروخته شدهرا انتخاب کنیم. این کار به راحتی با قرار دادن عملگر AND بین دو جمله انجام می شود. 

sql andor

SELECT * 
FROM albums 
WHERE genre = 'rock' AND sales_in_millions <= 50 
ORDER BY released

 

6. In/Between/Like

دستورات WHERE از چند دستور ویژه که اجازه استفاده از یک روش سریع برای بررسی درخواست های معمول را می دهند پشتیبانی می کند. آن ها: 

  • IN: ستون را با چندین مقدار ممکن مقایسه می کند، اگر یکی از آن را برآورده کند، True می شود.
  • ETWEEN : وجود یک مقدار در محدوده را بررسی می کند.
  •  LIKE: یک الگوی خاص را جستجو می کند. 

برای مثال اگر بخواهیم یک کوئری از آلبوم های  pop و soul را از جدول انتخاب کنیم. می توانیم از IN("value1","value2") استفاده کنیم:

SELECT * FROM albums WHERE genre IN ('pop','soul');

اگر تمام آلبوم هایی که بین سال های 1975 تا 1985 منتشر شده را بخواهیم، می نویسیم:

SELECT * FROM albums WHERE released BETWEEN 1975 AND 1985;

sql in-between-like

SELECT * 
FROM albums 
WHERE genre IN ('pop','soul');

نکته: تمام موارد عملیات فوق را می توان با قرار دادن NOT تغییر داد. از NOT BETWEEN برای گرفتن آلبوم ها قبل از 1975 و بعد از 1985، استفاده کنید.

 

7. توابع 

SQL با توابع بسته بندی شده و تمام موارد مفید توسط آن ها انجام می شود. در اینجا برخی از مواردی که به طور مرتب مورد استفاده می شوند قرار دارند: 

  • ()COUNT: تعداد سطرها را برمی گرداند.
  • ()SUM: مجموع کل ستون عددی را می دهد.
  • ()AVG : میانگین مجموعه ای از مقادیر را می دهد.·  
  •  ()MIN () / MAX: حداقل / حداکثر مقدار را از یک ستون دریافت می کند. 

برای دریافت آخرین سال در جدول می توانیم کد زیر را اجرا کنیم:

sql function

SELECT MAX(released) FROM albums;

 

8. Nested Select

در بخش قبل نحوه انجام محاسبات ساده با داده ها را یاد گرفتیم. در واقع اگر بخواهیم از نتیجه این محاسبات استفاده کنیم، اغلب یک کوئری توزیع شده (که به عنوان sub select نیز شناخته می شود) ضروری است. می خواهیم هنرمند، آلبوم و سال انتشار را برای قدیمی ترین آلبوم در جدول دریافت کنیم.

 می دانیم که این ستون های خاص را چگونه باید دریافت کنیم:

SELECT artist, album, released FROM albums;

همچنین می دانیم چگونه اولین سال را بدست آوریم:Codeاکنون تنها ترکیب این دو با کمک WHERE نیاز است:

SELECT MIN(released) FROM album;

sql nested select

SELECT artist,album,released 
FROM albums 
WHERE released = (
 SELECT MIN(released) FROM albums
);

 

9. پیوستن به جداول 

در پایگاه داده های پیچیده تر، در اغلب موارد چندین جدول متصل به یکدیگر وجود دارد. به عنوان مثال، در زیر دو جدول در مورد بازی های ویدئویی و توسعه دهندگان بازی های ویدئویی است.

 در جدول video_games یک ستونdeveloper وجود دارد، اما به جای نام توسعه دهنده، یک عدد صحیح قرار دارد. این id توسعه دهنده مربوطه را از جدول game_developers نشان می دهد که به طور منطقی نشان دهنده پیوند دو صفحه می باشد و به ما اجازه استفاده از اطلاعاتی که در هر دو آنها در یک زمان ذخیره شده است را می دهد. 

اگر می خواهیم یک کوئری ایجاد کنیم که تمام موارد را که باید در مورد بازی ها بدانیم، باز گرداند، می توانیم INNER JOIN را برای بدست آوردن ستون از هر دو جدول استفاده کنیم. 

sql join table

SELECT video_games.name, video_games.genre, game_developers.name, game_developers.country 
FROM video_games 
INNER JOIN game_developers 
ON video_games.developer_id = game_developers.id;

این ساده ترین و رایج ترین نوع JOIN است. چند گزینه دیگر نیز وجود دارد که در مورد سناریوهای مکرر کاربرد دارند. چارت Joins SQL 

 

10. Aliases

اگر به مثال قبلی نگاه کنید متوجه خواهید شد که دو ستون به نام name وجود دارد. این امر گیج کننده است، بنابراین اجازه دهید آن را با تنظیم یک نام مستعار به یکی از ستون های تکرار تغییر دهید: name از game_developers به ​​عنوان developer ظاهر خواهد شد. 

همچنین می توانیم کوئری را با استفاده از نام مستعار (aliases) به نام جدول تقریبا کوتاه کنیم: video_games به games و game_developers به ​​devs تبدیل می شود.

sql aliasys

SELECT games.name, games.genre, devs.name AS developer, devs.country 
FROM video_games AS games 
INNER JOIN game_developers AS devs 
ON games.developer_id = devs.id;

 

11. به روز رسانی

 اغلب باید داده ها را در برخی از سطرها تغییر دهیم. در SQL این کار از طریق دستور UPDATE انجام می شود. 

استفاده از UPDATE شامل: 

  • انتخاب جدول که رکوردی که می خواهیم تغییر دهیم در آن قرار گرفته است.
  • تنظیم مقدار(های) جدید برای ستون(ها) مورد نظر.
  • سطری که می خواهیم به روز رسانی شود را با WHERE انتخاب کنید. اگر این حذف شود تمام سطرها در جدول تغییر خواهند کرد. 

در اینجا یک جدول از برخی از سریال های تلویزیونی با بالاترین امتیاز از تمام دوران قرار دارد. هرچند یک مشکل کوچک در مورد آن وجود دارد، نمایش Game of Thrones به عنوان کمدی توصیف شده، که به وضوح مشخص نیست. بیایید این مشکل را حل کنیم.

sql update

UPDATE tv_series 
SET genre = 'drama' 
WHERE id = 2;

 

12. حذف سطر ها 

حذف یک سطر جدول از طریق SQL یک فرایند بسیار ساده است. همه چیزهایی که مورد نیاز است، انتخاب جدول درست و سطری است که می خواهیم حذف کنیم.

sql delete columns

DELETE FROM tv_series 
WHERE id = 4

نکته مهم: هنگام نوشتن یک دستور DELETE همیشه باید احتیاط کنید و اطمینان حاصل نمایید که شرط WHERE متصل شده است. بدون آن تمام سطرهای جدول حذف خواهند شد! 

13. حذف جداول 

اگر می خواهیم تمام سطرها را حذف کنیم، اما جدول را باقی بماند، دستور درست TRUNCATE است:

TRUNCATE TABLE table_name;

در واقع در صورتی که می خواهیم هر ردی از جدول را حذف کنیم، دستور DROP استفاده می شود: 

DROP TABLE table_name;

در استفاده از این دستورات بسیار مراقب باشید. هیچ undo و راه برگشتی وجود ندارد! 

 

نتیجه 

این آموزش SQL را پوشش می دهد! اما باز هم مطالب بیش تری برای پوشش دادن وجود دارد، با این حال توضیحات بالا مهارت های عملی در حرفه وب را به شما ارائه می دهد. 

برای اطلاعات بیشتر در مورد SQL، این منابع عالی را بررسی کنید: 

  • دوره SQL در Codeacademy - اینجا
  • SQL Fiddle: ابزار آنلاین برای آزمایش و به اشتراک گذاری SQL - اینجا        
گروه تحقیقات سافت اسکیل
گروه تحقیقات سافت اسکیل

گروه تحقیقات سافت اسکیل به منظور افزایش سطح دانش جامعه، سعی در ترجمه، تالیف و تولید محتوای با کیفیت در زمینه های مختلف نرم افزاری دارد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...