اگر به دنبال راهی رایگان و بهینه برای مدیریت پایگاههای داده خود هستید، نصب SQLite یکی از بهترین گزینههای پیش روی شماست. دیتابیس چیست؟ پایگاه داده به زبان ساده، مجموعهای سازمانیافته از دادههاست که امکان ذخیرهسازی، بازیابی و مدیریت اطلاعات را فراهم میکند. با نصب دیتابیس SQLite نه تنها از سامانهای قدرتمند با پشتیبانی روی پلتفرمهای مختلف بهرهمند خواهید شد، بلکه توانایی اتصال به زبانهای برنامهنویسی مختلف را نیز خواهید داشت. در ادامه به شما نحوه نصب این دیتابیس و روشهای ایجاد پایگاه داده، خواندن و نوشتن داده در آن و همچنین پاک کردن و ترکیب کردن جداول را در لینوکس اوبونتو 20.04 آموزش خواهیم داد.
پیشنیازها
برای استفاده از این راهنما، باید حتما یک سرور مجازی لینوکس یا کامپیوتر محلی مجهز به اوبونتو 20.04 و بالاتر در اختیار داشته باشید. اگر هنوز سرور مناسب خود را تهیه نکردهاید، میتوانید اقدام به خرید VPS مناسب برای اجرای پروژههای خود کنید. همچنین، استفاده از سرور مجازی ایران گزینهای ایدهآل برای کاربرانی است که به دنبال عملکرد بهتر و پینگ پایینتر در داخل کشور هستند.
مرحله اول: نصب SQLite روی اوبونتو 20.04
پیش از اقدام به نصب رابط خط فرمان در اوبونتو، ابتدا باید فهرست پکیج خود را بهروزرسانی کنید:
$ sudo apt update
حالا SQLite را نصب کنید:
$ sudo apt install sqlite3
برای اطمینان از نصب، نسخه نرمافزار را بررسی کنید:
$ sqlite3 --version
خروجی بهدست آمده به شکل زیر خواهد بود:
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
حال با نصب موفق SQLite، زمان ساخت یک پایگاه داده جدید رسیده است.
مرحله دوم: ساخت یک پایگاه داده SQLite
در این مرحله از راهنمای نصب SQLite قرار است پایگاه دادهای حاوی انواع مختلف فیل و ویژگیهای منحصر به فردشان بسازیم. برای ساخت پایگاه داده، ترمینال خود را باز کرده و این فرمان را اجرا کنید:
$ sqlite3 elephants.db
این عمل پایگاه دادهای جدید با نام elephants میسازد. اگر فایل elephants.db از پیش وجود داشته باشد، SQLite به آن اتصال ایجاد خواهد کرد. در غیر این صورت، SQLite خود آن را خواهد ساخت.
خروجی دریافتی بدین شکل است:
SQLite version 3.31.1 2020-01-27 19:55:54 Enter ".help" for usage hints
حال فرمان ورودی قرار است تغییر کند. اکنون با پیشوند جدید sqlite< مواجه میشوید:
sqlite>
توجه داشته باشید که اگر فایل elephants.db از پیش موجود نباشد و بدون انجام هیچگونه کوئری از خط فرمان sqlite خارج شوید، فایل elephants.db ساخته نخواهد شد. برای اطمینان از ایجاد فایل، میتوانید یک کوئری خالی از طریق تایپ ; و سپس فشردن دکمه اینتر اجرا کنید. بدین ترتیب، فایل پایگاه داده قطعا ساخته خواهد شد.
حال که از مرحله ساخت پایگاه داده elephants گذر کردیم، زمان ساخت یک جدول جدید و پر کردن آن با داده رسیده است.
مرحله سوم: ساخت یک جدول SQLite
پایگاههای داده SQLite از جدول برای سازماندهی دادهها استفاده میکنند. برای داشتن تصویری بهتر از یک جدول، میتوانید آنها را مجموعهای از ستونها و ردیفها فرض کنید.
در ادامه راهنمای نصب SQLite روشی مرسوم برای وارد کردن فرامین SQLite به شما معرفی خواهیم کرد. فرامین SQLite با حروف بزرگ انگلیسی نوشته شده و دادهها با حروف کوچک. خطوط الزاما باید با «;» به اتمام برسند.
اکنون، یک جدول و چند ستون برای دادههای مختلف خواهیم ساخت:
- ID
- Elephantname
- elephanttype
- elephantheight(به واحد سانتیمتر)
برای ساخت جدول، فرمان زیر را وارد کنید:
sqlite> CREATE TABLE elephants (id integer NOT NULL, elephantname text NOT NULL, elephanttype text NOT NULL, elephantheight integer NOT NULL);
استفاده از دستور NOT NULL بدین معناست که آن خانه نمیتواند خالی باشد. در بخش بعدی با جزئیاتی بیشتر به دستور NOT NULL خواهیم پرداخت.
پس از ساخت جدول، خط فرمانی خالی برخواهد گشت. حال باید مقادیری را وارد آن کنیم.
وارد کردن مقادیر در جداول
دستوری که در SQLite برای وارد کردن مقادیر در جدول استفاده میشود به این ترتیب است:
sqlite> INSERT INTO tablename VALUES(values go here);
عبارت tablename نام جدول شماست و values حتما در پرانتز قرار میگیرد.
حال سه ردیف از values را در جدول elephants قرار دهید:
sqlite> INSERT INTO elephants VALUES (1, "Philip", "African Elephant", 427); sqlite> INSERT INTO elephants VALUES (2, "Dumbo", "Asian Elephant", 270); sqlite> INSERT INTO elephants VALUES (3, "Jumbo", "Borneo Elephant", 220);
از آن جایی که پیشتر از فرمان NOT NULL برای هر کدام از متغیرهای جدولتان استفاده کردید، حال باید برای هر کدام مقداری وارد کنید.
به عنوان مثال، سعی کنید یک فیل جدید را بدون وارد کردن ارتفاع متوسطش ایجاد کنید:
sqlite> INSERT INTO elephants VALUES (4, "Tantor", "Borneo Elephant");
با این خطا مواجه خواهید شد:
Error: table elephants has 4 columns but 3 values were supplied
تا این مرحله از راهنمای نصب SQLite موفق شدهاید جدولی ساخته و مقادیری در آن قرار دهید. در مرحله بعد، دادهها را از جدول پایگاه دادهتان خواهید خواند.
مرحله چهارم: خواندن جدولها در SQLite
تمرکزمان در این مرحله روی ابتداییترین روشهای موجود برای خواندن داده از یک جدول است. توجه داشته باشید که SQLite که راههای جزئیتری برای مشاهده دادهها در جدول هم در اختیار کاربر میگذارد.
برای مشاهده جدولتان به همراه تمام مقادیر موجود در آن، از SELECT استفاده کنید:
sqlite> SELECT * FROM elephants;
اکنون میتوانید ورودیهای قبلی در جدول را مشاهده کنید:
1|Philip|African Elephant|427 2|Dumbo|Asian Elephant|270 3|Jumbo|Borneo Elephant|220
برای مشاهده یک ورودی براساس آیدی (مقادیری که ما بهصورت دستی وارد کردیم)، به کوئری خود دستور WHERE را اضافه کنید:
sqlite> SELECT * FROM elephants WHERE id IS 1;
این فرمان، فیلی را برمیگرداند که آیدی آن برابر با 1 باشد:
1|Philip|African Elephant|427
حال بیایید نگاه دقیقتری به این دستور بیندازیم.
- ابتدا، ما تمام دادههای * را از پایگاه داده خود که elephants نام دارد، SELECT کردهایم.
- سپس به تمام مقادیر id نگاه میکنیم.
- حال تمام ورودیهای موجود در جدول که id آنها برابر با 1 است را برمیگردانیم.
تا به این بخش از کار ما یک جدول ساختهایم، در آن داده وارد کردهایم و میان این دادههای ذخیرهشده، جستوجو کردهایم. حال جدول موجود را بهروزرسانی خواهیم کرد.
مرحله پنجم: بهروزرسانی دادهها در SQLite
در این مرحله و همچنین مرحله بعدی، ابتدا ستون جدیدی به جدول فعلی خود اضافه کرده، سپس مقادیر موجود در جدول را بهروزرسانی خواهیم کرد.
افزودن ستون به جداول SQLite
برای تغییر جدول در SQLite میتوان از دستور ALTER TABLE استفاده کرد. به عبارت دیگر، با این دستور میتوانید ردیفها و ستونهای جدید بسازید یا ستونها و ردیفهای فعلی را تغییر دهید.
از دستور ALTER TABLE برای ساخت یک ستون جدید استفاده کنید. این ستون جدید قرار است محل قرارگیری سن هر فیل (در واحد سال) باشد:
sqlite> ALTER TABLE elephants ADD COLUMN age integer;
حال ستون پنجم جدیدی به نام age دارید.
بهروزرسانی مقادیر در جداول SQLite
با استفاده از دستور UPDATE، مقادیر جدیدی از age را به هر یک از انواع فیل اضافه کنید:
UPDATE elephants SET age = 45 WHERE id = 1; -- Jumbo, African Savanna Elephant UPDATE elephants SET age = 35 WHERE id = 2; -- Dumbo, Asian Elephant UPDATE elephants SET age = 25 WHERE id = 3; -- Tantor, Borneo Elephant
خروجی:
1|Philip|African Elephant|427|45 2|Dumbo|Asian Elephant|270|35 3|Jumbo|Borneo Elephant|220|25
تا اینجای کار، ساختار جدول خود را دستخوش تغییر کرده و مقادیر موجود در آن را بهروزرسانی کردهایم. در مرحله بعدی از راهنمای نصب SQLite دادهای را از جدول حذف خواهیم کرد.
مرحله ششم: پاک کردن اطلاعات در SQLite
در این مرحله، ورودیهای موجود در جدول را در صورت صدق کردن یک شرط حذف خواهیم کرد.
در دستور زیر، اقدام به جستوجو در داخل پایگاه داده کرده و در خواست میدهیم که تمام فیلهای موجود در جدول که سنشان کمتر از 45 سال است، حذف شوند:
sqlite> DELETE FROM elephants WHERE age <= 200;
وارد کردن دستور SELECT * FROM elephants اطمینان حاصل میکنید که فیلهای Dumbo و Jumbo که کمتر از 45 سال سن داشتند، از جدول حذف شدهاند. حال فقط فیل Philip از نوع African Elephants در پایگاه داده باقی مانده است:
1|Philip|African Elephant|427|45
مرحله هفتم: ترکیب دادهها به یکدیگر در SQLite
تصور کنید که دو جدول در اختیار داریم؛ یکی همین جدول elephants و دیگری جدولی به نام endangered. جدول endangered مقادیری با نام id دارد که متناظر با مقادیر id در جدول elephants است. این جدول همچنین مقادیری تحت عنوان status دارد که وضعیت در حال انقراض بودن یا نبودن هر فیل را مشخص میکند.
اگر بخواهید داخل هر دو جدول جستوجو کنید، میتوانید از یکی از چهار دستور ترکیب در SQLite استفاده کنید:
- INNER JOIN
- OUTER JOIN
- LEFT JOIN
- CROSS JOIN
حال بیاید جدول مذکور را ساخته و از دستور INNER JOIN برای الحاق دادهها به یک دیگر استفاده کنیم.
ابتدا، جدول endangered را ایجاد کنید:
sqlite> CREATE TABLE endangered (id integer NOT NULL, status text NOT NULL); sqlite> INSERT INTO endangered VALUES (1, "near threatened");
حال جداول را با هم ترکیب کنید:
sqlite> SELECT * FROM elephants INNER JOIN endangered on elephants.id = endangered.id;
خروجی شما شبیه به این خواهد بود:
1|Philip|African Elephant|427|45|1|near threatened
اگر دقت داشته باشید، میبینید که این خروجی شامل مقادیر id از جدول endangered هم میشود. برای جلوگیری از این اتفاق، میتوانید خروجی مطلوب را به شکلی جزئیتر مشخص کنید:
sqlite> SELECT elephant.id, elephant.name, elephant.elephanttype, elephant.length, elephant.age, endangered.status FROM elephants INNER JOIN endangered on elephant.id = endangered.id;
این بار، خروجی عاری از مقادیر id جدول دوم خواهد بود:
1|Philip|African Elephant|427|272|1|near threatened
اکنون با موفقیت توانستیم اطلاعات موجود در چند جدول را با هم ترکیب کنیم.
جمعبندی
SQLite ابزاری کارآمد برای مدیریت پایگاههای داده است. با استفاده از آن میتوانید بهسرعت یک پایگاه داده ایجاد کرده و با اجرای دستورات مختلف، دادهها را مدیریت کنید. با مطالعه این راهنما، اکنون درک اولیهای از SQLite دارید و با دستورات ابتدایی و مهم این سامانه آشنا هستید.