تعریف کلی درباره Query ها در MySQL

تعریف کلی درباره Query ها در MySQL با نوین هاست : پایگاه داده از اجزای مهم و کلیدی بسیاری از برنامه ها و وبسایت ها است  ؛ به عبارتی پایگاه داده، هسته مرکزی نحوه ذخیره سازی داده ها در سرور و تبادل اطلاعات در اینترنت می باشد یکی از مهمترین ویژگی های مدیریت پایگاه داده، عمل بازیابی داده ها از یک پایگاه داده است راه های زیادی برای بازیابی اطلاعات از یک پایگاه داده وجود دارد اما یکی از رایج ترین آنها، ارائه Query ها از طریق خط فرمان است.در سیستم های مدیریت پایگاه داده رابطه ای، Query به هر دستوری گفته میشود که داده ای را از جدول فراخوانی کند. درزبان ساختاریافته Query (SQL) ] Query ها اغلب با استفاده از عبارت SELECT صورت میگیرند.

Query ها در MySQL

در این متن ما درباره Query های SQL و برخی از توابع و اپراتورهایی که که معمولا استفاده میشوند. صحبت خواهیم کرد. همچنین میخواهیم ساختن Queryهای یک SQL را با استفاده از داده های نمونه در یک پایگاه داده MySQL تمرین کنیم.

پیش نیاز ها

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

  • یک سیستم یا سرور مجازی Ubuntu 18.04 همراه با یک کاربر فرعی که به sudo دسترسی داشته باشد، لازم داریم.
  • برنامه MySQL روی این سیستم نصب شده باشد.

ایجاد یک پایگاه داده نمونه

درتعریف کلی درباره Query ها در MySQL ، قبل از اینکه بتوانیم Query ها را در SQL ایجاد کنیم ، باید یک پایگاه داده و چند جدول ایجاد کنیم و سپس جداول را با داده های مورد نیاز پرکنیم.به عنوان مثال ما سناریوی زیر را برای پایگاه داده خود تصور میکنیم : شما میخواهید تولدتان را همراه با دوستانتان جشن بگیرید، در همان روز دوستان شما به سالن بازی بولینگ رفته و با یکدیگر مسابقه می دهند. و سپس به مکانی که شما برای تولدتان رزرو کردید می آیند. مدتی از جشن میگذرد و شما نتیجه مسابقه بولینگ را از دوستانتان می پرسید. همچنین تاریخ تولد، غذا، دسر و مکان موردعلاقه آنها را میپرسید تا برای شام بهتر برنامه ریزی کنید. شما میخواهید بجای نوشتن این اطلاعات در یک دفتر، آنها را در یک پایگاه داده MySQL ذخیره کنید.

sudo mysql

برای شروع، با حساب اصلی خود در MySQL یک صفحه جدید باز کنید :

نکته : اگر شما MySQL را طبق دستورات قبل بر روی Ubuntu18.04 نصب کرده اید ، ممکن است برای تایید حساب خود به رمز عبور نیاز پیدا کنید . در این صورت شما با دستور زیر به MySQL وصل خواهید شد :

mysql -u root -p

mysql -u root -p

سپس پایگاه داده موردنیاز را ایجاد کنید :

MySQL> CREATE DATABASE `birthdays`;

این پایگاه داده را انتخاب کنید :

MySQL>USE birthdays;
 

سپس دو جدول در این پایگاه داده ایجاد کنید. از اولین جدول برای نوشتن رکورد دوستانتان در مسابقه بولینگ استفاده کنید.

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

MySQL>CREATE TABLE tourneys (
MySQL> name varchar(30), 
MySQL> wins real, 
MySQL> best real,
MySQL> size real 
MySQL> );

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

Query OK, 0 rows affected (0.00 sec)

جدولی که ساختید را با داده های زیر پر کنید :

MySQL> INSERT INTO tourneys (name, wins, best, size)
MySQL> VALUES ('Dolly', '7', '245', '8.5'),
MySQL> ('Etta', '4', '283', '9'),  
MySQL> ('Irma', '9', '266', '7'), 
MySQL> ('Barbara', '2', '197', '7.5'),
MySQL> ('Gladys', '13', '273', '8');

خروجی شما این چنین خواهد بود :

Query OK, 5 rows affected (0.01 sec)
Records: 5  Duplicates: 0  Warnings: 0

یک جدول با نام شام و ستون هایی با نام هر کدام از دوستانتان، تاریخ تولد آنها، غذا، مکان و دسر مورد علاقه آنها ایجاد کنید.

MySQL> CREATE TABLE dinners ( 
MySQL> name varchar(30), 
MySQL> birthdate date,
MySQL> entree varchar(30),
MySQL> side varchar(30),
MySQL> dessert varchar(30) 
MySQL> );

خروجی دستور :

Query OK, 0 rows affected (0.01 sec)داده های زیر را در جدولتان وارد کنید :
MySQL> INSERT INTO dinners (name, birthdate, entree, side, dessert) 
MySQL> VALUES ('Dolly', '1946-01-19', 'steak', 'salad', 'cake'), 
MySQL> ('Etta', '1938-01-25', 'chicken', 'fries', 'ice cream'), 
MySQL> ('Irma', '1941-02-18', 'tofu', 'fries', 'cake'), 
MySQL> ('Barbara', '1948-12-25', 'tofu', 'salad', 'ice cream'), 
MySQL> ('Gladys', '1944-05-28', 'steak', 'fries', 'ice cream');

 

خروجی دستور

Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

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

تعریف اصطلاح SELECT

همانطور که در مقدمه گفته شد، Query های SQL همیشه با عبارت SELECT شروع می شوند؛ در Query ها از SELECT برای مشخص کردن این که کدام ستون از جدول در نتیجه نمایش داده شود، استفاده میگردد. تمامی Query ها دارای دستور FROM هستند. که توسط آن جدول مورد نظر را نشان میدهد.

بطورکلی Query های SQL از متد زیر استفاده میکنند :

MySQL> SELECT column_to_select FROM table_to_select WHERE certain_conditions_apply;

 

به عنوان مثال دستور زیر ستون نام در جدول شام را در خروجی نمایش می دهد :

MySQL> SELECT name FROM dinners;

خروجی دستور

+---------+
| name    |
+---------+
| Dolly   |
| Etta    |
| Irma    |
| Barbara |
| Gladys  |
+---------+
۵ rows in set (0.00 sec)

همچنین شما میتوانید چند ستون از یک جدول را با جدا کردن نام آنها به وسیله ” , ” انتخاب کنید :

MySQL> SELECT name, birthdate FROM dinners;

خروجی

+---------+------------+
| name    | birthdate  |
+---------+------------+
| Dolly   | ۱۹۴۶-۰۱-۱۹ |
| Etta    | ۱۹۳۸-۰۱-۲۵ |
| Irma    | ۱۹۴۱-۰۲-۱۸ |
| Barbara | 1948-12-25 |
| Gladys  | ۱۹۴۴-۰۵-۲۸ |
+---------+------------+
۵ rows in set (0.00 sec)

در دستور SELECT شما با استفاده از علامت * میتوانید تمامی ستون های جدول را انتخاب کنید.

MySQL> SELECT * FROM dinners;

خروجی

+---------+------+------+------+
| name    | wins | best | size |
+---------+------+------+------+
| Dolly   |    ۷ |  ۲۴۵ |  ۸.۵ |
| Etta    |    ۴ |  ۲۸۳ |    ۹ |
| Irma    |    ۹ |  ۲۶۶ |    ۷ |
| Barbara |    ۲ |  ۱۹۷ |  ۷.۵ |
| Gladys  |   ۱۳ |  ۲۷۳ |    ۸ |
+---------+------+------+------+
۵ rows in set (0.00 sec)

دستور WHRER درQuery ها برای انتخاب رکوردهایی که دارای یک شرط خاص هستند، استفاده میشود. و ردیف هایی که فاقد آن شرط هستند را در خروجی نمایش نمی دهد.

