Главная страница
Навигация по странице:

  • Oracle Database 10g Release 2 (10.2.0.1) Express Edition for Microsoft Windows

  • 4.4.1. Предложения SQL

  • 4.4.2. Идентификаторы (имена)

  • 4.4.3. Константы и NULL

  • SELECT

  • Таблица 4.3.

  • Таблица 4.4.

  • Таблица

  • 4.4.5. Зарезервированные и ключевые слова

  • 4.4.6. Псевдостолбцы, таблица DUAL

  • Таблица 4.6.

  • Кириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных. Литература для вузов isbn 9785941577705 в книге рассматриваются основные понятия баз данных и систем управления ими


    Скачать 11.62 Mb.
    НазваниеЛитература для вузов isbn 9785941577705 в книге рассматриваются основные понятия баз данных и систем управления ими
    АнкорКириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных.pdf
    Дата16.04.2018
    Размер11.62 Mb.
    Формат файлаpdf
    Имя файлаКириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных.pdf
    ТипЛитература
    #18127
    страница6 из 28
    1   2   3   4   5   6   7   8   9   ...   28
    4.4. Синтаксические конструкции
    SQL
    Все составляющие языка SQL можно условно разделить на следующие кон- струкции:

    предложения;

    идентификаторы (имена);

    константы;

    операторы;

    зарезервированные и ключевые слова;

    псевдостолбцы и таблица DUAL.
    В книге будут описываться и иллюстрироваться на примерах конструкции стандарта SQL:2003, а также его реализации в Oracle Database 10g — веду- щей СУБД в коммерческом секторе, работающей в разнообразных операци- онных системах (Linux, Solaris, Unix, Windows и пр.) и являющейся основой множества информационных систем.
    Отметим, что Oracle предлагает разработчикам бесплатную версию
    СУБД

    Oracle® Database 10g Express Edition. Эту версию
    (Oracle Database
    XE) для
    Linux или
    Windows читатель может загрузить с
    Web- сайта корпо- рации
    Oracle и
    установить на свой персональный компьютер
    (
    на компакт
    - диске
    , прилагаемом к
    книге
    , размещена версия
    Oracle Database 10g
    Release 2 (10.2.0.1) Express Edition for Microsoft Windows).
    Описание со- держимого компакт
    - диска размещено в приложении Б
    Установив Oracle и использовав другие материалы диска, можно реализо- вать все примеры и упражнения для подробного изучения разделов книги.
    4.4.1. Предложения
    SQL
    В литературе по базам данных нет однозначного названия основной конст- рукции языка. В англоязычной литературе она именуется как statement, а в русскоязычной превращается в: оператор, инструкция, команда, утвер- ждение, предложение. В этой книге мы будем использовать понятие предло-
    жение, которое может состоять из фраз, включающих те или иные конструк- ции SQL.
    Любое предложение SQL состоит из ключевых и зарезервированных слов и слов, определяемых пользователем в соответствии с синтаксическими пра-

    Часть
    II.
    Язык SQL. Извлечение данных
    68
    вилами. Для записи предложений принят свободный формат, но мы рекомен- дуем придерживаться следующих правил:

    каждая фраза предложения должна начинаться с новой строки;

    начало фразы должно быть выровнено с началом остальных фраз предло- жения;

    части фразы, не помещающиеся в строку, должны начинаться с новой строки с некоторым отступом относительно начала всей фразы;

    для записи ключевых слов используйте прописные буквы;

    для записи определяемых пользователем слов используйте строчные бук- вы (кроме записи текстовых констант см. разд. 4.4.3);

    каждое предложение SQL должно заканчиваться символом точка с запя- той (;).
    В синтаксисе предложений используются условные обозначения, показанные в табл. 4.2.
    Таблица 4.2.
    Условные обозначения
    Обозначение
    Описание
    [ ]
    В эти скобки заключаются необязательные синтаксические единицы
    { }
    Конструкция, заключенная в эти скобки, должна рассмат- риваться как одна синтаксическая единица
    |
    Используется для разделения альтернативных синтакси- ческих единиц
    Указывает на то, что непосредственно предшествующая синтаксическая единица может повторяться один или не- сколько раз
    *
    Используется для замены перечня имен всех столбцов таблицы
    Все предложения SQL делятся на три группы:

    предложения манипуляции данными (Data Manipulation Language, DML)

    предложения определения данных (Data Definition Language, DDL)

    предложения определения доступа к данным (Data Control Language, DCL)
    Начнем изучение с предложений манипуляции данными:
    SELECT
    (выбрать),
    INSERT
    (вставить),
    UPDANT
    (обновить) и
    DELETE
    (удалить).

    Глава 4. Основы SQL
    69
    4.4.2. Идентификаторы (имена)
    Идентификаторы — это пользовательские или системные имена объектов баз данных. Они должны или могут присваивается базам данных, таблицам, ограничениям и правилам в таблице, столбцам таблицы, индексам, курсорам, представлениям, процедурам, триггерам и т. п.
    Идентификатор объекта создается при определении объекта. Например, так, как это было проиллюстрировано в разд. 4.3, для создания имен таблицы и ее столбцов:
    CREATE TABLE Блюда
    (
    Код_блюда число,
    Блюдо текст(70),
    Код_вида число,
    Основа текст(10),
    Выход число,
    Труд число
    );
    Затем идентификатор используется для обращения к объектам. Например:
    SELECT Код_блюда, Блюдо
    FROM Блюда;
    Существует два класса идентификаторов:

    обычные идентификаторы;

    идентификаторы с разделителем.
    В SQL:2003 и обычные идентификаторы, и идентификаторы с разделителем могут содержать от 1 до 128 символов, а в СУБД Oracle — до 30 байт (число символов зависит от их набора).
    Обычный идентификатор может содержать любые буквы, цифры и знак под- черкивания (
    _
    ), а в Oracle еще и знаки диеза (

    ) и доллара (
    $
    ). Он должен на- чинаться с буквы и не может содержать пробелов и специальных символов.
    Он не может быть зарезервированным словом (см. разд. 4.4.5), например,
    SELECT
    В обход некоторых из этих ограничений можно использовать идентификато- ры с разделителем, т. е. имена объектов, заключенные в двойные кавычки (
    "
    ).
    В частности, такие идентификаторы можно применять для того, чтобы давать имена с зарезервированными словами, или для того, чтобы использовать в имени обычно не употребляемые там символы (например, "Код блюда").

    Часть
    II.
    Язык SQL. Извлечение данных
    70
    4.4.3. Константы и
    NULL-
    значения
    В SQL константами считаются любые числовые значения, строки символов, значения, связанные с представлением времени (дата и время), и булевы зна- чения, которые не являются идентификаторами или ключевыми словами.
    Числовые константы могут выглядеть так:
    546
    -777
    +36.6 5E6
    -9E-2
    В них допустимы числа со знаком и без знака, в обычной и экспоненциаль- ной записи. В числовых константах разрешается использовать следующий набор символов:
    0 1 2 3 4 5 6 7 8 9 + - $ . E e
    Не следует включать в числовую константу запятую, которая обычно исполь- зуется как разделитель элементов (например, константа 7,654 будет интер- претироваться как 7 и отдельно 654).
    Булевы значения, строковые константы и даты выглядят примерно так:
    TRUE
    'С новым годом'
    15-10-2007 15:06:54 15-ОКТЯБРЬ-2007 15:06:54
    Строковые константы должны всегда заключаться в одинарные кавычки
    (
    ' '
    ) — апострофы. Символы в строковых константах не ограничиваются алфавитными символами. По сути, любой символ из набора символов можно представить в виде строковой константы:
    '1989'
    '57.321 + 12345'
    'Это тоже строковая константа'
    '15-ОКТЯБРЬ-2007 15:06:54'
    Все приведенные примеры фактически являются совместимыми с типом данных
    CHARACTER
    (см. разд. 4.5). Не путайте строковую константу '1989'
    с числовой константой
    1989
    . Не стоит использовать строковые константы в арифметических выражениях без явного их преобразования в числовой тип.
    Хотя в Oracle некоторые из них и преобразуются автоматически. Например, при выполнении предложения
    SELECT '1989' + 1234.56 FROM DUAL;

    Глава 4. Основы SQL
    71
    будет получен результат суммирования 1989 с 1234.56:
    '1989'+1234.56
    --------------
    3223,56 а при выполнении предложения
    SELECT '1989' + '1234.56' FROM DUAL; появится сообщение об ошибке:
    ORA-01722: неверное число
    При необходимости отражения в строковой константе символа одинарной кавычки, необходимо написать этот символ два раза. Например, для вывода текста:
    - 'К нам придет Д'Артаньян ?' придется написать запрос:
    SELECT '- '' К нам придет Д''Артаньян ? ''' FROM DUAL;
    Заметим, что все СУБД используют специальное значение —
    NULL
    (пустое или несуществующее значение), которое может быть записано в поле табли- цы базы данных.
    NULL
    -значения нужно всегда рассматривать как "отсутствие информации", а не как пустые строки, пробелы или нули.
    Существует несколько кратких правил о поведении
    NULL
    -значений.

    Значения типа
    NULL
    нельзя помещать в столбцы, определенные как
    NOT
    NULL

    Значения типа
    NULL
    не равны друг другу. Распространенная ошибка срав- нивать два столбца, содержащие значения
    NULL
    , и ожидать, что они совпа- дут. (Правильный метод идентификации значений
    NULL
    , в предложениях
    WHERE
    или в булевых выражениях — это использование таких выражений, как value IS NULL
    и value IS NOT NULL
    .)

    Столбец, содержащий значение
    NULL
    , игнорируется при вычислениях аг- регатных значений, таких, как
    AVG
    ,
    SUM
    или
    COUNT

    Если столбцы, содержащие значения
    NULL
    , перечислены в предложении
    GROUP BY
    запроса, выходные данные запроса будут содержать для значе- ний
    NULL
    всего одну строку. По сути дела стандарт рассматривает все най- денные значения
    NULL
    как одну группу.

    В предложениях
    DISTINCT
    или
    ORDER BY
    , как и в предложении
    GROUP BY
    , значения
    NULL
    не отличаются друг от друга. Для предложения
    ORDER BY
    Oracle устанавливает значения
    NULL
    в конец получаемого набора данных.

    Часть
    II.
    Язык SQL. Извлечение данных
    72
    4.4.4. Операторы
    Оператор — это символ или имя, обозначающий действие, выполняемое над одним или несколькими выражениями. Они, как правило, делятся на сле- дующие категории: арифметические операторы, оператор конкатенации, опе- раторы присваивания, операторы сравнения, логические операторы и унарные операторы.
    Арифметические операторы выполняют математические действия над двумя значениями любого типа, относящегося к числовой категории (табл. 4.3).
    Таблица_4.3.'>Таблица 4.3. Арифметические операторы
    Оператор
    Описание
    +
    Сложение

    Вычитание
    *
    Умножение
    /
    Деление
    Операторы
    +
    и

    могут применяться для выполнения арифметических опера- ций над датами.
    Оператор конкатенации (
    ||
    ) соединяет две отдельные текстовые строки в одно строковое значение.
    Оператор присваивания (
    =
    ) присваивает значение переменной или псевдо- ниму заголовка столбца. В Oracle используется оператор присваивания
    :=
    Операторы сравнения проверяют равенство или неравенство двух выраже- ний (табл. 4.4). Результатом операции сравнения является булево значение:
    TRUE
    (верно),
    FALSE
    (неверно) или
    UNKNOWN
    (неизвестно). Если хотя бы одно из сравниваемых значений равно
    NULL
    , то результат также будет
    NULL
    Таблица 4.4. Операторы сравнения
    Оператор
    Описание
    =
    Равно
    >
    Больше
    <
    Меньше

    Глава 4. Основы SQL
    73
    Таблица 4.4 (окончание)
    Оператор
    Описание
    >=
    Больше или равно
    <=
    Меньше или равно
    <>
    Не равно
    IS NULL
    Имеет ли значение
    NULL
    IS NOT NULL
    Не имеет ли значение
    NULL
    Эти операторы наиболее часто используются во фразе
    WHERE
    для отбора строк, соответствующих условиям поиска (см. примеры в разд. 4.3).
    Логические операторы обычно применяются во фразе
    WHERE
    для проверки истинности какого-либо условия (табл. 4.5). Логические операторы возвра- щают булево значение
    TRUE
    или
    FALSE
    Таблица
    4.5.
    Логические операторы
    Оператор
    Описание
    ALL
    TRUE
    , если весь набор сравнений даст результат
    TRUE
    AND
    TRUE
    , если оба булевых выражения дают результат
    TRUE
    ANY
    TRUE
    , если хотя бы одно сравнение из набора даст ре- зультат
    TRUE
    BETWEEN
    TRUE
    , если операнд находится внутри диапазона
    EXISTS
    TRUE
    , если подзапрос возвращает хотя бы одну строку
    IN
    TRUE
    , если операнд равен одному выражению из списка или одной или нескольким строкам, возвращаемым под- запросом
    LIKE
    TRUE
    , если операнд совпадает с шаблоном
    NOT
    Обращает значение любого другого булевого оператора
    OR
    TRUE
    , если любое булево выражение равно
    TRUE
    SOME
    TRUE
    , если несколько сравнений из набора дают резуль- тат
    TRUE

    Часть
    II.
    Язык SQL. Извлечение данных
    74
    Унарные операторы выполняют операцию над одним выражением числовой категории:
    +
    (числовое значение становится положительным) и

    (числовое значение становится отрицательным).
    Приоритет операторов
    Когда в выражении присутствуют несколько операторов, последовательность их выполнения определяет приоритет операторов. Далее приведен список операторов, в котором они расположены в порядке от самого высокого к са- мому низкому приоритету:
    1.
    ()
    (выражения, стоящие в скобках).
    2.
    +
    ,
    -
    (унарные операторы).
    3.
    *
    ,
    /
    (математические операторы).
    4.
    +
    ,
    -
    (арифметические операторы).
    5.
    =
    ,
    >
    ,
    <
    ,
    >=
    ,
    <=
    ,
    <>
    (операторы сравнения).
    6.
    IS NULL
    7.
    NOT
    8.
    AND
    9.
    ALL
    ,
    ANY
    ,
    BETWEEN
    ,
    IN
    ,
    LIKE
    ,
    OR
    ,
    SOME
    10.
    =
    (присваивание значения переменной).
    Если операторы имеют одинаковый приоритет, вычисления производятся слева направо. Для того чтобы изменить применяемый по умолчанию поря- док выполнения операторов, в выражении используются скобки. Выражения, заключенные в скобки, вычисляются первыми, а уже после них — все, что находится за скобками. Если применяются вложенные скобки, то первым выполняются выражения в наиболее глубоко вложенных скобках.
    4.4.5. Зарезервированные и ключевые слова
    В SQL существуют некоторые слова и фразы, имеющие особую значимость.
    Ключевые слова SQL — это слова, которые настолько тесно связаны с функ- ционированием реляционной базы данных, что их нельзя использовать ни для каких других целей.
    В SQL:2003 определяется свой список зарезервированных и ключевых слов.
    Кроме этого, существующие СУБД имеют собственные списки подобных

    Глава 4. Основы SQL
    75
    слов (в том числе и Oracle). Эти слова нельзя использовать в качестве иден- тификаторов (символом * отмечены слова стандарта SQL:2003):
    ACCESS
    DEFAULT
    *
    INTEGER
    *
    ONLINE
    START
    ADD
    *
    DELETE
    *
    INTERSECT
    *
    OPTION
    *
    SUCCESSFUL
    ALL
    *
    DESC
    *
    INTO
    *
    OR
    *
    SYNONYM
    ALTER
    *
    DISTINCT
    *
    IS
    *
    ORDER
    *
    SYSDATE
    AND
    *
    DROP
    *
    LEVEL
    *
    PCTFREE
    TABLE
    *
    ANY
    *
    ELSE
    *
    LIKE
    *
    PRIOR
    *
    THEN
    *
    AS
    *
    EXCLUSIVE
    LOCK
    PRIVILEGES
    *
    TO
    *
    ASC
    *
    EXISTS
    LONG
    PUBLIC
    *
    TRIGGER
    AUDIT
    FILE
    MAXEXTENTS
    RAW
    UID
    BETWEEN
    *
    FLOAT
    *
    MINUS
    RENAME
    UNION
    *
    BY
    *
    FOR
    *
    MLSLABEL
    RESOURCE
    UNIQUE
    *
    CHAR
    *
    FROM
    *
    MODE
    REVOKE
    *
    UPDATE
    *
    CHECK
    *
    GRANT
    *
    MODIFY
    ROW
    USER
    *
    CLUSTER
    GROUP
    *
    NOAUDIT
    ROWID
    VALIDATE
    COLUMN
    HAVING
    *
    NOCOMPRESS
    ROWNUM
    VALUES
    *
    COMMENT
    IDENTIFIED
    NOT
    *
    ROWS
    *
    VARCHAR
    *
    COMPRESS
    IMMEDIATE
    *
    NOWAIT
    SELECT
    *
    VARCHAR2
    CONNECT
    *
    IN
    *
    NULL
    *
    SESSION
    *
    VIEW
    *
    CREATE
    *
    INCREMENT
    NUMBER
    SET
    *
    WHENEVER
    *
    CURRENT
    *
    INDEX
    OF
    *
    SHARE
    WHERE
    DATE
    *
    INITIAL
    OFFLINE
    SIZE
    *
    WITH
    *
    DECIMAL
    *
    INSERT
    *
    ON
    *
    SMALLINT
    *
    4.4.6.
    Псевдостолбцы, таблица
    DUAL
    и еще о словах, которые нежелательно
    использовать пользователям
    Кроме зарезервированных слов в Oracle существуют и другие, которые име- ют специальное значение. Это имена типов данных (см. разд. 4.5) и имена встроенных функций (см. разд. 4.6). Не следует использовать имена схем,

    Часть
    II.
    Язык SQL. Извлечение данных
    76
    ключевые слова
    DIMENSION
    ,
    SEGMENT
    ,
    ALLOCATE
    ,
    DISABLE
    , имена псевдостолб- цов и таблицы
    DUAL
    (табл. 4.6), а также слова, начинающиеся с
    SYS_
    Таблица 4.6.
    Псевдостолбцы и таблица
    DUAL
    Имя
    Значение
    Имя_последователь- ности.CURRVAL
    Текущее значение последовательности для текущего сеанса (
    Имя_послед.NEXTVAL
    ) должно быть объявлено первым
    Имя_последователь- ности.NEXTVAL
    Следующее значение последовательности для текуще- го сеанса
    Имя_таблицы.LEVEL
    1

    для корня,
    2

    для дочернего уровня корня и т.
    д.
    Используется в команде
    SELECT...CONNECT BY
    , кото- рая реализует иерархические структуры
    ROWID
    Уникальный идентификатор строки таблицы. Для этого идентификатора существует специальный тип данных
    ROWID
    ROWNUM
    Позиция отдельной строки среди строк, отобранных запросом.
    Oracle выбирает строки в произвольном порядке и оценивает
    ROWNUM
    перед сортировкой с помощью фразы
    ORDER BY
    . Однако если
    ORDER BY
    использует индексы, то порядок
    ROWNUM
    может отличаться от его порядка без индекса
    DUAL
    Таблица, автоматически создаваемая Oracle для каж- дого пользователя. В ней один столбец с именем
    DUMMY
    и типом данных
    VARCHAR 2(1)
    . В единственной строке этой таблицы хранится значение 'X'
    . Отметим,
    что указанное значение и его описание не имеет боль- шого значения, так как чаще всего эта таблица исполь- зуется для вывода значения какого
    - либо выражения любого типа. Например, для получения текущей даты и времени можно дать запрос:
    SELECT TO_CHAR(SYSDATE, 'DD-MON-YYYY
    HH24:MI:SS') FROM DUAL; который, при выполнении запроса в 18 часов 15 минут
    42 секунды 27 января 2008 года, выдаст результат:
    27-янв-2008 18:15:42
    Можно также дать запрос
    SELECT SIN(3) FROM DUAL; получив 0.141120008059867222100744802808110 27987 и
    т.
    п.

    Глава 4. Основы SQL
    77
    1   2   3   4   5   6   7   8   9   ...   28


    написать администратору сайта