بتـــــاريخ : 9/18/2008 11:58:34 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1418 0


    الدرس التاسع

    الناقل : mahmoud | العمر :35 | الكاتب الأصلى : أسامة البسومي | المصدر : www.arabopn.com

    كلمات مفتاحية  :
    برامج SQL PLUS

    السلام عليكم ورحمة الله وبركاته

    الدرس التاسع

    تحدثنا في
    الدرس الثانـــــــــــــــــــــــي عن المحددات ال Constraint ولقد تعرضنا لنوعين منها وهي
    Primary key و ال Foreign Key وسوف نستعرض في هذا الدرس عن كيفية التعامل مع الانواع الاخرى من المحددات وكيفية استعراض هذه المحددات وكيفية حذفها وتفعيلها وعدم تفعيلها

    النوع الأول
    unique constraint
    ماهو ال unique constraint ؟
    هو عبارة عن حقل وحيد او مجموعة حقول وحيدة بالجدول لاتتكرر ويعرفان استثنائيا في سجل ممكن ان يحتوي على قيم فارغة ولكن هذه القيم تكون فريدة اي لاتتكرر اي قيمة واحدة فريدة

    ماهو الفرق بين ال Primary Key و UNIQUE ؟
    بالواقع لايوجد فرق كبير فكلاهما لايقبل قيم مكررة ولكن الذي يميز ال UNIQUE عن PRIMARY KEY انه يقبل قيمة فارغة NULL VALUE ولكن غير مكررة.

    والاوراكل لاتسمح لك بتعيين Primary key و unique لنفس العمود
    ولكن لنفرض انك عينت رقم الموظف ورقم هاتفه ورقم منزله على انه Primary key ولا تريد ان يتكرر رقم الموظف لاحظوا انه لو ورضعنا رقم الموظف E01 ورقم هاتفه 2222 ورقم منزله w01
    في هذه الحالة لو اضفنا سجل اخر برقم الموظف E01 ورقم هاتفه 3333 ورقم منزله w02
    هل سوق يقبل اوراكل الجواب نعم لأن البيان هنا لايعتبره اوراكل مكرر لأننا حددنا بالبداية ان الprimary Key انه يتكون من ثلاثة حقول واذا اردنا ان لايتكرر رقم الموظف نعينه unique لهذا الحقل ةولكن البعض سوف يقول انني قلت الاوراكل لاتقبل ان يعين الprimary key و unique لنفس الحقول اقول نعم ولكن قلت لنفس الحقل وليست لمجموعة حقول فلو عيننا رقم الموظف على انه primary key لوحده بهذه الحالة لايمكننا تعينه unique

    قاعدة انشاء ال unique
    هناك حالتين لانشاء ال unique وهي
    اما انشائه لال انشاء الجدول او بعد انشاء الجدول

    رمز:
    CREATE TABLE table_name
    (column1 datatype null/not null,
    column2 datatype null/not null,
    ...
    CONSTRAINT constraint_name UNIQUE (column1, column2, . column_n)
    );

    ومثال عليها

    رمز:
    CREATE TABLE supplier 
    ( supplier_id numeric(10) not null, 
    supplier_name varchar2(50) not null, 
    contact_name varchar2(50),  
    CONSTRAINT supplier_unique UNIQUE (supplier_id) 
    );

    وممكن تعيين اكثر من unique واحد
    مثال

    رمز:
    CREATE TABLE supplier 
    ( supplier_id numeric(10) not null, 
    supplier_name varchar2(50) not null, 
    contact_name varchar2(50),  
    CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name) 
    );

    اما بعد انشاء الجدول فبهذه الطريقة

    رمز:
    ALTER TABLE table_name
    add CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

    مثال

    رمز:
    ALTER TABLE supplier
    add CONSTRAINT supplier_unique UNIQUE (supplier_id);

    وممكن تعيين اكثر من unique واحد
    مثال

    رمز:
    ALTER TABLE supplier
    add CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name);


    نأتي للنوع الثاني
    وهو
    Check Constraints

    وتعريفه بأنه يسمح لك بوضع شرط على كل حقل بالجدول يعني لايمكنك الاضافة الا بعد التشييك هل هو ضمن الصلاحيات ام لا .
    مع ملاحظة
    1- ان check لايمكن انشائه بال View
    2-ان check يجب ان ينتمي او يرجع لحقول ضمن الجدول وليست ان تكون ضمن جداول اخرى
    3-ان check لايمكن انشائه في SubQuery او الاستعلام المتداخل

    قاعدة انشائه
    اثناء انشاء الجدول

    رمز:
    CREATE TABLE table_name
    (column1 datatype null/not null,
    column2 datatype null/not null,
    ...
    CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE]
    );

    مثال

    رمز:
    CREATE TABLE suppliers 
    ( supplier_id numeric(4),  
    supplier_name varchar2(50),  
    CONSTRAINT check_supplier_id 
    CHECK (supplier_id BETWEEN 100 and 9999) 
    );

    في المثال السابق حددنا ان رقم المورد يجب ان يكون بين 100 و 999
    مثال آخر

    رمز:
    CREATE TABLE suppliers 
    ( supplier_id numeric(4),  
    supplier_name varchar2(50),  
    CONSTRAINT check_supplier_name 
    CHECK (supplier_name = upper(supplier_name)) 
    );

    وفي هذا المثال حددنا ان اسم المورد يجب ان يساوي الاسم ال capital او حروفه تكون Capital

    قاعدة انشائه :او بطريقة اخرى وهي استخدام ال ALTER

    رمز:
    ALTER TABLE table_name
    add CONSTRAINT constraint_name CHECK (column_name condition)

    مثال على ذلك

    رمز:
    ALTER TABLE suppliers
    add CONSTRAINT check_supplier_name
    CHECK (supplier_name IN ('IBM', 'Microsoft', 'Nvidia'));

    كيف نقوم بحذف ال CONSTRAINTS

    رمز:
    ALTER TABLE table_name
    drop CONSTRAINT constraint_name;

    ومثال

    رمز:
    ALTER TABLE suppliers
    drop CONSTRAINT check_supplier_id;


    كيف نقوم بتفعيل ال CONSTRAINT

    رمز:
    ALTER TABLE table_name
    enable CONSTRAINT constraint_name;

    مثال على ذلك

    رمز:
    ALTER TABLE suppliers
    enable CONSTRAINT check_supplier_id;

    كيف نقوم بايقاف ال CONSTRAINT

    رمز:
    ALTER TABLE table_name
    disable CONSTRAINT constraint_name;

    مثال على ذلك

    رمز:
    ALTER TABLE suppliers
    disable CONSTRAINT check_supplier_id;


    الجدول المعتمد من اوراكل والذي يخزن فيه ال CONSTRAINT يسمى بجدول
    USER_CONSTRAINTS
    ولمعرفة اسماء الCONSTRAINT التابعة لجدول معين فقط

    رمز:
    CONNECT SYSTEM/UR_PASSWORD
    SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE FROM USER_CONSTRAINTS 
    WHERE TABLE_NAME='SUPLLIERS';

    نستطيع اثناء انشاء المحددات ال CONSTRAINT على جداول تحتوي على بيانات نستطيع انشائها والتحكم اما بغض النظر عن البيانات القديمة ويبدأ من لحظة انشاء الCONSTRAINT نستخدم
    ال NOVALIDATE اما اذا اردنا ان يشييك على البيانات القديمة فنستخدم معه VALIDATE
    مثال على NOVALIDATE

    رمز:
    ALTER TABLE uclass MODIFY CONSTRAINT pk_uclass
    DISABLE VALIDATE;

    ومثال على VALIDATE

    رمز:
    ALTER TABLE uclass ENABLE NOVALIDATE PRIMARY KEY;

    وبهذا نكون قد اسدلنا الستار عن اهم المحدداتCONSTRAINTS وكيفية التعامل معها

    الاسئلة
    1-ماهو الفرق بين ال PRIMARY KEY و UNIQUE
    2-لنفرض ان لدينا جدول توجد به بيانات مكررة واردنا ان ننشئ PRIMARY KEY على هذا العمود الذي يحتوي على البيانات المكررة ماهي الخطوات اللازمة لتطبيق ذلك
    3-كيف نقوم بتفعيل الCONSTRAINT

    انتهت الاسئلة

    رمز:
    وانتهى الدرس
    كلمات مفتاحية  :
    برامج SQL PLUS

    تعليقات الزوار ()