alan_beaulieu-learning_sql-ru (865932), страница 2
Текст из файла (страница 2)
. . . . . . . . . 259C. Решения к упражнениям . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272D. Дополнительные источники . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Алфавитный указатель. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 301ПредисловиеЯзыки программирования постоянно появляются и исчезают, и оченьнемногие из современных языков имеют более чем 10летнюю историю. Среди долгожителей можно назвать КОБОЛ, который до сих пордовольно широко используется в мэйнфреймовых средах, и С, попрежнему весьма популярный при разработке операционных систем,серверов и встроенных систем. В области баз данных это SQL, корникоторого уходят в далекие 1970е.SQL – язык для формирования, манипулирования и извлечения данных из реляционной БД. Одна из причин популярности реляционныхБД в том, что, будучи правильно спроектированными, они могут оперировать гигантскими объемами данных.
В работе с большими наборамиданных SQL напоминает современную цифровую фотокамеру с мощным объективом: он позволяет просматривать большие объемы данныхили перейти к «крупному плану», т. е. сфокусироваться на отдельныхстроках (подвластно и все, что между этими крайностями). ДругиеСУБД дают сбой при мощных нагрузках, потому что их фокус слишкомузок (увеличительные линзы достигают своего максимума). Именно поэтой причине все попытки низвергнуть реляционные БД и SQL оканчиваются неудачей. Поэтому, даже несмотря на то, что SQL – старыйязык, похоже, его ждет еще очень долгая жизнь и блестящее будущее.Зачем изучать SQL?Если вы собираетесь работать с реляционными БД – писать приложения, или выполнять задачи по администрированию, или формироватьотчеты, – вам понадобится знать, как взаимодействовать с даннымиБД.
Даже при использовании инструмента, генерирующего SQL (например, инструмента создания отчетов), могут возникнуть ситуации,в которых понадобится обойти автоматические возможности и создавать собственные SQLвыражения.Дополнительное преимущество изучения SQL в том, что вы быстреерассмотрите и поймете структуры данных, применяемые для хранения информации о вашей организации.
Почувствовав себя уверенносо своей БД, вы сможете вносить предложения по изменению или дополнению ее схемы.Предисловие9Почему именно эта книга?Язык SQL включает несколько категорий. Выражения, с помощью которых создаются объекты БД (таблицы, индексы, ограничения и т. д.),называют SQLвыражениями управления схемой данных (schema statements). Выражения, предназначенные для создания, манипулирования и извлечения данных, хранящихся в БД, называют SQLвыражениями для работы с данными (data statements). Если вы администратор, то будете использовать и те и другие SQLвыражения.
Если выпрограммист или составитель отчетов, то сможете (или вам будет позволено) использовать только SQLвыражения для работы с данными. Хотя в этой книге встречается много SQLвыражений управления схемой,основное внимание в ней уделено возможностям программирования.Поскольку команд немного, SQLвыражения для работы с даннымикажутся простыми. Помоему, многие из имеющихся книг по SQLтолько усиливают это впечатление, давая лишь поверхностный обзортого, что можно делать с помощью этого языка.
Однако если вы собираетесь работать с SQL, вам следует полностью понимать все его возможности и то, как сочетать их для получения мощных результатов.На мой взгляд, эта книга – единственная, где язык SQL описан подробно, и при этом она не является «кирпичом» (вам знакомы эти «полныеруководства» по 1250 страниц, пылящиеся у народа на полках).Хотя примеры из книги подходят для MySQL, Oracle Database и SQLServer, мне пришлось отобрать один из этих продуктов, чтобы разместить БД для выполнения примеров и форматировать результирующиенаборы, возвращаемые примерами запросов.
Из этих трех я выбралMySQL, потому что он свободно доступен, его легко установить и просто администрировать. Читателей, использующих другой сервер, прошу скачать и установить MySQL и загрузить предлагаемую БД, чтобыиметь возможность выполнять примеры и экспериментировать с данными.Структура книгиКнига содержит 13 глав и 4 приложения:•В главе 1 «Немного истории» рассматривается история компьютерных БД, включая возникновение реляционной модели и языкаSQL.•В главе 2 «Создание и заполнение базы данных» показывается, каксоздавать БД MySQL и таблицы, используемые в примерах к книге,и как заполнять таблицы данными.•Глава 3 «Азбука запросов» знакомит с выражением select и представляет наиболее распространенные блоки (clauses): select, from,where.10Предисловие••••••••••••••Глава 4 «Фильтрация» представляет разные типы условий, которые могут использоваться в блоке where выражений select, updateи delete.В главе 5 «Запрос к нескольким таблицам» показывается, как запросы могут работать с несколькими таблицами посредством соединений таблиц.Глава 6 «Работа с множествами» – все о множествах данных и о том,как они могут взаимодействовать внутри запросов.Глава 7 «Создание, преобразование и работа с данными» представляет несколько встроенных функций, используемых для манипулирования или преобразования данных.В главе 8 «Группировка и агрегаты» показывается, как можно агрегировать данные.Глава 9 «Подзапросы» представляет подзапрос (мой любимый прием) и показывает, как применяются подзапросы.Глава 10 «И снова соединения» продолжает рассматривать различные типы соединений таблиц.В главе 11 «Условная логика» рассматривается использование условной логики (т.
е. ifthenelse) в выражениях select, insert, update и delete.Глава 12 «Транзакции» знакомит с транзакциями и их использованием.В главе 13 «Индексы и ограничения» исследуются индексы и ограничения.Приложение A «ERдиаграмма примера базы данных» содержитсхему базы данных, используемой для всех примеров книги.Приложение B «MySQLрасширения языка SQL» представляет некоторые интересные возможности реализации SQL – MySQL, невходящие в стандарт ANSI.Приложение C «Решения к упражнениям» содержит решения упражнений, приводимых в главах.Приложение D «Дополнительные источники» подсказывает, кудаможно обратиться, чтобы получить более глубокие навыки.Условные обозначения, используемые в книгеВ книге используются следующие типографские обозначения:КурсивИспользуется для имен файлов, имен каталогов и URLадресов.Также используется для выделения и при первом упоминании технического термина.11ПредисловиеМоноширинный шрифтИспользуется для примеров кода и обозначения ключевых словSQL в тексте.Моноширинный курсивИспользуется для обозначения пользовательских терминов.ВЕРХНИЙ РЕГИСТРИспользуется для обозначения ключевых слов SQL в примерах кода.Моноширинный полужирный шрифтВыделяет ввод пользователя в примерах с интерактивным взаимодействием.
Также выделяет элементы кода, на которые следует обратить особое внимание.Так выделяются советы, рекомендации или общие примечания.Например, с помощью примечаний я обращаю ваше вниманиена полезные новые возможности Oracle9i.Обозначает предупреждение или предостережение. Так я предупреждаю, например, о том, что неаккуратное применение некоего блока SQL может иметь неожиданные последствия.КонтактыПожалуйста, присылайте комментарии и вопросы по данной книгеиздателю:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472(800) 9989938 (в Соединенных Штатах или Канаде)(707) 8290515 (международный или местный)(707) 8290104 (факс)Для этой книги издательство O’Reilly поддерживает вебстраницу, накоторой приведены список опечаток, примеры и вся дополнительнаяинформация. Эту страницу можно найти по адресу:http://www.oreilly.com/catalog/learningsqlЧтобы прокомментировать или задать технические вопросы по этойкниге, присылайте электронные сообщения по адресу:bookquestions@oreilly.comБолее подробная информация о книгах издательства O’Reilly, конференциях, центрах ресурсов и портале O’Reilly Network представленана вебсайте:http://www.oreilly.com12ПредисловиеИспользование примеров кодаЦель этой книги – помочь вам выполнить работу.
Код, представленный в книге, в общем случае можно использовать в программах и документации. На воспроизведение небольших фрагментов кода в вашейпрограмме разрешение не требуется. Для продажи или распространения CDROM с примерами из книг O’Reilly разрешение необходимо. Если, отвечая на вопросы, вы ссылаетесь на книгу и цитируете примеркода, разрешение не требуется. Для включения существенного объемакода примеров из этой книги в документацию собственного продуктаразрешение необходимо.Мы признательны за указание авторства, но не требуем этого. Обычноуказание источника включает название, автора, издателя и ISBN. Например: «Learning SQL by Alan Beaulieu. Copyright 2005 O’Reilly Media, Inc., 0596007272.»Если вы сомневаетесь в корректности использования вами примеровкода, обратитесь за разъяснениями по адресу permissions@oreilly.com.Safari EnabledЕсли на обложке книги есть пиктограмма «Safari® Enabled»,это означает, что книга доступна в Сети через O’Reilly Network Safari Bookshelf.Safari предлагает намного лучшее решение, чем электронные книги.Это виртуальная библиотека, позволяющая без труда находить тысячилучших технических книг, вырезать и вставлять примеры кода, загружать главы и находить быстрые ответы, когда требуется наиболееверная и свежая информация.
Она свободно доступна по адресу http://safari.oreilly.com.БлагодарностиКнига – живой организм, и то, что сейчас перед вами, далеко от моихпервоначальных набросков. Эта метаморфоза произошла во многомблагодаря моему редактору Джонатану Геннику (Jonathan Gennick).Спасибо тебе за помощь на каждом этапе проекта – как за твою редакторскую доблесть, так и за экспертную поддержку в вопросах, связанных с языком SQL.
Еще я хотел бы поблагодарить трех моих технических рецензентов: Питера Гулутзана (Peter Gulutzan), Джозефа Молинаро (Joseph Molinaro) и Джеффа Кокса (Jeff Cox), побудивших менясделать эту книгу и технически насыщенной, и подходящей для читателей, не знакомых с SQL. Также огромная благодарность многим сотрудникам O’Reilly Media, помогавшим воплотить эту книгу в реальность, в том числе корректору Мэтт Хатчинсон (Matt Hutchinson), дизайнеру обложки Элли Волкхаузен (Ellie Volckhausen) и художникуоформителю Робу Романо (Rob Romano).Немного историиПрежде чем засучить рукава и приступить к работе, полезно представить некоторые базовые концепции и заглянуть в историю компьютеризированного хранения и извлечения данных.Введение в базы данныхБаза данных – это всего лишь набор взаимосвязанных данных.
Например, телефонный справочник – это база данных имен, телефонныхномеров и адресов всех людей, проживающих в определенной местности. Будучи, несомненно, широко и часто используемой базой данных,телефонный справочник не лишен следующих недостатков:•Поиск конкретного телефонного номера занимает много времени,особенно если в телефонном справочнике очень много записей.•Телефонный справочник проиндексирован только по именам/фамилиям, поэтому для поиска абонента по определенному адресу такая база данных практически не используется, хотя теоретическиэто и возможно.• С момента публикации телефонного справочника адекватность представленной в нем информации постепенно снижается, поскольку люди уезжают и приезжают из этой местности, меняют свои телефонные номера или переезжают по другому адресу в той же местности.Недостатками, присущими телефонным справочникам, обладает любаядругая некомпьютеризированная система хранения данных, например регистратура поликлиники, хранящая медицинские карты пациентов.