• ثبت نام
  • ورود
  • 49624 - 021 تلفن
  • ثبت نام
  • ورود
  • 49624 - 021 تلفن

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

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

پایگاه داده از اجزای مهم و کلیدی بسیاری از برنامه ها و وبسایت ها است. به عبارتی پایگاه داده، هسته مرکزی نحوه ذخیره سازی داده ها در سرور و تبادل اطلاعات در اینترنت می باشد. یکی از مهمترین ویژگی های مدیریت پایگاه داده، عمل بازیابی داده ها از یک پایگاه داده است. راه های زیادی برای بازیابی اطلاعات از یک پایگاه داده وجود دارد اما یکی از رایج ترین آنها، ارائه Query ها از طریق خط فرمان است.

 

 

در سیستم های مدیریت پایگاه داده رابطه ای، Query به هر دستوری گفته میشود که داده ای را از جدول فراخوانی کند. در زبان ساختاریافته Query (SQL) ] Query ها اغلب با استفاده از عبارت SELECT صورت میگیرند.

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

 

پیش نیاز ها

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

  • یک سیستم یا سرور مجازی Ubuntu 18.04 همراه با یک کاربر فرعی که به sudo دسترسی داشته باشد، لازم داریم.
  • برنامه 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 بسیار مفید می باشد.

 

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

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

خروجی :  

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

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

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

البته توجه داشته باشید نام مستعاری که توسط دستور AS تولید شده موقتی است و فقط در طول Query ای که ایجاد کردیم نمایش داده می شود :

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 های یک پایگاه داده استفاده میشوند. اگر شما بخواهید یک محاسبه انجام بدهید به توابع تجمعی نیاز دارید که در بخش بعد به آن میپردازیم.

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

نوشته مشابه

ثبت نظر