الزائفة الأعمدة & DUAL الجدول - ماذا تعني في الواقع ؟

StackOverflow https://stackoverflow.com/questions/2369142

  •  24-09-2019
  •  | 
  •  

سؤال

المزدوج الجدول يستخدم لتحديد الزائفة الأعمدة.وقد صف واحد وعمود واحد الدمية التي لديها قيمة X.

لدي سؤالان

  1. ما في الواقع لا الزائفة عمود يعني ؟
  2. كيف المزدوجة قادرة على إعطاء القيمة على سبيل المثال:

    select sysdate from dual
    

    سيؤدي في التاريخ والوقت الحالي.كيف يكون هذا ممكنا ؟

هل كانت مفيدة؟

المحلول

العمود الزائف هو وظيفة تُرجع قيمة تم إنشاؤها في النظام. sysdate هي وظيفة تُرجع وقت البيانات الحالي ؛ rownum هو عمود زائف يعيد رقم الصف في مجموعة النتائج.

يعود تاريخ التسمية من الأيام السابقة لأوراكل ، قبل أن يكون لدينا PL/SQL. هذا يعني فقط أنه يمكننا استخدام هذه الوظائف في إسقاط عبارة SELECT ، تمامًا مثل أعمدة الجدول. في الوقت الحاضر ، يمكننا كتابة وظائفنا الخاصة واستخدامها في عبارات SQL دون يومض ، وبالتالي فإن عبارة "العمود الزائف" هي مربك.

الميزة التي تميز الدالة عن العمود الزائف هي أن العمود الزائف إرجاع قيمة مختلفة لكل صف في مجموعة النتائج بينما تقوم الدالة بإرجاع نفس القيمة (ما لم يتم تمرير بعض العمود في الجدول كمعلمة لاستخلاص القيمة).

المزدوج هو شريحة أخرى موقرة من تاريخ أوراكل. إنه جدول يحتوي على صف واحد ، و التي تعرفها قاعدة البيانات تحتوي على صف واحد. لذا فإن عبارة SELECT التي تقتبسها هي مجرد قول "أعطني وقت البيانات الحالي". إنها مكافئة وظيفيا

select sysdate 
from emp
where rownum = 1
/

في PL/SQL ، SELECT FROM DUAL هو nugatory. يمكننا فقط رمز هذا:

l_date := sysdate;

واحد شائع للاستخدام المزدوج المستخدم للحصول على القيمة التالية للتسلسل في الزناد. منذ 11g يمكننا أن نفعل ...

:new.id := my_seq.nextval;

تحت الأغطية لا يزال هذا ينفذ select my_seq.nextval into :new.id from dual;

نصائح أخرى

2.كيف اختيار من ثنائي تعطي نظام الوقت ؟

SQL يحتوي على عدد من المدمج في الوظائف التي لا تحتاج قوسين بعد لهم الاحتجاج بها.أحد هذه الوظيفة في شركة أوراكل SYSDATE.

تذكر ، إذا كان لديك جدول عبارة SELECT مع أي قيود الشرط (WHERE) عادة إرجاع صف واحد من البيانات لكل صف في الجدول.وذلك بالنظر إلى الجدول:

CREATE TABLE Ex1(Dummy CHAR(10) NOT NULL);
INSERT INTO Ex1 VALUES('Abacus');
INSERT INTO Ex1 VALUES('Sedentary');
INSERT INTO Ex1 VALUES('Caucasus');

تشغيل عبارة SELECT:

SELECT Dummy FROM Ex1;

عودة 3 صفوف.لنفترض الآن أن أكتب البيان:

SELECT 'ABC', Dummy, SYSDATE FROM Ex1;

هذا سوف أيضا عودة 3 صفوف:

  • ABC ، المعداد ، 2010-03-03
  • ABC ، المستقرة ، 2010-03-03
  • ABC, القوقاز, 2010-03-03

إذا أنا حذفت دمية العمود:

SELECT 'ABC', SYSDATE FROM Ex1;

أحصل على:

  • ABC ، 2010-03-03
  • ABC ، 2010-03-03
  • ABC ، 2010-03-03

و لو حذف سلسلة حرفية:

SELECT SYSDATE FROM Ex1;

أحصل على:

  • 2010-03-03
  • 2010-03-03
  • 2010-03-03

وأنا حذف صفين و أعد تشغيل الاستعلام ، أحصل على:

DELETE FROM Ex1 WHERE Dummy > 'B';
SELECT SYSDATE FROM Ex1;

أحصل على:

  • 2010-03-03

لأن هناك فقط صف واحد من البيانات في الجدول Ex1.

اسميا يمكنني أن أفعل:

 UPDATE Ex1 SET Dummy = 'X';
 RENAME TABLE Ex1 AS Dual;

بالطبع, لا يمكنك فعل ذلك - أنا لست متأكدا ما إذا كان أوراكل يدعم إعادة تسمية الجدول بيان وربما لن تمكنك من إعادة تسمية الجدول الخاص بك حتى أنه يمكن أن يكون الخلط مع المدمج في الجدول المزدوج.ولكن من الناحية النظرية ، فإن الجدول Ex1 مع صف واحد في ذلك هو متماثل مع ثنائي.

1.ما هو شبه عمود ؟

إلا إذا أوراكل لها معنى خاص لفترة ، ثم شبه عمود الذي يظهر أن يكون جزء من الجدول ولكن ليس هذا هو في الواقع تخزين البيانات في الجدول.والمثال الكلاسيكي هو رقم الصف:

SELECT ROWNUM, * FROM SomeTable

الإخراج يبدو أن عمود ROWNUM (ROWID في ينفورميكس التي أنا أكثر دراية) ولكن هذا ليس مباشرة المخزنة في قاعدة البيانات.مختلفة DBMS أخرى مختلفة الزائفة الأعمدة لأغراض مختلفة.

بل هو أحيانا من الصعب التمييز بين شبه عمود وظيفة.

العمود الزائف هو قيمة مخصصة أوراكل (المجال الزائف) ولكن لا يتم تخزينها على القرص.

الكاذبات غير المقيدة ليست أعمدة فعلية في جدول ولكنها تتصرف مثل الأعمدة.

على سبيل المثال ، يمكنك تحديد القيم من الخريف الكاذب. ومع ذلك ، لا يمكنك إدراجها أو تحديثها أو حذفها من خلق كاذب. لاحظ أيضًا أنه يُسمح بالألوان الكاذبة في عبارات SQL ، ولكن ليس في البيانات الإجرائية.

ملاحظة:- يُسمح بالألوان الكاذبة في عبارات SQL ، ولكن ليس في البيانات الإجرائية.

SQL> SELECT SYSDATE ، SYSTIMESTAMP من Dual ؛ sysdate systimestamp


13-Dec-07 13-Dec-07 10.02.31.956842 AM +02: 00

الأعمدة الزائفة: Rowid ، Rownum ، المستوى

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top