اطلاعیه

Collapse
هیچ اطلاعیه ای هنوز ایجاد نشده است .

آموزش گام به گام SQLite

Collapse
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
new posts

  • آموزش گام به گام SQLite

    در این بخش به آموزش ساختار های کلی SQL و Syntax های SQLite میپردازیم.

    برای برنامه نویسی برای iphone به دانش جامعی درباره این پایگاه داده رابطه ای نیاز خواهیم داشت.
    البته لازم به ذکر است که هر برنامه ای که برای iphone نوشته میشود نیاز به پایگاه داده ندارد. هر برنامه ای که نیاز دارد تا داده را مثلا تنظیماتی که کاربر انجام میدهد را در جایی ذخیره کند به پایگاه داده نیاز دارد.

    SQLite یک پایگاه داده کوچک (حجمی در حدود 500 KB) که به زبان C در قالب یک کتابخانه (Library) نوشته شده است و از پایگاه داده*های RDBMS(Relational Data Base Management System)a به حساب می*آید. این پایگاه داده بدون لیسانس (Public Domain) ، آزاد و open source منتشر می*شود.

    SQLite در تاریخ 17August , 2000 توسط آقای D. Richard Hipp منتشر شد و آخرین ورژن تایید شده آن 3.6.13 در April 2009 به دنیای تکنولوژی ارائه شد.

    سیستم عامل هایی که از SQLite پشتیبانی می کنند عبارتند از :
    Windows - Mac OS X - Linux - BSD - UNIX - AmigaOS - Symbian - z/OS 1

    مشخصات بنیادین SQLite :

    1) پشتیبانی از(Atomicity, Consistency, Isolation, Durability)ACID مجموعه ای از خواص است که پردازش بی خطای transaction ihd پایگاه داده را تضمین میکند.
    2) توانایی مجتمع سازی رابطه از طریق Trigger ها
    3)transaction از طریق Trigger ها
    4) پشتیبانی از Unicode
    5) رابط SQL
    6)از Union - Intersect - Except - Inner joins - Inner selects - Blobs and Clobs - LEFT Outer joins پشتیبانی میکند.

    محدودیت ها و مشخصه های نوع ها :
    1) بیشترین حجم فایل پایگاه داده = 32 ترا بایت (2 بتوان 30 صفحه که هر صفحه حد اکثر 32KB باشد)
    2) 2000 ستون در هر ردیف یا Record
    (3 حداکثر سایز Blob / Clob برابر 1GB
    (4 حداکثر سایز CHAR برابر 1GB
    (5 حداکثر سایز Number برابر 64KB


    مزیت هایSQLite :

    1) پایگاه داده ای تک فایلی با حجم کم با عدم وابستگی به سیستم عامل.
    2) دارای محیط مدیریتی خوب که تمامی امکانات آن را پوشش می*دهند.

    عیب مهم: تنها مشکل بزرگ عدم پشتیبانی از تمامی امکانات استاندارد sql هست که ضعف بزرگ اون محسوب می*شود.
    ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 10-07-2009, 10:24 PM
    من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

    فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
    (كوروش كبیر)

    Life is Random.!

  • #2
    بخش اول - نرمال سازی

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

    چند اصطلاح:

    Field هر ستون جدول فیلد میباشد
    Record به هر ردیف از جدول یک رکورد گفته میشود.
    Primary key یا کلید اصلی هر جدول از پایگاه داده یک کلید اصلی دارد که مقدار آن در هر رکورد غیر قابل تکرار و منحصر به فرد برای آن رکورد است و مبنای ارتباط جداول کلید اصلی آنها میباشد. نکته کلید اصلی یک جدول میتواند بیش از یک فیلد باشد. مقدار NULL یا تهی نمی پذیرد.
    Foreign Key کلید خارجی بخشی از کلید اصلی است که با کلید صلی جدولی دیگر ارتباط دارد.
    Cluster آخرین رکورد هر صفحه
    Wild Card(-) معادل یک کاراکتر
    Wild Card(%) معادل چند کاراکتر
    NULL محتوی تهی
    Scope(\) زمانی که این کاراکتر قبل از Wild Card بیاید کامایلر کد Wild Card را به صورت کاراکتر به حساب میاورد و خاصیت عملگری از آن گرفته میشود.
    Aggregate به توابع گروهی مثل AVG -MAX - MIN - Count اگریگیت فانکشن گفته میشود.


    نکته آنالیز پایگاه داده به بررسی و نیاز سنجی فیلد ها مرتبط است که آن براساس طرح اصلی برنامه ای که پایگاه داده ها برای آن طراحی و پیاده سازی میشود ، می باشد.

    قانون اول نرمال سازی: (1st Normalization Step)
    اولین نکته ای که باید در نظر گرفته شود Atomic بودن است. یعنی هر یک از فیلدهای جدول فقط و فقط باید حاوی یک مقدار باشد.

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

    راه حل برای فرم اول: انتقال گروه تکرارشونده به عنوان جرعی از کلید اصلی به یک جدول جدید.
    جرء دوم کلید اصلی جدول جدید کلید اصلی جدول فعلی میباشد.


    قانون دوم نرمال سازی: (2nd Normalization Step)

    در این سطح از نرمال سازی فیلدهای غیر کلید باید به تمام قسمت های کلید اصلی وابسته باشد. (تناظر یک به یک بین هر فیلد غیر کلید با تمام اجزاء کلید اصلی جدول)

    راه حل : انتقال فیلد نا سازگار به یک جدول جدید به صورتی که کلید اصلی جدول جدید جزعی از کلید اصلی جدول فعلی باشد ( یعنی فیلدی که به فیلد غیر کلید وابستگی دارد)

    قانون سوم نرمال سازی: (3rd NormalizationStep)

    در این سطح بررسی می شود که هیچ یک از فیلدهای غیر کلید به فیلد غیرکلید دیگری وابستگی نداشته باشد.
    نکته اگر در جدولی ترکیبی از چند فیلد به عنوان کلید اصلی انتخاب شد هر یک از فیلد های تشکیل دهنده کلید اصلی به تنهایی فیلد غیر کلید میباشند.

    فرم سوم نرمال سازی از داشتن جداول متعدد در پایگاه داده که دارای کلید اصلی یکسان هستند جلو******ی می کند.

    راه حل: تلفیق کردن جداول متعدد و افزودن حداقل یک فیلد جدید.


    قانون چهارم نرمال سازی: (4th Normalization Step)

    از ایجاد روابط متعدد و n به n که گاهی اوقات به صورت روابط تکراری 1 به n ظاهر میشوند در جدول جلو گیری می کند.


    قانون پنجم نرمال سازی: (5th Normalization Step)

    به منظور خورد کردن تمام فیلد ها تا رسیدن به Atomic ترین حالت ممکن برای برطرف کردن همه افزونگی های table استفاده می شود.

    سازگار کردن جدول با فرآیند گسترده شدن و تغییر پذیری .

    یکی از مزایای نرمال کردن پایگاه دادها جلو گیری از افزونگی و زیاد شدن بی مورد حجم Database میباشد.
    ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 11-07-2009, 05:14 PM
    من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

    فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
    (كوروش كبیر)

    Life is Random.!

    نظر


    • #3
      بخش دوم : دستورات sql

      ساختنtable یا جدول در DataBase



      CREATE TABLE <TableName> (col1 type, col2 type,…)

      CREATE TABLE AddressBook (UID INTEGER PRIMARY KEY, Name VARCHAR(50), Family VARCHAR(50), address TEXT, phoneno TEXT)
      با استفاده از این دستور میتوانید جدولی با فیلد هاو نوع های مورد نظرتان بسازید.

      وارد کردن داده INSERT INTO



      INSERT INTO <TableName> VALUES (data1,data2,…)

      INSERT INTO AddressBook VALUES(1,'alireza','Enzevaee','tehran','091288888888')
      مقادیری را که در پرانتز های بعد از عبارت value آمده به ترتیب داخل فیلد ها قرار می گیرد.

      پاک کردن داده



      DELETE FROM <TableName> WHERE <Condition>

      DELETE FROM AddressBook WHERE Family='Alireza'
      بر روی آن فیلد هایی شرط بعد از where صادق است عملیات حذف صورت گیرد.

      اصلاح یا به روز رسانی داده UPDATE



      UPDATE <TableName> SET <column>=<value> WHERE<Condition>

      UPDATE AddressBook SET Family='Enzo' WHERE Family=='Enzevaee'
      بر روی آن رکورد هایی که شرط بعد از WHERE صادق میباشد عملیات بعد از SET صورت گیرد.

      انتخاب یا نمایش داده ها


      SELECT <Column> FROM <TableName> WHERE <Condition>

      SELECT * FROM AddressBook
      تمام رکورد های جدول AddressBook را به نمایش در می آورد.

      SELECT name, Family, phoneno FROM AddressBook WHERE name =“alireza”
      فیلدهای نام و نام خانوادگی و شماره تلفن تمام کسانی که نام آنها Alireza هست را از بانک در می آورد.

      * یک کاراکتر رزرو شده است به معنی تمام فیلدها استفاده میشود.
      -------------------------------
      col = نام ستون
      type = نوع مقادیری که در فیلد قرار میگیرد
      condition = شرط
      ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 16-07-2009, 02:39 PM
      من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

      فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
      (كوروش كبیر)

      Life is Random.!

      نظر


      • #4
        توابع Aggregate
        این توابع حاصل چندین دستور SQL هستند که بخاطر پر کاربرد بودن به عنوان یه تابع در کتابخانه توابع SQL قرار گرفته اند مثل SUM که عملیات جمع کردن مقادیر فیلدی را که به عنوان آرگومان به آن میدهیم را اجرا میکند، Count که عملیات شمارش تعداد رکوردهایی که از فیلدی که بعنوان آرگومان به آن داده میشود را انجام میدهد و Avg که میانگین فیلد آرگومانش را محاسبه میکند.

        تعداد رکورد های جدول را بر میگرداند
        SELECT count(*) FROM AddrssBook

        مجموعه مقادیر فیلد UID
        SELECT sum(UID) FROM AddressBook

        میانگین مقادیر فیلد UID
        SELECT avg(UID) FROM AddressBook

        باید توجه داشته باشید که زمانی که از دستور SELECT استفاده می کنید و بخشی از یک جدول را با شروطی که در دستور SELECT استفاده می کنید خود جدول دستخوش تغییر قرار نمی گیرد و اطلاعات حذف یا جابجا نمیشوند، در واقع یک View یا نما از آن ساخته میشود که برای هر فیلد آن یک Alias نیز میتوان در نظر گرفت.

        Alias نام مستعاری است که برای فیلد های یک View به جای نام اصلی فیلد متوان اختصاص داد . در مثال زیر Alias، CNTی است برای فیلد UID
        SELECT count(UID) as CNT , Family , phoneno FROM AddressBookGROUP BY Family ORDER BY phoneno

        GROUP BY دستوری است که به واسطه آن میتوان رکورد ها را در View ایجاد شده را گروه بندی کرد. مثال فوق بر اساس Family گروه بندی شده است
        ORDER BY دستوری است که به واسطه آن میتوان رکورد ها را در View ایجاد شده را بترتیب کرد. مثال فوق بر اساس CNT مرتب شده است که Alias ی است که مربوط به این نما بوده و در جودل نشانی از آن نیست.
        ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 11-07-2009, 10:17 AM
        من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

        فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
        (كوروش كبیر)

        Life is Random.!

        نظر


        • #5
          ترکیب یا ادقام چند جدول با استفاده از join

          عملگر های مقایسه ای SQLite عبارتند از '=', '<', '<=', '>=' , '=!', '>'میباشند.
          =! به معنی نا مساوی میباشد.

          انواع مختلفی از JOIN وجود دارد که از جمله آن ها میتوان به INNER JOIN و LEFT OUTER JOIN ها اشاره کرد که SQLite از آنها پشتیبانی می کند. اصولا JOIN برای بدست آوردن ترکیبی از یک یا چند جدول با خودش یا یک دیگر استفاده میشود.
          نکته: امکان ترکیب یک جدول با خودش از طریق INNER JOIN آمکان پذیر میباشد.

          تمرین

          فرض کنیم 2 جدول وجود دارد با نام های AddressBook1 و AddressBook2 میخواهیم ترکیبی از این دو جدول را بدست بیاوریم با فزض اینکه تمام رکورد هایی که نام یکسان دارند یا به عبارتی در نام مشترک دارند را در یک view نمایش دهد.



          SELECT a1.name , a1.family , a1.phoneno ,a2.name , a2.family , a2.phoneno
          FROM addressbook1 as A1 INNER JOIN addressbook2 as A2
          where a1.name = a2.name

          حاصل Query بالا :
          ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 11-07-2009, 02:03 PM
          من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

          فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
          (كوروش كبیر)

          Life is Random.!

          نظر


          • #6
            دستور alter table

            SQLite از محدود توانایی های دستور ALTER TABLE پشیبانی می کند. ALTER TABLEامکان rename کردن یک table یااضافه کردن یک ستون به جدول را در اختیار کاربر قرار می دهد . از توانایی های دیگر این درستور در SQLکه SQLite از آن پشتیبانی نمیکند میتوان به rename کردن یک ستون و پاک کردن یک ستون و پاک کردن قیدها اشاره کرد.



            ALTER Table addressbook2 ADD Column "phone_NUM"

            ALTER Table FIRSTDB.addressbook2 RENAME TO "addressbook_2"
            ویرایش توسط enzevaee : https://i-phone.ir/forums/member/1265-enzevaee در ساعت 16-07-2009, 12:36 PM
            من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

            فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
            (كوروش كبیر)

            Life is Random.!

            نظر


            • #7
              نوشته اصلی توسط enzevaee نمایش پست ها
              در این بخش به آموزش ساختار های کلی SQL و Syntax های SQLite میپردازیم.

              برای برنامه نویسی برای iphone به دانش جامعی درباره این پایگاه داده رابطه ای نیاز خواهیم داشت.
              البته لازم به ذکر است که هر برنامه ای که برای iphone نوشته میشود نیاز به پایگاه داده ندارد. هر برنامه ای که نیاز دارد تا داده را مثلا تنظیماتی که کاربر انجام میدهد را در جایی ذخیره کند به پایگاه داده نیاز دارد.

              SQLite یک پایگاه داده کوچک (حجمی در حدود 500 KB) که به زبان C در قالب یک کتابخانه (Library) نوشته شده است و از پایگاه داده*های RDBMS(Relational Data Base Management System)a به حساب می*آید. این پایگاه داده بدون لیسانس (Public Domain) ، آزاد و open source منتشر می*شود.

              SQLite در تاریخ 17August , 2000 توسط آقای D. Richard Hipp منتشر شد و آخرین ورژن تایید شده آن 3.6.13 در April 2009 به دنیای تکنولوژی ارائه شد.

              سیستم عامل هایی که از SQLite پشتیبانی می کنند عبارتند از :
              Windows - Mac OS X - Linux - BSD - UNIX - AmigaOS - Symbian - z/OS 1

              مشخصات بنیادین SQLite :

              1) پشتیبانی از(Atomicity, Consistency, Isolation, Durability)ACID مجموعه ای از خواص است که پردازش بی خطای transaction ihd پایگاه داده را تضمین میکند.
              2) توانایی مجتمع سازی رابطه از طریق Trigger ها
              3)transaction از طریق Trigger ها
              4) پشتیبانی از Unicode
              5) رابط SQL
              6)از Union - Intersect - Except - Inner joins - Inner selects - Blobs and Clobs - LEFT Outer joins پشتیبانی میکند.

              محدودیت ها و مشخصه های نوع ها :
              1) بیشترین حجم فایل پایگاه داده = 32 ترا بایت (2 بتوان 30 صفحه که هر صفحه حد اکثر 32KB باشد)
              2) 2000 ستون در هر ردیف یا Record
              (3 حداکثر سایز Blob / Clob برابر 1GB
              (4 حداکثر سایز CHAR برابر 1GB
              (5 حداکثر سایز Number برابر 64KB


              مزیت هایSQLite :

              1) پایگاه داده ای تک فایلی با حجم کم با عدم وابستگی به سیستم عامل.
              2) دارای محیط مدیریتی خوب که تمامی امکانات آن را پوشش می*دهند.

              عیب مهم: تنها مشکل بزرگ عدم پشتیبانی از تمامی امکانات استاندارد sql هست که ضعف بزرگ اون محسوب می*شود.
              In alan amoozseshe gam be gam bud?
              Kheili mofid bud.

              نظر


              • #8
                نوشته اصلی توسط khati نمایش پست ها
                in alan amoozseshe gam be gam bud?
                Kheili mofid bud.

                دوست عزیز اولا خوش آمدید به انجمن خودتون.
                دوما لطف کنید قوانین رو رعایت کنید و فارسی تایپ کنید.
                سوما تا گام به گام رو چی تعریف کنید این از نظر ما گام به گام هست اگر از نظر شما گام به گام نیست شما گام به گام، آهسته و شمرده بخونید.
                من آریایی ام، خدای من ایران، پیغمبر من کوروش، امام من داریوش، کتاب مقدسم شاهنامه، دستور دین من لوح کوروش کبیر، پرچم من درفش کاویانی، بهشت من آزادی، عید من مهرگان، دین من زرتشت، ذات من آریاییست، دشمنم تازیان، ذکرم پاینده ایران، مذهب من آریاییست، من آریایی ام

                فرمان دادم بدنم را بدون تابوت و موميايي به خاك بسپارند تا اجزاء بدنم ذرات خاك ايران را تشكيل دهد
                (كوروش كبیر)

                Life is Random.!

                نظر


                • #9
                  با توجه به اهمیت این مبحث باید خواهش کنم یه برنامه نویسی یه برنامه در ایکس کد برای این که مطلب درست مفهوم بشه برای آموزش بگذارید

                  نظر


                  • #10
                    اقا SQLite دیگه منقرض شده واسه دوران قاجاره الان دیگه همه از core data استفاده میکنن

                    نظر


                    • #11
                      درسته اگر دوستمون به تاریخ تاپیک هم نگاه می کرد متوجه میشد حداقل مربوط به ۲ سال پیش هست.

                      نظر


                      • #12
                        نوشته اصلی توسط FaridRashidi نمایش پست ها
                        اقا SQLite دیگه منقرض شده واسه دوران قاجاره الان دیگه همه از core data استفاده میکنن
                        آهااااااااااااااااا
                        یکی پیدا شد که داره حرف دل ما رو میزنه

                        آقا من چند تا تاپیک باز کردم واسه این که مشخص کنن برام که sqlite بهتره یا core data و مزیت هاش را برام بگن ولی هیچی جوابی نگرفتم
                        و این که میشه هر کاری که با sqlite کرد با core data هم انجام داد ؟
                        و مهمتر این که میشه sqlite را کانورت کرد به core data ؟؟

                        نظر

                        صبر کنید ..
                        X