Единое окно доступа к образовательным ресурсам

SQL в примерах и задачах: Учебное пособие

Голосов: 6

Изложены основные понятия и способы применения SQL - популярного языка запросов к реляционным базам данных. Описаны приемы манипулирования данными и формирования запросов различной степени сложности. Каждая глава пособия сопровождается упражнениями, которые позволяют закрепить на практике теоретические знания. Книга является учебным пособием для студентов, обучающихся по направлению "Прикладная математика и информатика", а также может быть использована для самостоятельного изучения языка SQL.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
         И.Ф. Астахова
    А.П. Толстобров
    В.М. Мельников




В ПРИМЕРАХ И ЗАДАЧАХ


УДК 004.655.3(075.8)
ББК 32.973.26-018.1я73
      А91                                                                                              Оглавление
                               Рецензенты:
                       доцент кафедры АСИТ Московского                            Введение                                                     8
                 государственного университета Н.Д. Васюкова;

         Воронежское научно-производственное предприятие «РЕЛЭКС»;
                  кафедра информатики и МПМ Воронежского
                                                                                  1. Основные понятия и определения                           10
                государственного педагогического университета;                     1.1. Основные понятия реляционных баз данных                10
              доктор технических наук, профессор, зав. кафедрой                    1.2. Отличие SQL от процедурных языков программирования ... 12
         математического моделирования Воронежской государственной
                                                                                   1.3. Интерактивный и встроенный SQL                         13
                    технологической академии В.В. Сысоев;
                                                                                   1.4. Составные части SQL                                    13
      доктор физико-математических наук, профессор, декан факультета ,
компьютерных наук Воронежского государственного университета Э.К. Алгазинов        1.5. Типы данных SQL                                        14
                                                                                         1.5.1. Тип данных «строка символов»                   14
                                                                                         1.5.2. Числовые типы данных                           15
                                                                                         1.5.3. Дата и время                                   16
                                                                                         1.5.4. Неопределенные или пропущенные данные
      Астахова И.Ф.                                                                             (NULL)                                         17
А91     SQL в примерах и задачах; Учеб. пособие / И.Ф. Астахова, А.П. Тол-         1.6. Используемые термины и обозначения                     18
      стобров,В.М. Мельников.— Мн.: Новое знание, 2002. — 176 с.                   1.7. Учебная база данных                                    18
         ISBN 985-475-004-3.
                                                                                  2. Выборка данных (оператор SELECT)                         23
          Изложены основные понятия и способы применения SQL — популярного
      языка запросов к реляционным базам данных. Описаны приемы манипулирова-      2.1. Простейшие SELECT-запросы                             23
      ния данными и формирования запросов различной степени сложности. Каждая      2.2. Операторы IN, BETWEEN, LIKE, is NULL                   28
      глава пособия сопровождается упражнениями, которые позволяют закрепить на    2.3. Преобразование вывода и встроенные функции             31
      практике теоретические знания.
          Книга является учебным пособием для студентов, обучающихся по направ-          2.3.1. Числовые, символьные и строковые константы ... 31
      лению «Прикладная математика и информатика», а также может быть использо-          2.3.2. Арифметические операции для преобразования
      вана для самостоятельного изучения языка SQL.                                             числовых данных                                32
                                                                                         2.3.3. Операция конкатенации строк                    33
                                                     УДК 004.655.3(075.8)                2.3.4. Функции преобразования символов в строке..... 34
                                                     ББК 32.973.26-018.1я73              2.3.5. Строковые функции                              34
                                                                                         2.3.6. Функции работы с числами                       37
                                                                                         2.3.7. Функции преобразования значений                39
                                                                                   2.4. Агрегирование и групповые функции                      43
                                                                                   2.5. Пустые значения (NULL) в агрегирующих функциях         46
                                        Астахова И.Ф., Толстобров А.П.,
                                                                                         2.5.1. Влияние NULL-значений в функции COUNT          46
                                        Мельников В.М., 2001                             2.5.2. Влияние NULL-значений в функции AVG            47
