توابع
استفاده از توابع SQL اين امكان را ميدهد تا كارهاي خارقالعادهاي مثل جمع يك ستون يا تغيير تمام كاراكترهاي يك رشته به حروف بزرگ را انجام دهيم.
توابع، بطور قابل ملاحظهاي توانايي ما را در پردازش اطلاعاتي كه بازيابي ميكنيم، با استفاده از توابع اوليه SQL بالا ميبرد.
کد:
SELECT function (column)
FROM table – name
WHERE condition
توابع جمعي
اين توابع گاهي اوقات تحت عنوان توابع گروهي ناميده ميشوند. نتيجه اين توابع مقداري است كه از مقادير يك ستون حاصل ميشود.
توجه ـ نميتوان از توابع جمعي (گروهي) در شبه جمله WHERE استفاده كرد.
COUNT : اين تابع تعداد رديفهايي را برميگرداند كه شرايط موجود در جلوي شبه جمله WHERE را تامين ميكنند.
SUN : اين تابع مجموع مقادير يك ستون عددي را برميگرداند.
AVG : تابع AVG ميانگين يك ستون را محاسبه ميكند.
AVG نيز مانند تابع SUN فقط براي فيلدهاي عددي بكار ميرود.
MAX : اين تابع بزرگترين مقدار يك ستون را پيدا ميكند.
تابع MAX هم با اعداد كار ميكند و هم با رشتههاي كاراكتري.
MIN : تابع MIN شبيه تابع MAX است با اين تفاوت كه كوچكترين مقدار يك ستون را برميگرداند. اين تابع نيز هم با اعداد كار ميكند و هم با رشتههاي كاراكتري.
VARIANCE : مربع انحراف استاندارد را نشان ميدهد كه عددي حياتي براي بيشتر محاسبات آماري است. اين تابع از توابعي است كه فقط با فيلدهاي عددي كار ميكند.
STDDEV : اين تابع مقدار انحراف استاندارد يك ستون از اعداد را پيدا ميكند.
اين تابع نيز تنها با فيلدهاي عددي كار ميكند و وقتي با رشته كاركتري مواجه ميشود، يك پيغام اشتباه ميفرستد.
توابع تاريخ و زمان
ما در تمدني زندگي ميكنيم كه توسط زمان و تاريخ اداره ميشود و بيشتر كاربردهاي SQL داراي توابعي براي فايق آمدن بر اين مفاهيم هستند.
تذكر ـ اين توابع از نوع داده Date استفاده ميكنند.
ADD – MONTHS : اين تابع تعدادي ماه به تاريخ مشخصي اضافه ميكند. بطور مثــال ممكن است مطلب فوقالعادهاي اتفاق افتاده باشد و پروژهاي براي مدت دو ماه متوقف شده باشد و حالا اگر بخواهيم برنامهريزي جديدي ارائه دهيم، از اين تابع استفاده ميكنيم.
LAST – DAY : اين تابع، آخرين روز يك ماه بخصوص را پيدا ميكند.
MONTHS – BETWEEN : اگر بخواهيم بدانيم كه چند ماه بين ماههاي x و y قرار ميگيرد، از اين تابع استفاده ميكنيم. اين تابع به ترتيب قرار دادن ماهها حساس است بنابراين بطور مثــال ميتوان از يك نتيجه منفي براي تعيين اينكه آيا تاريخي قبل از تاريخ ديگري اتفاق افتاده است يا نه، استفاده كرد.
NEW – TIME : اگر بخواهيم زمان را براساس زمان منطقهاي تطبيق دهيم، بايد از اين تابع استفاده كنيم. در جدول صفحه بعد، زمان مناطق موردنظر كه با اين تابع قابل استفاده هستند، آورده شده است:
توابع رياضي
بسياري از اطلاعات كه از پايگاه دادهها بازيابي ميكنيم نياز به محاسبات رياضي دارند. نمونههايي از توابع رياضي عبارتند از: ABS, CEIL, DLOOR, SIN, COS, TAN, SINH, COSH, EXP, LN, LOG, MOD, POWER, SIGN, SQRT, و ...
توابع كاراكتري
بسياري از نسخههاي SQL امكان استفاده از توابع كاراكتري و رشتهاي را فراهم ميآورند.
CHR : اين تابع، كاراكتر معادل عدد داده شده در آرگومان را برميگرداند. كاراكتري كه برگردانده ميشود بستگي به مجموعه كاراكترهاي پايگاه داده مورد استفاده (مثلاً ASCII و ...) دارد.
CONCAT : اين تابع همان عمل عملگر || را انجام ميدهد. (دو رشته را به هم متصل ميكند).
INITCAR : اين تابع اولين حرف يك كلمه را به حرف بزرگ و ساير حروف كلمه را به حروف كوچك تبديل ميكند.
LOWER : اين تابع تمام كاراكترها را به حروف كوچك تبديل ميكند.
UPPER : اين تابع عكس تابع LOWER عمل ميكند. (تمام كاراكترها را به حروف بزرگ تبديل ميكند).
RPAD , LPAD : حداقل 2 و حداكثر 3 آرگومان رشته كاراكتري است كه عمليات روي آن انجام ميشود. آرگومان دوم، تعداد كاراكتري است كه بايد اضافه شود و آرگومان سوم كه اختياري نيز ميباشد، نشان دهنده كاراكتري است كه بايد اضافه شود. پيش فرض سومين آرگومان بلانك (blank) يا ميتواند يك كاراكتر تنها و يا رشتهاي از كاراكترها باشد.
RTRIM , LTRIM : حداقل يك و حداكثر دو آرگومان دارند. اولين آرگومان يك رشته كاراكتري است و دومين آرگومان كه اختياري نيز ميباشد يا يك كاراكتر است يا يك رشته كاراكتري و يا پيش فرضاش يك بلانك (blank) است. اگر از آرگومان دوم استفاده كنيم و بلانك نيز نباشد، توابع TRIM كاراكترها را مياندازند. (حذف ميكنند)
REPLACE : كاراكتري را به جاي كاركتر ديگري در يك رشته كاراكتري جايگزين ميكند. اين تابع سه آرگومان دارد. اولين آرگومان، رشته مورد جستجو را مشخص ميكند. دومين آرگومان كليد جستجو است و آخرين آرگومان، رشته جايگزين اختياري است. اگر سومين آرگومان نوشته نشود و يا بلانك (blank) درنظر گرفته شود، هر نمونه از كليد جستجو كه در داخل رشته جستجو ميشود، برداشته شده و به جاي آن چيزي جايگزين نميگردد. اگر آرگومان سوم را داشته باشيم، اين آرگومان به جاي هر نمونه از كليد جستجو در رشته موردنظر جايگزين خواهد شد. اگر دومين آرگومان خالي باشد، رشته موردنظر بدون تغيير باقي خواهد ماند.
SUBSTR : اين تابع سه آرگومان اين امكان را ميدهد كه قطعهاي از يك رشته را بتوان انتخاب نمود. اولين آرگومان، رشته موردنظر است. دومين آرگومان امكان اولين كاراكتر رشته را مشخص ميكند. سومين آرگومان تعداد كاراكتري را كه بايد انتخاب شود را نشان ميدهد. اگر در دومين آرگومان از عدد منفي استفاده كنيم، نقطه شروع با شمردن از انتها شروع ميشود. اگر آرگومان سوم را نداشته باشيم، باقيمانده رشته برگردانده ميشود.
TRANSLATE : اين تابع سه آرگومان دارد: رشته موردنظر، رشته FROM و رشته TO. عناصر رشته موردنظر كه در رشته FROM رخ ميدهد، به عناصر وابسته در رشته TO تبديل ميشود.
INSTR : با استفاده از اين تابع، محل وجود يك رشته كاراكتري در داخل رشتهاي ديگر مشخص ميشود. اولين آرگومان، رشته موردنظر ميباشد. آرگومان دوم، الگوي موردنظر است. سومين و چهارمين آرگومان اعدادي هستند كه شروع جستجو و تعداد كاراكتر مورد جستجو را نشان ميدهد.
تذكر ـ پيش فرض سومين و چهارمين آرگومان يك است. اگر سومين آرگومان منفي باشد، شروع جستجو از انتهاي رشته انجام خواهد شد.
LENGTH : اين تابع طول يك رشته كاراكتري را برميگرداند.
توابع تبديلي
اين توابع، راههاي سادهاي براي تبديل يك نوع داده به نوع ديگري از داده را ارائه ميدهند.
TO – CHAR : اين تابع، يك عدد را به كاراكتر تبديل ميكند.
توجه ـ ممكن است برخي از نسخههاي SQL از اين تابع جهت تبديل ساير انواع داده به نوع كاراكتري استفاده كنند (مثل Date به كاراكتر) و يا از فرمت ديگري براي اين تابع و آرگومانهاي آن استفاده نمايند.
TO – NUMBER : اين تابع يك رشته عددي را به يك عدد تبديل ميكند.
جملات پردازش دادهها
تا اين مرحله ياد گرفتيم كه چگونه دادهها را از پايگاه دادهاي با استفاده از دستور SELECT بازيابي كنيم. بعد از اينكه دادهها بازيابي شد، آن را ميتوانيم در يك برنامه كاربردي بكار برده و يا آن را تصحيح كنيم. جملات زير اين امكان را به ما ميدهند تا دادههاي داخل يك جدول پايگاه اطلاعاتي را پردازش كنيم:
- جمله INSERT (درج)
- جمله UPDATE (بهنگام سازي)
- جمله DELETE (حذف)
محصولاتي مثل اكسس، dBase IV يا فاكس پرو به شكل بسته نرمافزاري داراي ابزار مناسبي براي ورود، تصحيح و حذف ركوردهاي پايگاه دادهاي ميباشند. يكي از دلايلي كه SQL جملات پردازش دادهها را تهيه كرده است اين است كه SQL در درجه اول به همراه برنامههاي كاربردي استفاده ميشود و اين امكان را فراهم ميآورد تا با استفاده از ابزار كاربردي خود دادهها را تصحيح كنيد و برنامه نويس SQL نياز دارد كه دادهها را با استفاده از SQL به پايگاه دادهاي برگرداند. به علاوه، بيشتر سيستمهاي بزرگ پايگاه دادهها براي اين طراحي نشدهاند كه فقط ذهنيات طراح و برنامهنويس را دربرگيرند، بلكه اين سيستمها براي اين طراحي شدهاند كه در حجم بالا و در محيطهاي چند كاربره كار نمايند. طراحي اوليه در چنين سيستمهايي متكي به پرس و جوي بهينه و موتورهاي بازيابي دادههاست.
بيشتر سيستمهاي پايگاه دادهاي رابطهاي ابزاري براي صدور و ورود دادهها تهيه كردهاند. اين دادهها معمولا به شكل يك فايل متن محدود شدهاي ذخيره ميشوند. اغلب يك ساختار فايل ذخيره شده شامل اطلاعاتي درباره جدولي است كه وارد شده است. ابزاري مثل SQL * Loader در اوراكل BCP در SQL Seever، Import / Export در اكسس مايكروسافت.
NEXT – DAY : اين تابع نام اولين روز هفته كه مساوي با تاريخ بخصوصي است و يا بعد از تاريخ معيني ميآيد را بدست ميآورد.
SYSDATE : اين تابع تاريخ و زمان سيستم را برميگرداند.
- - - Updated - - -
درج دادهها با استفاده از جمله INSERT
جمله INSERT اين امكان را به ما ميدهد تا دادهها را وارد پايگاه دادهاي كنيم. اين جمله ميتواند به دو جمله تقسيم شود:
کد:
INSERT … VALUES
INSERT … SELECT
در يك ركورد با استفاده از INSERT … VALUES
نحوه نگارش جمله INSERT … VALUES دادهها را به داخل يك جدول به شكل يك ركورد درج ميكند. اين جمله براي عمليات كوچكي كه درگير چند ركورد است، مناسب ميباشد. نحوه نگارش اين جمله به شكل زير است:
کد:
INSERT INTO table – name (column – namel, column – name2, …)
VALUES (nalue1 , value2, …)
فرمت اصلي جمله INSERT … VALUES با استفاده از ستونهايي كه مشخص نمودهايم يك ركورد به جدول اضافه ميكند و مقادير مربوطه را به داخل اين ستونها اضافه مينمايد.
در هنگام استفاده از اين جمله سه قاعده را بايد در موقع اضافه نمودن دادهها به جدول درنظر بگيريم:
- 1) بايد نوع داده مقادير بكار رفته با نوع داده فيلدهايي كه اضافه شدهاند يكسان باشد.
- 2) اندازه دادهها بايد در قالب ستون گنجانده شوند. مثلا يك رشته 80 كاراكتري نميتواند در داخل يك ستون 40 كاراكتري اضافه شود.
- 3) مكان داده در VALUES بايد مطابق مكان ستوني باشد كه بايد داده به آن ستون اضافه شود. (يعني اولين مقدار بايد به داخل اولين ستون و دومين مقدار به دومين ستون و ... اضافه شود).
توجه ـ در جمله INSERT، در پروژه های SQL Server نام ستون الزامي نيست و اگر نام ستون قيد نشده باشد SQL مقادير را بر طبق شماره ستونهاي آنها قرار ميدهد. به عبارت ديگر، SQL اولين مقدار را در اولين ستون و دومين ستون را در دومين ستون و الي آخر درج ميكند.
کد:
INSERT INTO table – name
VALUES (value1, value2, …)
درج چندين ركورد با استفاده از جمله INSERT … SELECT :
جمله INSERT … SELECT هنگامي كاربرد دارد كه بخواهيم ركوردهاي زيادي را به يك جدول اضافه كنيم. در چنين حالتي جمله INSERT … SELECT خيلي مفيد است و اين امكان را به برنامه نويس ميدهد تا اطلاعاتي را از جدولي يا گروهي از جدولها به داخل جدول ديگر منتقل كند.
نحوه نگارش جمله INSERT … SELECT بصورت زير است:
کد:
INSERT INTO table – name (column – namel, column – name2, …)
SELECT column – namel column – name2, …
FROM table – name
WHERE seaech – condition
در جمله INSERT … SELECT قواعد زير وجود دارد:
- 1) جمله SELECT نميتواند رديفهايي از جدول را انتخاب كند كه در حال درج در آن هستيم.
- 2) تعداد ستونهاي جمله INSERT INTO بايد مساوي با تعداد ستونهاي برگشتي از جمله SELECT باشد.
- 3) نوعت دادهها در جمله INSERT INTO بايد مساوي با نوع دادههاي ستونهاي برگشتي از جمله SELECT باشد.
استفاده ديگر جمله INSERT … SELECT بازگرداندن جدولي است كه شما آن را حذف و يا ايجاد كردهايد. (تهيه Back Up)
کد:
SELECT *
INTO new – table – name
FROM original – table – name
و يا:
INSERT INTO new – table – name
SELECT *
FROM original – table – name
حال ميتوانيم تغييرات موردنظر را در جدول اصلي با خيالي راحت اعمال نماييم.
تغيير نوع دادههاي موجود با استفاده از جمله UPDATE
هدف از جمله UPDATE تغيير مقادير موجود ركوردهاست. نحوه نگارش اين جمله به شكل زير است:
کد:
UPDATE table – name
SET column – namel = new – valuel [ , column – name2 = new – value2, …]
WHERE search – condition
اين جمله شبه جمله WHERE را كنترل ميكند. براي تمام ركوردهاي جدول داده شده شبه جمله WHERE به مقدار TRUE ارزيابي ميشود و بهنگام ميگردد.
توجه ـ اگر شبه جمله WHERE را از جمله UPDATE حذف كنيم، تمام ركوردهاي داده شده با مقدار داده شده بهنگام ميشوند.
حذف اطلاعات به كمك جمله DELETE
علاوه بر اضافه كردن اطلاعات به پايگاه دادهاي، ميتوانيم آنها را از پايگاه اطلاعاتي حذف كنيم. نحوه نگارش حذف به شكل زير است:
کد:
DELETE FROM table – name
WHERE condition
حذف تمام سطرها:
کد:
DELETE FROM table – name
و يا:
کد:
DELETE * FROM table – name
بسته به استفاده از جمله WHERE در جمله DELETE، SQL ميتواند كارهاي زير را انجام دهد:
- ـ يك رديف را حذف كند.
- ـ چندين رديف را حذف كند.
- ـ تمام رديفها را حذف كند.
- ـ هيچ رديفي را حذف نكند.
در اينجا به چند نكته اشاره ميشود. وقتي از جمله DELETE استفاده ميكنيم:
- جمله DELETE نميتواند يك فيلد را حذف كند. (به جاي آن از UPDATE استفاده ميكنيم)
- جمله DELETE تمام ركورد را از يك جدول حذف ميكند.
توجه ـ شبه UPDATE, INSERT، حذف ركوردها از يك جدول ممكن است باعث بروز مشكلات جامعيت در داخل جداول ديگر گردد. اين مطلب مهم را وقتي در داخل يك پايگاه دادهاي مشغول تغيير هستيم، بايد درنظر داشته باشيم.
- با استفاده از جمله DELETE فقط ركوردها حذف ميشوند نه جدول. (از جمله DROP TABLE براي حذف كامل جدول استفاده ميكنيم)
توجه ـ شبيه جمله UPDATE، اگر از شبه جمله WHERE در جمله DELETE استفاده نكنيم، تمام رديفهاي جدول خاص حذف خواهد شد.