إنشاء جدول Sqlite. قاعدة بيانات SQLite العلائقية

28.03.2019

اصنع جدول

أمر SQL::=

إنشاء اسم الجدول (

تعريف العمود [، تعريف العمود]*

[، قيد]*

أمر SQL::=

إنشاء اسم الجدول كبيان تحديد

تعريف العمود::=

الاسم [قيد العمود]*

النوع::=

اسم النوع |

اسم النوع (الرقم) |

اسم النوع (رقم، رقم)

قيد العمود::=

غير فارغة[بند الصراع] |

المفتاح الأساسي [ بند الصراع ] |

فريد [بند الصراع] |

تحقق (إكسبر) |

القيمة الافتراضية |

COLLATE اسم الترتيب

القيد::=

المفتاح الأساسي (قائمة الأعمدة) [بند التعارض] |

UNIQUE (قائمة الأعمدة) [شرط التعارض] |

تحقق (إكسبر)

بند الصراع::=

حول خوارزمية الصراع الصراع

في أمر CREATE TABLE، عادةً ما يتبع الكلمة الأساسية "CREATE TABLE" اسم الجدول وقائمة تعريفات الحقول والشروط. يمكن أن يكون اسم الجدول إما معرفًا أو سلسلة. الأسماء التي تبدأ بـ "sqlite_" محجوزة لاستخدام المحرك.

يتكون كل تعريف لحقل الجدول من اسمه ونوعه وواحد أو أكثر شروط إضافية. لا يحد نوع البيانات الخاص بالحقل من موضع البيانات فيه. لمزيد من المعلومات، راجع أنواع البيانات في SQLite الإصدار 3. القيد الفريديؤدي إلى إنشاء فهرس في الحقول المحددة. يحدد عامل التشغيل COLLATE وظيفة المقارنة التي سيتم استخدامها لهذا الحقل. بشكل افتراضي، يتم استخدام الدالة BINARY المضمنة.

يحدد الشرط الافتراضي القيمة الافتراضية التي يتم استخدامها عندما إدراج. يمكن أن تكون القيمة NULL، أو سلسلة ثابتة، أو رقمًا. اعتبارًا من الإصدار 3.1.0، يمكن أن تأخذ القيمة الافتراضية أيضًا الكلمات الأساسية الخاصة CURRENT_TIME، أو CURRENT_DATE، أو CURRENT_TIMESTAMP. إذا كانت القيمة NULL أو سلسلة أو رقم، فسيتم إدراجها دون تغيير في الحقل ما لم يحدد أمر INSERT قيمة لهذا الحقل. إذا كانت القيمة هي CURRENT_TIME، أو CURRENT_DATE، أو CURRENT_TIMESTAMP، فسيتم إدراج تاريخ و/أو وقت UTC الحالي في الحقول. بالنسبة إلى CURRENT_TIME، يكون التنسيق هو HH:MM:SS. للتاريخ الحالي، YYYY-MM-DD. تنسيق CURRENT_TIMESTAMP هو "YYYY-MM-DD HH:MM:SS".

عادةً ما يقوم تعريف PRIMARY KEY بإنشاء فهرس فريد في الحقول المحددة. ومع ذلك، إذا كان المفتاح الأساسي في أحد الأعمدة من النوع الصحيح، فسيتم استخدام هذا العمود داخليًا باعتباره المفتاح الحقيقي لجدول B-Tree. وهذا يعني أن الحقل يمكن أن يحتوي فقط على قيمة عددية فريدة. (الاستثناء الوحيد هو أن SQLite يتجاهل أنواع بيانات الحقل ويسمح بتخزين البيانات من أي نوع، بغض النظر عن وصفها.) إذا لم يكن الجدول يحتوي على حقل به مفتاح أساسي عدد صحيح، فسيتم إنشاء مفتاح B-Tree بالكامل تلقائيا. يمكن دائمًا الوصول إلى مفتاح سجل B-Tree باستخدام الأسماء الخاصة "ROWID" أو "OID" أو "_ROWID_". وينطبق هذا بغض النظر عن وجود INTEGER PRIMARY KEY. بعد INTEGER PRIMARY KEY قد يحتوي أيضًا على الكلمة الرئيسيةزيادة تلقائية. تغير الكلمة الأساسية AUTOINCREMENT الطريقة التي يتم بها إنشاء B-Tree تلقائيًا. تتوفر معلومات إضافية حول إنشاء B-Tree التلقائي بشكل منفصل.

وفق معيار SQL، المفتاح الأساسي يعني أنه ليس فارغًا. لسوء الحظ، نظرًا للإشراف طويل الأمد، فإن هذا ليس هو الحال مع SQLite. يسمح SQLite بقيم NULL في أعمدة PRIMARY KEY. قد نقوم بتغيير SQLite ليتوافق مع المعيار (وقد نفعل ذلك في المستقبل)، ولكن مع مرور الوقت، أصبح SQLite كذلك واسع الانتشار، أننا نخاف من عمل كود صحيح حاليًا بشكل خاطئ إذا قمنا بإصلاح المشكلة. لذا قررنا الآن السماح بـ NULL في أعمدة PRIMARY KEY. يجب أن يتذكر المطورون أننا قد نغير SQLite ليتوافق مع معيار SQL في المستقبل ويجب أن نطور برامج جديدة لتتوافق معه.

إذا تم استخدام الكلمات الأساسية "TEMP" أو "TEMPORARY" بين "CREATE" و"TABLE"، فسيتم إنشاء الجدول فقط كجزء من اتصال قاعدة البيانات ويتم حذفه تلقائيًا عند إغلاق الاتصال. أي فهارس تم إنشاؤها على جدول مؤقت تكون أيضًا مؤقتة. يتم تخزين الجداول والفهارس المؤقتة مع ملف منفصليختلف عن ملف قاعدة البيانات الرئيسية.

لو المحددة، ثم يتم إنشاء الجدول في قاعدة البيانات المحددة. ومن الخطأ الإشارة إلى كليهما في نفس الوقت والكلمة الأساسية TEMP إذا ليس "درجة الحرارة". إذا لم يتم تحديد اسم قاعدة البيانات ولم يتم استخدام الكلمة الأساسية TEMP، فسيتم إنشاء الجدول في قاعدة البيانات الحالية.

من الممكن تحديد عامل حل التعارض لكل شرط إذا كنت تريد تحديد خوارزمية بديلة. الخوارزمية الافتراضية هي ABORT. شروط مختلفةفي جدول واحد يمكن أن يكون خوارزميات مختلفةالافتراضي لحل المشاكل. إذا كان في أوامر النسخأو INSERT أو UPDATE، يتم تعريف خوارزميات حل التعارض المميزة، ثم ستستبق الخوارزميات المحددة في استعلام CREATE TABLE. ل معلومات مفصلةانظر حول الصراع.

تم دعم قيد التحقق منذ الإصدار 3.3.0. قبل الإصدار 3.3.0، كان من الممكن تحديد CHECK، ولكن لم يتم فرضه.

لا توجد قيود صريحة على عدد الحقول أو عدد القيود في الجدول. يقتصر حجم البيانات الإجمالي لكل سجل على 1 ميغابايت تقريبًا في الإصدار 2.8. في الإصدار 3.0 لا يوجد حد صارم لكمية البيانات في السجل.

يقوم نموذج تعريف الجدول CREATE TABLE AS بإنشاء جدول من نتيجة الاستعلام. يتم أخذ أسماء حقول الجدول من أسماء الحقول في نتيجة الاستعلام.

يتم تخزين النص الدقيق لكل عبارة CREATE TABLE في جدول sqlite_master. في كل مرة يتم فيها فتح قاعدة البيانات، تتم قراءة جميع استعلامات CREATE TABLE من الجدول sqlite_master واستخدامها في الإنشاء التمثيل الداخليسكليتي. إذا كان الأمر الأصلي هو CREATE TABLE AS، فسيتم إنشاء CREATE TABLE المكافئ له وتخزينه في sqlite_master بدلاً من الاستعلام الأصلي. يتم تخزين النص CREATE TEMPORARY TABLE في جدول sqlite_temp_master.

إذا تم تحديد عبارة IF NOT EXISTS الاختيارية وكان هناك بالفعل جدول آخر يحمل نفس الاسم، فلن يتم تنفيذ الأمر.

سكليتي- هي آلية معاملات مستقلة بدون خادم لقاعدة البيانات بيانات SQL. تلقت Python وحدة sqlite3 في الإصدار 2.5، مما يعني أنه يمكنك إنشاء قاعدة بيانات بيانات سكليتيفي أي حقيقي إصدارات بايثون، لا يلزم التنزيل أدوات إضافية. موزيلايستخدم قواعد بيانات SQLite في شعبيته متصفح فايرفوكسلتخزين الإشارات المرجعية وأشياء أخرى معلومات مختلفة. في هذه المقالة سوف نتناول ما يلي:

  • كيف إنشاء قاعدة بيانات SQLite
  • كيفية إدراج البيانات في الجدول
  • كيفية تحرير البيانات
  • كيفية حذف البيانات
  • استعلامات SQL الأساسية

بمعنى آخر، بدلًا من تجميع الوحدة نفسها معًا، سنتعرف مباشرةً على كيفية استخدامها.
إذا كنت تريد التحقق بصريًا من قاعدة بياناتك، فيمكنك استخدام مكون إضافي مدير سكليتيفي Firefox (نوصي بـ google هذا السؤال)، أو إذا كنت تفضل سطر الأوامر، يمكنك استخدام الصدفة سطر الأوامر.

كيفية إنشاء قاعدة بيانات وإدراج البيانات المختلفة

يعد إنشاء قاعدة بيانات في SQLite أمرًا بسيطًا للغاية، لكن العملية تتطلب أن تفهم القليل عن ماهية SQL. دعونا نلقي نظرة على الكود الذي سيقوم بإنشاء قاعدة البيانات لتخزينها ألبومات الموسيقى:

بايثون

import sqlite3 conn = sqlite3.connect("mydatabase.db") # أو :memory: للحفظ في ذاكرة الوصول العشوائي cursor = conn.cursor() # إنشاء جدول cursor.execute("""إنشاء ألبومات الجدول (نص العنوان، نص الفنان) ، نص تاريخ الإصدار، نص الناشر، نص نوع الوسائط) """)

أولا نحن بحاجة إلى وحدة sqlite3وإنشاء اتصال بقاعدة البيانات. يمكنك تمرير اسم الملف أو مجرد استخدام السلسلة الخاصة " :ذاكرة:"لإنشاء قاعدة بيانات في الذاكرة. في حالتنا، نقوم بإنشائه على القرص في ملف يسمى mydatabase.db.

بعد ذلك نقوم بإنشاء كائن المؤشر، والذي يسمح لنا بالتفاعل مع قاعدة البيانات وإضافة السجلات، من بين أشياء أخرى. هنا نستخدم بناء جملة SQL لإنشاء جدول يسمى الألبومات يحتوي على الحقول الخمسة التالية: العنوان والفنان وتاريخ الإصدار والناشر ونوع الوسائط. يدعم SQLite خمسة أنواع من البيانات فقط: باطل, عدد صحيح, حقيقي, نصو سائل لزج. لنكتب هذا الرمز وندخل بعض البيانات في ملفنا طاولة جديدة. تذكر إذا قمت بتشغيل الأمر اصنع جدولوقاعدة البيانات موجودة بالفعل، ستتلقى رسالة خطأ.

بايثون

# أدخل البيانات في الجدول cursor.execute("""INSERT INTO الألبومات VALUES ("Glow"، "Andy Hunter"، "24/07/2012"، "Xplore Records"، "MP3")""") # Save التغييرات conn.commit() # أدخل الكثير من البيانات في الجدول باستخدام الطريقة الآمنة "؟" الألبومات = [("Exodus"، "Andy Hunter"، "7/9/2002"، "Sparrow Records"، "CD")، ("حتى نحصل على وجوه"، "Red"، "2/1/2011" ، "السجلات الأساسية"، "قرص مضغوط")، (" النهاية"هي حيث نبدأ"، "ألف قدم كروتش"، "17/04/2012"، "TFKmusic"، "CD")، ("The حياة جيدة"، "Trip Lee"، "2012/04/10"، "الوصول إلى السجلات"، "CD")] cursor.executemany("INSERT INTO الألبومات VALUES (؟،؟،؟،؟،؟)"، ألبومات) conn .يقترف()

# أدخل البيانات في الجدول

المؤشر. تنفيذ("""إدراج في الألبومات

القيم ("التوهج"، "آندي هانتر"، "24/07/2012"،

"تسجيلات Xplore"، "MP3")"""

# حفظ التغييرات

كون. يقترف()

# أدخل الكثير من البيانات في الجدول باستخدام الطريقة الآمنة "؟"

الألبومات = [ ("Exodus"، "Andy Hunter"، "7/9/2002"، "Sparrow Records"، "CD"))،

("حتى يكون لدينا وجوه"، "أحمر"، "2011/02/01"، "السجلات الأساسية"، "قرص مضغوط")،

("الحياة الطيبة"، "تريب لي"، "10/04/2012"، "الوصول إلى السجلات"، "أقراص مضغوطة")]

المؤشر. تنفيذ العديد( "أدخل في قيم الألبومات (؟،؟،؟،؟،؟)"، الألبومات)

كون. يقترف()

إدراج في SQLلإدراج سجل في قاعدة البيانات الخاصة بنا. يرجى ملاحظة أن كل كائن موجود ونقلت واحدة. قد يؤدي ذلك إلى جعل الأمور صعبة إذا كنت بحاجة إلى إدراج أسطر تحتوي على علامات اقتباس مفردة. على أية حال، من أجل حفظ سجل في قاعدة البيانات، نحتاج إلى إنشائه. يوضح الجزء التالي من التعليمات البرمجية كيفية إضافة سجلات متعددة مرة واحدة باستخدام طريقة المؤشر. يرجى ملاحظة أننا نستخدم علامات الاستفهام ( ? )، بدلاً من السلاسل البديلة (%) لإدراج القيم. يرجى ملاحظة أن استخدام سلسلة بديلة ليس آمنًا، لأنه قد يعرضك لهجوم حقن SQL. استخدام علامة الاستفهام أفضل بكثير، واستخدام SQLAlchemyخاصة أنه يفعل كل ما هو ضروري لحمايتك من التحرير المدمج ونقلت واحدةعلى ما يستطيع SQLite قبوله.

تحرير وحذف الإدخالات

فرصة تحديث السجلاتفي قاعدة البيانات الخاصة بك، هذا هو المفتاح لضمان الحفاظ على بياناتك بدقة النظام الكامل. إذا لم تتمكن من ذلك تحرير البيانات، فإن قاعدتك ستصبح عديمة الفائدة قريبًا. في بعض الأحيان ستحتاج أيضًا إلى حذف الصفوف. سننظر في كلا السؤالين في هذا القسم. أولا، دعونا نفعل قليلا لتجديد المعلومات.

بايثون

هنا استخدمنا الأمر تحديث SQLلتحديث جدول الألبومات. هنا يمكنك استخدام الأمر تعيينلتغيير الحقل، لذلك في حالتنا سنقوم بتغيير اسم الفنان إلى John Doe في كل إدخال حيث يكون حقل الفنان خاصًا بـ Andy Hunter. بسيط للغاية، أليس كذلك؟ يرجى ملاحظة أنه إذا لم تقم بتأكيد التغييرات، فلن تتم إضافتها إلى قاعدة البيانات. فريق يمسحبنفس البساطة. دعونا نلقي نظرة.

بايثون

الإزالة أسهل من التحديث. في SQL يستغرق الأمر سطرين فقط. في في هذه الحالة، كل ما علينا فعله هو التحديد سكليتيومن أي جدول سيتم حذف (الألبومات)، وأي سجل محدد يستخدم العنصر أين. وهكذا تم البحث عن اسطوانة تحمل اسم "جون دو" في مجال الفنان ثم هؤلاء تم حذف البيانات.

استعلامات SQLite الأساسية

الاستفسارات الى سكليتيتشبه إلى حد كبير تلك التي تستخدمها في قواعد البيانات الأخرى مثل MySQL أو Postgres. نحن ببساطة نستخدم بناء جملة SQL العادي لتنفيذ الاستعلامات، ثم يقوم كائن المؤشر بتنفيذ SQL. وهنا بعض الأمثلة:

بايثون

import sqlite3 conn = sqlite3.connect("mydatabase.db") #conn.row_factory = sqlite3.Row cursor = conn.cursor() sql = "حدد * من الألبومات أين الفنان=؟" cursor.execute(sql, [("Red")]) print(cursor.fetchall()) # أو استخدم fetchone() print("إليك قائمة بجميع السجلات في الجدول:") للصف الموجود في المؤشر. تنفيذ ("SELECT Rowid، * من الألبومات ORDER BY Artist"): print(row) print("نتائج من استعلام LIKE:") sql = "SELECT * من الألبومات حيث العنوان مثل "The%"" cursor.execute(sql) ) طباعة (cursor.fetchall())

قاعدة بيانات علائقية مدمجة وخفيفة الوزن. الميزات: لا يستخدم نموذج خادم العميل،
يدعم الجميع تقريبا مجموعة قياسيةتعليمات SQL، محرك SQLite عبارة عن مكتبة (sqlite3.dll)، أي أنها ليست كذلك
وهي عملية تعمل بشكل منفصل، وتوفر وظائف قابلة للاستدعاء (API) كبروتوكول تبادل.
بالنسبة لمنصة Win32 (المترجمة مسبقًا). للنوافذ) على الموقع الرسمي - sqlite.org - يمكنك تنزيل المكتبة نفسها مباشرة - sqlite3.dll
(sqlite - dll - win32)، وكذلك وظيفية جزء العميل- sqlite3.exe (sqlite - shell - win32). أحدث إصدار متاح هو v.3.7.10
يسمح لك غلاف العميل sqlite3.exe بالعمل مباشرة مع قاعدة البيانات من خلال وحدة التحكم.
قبل البدء، يتعين عليك إجراء بعض التعديلات البسيطة: 1) يجب نقل خط وحدة التحكم إلى وحدة تحكم Lucida
(انقر بزر الماوس الأيمن على وحدة التحكم -> الخصائص -> الخط)، 2) الترجمة صفحة التعليمات البرمجيةفي 1251 باستخدام الأمر "chcp 1251"، تكون صفحة الرموز الافتراضية هي 866.
يعد ذلك ضروريًا للإدراج الصحيح للبيانات النصية في جداول قاعدة البيانات.