ISBN 985-475-004-3                      Оформление. ООО «Новое знание», 2002


                                                                    Оглавление
                                                      Оглавление

                                                                     4.4. Удаление таблицы                                         90
 2.6.   Результат действия трехзначных условных операторов ... 47
                                                                     4.5. Офаничения на множество допустимых значений данных ...91
 2.7.   Упорядочение выходных полей (ORDER BY)                 49
                                                                            4.5.1. Ограничение NOT NULL                            92
 2.8.   Вложенные подзапросы                                   51           4.5.2. Уникальность как ограничение на столбец         93
 2.9.   Формирование связанных подзапросов                   . 53          4.5.3. Уникальность как ограничение таблицы             94
2.10.   Связанные подзапросы в HAVING                          54           4.5.4. Присвоение имен ограничениям                    95
2.11.   Использование оператора EXISTS                         56          4.5.5. Ограничение первичных ключей                     96
2.12.   Операторы сравнения с множеством                                   4.5.6. Составные первичные ключи                        96
        значений IN, ANY, All                                  58          4.5.7. Проверка значений полей                          97
2.13. Особенности применения операторов ANY, ALL, EXISTS                   4.5.8. Проверка ограничивающих условий
      при обработке пустых значений (NULL)                    60                   с использованием составных полей                98
2.14. Использование COUNT вместо EXISTS                       62           4.5.9. Установка значений по умолчанию.                 99
2.15. Оператор объединения UNION                              63     4.6. Поддержка целостности данных                            101
2.16. Устранение дублирования в UNION                         64           4.6.1. Внешние и родительские ключи                    101
2.17. Использование UNION с ORDER BY                           66          4.6.2. Составные внешние ключи                         102
2.18. Внешнее объединение                                   67             4.6.3. Смысл внешнего и родительского ключей           102
                                                                           4.6.4. Ограничение FOREIGN KEY (внешнего ключа)... 103
2.19. Соединение таблиц с использованием оператора JOIN ... 69
                                                                           4.6.5. Внешний ключ как ограничение таблицы            103
      2.19.1. Операции соединения таблиц посредством
                                                                           4.6.6. Внешний ключ как ограничение столбца            105
              ссылочной целостности                         70
                                                                           4.6.7. Поддержание ссылочной целостности
      2.19.2. Внешнее соединение таблиц                     72
                                                                                   и ограничения значений родительского ключа ... 107
      2.19.3. Использование псевдонимов при соединении
                                                                           4.6.8. Использование первичного ключа в качестве
              таблиц                                        74
                                                                                   уникального внешнего ключа                     107
                                                                           4.6.9. Ограничения значений внешнего ключа             108
3. Манипулирование данными                                    78          4.6.10. Действие ограничений внешнего
 3.1. Команды манипулирования данными                          78                  и родительского ключей при использовании
 3.2. Использование подзапросов в INSERT                       81                  команд модификации                             108
       3.2.1. Использование подзапросов, основанных
                 на таблицах внешних запросов                  82   5. Представления (VIEW)                                     112
         3.2.2. Использование подзапросов с DELETE             83    5.1.   Представления — именованные запросы                  112
         3.2.3. Использование подзапросов с UPDATE             85    5.2.   Представления таблиц                                 113
                                                                     5.3.   Представления столбцов                               113
4. Создание объектов базы данных                               87    5.4.   Модифицирование представлений                        114
  4.1. Создание таблиц базы данных                             87    5.5.   Маскирующие представления                            114
  4.2. Использование индексации для быстрого доступа                        5.5.1. Представления, маскирующие столбцы            114
                                                                            5.5.2. Операции модификации в представлениях,
       к данным                                                88
  4.3. Изменение существующей таблицы                                              маскирующих столбцы                           115


                                                                   Оглавление
                                                     Оглавление
                                                                    6.9.   Создание и удаление пользователей....   136
         5.5.3. Представления, маскирующие строки            115
                                                                   6.10.   Создание синонимов (SYNONYM)            138
         5.5.4. Операции модификации в представлениях,
                маскирующих строки                           116   6.11.   Синонимы общего пользования (PUBLIC)    139
         5.5.5. Операции модификации в представлениях,             6.12.   Удаление синонимов                      139
                маскирующих строки и столбцы                 117
 5.6.   Агрегированные представления                         119   7. Управление транзакциями                      141
 5.7.   Представления, основанные на нескольких таблицах ... 119
 5.8.   Представления и подзапросы                           120
                                                                   Приложение 1. Ответы к упражнениям              143
 5.9.   Ограничения применения оператора SELECT для
        создания представлений                               121   Приложение 2. Задачи по проектированию БД       159
