- •Обзор баз данных Oracle
- •Обзор Oracle
- •Теоретические и физические аспекты реляционных баз данных
- •Рсубд против систем плоских файлов: быстрое ознакомление
- •Закрепление пройденного материала
- •Упражнения
- •Реализации рсубд и орсубд Oracle
- •Дисковые компоненты Oracle
- •Что такое орсубд
- •Закрепление пройденного материала
- •Упражнения
- •Процесс сервера и фоновые процессы Oracle
- •Использование и преимущества pl/sql
- •Закрепление пройденного материала
- •Упражнения
- •Написание основных операторов sql
- •Возможности операторов sql select
- •Познакомьтесь: sql* Plus
- •Закрепление пройденного материала
- •Упражнения
- •Выполнение операторов select
- •Задание префиксов столбцам по имени таблицы
- •Арифметические данные и данные из таблиц
- •Старшинство операторов
- •Обработка значений null
- •Замена заголовков столбцов псевдонимами
- •Объединение столбцов с помощью конкатенации
- •Закрепление пройденного материала
- •Упражнения
- •Различия между командами sql и sql*Plus
- •Использование текстового редактора
- •Запись команд sql в сценариях
- •Другие команды sql*Plus, о которых следует знать
- •Закрепление пройденного материала
- •Упражнения
- •Резюме Обзора баз данных Oracle
- •Двухминутное погружение в пройденное
- •Вопросы для самопроверки
- •Вопросы ко всей теме
Обработка значений null
Иногда в результате запроса информации получается "пустой" результат. В терминах баз данных "пусто" называется NULL. В теории множеств, математическом фундаменте реляционных баз данных, NULL представляет значение пустого набора данных (множества) или множества, не содержащего значений. Другими словами, NULL — это не символ пробела, отображаемый при нажатии вами соответствующей клавиши, и не что-то эквивалентное нулю! NULL обозначает отсутствие информации. Пока явно не указывается что-то другое, столбец таблицы проектируется таким образом, что в нем не размещено никакой информации. Пример выборки значения NULL иллюстрируется столбцом MGR следующего блока кода в строке EMPNO 7839:
SQL> select empno, ename, mgr
2 from emp;
EMPNO ENAME MGR
7369 SMITH 7902
7499 ALLEN 7698
7521 WARD 7698
7566 JONES 7839
7654 MARTIN 7693
7698 BLAKE 7839
7782 CLARK 7839
7788 SCOTT 7566
7839 KING
7844 TURNER 7698
7876 ADAMS 7788
7900 JAMES 7698
7902 FORD 7566
7934 MILLER 7782
Однако бывают случаи, когда мы желаем заменить NULL на некоторое значение. Для таких случаев в Oracle имеется функциональная возможность, реализуемая с помощью специальной функции, называемой nvl ( ). Допустим, вы не хотите видеть пробелы на месте информации о менеджере, которому подчиняется сотрудник- Вы желаете, чтобы взамен значения NULL в выходных данных запроса выводился нуль (0). В следующем блоке кода приводится запрос, с помощью которого можно добиться желаемого результата:
SQI> select empno, ename, nvl (mgr ,0)
2 from emp;
EMPNO ENAME NVL(MGR,0)
7369 SMITH 7902
7499 ALLEN 7698
7521 WARD 7698
7566 JONES 7839
7654 MARTIN 7698
7698 BLAKE 7339
7782 CLARK 7839
7788 SCOTT 7566
7839 KING 0
7844 TURNER 7698
7876 ADAMS 7788
7900 JAMES 7698
7902 FORD 7566
7934 MILLER 77S2
В общем случае синтаксис для функции nvl { } имеет следующий вид: NVL(имя_cтолбцa, значение_если_пи11). Обратите внимание на то, что указанный в nvl ( ) столбец содержит реальное значение. Это значение равняется тому, которое возвращает Oracle; если же значение столбца равно NULL, возвращается специальная строка. Функцию nvl { ) можно использовать-для столбцов, содержащих любые типы данных, однако следует помнить, что специфицированное (указанное) значение, которое будет возвращено в том случае, если значение столбца — NULL, должно быть того же типа, который был задан для столбца.
Ключевое слово distinct
Если мы вернемся к тому блоку кода, где были перечислены все сотрудники из таблицы ЕМР, то обнаружим кое-что интересное в столбце JOB (должность). Многие сотрудники имеют одинаковые названия занимаемых должностей. Иногда может возникнуть ситуация, когда вам для какого-либо столбца потребуются только уникальные значения, хотя вы знаете, что в нем имеется множество повторяющихся значений. Для того чтобы это можно было сделать, Oracle предлагает ключевое слово distinct. Для получения уникальных значений столбца, содержащего дубликаты (повторяющиеся значения), вы должны всего лишь указать во фразе columns перед ссылкой на столбец ключевое слово distinct, например, следующим образом:
SQL> select distinct job
2 from emp;
JOB
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
Совет Чтобы ключевое слово distinct сработало, в SQL-запросе оно должно появиться непосредственно после ключевого слова select.
Если после ключевого слова distinct в операторе select появляется более одного имени столбца, Oracle пытается определить все различающиеся сочетания в названных столбцах. Взгляните на пример:
SQL> select distinct job, empno
from emp;
JOB EMPNO
ANALYST 7778
ANALYST 7902
CLERK 7369
CLERK 7876
CLERK 7900
CLERK 7934
MANAGER 7566
MANAGER 7698
MANAGER 7782
PRESIDENT 7839
SALESMAN 7499
SALESMAN 7521
SALESMAN 7654
SALESMAN 7844
