Saya pernah mendengar orang merujuk ke tabel ini dan tidak yakin tentang apa itu.
Saya pernah mendengar orang merujuk ke tabel ini dan tidak yakin tentang apa itu.
Jawaban:
Ini semacam tabel dummy dengan satu catatan yang digunakan untuk memilih saat Anda sebenarnya tidak tertarik dengan data, tetapi sebaliknya menginginkan hasil dari beberapa fungsi sistem dalam pernyataan pilih:
misalnya select sysdate from dual;
Dari Wikipedia
Sejarah
Tabel DUAL dibuat oleh Chuck Weiss dari perusahaan Oracle untuk menyediakan tabel untuk bergabung dalam pandangan internal:
Saya membuat tabel DUAL sebagai objek mendasar di Kamus Data Oracle. Itu tidak pernah dimaksudkan untuk dilihat sendiri, tetapi digunakan di dalam tampilan yang diharapkan akan ditanyakan. Idenya adalah bahwa Anda bisa melakukan GABUNG ke tabel DUAL dan membuat dua baris di hasilnya untuk setiap satu baris di tabel Anda. Kemudian, dengan menggunakan GROUP BY, gabungan yang dihasilkan dapat diringkas untuk menunjukkan jumlah penyimpanan untuk tingkat DATA dan untuk tingkat INDEX. Nama itu, DUAL, tampaknya cocok untuk proses menciptakan sepasang baris dari satu. 1
Mungkin tidak jelas dari yang di atas, tetapi tabel DUAL asli memiliki dua baris di dalamnya (karenanya namanya). Saat ini hanya memiliki satu baris.
Optimasi
DUAL awalnya adalah sebuah tabel dan mesin database akan melakukan disk IO di atas meja ketika memilih dari DUAL. IO disk ini biasanya IO logis (tidak melibatkan akses disk fisik) karena blok disk biasanya sudah di-cache dalam memori. Ini menghasilkan sejumlah besar IO logis terhadap tabel DUAL.
Versi kemudian dari database Oracle telah dioptimalkan dan database tidak lagi melakukan IO fisik atau logis pada tabel DUAL walaupun tabel DUAL masih benar-benar ada.
Saya pikir artikel wikipedia ini dapat membantu memperjelas.
http://en.wikipedia.org/wiki/DUAL_table
Tabel DUAL adalah tabel satu-baris khusus yang hadir secara default di semua instalasi basis data Oracle. Sangat cocok untuk digunakan dalam memilih pseudocolumn seperti SYSDATE atau USER Tabel memiliki satu kolom VARCHAR2 (1) yang disebut DUMMY yang memiliki nilai "X"
Jenis tabel pseudo yang dapat Anda jalankan perintahnya dan dapatkan kembali hasilnya, seperti sysdate. Juga membantu Anda memeriksa apakah Oracle aktif dan memeriksa sintaks sql, dll.
Tabel utilitas di Oracle dengan hanya 1 baris dan 1 kolom. Ini digunakan untuk melakukan sejumlah operasi aritmatika dan dapat digunakan secara umum di mana orang perlu menghasilkan output yang dikenal.
PILIH * DARI dual;
akan memberikan satu baris, dengan satu kolom bernama "DUMMY" dan nilai "X" seperti yang ditunjukkan di sini:
DUMMY ----- X
Lebih Banyak Fakta tentang DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11*::::P11_QUESTION_ID:1562813956388
Eksperimen yang mendebarkan dilakukan di sini, dan penjelasan Tom yang lebih mendebarkan
Tabel DUAL adalah tabel satu-baris khusus yang hadir secara default di semua instalasi basis data Oracle. Sangat cocok untuk digunakan dalam memilih pseudocolumn seperti SYSDATE atau USER
Tabel memiliki kolom VARCHAR2 (1) tunggal yang disebut DUMMY yang memiliki nilai "X"
Anda dapat membacanya di http://en.wikipedia.org/wiki/DUAL_table
Ini adalah objek untuk dimasukkan ke dalam dari yang mengembalikan 1 baris kosong. Misalnya: pilih 1 dari dua; mengembalikan 1
pilih 21 + 44 dari dual; mengembalikan 65
pilih [urutan] .nextval dari dual; mengembalikan nilai berikutnya dari urutan.
DUAL kami terutama digunakan untuk mendapatkan nomor berikutnya dari urutan.
Sintaks: PILIH 'sequence_name'.NEXTVAL DARI DUAL
Ini akan mengembalikan nilai satu baris satu kolom (nama kolom NEXTVAL).
situasi lain yang mengharuskan select ... from dual
adalah ketika kita ingin mengambil kode (definisi data) untuk objek database yang berbeda (seperti TABEL, FUNGSI, PEMICU, PAKET), menggunakan DBMS_METADATA.GET_DDL
fungsi bawaan:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
Memang benar bahwa saat ini IDE memang menawarkan kemampuan untuk melihat DDL dari sebuah tabel, tetapi dalam lingkungan yang lebih sederhana seperti SQL Plus ini bisa sangat berguna.
EDIT
situasi yang lebih umum: pada dasarnya, ketika kita perlu menggunakan prosedur PL / SQL di dalam pernyataan SQL standar, atau ketika kita ingin memanggil prosedur dari baris perintah:
select my_function(<input_params>) from dual;
kedua resep tersebut diambil dari buku 'Oracle PL / SQL Recipes' oleh Josh Juneau dan Matt Arena
DUAL adalah satu baris khusus, satu tabel kolom hadir secara default di semua database Oracle. Pemilik DUAL adalah SYS.
DUAL adalah tabel yang secara otomatis dibuat oleh Oracle Database bersama dengan fungsi data. Itu selalu digunakan untuk mendapatkan fungsi sistem operasi (seperti tanggal, waktu, ekspresi aritmatika, dll.)
SELECT SYSDATE from dual;