5.10.   Удаление представлений                               121   Предметный указатель                            171
5.11.   Изменение значений в представлениях                  122
5.12.   Примеры обновляемых и необновляемых
        представлений                                        123
5.13.   Представления, базирующиеся на других
        представлениях                                       125

6. Определение прав доступа пользователей
   к данным                                                 128
 6.1. Пользователи и привилегии                             128
 6.2. Стандартные привилегии                                129
 6.3. Команда GRANT                                         130
 6.4. Использование аргументов ALL и PUBLIC                 131
 6.5. Отмена привилегий                                     131
 6.6. Использование представлений для фильтрации
      привилегий                                            132
       6.6.1. Ограничение привилегии SELECT
              для определенных столбцов                     133
       6.6.2. Ограничение привилегий для определенных
              строк                                          133
       6.6.3. Предоставление доступа только
              к извлеченным данным                           134
       6.6.4. Использование представлений в качестве
              альтернативы ограничениям                     134
 6.7. Другие типы привилегий.                               135
 6.8. Типичные привилегии системы                           136


                                                                       занимаемое SQL в современных информационных технологиях, его
                      Введение                                         знание необходимо любому специалисту, работающему в этой области.
                                                                            Данное пособие в первую очередь предназначено преподавателям
     В настоящее время информационные системы, применяющие              и студентам и ориентировано на обучение основам применения языка
базы данных, представляют собой одну из важнейших областей совре-       SQL по учебным курсам, связанным с изучением информационных
менных компьютерных технологий. С этой сферой связана большая          систем, базирующихся на базах данных. В настоящее время такие кур-
часть современного рынка программных продуктов. Среди общих тен-       сы входят в учебные планы ряда университетских специальностей.
денций в развитии таких систем выделяются процессы интеграции          С этой целью в пособии большое внимание уделялось подбору материа-
и стандартизации, затрагивающие структуры данных и способы их об-      ла для примеров, а также задач и упражнений, необходимых для полу-
работки и интерпретации, системное и прикладное программное обес-      чения практических навыков составления SQL-запросов к базе данных.
печение, средства взаимодействия компонентов баз данных и многое       При этом в определениях и примерах приоритет отдавался простоте
другое. Современные системы управления базами данных (СУБД) ос-        и доходчивости материала, возможно, с некоторым ущербом строгости
нованы на реляционной модели представления данных — в большой          его изложения. По этой же причине в пособие не вошли особенности
степени благодаря простоте и четкости ее концептуальных понятий и      языка, требующие более глубоких знаний о функционировании совре-
строгого математического обоснования.                                  менных СУБД и информационных систем, изучение и использование
     Неотъемлемая и важнейшая часть любой системы, применяющей         которых имеет смысл только при условии получения навыков практиче-
базы данных, — языковые средства, обеспечивающие возможность           ского использования базовых конструкций языка. При изложении мате-
доступа и действий над данными, определения их структур, способов      риала авторы по возможности старались, кроме специально оговорен-
использования и интерпретации. Язык SQL появился в 1970-е годы         ных случаев, не отступать от стандарта языка SQL.
как одно из таких средств. Его прототип был разработан фирмой IBM           В приложении 1 пособия содержатся ответы на большинство приве-
и известен под названием SEQUEL (Structured English Query Language).   денных в нем упражнений. Примеры и задачи упражнений протести-
                                                                       рованы с использованием СУБД Oracle и отечественной СУБД ЛИНТЕР.
SQL вобрал в себя достоинства реляционной модели, в частности дос-
                                                                       ЛИНТЕР представляет собой полномасштабный кросс-платформен-
