إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

ساعدوني في فهم Rowid


9 رد (ردود) على هذا الموضوع

#1 tekamoka

tekamoka

    مشترك

  • الأعضــاء
  • 123 مشاركة

تاريخ المشاركة 27 March 2007 - 10:46 AM

السلام عليكم و رحمة الله و بركاتة
الأخ العزيز أبو صالح أو طبعاً أى أخ معانا
اريدك ان تساعدنى فى موضوع و انت بإذن الله تعرفه.
انا عايز افهم ال rowid و ايه فائدته ة ازاى بيفيد فى الحاجات المكررة.
انت كنت رديت على واحد قبل كدة كان عايز يجيب المكرر من الجدول و انت اديت مثال و جربتة و اشتغل بس مش فاهم تقدر تشرحلى الموضوع
جزاكم الله خير

#2 abu_ezzat

abu_ezzat

    مشترك

  • الأعضــاء
  • 135 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 March 2007 - 11:36 AM

أي جدول يتم تخليقة من قبل المستخدم فإن أوراكل تخلق معه تلقائيا حقل اسمه rowid
وهو عبارة عن قيمة فريدةunique لكل سجل على حدة
بعد تخليق الجدول إذا عملت sql < desc my_table
سوف تجد فقط الحقول التي أضفتها بنفسك
بعد إضافتك أي سجلات لهذا الجدول يمكنك معرفة ال rowid
sql > select rowid from my_table
يمكنك استخدام هذا الحقل في مسح السجلات المكررة فمثلا إذا عنك سجلين بنفس القيم وتريد أن تمسح واحد منهم فإنك تستخدم ال rowid
sql < delete from my_table where rowid = 'myrowid'

#3 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 27 March 2007 - 11:06 PM

هل يوجد جدول فى ال dictionary به معلومات عن ال rowid ؟
و بارك الله فيك يا أخ أبوعزت

#4 tekamoka

tekamoka

    مشترك

  • الأعضــاء
  • 123 مشاركة

تاريخ المشاركة 02 April 2007 - 06:07 PM

اية يا جماعة مفيش حد يفدنا فى الموضوع ده
الأخ أبو صالح نداء انسانى :))

#5 hassan978hmk

hassan978hmk

    مشترك

  • الأعضــاء
  • 90 مشاركة

تاريخ المشاركة 04 April 2007 - 02:20 PM

الأخ الكريم
ا-لقيمة ROWID هي عبارة عن عنوان السطر المعني ضمن ملفات قاعدة البيانات وهذه القيمة لا تخزن في أي جدول ولكنها موجودة في INDEX الخاص بالجدول وذلك لمساعدة الاستعلام على الوصول للسطور المطلوبة بسرعة.
-عندما تطلب القيمة ROWID بواسطة استعلام لا يقوم أوراكل باحضارها من INDEX ولكن يتم
استنتاجها من الجدول.
-عندما تطلب سطرا معينا بواسطة ROWID الخاص به كما يلي:
select ename from emp where rowid=rowid_value
فإن عملية احضار السطر المطلوب تكون سريعة جدا لأنك حددت عنوان السطر بالتحديد ضمن القاعدة
فلا يحتاج أوراكل للبحث ضمن كامل الجدول ولا حتى الاستعانة بالفهارس.
-القيمة rowid لا علاقة لها بقيم الأعمدة ضمن السطر لأنها قيمة فيزيائية تتعلق بعنوان السطر على القرص الصلب ,فمثلا لو حذفت أحد السطور وقمت بإدخاله مرة ثانية فمن المستبعد جدا أن يكون له نفس rowid القديم.
-هناك نوعان من rowid هما extended rowid و restricted rowid
-القيمة rowid تتألف من أربعة حقول في حالة النوع extended هي حقل object id
,file number,block number,row slot number
-شرح بنية rowid يطول وهو موجود ضمن مسار DBA .
والله أعلم

تم التعديل بواسطة hassan978hmk, 05 April 2007 - 10:01 AM.

طوبىّ لِمن إذا أُنعمَ عليه شكَر , وإذا ابتليَ صبَر , وإذا أذنَبَ استغفر , وإذا غضبَ حَلِم , وإذا حكَمَ عدَل

صورة

#6 hassan978hmk

hassan978hmk

    مشترك

  • الأعضــاء
  • 90 مشاركة

تاريخ المشاركة 04 April 2007 - 02:32 PM

بالنسبة للسطور المكررة وكما قلت بما أن ROWID ليس له علاقة بقيم السطر فإن السطور المكررة تمتلك ROWID مختلفة ولذلك عند الرغبة في حذف السطور المكررة والإبقاء على أحدها فإن الوسيلة الوحيدة لذلك هي باستخدام ROWID .
هناك عدة وسائل للقيام بذلك تتلخص بالحصول على قيم ROWID للسطور المكررة وحذفها جميعا باستثناء أحدها.
والله أعلم
طوبىّ لِمن إذا أُنعمَ عليه شكَر , وإذا ابتليَ صبَر , وإذا أذنَبَ استغفر , وإذا غضبَ حَلِم , وإذا حكَمَ عدَل

صورة

#7 tekamoka

tekamoka

    مشترك

  • الأعضــاء
  • 123 مشاركة

تاريخ المشاركة 04 April 2007 - 04:44 PM

gazak allah kher a7' hassan'

#8 J.DEV

J.DEV

    عضو

  • الأعضــاء
  • 15 مشاركة

تاريخ المشاركة 15 December 2008 - 08:33 PM

السلام علكيم

لقد استخدمت خاصية البحث على المنتدى

وكنت اريد ان اعالج مسألة تكرار البيانات

وأفادني احدهم ان استخدم rowid

فمثلا انا عندي حقل empno

في جدول ال xx

وبه بيانات متكررة وأريد ان احذف هذه البيانات المتكررة ليبقى بيان واحد من كل تكرار

ارجو حل الجملة

وجزاكم الله خيرا

صورة


#9 hassan978hmk

hassan978hmk

    مشترك

  • الأعضــاء
  • 90 مشاركة

تاريخ المشاركة 15 December 2008 - 09:09 PM

السلام عليكم
فيما يلي وسيله سهلة لعمل ما تريده وتتلخص بالقيام بإنشاء جدول وسيط تنقل له السطور المكررة ( نسخة واحدة فقط) , ثم نقوم بحذف جميع السطور المكررة من الجدول الأساسي
وندخلها من جديد من خلال الجدول الوسيط .


create table tempxx as select distinct empno from xx; -- اكتب اسماء جميع الأعمدة
--where ..... هنا يمكن إضافة شروط معينة لإلغاء تكرار بعض القيم وليس كل الجدول

delete from xx;
--where .....نفس الشروط في جملة انشاء الجدول الوسيط


insert into xx select * from tempxx; drop table tempxx;


طبعا هناك عدد آخر من الوسائل التي يمكن استخدامها للحصول على نفس النتيجة

بالتوفيق

تم التعديل بواسطة hassan978hmk, 15 December 2008 - 09:13 PM.

طوبىّ لِمن إذا أُنعمَ عليه شكَر , وإذا ابتليَ صبَر , وإذا أذنَبَ استغفر , وإذا غضبَ حَلِم , وإذا حكَمَ عدَل

صورة

#10 J.DEV

J.DEV

    عضو

  • الأعضــاء
  • 15 مشاركة

تاريخ المشاركة 15 December 2008 - 09:54 PM

أرجو كتابة جميلة الشرط في جملة ال delete

صورة