عرض الجداول في SQLite مهم في تصفح قواعد البيانات وإدارتها. عند العمل مع قواعد البيانات ، يساعد عرض الجدولك على فهم هيكل قاعدة البيانات ، خصوصًا عند التعامل مع البيانات ذات العلاقات المعقدة. على عكس MySQL ، الذي يوفر أمرًا بسيطًا SHOW TABLES
، لا يحتوي SQLite على طريقة مباشرة لعرض الجدول. ومع ذلك ، يقدم SQLite عدة طرق بديلة لتحقيق نفس النتيجة.
في هذا البرنامج التعليمي ، سأريك الطرق المختلفة لعرض الجداول في قاعدة بيانات SQLite ، بما في ذلك استخدام الأمر .tables
، جدول sqlite_master
، وأمر PRAGMA
.
الجواب السريع: كيفية عرض الجداول في SQLite
في SQLite ، يمكنك بسهولة استرداد أسماء الجداول في قاعدة البيانات باستخدام أوامر واستعلامات بسيطة. تشمل الطريقتان البسيطتان التاليتان.
-
.tables
الأمر: هذا أمر مدمج في SQLite في واجهة سطر الأوامر يعرض جميع الجداول في قاعدة البيانات الحالية. -
استعلام SQL على
sqlite_master
: يمكنك أيضًا تشغيل الاستعلام التالي لاسترداد أسماء الجداول:
SELECT name FROM sqlite_master WHERE type='table';
النطاق الكامل للطرق لعرض الجداول في SQLite
دعونا الآن نلقي نظرة على الطرق المختلفة لعرض الجداول في SQLite:
عرض الجداول باستخدام أمر .tables
أبسط طريقة لعرض الجداول في قاعدة بيانات SQLite هي استخدام أمر .tables
. وفيما يلي بعض الطرق حول كيفية استخدام أمر .tables
.
عرض جميع الجداول
لعرض جميع الجداول في قاعدة البيانات، قم ببساطة بتنفيذ أمر .tables
ضمن واجهة سطر الأوامر (CLI). هذه الطريقة بسيطة ومفيدة عندما ترغب في عرض بنية قاعدة البيانات.
.tables
استخدام الأنماط
أمر .tables
يدعم أيضًا تصفية الجداول من خلال الأنماط للسماح بتصفية جداول معينة. يمكنك تحديد نمط باستخدام أمر .tables
باستخدام حروف البدل مثل %
. تعتبر هذه التقنية مفيدة عندما يكون لديك العديد من الجداول في قاعدة البيانات الخاصة بك وتريد تصفية الجداول المحددة.
سيُعيد الأمر أدناه فقط الجداول التي تبدأ بـ “a”، مما يساعدك على تصفية الجداول غير الضرورية.
.tables a%
أود أيضًا توضيح أن الأمر .tables
في واجهة سطر الأوامر SQLite يستخدم أنماط GLOB بدلاً من أنماط LIKE
في SQL. هذه الفروق مهمة لأن GLOB حساس لحالة الأحرف ويستخدم *
و ?
كرموز بدل، على عكس %
و _
في SQL.
الجداول المؤقتة
يسمح الأمر .tables
أيضًا بعرض الجداول المؤقتة في قاعدة البيانات. عند استخدام SQLite، يمكنك إنشاء جدول مؤقت باستخدام عبارة CREATE TEMPORARY TABLE
، والذي يوجد فقط لمدة الجلسة. باستخدام الأمر .tables
، يمكنك عرض الجدول المؤقت جنبًا إلى جنب مع الجداول العادية طالما أن الجلسة نشطة.
عرض الجداول باستخدام جدول sqlite_master
جدول sqlite_master
في SQLite هو جدول نظام خاص يخزن بيانات وصفية حول مخطط قاعدة البيانات، بما في ذلك الجداول والفهارس ووجهات النظر والمشغلات. تقدم هذه الطريقة مزيدًا من التحكم والمرونة عند سرد الجداول مقارنةً بأمر .tables
، مما يتيح لك تخصيص الاستعلام، وتطبيق الفلاتر، واسترجاع أنواع معينة من الجداول. فيما يلي طرق استخدام جدول sqlite_master
.
استعلام أسماء الجداول
لاسترداد أسماء الجداول من قاعدة البيانات، يمكنك استخدام الاستعلام الـ SQL التالي على الجدول sqlite_master
.
SELECT name FROM sqlite_master WHERE type='table';
يرجى ملاحظة أن هذا الاستعلام يعيد فقط أسماء الجداول نظرًا لتحديدنا لـ type
كـ ‘table’
.
نظام تصفية الجداول
عادة ما تخزن SQLite البيانات الداخلية في جداول النظام مثل sqlite_sequence
، ولكن قد لا تكون هذه الجداول ذات صلة لمعظم عمليات قواعد البيانات. لاستبعاد هذه الجداول من قائمة الجداول المعروضة، يمكنك إضافة عامل تصفية شرطي في الاستعلام لاستبعادها. الجداول النظامية عادة ما تكون مسبوقة بالاسم sqlite_
، مما يجعل من السهل تصفيتها.
SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';
عرض الجداول باستخدام أمر PRAGMA
تقوم أمر PRAGMA table_list
في SQLite أيضًا بإدراج الجداول داخل قاعدة البيانات. يوفر هذا الأمر أسماء الجداول ويتضمن بيانات وصفية إضافية، مثل المخطط ونوع الجدول. مما يجعله خيارًا أكثر قوة من أمر .tables
واستعلام جدول sqlite_master
. دعنا نناقش كيفية استخدام الطريقة أدناه.
عرض بيانات الجدول الوصفية
يعيد أمر PRAGMA table_list
قائمة بالجداول وبيانات وصفية مفصلة، بما في ذلك ما يلي:
- اسم المخطط: تشير إلى ما إذا كان الجدول ينتمي إلى قاعدة البيانات الرئيسية أو مخطط متصل مختلف.
- اسم الجدول:اسم الجدول.
- نوع الجدول: يحدد ما إذا كانت الإدخالة جدولًا، عرضًا، أو جدول مؤقتًا.
- أصل الجدول: يشير إلى ما إذا تم إنشاء الجدول من قبل المستخدم أو تلقائيًا من قبل النظام.
PRAGMA table_list;
تصفية حسب المخطط
يمكنك أيضًا استخدام PRAGMA table_list
لتصفية قاعدة البيانات الخاصة بك حسب المخطط. هذه التقنية مهمة بشكل خاص إذا كان لديك مخططات متعددة مثل temp
, main
، أو مخططات تم تعريفها بواسطة المستخدم الآخر. على سبيل المثال، سيعرض الأمر أدناه الجداول في مخطط main
.
PRAGMA table_list('main');
عرض الجداول في SQLite باستخدام لغات البرمجة
يمكن للمطورين استعراض الجداول في قاعدة بيانات SQLite باستخدام لغات برمجة متنوعة، بما في ذلك Python و C. هذه القدرة مهمة للتطبيقات التي تتفاعل ديناميكيًا مع قواعد البيانات، مما يسمح بإدارة بيانات أفضل وتجربة مستخدم أفضل.
حالات استخدام SQLite show tables
تشمل حالات استخدام شائعة لعرض الجداول في التطبيقات ما يلي:
- إدارة قواعد البيانات: يساعد عرض الجداول ديناميكياً في إدارة قواعد البيانات، والتحقق من هيكلها، وتنفيذ عمليات مثل ترحيل البيانات أو النسخ الاحتياطي.
- الاستعلام الديناميكي وإعداد التقارير: تحتاج بعض التطبيقات إلى عرض الجداول المتاحة ديناميكياً للمستخدمين حتى يتمكنوا من اختيار جداول معينة للاستعلام عنها أو لإنشاء تقارير.
- ترحيل البيانات والتحقق منها: عند ترحيل أو التحقق من البيانات عبر قواعد البيانات، من المهم التأكد من وجود جميع الجداول الضرورية ومطابقتها للهيكل المتوقع.
الاتصال بـ SQLite واستعلام أسماء الجداول برمجياً
يجب عليك اتباع الخطوات التالية للاتصال بقاعدة بيانات SQLite برمجيًا وإدراج أسماء الجداول.
-
إنشاء اتصال بقاعدة بيانات SQLite:تحتوي معظم لغات البرمجة على مكتبات تسمح بالتكامل السهل مع SQLite (مثل sqlite3 في بايثون أو واجهة برمجة التطبيقات SQLite C).
-
تنفيذ استعلام لاسترداد أسماء الجداول: يمكنك استخدام جدول
sqlite_master
لعرض أسماء الجداول أو استخدام أمرPRAGMA table_list
لعرض البيانات الوصفية بشكل مفصل.
استرداد بيانات الجدول في لغة البرمجة C
يمكنك ربط تطبيق SQLite في لغة البرمجة C باستخدام واجهة برمجة التطبيقات C لـ SQLite. باستخدام هذه الواجهة البرمجية، يمكنك استرداد بيانات الجدول باستخدام عبارات SQL مثل PRAGMA table_list
أو استعلام جدول sqlite_master
. تعتبر هذه التقنية مفيدة لبرمجة النظام على مستوى منخفض عندما تكون الموارد محدودة وترغب في الحفاظ على الأداء الأمثل.
اعتبارات الأداء
قد تواجه بعض مشكلات الأداء عند إدراج الجداول في SQLite، خاصة عند العمل مع مجموعات بيانات كبيرة. تشمل هذه المشكلات ما يلي:
أداء سطر الأوامر
نظرًا لأن .tables
مدمج في SQLite، فإنه مُحسّن للسرعة والكفاءة لقاعدة بيانات أصغر. ومع ذلك، فإن استخدام استعلامات SQL مثل SELECT name FROM sqlite_master WHERE type='table';
يكون أبطأ قليلاً من .tables
لأن محرك تنفيذ الاستعلام يعالج الطلب. ومع ذلك، سيكون الاختلاف، من الناحية العملية، ضئيلاً. لا يزال استعلام SQL أكثر مرونة من أمر .tables
لأنه يسمح بتصفية النتائج.
أداء برمجي
عند استخدام مكتبة sqlite3
في لغة Python، قد تكون الأداء بطيئًا، خاصة عند التعامل مع مجموعات بيانات كبيرة. ومع ذلك، يوفر لغة البرمجة C وصولًا أكثر مباشرية ومحسنة إلى قواعد بيانات SQLite من خلال واجهة برمجة التطبيقات الخاصة بـ SQLite في C. يمكنك التفكير في استخدام لغة البرمجة C عند التعامل مع مجموعات بيانات كبيرة تتطلب تفاعل متكرر مع قواعد البيانات لتحقيق أداء محسن وفعال.
أخطاء شائعة وكيفية التعامل معها
عند سرد الجداول في قاعدة بيانات SQLite، قد تواجه بعض الأخطاء التي تعوق العملية. فيما يلي بعض الأخطاء الشائعة وكيفية حلها.
لم يتم العثور على جداول
تشمل الأسباب المحتملة لخطأ “لم يتم العثور على جداول” ما يلي:
-
قاعدة بيانات فارغة: قد لا تحتوي قاعدة البيانات على أي جداول، خاصةً بالنسبة لقاعدة البيانات التي تم إنشاؤها حديثًا أو بعد حذف جميع الجداول.
-
اتصال قاعدة بيانات غير صحيح: قد تكون متصلاً بقاعدة بيانات خاطئة أو غير متوقعة. تأكد دائمًا من مسار ملف قاعدة البيانات وتأكد من أنك متصل بقاعدة البيانات الصحيحة.
-
تلف في قاعدة البيانات: يمكن أن يتسبب تلف قاعدة البيانات في عدم قدرة SQLite على عرض الجداول بشكل صحيح. لاكتشاف تلف قاعدة البيانات، قم بتشغيل
PRAGMA integrity_check
واتبع الخطوات.
مشاكل الجداول المؤقتة
عند العمل مع الجداول المؤقتة، قد تواجه المشكلات التالية:
-
طبيعة محددة للجلسة: عادةً ما تكون الجداول المؤقتة مرتبطة باتصال قاعدة البيانات والجلسة الحالية. إذا لم تتمكن من رؤية الجدول المؤقت المتوقع في قائمة الجداول، تأكد دائمًا أنك متصل بالجسة الحالية.
-
تعارضات الأسماء: تتشارك الجداول المؤقتة في نطاقات الأسماء مع الجداول العادية وقد تخفي الجداول العادية إذا تم إنشاؤها باستخدام أسماء موجودة. في مثل هذه السيناريوهات، قد يفشل أمر عرض الجداول في إظهار الجداول العادية ما لم تقم بحذف الجداول المؤقتة.
-
قائمة الجداول المؤقتة: أمر
.tables
وأمرPRAGMA table_list
يعرضان الجداول المؤقتة. إذا قمت باستعلامsqlite_master
، فلن تظهر الجداول المؤقتة لأنها تُخزن في قاعدة بيانات مؤقتة مختلفة. لعرض قائمة الجداول المؤقتة بشكل صريح، استخدم جدولtemp.sqlite_master
:SELECT name FROM temp.sqlite_master WHERE type='table';
بدائل لعرض الجداول في SQLite
هناك طرق بديلة مختلفة لأمر .tables
واستعلام sqlite_master
لعرض الجداول في SQLite. تشمل هذه الطرق ما يلي:
استخدام أدوات واجهة المستخدم الرسومية لـ SQLite
تعتبر أدوات واجهة المستخدم الرسومية لـ SQLite فعالة إذا كنت ترغب في عرض وإدارة الجداول دون كتابة استعلامات.
- متصفح قاعدة البيانات لـ SQLite: أداة واجهة رسومية مفتوحة المصدر تسمح للمستخدمين بالتفاعل مع قواعدهم بصورة بصرية من خلال واجهة بسيطة لعرض جميع الجداول في قاعدة بيانات.
- محل Beekeeper: أداة واجهة رسومية متعددة المنصات لـ SQLite توفر واجهة سهلة الاستخدام لإدارة قواعد البيانات، بما في ذلك عرض الجداول وتحرير الصفوف وتنفيذ الاستعلامات.
- مفيد: أداة قاعدة بيانات عالمية تتيح للمستخدمين تصفح هيكل قاعدة البيانات، بما في ذلك عرض الجداول والأعمدة وبياناتها الوصفية.
حلول برمجية
كبديل لأدوات سطر الأوامر أو واجهة المستخدم الرسومية، يمكن للمطورين استخدام لغات برمجة مثل Python، C، Java، أو Node.js لعرض الجداول في SQLite بشكل برمجي.
-
بايثون: تسمح مكتبة
sqlite3
في بايثون للمطورين بالاتصال بقاعدة بيانات وتنفيذ استعلامات لعرض الجداول. -
لغة C: تسمح واجهة برمجة التطبيقات (API) في لغة C بالاتصال بـ SQLite واسترجاع الجداول بكفاءة، خاصة في الأنظمة ذات الأداء الحساس أو المدمج.
-
جافا سكريبت (Node.js): حزم مثل
better-sqlite3
أوsqlite3
لـ Node.js تتيح للمطورين دمج قوائم جداول SQLite في تطبيقات الويب أو خدمات الخلفية.
الخاتمة
هناك طرق مختلفة لعرض جداول SQLite، بما في ذلك أمر .tables
، واستعلام جدول sqlite_master
، واستخدام أمر PRAGMA table_list
لمزيد من المرونة. من المهم فهم متى يجب استخدام كل تقنية للتنقل بكفاءة وإدارة قواعد بيانات SQLite.
Source:
https://www.datacamp.com/tutorial/sqlite-show-tables