فيما يلي قائمة بجميع الأوامر الخاصة ووصف موجز لها.

وصف موجز للفريق
.databases يسرد أسماء جميع المتصلين الجلسة الحاليةقواعد البيانات والملفات المقابلة لها.
.dump ?TABLES?: تفريغ كافة عبارات SQL المستخدمة لإنشاء قاعدة بيانات أو جدول منفصل بتنسيق نصي
.صدى تشغيل | إيقاف تشغيل | OFF صدى الأوامر التي تم إدخالها
.exit الخروج من البرنامج
.شرح ON|OFF يتحكم في وضع الإخراج الظاهري أوامر الآلة. يستخدم عند تنفيذ استعلام EXPLAIN SQL.
.header(s) ON|OFF ON | OFF إظهار رؤوس الأعمدة
.import FILE TABLE استيراد البيانات من ملف الملفإلى طاولة TABLE
.indices TABLE يعرض أسماء جميع الفهارس الموجودة في الجدول
.mode MODE تحديد وضع الإخراج: السطر (السطور)، والعمود (الأعمدة)، والإدراج، والقائمة، وhtml وغيرها
طباعة سلسلة .nullvalue سلسلة سلسلةبدلاً من البيانات الفارغة عند إخراج استعلام SQL SELECT
.output FILENAME أرسل كل المخرجات إلى الملف FILENAME
.output stdout إرسال كافة المخرجات إلى الشاشة
.promt MAIN COTINUE التغيير سلسلة قياسيةنصائح
.quit قم بالخروج من البرنامج الخاص بهم
.اقرأ اسم الملف تنفيذ SQLتعليمات من الملف FILENAME
.المخطط؟الجدول؟ سيظهر نص SQL لعبارة CREATE لجميع الجداول أو جدول محدد
.separator STRING تغيير سلسلة فاصل الأعمدة المستخدمة في إخراج استعلامات SQL SELECT وأوامر .import
.show إظهار قيم المتغيرات المحددة
.الجداول؟النمط؟ عرض قائمة بأسماء جداول قاعدة البيانات (ربما باستخدام قالب)
.timeout MS يمنع فتح الجداول لعدد من المللي ثانية MS
.width NUM NUM: اضبط عرض الأعمدة عند الإخراج في وضع العمود

