عبارت SQL به معنای Structured Query Language است. این زبان به ما اجازه میدهد به دیتابیس دسترسی داشته و دیتای آن را دستکاری کنیم. این زبان در سال 1986 بعنوان استاندارد standard of the American National Standards Institute یا همان ANSI و همچنین ISO قرار گرفت. بنابراین دارای استاندارد ISO/ANSI میباشد. در ادامه این نوشته مقدار کوتاهی توضیحات ابتدایی در مورد SQL میدهیم و سپس به سراغ تمرین عملی میرویم.
زبان SQL چه کارهایی را برای ما میکند؟
1- با این زبان میتوان از دیتابیسها درخواست (کوئری) اطلاعات نمود
2- بازیابی اطلاعات از دیتابیس
3- قرار دادن داده در دیتابیس
4- به روزرسانی با Update داده در دیتابیس
5- حذف داده در دیتابیس
6-تشکیل دیتا بیس جدید
7-تشکیل جدول جدید در دیتابیس
8- ساخت view در دیتابیس
9- قرار دادن شرط دسترسی(permission) روی پروسهها، جداول وviews
- SQL can execute queries against a database
- SQL can retrieve data from a database
- SQL can insert records in a database
- SQL can update records in a database
- SQL can delete records from a database
- SQL can create new databases
- SQL can create new tables in a database
- SQL can create stored procedures in a database
- SQL can create views in a database
- SQL can set permissions on tables, procedures, and views
اگرچه SQL یک زبان با استانداردANSI/ISO است اما تفاوتهایی بین ورژنهای مختلف آن وجود دارد. اما برای آنکه همچنان استانداردANSI را حفظ کرده باشند، تعدادی از دستورات هستند که در تمامی ورژنها کاربرد دارد که عبارتند از: SELECT
, UPDATE
, DELETE
, INSERT
, WHERE
شایان ذکر است که اکثر دیتابیسهای SQL علاوه بر دستورات استاندارد ذکر شده، دستورات اختصاصی خود را نیز دارند.
برای مثال در ساخت یک سایت ممکن است از دیتابیس استفاده کنیم. بویژه استفاده از RDBMS database program و همچنین اسکریپت سمت سرور مانند PHP و یا ANSI. در چنین حالتی برای درخواست (query) از دیتابیس ممکن است از SQL استفاده کنیم و از HTML/CSS نیز برای style سایت خود استفاده کنیم.
RDBMS چیست؟
RDBMS مخفف Relational Database Management System است که اساس SQL و همچنین دیتابیسهای مدرن نظیر Oracle, MySQL و Microsoft Access را تشکیل میدهد.
جدول چیست؟
دادهها در RDBMS در یک object قرار میگیرند که به آن TABLE میگویند که از دادههای مرتبط که در سطرها و ستونها قرار گرفتهاند، تشکیل میشود. برای مثال دستور زیر میخواهد از جدول مربوط به مشتریان درخواستی را انجام دهد:
SELECT * FROM Customers;
هر table به اجزای کوچکتری موسوم به field تقسیم میشود. برای مثال در Customers table بخش field از مواردی نظیر CustomerID, CustomerName, ContactName, Address, City, PostalCode وCountry تشکیل شده است.
از ویدئو یوتیوب نئولرن ++++++++:
DBMS : واسط بین کاربر و دیتاها.
دو دسته اصلی DBMS:
1- relational یا رابطهای یا SQL:
دادهها در جدوالی (Tables) قرار دارند و از طریق روابطی با یکدیگر متصل هستند. به همین دلیل به آن رابطهای گویند.
SQL زبانی است که برای کار با این نوع از دیتابیسها از آن استفاده میشود. دیتابیسهای رابطهای انواع متعددی دارند که برخی از آنها عبارتند از : MySQL- ORACLE-SQLITE . همه این دیتابیسها از استاندارد SQL پیروی میکنند. تفاوتهای موجود بین این دیتابیسها بسیار ناچیز است و با یادگیری یک مورد، میتوان گفت سایر موارد را نیز یاد گرفتهایم.
در این دوره ما از DBMS موسوم به MySQL استفاده میکنیم که مشهورترین دیتابیس است.
2-Nonrelational یا غیررابطهای یا NonSQL
این نوع دیتابیسها از اساس متفاوت با انواع رابطهای هستند. از نمونههای آن میتوان به MongoDB و Redis اشاره کرد.
نصب MY_SQL:
دقیقه 18 :
به این صفحه میرویم: link- link
و روی My sql community GPL کلیک میکنیم.
و سپس گزینه MySQL Community Server
و سپس روی این تصویر:
و سپس روی گزینه با حجم کمتر کلیک میکنیم:

سپس گزینه :No thanks, just start my download.
در مرحله بعد فایل دانلود شده را نصب میکنیم. ( انجام این مراحل نیازمند حدود 20 دقیقه زمان میباشد)
در یکی از مراحل رمزی باید تعیین شود که ما sql12345678 میگذاریم. و همچنین یوزر هم همان root خواهد بود.
بعد از پایان همه مراحل نصب، یا از گزینه سمت چپ استفاده میکنیم و یا به کلیک روی گزینه + یک connection جدید میسازیم.

با کلیک روی گزینه سمت چپ به پنجرهای هدایت میشویم که از ما رمز ورود میخواهد و با وارد کردن رمز به محیط برنامه میرسیم.
SQL یک زبان case sensitive نیست.
زمانی که از نوار navigator یک دیتابیس را در حالت انتخاب قرار میدهیم، دستورات نوشته شده در query بر روی آن دیتا بیس اجرا میشود.

همچنین برای انتخاب دیتا بیس، میتوان از کلمه کلیدی use استفاده کرد.

برای بی اثر کردن خط کوئری از — استفاده میشود.
دقیقه 41
یکی از خطاهای رایج در ابتدای یادگیری SQL عدم استفاده از ; در پایان دستورات است.
تمرین 1: انتخاب همه شهرها از دیتابیس world
use world;
select * from city

تمرین 2: انتخاب شهرهایی با کد کشور برابر با NLD :
use world;
select * from city
WHERE CountryCode='NLD'

تمرین 3: انتخاب شهرهایی با کد کشور برابر با NLD مرتب شده بر اساس تعداد جمعیت:

نکته : ترتیب موارد ذکر شده در سه مورد قبلی (select و where و order) اهمیت زیادی دارد.
تا دقیقه 48
بررسی بیشتر SELECT
تمرین 4: نمایش نام شهرها و نمایش مقدار جمعیت آنها و جمعیت + 10 نفر

تمرین5: نمایش نام شهرها و نمایش مقدار جمعیت آنها و جمعیت + 10 نفر بعنوان ضریب رشد.

تا دقیقه 59
بررسی بیشتر where
تمرین6: انتخاب همه شهرها با جمعیت کمتر از 10 هزار نفر

تا دقیقه 01:06:46
تمرین7: انتخاب همه شهرها با جمعیت کمتر از 10 هزار نفر و کد کشور برابر با AIA

سایر عملگرها نیز قابل استفاده هستند. مانند OR و یا … .
تا دقیقه 01:13:42
عملگر IN
تمرین8: انتخاب همه شهرها که کد آن یکی از موارد (‘AFG’,’NLD’,’DZA’) باشد.

تا دقیقه 01:18:04
تمرین9: انتخاب همه شهرها که جمعینت آن بین 1000 تا 5000 باشد.
use world;
select *
FROM CITY
where Population between 1000 and 5000

تا دقیقه 01:21:00
کوئری روی stringها
تمرین 10 : انتخاب شهرهایی که نام آن شهر ها با حرف A شروع شود.
use world;
select *
FROM CITY
where Name LIKE 'A%'

تمرین 11: انتخاب شهرهایی که حرف u در نام آن شهر وجود داشته باشد.
use world;
select *
FROM CITY
where Name LIKE '%u%'

تمرین 12: انتخاب شهرهایی که حرف y در آخر نام آن شهر باشد.
use world;
select *
FROM CITY
where Name LIKE '%y'

تمرین 13: انتخاب شهرهایی که نام آن متشکل از دو حرف و حرف آخر آن y باشد.
use world;
select *
FROM CITY
where Name LIKE '_y'
(که جواب تهی است)
تمرین 14: انتخاب شهرهایی که نام آن متشکل از 6 حرف (5under score) و حرف آخر آن y باشد.
use world;
select *
FROM CITY
where Name LIKE '_____y'

تمرین 15: انتخاب شهرهایی که نام آن با A شروع شده باشد یا کد آن با A شروع شده باشد.
use world;
select *
FROM CITY
where Name LIKE 'A%' or CountryCode LIKE 'A%'
تا دقیقه : 01:29:02
عملگر REGEXP
خود عبارت مخفف regular expression است. این عملگر هنگام کار با رشته ها استفاده میشود. علاوه بر SQL در زبان های برنامه نویسی دیگر نیز کاربرد دارد.
تمرین 16: (با استفاده از REGEXP) انتخاب شهرهایی که عبارت Barak در نام آن شهر وجود داشته باشد.
use world;
select *
FROM CITY
where Name regexp 'Barak'

