Изучаем Sql Алана Бьюли
Секреты Oracle SQL. Вводный курс для разработчиков и администраторов БД.
1 Вводный курс для разработчиков и администраторов БД Изучаем SQL Алан Бьюли 2 По договору между издательством «Символ-Плюс» и Интернет-магазином «Books.Ru Книги России» единственный легальный способ получения данного файла с книгой ISBN, название «Изучаем SQL» покупка в Интернет-магазине «Books.Ru Книги России». Если Вы получили данный файл каким-либо другим образом, Вы нарушили международное законодательство и законодательство Российской Федерации об охране авторского права. Вам необходимо удалить данный файл, а также сообщить издательству «Символ-Плюс» где именно Вы получили данный файл.
3 Learning SQL Alan Beaulieu. 4 Изучаем SQL Алан Бьюли Санкт-Петербург Москва 2007 5 Алан Бьюли Изучаем SQL Перевод Н. Шатохиной Главный редактор Зав. Редакцией Научный редактор Редактор Корректор Верстка А. Орлова Бьюли А. СПб: Символ-Плюс, с., ил. ISBN-13: ISBN-10: Книга Алана Бьюли, эксперта по языку SQL, прекрасный учебник для тех, кто еще не знает, но хочет освоить этот язык.
Книга не только позволит приобрести начальные знания, но и расскажет о наиболее часто употребляемых мощных средствах языка SQL, используемых опытными программистами. Многие книги, посвященные SQL, грешат скучным изложением основ. Здесь же автор в стиле живого рассказа обсуждает SQL-выражения и блоки, различные типы условий, показывает, как посредством соединения таблиц создавать запросы к нескольким таблицам, рассматривает наборы данных и как они могут взаимодействовать в запросах, демонстрирует встроенные и агрегатные функции, показывает, как и где используются подзапросы. Подробно описаны различные типы соединений таблиц, применение условной логики, работа с транзакциями, индексы и ограничения.
Поскольку лучший способ изучения SQL это практика, автор создает учебную базу данных MySQL и приводит множество вариантов реальных запросов, охватывающих весь теоретический материал. При таком подходе не научиться просто невозможно.
Изучаем Sql Алан Бьюли 2016
Примеры кода можно использовать в своих программах и документации. Книга предназначена разработчикам приложений БД, администраторам БД и тем, кто создает отчеты.
ISBN-13: ISBN-10: ISBN (англ) Издательство Символ-Плюс, 2007 Authorized translation of the English edition 2005 O Reilly Media Inc. This translation is published and sold by permission of O Reilly Media Inc., the owner of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или частичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные знаки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство «Символ-Плюс», Санкт-Петербург, 16 линия, 7, тел. (812), Лицензия ЛП N от Налоговая льгота общероссийский классификатор продукции ОК, том 2; книги и брошюры. Подписано в печать Формат 70х100 1 /16.
Изучаем Sql Алан Бьюли Купить
Печать офсетная. Объем 19,5 печ.
Тираж 2000 экз. Заказ N Отпечатано с готовых диапозитивов в ГУП «Типография «Наука», Санкт-Петербург, 9 линия, 12.
6 Оглавление Предисловие Немного истории Введение в базы данных Что такое SQL? Что такое MySQL? Дополнительные источники Создание и заполнение базы данных Создание базы данных MySQL Инструмент командной строки mysql Типы данных MySQL Создание таблиц Заполнение и изменение таблиц Когда портятся хорошие выражения Банковская схема Азбука запросов Механика запроса Блоки запроса Блок select Блок from Блок where Блоки group by и having Блок order by Упражнения Фильтрация Оценка условия Создание условия Типы условий NULL: это слово из четырех букв Упражнения 7 6 Оглавление 5. Запрос к нескольким таблицам Что такое соединение? Соединение трех и более таблиц Рекурсивные соединения Сравнение эквисоединений с неэквисоединениями Сравнение условий соединения и условий фильтрации Упражнения Работа с множествами Основы теории множеств Теория множеств на практике Операторы работы с множествами Правила операций с множествами Упражнения Создание, преобразование и работа с данными Строковые данные Числовые данные Временные данные Функции преобразования Упражнения Группировка и агрегаты Принципы группировки Агрегатные функции Формирование групп Условия групповой фильтрации Упражнения Подзапросы Что такое подзапрос?
Типы подзапросов Несвязанные подзапросы Связанные подзапросы Использование подзапросов Краткий обзор подзапросов Упражнения И снова соединения Внешние соединения Перекрестные соединения Естественные соединения Упражнения 8 Оглавление Условная логика Что такое условная логика? Выражение case Примеры выражений case Упражнения Транзакции Многопользовательские базы данных Что такое транзакция? Индексы и ограничения Индексы Ограничения A. ER-диаграмма примера базы данных B. MySQL-расширения языка SQL C. Решения к упражнениям D.
Дополнительные источники Алфавитный указатель 9 Предисловие Языки программирования постоянно появляются и исчезают, и очень немногие из современных языков имеют более чем 10-летнюю историю. Среди долгожителей можно назвать КОБОЛ, который до сих пор довольно широко используется в мэйнфреймовых средах, и С, попрежнему весьма популярный при разработке операционных систем, серверов и встроенных систем. В области баз данных это SQL, корни которого уходят в далекие 1970-е.
SQL язык для формирования, манипулирования и извлечения данных из реляционной БД. Одна из причин популярности реляционных БД в том, что, будучи правильно спроектированными, они могут оперировать гигантскими объемами данных. В работе с большими наборами данных SQL напоминает современную цифровую фотокамеру с мощным объективом: он позволяет просматривать большие объемы данных или перейти к «крупному плану», т. Сфокусироваться на отдельных строках (подвластно и все, что между этими крайностями). Другие СУБД дают сбой при мощных нагрузках, потому что их фокус слишком узок (увеличительные линзы достигают своего максимума). Именно по этой причине все попытки низвергнуть реляционные БД и SQL оканчиваются неудачей.
Поэтому, даже несмотря на то, что SQL старый язык, похоже, его ждет еще очень долгая жизнь и блестящее будущее. Зачем изучать SQL? Если вы собираетесь работать с реляционными БД писать приложения, или выполнять задачи по администрированию, или формировать отчеты, вам понадобится знать, как взаимодействовать с данными БД. Даже при использовании инструмента, генерирующего SQL (например, инструмента создания отчетов), могут возникнуть ситуации, в которых понадобится обойти автоматические возможности и создавать собственные SQL-выражения. Дополнительное преимущество изучения SQL в том, что вы быстрее рассмотрите и поймете структуры данных, применяемые для хранения информации о вашей организации. Почувствовав себя уверенно со своей БД, вы сможете вносить предложения по изменению или дополнению ее схемы. 10 Предисловие 9 Почему именно эта книга?
Язык SQL включает несколько категорий. Выражения, с помощью которых создаются объекты БД (таблицы, индексы, ограничения и т. Д.), называют SQL-выражениями управления схемой данных (schema statements). Выражения, предназначенные для создания, манипулирования и извлечения данных, хранящихся в БД, называют SQL-выражениями для работы с данными (data statements). Если вы администратор, то будете использовать и те и другие SQL-выражения. Если вы программист или составитель отчетов, то сможете (или вам будет позволено) использовать только SQL-выражения для работы с данными. Хотя в этой книге встречается много SQL-выражений управления схемой, основное внимание в ней уделено возможностям программирования.
Поскольку команд немного, SQL-выражения для работы с данными кажутся простыми. По-моему, многие из имеющихся книг по SQL только усиливают это впечатление, давая лишь поверхностный обзор того, что можно делать с помощью этого языка. Однако если вы собираетесь работать с SQL, вам следует полностью понимать все его возможности и то, как сочетать их для получения мощных результатов.
На мой взгляд, эта книга единственная, где язык SQL описан подробно, и при этом она не является «кирпичом» (вам знакомы эти «полные руководства» по 1250 страниц, пылящиеся у народа на полках). Хотя примеры из книги подходят для MySQL, Oracle Database и SQL Server, мне пришлось отобрать один из этих продуктов, чтобы разместить БД для выполнения примеров и форматировать результирующие наборы, возвращаемые примерами запросов. Из этих трех я выбрал MySQL, потому что он свободно доступен, его легко установить и просто администрировать. Читателей, использующих другой сервер, прошу скачать и установить MySQL и загрузить предлагаемую БД, чтобы иметь возможность выполнять примеры и экспериментировать с данными. Структура книги Книга содержит 13 глав и 4 приложения: В главе 1 «Немного истории» рассматривается история компьютерных БД, включая возникновение реляционной модели и языка SQL. В главе 2 «Создание и заполнение базы данных» показывается, как создавать БД MySQL и таблицы, используемые в примерах к книге, и как заполнять таблицы данными.
Глава 3 «Азбука запросов» знакомит с выражением select и представляет наиболее распространенные блоки (clauses): select, from, where. 11 10 Предисловие Глава 4 «Фильтрация» представляет разные типы условий, которые могут использоваться в блоке where выражений select, update и delete. В главе 5 «Запрос к нескольким таблицам» показывается, как запросы могут работать с несколькими таблицами посредством соединений таблиц. Глава 6 «Работа с множествами» все о множествах данных и о том, как они могут взаимодействовать внутри запросов.
Глава 7 «Создание, преобразование и работа с данными» представляет несколько встроенных функций, используемых для манипулирования или преобразования данных. В главе 8 «Группировка и агрегаты» показывается, как можно агрегировать данные. Глава 9 «Подзапросы» представляет подзапрос (мой любимый прием) и показывает, как применяются подзапросы. Глава 10 «И снова соединения» продолжает рассматривать различные типы соединений таблиц. В главе 11 «Условная логика» рассматривается использование условной логики (т.
If-then-else) в выражениях select, insert, update и delete. Глава 12 «Транзакции» знакомит с транзакциями и их использованием.
В главе 13 «Индексы и ограничения» исследуются индексы и ограничения. Приложение A «ER-диаграмма примера базы данных» содержит схему базы данных, используемой для всех примеров книги. Приложение B «MySQL-расширения языка SQL» представляет некоторые интересные возможности реализации SQL MySQL, не входящие в стандарт ANSI. Приложение C «Решения к упражнениям» содержит решения упражнений, приводимых в главах. Приложение D «Дополнительные источники» подсказывает, куда можно обратиться, чтобы получить более глубокие навыки. Условные обозначения, используемые в книге В книге используются следующие типографские обозначения: Курсив Используется для имен файлов, имен каталогов и URL-адресов. Также используется для выделения и при первом упоминании технического термина.
12 Предисловие 11 Моноширинный шрифт Используется для примеров кода и обозначения ключевых слов SQL в тексте. Моноширинный курсив Используется для обозначения пользовательских терминов. ВЕРХНИЙ РЕГИСТР Используется для обозначения ключевых слов SQL в примерах кода. Моноширинный полужирный шрифт Выделяет ввод пользователя в примерах с интерактивным взаимодействием.
Также выделяет элементы кода, на которые следует обратить особое внимание. Контакты Так выделяются советы, рекомендации или общие примечания. Например, с помощью примечаний я обращаю ваше внимание на полезные новые возможности Oracle9i. Обозначает предупреждение или предостережение. Так я предупреждаю, например, о том, что неаккуратное применение некоего блока SQL может иметь неожиданные последствия. Пожалуйста, присылайте комментарии и вопросы по данной книге издателю: O Reilly Media, Inc Gravenstein Highway North Sebastopol, CA (800) (в Соединенных Штатах или Канаде) (707) (международный или местный) (707) (факс) Для этой книги издательство O Reilly поддерживает веб-страницу, на которой приведены список опечаток, примеры и вся дополнительная информация.
Эту страницу можно найти по адресу: Чтобы прокомментировать или задать технические вопросы по этой книге, присылайте электронные сообщения по адресу: Более подробная информация о книгах издательства O Reilly, конференциях, центрах ресурсов и портале O Reilly Network представлена на веб-сайте: 13 12 Предисловие Использование примеров кода Цель этой книги помочь вам выполнить работу. Код, представленный в книге, в общем случае можно использовать в программах и документации. На воспроизведение небольших фрагментов кода в вашей программе разрешение не требуется. Для продажи или распространения CD-ROM с примерами из книг O Reilly разрешение необходимо. Если, отвечая на вопросы, вы ссылаетесь на книгу и цитируете пример кода, разрешение не требуется.
Для включения существенного объема кода примеров из этой книги в документацию собственного продукта разрешение необходимо. Мы признательны за указание авторства, но не требуем этого. Обычно указание источника включает название, автора, издателя и ISBN. Например: «Learning SQL by Alan Beaulieu. Copyright 2005 O Reilly Media, Inc., » Если вы сомневаетесь в корректности использования вами примеров кода, обратитесь за разъяснениями по адресу Safari Enabled Если на обложке книги есть пиктограмма «Safari Enabled», это означает, что книга доступна в Сети через O Reilly Network Safari Bookshelf.
Safari предлагает намного лучшее решение, чем электронные книги. Это виртуальная библиотека, позволяющая без труда находить тысячи лучших технических книг, вырезать и вставлять примеры кода, загружать главы и находить быстрые ответы, когда требуется наиболее верная и свежая информация.
Она свободно доступна по адресу safari.oreilly.com. Благодарности Книга живой организм, и то, что сейчас перед вами, далеко от моих первоначальных набросков. Эта метаморфоза произошла во многом благодаря моему редактору Джонатану Геннику (Jonathan Gennick). Спасибо тебе за помощь на каждом этапе проекта как за твою редакторскую доблесть, так и за экспертную поддержку в вопросах, связанных с языком SQL.
Еще я хотел бы поблагодарить трех моих технических рецензентов: Питера Гулутзана (Peter Gulutzan), Джозефа Молинаро (Joseph Molinaro) и Джеффа Кокса (Jeff Cox), побудивших меня сделать эту книгу и технически насыщенной, и подходящей для читателей, не знакомых с SQL. Также огромная благодарность многим сотрудникам O Reilly Media, помогавшим воплотить эту книгу в реальность, в том числе корректору Мэтт Хатчинсон (Matt Hutchinson), дизайнеру обложки Элли Волкхаузен (Ellie Volckhausen) и художникуоформителю Робу Романо (Rob Romano). 14 Азбука запросов Первые две главы содержали несколько примеров запросов к базам данных (т. Выражений select). Теперь пришло время поближе рассмотреть разные части выражения select и их взаимодействие.
Механика запроса Прежде чем анализировать выражение select, любопытно узнать, как сервер MySQL (или, коли на то пошло, любой сервер БД) выполняет запросы. Если вы используете клиентскую программу командной строки mysql (что я предполагаю), то уже зарегистрировались на сервере MySQL, предоставив свои имя пользователя и пароль (и, возможно, имя хоста, если сервер MySQL выполняется на другом компьютере). Как только сервер проверил правильность имени пользователя и пароля, для вас создается соединение с БД. Это соединение удерживается запросившим его приложением (которым в данном случае является инструмент mysql) до тех пор, пока приложение не высвободит соединение (например, в результате введения команды quit) или пока соединение не будет закрыто сервером (например, при выключении сервера). Каждому соединению с сервером MySQL присваивается идентификатор (ID), предоставляемый пользователю сразу после регистрации: Welcome to the MySQL monitor. Commands end with; or g. Your MySQL connection id is 2 to server version: nt Type 'help;' or ' h' for help.
Type ' c' to clear the buffer. В данном случае ID соединения 2. Эта информация может быть полезной администратору БД в случае каких-либо неполадок. Например, если требуется прервать плохо сформированный запрос, выполняющийся часами. После того как сервер открыл соединение, проверив достоверность имени пользователя и пароля, можно выполнять запросы (и другие 15 52 Глава 3.
Азбука запросов SQL-выражения). При каждом запросе перед выполнением выражения сервер проверяет следующее: Есть ли у вас разрешение на выполнение выражения? Есть ли у вас разрешение на доступ к необходимым данным? Правилен ли синтаксис выражения? Если выражение проходит все три теста, оно передается оптимизатору запросов, работа которого заключается в определении наиболее эффективного способа выполнения запроса. Оптимизатор рассмотрит порядок соединения таблиц, перечисленных в запросе, и доступные индексы, а затем определит план выполнения, используемый сервером при выполнении этого запроса.
Многие из вас заинтересуются тем, как понять и воздействовать на выбор сервером БД плана выполнения. Читатели, использующие MySQL, могут посмотреть книгу «High Performance MySQL» (O Reilly). Кроме прочего, вы научитесь генерировать индексы, анализировать планы выполнения, оказывать влияние на оптимизатор посредством подсказок запроса и настраивать параметры запуска сервера.
Для пользователей Oracle Database или SQL Server есть десятки книг по этой тематике. По завершении выполнения запроса сервер возвращает в вызывающее приложение (опять же в инструмент mysql) результирующий набор (result set). Как было упомянуто в главе 1, результирующий набор это просто еще одна таблица со строками и столбцами.