با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. در مباحث قبلی چگونگی استخراج داده ها را از جداول SQLite بررسی کردیم و با روش انجام اینکار نیز آشنا شدیم، اما زمانیکه شما از دستورات شرطی از جمله WHERE برای استخراج بخشی از رکوردها از جداول استفاده می کنید، اگر مقادیر رکوردها NULL باشد ممکن است نتایج بازگشتی بدرستی انجام نشده باشد. برای جلوگیری از اینگونه مشکلات باید با چگونگی مدیریت مقادیر NULL در SQLite آشنایی داشته باشید که ما در ادامه ی این آموزش به آن پرداخته ایم.
در ادامه ی این مبحث شما را با دستورات کنترل مقادیر NULL در SQLite آشنا خواهیم کرد.
این سینتکس عدم ذخیره شدن مقادیر NULL در فیلدهای مشخص شده در جدول است :
1 2 3 4 5 6 7 | SQLite> CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); |
در سینتکس فوق NOT NULL مشخص می کند که فیلد مربوطه نباید مقادیر NULL را بپذیرد.
یک فیلد با مقدار NULL در واقع فیلدی است که در طول ذخیره مقادیر در جدول، هیچ مقداری برای آن در نظر گرفته نشده است.
مثال
مقادیر NULL در هنگام انتخاب داده از جدول می توانند مشکل ساز باشند، چرا که در هنگام مقایسه NULL با سایر مقادیر، نتیجه ناشناخته خواهد بود.
جدول COMPANY را به صورت زیر در نظر بگیرید :
1 2 3 4 5 6 7 8 9 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 |
با UPDATE به فیلدهایی در جدول COMPANY که مقادیر NULL را می پذیرند مقدار NULL اختصاص می دهیم:
1 | sqlite> UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7); |
سپس جدول COMPANY شامل رکوردهای زیر خواهد بود :
1 2 3 4 5 6 7 8 9 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 7 James 24 |
با IS NOT NULL، تمام رکوردهایی را که فیلد SALARY در آن NULL نیست را انتخاب می کنیم:
1 2 3 | sqlite> SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NOT NULL; |
کد فوق در SQLite نتیجه ی زیر را تولید خواهد کرد :
1 2 3 4 5 6 7 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 |
با IS NULL تمام رکوردهایی را که فیلد SALARY در آن NULL باشد را لیست می کنیم :
1 2 3 | sqlite> SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL; |
کد فوق در SQLite نتیجه ی زیر را تولید خواهد کرد :
1 2 3 4 | ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 6 Kim 22 7 James 24 |
فیلدهایی که در هنگام درج داده ها در دیتابیس مقدار نمی گیرند، مقدار پیش فرض NULL را خواهند گرفت، پس بهتر است در هنگام استخراج داده ها از جداول دیتابیس با استفاده از دستورات مدیریتی مقادیر NULL در SQLite ابتدا از NULL بودن با نبودن فیلدها اطمینان حاصل کنید.