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

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


tekamoka

Recommended Posts

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

رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

الأخ الكريم
ا-لقيمة 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
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

  • بعد 1 سنة...

السلام علكيم

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

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

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

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

في جدول ال xx

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

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

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

رابط هذا التعليق
شارك

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


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

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


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



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

بالتوفيق

تم تعديل بواسطة hassan978hmk
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية