ورود و صدور دادهها از منابع خارجي
جمله DELETE , UPDATE, INSERT در داخل يك برنامه پايگاه اطلاعاتي بسيار مفيد هستند. اين جملات به همراه جمله SELECT به عنوان پايهاي براي ساير عمليات پايگاه دادهاي به كار ميروند. گرچه SQL يك زبان ميباشد ولي راهي براي ورود و صدور دادهها به منابع دادههاي خارجي ندارد.
بطور مثــال فرض كنيد كه شركت شما ساليان سال است كه از نرمافزار dBase براي كاربردهاي خود از جمله برنامه حسابداری ، برنامه انبارداری ، برنامه مدیریت کتابخانه و برنامه های کاربردی دیگر استفاده ميكند. حال مديريت ميخواهد اين برنامههاي كاربردي را به كلاينت/ سرور تحت اوراكل تبديل كند. متاسفانه فايلهاي dBase موجود شامل هزاران ركورد است كه بايد به فرمت دادههاي پايگاه دادهاي اوراكل تبديل شود. قطعاً دستورات UPDATE, INSERT و DELETE بعد از اينكه پايگاه دادهاي اوراكل شما پر شد، به شما كمك خواهند كرد، اما شما بايد 300000 ركورد را دوباره تايپ كنيد. خوشبختانه اوراكل و ساير سازندگان نرمافزارها ابزاري تهيه كردهاند كه ميتواند در اين امر به شما كمك كند.
تقريباً تمام سيستمهاي پايگاههاي دادهاي اين امكان را ميدهند تا با استفاده از فرمت فايل متن ASCII دادهها را وارد و صادر كنيم. اما زبان SQL شامل اين امر نميشود و هنگامي كه يك پايگاه دادهاي خالي داريم خوب كار نميكند.
سيستمهاي پايگاه دادهاي مدرن ابزار مختلفي براي پردازش دادهها بكار گرفتهاند. بعضي از اين ابزار طراحان را قادر ميسازند تا دادهها را به منابع خارجي صادر يا وارد نمايند. اين امكان بخصوص وقتي اندازه پايگاه دادهاي بزرگ يا كوچك شود، مفيد است. به عنوان مثــال Personal Oracle 8, SQL Server, MS ACCESS شامل امكانات ت زيادي هستند كه از انتقال دادهها بين سيستمهاي مختلف حمايت ميكنند.
شبه جملات در پرس و جوهاي SQL
در اين بخش، شبه جملات و كاربرد آنها در جمله SELECT مورد بررسي قرار ميگيرد.
تعيين معياري با شبه جمله WHERE
همانطور كه گفته شد WHERE باعث ميشود تا پرس و جوهاي ما با محدود نمودن تعداد رديفهاي برگردانده شده در خروجي انتخابيتر شوند.
استفاده تنها از FROM, SELECT، باعث ميشود تا ما كنترلي روي رديفهاي بازگشتي جدول نداشته باشيم.
AS يك عملگر انتساب اختياري است كه يك نام مستعار را به نام يك ستون و يا نام يك جدول منتسب ميكند.
کد:
SELECT column – name AS column – alias FROM table – name
SELECT column – name FROM table – name AS table – alias
شبه جمله STARTING WITH
اين شبه عبارت شبه LIKE عمل ميكند. (جستجو در داخل يك رشته)
با استفاده از اين شبه جمله، ركوردهايي كه با pattern (الگوي) موردنظر شروع شده باشند برگردانده ميشوند.
مثــال/
کد:
SELECT payee, amount, remarks
FROM checks
WHERE payee STARTING WITH (Ca)
با استفاده از پرس و جوي فوق كليه ركوردهايي كه با Ca شروع ميشوند، برگرداند خواهند شد.
شبه جمله ORDER BY
گاهي اوقات ما نياز داريم كه نتيجه پرس و جوي ما بطور مرتب شده بدست آيد. SELECT FROM نيز به ما فهرستي مي دهد كه اين فهرست مرتب شده نيست مگر اينكه كليد اوليه معرفي كرده باشيم.
كلمه كليدي ORDER BY به منظور مرتب كردن نتيجه بكار برده ميشود. DESC در انتهاي شبه عبارت ORDER BY سطرها را براساس ترتيب نزولي مرتب ميكند. پيش فرض اين ترتيب، صعودي (ASC) است. به عبارت ديگر ترتيب صعودي (ASC) اختياري ميباشد (نتيجه قرار دادن و قرار ندادن آن يكي است)
کد:
SELECT column – name(S)
FROM table – name
ORDER BY column – name [ASC | DESC]
شبه جمله GROUP BY
SQL از تركيب ستون طبيعي و تابع جمعي ايراد ميگيرد. اين وضعيت نياز به شبه جمله GROUP BY دارد. GROUP BY تابع جمع آورده شده در جمله SELECT را براي هر گروه از ستوني كه در جلوي GROUP BY آمده است، اجرا ميكند. (سطرهاي هر ستون را برحسب نتيجه تابع جمعي بكار رفته شده مرتب ميكند)
اين عمل، SQL را بطور فزايندهاي مفيد ميكند.
GROUP BY همچنين مانند ORDER BY عمل ميكند و در ضمن با استفاده از اين شبه جمله ميتوان بيشتر از يك ستون را نيز گروهبندي كرد.
کد:
SELECT column – name l, SUM (column – name 2)
FROM table – name
GROUP BY column – name l
تذكر ـ به جاي SUM در syntax فوق ميتوان از ديگر توابع جمعي نظير COUNT, AVG, MAX, MIN و ... نيز استفاده كرد.
شبه جمله HAVING
با استفاده از اين شبه جمله ميتوان دادههاي مورد استفاده در شبه جمله FROUP BY را محدود كرد.
HAVING اين امكان را ميدهد كه ما از توابع جمعي در يك جمله مقايسهاي استفاده كنيم و در ضمن HAVING بر روي گروه اثر ميكند؛ در حاليكه WHERE روي رديفها اثر ميگذارد. HAVING با توابع غير جمعي نيز كار ميكند.
ميتوان بيش از يك شرط در شبه جمله HAVING بكار برد.
همچنين ميتوان از يك تابع جمعي در شبه جمله HAVING استفاده كرد كه در جمله SELECT وجود نداشته باشد.
کد:
SELECT column – name l, SUM (column – name 2)
FROM table – name
GROUP BY column – name l
HAVING SUM (column – name 2) condition value
ايجاد و نگهداري جداول
شروع كار با جمله ايجاد پايگاه دادهاي (CREATE DATABASE)
اولين قدم مديريت دادهها در هر پروژه پايگاه دادهاي، ايجاد پايگاه دادهها است. اين كار يك پايگاه دادهاي، بسته به احتياج ما و سيستم مديريت پايگاه دادهاي كه انتخاب كردهايم ميتواند محدودهاي از ساده تا پيچيده را دربرگيرد. بيشتر سيستمهاي مدرن امروزي اين امكان را به ما ميدهند تا كاملاً با استفاده از موس يك پايگاه دادهاي بسازيم. با استفاده از اين امكان در وقت صرفهجويي ميشود.
نحوه نگارش CREATE DATABASE شبيه زير است:
کد:
CREATE DATABASE database – name
اين نحوه نگارش از سيستمي به سيستم ديگر به طور قابل ملاحظهاي فرق ميكند. به هرحال تمام سيستمهاي مديريت پايگاه دادهاي رابطهاي (ROBMS) خيلي قوي و مشهور از اين دستور استفاده ميكنند.
راههاي ايجاد پايگاه دادهاي
نحوه نگارش جمله CREATE DATABASE در نسخههاي مختلف SQL تفاوت زيادي دارد. بسياري از SQLها از جمله CREATE DATABASE صرفنظر ميكنند و مستقيماً به سراغ جمله CREATE TABLE ميروند. چون قبل از اينكه جدولي ايجاد شود، ما بايد پايگاه دادهاي ايجاد كنيم، اين بخش روي بعضي از مفاهيمي كه يك طراح هنگام ساخت يك پايگاه اطلاعاتي تكيه ميكند، متمركز شده است. اولين مطلبي كه بايد درنظر گرفته شود، سطح دسترسي مجاز ميباشد. اگر از سيستم مديريت پايگاه دادهاي رابطهاي (RDBMS) استفاده كنيم كه از سطح دسترسي مجاز حمايت ميكند، بايد مطمئن باشيم كه امكان تنظيم سطح دسترسي مجاز را داريم و يا اينكه اداره كننده سيستم به ما اجازه CREATE DATABASE را اعطا كرده است. براي اطلاعات بيشتر راجع به اين موضوع بايد به مستندات RDBMS خود مراجعه كنيم. بيشتر RDBMDها همچنين اين امكان را به ما ميدهند تا يك اندازه پيش فرض براي پايگاه اطلاعاتي مشخص كنيم (معمولاً برحسب فضاي ديسك سخت (مثلاً مگابايت)). بنابراين ما نياز به دانستن اين مطلب داريم كه چگونه سيستم پايگاه دادهاي، دادهها را بر روي ديسك به اندازه موردنظر ذخيره ميكند. مسئوليت درنظر گرفتن اين فضا نيز به عهده اداره كنندگان سيستم ميباشد.
طراحي پايگاه دادهاي
طراحي يك پايگاه دادهاي مناسب براي موفقيت سيستم كاربردي اهميت فراواني دارد. بسياري از عوامل ممكن است در طراحي پايگاه دادهاي ما تأثير بگذارند، مثل:
امنيت
ميزان فضاي موجود روي ديسك
ميزان سرعت جستجو و بازيابي پايگاه دادهها
ميزان سرعت بهنگام سازي پايگاه دادهها
ميزان سرعت اتصال چند جدول براي بازيابي دادهها
حمايت RDBMS از جداول موقت
ميزان فضاي روي ديسك از عوامل مهم است. گرچه ممكن است فكر كنيد كه با وجود چندين گيگابايت فضا ديگر جاي نگراني براي فضاي ديسك وجود ندارد، بزرگ شدن حجم پايگاه دادهاي عمل بازيابي را طولاني ميكند. اگر در طراحي ساختار جداول دقت به خرج نداده باشيم احتمال تكرار دادهها افزايش مييابد. اغلب ممكن است مشكل متفاوت و عكسي نيز اتفاق بيفتد. به اين ترتيب كه ممكن است ما عمل نرمال سازي را روي پايگاه دادهاي خودمان انجام داده و جداول جديدي ايجاد كرده باشيم، اگرچه در تئوري در طراحي پايگاه دادهاي موفق بودهايم ولي در واقع براي پاسخگويي از طريق پرس و جو ممكن است با مشكل زمان طولاني جهت اجرا مواجه شويم.
نگهداري پايگاه اطلاعاتي طراحي شده در اين حالت گاهي اوقات مشكل است زيرا ساختار جدول ممكن است هدف طراح را نامفهوم و گنگ نمايد. اين مطلب علت اصلي مستندسازي است، زيرا چنانچه عمل مستندسازي روي طراحي و برنامه نويسي انجام گيرد، افراد بعدي و يا كساني كه با ما كار ميكنند، ميتوانند به آنچه ما در هنگام طراحي و كد كردن برنامه فكر ميكرديم، پيببرند. در فرهنگ طراحي پايگاه دادهها، مستندسازي تحت عنوان فرهنگ دادهها يا كاتالوگ سيستم شناخته ميشود.