Брешенков А.В., Волкова Е.А., Галямова Е.В. - Знакомство с СУБД DB2. Язык DDL (1075559), страница 2
Текст из файла (страница 2)
Каждая запись делается в активном журнале. Онимеет конечный объем. Когда он заполняется, то DB2 создает архивныйжурнал и копирует все значения активного журнала туда. Архивныйжурнал сбрасывается на диск или ленту.Есть так называемый набор данных-связка, который следит заактивными и архивными журналами, с его помощью осуществляется откатиз записи а архивном журнале.82. Практическая частьВ этой лабораторной работе Вам предстоит создать свою базуданных на мэйнфрейме и ознакомиться с изученными в теоретическойчасти компонентами языка SQL и утилитами DB2 для z/OS.2.1 Настройка DB2 для работы в ISPF1. В главном меню ISPF перейдите в меню DB2IP->B->ADM->ADM->i2.
Выберите опцию D для настройки DB2.3. Выберите язык, который будете использовать: IBMCOB или PL/I инажмите ENTER.4. Если выбран IBMCOB, то появится окно выбора настроек языкаCOBOL – убедитесь, что в качестве разделителя используетсяапостроф ‘.5. Для Вас создана специальная база данных $DBYXX, где YXX –последние три цифры вашего логина.
Во всех скриптах необходимоиспользовать свою базу данных.2.2 Запуск скриптов в SPUFI. Создание и определение таблиц1. Выберите в меню DB2 опцию 1 для запуска SPUFI.2. Вкачествевходногонабораданныхвведите'TSOUsxx.CF82.SPUFIN(CF82DDE1)', где вместо TSOUsxx – вставьтеваш логин.Текст скрипта CF82DDE1:CREATE TABLE DEPT( DEPTNO CHAR(3)NOT NULL,DEPTNAME VARCHAR(36) NOT NULL,MGRNOCHAR(6)ADMRDEPT CHAR(3),NOT NULL,LOCATION VARCHAR(16),9PRIMARY KEY (DEPTNO))IN DATABASE $DBYXX;CREATE UNIQUE INDEX DEPX ON DEPT(DEPTNO);3.
Вкачествевыходногонабораданныхвведите'TSOUsxx.CF82.SQLOUT'4. Выберите YES для опций 5-9 и нажмите ENTER.5. Исследуйте появившееся окно настроек SPUFI и нажмите ENTER.6. Сделайте скрин-шот появившегося окна и отметьте в отчетерезультат выполнения пунктов 1-5.После выполнения пунктов 1-5 можно редактировать и запускатьскрипты в SPUFI.• Можно редактировать набор данных как обычно, используяредактор команд ISPF.• Можно написать комментарий, если вставить в первыхдвух столбцах 2 тире (--).7. Скрипт TSOUsxx.CF82.SPUFIN (CF82DDE1), которыйсоздаеттаблицу DEPT(см. рис.4).8.
Просмотрите содержимое скрипта, читая следующую информацию:• Это DDL, который создаёт (CREATE) таблицу DEPT . Если в именитаблицы не определен владелец, ваш USERID станет владельцем.• Перечень описаний столбцов следует за выражением CREATE.Каждый пункт в списке определяет имя столбца, его атрибуты, а такжеподдержку нулевой характеристики. Например, первый столбец втаблице, будет известен как DEPTNO. Это будет 3-байтовая колонка,которая будет содержать символьные данные. Этот столбец непозволяет NULL данные.
Третий столбец будет называться MGRNO.Это 6-байтовая колонка, которая будет содержать символьные данные.В отличие от столбца DEPTN, MGRNO разрешает NULL данные,10поскольку нет четко указанного запрета. Другие типы данных:INTEGER, SMALLINT, DECIMAL, DATE, TIME, TIMESTAMP иVARCHAR. Для дальнейшего обсуждения атрибутов этих и другихтипов данных, обратитесь к SQL Справочному руководству. Другойспецификацией относительно NULL является 'NOT NULL WITHDEFAULT ". Если значение по умолчанию не указано в синтаксисекоманды, оно зависит от выбранного типа столбца.• После списка столбцов найдите определение первичного ключа(PRIMARY KEY).
В этом примере, столбец DEPTNO выбран в качествепервичного ключа. Если в PRIMARY KEY входит более одногостолбца, они составляют список в скобках, разделенный запятыми.Любой столбец в первичном ключе должен быть определен как NOTNULL или NOT NULL WITH DEFAULT. Как правило, NOT NULLуказан,посколькузначениепервичногоключадолжнобытьуникальным. Исключением может быть использование времени.Значение по умолчанию для времени, CURRENT TIMESTAMP,который измеряется в микросекундах.• В целях обеспечения соблюдения уникальных значений в первичномключе, CF82DDE1 также содержит DDL создающий уникальныйиндекс(UNIQUE INDEX) в столбцах первичного ключа.Вы получили по умолчанию табличное пространство, поэтому нетнеобходимости определять его.9. Нажмите F3, чтобы сохранить скрипт и вернуться в главное менюSPUFI.Замечание.
Имейте в виду, что если опции 5 и 6 отмеченызвёздочками, значит этот этап редактирования (подготовкискрипта к запуску) уже пройден.10. НажмитеEnter,чтобывыполнитьследующиешаги-запустить,автоматически, сохранить изменения базы данных в случае11успешного завершения (autocommit) и просмотреть вывод (в набореданных, указанном в пункте 4 настроек SPUFI).Убедитесь, что SQL выполнен правильно.11.
Следующий SQL скрипт CF82DDE2 создает таблицу EMP.12. Просмотрите содержимое скрипта, читая следующую информацию:• Первое выражение создает таблицу EMP. Обратите внимание на типыстолбцов и определение NULL атрибутов. Свойства ссылочнойцелостности(Referential integrity characteristics) не являются частьюопределения новой таблицы.• Выражение Создать УКАЗАТЕЛЬ (CREATE INDEX ) создаетуникальный индекс для того, что будет называться первичным ключом.Если UNIQUE INDEX существует, когда первичный ключ определен,менеджер баз данных будет использовать этот индекс в качествеиндекса первичного ключа.• Выражение ALTER добавляет необходимые свойства ссылочнойцелостности.PRIMARY KEY определяет EMPNO в качествеединственного столбца первичного ключа.Обратите внимание на FOREIGN KEY.
Он указывает имя внешнегоключа (RIEMPDEP), столбец (ы) в ключе (WORKDEPT), ссылка народительскую таблицу (DEPT) и правило удаления DELETE RULE (SETNULL). Отметим, что это правило удаление возможно только потому,что внешний ключ столбца позволяет нулевые значения. Если внешнийключ не указан прямо, DB2 создает имя. Имя может быть от 1 до 8символов в длину. Внешний ключ столбца(ов) должен соответствоватьспецификациипервичногоключастолбца(ов)всоотнесеннойродительской таблице в отношении типа, размера и порядка.
Не нужноникаких ссылок на столбцы, содержащиеся в исходной таблице. Так кактаблица может иметь только один первичный ключ, названияродительской таблицы достаточно. Другие правила удаления включают12RESTRICT и CASCADE. Если правило не указано, предполагаетсяRESTRICT.Примечание: выражение ALTER было использовано в качествеиллюстрации. Таблицы с зависимостями от других таблиц можносоздать с помощью CREATE с FOREIGN KEY.• Второй индекс создан на внешний ключ в таблице EMP. Хотя этотиндекс не является необходимым, он настоятельно рекомендуется, еслизависимая таблица будет содержать какие-либо значительные объемыданных. В противном случае, проверка ограничения ссылочнойцелостности может показывать плохие результаты.13.
Запустите скрипт CF82DDE2. Убедитесь, что SQL выполненправильно.14.После CF82DDE2, исследуйте и запустите скрипт CF82DDE3(создание вида VPHONE).Этот вид является обьединением таблиц EMP и DEPT. Сейчас обетаблицы пустые, так что SELECT должен вернуть 0 строк.2.3 Изменение данных, изучение ссылочной целостности1. Измените и исследуйте CF82DDE4 SQL скрипт, который вставляет вседанные из таблицы master EMP в вашу таблицу EMP, а затем вставляетвсе данные из таблицы master DEPT в вашу таблицу DEPT.Это имитирует выборку данных из производной таблицы в тестовуютаблицу.2.
Выполните SQL скрипт CF82DDE4.3. Отметьтевотчетерезультатвыполненияскрипта.Объяснитепроизошедшее.4. Теперь измените и исследуйте CF82DDE5 SQL скрипт, который похожна CF82DDE4, но сначала вставляет строки из master таблицы вродительскую (DEPT), а затем в EMP.135. Выполните SQL скрипт CF82DDE5.6.
Отметьте в отчете результат выполнения скрипта.7. Теперь то же для UPDATE. Измените и исследуйте SQL скриптCF82DDE6, который отражает необходимость переименованиядвухдепартаментов - D01 должен быть изменен на C01, D11 должен статьD31.8. Выполните SQL скрипт CF82DDE6.9. Отметьте в отчете результат выполнения скрипта и объясните его.10. Собственно, там была ошибка в требованиях. D01 в действительностидолжен быть изменен наC10. Скрипт CF82DDE7 исправляет это.Измените и исследуйте SQL скрипт CF82DDE7.11. Выполните SQL скрипт CF82DDE7.12. Отметьте в отчете результат выполнения скрипта.13.
Как вы думаете, что DB2 проверяет при запуске этих скриптов?14. Как называется отношение, которое вызвало провал второгообновления?15. Компания хочет изменить D11 на D31, но обновление DEPT былопредотвращено из-за ограничений. Таким образом, было решено сначалаизменить EMP значения.Измените и исследуйте SQL скрипт CF82DDE8.16.Выполните SQL скрипт CF82DDE8.17.Отметьте в отчете результат выполнения скрипта.18.Как вы думаете, как D11 может быть изменен на D31?19.Наконец, то же про DELETE.