|
Программирование >> Хронологические базы данных
Язык SQL состоит из двух компонентов: языка определения данных (DDL) и языка манипулирования данными (DML). Язык манипулирования данными может применяться и на внешнем уровне (по отношению к представлениям), и на концептуальном уровне (по отношению к базовым таблицам). Аналогично язык определения данных может использоваться для определения объектов на внешнем уровне (представления), концептуальном уровне (базовые таблицы), а в большинстве коммерческих систем (хотя это и не соответствует самому стандарту) даже на внутреннем уровне (по отношению к индексам и другим физическим структурам организации памяти). Кроме того, язык SQL предоставляет определенные возможности управления данными, т.е. возможности, которые нельзя отнести ни к языку DDL, ни к языку DML. Примером здесь может служить оператор GRANT, который одни пользователи могут применять для предоставления привилегий доступа другим пользователям системы (глава 16). Мы показали, как можно использовать язык SQL для создания базовых таблиц с помощью оператора CREATE TABLE. Затем мы привели несколько примеров использования операторов SELECT, INSERT, UPDATE и DELETE и, в частности, продемонстрировали, как можно применять оператор SELECT для реализации операций выборки, проекции и соединения. Также некоторое внимание было уделено информационной схеме, состоящей из множества предопределенных представлений гипотетической схемы определения , и возможностям языка SQL по работе с представлениями и транзакциями. Значительная часть этой главы была посвящена внедренным SQL-операторам. Основная идея, лежащая в основе использования внедренных SQL-операторов, называется принципом двухрежимности, т.е. принципом, в соответствии с которым (насколько это возможно) любое SQL-выражение, которое можно использовать интерактивно, можно внедрить и в прикладную программу. Главное исключение из этого принципа имеет место в связи с операциями многострочной выборки, для которых требуется использовать курсоры, позволяющие преодолеть разрыв между возможностью выборки данных на уровне множеств в языке SQL и возможностями выборки данных на уровне строки в базовых языках программирования, таких, например, как PL/I. Далее мы обсуждали, главным образом, вопросы синтаксиса, в том числе выяснили назначение переменной SQLSTATE и рассмотрели такие операторы, как однострочный оператор SELECT и операторы INSERT, UPDATE и DELETE, для которых курсор не нужен. Затем мы возвратились к операторам, для которых требуется использование курсора, и обсудили операторы DECLARE CURSOR, OPEN, FETCH, CLOSE и формы CURRENT для операторов UPDATE и DELETE. (В стандарте языка SQL форму CURRENT этих операторов называют позиционным оператором UPDATE и DELETE соответственно, а термин поисковый используют для других форм этих операторов, отличных от CURRENT.) Наконец, мы кратко обсудили концепцию динамического языка SQL, в частности - операторы PREPARE и EXECUTE, а также кратко коснулись назначения интерфейса SQL Call-Level Interface или CLI. Упражнения 4.1. На рис. 4.5 показаны примеры значений данных для расширенной формы базы данных поставщиков и деталей, которая называется базой данных поставщиков, деталей и проектов. Поставщики (S), детали (Р) и проекты (J) однозначно определяются номером поставщика (St), номером детали (Pt) и номером проекта (Jt) со- ответственно. Значение строки SPJ (поставки) следующее: определенный поставщик поставляет определенную деталь для определенного проекта в определенном количестве (причем комбинация значений столбцов St-Pt-Jt уникальна для отдельных строк). Запишите соответствующие определения данных на языке SQL для этой базы данных. Замечание. Эта база данных будет использоваться во многих упражнениях в последующих главах.
Puc. 4.5. База данных поставщиков, деталей и проектов (значения для примера) 4.2. В разделе 4.2 был описан оператор CREATE TABLE, как он определен в стандарте языка SQL. Однако многие коммерческие продукты поддерживают дополнительные опции этого оператора, обычно связанные с индексами, размещением на дисковом пространстве и другими вопросами реализации, что противоречит цели физической независимости данных и междусистемной совместимости. Исследуйте доступный вам продукт, поддерживающий язык SQL. Верны ли предыдущие замечания для этого продукта? В частности, какие дополнительные опции оператора CREATE TABLE поддерживаются в этом продукте? 4.3. И снова исследуйте доступный вам продукт, поддерживающий язык SQL. Поддерживается ли в нем информационная схема? Если нет, то каким образом поддерживается каталог? 4.4. Сформулируйте на языке SQL следующие операции обновления для базы данных поставщиков, деталей и проектов. а) Вставить нового поставщика S10 в таблицу S; имя поставщика- Smith, город- New York, статус еще неизвестен. б) Изменить цвет всех красных деталей ( red) на оранжевый ( orange). в) Удалить все проекты, для которых нет поставок. 4.5. Используя базу данных поставщиков, деталей и проектов, напишите программу с внедренными SQL-выражениями для выдачи списка всех строк поставщиков по порядку их номеров. За каждой строкой поставщика должны непосредственно следовать строки проектов, обеспечиваемых этим поставщиком, по порядку номеров проектов. 4.6. Даны таблицы PART и PARTSTRUCTURE, определенные таким образом. CREATE TABLE PART (PI ... , DESCRIPTION ... , PRIMARY KEY ( PI ) ) ; CREATE TABLE PART STRUCTURE ( MAJOR PI .7. , MINOR PI ... , QTY ... , PRIMARY KEY ( MAJOR Pi, MINOR PI ), FOREIGN KEY ( MAJORPl ) REFERENCES PART, FOREIGN KEY ( MINOR p ) REFERENCES PART ) ; В таблице PART STRUCTURE показано, какие детали (MAJORPl) содержат другие детали (MIN0R P) как компоненты первого уровня. Напишите программу на языке SQL для получения списка всех компонентов данной детали на всех имеющихся уровнях (задача разузлования деталей). Замечание. Значения, показанные в качестве примера на рис. 4.6, могут помочь вам более наглядно представить предложенную выше задачу. Следует отметить, что таблица PART STRUCTURE демонстрирует, как информация о составе изделий (см. главу I, раздел L3, подраздел Сущности и связи ) обычно представляется в реляционных системах. PART STRUCTURE
Рис. 4.6. Таблица PART STRUCTURE (значения для примера)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |