دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۴
  • آبان

جلسه ۲۶ : دستور PRAGMA در SQLite

  • دسته‌بندی‌ها :
جلسه ۲۶ : دستور PRAGMA در SQLite
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. دستور PRAGMA در SQLite دستور ویژه ای است که برای کنترل انواع متغیرهای محیطی و وضعیت های flag ها در محیط SQLite مورد استفاده قرار می گیرد. شما می توانید مقدار دستور PRAGMA را خوانده و آن را بر اساس نیاز در شرایط مختلف به مقدار مورد نظر خود تغییر دهید. برای آشنایی بیشتر با کاربردهای دستور PRAGMA در SQLite و حالات مختلف آن در ادامه ی این مباحث با ما همراه باشید.

      دستور PRAGMA در SQLite

      در این آموزش شما با سینتکس و ویژگی های مختلف دستور PRAGMA در SQLite آشنا خواهید شد.

      سینتکس دستور PRAGMA در SQLite

      همانطور که گفتیم دستور PRAGMA در SQLite ویژگی های مختلفی دارد که در ادامه سینتکس هر یک را بررسی می کنیم.

      برای دریافت مقدار جاری PRAGMA از سینکس زیر استفاده می شود :

      مثال : 

      برای تنظیم مقدار جدید در PRAGMA از سینتکس زیر استفاده می شود :

      مثال : 

      در تنظیم حالت می توان از نام یا مقدار عددی استفاده کرد، اما در هر حال مقدار بازگشتی همیشه عددی خواهد بود.

      auto_vacuum در PRAGMA 

      auto_vacuum در PRAGMA حالت auto-vacuum را دریافت کرده و یا تنظیم می کند.

      سینتکس auto-vacuum در PRAGMA به صورت زیر است :

      مثال : 

      mode می تواند شامل حالت های جدول زیر باشد :

      ردیفمقدار Pragma و توضیحات آن
      ۱

      ۰ or NONE

      Auto-vacuum غیر فعال است، این یعنی اندازه ی فایل دیتابیس هرگز کوچکتر از اندازه ای که با دستور VACUUM مشخص شده نمی شود.

      ۲

      ۱ or FULL

      حالت Auto-vacuum فعال است. و به صورت کاملا خودکار که اجازه می دهد که یک فایل دیتابیس تا حذف داده ها از دیتابیس، اندازه ی آن را کوچک تر کند.

      ۳۲ or INCREMENTAL

      حالت Auto-vacuum فعال است. اما باید به صورت دستی فعال شود. در این حالت داده های مرجع نگهداری شده و صفحات رایگان لیست می شوند.

      این صفحات را می توان با استفاده از incremental_vacuum pragma برگرداند.

      cache_size در PRAGMA 

      cache_size در pragma  حداکثر اندازه ی صفحه ی cache در حافظه را گرفته و یا به طور موقت تنظیم می کند.

      سینتکس cache_size در pragma به صورت زیر است :

      مثال : 

      مقدار pages تعداد صفحات cache را نشان می دهد. در حالت پیش فرض صفحات cache به تعداد ۲۰۰۰ صفحه بوده و حداقل تعداد ۱۰ صفحه است.

      case_sensitive_like در PRAGMA 

      case_sensitive_like در pragma حساسیت به حروف را در عبارات LIKE دستکاری می کند.

      این pragma در حالت پیش فرض false است، که به این معنی است که عملگر LIKE نسبت به حروف حساس نیست.

      سینکس case_sensitive_like به این صورت است :

      مثال : 

      هیچ راهی برای پرس و جو برای وضعیت فعلی این pragma نیست.

      count_changes در PRAGMA 

      count_changes در PRAGMA مقادیر بازگشتی را از دستورات دستکاری داده ها از جمله INSERT, UPDATE و DELETE گرفته یا تنظیم می کند.

      سینتکس این pragma به این صورت است :

      مثال : 

      این pragma در حالت پیش فرض false بوده و این دستورات هیچ چیزی را برنمی گردانند.

      اگر این pragma روی true تنظیم شود، یک سطر، یک ستون جدول که شامل یک مقدار عددی که سطر را با دستور آن نشان می دهد برمی گرداند.

      database_list در PRAGMA 

      database_list در PRAGMA برای لیست کردن تمام دیتابیس های attach شده استفاده می شود.

      سینتکس database_list در PRAGMA به صورت زیر است :

      مثال : 

      این PRAGMA یک جدول سه ستونی را با یک سطر در هر باز شده، یا دیتابیس attach شده شماره توالی دیتابیس را می دهد.

      این شماره نام دیتایس و فایل های مرتب آن است.

      encoding در PRAGMA

      encoding در PRAGMA چگونگی encod و ذخیره ی رشته ها را در دیتابیس کنترل می کند.

      سینتکس encoding به صورت زیر است :

      مثال : 

      مقدار format در سینتکس فوق، می تواند یکی از مقادیر UTF-8, UTF-16le یا UTF-16be باشد.

      freelist_count در PRAGMA 

      freelist_count در PRAGMA یک عدد را برمی گرداند که نشان می دهد چه تعداد از صفحات دیتابیس در حال حاضر علامت گذاری شده که به طور رایگان در دسترس باشند.

      سینتکس freelist_count در PRAGMA به صورت زیر است :

      مثال : 

      مقدار format در سینتکس فوق، می تواند یکی از مقادیر UTF-8, UTF-16le یا UTF-16be باشد.

      index_info در PRAGMA 

      index_info در PRAGMA اطلاعاتی را در مورد index دیتابیس برمی گرداند. سینتکس index_info در PRAGMA به صورت زیر است:

      مثال : 

      مجموعه نتیجه شامل یک ردیف برای هر ستون موجود در توالی ستون، index ستون در جدول و نام ستون است.

      index_list در PRAGMA 

      index_list در PRAGMA تمام index های مرتبط با یک جدول را لیست می کند.

      سینتکس index_list در PRAGMA به صورت زیر است :

      مثال : 

      مجموعه نتیجه شامل یک ردیف برای هر صفحه ی نخست، فهرست دنباله، فهرست نام و flag را نشان می دهد که index آن منحصر به فرد است یا خیر.

       journal_mode در PRAGMA 

      journal_mode در PRAGMA حالت journal را گرفته و یا چگونگی ذخیره و پردازش فایل journal را تنظیم می کند.

      سینتکس journal_mode در PRAGMA به صورت زیر است :

      مثال : 

      ۵ حالت journal که پشتیبانی می شود به شرح زیر است :

      ردیفمقدار Pragma و توضیحات آن
      ۱DELETE

      این حالت پیش فرض است که در نتیجه ی transaction فایل journal حذف می شود.

      ۲TRUNCATE

      فایل journal به طول صفر بایت کوتاه می شود.

      ۳PERSIST

      فایل journal در محل باقی می ماند، اما header در فایل journal دیگری رونویسی می شود.

      ۴MEMORY

      رکورد journal در حافظه نگهداری می شود.

      ۵OFF

      رکورد journal نگهداشته نمی شود.

      max_page_count در PRAGMA 

      max_page_count در PRAGMA حداکثر تعداد صفحه ی یک دیتابیس را گرفته و یا تنظیم می کند.

      سینتکس max_page_count در PRAGMA :

      مثال : 

      در حالت پیش فرض مقدار ۱,۰۷۳,۷۴۱,۸۲۳ که یک صفحه ی گیگا است، به این معنی که اگر اندازه ی پیش فرض صفحه ۱ KB باشد، دیتابیس ها اجازه می دهند که این اندازه، تا ۱ ترابایت بزرگ شود.

      page_count در PRAGMA 

      page_count در PRAGMA شماره صفحه ی جاری در دیتابیس را برمی گرداند.

      سینتکس page_count در PRAGMA :

      مثال : 

      page_size در PRAGMA 

      page_size در PRAGMA اندازه ی صفحات دیتابیس را گرفته و یا تنظیم می کند، که سینتکس آن به صورت زیر است:

      مثال : 

      در حالت پیش فرض، اندازه های مجاز ۵۱۲, ۱۰۲۴, ۲۰۴۸, ۴۰۹۶, ۸۱۹۲, ۱۶۳۸۴ و ۳۲۷۶۸ بایت است.

      تنها راه تغییر دادن اندازه ی صفحات دیتابیس موجود این است که اندازه ی صفحه را تغییر داده و بلافاصله VACUUM را در دیتابیس اعمال کنید.

      parser_trace در PRAGMA 

      parser_trace در PRAGMA چاپ شدن وضعیت خطایابی که به دستورات SQL تحلیل می شود را کنترل می کند.

      سینتکس parser_trace در PRAGMA :

      مثال : 

      در حالت پیش فرض، این PRAGMA حالت false دارد،اما زمانیکه با تنظیم به حالت true فعال شود، این وضعیت در تحلیل دستورات SQL چاپ می شود.

      recursive_triggers در PRAGMA 

      recursive_triggers در PRAGMA قابلیت recursive trigger را گرفته و یا تنظیم می کند.

      اگر recursive triggers فعال نباشد، یک عمل trigger سایر trigger را تحت ثاثیر قرار نمی دهد.

      سینتکس recursive_triggers در PRAGMA به صورت زیر است :

      مثال : 

      schema_version در PRAGMA 

      schema_version در PRAGMA ارزش نسخه ی طرح کلی را که در header دیتابیس ذخیره شده است را گرفته یا تنظیم می کند.

      سینتکس schema_version در PRAGMA به صورت زیر است :

      مثال : 

      این یک مقدار ۳۲-bit علامتدار است که track تغییرات طرح کلی را نگه می دارد.

      هر زمان که یک دستور تغییر طرح کلی اجرا شده باشد، (مانند CREATE یا DROP و…) این مقدار افزایش می یابد.

      secure_delete در PRAGMA 

      secure_delete در PRAGMA چگونگی حذف محتوا از دیتابیس را کنترل می کند، که سینکس آن به صورت زیر است :

      مثال : 

      مقدار پیش فرض برای flag حذف ایمن معمولا off است، اما این مقدار را می توان با گزینه ی SQLITE_SECURE_DELETE تغییر داد.

      sql_trace در PRAGMA 

      sql_trace در PRAGMA برای روگرفت نتایج ردیابی SQL به صفحه نمایش استفاده می شود.

      سینتکس sql_trace در PRAGMA :

      مثال : 

      synchronous در PRAGMA 

      synchronous در PRAGMA حالت همگام سازی دیسک جاری را گرفته و یا تنظیم می کند.

      همچنین چگونگی رایت داده ها را در دیسک فیزیکی را کنترل می کند، که سینتکس آن به صورت زیر است:

      مثال : 

      SQLite از حالت های همگام سازی زیر پشتیبانی می کند :

      ردیفمقدار Pragma و توضیحات آن
      ۱

      ۰ or OFF

      هیچیک همگام سازی نمی شوند.

      ۲

      ۱ or NORMAL

      پس از هر توالی عملیات بحرانی دیسک، همگام سازی می شود.

      ۳

      ۲ or FULL

      پس از هر عملیات بحرانی دیسک، همگام سازی می شود.

      temp_store در PRAGMA

      temp_store در PRAGMA حالت ذخیره برای فایل های دیتابیس موقت را گرفته و یا ذخیره می کند.

      سینتکس temp_store در PRAGMA :

      مثال : 

      SQLite از حالت های ذخیره ی زیر پشتیبانی می کند :

      ردیفمقدار Pragma و توضیحات آن
      ۱

      ۰ or DEFAULT

      از زمان کامپایل پیش فرض معمولی فایل استفاده می کند.

      ۲

      ۱ or FILE

      استفاده از ذخیره سازی فایل بر اساس…

      ۳

      ۲ or MEMORY

      استفاده از ظرفیت ذخیره سازی حافظه.

      temp_store_directory در PRAGMA 

      temp_store_directory در PRAGMA محل مورد استفاده برای فایل های دیتابیس موقت را گرفته و یا تنظیم می کند.

      سینتکس temp_store_directory در PRAGMA به صورت زیر است :

      مثال : 

      user_version در PRAGMA 

      user_version در PRAGMA مقدار نسخه ی user-defined را که در header دیتابیس ذخیره شده را گرفته و یا تنظیم می کند.

      سینتکس user_version در PRAGMA :

      مثال : 

      این یک مقدار علامتدار ۳۲-بیتی است که می تواند توسط برنامه نویس برای نسخهٔ ردیابی هدف، تنظیم شود.

      writable_schema در PRAGMA 

      writable_schema در PRAGMA قابلیت مدیریت جداول سیستم را گرفته و یا تنظیم می کند،سینتکس آن به صورت زیر است :

      مثال : 

      اگر این pragma تنظیم شود، جداولی که با sqlite_ شروع شده را می توان از جمله جدول sqlite_master را ایجاد کرده و یا تغییر داد.

      در هنگام استفاده از این pragma مراقب باشید چراکه می تواند منجر به نابودی دیتابیس شود.

      کلام آخر

      دستور PRAGMA در SQLite دستور ویژه ای است که برای کنترل انواع متغیرهای محیطی و وضعیت فعلی flag ها در محیط SQLite مورد استفاده قرار می گیرد. این دستور اجازه ی دستکاری تنظیمات حساس دیتابیس را به شما می دهد.

      QR:  جلسه ۲۶ : دستور PRAGMA در SQLite
      به اشتراک بگذارید