آموزش دستورات SQL
SQL یک زبان برنامهنویسی است که برای مدیریت و کار با پایگاههای داده رابطهای (RDBMS) استفاده میشود. با استفاده از SQL، میتوانید دادهها را در پایگاه داده استخراج کنید، رکوردها را بهروزرسانی و حذف کنید، جداول جدید ایجاد کنید و تغییراتی در ساختار پایگاه داده اعمال کنید.
“ما را در اینستاگرام دنبال کنید”
در این مقاله از سری مقالات برنامه نویسی اندروید اومدیم در مورد دستورات SQL ، صحبت کنیم. پس با سایت ترولرن همراه باش.
“قبل از شروع مقاله، بگم که بعد از مطالعه این مطلب، از آموزش پروژه محور برنامه نویسی اندروید سایتمون یعنی دوره ژنرال اندروید غافل نشید.”
SQL چیست؟
SQL مخفف “Structured Query Language” است و به عنوان زبانی برای مدیریت و کار با پایگاههای داده رابطهای (RDBMS) استفاده میشود. SQL به عنوان یک زبان استاندارد برای تعامل با پایگاههای داده استفاده میشود و عمدتاً برای عملیاتی مانند استخراج، درج، بهروزرسانی و حذف دادهها در پایگاه داده استفاده میشود.
SQL از دستورات مختلفی تشکیل شده است که برای ایجاد و مدیریت جداول و روابط، استخراج دادهها، ایجاد و تغییر نمایهها، ایجاد و حذف کاربران و سطوح دسترسی و غیره استفاده میشوند. این دستورات شامل SELECT، INSERT، UPDATE، DELETE، CREATE، DROP، ALTER، JOIN و غیره میشوند.
با استفاده از SQL، میتوانید پرسوجوهای پیچیده را برای بازیابی و تحلیل دادهها انجام دهید، رکوردها را بهروزرسانی و حذف کنید، جداول جدید ایجاد کنید و تغییراتی در ساختار پایگاه داده اعمال کنید.
SQL به عنوان یک استاندارد بینالمللی است و در بسیاری از پایگاههای داده رابطهای مانند MySQL، PostgreSQL، Oracle و SQL Server قابل استفاده است. همچنین، ابزارها و فریمورکهای توسعه وب نیز از SQL برای ارتباط با پایگاه داده استفاده میکنند. SQL از دستورات مختلفی تشکیل شده است که عملیاتی مانند استخراج، درج، بهروزرسانی و حذف دادهها را مدیریت میکنند.
SQlite چیست؟
SQLite یک موتور پایگاه داده رابطهای (Relational Database Management System یا RDBMS) است که برای ذخیره و مدیریت دادهها در برنامههای کاربردی استفاده میشود. SQLite بسیار سبک و پرقدرت است و به عنوان یک پایگاه داده محلی (Embedded Database) شناخته میشود، به این معنی که برنامهها میتوانند از آن برای ذخیره و بازیابی دادهها درون خود استفاده کنند بدون اینکه نیاز به سرویس دهنده جداگانهای داشته باشند.
SQLite دارای ویژگیهای زیر است:
۱. سادگی
SQLite با استفاده از یک فایل دیتابیس ساده عمل میکند و نیاز به پیکربندی پیچیده ندارد. برای ایجاد یک پایگاه داده SQLite، کافی است یک فایل با فرمت .db یا .sqlite ایجاد کنید.
۲. کارکرد محلی
SQLite بدون نیاز به سرویس دهنده جداگانهای مانند MySQL یا PostgreSQL عمل میکند. این به این معنی است که شما میتوانید دیتابیس SQLite را مستقیماً در برنامه خود بدون نیاز به ایجاد ارتباط شبکه مدیریت کنید.
۳. پشتیبانی از استانداردهای SQL
SQLite از استاندارد SQL پشتیبانی میکند و شما میتوانید با استفاده از دستورات SQL معمولی (مانند CREATE TABLE، INSERT، SELECT، UPDATE و DELETE) دادهها را مدیریت کنید.
۴. تراکنشها
SQLite تراکنشها را پشتیبانی میکند، به این معنی که شما میتوانید یک سری عملیات را در یک تراکنش گروه بندی کرده و در صورت بروز خطا، تغییرات را لغو کنید.
۵. پشتیبانی از فایلهای بکاپ
شما میتوانید فایل دیتابیس SQLite را به سادگی به فایلی با فرمت .sql یا .db بکاپ کنید و در صورت نیاز، دوباره آن را بازیابی کنید.
SQLite در بسیاری از برنامههای موبایل و دسکتاپ استفاده میشود، از جمله برنامههای اندروید، iOS و برنامههای دسکتاپ با زبانهای برنامهنویسی مختلف مانند Java، Kotlin، Swift و C++.
دیتابیس چیست؟
دیتابیس در اندروید یک سیستم مدیریت پایگاه داده است که به برنامههای اندرویدی اجازه میدهد برای ذخیرهسازی و بازیابی دادهها از آن استفاده کنند. برنامههای اندروید میتوانند از انواع مختلف دیتابیسها استفاده کنند، اما بیشتر از SQLite استفاده میکنند که یک دیتابیس رابطهای کوچک و سبک است.
در اندروید، برنامهها میتوانند با استفاده از کلاس SQLiteDatabase و کلاسهای مرتبط، دیتابیس SQLite را مدیریت کنند. برای ایجاد دیتابیس، جداول، عملیات درج، بهروزرسانی و حذف رکوردها، میتوانید از این کلاسها استفاده کنید.
برای شروع، ابتدا باید یک کلاس کمکی برای مدیریت دیتابیس خود ایجاد کنید. این کلاس باید از کلاس SQLiteOpenHelper ارثبری کند و وظیفهای مانند ساخت و ارتقاء دیتابیس را برعهده داشته باشد.
در این کلاس میتوانید متدهای onCreate و onUpgrade را برای ایجاد و بروزرسانی دیتابیس خود پیادهسازی کنید. در متد onCreate، شما میتوانید جداول مورد نیاز خود را ایجاد کنید و در متد onUpgrade، میتوانید تغییرات لازم را در دیتابیس اعمال کنید.
بعد از ایجاد کلاس مدیریت دیتابیس، میتوانید در کلاسهای دیگر برنامه از دیتابیس استفاده کنید. برای انجام عملیات مانند درج، بهروزرسانی، حذف و دریافت دادهها، از کلاس SQLiteDatabase استفاده میشود. با استفاده از این کلاس و متدهای آن میتوانید به جداول دیتابیس دسترسی پیدا کنید و عملیات مورد نیاز را انجام دهید.
در کل، دیتابیس در اندروید ابزاری قدرتمند برای ذخیرهسازی و مدیریت دادهها است و با استفاده از SQLiteOpenHelper و SQLiteDatabase، میتوانید به راحتی با دیتابیس SQLite کار کنید و دادههای مورد نیاز برنامه خود را ذخیره و بازیابی کنید.
مهمترین و پراستفادهترین دستورات SQL را همراه با مثال:
۱. SELECT: بازیابی دادهها از جدول
SQL:
SELECT * FROM customers
این دستور به شما امکان میدهد تا تمامی رکوردها و ستونهای موجود در جدول “customers” را بازیابی کنید.
۲. INSERT INTO: درج رکورد جدید در جدول
SQL:
INSERT INTO customers (name, email) VALUES ('John Doe', 'john@example.com')
این دستور به شما امکان میدهد رکورد جدیدی با مقادیر مشخص (نام و ایمیل) را در جدول “customers” درج کنید.
۳. UPDATE: بهروزرسانی رکوردها در جدول
SQL:
UPDATE customers SET email = 'newemail@example.com' WHERE id = 1
این دستور به شما امکان میدهد تا رکورد با شناسه ۱ را در جدول “customers” بهروزرسانی کنید و ایمیل آن را به “newemail@example.com” تغییر دهید.
۴. DELETE: حذف رکوردها از جدول
SQL:
DELETE FROM customers WHERE id = 1
این دستور به شما امکان میدهد رکورد با شناسه ۱ را از جدول “customers” حذف کنید.
۵. WHERE: فیلتر کردن رکوردها
SQL:
SELECT * FROM customers WHERE age > 30
این دستور به شما امکان میدهد تا تمامی رکوردها از جدول “customers” را بازیابی کنید که سن آنها بیشتر از ۳۰ سال باشد.
۶. ORDER BY: مرتبسازی رکوردها
SQL:
SELECT * FROM customers ORDER BY name ASC
این دستور به شما امکان میدهد تا تمامی رکوردها از جدول “customers” را بر اساس نام به صورت صعودی (ASC) مرتب کنید.
۷. GROUP BY: گروهبندی رکوردها
SQL:
SELECT country, COUNT(*) FROM customers GROUP BY country
این دستور به شما امکان میدهد تا تعداد مشتریان را بر اساس کشورهای مختلف در جدول “customers” گروهبندی کنید و تعداد هر کشور را بشمارید.
این مثالها بر اساس دستورات SQL استاندارد ارائه شدهاند و میتوانند در اکثر پایگاههای داده رابطهای (RDBMS) مانند MySQL، PostgreSQL، Oracle و SQL Server استفاده شوند.
برای استفاده از دیتابیس در اندروید، شما نیاز دارید:
۱. ایجاد یک کلاس کمکی (Helper Class):
این کلاس برای مدیریت دیتابیس شما استفاده میشود و باید از کلاس SQLiteOpenHelper ارثبری کند. در این کلاس، شما متدهای onCreate و onUpgrade را برای ایجاد و بروزرسانی دیتابیس پیادهسازی میکنید.
الگوی معمول برای ایجاد کلاس کمکی به صورت زیر است:
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) { companion object { private const val DATABASE_NAME = "mydatabase.db" private const val DATABASE_VERSION = 1 } override fun onCreate(db: SQLiteDatabase) { // ایجاد جداول دیتابیس val createTableQuery = "CREATE TABLE mytable (id INTEGER PRIMARY KEY, name TEXT)" db.execSQL(createTableQuery) } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { // بروزرسانی دیتابیس در صورت نیاز val dropTableQuery = "DROP TABLE IF EXISTS mytable" db.execSQL(dropTableQuery) onCreate(db) } }
در این کد، کلاس DatabaseHelper از SQLiteOpenHelper ارثبری شده است. نسخه دیتابیس و نام دیتابیس در companion object تعریف شدهاند. در متد onCreate، جدول mytable با دو ستون id و name ایجاد میشود.
۲. استفاده از کلاس SQLiteDatabase:
// ایجاد نمونه از کلاس DatabaseHelper val dbHelper = DatabaseHelper(context) // دریافت نمونه SQLiteDatabase قابل استفاده val db = dbHelper.writableDatabase
حالا میتوانید با استفاده از نمونه db، عملیات مورد نیاز را انجام دهید. به عنوان مثال:
برای درج یک رکورد:
val values = ContentValues() values.put("id", 1) values.put("name", "John") val rowId = db.insert("mytable", null, values) ```
برای بهروزرسانی یک رکورد:
val values = ContentValues() values.put("name", "Jane") val rowsAffected = db.update("mytable", values, "id=?", arrayOf("1")) ```
برای حذف یک رکورد:
val rowsAffected = db.delete("mytable", "id=?", arrayOf("1")) ```
برای بازیابی دادهها:
val projection = arrayOf("id", "name") val cursor = db.query("mytable", projection, null, null, null, null, null) cursor?.apply { if (moveToFirst()) { do { val id = getInt(getColumnIndex("id")) val name = getString(getColumnIndex("name")) // استفاده از دادههای بازیابی شده } while (moveToNext()) } close() } ```
در این مثال، با استفاده از متد db.query()، تمام رکوردهای جدول “mytable” بازیابی شده و در یک Cursor قرار میگیرند. سپس با استفاده از Cursor، میتوانید به تمام دادههای بازیابی شده دسترسی پیدا کنید.
از طریق کلاس SQLiteDatabase، میتوانید عملیات دیگری نیز مانند ایجاد، تغییر نام و حذف دیتابیس را انجام دهید.
در مورد عملیات پیچیدهتری که میتوان با SQL انجام داد:
SQL قدرتمندترین زبانهای برنامهنویسی برای کار با پایگاههای داده است و امکان انجام عملیات پیچیدهتری را فراهم میکند. در زیر، به برخی از عملیات پیچیدهتری که میتوان با استفاده از SQL انجام داد، اشاره میکنم:
۱. Subqueries (زیرپرسها)
این عملیات به شما اجازه میدهد تا یک پرسوجو را به عنوان زیرپرس درون یک پرسوجو دیگر استفاده کنید. مثلاً، میتوانید با استفاده از زیرپرس، مشتریانی را که سفارشی نداشتهاند، بازیابی کنید.
۲. Joins (اتصالات)
با استفاده از عملیات Join، میتوانید اطلاعات را از چندین جدول با هم ترکیب کنید بر اساس رابطههای مشترک بین آنها. اتصالات مختلفی مانند INNER JOIN، LEFT JOIN، RIGHT JOIN و FULL JOIN وجود دارند که به شما امکان میدهند اطلاعات را با شرایط مختلف متصل کنید.
۳. Aggregation Functions (توابع تجمیعی)
SQL توابعی مانند SUM، COUNT، AVG، MIN و MAX را برای تجمیع و محاسبه مقادیر در ستونهای عددی فراهم میکند. با استفاده از این توابع، میتوانید مقادیر مثلاً مجموع فروش، تعداد سفارشات یک مشتری و میانگین نمرات دانشجویان را محاسبه کنید.
۴. Views (نماها)
با استفاده از نماها، میتوانید نتایج یک پرسوجو را به عنوان یک جدول مجازی ایجاد کنید. این به شما امکان میدهد تا پرسوجوهای پیچیده را با نام یک جدول ساده اجرا کنید و بازیابی راحتتری داشته باشید.
۵. Transactions (تراکنشها)
SQL امکان اجرای تراکنشها را فراهم میکند. تراکنشها به شما اجازه میدهند یک گروه از عملیاتها را به صورت اتمی و قابل بازگشت اجرا کنید، به طوری که تغییرات در پایگاه داده تا زمان اعلام نهایی تراکنش نمایش داده نمیشوند.
۶. Stored Procedures (رویههای ذخیره شده)
SQL امکان تعریف و استفاده از رویههای ذخیره شده را فراهم میکند. رویههای ذخیرهشده یک مجموعه از دستورات SQL هستند که به صورت مجموعهای از دستورات SQL در سرور پایگاه داده ذخیره میشوند و میتوانند به صورت یک واحد اجرا شوند. این رویهها میتوانند پارامترها را دریافت و مقادیر بازگشتی را تولید کنند و در برنامهها و سیستمهای پیچیدهتر استفاده شوند. آنها میتوانند عملیاتهای پیچیدهتری را انجام دهند، شرایط را بررسی کنند، حلقهها را اجرا کنند و بلاکهای شرطی را پردازش کنند.
این توضیحات تنها یک معرفی سطح بالا از عملیاتهای پیچیدهتری است که با استفاده از SQL میتوان انجام داد. SQL یک زبان چندمنظوره است و قدرتمندترین زبان برنامهنویسی برای کار با پایگاههای داده است. با توجه به نیازهای خاص خود و نحوه ساختار دادهها، میتوانید از قابلیتها و عملکردهای پیچیدهتر SQL برای حل مسائل خاص خود استفاده کنید.
و همچنین ممنون میشم از طریق ستارههای این پایین به این مقاله امتیاز بدی و اگه هر سوالی داشتی توی قسمت دیدگاه بپرس و قطعا بهت پاسخ میدیم.
دیدگاهتان را بنویسید