кодесурса
«SQL

ДВОЙНАЯ таблица SQL

script1adsense2code
script1adsense3code

Что такое ДВОЙНОЙ стол?

DUAL - это специальная таблица с одной строкой и одним столбцом, присутствующая по умолчанию во всех базах данных Oracle. Владельцем DUAL является SYS (SYS владеет словарем данных, поэтому DUAL является частью словаря данных.) Но доступ к DUAL может получить каждый пользователь. В таблице есть один столбец VARCHAR2 (1) с именем DUMMY, который имеет значение «X». MySQL позволяет указывать DUAL в виде таблицы в запросах, которым не нужны данные из каких-либо таблиц. В SQL Server DUAL таблица не существует, но вы можете ее создать.
Таблица DUAL была создана Чарльзом Вейссом из корпорации Oracle для предоставления таблицы для объединения во внутренние представления.

Смотрите следующие команды:

Следующая команда отображает структуру таблицы DUAL:

DESC DUAL;

Выход:

 Имя Нуль? Тип
--------------------------- ------
DUMMY VARCHAR2 (1)

Следующая команда отображает содержимое таблицы DUAL:

SELECT * FROM DUAL;

Выход:

 DUMMY
----------
Икс

Следующая команда отображает количество строк таблицы DUAL:

SELECT COUNT(*) FROM DUAL;

Выход:

 COUNT (*)
----------
         1

Следующая команда отображает строковое значение из таблицы DUAL:

SELECT 'ABCDEF12345' FROM DUAL;

Выход:

 «ABCDEF1234
-----------
ABCDEF12345

Следующая команда отображает числовое значение из таблицы DUAL:

SELECT 123792.52 FROM DUAL;

Выход:

 123792,52
----------
 123792,52

Следующая команда пытается удалить все строки из таблицы DUAL:

DELETE FROM DUAL;

Выход:

 УДАЛИТЬ ИЗ ДВОЙНОГО
            *
ОШИБКА в строке 1:
ORA-01031: недостаточные привилегии

Следующая команда пытается удалить все строки из таблицы DUAL:

TRUNCATE TABLE DUAL;

Примечание. Команда DELETE используется для удаления строк из таблицы. После выполнения операции DELETE вам нужно выполнить COMMIT или ROLLBACK транзакцию, чтобы сделать изменение постоянным или отменить его. TRUNCATE удаляет все строки из таблицы. Операция не может быть отменена.

Выход:

 TRUNCATE TABLE DUAL
               *
ОШИБКА в строке 1:
ORA-00942: таблица или представление не существует

Следующая команда выбирает две строки из двух:

SELECT dummy FROM DUAL 
UNION ALL 
SELECT dummy FROM DUAL;

Выход

 DUMMY
----------
Икс
Икс

Пример - 1

Вы также можете проверить системную дату из таблицы DUAL, используя следующую инструкцию:

SELECT sysdate FROM DUAL ;

Выход:

 SYSDATE
---------
11-ДЕК-10

Пример - 2

Вы также можете проверить арифметическое вычисление из таблицы DUAL, используя следующую инструкцию:

SELECT 15+10-5*5/5 FROM DUAL;

Выход:

 15 + 10-5 * 5/5
-----------
         20

Пример - 3

Следующий код отображает числа 1..10 от DUAL:

SELECT level 
FROM DUAL 
CONNECT BY level <=10;

Выход:

 УРОВЕНЬ
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10

Пример - 4

В следующем коде DUAL предполагает использование декодирования с NULL.

 SELECT декодировать (ноль, ноль, 1,0) 
ОТ ДВОЙНОГО;

Выход:

 ДЕКОДИРОВАНИЯ (NULL, NULL, 1,0)
---------------------
                    1

ДВОЙНАЯ таблица: Oracle против MySQL

Мы уже узнали, что DUAL - это специальная таблица из одной строки в один столбец. Для Oracle это полезно, потому что Oracle не допускает такие выражения, как:

 ВЫБЕРИТЕ 15 + 10-5 * 5/5;

Выход:

 ВЫБЕРИТЕ 15 + 10-5 * 5/5
                 *
ОШИБКА в строке 1:
ORA-00923: ключевое слово FROM не найдено там, где ожидается

Но следующая команда будет выполнена (см. Вывод предыдущего примера):

SELECT 15+10-5*5/5 FROM DUAL;

В случае MySQL будет выполнена следующая команда:

SELECT 15+10-5*5/5;

Выход:

«MySQL

В следующей таблице показано использование фиктивной таблицы в стандартной СУБД.

СУБД Концепция пустышки
MSSQL Нет концепции пустышки.
MySQL Нет концепции пустышки.
оракул Пустой стол: ДВОЙНОЙ.
Informix Начиная с версии 11.10, фиктивная таблица была включена: sysmaster: sysdual
PostgreSQL Нет концепции пустышки.
DB2 Пустой стол: SYSIBM.SYSDUMMY1

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущий: вывод порядка SQL по номеру столбца с группировкой по
Далее: SQL-инъекция

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code