Oracle'daki ikili tablo nedir?


Yanıtlar:


231

Verilerle gerçekten ilgilenmediğiniz zaman seçmek için kullanılan tek bir kayıt içeren bir kukla tablodur, ancak bunun yerine bir select deyiminde bazı sistem işlevlerinin sonuçlarını almak istersiniz:

Örneğin select sysdate from dual;

Bkz. Http://www.adp-gmbh.ch/ora/misc/dual.html


80

İçinde bir element bulunan bir kukla tablo. Yararlı çünkü Oracle gibi ifadelere izin vermiyor

 SELECT 3+4

Bu kısıtlamayı yazarak çözebilirsiniz

 SELECT 3+4 FROM DUAL

yerine.


70

Gönderen Wikipedia

Tarih

DUAL tablosu, Oracle şirketlerinden Chuck Weiss tarafından dahili görünümlere katılmak için bir tablo sağlamak üzere oluşturuldu:

DUAL tablosunu, Oracle Data Dictionary'de temel alınan bir nesne olarak oluşturdum. Asla kendini görmek için tasarlanmamıştı, bunun yerine sorgulanması beklenen bir görünüm içinde kullanılıyordu. Fikir, DUAL tablosuna bir JOIN yapabilmeniz ve tablonuzdaki her bir satır için sonuçta iki satır oluşturabilmenizdi. Daha sonra GROUP BY kullanılarak sonuçta elde edilen birleşim, VERİ kapsamı ve INDEX kapsam (lar) ı için depolama miktarını göstermek üzere özetlenebilir. DUAL adı, sadece birinden bir çift satır oluşturma sürecine uygun görünüyordu. 1

Yukarıdakilerden açık olmayabilir, ancak orijinal DUAL tablosunda iki satır vardı (dolayısıyla adı). Bugünlerde sadece bir satır var.

Optimizasyon

DUAL başlangıçta bir tablodur ve veritabanı motoru DUAL arasından seçim yaparken tablodaki disk IO'yu gerçekleştirir. Disk blokları genellikle zaten bellekte önbelleğe alındığından, bu disk GÇ genellikle mantıksal GÇ'dir (fiziksel disk erişimini içermez). Bu, DUAL tablosuna karşı büyük miktarda mantıksal IO ile sonuçlandı.

Oracle veritabanının sonraki sürümleri optimize edildi ve DUAL tablosu hala mevcut olmasına rağmen veritabanı artık DUAL tablosunda fiziksel veya mantıksal GÇ gerçekleştirmiyor.


21

Bu wikipedia makalesinin açıklığa kavuşmasına yardımcı olabileceğini düşünüyorum.

http://en.wikipedia.org/wiki/DUAL_table

DUAL tablosu, tüm Oracle veritabanı kurulumlarında varsayılan olarak mevcut olan tek satırlık özel bir tablodur. SYSDATE veya USER gibi bir sözde sütun seçmede kullanım için uygundur Tabloda, "X" değerine sahip DUMMY adlı tek bir VARCHAR2 (1) sütunu vardır.


10

Oracle'ın özel masası. Sıklıkla hesaplamalar veya sistem değişkenlerini kontrol etmek için kullanıyorum. Örneğin:

  • Select 2*4 from dual hesaplamanın sonucunu yazdırır
  • Select sysdate from dual sunucunun geçerli tarihini yazdırır.

4

Sysdate gibi komutları çalıştırabileceğiniz ve sonuçları geri alabileceğiniz bir sözde tablo. Ayrıca Oracle'ın çalışıp çalışmadığını ve sql sözdizimini vb. Kontrol etmenize yardımcı olur.


4

Oracle'da yalnızca 1 satır ve 1 sütun içeren bir yardımcı program tablosu. Bir dizi aritmetik işlemi gerçekleştirmek için kullanılır ve genellikle kişinin bilinen bir çıktı üretmesi gerektiğinde kullanılabilir.

SEÇ * çiftten;

burada gösterildiği gibi "DUMMY" adlı tek bir sütun ve "X" değeri olan tek bir satır verecektir:

DUMMY
----- 
X


2

DUAL tablosu, tüm Oracle veritabanı kurulumlarında varsayılan olarak mevcut olan tek satırlık özel bir tablodur. SYSDATE veya USER gibi bir sahte sütun seçiminde kullanım için uygundur.

Tabloda, "X" değerine sahip DUMMY adlı tek bir VARCHAR2 (1) sütunu vardır.

Bununla ilgili her şeyi http://en.wikipedia.org/wiki/DUAL_table adresinde okuyabilirsiniz


1

DUAL, yalnızca SQL'de bulunan işlevleri kullanmak için PL / SQL geliştirmede gereklidir

Örneğin

DECLARE
x XMLTYPE;
BEGIN
SELECT xmlelement("hhh", 'stuff')
INTO x
FROM dual;
END;

0

Bu geri dönüş 1 boş satır koymak için bir nesnedir. Örneğin: çiftten 1'i seçin; 1 döndürür

çiftten 21 + 44 seçin; 65 döndürür

ikili [sıra] seçin. diziden sonraki değeri döndürür.


0

ÇİFT biz esas olarak dizilerden sonraki sayıyı almak için kullanılır.

Sözdizimi: SEÇ 'sıra_adı'. DUAL'DEN SONRAKİ

Bu, bir satır bir sütun değeri (NEXTVAL sütun adı) döndürür.


1
11g'den beri bu gerekli değildir. Sekanslar doğal olarak PL / SQL'de kullanılabilir.
Jon Heller

0

gerektiren başka bir durum select ... from dual , yerleşik DBMS_METADATA.GET_DDLişlevi kullanarak farklı veritabanı nesneleri (TABLE, FUNCTION, TRIGGER, PACKAGE gibi) için kod (veri tanımı) almak istediğimiz durumdur :

select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;

select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;

günümüzde IDE'lerin bir tablonun DDL'sini görüntüleme yeteneği sundukları doğrudur, ancak SQL Plus gibi daha basit ortamlarda bu gerçekten kullanışlı olabilir.

DÜZENLE

daha genel bir durum: temel olarak, standart bir SQL deyimi içinde herhangi bir PL / SQL yordamı kullanmamız gerektiğinde veya komut satırından bir yordamı çağırmak istediğimizde:

select my_function(<input_params>) from dual;

her iki tarif de Josh Juneau ve Matt Arena'nın 'Oracle PL / SQL Tarifleri' kitabından alınmıştır.


0

DUAL, tüm Oracle veritabanlarında varsayılan olarak sunulan özel bir satır, bir sütun tablosudur. DUAL'in sahibi SYS'dir.

DUAL, veri işlevleri ile birlikte Oracle Database tarafından otomatik olarak oluşturulan bir tablodur. Her zaman işletim sistemi işlevlerini (tarih, saat, aritmetik ifade vb.) Almak için kullanılır.

SELECT SYSDATE from dual;  
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.