در regex تعدادی کارکار معنادار داریم:
^ : به معنای شروع شدن با یک رشته خاص است.
تمرین 17: (با استفاده از REGEXP) انتخاب شهرهایی که نام آن با عبارت Barr شروع شود.
use world;
select *
FROM CITY
where Name regexp '^Barr'
$ : به معنای پایان یافتن با یک رشته خاص است.
تمرین 18: (با استفاده از REGEXP) انتخاب شهرهایی که نام آن با عبارت eda پایان یابد.
use world;
select *
FROM CITY
where Name regexp 'eda$'
| : pipe به معنای یا
تمرین 19: (با استفاده از REGEXP) انتخاب شهرهایی که در نام آن عبارت bas یا mad وجود داشته باشد.
use world;
select *
FROM CITY
where Name regex 'bas|mad'
[ ]: مشخص کردن هر تعداد کاراکتر که بخواهیم.
تمرین 20 : (با استفاده از REGEXP) انتخاب شهرهایی که در نام آن حرفX حتما وجود داشته باشد. و اینکه قبل از x یکی از سه حرف uao باشد.
use world;
select *
FROM CITY
where Name regexp '[uao]x'
یا
where Name regexp 'ux|ax|ox'
تمرین 20-2: (با استفاده از REGEXP) انتخاب شهرهایی که در نام آن حرفX حتما وجود داشته باشد. و اینکه بعد از x یکی از سه حرف uao باشد.
use world;
select *
FROM CITY
where Name regexp 'x[uao]'
یا
where Name regexp 'xu|xa|xo'
علامت – : مشخص کردن بازه
تمرین 21 : (با استفاده از REGEXP) انتخاب شهرهایی که در نام آن حرفX حتما وجود داشته باشد. و اینکه بعد از x یکی از حروف abcdefghi باشد.
use world;
select *
FROM CITY
where Name regexp 'x[a-i]'
تا دقیقه 1:39:08
پیدا کردن مقدار Null
تمرین 22: از دیتا بیس sys انتخاب sys_config هایی که مقدار value آن null باشد.

تمرین 23: از دیتا بیس sys انتخاب sys_config هایی که مقدار value آن null نباشد.

تا دقیقه 1:44:17
تمرین 24 : از دیتا بیس world انتخاب همه شهرها و منظم شده بر اساس تعداد جمعیت (پیشفرض = ascending) یعنی از کم به زیاد
use world;
select *
FROM CITY
order by Population

تمرین 25 : از دیتا بیس world انتخاب همه شهرها و منظم شده بر اساس تعداد جمعیت (از زیاد به کم)
use world;
select *
FROM CITY
order by Population desc

سورت شدن بر اساس دو پارامتر:
تمرین 26 : از دیتا بیس world انتخاب همه شهرها و منظم شده بر اساس تعداد جمعیت (بالارونده) و ID (پایین رونده). (یعنی اگر دو شهر جمعیت برابر داشتند، اولویت را با توحه به ID تعیین کن )
use world;
select *
FROM CITY
order by Population ASC , ID DESC

نکته :
(در My SQL)ممکن است Order By را بر اساس ستونی بنویسیم که انتخاب نشده باشد. در مثال زیر ستون جمعیت انتخاب نشده است اما دسته بندی بر اساس آن انجام میشود:
use world;
select name
FROM CITY
order by Population desc

منظم کردن بر اساس نتیجه یک عبارت ریاضی:
تمرین 27 : از دیتا بیس world انتخاب همه شهرها و منظم شده بر اساس تعداد جمعیت تقسیم بر ID
use world;
select *
FROM CITY
order by Population/ID
تمرین 28 : از دیتا بیس world انتخاب همه شهرها و منظم شده بر اساس تعداد جمعیت تقسیم بر ID و این شاخص در خروجی موجود باشد:
use world;
select * , Population/ID as our_index
FROM CITY
order by Population/ID desc

تا دقیقه 1:50:11
LIMIT
تمرین 29 : از دیتا بیس world انتخاب همه شهرها و محدود به تنها سه مورد:
use world;
select *
FROM CITY
limit 3

تمرین 30 : از دیتا بیس world انتخاب همه شهرها و 6 مورد اول را بیخیال شو و 3 مورد از آن به بعد را نمایش بده:
use world;
select *
FROM CITY
limit 6,3

تمرین 31 : از دیتا بیس world انتخاب همه شهرها و نمایش آن بر اساس آخرین ID به اولین و محدود به 5 مورد آخر
use world;
select *
FROM CITY
order by ID Desc
limit 5

بخش دوم
زمانی که بخواهیم به چند جدول کوئری بزنیم چه باید کرد؟ در این فصل به این موضوع میپردازیم
لینک آموزش SQL بخش دوم
منابع:
1- w3school
2- آموزش SQL نئولرن ++++++