دعونا نلقي نظرة فاحصة على بعض هذه الأوامر. لنقم أولاً بإنشاء قاعدة بيانات سننظر فيها فرق خاصة. من سطر الأوامر، قم بتشغيل برنامج وحدة التحكم "sqlite3.exe" عن طريق إدخال ما يلي:

اختبار sqlite3.db
نسخة سكليتي 3.1.3
أدخل "مساعدة" للحصول على التعليمات
أين هو اسم Exam.db قاعدة خلقتبيانات.

لنقم بإنشاء جدول tbl1، باستخدام باستخدام SQLإنشاء بيانات الجدول.

sqlite> إنشاء جدول tbl1 (مفتاح تلقائي أساسي واحد صحيح،
اثنان فارتشار (50)، ثلاثة حقيقيون؛

دعونا إدراج بعض السجلات في هذه الطاولة. ألاحظ أنه في تعليمات إنشاء الجدول لكل حقل قمنا بتحديد نوع بيانات لقيمه؛ يتم تجاهل نوع البيانات هذا بواسطة برنامج SQLite. نظام إدارة قاعدة البيانات "SQLite" فضفاض جدًا في تحديد أنواع البيانات، وهو أمر غير معتاد بالنسبة للمعيار لغة SQL. تعتمد كتابة البيانات في "SQLite" على ما يسمى بمبدأ "بدون نوع"، مما يعني أنه يتم تجاهل المعلومات المتعلقة بنوع البيانات في تعريف أعمدة الجدول عند إنشائها باستخدام عبارة CREATE TABLE. ومع ذلك، فمن الأفضل تضمين أسماء أنواع الأعمدة عند الإعلان عن الجداول لتحسين إمكانية نقل قاعدة البيانات الخاصة بك. يوجد استثناء واحد للمبدأ "بدون نوع" - عمود من النوع INTEGER PRYMARY KEY (عدد صحيح ليس INT؛ INT PRIMARY KEY - يفي بمبدأ "بدون نوع"). العمود ج نوع عدد صحيحيجب أن يحتوي المفتاح الأساسي على عدد صحيح 32 بت؛ وستؤدي محاولة كتابة بيانات من أي نوع آخر إلى عمود من هذا النوع إلى حدوث خطأ. يُستخدم هذا النوع عادةً قبل محدد العمود AUTOINCREMENT، والعمود الذي يحمل النوع INTEGER PRIMARY KEY AUTOINCREMENT هو عمود رئيسي في الجدول، ويتم إنشاء قيمه تلقائيًا.

sqlite> INSERT INTO tbl1 VALUES(NULL, "hello", 3.10);
sqlite> INSERT INTO tbl1 VALUES(NULL, "is", 5.34);
sqlite> INSERT INTO tbl1 VALUES(NULL, "from", NULL);

sqlite> إنشاء جدول tbl2 (ikey INTEGER PRIMARY KEY, nm VARCHAR(50));
سكليتي>
سكليتي>

Command.dump

سوف تتيح لك الحصول على تفريغ كامل(قائمة) بجميع تعليمات SQL المستخدمة لإنشاء قاعدة بيانات أو جدول محدد.

بناء الجملة:

تفريغ؟الجدول؟
حيث TABLE هو الاسم الاختياري للجدول الذي تريد تفريغ عبارات SQL له.

سكليتي>.تفريغ
بدء المعاملة؛
إنشاء جدول tbl1 (عدد صحيح واحد المفتاح الأساسيزيادة تلقائية، اثنان varchar(50)،
ثلاثة حقيقية)؛
أدخل في قيم "tbl1"(1, "hello", 3.1);
أدخل في قيم "tbl1" (2، "is"، 5.34)؛
إدراج في قيم "tbl1" (3، "من"، NULL)؛
حذف من sqlite_sequence؛
إدراج في "sqlite_sequence" VALUES("tbl1", 3);

إنشاء فهرس فريد itbl2 على tbl2(ikey);
يقترف؛
سكليتي>

يمكن استخدام هذا الأمر لتصدير قاعدة بيانات تم إنشاؤها في SQLite إلى برنامج قاعدة بيانات آخر. للقيام بذلك، تحتاج إلى حفظ تفريغ كامل لعبارات SQL في ملف.

sqlite> .output Exam.sql - إعادة توجيه الإخراج إلى الملف
سكليتي>.تفريغ

رأس (رؤوس) الأوامر

تمكين/تعطيل عرض أسماء رؤوس الأعمدة.

بناء الجملة:

الرأس (العناوين) قيد التشغيل | عن
أين،

تشغيل - تمكين عرض أسماء رؤوس الأعمدة
OFF - تعطيل عرض أسماء رؤوس الأعمدة
مثال:

sqlite>.header ON
sqlite> SELECT * FROM tbl1؛
واحد|اثنان|ثلاثة
1|مرحبا|3.1
2|هو|5.34
3|من|
sqlite>.header OFF
sqlite> SELECT * FROM tbl1؛
1|مرحبا|3.1
2|هو|5.34
3|من|
سكليتي>

Command.import

باستخدام هذا الأمر، من الممكن استيراد البيانات من ملف نصي. يجب فصل البيانات الموجودة في الملف النصي بخط فاصل، ويتم تحديد هذا الخط الفاصل بواسطة أمر .separator. الحرف الفاصل الافتراضي هو حرف توجيه الإخراج "|". هذا الأمرتم تقديمه في الإصدار 3.

بناء الجملة:

استيراد جدول الملفات
أين،

FILE - اسم ملف اختبار الإدخال مع البيانات
TABLE - اسم الجدول الذي يتم إدراج البيانات فيه
مثال:

فلنقم بتجهيز البيانات التالية في ملف Exam.txt

1;روي
2 ؛ تيد
3؛ سام
4;بوب
لنقم بإدراج هذه البيانات في الجدول tbl2 عن طريق تنفيذ الأوامر التالية:

sqlite> .separator "؛" - اضبط الحرف الفاصل على فاصلة منقوطة
sqlite> .import Exam.txt tbl2 - استيراد البيانات
sqlite> SELECT * من tbl2؛
1؛ روي
2؛ تيد
3؛ سام
4؛ بوب

وضع القيادة

يقوم هذا الأمر بتغيير تنسيق الإخراج لجدول SQL باستخدام استعلام SELECT. يمكن لـ "SQLite" إخراج نتائج الاستعلام بالتنسيقات التالية: csv، column، html، Insert، line، list، tabs، tcl. بالنسبة للإصدار 2.8، يتم دعم التنسيقات التالية فقط: السطر (السطور)، والعمود (الأعمدة)، والإدراج، والقائمة، وhtml. دعونا ننظر إليهم بالترتيب.

وضع CSV. في هذا التنسيق، يتم فصل أعمدة سجل الجدول بفواصل.

sqlite>.mode CSV
sqlite> SELECT * FROM tbl1؛
1،"مرحبًا"،3.1
2"، هو"، 5.34
3"من"،
سكليتي>

الوضع مناسب لتصدير الجداول إلى برامج الطرف الثالث، على سبيل المثال هذا التنسيق، يفهم برنامج Excel.

وضع العمود. في هذا الوضع، تتم محاذاة الإخراج إلى الحافة اليسرى لأعمدة سجل الجدول.

sqlite> أعمدة الوضع
sqlite> SELECT * FROM tbl1؛
1 مرحبا 3.1
2 هو 5.34
3 من
سكليتي>

راجع أيضًا الأمر .width لتعيين عرض الأعمدة.

وضع HTML. يتم الإخراج في هذا الوضع في نمط تعريف الجدول لغة أتش تي أم أل. مناسب لتضمين جدول على صفحة موقع الويب.

سكليتي>.وضع أتش تي أم أل
sqlite> SELECT * من tbl2؛

1
روي

2
تيد

3
سام

4
بوب

سكليتي>

وضع الإدراج في هذا الوضع، تم إنشاؤها استعلامات SQL INSERT للجدول الذي تم تحديد اسمه كمعلمة ثالثة في الأمر.

بناء الجملة:

وضع إدراج الجدول
حيث TABLE هو اسم الجدول الذي يتم إنشاء عبارات INSERT له

sqlite> .mode إدراج tbl3
sqlite> SELECT * FROM tbl1؛
INSERT INTO tbl3 VALUES(1,"hello",3.1);
INSERT INTO tbl3 VALUES(2,"is",5.34);
INSERT INTO tbl3 VALUES(3,from",NULL);
سكليتي>

وضع الخط. هنا يتم إخراج كل عمود خط منفصلبالتنسيق column_name = value. يتم فصل الإدخالات بسطر فارغ.

مثال:

sqlite> خط الوضع
sqlite> SELECT * FROM tbl1؛
واحد = 1
اثنان = مرحبا
ثلاثة = 3.1

واحد = 2
اثنان = هو
ثلاثة = 5.34

واحد = 3
اثنان = من
ثلاثة =
سكليتي>

وضع القائمة. هذا هو الوضع الافتراضي. يتم عرض كل سجل جدول على سطر منفصل، مع فصل الأعمدة بحرف محدد. يتم تعريف الحرف الفاصل بواسطة الأمر .separator، وهو يساوي بشكل افتراضي الشرطة المائلة للأمام "|".

sqlite> قائمة الوضع
sqlite> SELECT * FROM tbl1؛
1|مرحبا|3.1
2|هو|5.34
3|من|
سكليتي>

وضع علامات التبويب. في هذا الوضع، يتم فصل أعمدة سجلات الجدول عن بعضها البعض بواسطة حرف جدولة.

sqlite> علامات التبويب الوضع
sqlite> SELECT * FROM tbl1؛
1 مرحبا 3.1
2 هو 5.34
3 من
سكليتي>

وضع تي سي ال الإخراج بتنسيق عنصر قائمة TCL.

سكليتي>.وضع تي سي إل
sqlite> SELECT * من tbl2؛
"1" "روي\r"
"2" "تيد\r"
"3" "سام\r"
"4" "بوب\ر"
سكليتي>

Command.output

يقوم هذا الأمر بإعادة توجيه الإخراج إلى ملف أو العودة إلى الشاشة.

بناء الجملة:

ضع اسم الملف
.خرج قياسي
أين،

FILENAME - اسم الملف الذي يتم إرسال الإخراج إليه
stdout - الإخراج المباشر إلى الشاشة
قيادة.قراءة

يقرأ وينفذ عبارات SQL من ملف.

بناء الجملة:

قراءة اسم الملف
حيث FILENAME هو اسم الملف الذي يحتوي على تعليمات SQL

يخلق ملف نصيتحتوي على استعلامات SQL التالية:

بدء المعاملة؛

أدخل في قيم tbl3 ("Jim"، "Green"، 1653)؛
أدخل في قيم tbl3 ("Ann"، "Folkin"، 1891)؛
أدخل في قيم tbl3 ("Fredy"، "Donovan"، 2345)؛
يقترف؛

لنقم بتسمية الملف الذي تم إنشاؤه Exam.sql ونقوم بتنفيذ الأوامر التالية:

sqlite> .قراءة الامتحان.sql
sqlite> SELECT * من tbl3؛
جيم|جرين|1653
آن|فولكين|1891
فريدي|دونوفان|2345
سكليتي>

Command.schema

سيقوم هذا الأمر بطباعة كافة عبارات SQL CREATE TABLE وCREATE INDEX المستخدمة لإنشاء الجداول والفهارس في قاعدة البيانات الحالية. من الممكن تحديد اسم جدول معين تريد عرضه بيان SQLإنشائها.

بناء الجملة:

مخطط؟الجدول؟
أين ؟الطاولة؟ - اسم الجدول اختياري

sqlite>.schema
إنشاء جدول sqlite_sequence(name,seq);
إنشاء جدول tbl1 (عدد صحيح واحد للمفتاح الأساسي، واثنين من varchar(50)، وثلاثة حقيقيين)؛
إنشاء جدول tbl2 (مفتاح أساسي عدد صحيح ikey، نانومتر VARCHAR(20));
إنشاء جدول tbl3 (اسم VARCHAR(30)، اسم العائلة VARCHAR(50)، num INT);
إنشاء فهرس فريد itbl2 على tbl2(ikey);
سكليتي>

Command.tables

سيعرض الأمر قائمة بأسماء الجداول التي تم إنشاؤها في قاعدة البيانات الحالية. من الممكن استخدام تعريف قالب لإرجاع أسماء الجداول إلى قالب مطابق. بناء جملة النمط هو نفس تعريف النمط في جملة LIKE.

بناء الجملة:

الجداول؟ نمط؟
أين؟ الأب؟ - تعريف نمط البحث الاختياري

مثال:

سكليتي>.الجداول
sqlite_sequence tbl1 tbl2 tbl3
sqlite> .tables %tb% "مع القالب
tbl1 tbl2 tbl3
سكليتي>

عرض الأمر

يستخدم لتعيين عرض الأعمدة عندما يتم تعيين تنسيق الإخراج على العمود.

بناء الجملة:

العرض رقم الرقم:
حيث NUM هو عرض العمود المقابل بالأحرف.

sqlite> عمود الوضع
سكليتي>.العرض 3 10 7
sqlite> SELECT * FROM tbl1؛
1 مرحبا 3.1
2 هو 5.34
3 من
سكليتي>

هذه مكتبة مكتوبة بلغة C توفر العمل مع SQL. تنتمي هذه الأداة إلى أنظمة إدارة قواعد البيانات العلائقية. تعمل معظم قواعد بيانات SQL على أساس العميل/الخادم. لنأخذ MySQL على سبيل المثال. أثناء عملية العمل، يتم أخذ البيانات من خوادم ماي إس كيو إل، ويتم إرسالها كرد على الطلب. متى باستخدام سكليتي، سيتم أخذ البيانات مباشرة من القرص، أي. لن تكون هناك حاجة للاتصال بالخادم.

تثبيت

سوف نتفاعل مع قاعدة البيانات من خلال واجهة سطر الأوامر sqlite3(CLI) على نظام التشغيل Linux. يعمل مع sqlite3يتم تنفيذ واجهة سطر الأوامر (CLI) على نظامي التشغيل Mac OS وWindows بنفس الطريقة، ولكنني أوصيك بقضاء 5 دقائق في التثبيت آلة افتراضيةحتى لا تزدحم جهاز الكمبيوتر الخاص بك بالبرامج غير الضرورية.

لتثبيت sqlite3 على نظام Linux، قم بتشغيل الأمر:

sudo apt-get install sqlite3 libsqlite3-dev

ونتيجة لذلك، سيتم تثبيته على جهازك sqlite3. لتثبيت هذه الأداة على أنظمة تشغيل أخرى، اتبع التعليمات. لبدء تشغيل sqlite، قم بتشغيل الأمر sqlite3 في وحدة التحكم. يجب أن تكون النتيجة مثل هذا:

يحتوي السطر الثاني على تلميح أنه للحصول على المساعدة، عليك تشغيل الأمر Command.help . لنفعل ذلك. ونتيجة لذلك سوف نرى أوامر ميتاووصفهم.

أوامر ميتا

أوامر ميتا- مصممة لتوليد الجداول والعمليات الإدارية الأخرى. كلهم ينتهون نقطة. دعنا نستعرض قائمة الأوامر التي قد تكون مفيدة:

الأوامر القياسية

الآن دعونا نذهب من خلال القائمة الأوامر القياسية sqlite3، والتي تم تصميمها للتفاعل مع قاعدة البيانات. الأوامر القياسية يمكن تصنيفها إلى ثلاث مجموعات:

  • لغة وصف البيانات DDL: أوامر لإنشاء جدول وتعديل وحذف قواعد البيانات والجداول والمزيد.
  • لغة التحكم بيانات دي إم إل : السماح للمستخدم بمعالجة البيانات (إضافة/تغيير/حذف).
  • لغة الاستعلام DQL: يسمح باسترداد البيانات.
  • المذكرة: يدعم SQLite أيضًا العديد من الأوامر الأخرى، والتي يمكن العثور على قائمة بها. بسبب ال هذا الدرسمخصص للمبتدئين، سنقتصر على مجموعة الأوامر المدرجة.

    ملفات قاعدة بيانات SQLite هي عبر منصة. يمكن أن تكون موجودة على أنواع مختلفة من الأجهزة.

    • بريد إلكتروني
    • تعليق

    من بين كل هذه الحقول، يمكن أن يكون عنوان الموقع فقط فارغًا. يمكننا أيضًا تقديم عمود لترقيم التعليقات. دعنا نسميها post_id.

    الآن دعونا نحدد أنواع البيانات لكل عمود:

    يصف نوع البيانات
    بعد معرف عدد صحيح
    اسم نص
    بريد إلكتروني نص
    رابط الموقع نص
    تعليق نص

    ستتمكن من العثور على جميع أنواع البيانات المدعومة في SQLite3.

    تجدر الإشارة أيضًا إلى أنه في SQLite3، قد تختلف البيانات المدرجة في العمود عن تلك الموجودة في العمود النوع المحدد. هذا لن يعمل في MySQL.

    الآن لنقم بإنشاء قاعدة البيانات. إذا كنت لا تزال في واجهة sqlite3، فاكتب الأمر Command.quit للخروج. أدخل الآن:

    sqlite3 comment_section.db

    ونتيجة لذلك، في الدليل الحاليسيكون لدينا ملف comment_section.db.

    المذكرة: إذا لم تحدد اسم الملف، فسيقوم sqlite3 بإنشاء قاعدة بيانات مؤقتة.

    إنشاء جدول

    لتخزين التعليقات نحتاج إلى إنشاء جدول. دعونا نسميها التعليقات. نقوم بتنفيذ الأمر:

    إنشاء تعليقات الجدول (post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT، name TEXT NOT NULL، email TEXT NOT NULL، website_url TEXT NULL، comment TEXT NOT NULL)؛

    NOT NULL سيضمن أن الخلية لا تحتوي على قيمة فارغة. يعمل المفتاح الأساسي والتكرير التلقائي على توسيع قدرات هذا المجال بعد معرف.

    للتحقق من إنشاء الجدول، قم بتشغيل الأمر meta.tables. ونتيجة لذلك، نرى جدول التعليقات لدينا.

    المذكرة: للحصول على بنية الجدول، اكتب تعليقات المخطط

    الآن يمكننا إدخال البيانات في الجدول.

    إدراج الصفوف

    لنفترض أننا بحاجة إلى إجراء الإدخال التالي:

    الاسم: شيفام مامجين [البريد الإلكتروني محمي]الموقع الإلكتروني: shivammg.blogspot.com التعليق: برنامج تعليمي رائع للمبتدئين.

    للإدراج سنستخدم الأمر إدراج.

    أدخل في التعليقات (الاسم، البريد الإلكتروني، website_url، التعليق) القيم ("Shivam Mamgain"، " [البريد الإلكتروني محمي]"، "shivammg.blogspot.com"، "برنامج تعليمي رائع للمبتدئين.");

    ليست هناك حاجة لتحديد قيمة لـ post_id لأن سيتم إنشاؤه تلقائيًا بفضل إعداد AUTOINCREMENT.

    لملء يدك، يمكنك إدراج بضعة أسطر أخرى.

    عينة

    لجلب البيانات سوف نستخدم الأمر يختار.

    حدد post_id، الاسم، البريد الإلكتروني، website_url، التعليق من التعليقات؛

    قد يبدو الطلب نفسه كما يلي:

    اختر * من التعليقات؛

    ونتيجة لذلك، سيتم استخراج كافة الصفوف من الجدول. قد تظهر النتيجة بدون تحديد الأعمدة وبدون رأس. لإصلاح هذا نقوم بما يلي:

    لعرض الرأس، أدخل .headers ON .

    لعرض الأعمدة، قم بتشغيل الأمر .mode column .

    نحن ننفذ يختارالطلب مرة أخرى.

    المذكرة: يمكن تغيير نوع العرض باستخدام الأمر .mode meta.

    تحديث

    لنفترض أن هذا المجال بريد إلكترونيبالنسبة للمستخدم، يجب تغيير "Shivam Mamgain" إلى " [البريد الإلكتروني محمي]". نقوم بتشغيل الأمر التالي:

    ونتيجة لذلك، سيتم تغيير الإدخال.

    المذكرة: قيمة العمود اسمقد لا تكون فريدة، لذلك قد يتأثر أكثر من صف واحد بالأمر. لجميع المستخدمين حيث القيمة اسم= "شيفام مامجين"، الحقل بريد إلكترونيسيتم تغييره إلى " [البريد الإلكتروني محمي]". لتغيير خط معين، تحتاج إلى تتبعه باستخدام الحقل بعد معرف. قمنا بتعريفه على أنه المفتاح الأساسي، الذي يضمن تفرد القيمة.