тоинства лежащего в ее основе математического аппарата реляционной
                                                                       ный SQL-сервер, соответствующий основным мировым стандартам,
алгебры и реляционного исчисления, используя при этом сравнитель-
                                                                       предъявляемым к системам такого класса. Для некоммерческого ис-
но небольшое число операторов и относительно простой синтаксис.        пользования учебным заведениям он предоставляется бесплатно. Бо-
     Благодаря своим качествам язык SQL стал — вначале «де-факто»,     лее подробную информацию о системе можно получить на сайте ком-
а затем и официально утвержденным в качестве стандарта — языком        пании РЕЛЭКС по адресу www.relex.ru.
работы с реляционными базами данных. Этот стандарт поддерживает-            В приложении 2 приведены тексты дополнительных задач по про-
ся всеми ведущими мировыми фирмами, действующими в сфере техно-        ектированию баз данных. Эти задачи могут использоваться в качестве
логий баз данных. Использование выразительного и эффективного          тем курсовых работ и для самостоятельной работы студентов.
стандартного языка позволило обеспечить высокую степень независи-           Авторы надеются, что пособие окажется полезным не только
мости разрабатываемых прикладных программных систем от конкретного     преподавателям и студентам, но и другим читателям, заинтересован-
типа используемой СУБД, существенно поднять уровень и унифика-         ным в получении начальных практических навыков использования
цию инструментальных средств разработки приложений, работающих         языка SQL.
с реляционными базами данных.
     Говоря о стандарте языка SQL, следует заметить, что большинство
его коммерческих реализаций имеют некоторые, большие или меньшие,
отличия от стандарта. Это, конечно, ухудшает совместимость систем,
использующих различные «диалекты» SQL. Но, с другой стороны, по-
лезные расширения реализаций языка обеспечивают его развитие и со
временем включаются в новые редакции стандарта. Учитывая место,


                                                                     1.1. Основные понятия реляционных баз данных               11

                                                                      • Строки таблицы-отношения называются кортежами, или
               Основные понятия                                          записями. Столбцы называются атрибутами. Термины — ат-
                                                                         рибут, столбец, колонка, поле — обычно используются как
               и определения                                             синонимы. Каждый атрибут имеет имя, которое должно
                                                                         быть уникальным в конкретной таблице-отношении, однако
                                                                         в разных таблицах имена атрибутов могут совпадать.
                                                                      • Количество кортежей в таблице-отношении называется кар-
                                                                         динальным числом отношения, а количество атрибутов — сте-
1.1.       Основные понятия реляционных баз данных                       пенью отношения.
    Основой современных систем, применяющих базы данных,              • Ключ, или первичный ключ отношения — это уникальный
является реляционная модель данных. В этой модели данные,                идентификатор строк (кортежей), то есть такой атрибут (на-
представляющие информацию о предметной области, организо-                бор атрибутов), для которого в любой момент времени в от-
ваны в виде двухмерных таблиц, называемых отношениями. На                ношении не существует строк с одинаковыми значениями
                                                                         этого атрибута (набора атрибутов). На приведенном рисунке
рисунке 1 приведен пример такой таблицы-отношения и поясня-
                                                                         таблицы ячейка с именем ключевого атрибута имеет ниж-