معمولا دستور WHRER  به صورت زیر استفاده میگردد :

MySQL>. . . WHERE column_name comparison_operator value

علامت های مقایسه در WHERE ، ستون انتخاب شده را با مقدار تعیین شده مقایسه میکند. در اینجا بعضی از علامت های معمولی مقایسه در SQL را مشاهده میکنیم. :

علامت هاتعریف
=مساوی بودن مقداری را با مقادیر فیلد انتخاب شده بررسی میکند
!=نا مساوی بودن مقداری را با مقادیر فیلد انتخاب شده بررسی میکند
<کوچکتر بودن مقداری را از مقادیر فیلد انتخاب شده بررسی میکند
>بزرگتر بودن مقداری را از مقادیر فیلد انتخاب شده بررسی میکند
<=کوچکتر یا مساوی بودن مقداری را از مقادیر فیلد انتخاب شده بررسی میکند
>=بزرگتر و مساوی بودن مقداری را از مقادیر فیلد انتخاب شده بررسی میکند
BETWEENقرار گرفتن بین دو مقدار را برسی میکند
INمساوی بودن با یک مقدار از بین چند مقدار را بررسی میکند
EXISTSبررسی میکند که آیا ردیف مورد نظر وجود دارد یا خیر
LIKEمشابه بودن یک عبارت متنی را با را با مقادیر یک فیلد بررسی میکند
IS NULLبرای مشاهده فیلدهای حاوی مقدار NULL استفاده کنید.
IS NOT NULLبرای مشاهده فیلد هایی که مقدارشان NULL نیست استفاده می شود

به عنوان مثال اگر شما می خواهید سایز کفش Irma را پیدا کنید. از دستور زیر استفاده میکنیم :

MySQL> SELECT size FROM tourneys WHERE name = 'Irma';

 

خروجی

+------+
| size |
+------+
|    ۷ |
+------+
۱ row in set (0.00 sec)

SQL به شما اجازه استفاده از کلمات و علامت های کلیدی مثل (%) و (_) را می دهد که این موضوع در دستور WHERE بسیار مفید می باشد.

به عنوان مثال Query ها در MySQL ، در نظر میگیریم که شما غذای مورد علاقه دوستتان را فراموش کرده اید. اما مطمئن هستید که با حرف T شروع می شود. در این صورت از دستور زیر استفاده می کنیم :

MySQL< SELECT entree FROM dinners WHERE entree LIKE 't%';

خروجی

+--------+
| entree |
+--------+
| tofu   |
| tofu   |
+--------+
۲ rows in set (0.00 sec)

و بر اساس این خروجی متوجه میشویم غذایی که فراموش کرده ایم توفو می باشد.

ممکن است شما در پایگاه داده خود جدول ها یا ستون هایی با نام های طولانی داشته باشید. در این موارد،  شما میتوانید با ایجاد یک نام مستعار توسط دستور AS این نام هارا کوتاه کنید.

MySQL< SELECT name AS n, birthdate AS b, dessert AS d FROM dinners;

 

خروجی

+---------+------------+-----------+
| n       | b          | d         |
+---------+------------+-----------+
| Dolly   | ۱۹۴۶-۰۱-۱۹ | cake      |
| Etta    | ۱۹۳۸-۰۱-۲۵ | ice cream |
| Irma    | ۱۹۴۱-۰۲-۱۸ | cake      |
| Barbara | 1948-12-25 | ice cream |
| Gladys  | ۱۹۴۴-۰۵-۲۸ | ice cream |
+---------+------------+-----------+
۵ rows in set (0.00 sec)

در اینجا ما به پایگاه داده گفته ایم ستون نام را با  n، ستون تاریخ تولد را باb  و ستون دسر را با d نمایش دهد.

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

در پست بعدی Query ها در MySQL به بررسی توابع تجمعی یاaggregate می پردازیم. با ما همراه باشید.

نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *