بتاريخ: 1 نوفمبر 201312 سنة comment_241839 السلام عليكم ياشباب وانا بذاكر SQL قابلتنى هذه الاسئلة محتاج جواب الله يكرمكم اللى يعرف حاجة من الاسئلة دى يجاوب عشان المعلومة تكتمل فى ذهنى ايه الفرق بي Char , Varchar2 ما الفرق بين PK , Unique ما الفرق بين Drop , Delete هل الاسرع فى التنفيذ in ام exist مافائدة ال index امتى استدعى ال Function , ال Triger وماهو ال Triger وهل هو فى ال sql ام فى ال pl-sql تقديم بلاغ
بتاريخ: 2 نوفمبر 201312 سنة comment_241843 وعليكم السلام ورحمة الله وبركاته ...سأجيب بشكل مبسط للغاية لنوضح المفهوم ..إن شاء الله الفرق Char , Varchar2 هي من اسمها واضحة char يعني fixed length يعني ثابتة لاتتغير ... Varchar2 يعني variable length متغيرة بالطول يعني بعبارة اخرى إذا كان لدي متغير وتم تعريفه على اساس char كالاتي x char(60); يعني انا حجزت حجم للمتغير x بالذاكرة 60 لكن في العمل لم استخدم سوى 20 وحدة من الذاكرة .. حسناً إذن انا ضيعت 40 وحدة خزنية من الذاكرة ضاعت بدون الاستفادة منها ..يعني هو حجز مكان طوله 60 كما عُرف به ....(ثابت) وانتهى ...سواء تم استخدامه بأكمله ام لا لكن اذا عرفت المتغير x على اساس varchar2 كما في الصيغة التالية x varchar2(60); وفي العمل استخدمت 20 وحدة خزنية من الذاكرة ...إذن ال 40 المتبقية سوف ترجع للذاكرة ولا اخسرها .. إذن تغير الحجم من 60 الى 20 حسب ماتم استخدامه فعلاً .... وليس هنالك مساحة خزنية ضائعة مني لسوء تعريف متغير ولهذا سمي بانه variable char او varchar2 لإنه يتغير ولا يبقى ثابت ما الفرق بين PK , Unique الpk يجب أن لا يكون null ويجب ان يكون unique وحيد يعني ((PRIMARY KEY = UNIQUE KEY + Not Null ))..... لانه سوف يستخدم للإشارة أو الربط مع جدول آخر فلا يمكن أن ياخذ null كقيمة بينما الUnique هو ليس pk لذلك يمكن ان يأخذ ال null كقيمة لكن لمرة واحدة فقط , أو بالاحرى قيمه لا تتكرر يعني يأخذ القيمة مرة واحدة وحيدة ..لذلك سمي Unique يعني يأخذ مرة واحدة قيمة =2 ومرة واحدة قيمة = 5 ...... يعني القيم عنده لاتتكرر وللتوضيح أكثر شاهد هذا الرابط الذي يوضح الفرق بينهما http://sqlhints.com/2013/06/02/difference-between-primary-key-and-unique-key-in-sql-server/ ما الفرق بين Drop , Delete الفرق الاول الdrop هو من ضمن ايعازات الDDL - Data Definition Language يعني الايعازات على قاعدة البيانات بينما ال delete هو ضمن ايعازات الDML - Data Manipulation Language يعني الايعازات على table , view ال drop هو لحذف الكائن بشكل مطلق ..ماذا نقصد بشكل مطلق ...يعني حذفه بأكمله من ال database يعني عبارة أدق وأوضح ...قلع الكائن من جذوره ...... يعني عندما أكتب الايعاز drop user hr; فأنا بهذا الايعاز حذفت ال user بما يحتويه من جداول وبما تحتويه الجداول من بيانات ....يعني لم يعد وجود أصلاً لمستخدم إسمه hr وعندما أكتب drop table emp; فانا أحذف الجدول بهيكليته وبمحتوياته ...الجدول بكل الصفوف وبما تحتوي الصفوف من بيانات..يعني (structure + contents) للجدول ... ولم يعد وجود اصلا لهذا الجدول في قاعدة البيانات بينما لو كتبت الايعاز delete * from table emp; انا حذفت محتويات الجدول (بياناته) فقط (contents only) لكن (structure) هيكلة الجدول موجودة على قاعدة البيانات.... يعني أقصد كجدول فيه أعمدة وكل عمود له إسم ونوع بيانات data type موجود أنا عملت تفريغ للبيانات فقط.... حذفتها هل الاسرع فى التنفيذ in ام exist الاسرع هي exist مافائدة ال index الindex هو دليل يساعد في عملية الاستعلام والبحث ..يعني تخيل لو قلت إبحث ....فسيكون الجواب بسؤال ..أبحث عن ماذا؟؟ فلو ذكرت الامر المراد البحث عنه سيكون البحث أسهل وأسرع وهذه هي الفكرة من ال index فال index يعمل له create على الجدول ليسهل عملية البحث والاستعلام اما ما يخص السؤال الاخير...فهل المقصود على مستوى الفورم ...ام حضرتك تقصد على مستوى نافذةSQL إن شاء الله اكون قد وفقت في توضيح الفكرة لكل منهما بما لدي من معلومة ...شكراً تقديم بلاغ
بتاريخ: 2 نوفمبر 201312 سنة كاتب الموضوع comment_241851 ماشاء الله فعلا العلم نور وحضرتك ازلتى ظلمة جهلى باجاباتك اشكرررررررررك بشدة على الاجابة النموذجية المبسطة والتفصيل بالامثلة والشرح الاكثر من رائع بالنسبة للسؤال الاخير اقصده على مستوى ال sql فقط تقديم بلاغ
بتاريخ: 2 نوفمبر 201312 سنة comment_241864 حسناً ..بقي الاجابة على السؤال الاخير ..وأجلته لإني أردت توضيح اكثر للسؤال ....وأن شاء الله تكون الاجابة واضحة أيضاً امتى استدعى ال Function , ال Triger قبل ان نعرف متى نستدعى كلاً منهما... علينا ان نعرف ما هما؟؟ وما الفرق بينهما ؟؟؟ ثم نتعرف متى نستدعي كلا منهما وهذا ربما سيتضح بمجرد ان نعرف كلا منهما حسناً ماهو ال trigger وماهي الfunction الفرق الاول بينهما ان ال trigger هو أجراء من نوع خاص (procedure special Kind) مخزون بقاعدة البيانات (database) يتم عمله على أحد الجداول الموجودة في قاعدة البيانات ينفذ بشكل ألي (automatically executes) عند حدوث الحدث المكتوب عنده ...يعني ماذا نقصد بحدوث الحدث المكتوب عنده ؟؟ حسناً ال trigger يكتب عند نوعين من الايعازات وهما 1- ايعازات الDDL - Data Definition Language وتشمل create, alter,drop الايعازات على قاعدة البيانات 2- ايعازات الDML - Data Manipulation Language وتشمل ايعازات insert,update,delete الايعازات على الجداول فعند حدوث هذه الاحداث ...يعني عند حدوث ( إنشاء أو تغيير أو حذف نهايئياً لل table او view) ينفذ هذه ال trigger وينفذ بشكل آلي (automatically executes) ومباشرةً ..يعني بدون استدعاء... لايتطلب منا استدعاء أو عند حدوث هذه الاحداث التي هي النوع الثاني التي تطرقنا عليه وتشمل (الحذف والاضافة والتعديل على بيانات الجدول) سوف ينفذ هذه ال trigger وينفذ بشكل آلي (automatically executes) يعني مباشرةً ....بدون استدعاء .... طبعاً حسب الصيغة المكتوب بها يعني after أو before أما الfunction فهي لا يرتبط تنفيذها ...او بالاحرى لاتعتمد في تنفيذها على الاحداث التي تحدث على الجدول أو على قاعدة البيانات كما وضحنا ماهي هذه الاحداث وأنما هي ببساطة تؤدي وظيفة معينة كإن تقوم بعمليه حسابية معقدة ...أو لمعالجة نصوص ..وترجع لنا قيمة ...وعندما نريد تنفيذها نقوم بإستدعائها إن شاء الله وضحت الاجابة بما اعرف....شكراً ولزيادة المعرفة والمعلومة شاهد الرابط التالي .. http://hpsqtp.blogspot.com/2011/06/difference-between-stored-procedure.html تقديم بلاغ
بتاريخ: 2 نوفمبر 201312 سنة كاتب الموضوع comment_241883 والله انا مستمتع بشرح حضرتك لانك تبسطى المعلومة والحمد لله فهمت اجابة كل سؤال من اول مرة ربنا يزيدك من العلم النافع شكرا جزيلا على المعلومات القيمة والمهمة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.