أسامة موسى بتاريخ: 16 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 16 أبريل 2006 السلام عليكم ورحمة الله وبركاتهالدرس التاسع تحدثنا في الدرس الثانـــــــــــــــــــــــي عن المحددات ال 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 لايمكن انشائه بال View2-ان 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 و UNIQUE2-لنفرض ان لدينا جدول توجد به بيانات مكررة واردنا ان ننشئ PRIMARY KEY على هذا العمود الذي يحتوي على البيانات المكررة ماهي الخطوات اللازمة لتطبيق ذلك3-كيف نقوم بتفعيل الCONSTRAINTانتهت الاسئلة وانتهى الدرس الدرس الثامن ..... القائمة الرئيسية .... الدرس العاشر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
waleed21112001 بتاريخ: 16 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 16 أبريل 2006 الله يجزيك عناااااا خير الجزاء على هذا الجهد العظيم .... المبذول من شخصك العزيزاسال الله ان يسهل امرك ... وينور دربك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mdsalah بتاريخ: 2 يونيو 2006 تقديم بلاغ مشاركة بتاريخ: 2 يونيو 2006 مشكور اخى الفاضل واتمنى منك مزيد العطاء وجازاك الله خيرا وشكرا لهذا الموقع الاكثر من رائع ومزيد من التقدم MDSALAH اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أم نايف بتاريخ: 10 يوليو 2006 تقديم بلاغ مشاركة بتاريخ: 10 يوليو 2006 بارك الله في علمك وعملك وجعله طريق لك إلى الجنة من غير حساب اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
medohadido بتاريخ: 1 سبتمبر 2006 تقديم بلاغ مشاركة بتاريخ: 1 سبتمبر 2006 شكرا على مجهودك الرائع يا اخى وننتظر منك المزيد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
osama80 بتاريخ: 29 نوفمبر 2006 تقديم بلاغ مشاركة بتاريخ: 29 نوفمبر 2006 بارك الله فيك اخي الفاضل أسامة و اتمنى من الله ان يتم عليكم بثمرة هذا العمل و تحمل أمانة العلم اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
wlahmad بتاريخ: 12 يناير 2007 تقديم بلاغ مشاركة بتاريخ: 12 يناير 2007 الله يعطيك العافية جهد جبارلاحرمت اجره استاذي الفاضل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
جلال شواقفه بتاريخ: 31 أكتوبر 2007 تقديم بلاغ مشاركة بتاريخ: 31 أكتوبر 2007 شكرا جزيلا لك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
younes86 بتاريخ: 17 مايو 2017 تقديم بلاغ مشاركة بتاريخ: 17 مايو 2017 السلام عليكم ورحمة الله ، لو سمحتوا هام لو انا عايز اضيف قيد الNOT NULL وال DEFAULT بعد انشاء الجدول كيف الطريقه عن طريق ال SQL وايضا لو اردت حذفهم بعد اضافتهم ما هو الكود ؟ سؤال اخر هل يوجد كود يبين اسم القيد ونوعه واسم العمود ال موجود عليه القيد ؟ ولكم جزيل الشكر والتقدير. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
wadee ahmed ahmed بتاريخ: 16 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 16 يونيو 2017 ممكن حد يساعدنا لو سمحتم في انشاء علاقه بين جدولين من كثير الى كثير sql N to N اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
wadee ahmed ahmed بتاريخ: 16 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 16 يونيو 2017 مثلا معي جدول الموردين والاصناف اكثر من مورد يوردوا أكثر من صنف والصنف يورده اكثر من مورد ...كيف اسويها عند ربط المفاتيح كجدول في الsql اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 18 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2017 ممكن حد يساعدنا لو سمحتم في انشاء علاقه بين جدولين من كثير الى كثير sql N to N في أي علاقة بين جدولين من نوع many to many يتم إنشاء جدول جديد يتضمن مفتاح الجدول الأول .... وهو مفتاح اجنبي FK للجدول الأول + مفتاح الجدول الثاني .... وهو مفتاح أجنبي Fk للجدول الثاني وكلاهما هو مفتاح الجدول الجديد PK 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
وديع احمد علي البريهي بتاريخ: 18 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2017 شكرا جزيلا ربنا ينور عليك انا كنت اشتي جملة create in sql انا فاهم النظري فقط اشتي اطبقه كيف في sql اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 18 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 18 يونيو 2017 شكرا جزيلا ربنا ينور عليك انا كنت اشتي جملة create in sql انا فاهم النظري فقط اشتي اطبقه كيف في sql يمكنك الإستفادة من اوامر ال sql في مثال من مشاركة سابقة بالمنتدى اولا : جدول الموظفين create table emp1(emp_id number(5), emp_name varchar2(20), constraint info_id_pk primary key(emp_id)); ثانيا : جدول اللغات: create table lang(lang_id number(1), language varchar2(15), constraint lang_lang_id_pk primary key (lang_id)); الان الجدول الوسيط : create table emp_lang ( emp_id number(5) constraint fk_emp_lang_emp_id references emp1(emp_id) ,lang_id number(1) constraint fk_emp_lang_lang_id references lang(lang_id) ,constraint pk_emp_lang_emp_id_lang_id primary key (emp_id,lang_id) ); المشاركة السابقة مشكلة (many to many) http://www.araboug.org/ib/index.php?showtopic=402 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.