ются основные термины реляционной модели.                                нюю границу в виде двойной черты.
                                                                      • Домен отношения — это совокупность значений, из которых
                                                                         могут выбираться значения конкретного атрибута. То есть
                                                                         конкретный набор имеющихся в таблице значений атрибута
                                                                         в любой момент времени должен быть подмножеством мно-
                                                                         жества значений домена, на котором определен этот атрибут.
                                                                         В общем случае на одном и том же домене могут быть опре-
                                                                        делены значения разных атрибутов. Важным является то, что
                                                                         домены вводят ограничения на операции сравнения значе-
                                                                         ний различных атрибутов. Эти ограничения состоят в том,
                                                                         что корректным образом можно сравнивать между собой
                                                                         только значения атрибутов, определенных на одном и том же
                                                                         домене.
                                                                         Отношения реляционной базы данных обладают следующи-
                                                                     ми свойствами:
                                                                      • в отношениях не должно быть кортежей-дубликатов,
       Рис. 1. Пример таблицы-отношения реляционной базы данных       • кортежи отношений не упорядочены,
                                                                      • атрибуты отношений также не упорядочены.
       Отношение — это таблица, подобная приведенной на рисун-           Из этих свойств отношения вытекают важные следствия.
       ке 1 и состоящая из строк и столбцов. Верхняя строка табли-    • Уникальность кортежей определяет, что в отношении всегда
       цы-отношения называется заголовком отношения. Термины             имеется атрибут или набор атрибутов, позволяющих иденти-
       отношение и таблица обычно употребляются как синонимы,            фицировать кортеж, другими словами, в отношении всегда
       однако в языке SQL используется термин таблица.                   есть первичный ключ.


12                          1. Основные понятия и определения     1.4. Составные части SQL                                    13

  • Неупорядоченность кортежей приводит к тому, что, во-пер-          Это означает следующее: в качестве входной информации
    вых, в отношении не существует другого способа адресации      для формулируемого на языке SQL запроса к базе данных ис-
    кортежей, кроме адресации по ключу, а во-вторых — в отно-     пользуется множество кортежей-записей одной или нескольких
    шении не существует таких понятий, как первый кортеж,         таблиц-отношений. В результате выполнения запроса также об-
    последний, предыдущий, следующий и т.д.                       разуется множество кортежей результирующей таблицы-отно-
  • Неупорядоченность атрибутов определяет, что единствен-        шения. Другими словами, в SQL результатом любой операции
    ным способом их адресации в запросах является использова-     над отношениями также является отношение. Запрос SQL зада-
    ние наименования атрибута.                                    ет не процедуру, то есть последовательность действий, необхо-
    Относительно свойства реляционного отношения, касаю-          димых для получения результата, а условия, которым должны
щегося отсутствия кортежей-дубликатов, следует сделать важ-       удовлетворять кортежи результирующего отношения, сформу-
ное замечание. В этом пункте SQL не полностью соответствует       лированные в терминах входного (или входных) отношения.
реляционной модели. А именно: в отношениях, являющихся
результатами запросов, SQL допускает наличие одинаковых
строк. Для их устранения в запросе используется ключевое сло-     1.3.    Интерактивный и встроенный SQL
во DISTINCT (см. ниже).                                               Существуют и используются две формы языка SQL: интер-
     Информация в реляционных базах данных, как правило,          активный SQL и встроенный SQL.
хранится не в одной таблице-отношении, а в нескольких. При            Интерактивный SQL используется для задания SQL-запросов
создании нескольких таблиц взаимосвязанной информации по-         пользователем и получения результата в интерактивном режиме.
является возможность выполнения более сложных операций                Встроенный SQL состоит из команд SQL, встроенных внутрь
с данными, то есть более сложной их обработки. Для работы со      программ, обычно написанных на каком-то другом языке (Пас-
связанными данными из нескольких таблиц важным является           каль, С, C++ и др. ). Это делает программы, использующие та-
понятие так называемых внешних ключей.                            кие языки, более мощными, гибкими и эффективными, обес-
     Внешним ключом таблицы называется атрибут (набор атрибу-     печивая их применение для работы с данными, хранящимися
тов) этой таблицы, каждое значение которого в текущем состоянии   в реляционных базах. При этом, однако, требуются дополни-
таблицы всегда совпадает со значением атрибутов, являющихся       тельные средства интерфейса SQL с языком, в который он
ключом, в другой таблице. Внешние ключи используются для свя-     встраивается.
зывания значений атрибутов из разных таблиц. С помощью внеш-          Данная книга посвящена интерактивному SQL, поэтому
 них ключей обеспечивается так называемая ссылочная целостность   в ней не обсуждаются вопросы построения интерфейса, позво-
 базы данных, то есть согласованность данных, описывающих одни    ляющего связать SQL с другими языками программирования.
 и те же объекты, но хранящихся в разных таблицах.
                                                                  1.4.    Составные части SQL
 1.2.   Отличие SQL от процедурных языков
        программирования                                              И интерактивный, и встроенный SQL подразделяются на
                                                                  следующие составные части.
     SQL относится к классу непроцедурных языков программи-           Язык определения данных — DDL (Data Definition Language) —
 рования. В отличие от универсальных процедурных языков, ко-      дает возможность создания, изменения и удаления различных
 торые также могут быть использованы для работы с базами дан-     объектов базы данных (таблиц, индексов, пользователей, при-
 ных, SQL ориентирован не на записи, а на множества.              вилегий и т.д.).


14                               1. Основные понятия и опредепения   1.5. Типы данных SQL                                      15

    В число дополнительных функций DDL могут быть включе-                Некоторые реализации языка SQL поддерживают в качестве
ны и средства ограничения целостности данных, определения            типа данных строки переменной длины. Этот тип может обозна-
порядка структур их хранения, описания элементов физическо-          чаться ключевыми словами VARCHAR ( j , CHARACTER VARYING
го уровня хранения данных.                                           или CHAR VARYING (j . Он описывает текстовую строку, которая
    Язык обработки Даннь^^х — DML (Data Manipulation Language) -     может иметь произвольную длину до определенного конкретной
предоставляет возможность выборки информации из базы дан-            реализацией SQL максимума (в Oracle — до 2000 символов).
ных и ее преобразования.                                             В отличие от типа CHAR в этом случае при вводе текстовой кон-
    Тем не менее это не два различных языка, а компоненты            станты, фактическая длина которой мены^е заданной, не про-
единого SQL.                                                         изводится ее дополнение пробелами до заданного максимально-
                                                                     го значения.
                                                                         Константы, имеющие тип CHARACTER и VARCHAR, в выра-
1.5.       Типы данных SQL                                           жениях SQL заключаются в одиночные кавычки, например,
    В языке SQL имеются средства, позволяющие для каждого            'текст'.
атрибута указывать тип данных, которому должны соответство-              Следующие предложения эквивалентны:
вать все значения этого атрибута.                                         VARCHAR [(длмня)], CHAR VARYING [(длмнд)],
    Следует отметить, что определение типов данных является               CHARACTER VARYING [(длмна)].
той частью, в которой коммерческие реализации языка не пол-
ностью согласуются с требованиями официального стандарта                 Если длина строки не указана явно, она полагается равной
SQL. Это объясняется, в частности, желанием обеспечить со-           одному символу во всех случаях.
вместимость SQL с другими языками программирования.                      По сравнению с типом CHAR тип данных VARCHAR позволяет
                                                                     более экономно использоватъ память, выделяемую для хранения
                                                                     текстовых значений, и оказывается более удобным при выполне-
1.5.1. Тип данных «строка символов»
                                                                     нии операций, связанных со сравнением текстовых констант.
     Стандарт поддерживает только один тип представления тек-
ста — CHARACTER (CHAR). Этот тип данных представляет собой
                                                                     1.5.2.   Числовые типы данных
символьные строки фиксированной длины. Его синтаксис име-
                                                                         Стандартными числовыми типами данных SQL являются:
 ет вид:
                                                                       • INTEGER -- используется для представления целых чисел
       CHARACTER [(длина)] или                                           в диапазоне от —231 до +231.
       CHAR [(длына)].                                                 • SMOLLINT -- используется для представления целых чисел
     Текстовые значения поля таблицы, определенного как тип              в меньшем, чем для INTEGER, диапазоне, а именно — от
 CHAR, имеют фиксмрованную длину, которая определяется пара-
                                                                         -215 до +215.
 метром длина. Этот параметр может принимать значения от 1 до          • DECIMAL (точность[,масштаб]) — десятичное число с фик-
 255, то есть строка может содержать до 255 символов. Если во            сированной точкой, точность определяет количество знача-
 вводимой в поле текстовой константе фактическое число симво-            щих цифр в числе. Масштаб указывает максимальное число
 лов меньше числа, определенного параметром длмна, то эта               цифр справа от точкм.
 константа автоматически дополняется справа пробелами до за-           • NUmeRIC (точность[,масштаб|) — десятичное число с фик-
 данного числа символов.                                                сированной точкой, такое же, как и DECIMAL.


16                             1. Основные понятия и определения

 • FLOAT [(точность)] — число с плавающей точкой и указан-
   ной минимальной точностью.
 • REAL — число такое же, как при типе FLOAT, за исключением
   определения точности по умолчанию (в зависимости от кон-
   кретной реализации SQL).
 • DOUBLE PRECISION — число аналогично REAL, но точность
   в два раза выше точности REAL.
    СУБД Oracle использует дополнительно тип данных NUMBER
для представления всех числовых данных, целых, с фиксиро-
ванной или плавающей точкой. Его синтаксис:
     NUMBER [(точность[,.масшта6])].
    Если значение параметра точность не указано явно, оно
полагается равным 38. Значение параметра масштаб по умолча-
нию предполагается равным 0. Значение параметра точность
может изменяться от 1 до 38; значение параметра масштаб мо-
жет изменяться от —84 до 128. Использование отрицательных
значений масштаба означает сдвиг десятичной точки в сторону
старших разрядов. Например, определение NUMBER (7,—3) оз-
начает округление до тысяч.
    Типы DECIMAL (иногда обозначаемый DEC) и NUMERIC
полностью эквивалентны типу NUMBER.
     Синтаксис:   DECIMAL [(точнос/иь[,л«асштао])],
                   DEC [(точностъ[,масштаб])],
                   NUMERIC     [(точность[,масштаб\)].

1.5.3. Дата и время
     Тип данных, предназначенный для представления даты
и времени, также является нестандартным, хотя и чрезвычай-
но полезным. Для точного определения типов данных, под-
держиваемых конкретной СУБД, следует обращаться к ее до-
кументации.
      В СУБД Oracle имеется тип DATE, используемый для хране-
ния даты и времени. Поддерживаются даты, начиная от 1 января
4712 года до н.э. и до 31 декабря 4712 года. По умолчанию при


1.5. Типы данных SQL                                          17

определении даты без уточнения времени принимается время по-
луночи.
    Наличие типа данных для хранения даты и времени позволя-
ет поддерживать специальную арифметику дат и времен. Добав-
ление к переменной типа DATE целого числа означает увеличение
даты на соответствующее число дней, а вычитание соответствует
определению более ранней даты.
    Константы типа DATE записываются в зависимости от форма-
та, принятого в операционной системе. Например, '03.05.1999',
или '12/06/1989', или '03-nov-1999', или 'ОЗ-арг-99'.

1.5.4.    Неопределенные или пропущенные данные (NOLL)
     Для обозначения отсутствующих, пропущенных или не-
известных значений атрибута в SQL используется ключевое
слово NULL. Довольно часто можно встретить словосочетание
«атрибут имеет значение NULL». Строго говоря, NULL не явля-
ется значением в обычном понимании, а используется имен-
но для обозначения того факта, что действительное значение
атрибута на самом деле пропущено или неизвестно. Это при-
водит к ряду особенностей, что следует учитывать при ис-
пользовании значений атрибутов, которые могут находиться
в состоянии NULL.
  • В агрегирующих функциях, позволяющих получать сводную
     информацию по множеству значений атрибута, например
     суммарное или среднее значение, для обеспечения точности
     и однозначности толкования результатов отсутствующие или
     NULL-значения атрибутов игнорируются.
  • Условные операторы от булевой двузначной логики TRUE/FALSE
     расширяются до трехзначной логики TRUE/FALSE/UNKNOWN.
  • Все операторы, за исключением оператора конкатенации
     строк «||», возвращают пустое значение (NULL), если значение
     любого из операндов отсутствует (имеет «значение NULL»).
  • Для проверки на пустое значение следует использовать опе-
     раторы is NULL и is NOT NULL (использование с этой целью
     оператора сравнения «=» является ошибкой).
  • Функции преобразования типов, имеющие NULL в качестве
     аргумента, возвращают пустое значение (NULL).



    
Яндекс цитирования Яндекс.Метрика