it-swarm-vi.tech

Bảng kép trong Oracle là 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ì.

214
Brian G

Đó 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;

Xem http://www.adp-gmbh.ch/ora/misc/dual.html

213
Sean McMains

Đó là một bảng giả với một yếu tố trong đó. Nó rất hữu ích vì Oracle không cho phép các câu như

 SELECT 3+4

Bạn có thể khắc phục hạn chế này bằng cách viết

 SELECT 3+4 FROM DUAL

thay thế.

75
mfx

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 khung nhìn nội bộ:

Tôi đã tạo bảng DUAL làm đố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 chính nó, 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ào 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. Đĩa này IO thường logic IO (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 logic IO 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 vật lý hoặc logic IO trên bảng DUAL mặc dù bảng DUAL vẫn thực sự tồn tại.

66
Ivan Bosnic

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"

20
Jorge Ferreira

Đây là bảng đặc biệt trong Oracle. Tôi thường sử dụng nó để tính toán hoặc kiểm tra các biến hệ thống. Ví dụ:

  • Select 2*4 from dual in ra kết quả tính toán
  • Select sysdate from dual in ngày hiện tại của máy chủ.
10
Martin08

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 duy nhất, với một cột có tên "DUMMY" và giá trị "X" như được hiển thị ở đây:

DUMMY
----- 
X
4
AB01

Loại bảng giả bạn có thể chạy các lệnh chống lại 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.

4
Kevan Emmott

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

3
Venkataramesh Kommoju

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

2
Sakin

DUAL là cần thiết trong phát triển PL/SQL để sử dụng các hàm chỉ có sẵn trong SQL

ví dụ.

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

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).

0
Vishwa G

Đó 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.

0
Gonzalo Merayo

một tình huống khác yêu cầu select ... from dual là khi chúng tôi muốn truy xuất 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 DBMS_METADATA.GET_DDL tích hợp:

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.

CHỈNH SỬA

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

0
Newton fan 01

DUAL là một hàng đặc biệt, một bảng cột được hiển thị 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;  
0
Manjunatha B