Майкл Дж. Хернандес, Джон Л. Вьескас - SQL запросы для простых смертных. SQL-запросы для простых смертных Sql для простых смертных грабер
Майкл Дж. Хернандес, Джон Л. Вьескас - SQL запросы для простых смертных
03.09.2009
Книга SQL-запросы для простых смертных является превосходным введением в запросы SQL. Реальный программист(простой смертный) тратит большое количество времени на написание запросов SQL и меньше - на проектирование самой базы данных. Схемы составляют высокооплачиваемые администраторы баз данных, владеющие отдельными кабинетами и спортивными автомобилями. Большенство программистов занимаются тем, что пытаются заставить SQL работать в условиях жестко заданной схемы.
Об авторах
Майкл Дж. Хернандес
- широко известный консультант по реляционным базам данных и владелец консультационной группы DataTex в Сиэтле. Часто выступает с докладами на различных конференциях. Его перу принадлежит также книга Database Design for Mere Mortals (Проектирование баз данных для простых смертных).
Джон Л. Вьескас - президент компании Viescas Consulting, Inc., известной консультационной компании по вопросам баз данных. Он также автор бестселлера Running Microsoft Access 2000 (Работа в Microsoft Access 2000) и Programmer"s Quick Reference Guide to SQL (Краткое справочное руководство программиста по SQL).
SQL ДЛЯ ПРОСТЫХ СМЕРТНЫХ – это полное введение в структурированный язык запросов, написанное специально для начинающих. Если вы не имеете опыта управления базами данных, благодаря этой книге вы научитесь работать с SQL легко и свободно, применяя простые запросы и сложные операции. Для овладения SQL:
- Усвойте смысл понятий, связанных с управлением базой данных, с помощью краткого и простого введения в реляционные базы данных.
- Следуйте данным инструкциям по применению основных команд SQL для поиска размещенной в таблицах данных информации и работы с ней. Научитесь выбирать и суммировать данные, а также умело ими управлять.
- Эффективно работайте с составными таблицами данных, применяя развитую технику запроса к более чем одной таблице одновременно, конструируя сложные запросы и подзапросы.
- Создавайте новые таблицы данных для приложений в сфере торгового бизнеса. Изучайте важные принципы эффективного проектирования базы данных и технику обеспечения целостности и защиты данных.
- Учитесь применять SQL с языками программирования, используя специальную главу для программистов.
SQL ДЛЯ ПРОСТЫХ СМЕРТНЫХ является необходимым руководством для любой реализации языка структурированных запросов, в которое включены краткий справочник по стандартному SQL и описание общих свойств нестандартного SQL.
1. Введение в реляционные базы данных
2. Введение в SQL
3. Использование SQL для выборки данных из таблиц
4. Использование реляционных и булевых операторов для создания более сложных предикатов
5. Использование специальных операторов в “условиях”
6. Суммирование данных с помощью функций агрегирования
7. Форматирование результатов запросов
8. Использование множества таблиц в одном запросе
9. Операция соединения, операнды которой представлены одной таблицей
10. Вложение запросов
11. Связанные подзапросы
12. Использование оператора EXISTS
13. Использование операторов ANY, ALL и SOME
14. Использование предложения UNION
15. Ввод, удаление и изменение значений полей
16. Использование подзапросов с командами обновления
17. Создание таблиц
18. Ограничения на множество допустимых значений данных
19. Поддержка целостности данных
20. Введение в представления
21. Изменение значений с помощью представлений
22. Определение прав доступа к данным
23. Глобальные аспекты SQL
24. Как поддерживается порядок в базе данных SQL
25. Использование SQL с другими языками программирования (встроенный SQL)
Приложения
А. Ответы к упражнениям
B. Типы данных SQL
C. Некоторые общие отклонения от стандарта SQL
D. Справка по синтаксису и командам
E. Таблицы, используемые в примерах
F. SQL сегодня
Введение в реляционные базы данных
… Мы тоже будем использовать оба термина при обсуждении SQL в качестве синонимов. Вы уже знакомы с простыми таблицами. При всей своей краткости и простоте они вполне пригодны для демонстрации наиболее важных черт языка, в чем вы позже сами убедитесь. Иногда мы будем вводить другие таблицы или рассматривать другие данные в одной из этих таблиц для того, чтобы показать некоторые дополнительные возможности их применения. Теперь мы готовы к непосредственному погружению в SQL. Следующая глава, к
которой вам время от времени придется возвращаться, дает общее представление о языке и ориентирует вас в изложенном в книге материале.
Введение в SQL
Эта глава охватывает большое количество основной информации, дающей общее представление об SQL. Вы узнали, как он структурирован, как используется, как в нем выражаются данные, как и кем он определяется (и какие противоречия при этом возникают), а также некоторые соглашения и терминологию, используемые для описания. В следующей главе подробно объясняются формирование и действие команд. Вы познакомитесь с командой, позволяющей извлекать информацию из таблиц и являющейся одной из наиболее часто применяемых в SQL. Вы сможете вывести сами определенную информацию из базы данных.
Глобальные аспекты SQL
- Синонимы (как создать новые имена для объектов данных)
- Пространство базы данных (dbspace) (как разделить доступное в базе данных пространство)
- Обработка транзакций (как сохранить или отказаться от изменений в базе данных)
- Управление параллелизмом (как SQL позволяет исключить влияние команд друг на друга)
Синонимы являются объектами, имеют имена и (иногда) владельцев, но не существуют самостоятельно и независимо от таблицы, имя которой они заменяют. Они могут быть общими и, следовательно, доступными для каждого, имеющего доступ к объекту, или принадлежать только определенному пользователю. Dbspaces – это подразделы базы данных, выделяемые пользователям. Связанные таблицы, для которых часто выполняется операция соединения, лучше хранить в одном и том же пространстве базы данных. COMMIT и ROLLBACK – команды, применяемые для сохранения в виде группы всех изменений базы данных, начиная от предыдущей команды COMMIT или ROLLBACK или от начала сеанса, либо для отказа от них. Управление параллелизмом определяет, в какой мере одновременные команды воздействуют друг на друга. Здесь проявляются “рабочие” различия в функционировании баз данных и способах изоляции результатов выполнения команд.
Как поддерживается порядок в базе данных SQL
Итак, SQL-системы используют множество таблиц, которое называется системным каталогом структуры базы данных. Для этих таблиц можно формулировать запросы, но их нельзя обновлять. Кроме того, можно добавлять столбцы комментариев в таблицы SYSTEMCATALOG и SYSTEMCOLUMNS (а также удалять их). Создание представлений для этих таблиц – превосходный способ точно определить ту информацию, к которой пользователи имеют право доступа. На этом мы заканчиваем рассмотрение SQL в интерактивном режиме. В следующей главе будут рассмотрены вопросы применения SQL непосредственно· в программах, написанных на языках программирования; такое использование позволяет извлечь преимущества взаимодействия программы с базой данных.
Использование SQL с другими языками программирования (встроенный SQL)
SQL-команды включаются в процедурные языки программирования для комбинирования сил двух подходов. Реализации такой возможности требует некоторых расширений SQL. Команды встроенного SQL транслируются с помощью программы, названной предкомпилятором (препроцессором), для создания программы, понятной компилятору языка высокого уровня. Команды встроенного SQL заменяются вызовом подпрограмм, которые создаются с помощью встроенного препроцессора; эти подпрограммы называются модулями доступа. С помощью такого подхода ANSI поддерживает встроенный SQL для языков программирования Pascal, FORTRAN, COBOL, PL/1. Другие языки также используются разработчиками. Наиболее важным из них является С. При описании встроенного SQL следует обратить особое внимание на следующее:
- Все встроенные команды SQL начинаются словами ЕХЕС SQL и заканчиваются в зависимости от используемого языка высокого уровня.
- Все переменные языка высокого уровня, используемые в командах SQL, должны быть внесены в раздел описаний SQL до своего применения.
- Если в командах SQL используются переменные языка высокого уровня, перед их именами необходимо указывать двоеточие.
- Выходные данные для запросов могут храниться непосредственно в переменных языка высокого уровня с помощью INTO тогда и только тогда, когда запрос выбирает единственную строку.
- Курсоры могут применяться для хранения выходных данных запроса и для доступа к ним по одной строке за один цикл обработки. Курсоры объявляются (вместе с определением запроса, выходные данные которого содержит курсор), открываются (что соответствует выполнению запроса) и закрываются (что соответствует удалению выходных данных из курсора, разрыву связи между выходными данными и курсором). Пока курсор открыт, можно использовать команду FETCH для доступа к выходным данным запроса: по одной строке для каждого выполнения команды FETCH.
- Курсоры могут быть обновляемыми или “только для чтения”. Чтобы быть обновляемым, курсор должен удовлетворять всем тем критериям, что и представление. Он не должен использовать предложения ORDER ВУ и UNION, которые запрещено применять в представлении. Необновляемый курсор является курсором “только для чтения”.
- Если курсор является обновляемым, его можно применить для управления строками, которые используются командами встроенного SQL UPDATE и DELETE из предложения WHERE CURRENT OF. DELETE или UPDATE должны принадлежать той таблице, доступ к которой осуществляется через курсор запроса.
- SQLCODE может быть объявлен как переменная числового типа для каждой программы, использующей встроенный SQL. Значения этой переменной устанавливаются автоматически после выполнения каждой SQL-команды.
- Если команда SQL выполняется нормально, но не формирует выходных данных либо не выполняет ожидаемых изменений в базе данных, SQLCODE принимает значение 100. Если команда выдает ошибку, то SQLCODE принимает некоторое отрицательное значение, описывающее причину ошибки, в зависимости от конкретной SQL-системы. В противном случае SQLCODE равен нулю.
- Предложение WHENEVER можно использовать для определения действия, которое следует выполнить, если SQLCODE принимает значение 100 (NOT FOUND – не найдено) или отрицательное значение (SQLERROR – ошибка при выполнении SQL). Это действие заключается в переходе к некоторой определенной точке программы (GOTO <метка>) или к выполнению “пустого действия” (CONTINUE, эквивалентно понятию “ничего не делать”). По умолчанию принято “пустое действие”.
- В качестве индикаторов можно использовать только числовые переменные. Переменные-индикаторы следуют за другими именами переменных в команде SQL без каких-либо разделяющих символов, за исключением слова INDICATOR.
- Обычно значение переменной-индикатора равно О. Если команда SQL пытается разместить значение NULL в переменную языка высокого уровня, использующую этот индикатор, то он принимает отрицательное значение. Это свойство можно использовать для защиты от ошибок и в качестве флага, помечающего в SQL NULL-значения, которые будут специально интерпретироваться в основной программе.
- Переменные-индикаторы можно использовать для вставки NULL-значений в команды SQL INSERT или UPDATE. Они принимают положительные значения при возникновении ситуации усечения строк.