Tôi đã nghe mọi người nhắc đến bảng này và không chắc nó là về cái gì.
Tôi đã nghe mọi người nhắc đến bảng này và không chắc nó là về cái gì.
Câu trả lời:
Đó là một loại bảng giả với một bản ghi được sử dụng để chọn khi bạn không thực sự quan tâm đến dữ liệu, nhưng thay vào đó muốn kết quả của một số chức năng hệ thống trong một câu lệnh chọn:
ví dụ select sysdate from dual;
Từ Wikipedia
Lịch sử
Bảng DUAL được tạo bởi Chuck Weiss của tập đoàn Oracle để cung cấp một bảng để tham gia vào các chế độ xem nội bộ:
Tôi đã tạo bảng DUAL như một đối tượng cơ bản trong Từ điển dữ liệu Oracle. Nó không bao giờ có nghĩa là được nhìn thấy, mà thay vào đó được sử dụng trong một khung nhìn dự kiến sẽ được truy vấn. Ý tưởng là bạn có thể thực hiện THAM GIA với bảng DUAL và tạo hai hàng trong kết quả cho mỗi một hàng trong bảng của bạn. Sau đó, bằng cách sử dụng GROUP BY, phép nối kết quả có thể được tóm tắt để hiển thị dung lượng lưu trữ cho phạm vi DATA và cho phạm vi INDEX. Tên, DUAL, dường như thích hợp cho quá trình tạo một cặp hàng chỉ từ một. 1
Có thể không rõ ràng ở trên, nhưng bảng DUAL ban đầu có hai hàng trong đó (do đó tên của nó). Ngày nay nó chỉ có một hàng.
Tối ưu hóa
DUAL ban đầu là một bảng và công cụ cơ sở dữ liệu sẽ thực hiện đĩa IO trên bảng khi chọn từ DUAL. IO đĩa này thường là IO logic (không liên quan đến truy cập đĩa vật lý) vì các khối đĩa thường đã được lưu trong bộ nhớ. Điều này dẫn đến một lượng lớn IO logic so với bảng DUAL.
Các phiên bản sau của cơ sở dữ liệu Oracle đã được tối ưu hóa và cơ sở dữ liệu không còn thực hiện IO vật lý hoặc logic trên bảng DUAL mặc dù bảng DUAL vẫn thực sự tồn tại.
Tôi nghĩ rằng bài viết wikipedia này có thể giúp làm rõ.
http://en.wikipedia.org/wiki/DUAL_table
Bảng DUAL là bảng một hàng đặc biệt được hiển thị theo mặc định trong tất cả các cài đặt cơ sở dữ liệu của Oracle. Nó phù hợp để sử dụng trong việc chọn một bút danh như SYSDATE hoặc NGƯỜI DÙNG Bảng có một cột VARCHAR2 (1) được gọi là DUMMY có giá trị là "X"
Một loại bảng giả bạn có thể chạy các lệnh và lấy lại kết quả, chẳng hạn như sysdate. Cũng giúp bạn kiểm tra xem Oracle có hoạt động không và kiểm tra cú pháp sql, v.v.
Một bảng tiện ích trong Oracle chỉ có 1 hàng và 1 cột. Nó được sử dụng để thực hiện một số phép toán số học và thường có thể được sử dụng khi người ta cần tạo ra một đầu ra đã biết.
CHỌN * TỪ kép;
sẽ đưa ra một hàng đơn, với một cột có tên "DUMMY" và giá trị "X" như được hiển thị ở đây:
DUMMY ----- X
Thông tin thêm về DUAL ....
http://asktom.oracle.com/pls/asktom/f?p=100:11 0 ::::P11_QUESTION_ID:1562813956388
Các thí nghiệm ly kỳ được thực hiện ở đây, và những lời giải thích ly kỳ hơn của Tom
Bảng DUAL là bảng một hàng đặc biệt được hiển thị theo mặc định trong tất cả các cài đặt cơ sở dữ liệu của Oracle. Nó phù hợp để sử dụng trong việc chọn một bút danh như SYSDATE hoặc USER
Bảng có một cột VARCHAR2 (1) được gọi là DUMMY có giá trị là "X"
Bạn có thể đọc tất cả về nó trong http://en.wikipedia.org/wiki/DUAL_table
Đó là một đối tượng để đặt trong đó trả về 1 hàng trống. Ví dụ: chọn 1 từ kép; trả về 1
chọn 21 + 44 từ kép; trả lại 65
chọn [chuỗi] .nextval từ kép; trả về giá trị tiếp theo từ chuỗi.
DUAL chúng tôi chủ yếu sử dụng để có được số tiếp theo từ các chuỗi.
Cú pháp: CHỌN 'Sequ_name'.NEXTVAL TỪ DUAL
Điều này sẽ trả về giá trị một hàng một cột (tên cột NEXTVAL).
một tình huống khác đòi hỏi select ... from dual
là khi chúng ta muốn lấy mã (định nghĩa dữ liệu) cho các đối tượng cơ sở dữ liệu khác nhau (như TABLE, FUNCTION, TRIGGER, PACKAGE), bằng cách sử dụng hàm dựng sẵn DBMS_METADATA.GET_DDL
:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
đúng là ngày nay các IDE cung cấp khả năng xem DDL của bảng, nhưng trong các môi trường đơn giản hơn như SQL Plus, điều này có thể thực sự tiện dụng.
BIÊN TẬP
một tình huống chung hơn: về cơ bản, khi chúng ta cần sử dụng bất kỳ thủ tục PL / SQL nào bên trong một câu lệnh SQL tiêu chuẩn hoặc khi chúng ta muốn gọi một thủ tục từ dòng lệnh:
select my_function(<input_params>) from dual;
cả hai công thức đều được lấy từ cuốn sách 'Bí quyết Oracle PL / SQL' của Josh Juneau và Matt Arena
DUAL là một hàng đặc biệt, một bảng cột có mặt theo mặc định trong tất cả các cơ sở dữ liệu của Oracle. Chủ sở hữu của DUAL là SYS.
DUAL là một bảng được tạo tự động bởi Cơ sở dữ liệu Oracle cùng với các hàm dữ liệu. Nó luôn được sử dụng để có được các chức năng của hệ điều hành (như ngày, giờ, biểu thức số học, v.v.)
SELECT SYSDATE from dual;