زبان «پرس و جوی ساختاریافته» (Structured Query Language) یا به اختصار، زبان SQL، به عنوان یکی از مهمترین و محبوبترین زبانها به حساب میآید که از آن برای انجام عملیات مختلف بر روی دادههای ذخیره شده در پایگاههای دادهاستفاده میشود. این زبان، دارای دستورات مختلفی برای کار با دادهها است که دستور SELECT در SQL به عنوان یکی از پرکاربردترین آنها شناخته میشود. این دستور برای بازیابی اطلاعات مختلف از جداول موجود در پایگاه داده کاربرد دارد. در مطلب حاضر، پس از ارائه توضیح مختصری پیرامون پایگاه داده و جزء اصلی آن، یعنی جدول، و شرح مختصری از رایجترین دستورات زبان SQL، به روشهای مختلف استخراج اطلاعات از جدولها با استفاده از دستور SELECT در SQL پرداخته میشود.
فهرست مطالب این نوشته
پایگاه داده چیست ؟
پایگاه داده یا بانک اطلاعاتی بستری را برای ذخیره مجموعهای از دادهها به صورت ساختاریافته و در قالب جداول فراهم میکند و این قابلیت را به کاربران میدهد تا بتوانند دادههای مورد نیاز خود را بازیابی کنند. همچنین، میتوان دادههای ذخیره شده در پایگاههای داده را ویرایش، بهروزرسانی و مدیریت کرد. برخی از پرکاربردترین و رایجترین پایگاههای داده در ادامه فهرست شدهاند:
یکی از انواع پایگاههای داده، «پایگاه داده رابطهای» (Relational Database) است. در این نوع پایگاه داده، دادههایی که به هم مرتبط هستند، در جداول مختلف ذخیره میشوند و بر اساس دادههای مشترک جداول، رابطهای میان جداول پایگاه داده وجود دارد.
در ادامه، به شرح مختصری پیرامون جداول پایگاه داده پرداخته میشود.
جدول در پایگاه داده چیست ؟
جداول به عنوان اشیای پایگاه داده تلقی میشوند که دادهها را بهصورت ساختاریافته در خود ذخیره میکنند. هر جدول شامل تعدادی سطر و ستون است. به هر سطر جدول، «رکورد» (Record) گفته میشود که اطلاعات منحصربفرد یک «موجودیت» (Entity) را دربر میگیرد. هر یک از ستونهای جداول نیز ویژگیهای تعریف شده را برای هر سطر نشان میدهند. به عنوان مثال، جدول اطلاعات دانشآموزان، نمونهای از جدول در پایگاه داده است.
در جدول فوق، هر سطر مربوط به اطلاعات یک موجودیت است (در این مثال منظور از موجودیتها، دانشآموزان هستند) و ستونهای جدول، ویژگیهای موجودیت را نشان میدهند. در پایگاه داده، مفهوم دیگری به نام «کلید» (Key) نیز وجود دارد که در هنگام ساخت جدول باید انواع کلیدها مشخص شوند. در پایگاههای داده رابطهای، معمولاً یک ستون از جدول را به مقادیر منحصربهفردی اختصاص میدهند که با آن بتوان به هر یک از سطرها دسترسی داشت و به آن ستون، «کلید اصلی» (Primary Key) گفته میشود. به عبارتی، مقادیر این ستون، غیرتکراری هستند و به منظور ایجاد ارتباط بین جدولهای مختلف در پایگاه داده، از مقادیر این ستونها استفاده میشود. در جدول بالا، ستون stud_id میتواند به عنوان کلید اصلی جدول Students محسوب شود.
فرض کنید علاوهبر جدول Students، جدول دیگری با نام Departments وجود دارد که اطلاعات دانشکدهها و دانشآموزان هر دانشکده را ذخیره میکند. در این جدول، ستونی با نام stud_id نیز تعریف شده است که مقادیر آن با توجه به مقادیر ستون stud_id جدول Students مقداردهی میشود. در این حالت، ستون stud_id در جدول Departments به عنوان «کلید خارجی» (Foreign key) به حساب میآید و ارتباط این دو جدول با استفاده از کلید اصلی (در جدول Students) و کلید خارجی (در جدول Departments) برقرار میشود.
مثالی از جدول اطلاعات دانشکدهها در SQL
به منظور دسترسی به دادههای جداول و اعمال عملیات مختلف بر روی آنها، از «زبان پرس و جوی | ساختاریافته» (Structured Query Language | SQL) استفاده میشود. در بخش بعدی، به طور مختصر به معرفی این زبان خواهیم پرداخت.
زبان SQL چیست و مهمترین دستورات آن چه هستند؟
در پایگاههای داده رابطهای به منظور ساخت جداول و View، اضافه کردن داده جدید، اعمال تغییرات بر روی دادههای پایگاه داده، بازیابی دادهها و بهروزرسانی آنها از از زبان برنامه نویسی استاندارد SQL استفاده میشود. پردازش دادهها با استفاده از زبان SQL سریع انجام میشود و با استفاده از «قواعد نحوی» (Syntax) ساده در این زبان، میتوان عملیات مختلفی را بر اساس دادهها انجام داد. در خصوص چیستی SQL پیش از این مطلبی جامع و کاربردی در مجله فرادرس منتشر شده است که مطالعه آن برای آشنایی بیشتر با SQL به علاقهمندان پیشنهاد میشود.
مهم ترین دستورات SQL کدامند؟
زبان SQL دارای ۴ دستور مهم و کاربردی برای اعمال تغییرات و بازیابی اطلاعات از جداول موجود در پایگاه داده است که در ادامه به آنها اشاره میشود:
دستور SELECT در SQL: از این دستور میتوان برای بازیابی اطلاعات از جداول موجود در پایگاه داده استفاده کرد.
دستور INSERT در SQL: از این دستور به منظور درج سطر جدید در جدول استفاده میشود.
دستور UPDATE در SQL: این دستور را میتوان برای ویرایش اطلاعات موجود در جدول استفاده کرد.
دستور DELETE در SQL: این دستور را برای حذف سطری از جدول میتوان به کار برد.
پیش از این مطلبی در مجله فرادرس برای گزارههای Insert ،Update و Delete در SQL منتشر شده است که برای یادگیری این دستورات میتوان آن را مطالعه کرد. از میان دستورات فوق، دستور SELECT در SQL به عنوان پرکاربردترین دستور این زبان شناخته میشود که میتوان با استفاده از آن، اطلاعات یک یا بیش از یک جدول را با نوستن دستورات ساده تا پیچیده بازیابی کرد. در ادامه مطلب، به توضیح جزئیتر نحوه استفاده از دستور SELECT در SQL پرداخته میشود.
دستور SELECT در SQL چیست ؟
یکی از اهداف ذخیره کردن دادهها در جداول پایگاه داده، بازیابی آنها به منظور تهیه گزارشات و تجزیه و تحلیل آنها است. بدین منظور، از دستور SELECT در SQL استفاده میشود. به عبارتی، از این دستور میتوان اطلاعات مختلفی را از جدول بر اساس نام ستونهای جدول و با در نظر گفتن شرطهای مختلف استخراج کرد. بهعلاوه، میتوان خروجی اطلاعات را بر اساس مقادیر ستونهای جدول، به ترتیب نزولی یا صعودی بازیابی کرد. در ادامه مطلب، به توضیح انواع حالتهای بازیابی اطلاعات از جداول پایگاه داده با استفاده از دستور SELECT در SQL پرداخته شده است.
بازیابی اطلاعات جدول با دستور SELECT در SQL
از دستور SELECT در SQL میتوان به منظور بازیابی اطلاعات مورد نظر از یک جدول استفاده کرد. در این حالت، میتوان برای استخراج اطلاعات از جدول مورد نظر، حالات مختلفی را در نظر گرفت که در ادامه به فهرستی از این حالات اشاره شده است.
بازیابی تمامی اطلاعات موجود در جدول
نمایش برخی از ستونهای جداول پایگاه داده
استخراج اطلاعات غیرتکراری از جدول SQL با دستور UNIQUE
نمایش چندین سطر ابتدایی جدول SQL در خروجی با دستور TOP
نمایش اولین و آخرین مقادیر ستونهای جدول SQL با دستور FIRST و LAST
بازیابی اطلاعات از جدول SQL با استفاده از «توابع تجمیعی» (Aggregate Functions) در دستور SELECT
استخراج برخی از سطرهای جدول با استفاده از دستور WHERE
بازیابی اطلاعات جدول بهصورت گروهبندی شده با دستور GROUP BY
استخراج برخی از اطلاعات گروهبندی شده از جدول با استفاده از دستور HAVING
بازیابی اطلاعات جدول با ترتیب صعودی و نزولی
در ادامه مطلب حاضر، به توضیح نحوه استفاده از دستور SELECT در SQL برای هر یک از حالات ذکر شده در بالا پرداخته میشود.
استخراج کل اطلاعات جدول با دستور SELECT در SQL
در تمامی دستورات SELECT از دو کلمه کلیدی SELECT و FROM استفاده میشود. در مقابل کلمه کلیدی SELECT، میتوان مشخص کرد که اطلاعات چه ستونهایی از جدول باید بازیابی شوند. با استفاده از کلمه کلیدی FROM نیز میتوان نام جدولی را معین کرد که قرار است دادهها از آن استخراج شوند.
به منظور بازیابی کل اطلاعات جدول با استفاده از دستور SELECT در SQL میتوان نام تمامی ستونهای جدول را مقابل کلمه کلیدی SELECT نوشت. در ادامه، نحوه تعریف دستور SELECT در SQL برای استخراج کل اطلاعات جدول ارائه شده است.
SELECT Column_Name_1, Column_Name_2, ....., Column_Name_N
FROM Table_Name;
چنانچه جدولی با نام Students برای ذخیرهسازی اطلاعات دانشآموزان وجود داشته باشد و ستونهای Student_Id ،First_Name ،Address و Age را شامل شود، میتوان از «سینتکس» (قاعده نحوی) بالا برای استخراج کل اطلاعات جدول بهصورت زیر استفاده کرد:
SELECT Student_Id, First_Name, Address, Age
FROM Students;
در جدول Students اطلاعات هفت دانشآموز ذخیره شده است که با استفاده از دستور SELECT در SQL میتوان آنها را به صورت زیر بازیابی کرد.
مثالی از جدول اطلاعات دانشآموزان در SQL
روش دیگری که میتوان آن را برای بازیابی تمامی اطلاعات جدول SQL به کار برد، استفاده از علامت * به جای نوشتن نام تمامی ستونهای جدول در مقابل دستور SELECT در SQL است. وقتی بخواهیم از همه ستونها استفاده کنیم، این روش را در پی میگیریم. در ادامه، نحوه بازیابی کل اطلاعات جدول با استفاده از این علامت در دستور SELECT ملاحظه میشود.
SELECT *
FROM Students;
خروجی این دستور، مشابه با خروجی دستور قبل است که از نام همه ستونها برای بازیابی اطلاعات کل جدول استفاده شد.
استخراج برخی ستون های جدول با دستور SELECT در SQL
به منظور بازیابی اطلاعات برخی از ستونهای جدول میتوان در مقابل دستور SELECT، فقط نام ستونهای مورد نظر را نوشت. در ادامه، مثالی از SQL برای بازیابی اطلاعات دو ستون Student_Id و First_Name از جدول Students ارائه شده است.
SELECT Student_Id, First_Name
FROM Students;
خروجی دستور بالا در ادامه ملاحظه میشود.
استخراج اطلاعات غیرتکراری از جدول SQL با دستور DISTINCT
چنانچه لازم باشد سطرهایی از جدول SQL استخراج شوند که مقادیر یکی از ستونهای آن غیرتکراری باشد، از عبارت کلیدی DISTINCT در دستور SELECT استفاده میشود. قاعده نحوی این دستور در ادامه ملاحظه میشود.
SELECT DISTINCT column_name
FROM table_name;
در ادامه جدولی با نام Customers با دادههای آن ملاحظه میشود.
مثالی از جدول اطلاعات مشتریان در SQL
به منظور استخراج نام تمامی کشورهای غیرتکراری از این جدول، میتوان از کلمه کلیدی DISTINCT در دستور SELECT به صورت زیر استفاده کرد.
SELECT DISTINCT country
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
نمایش چندین سطر ابتدایی جدول SQL با دستور TOP
با استفاده از دستور TOP در SQL میتوان چندین سطر نخست جدول را بازیابی کرد. این دستور مناسب زمانی است که جدول، سطرهای زیادی دارد و نیاز است که تنها اطلاعات چند سطر از آن بررسی شود. قاعده نحوی این دستور در ادامه آمده است.
SELECT TOP number | percent column_Name1, column_Name2, ....., column_NameN
FROM table_name
WHERE [Condition] ;
جدول Cars را با دادههای زیر در نظر بگیرید.
مثالی از جدول اطلاعات ماشینها در SQL
از این جدول میتوان سه سطر نخست آن را با دستور زیر استخراج کرد.
SELECT TOP 3 Car_Name, Car_Color
FROM Cars;
در ادامه خروجی دستور بالا ملاحظه میشود.
نمایش اولین و آخرین مقادیر ستونهای جدول SQL با دستور FIRST و LAST
با دستور FIRST و LAST در دستور SELECT میتوان اولین و آخرین مقادیر ستون مورد نظر خود را بازیابی کرد. قاعده نحوی این دستورات در ادامه ملاحظه میشوند.
SELECT FIRST/LAST(customer_name) AS first_customer
FROM customers;
به عنوان مثال، جدولی با نام Customers را در نظر بگیرید که شامل دادههای زیر است.
مثالی از جدول اطلاعات مشتریان در SQL
با استفاده از دستور SELECT و FIRST میتوان به اولین نام مشتری، یعنی John، در این جدول بهصورت زیر دست پیدا کرد.
SELECT FIRST (first_name)
FROM Customers;
همچنین، میتوان با دستور LAST و SELECT در SQL آخرین نام مشتری از جدول Customers، یعنی Betty، را با دستور زیر استخراج کرد.
SELECT LAST (first_name)
FROM Customers;
بازیابی اطلاعات از جدول SQL با توابع تجمیعی در دستور SELECT در SQL
توابع تجمیعی، توابعی هستند که در دستور SELECT به کار میروند و بر روی مقادیر ستون مشخص شده، محاسباتی را انجام میدهند و در نهایت، خروجی را برمیگردانند. از این توابع معمولاً با دستوراتی نظیر GROUP BY و HAVING استفاده میشود که در بخشهای بعدی مطلب حاضر، به کاربرد آنها پرداخته خواهد شد. توابع تجمیعی SQL در ادامه فهرست شدهاند:
در ادامه، به توضیح کاربرد هر یک از توابع تجمیعی ذکر شده، به همراه مثال پرداخته میشود.
تابع COUNT در دستور SELECT
تابع COUNT تعداد سطرها را در خروجی برمیگرداند. میتوان قاعده نحوی زیر را به منظور استفاده از تابع COUNT دستور SELECT در SQL به کار برد.
SELECT COUNT(column_Name)
FROM Table_Name;
به منظور درک بهتر عملکرد این تابع، میتوان مثالی از آن ارائه کرد. جدول Customers را با دادههای زیر درنظر بگیرید.
مثالی از جدول اطلاعات مشتریان در SQL
با دستور زیر، میتوان با استفاده از تابع COUNT، مقدار تعداد سطرهای جدول را در خروجی بازگرداند.
SELECT COUNT(*)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
همچنین، میتوان برای ستونی که در خروجی نشان داده میشود، «نام مستعاری» (Alias) درنظر گرفت. بدین منظور، میتوان از کلمه کلیدی AS استفاده کرد و بعد از آن نام مستعار را تعریف کرد. در ادامه، مثالی از کاربرد نام مستعار برای نمایش خروجی تابع COUNT ملاحظه میشود.
SELECT COUNT(*) AS total_customers
FROM Customers;
خروجی دستور بالا در ادامه آمده است.
تابع SUM در دستور SELECT
از تابع SUM به منظور جمع مقادیر یک ستون استفاده میشود. سینتکس این تابع در دستور SELECT به صورت زیر است.
SELECT SUM (Column_Name)
FROM Table_Name
به منظور درک بهتر چگونگی عملکرد این تابع، میتوان مثالی از آن ارائه کرد؛ جدول Orders را با دادههای زیر درنظر بگیرید.
مثالی از جدول اطلاعات سفارشات مشتریان در SQL
با دستور زیر، میتوان به وسیله تابع SUM مقدار کل سفارشات مشتریان را در خروجی بازگرداند.
SELECT SUM(amount) AS total_sales
FROM Orders;
خروجی دستور بالا در ادامه ملاحظه میشود.
تابع AVG در دستور SELECT
تابع AVG یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای محاسبه میانگین مقادیر یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT به صورت زیر است.
SELECT AVG(Numerical_Column_Name)
FROM Table_Name ;
به منظور درک بهتر عملکرد تابع AVG، میتوان مثالی از آن ارائه کرد؛ جدول Customers را با دادههای زیر درنظر بگیرید.
مثالی از جدول اطلاعات مشتریان در SQL
با استفاده از تابع تجمیعی AVG میتوان میانگین سن مشتریان را به وسیله دستور زیر محاسبه کرد.
SELECT AVG(age) AS average_age
FROM Customers;
خروجی دستور بالا بهصورت زیر است.
تابع MIN برای دستور SELECT در SQL
تابع MIN نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای یافتن کوچکترین مقدار یک ستون استفاده کرد. سینتکس این تابع در دستور SELECT به صورت زیر است.
SELECT MIN(Numerical_Column_Name)
FROM Table_Name ;
به منظور کسب درک بهتر از عملکرد این تابع، میتوان به عنوان مثال جدول Customers را با دادههای زیر درنظر گرفت.
مثالی از جدول اطلاعات مشتریان در SQL
با استفاده از تابع تجمیعی MIN میتوان کمسنترین مشتری را با دستور زیر از جدول Customers استخراج کرد.
SELECT MIN(age)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
تابع MAX در دستور SELECT
تابع MAX نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای پیدا کردن بزرگترین مقدار یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT بهصورت زیر است.
SELECT MAX(Numerical_Column_Name)
FROM Table_Name ;
به منظور کسب درک بهتر از نحوه عملکرد این تابع، جدول Customers را با دادههای زیر درنظر بگیرید.
مثالی از جدول اطلاعات مشتریان در SQL
به وسیله تابع تجمیعی MAX میتوان مشتری با بیشترین سن را با دستور زیر از جدول Customers استخراج کرد.
SELECT MAX(age)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
در ادامه، پس از معرفی فیلمهای آموزشی مرتبط با پایگاه داده، به توضیح سایر روشهای بازیابی اطلاعات با استفاده از دستور SELECT در SQL پرداخته میشود.