W Cat - SQL за 24 часа
- Название:SQL за 24 часа
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - SQL за 24 часа краткое содержание
SQL за 24 часа - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".
1. Как по другому называется системный каталог в некоторых базах данных?
2. Имеет ли возможность обычный пользователь обновлять системный каталог?
3. Какая системная таблица Sybase содержит информацию о существующих в базе данных представлениях?
4. Кто является владельцем системного каталога?
5. В чем различия между системными объектами ALLJTABLES и DBAJTABLES в Oracle?
6. Кто вносит изменения в таблицы системного каталога?
1. Попытайтесь выполнить запросы к системным таблицам в рамках своей базы данных. Начните с запроса к таблице, содержащей информацию о вашем учетной записи пользователя базы данных.
2. Получите из системного каталога список всех таблиц, к которым вы имеете право доступа.
3. Получите из системного каталога список всех имеющихся у вас привилегий доступа к системе и объектам.
4. Если вы имеете привилегию DBA или SELECT в отношении таблиц администратора базы данных, выполните запрос на выборку данных этих таблиц. Если же таких привилегий у вас нет, ознакомьтесь с образцами этих таблиц по документации, сопровождающей базу данных.
22-й час Средства опытного пользователя
В ходе этого урока мы с вами рассмотрим некоторые темы, выходящие за рамки элементарных средств SQL К концу урока вы будете иметь в своем арсенале понимание основ использования курсоров, сохраненных процедур, триггеров динамического SQL прямого вызова и вложенного SQL, а также SQL, сгенерированного средствами SQL
Основными на этом уроке будут следующие темы
• Что такое курсор
• Использование сохраненных процедур
• Триггеры
• Основы динамического SQL
• Использование SQL для генерирования SQL
• Прямой вызов SQL и вложенный SQL
• Интерфейс уровня вызовов
Возможности SQL, обсуждаемые здесь, выходят за рамки базовых операций, которые мы с вами рассматривали до сих пор и к которым можно отнести операции выполнения запросов, создания структур базы данных и манипуляции данными Возможности, которые мы рассмотрим в ходе этого занятия, доступны во многих реализациях баз данных, использующих расширения стандартного SQL, обсуждавшегося до сих пор
Не все обсуждаемые здесь вопросы определяются стандартом ANSI SQL поэтому обязательно проверьте по документации синтаксис и правила использования предлагаемых ниже команд Для сравнения мы здесь приводим синтаксис команд нескольких ведущих производителей баз данных
Для многих людей слово "курсор" ассоциируется с мигающим прямоугольником на экране монитора, предназначенным для указания того места где в файле или приложении находится пользователь Здесь же под курсором понимается нечто иное Курсор SQL - это область памяти базы данных, где был сохранен последний из операторов SQL Если текущим оператором SQL оказывается запрос, в памяти сохраняется также и строка запроса Эта строка называется текущим значением курсора или текущей строкой Соответствующая область памяти именуется и оказывается доступной программам
Курсор обычно используется для извлечения порций данных из базы данных При этом программа получает возможность анализировать текущие строки курсора Курсоры обычно используются в рамках SQL, встроенного в программы процедурного типа Некоторые курсоры создаются автоматически сервером базы данных, другие же объявляются программистом Использование курсоров в базах данных разных производителей может иметь свои особенности
Рассмотрим для сравнения операторы объявления курсора для двух наиболее распространенных систем Microsoft SQL Server и Oracle
Синтаксис оператора объявления курсора в Microsoft SQL Server следующий
DECLARE ШЧ_КУРСОРА CURSOR
FOR OnEPATOP_SELECT
[ FOR {READ ONLY UPDATE [ СПИСОК__СТОЛБЦОВ ]}]
Синтаксис оператора объявления курсора в Oracle следующий
DECLARE CURSOR ИМЯ_ КУРСОРА
IS {ОПЕРАТОР_SELECT}
Создаваемый следующим оператором курсор будет содержать все записи таблицы EMPLOYEE_TBL
DECLARE CURSOR EMP_CURSOR IS
SELECT * FROM EMPLOYEE_TBL
{ ДРУГИЕ ОПЕРАТОРЫ ПРОГРАММЫ }
После определения курсора для доступа к нему стандартом ANSI предусмотрены следующие операторы
OPEN Открывает определенный ранее курсор
FETCH Извлекает данные курсора, помещая их в переменную программы
CLOSE Закрывает курсор после завершения работы с ним
При открытии курсора выполняется указанный в определении этого курсора оператор SELECT, и результат выполнения оператора сохраняется в специальной области памяти
Синтаксис оператора для открытия курсора в dBase следующий
OPEN ИМЯ_КУРСОРА
Синтаксис оператора для открытия курсора в Oracle следующий.
OPEN ИМЯ_КУРСОРА [ ПАРАМЕТР1 [, ПАРАМЕТР2 ]]
Например, следующий оператор открывает курсор EMP_CURSOR: OPEN EMP_CURSOR
После того как курсор будет открыт, его содержимое (т. е. результат выполнения его запроса) можно прочитать с помощью оператора FETCH.
Синтаксис оператора FETCH в Microsoft SQL Server следующий.
FETCH ИМЯ_КУРСОРА [ INTO СПИСОК_ПОЛУЧАТЕЛЬ ]
Синтаксис оператора в Oracle следующий.
FETCH CURSOR ИМЯ_КУРСОРА {INTO : ГЛАВНАЯ_ПЕРЕМЕННАЯ }
[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]
[, : ГЛАВНАЯ_ПЕРЕМЕННАЯ
[[ INDICATOR ] : ПЕРЕМЕННАЯ_ИНДИКАТОР ]]
I USING DESCRIPTOR ДЕСКРИПТОР ]
Синтаксис оператора в dBase следующий.
FETCH ИМЯ_КУРСОРА INTO ПЕРЕМЕННЫЕ_ПАМЯТИ
Например, чтобы извлечь содержимое курсора EMP_CURSOR и поместить в переменную с именем EMP_RECORD, можно использовать оператор FETCH следующего вида.
FETCH EMP_CURSOR INTO EMP_RECORD
Очевидно, если имеется возможность открыть курсор, должна быть предусмотрена и возможность закрыть его. Закрыть курсор несложно, только следует помнить, что после закрытия курсор становится недоступным для программ пользователей.
Закрытие курсора не обязательно освобождает выделенную для него память. В некоторых базах данных освободить занятую курсором память можно только явно с помощью команды DEALLOCATE. В результате выполнения этой команды освобождается занятая курсором память и назначенное курсору имя, которое теперь можно будет использовать снова. В других базах данных память освобождается автоматически при закрытии курсора. В таком случае ранее занятая курсором память оказывается доступной для других операций по мере необходимости.
Читать дальшеИнтервал:
Закладка: