Главная страница
Навигация по странице:

  • Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81. Немного истории

  • 2. Создание и заполнение базы данных

  • 7. Создание, преобразование и работа с данными

  • 8. Группировка и агрегаты

  • 13. Индексы и ограничения

  • A. ER диаграмма примера базы данных . . . . . . . . . . . . . . . . . . . . . . . . 257B. MySQL расширения языка SQL

  • Алфавитный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Предисловие

  • Структура книги Книга содержит 13 глав и 4 приложения:•

  • изучаем SQL. Она позволяет решать многошаговые задачи одним выражением


    Скачать 1.6 Mb.
    НазваниеОна позволяет решать многошаговые задачи одним выражением
    Дата09.02.2018
    Размер1.6 Mb.
    Формат файлаpdf
    Имя файлаизучаем SQL.pdf
    ТипДокументы
    #36127
    страница1 из 31
      1   2   3   4   5   6   7   8   9   ...   31

    SQL – универсальный язык реляционных баз данных. Это не самостоятель - ный язык; SQL-запросы выполняются из программ, написанных на языках про грам ми ро вания общего назначения, таких как С++, Java, Python и Perl.
    Реляционные базы данных стали практически вездесущими, и каж дый раз ра- бот чик должен иметь представление о языке, применяемом для доступа к БД.
    Алан Бьюли приглашает вас в полное открытий путешествие, которое начинается с про- сто го выражения SELECT. Вы научитесь:

    Собирать и возвращать взаимосвязанную информацию сразу из нескольких таб- лиц. Этот тип операций называется соединением и составляет самую суть SQL.

    Применять для работы с данными подход, ориентированный на множества. SQL просто создан для этого, и пренебречь таким преимуществом – значит отказаться от предлагаемых языком возможностей.

    Встраивать условную логику в SQL-выражения, используя выражения CASE. Порой это позволяет заменить два выражения одним.

    Писать подзапросы. Эта возможность является фундаментальной для установления существования/несуществования данных и для написания пакетных обновлений.
    Она позволяет решать многошаговые задачи одним выражением.

    Применять множество встроенных функций SQL для трансформирования и по- вторной ин терпретации данных.
    Чтобы изучить SQL, необходима практика. Примеры данной книги написаны для попу- ляр ной системы управления реляционными БД MySQL, которую можно скачать бесплат- но. Она выполняется практически во всех версиях UNIX, BSD и Linux, а также в Windows и Mac OS X. СУБД MySQL потребляет минимум системных ресурсов, и ее без труда могут уста новить и обслуживать даже неопытные программисты. Сочетание этих факторов де лает MySQL превосходным средством для изучения SQL и реляционных БД.
    Работа с SQL может быть приятной. Разве не удовольствие решить одним выражением за путанную задачу по мани пулированию данными или составлению отчета, пе реклады- вая на базу данных всю работу, которую в противном случае пришлось бы вы пол нять ва шему приложению? Этот вводный курс быстро подготовит вас к работе с SQL. Он иде- аль но подходит для всех, кто пишет приложения, выполняет функции администра тора или создает отчеты.
    Из у
    ч а
    е м S
    Q
    L
    Изучаем SQL
    Вводный курс для разработчиков и администраторов БД
    Алан Бьюли
    Изучаем
    SQL
    Ал а
    н
    Б
    ь ю
    л и
    www.symbol.ru
    Êàòåãîðèÿ: áàçû äàííûõ
    /
    SQL
    Óðîâåíü ïîäãîòîâêè ÷èòàòåëåé: ñðåäíèé
    9 785932 860519
    ISBN-10: 5-93286-051-0
    ISBN-13: 978-5-93286-051-9
    Издательство «Символ-Плюс»
    (812) 324-5353, (495) 945-8100
    learning_sql.indd 1
    learning_sql.indd 1 13.02.2007 16:57:46 13.02.2007 16:57:46

    Learning
    SQL
    Alan Beaulieu

    Алан Бьюли
    Изучаем
    SQL
    Санкт Петербург –Москва
    2007

    Оглавление
    Предисловие
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
    1. Немного истории
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
    Введение в базы данных
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
    Что такое SQL?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
    Что такое MySQL?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
    Дополнительные источники
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
    2. Создание и заполнение базы данных
    . . . . . . . . . . . . . . . . . . . . . . . . . 27
    Создание базы данных MySQL
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
    Инструмент командной строки mysql
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
    Типы данных MySQL
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
    Создание таблиц
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
    Заполнение и изменение таблиц
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
    Когда портятся хорошие выражения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
    Банковская схема
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
    3. Азбука запросов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
    Механика запроса
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
    Блоки запроса
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
    Блок select
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
    Блок from
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
    Блок where
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
    Блоки group by и having
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
    Блок order by
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
    4. Фильтрация
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
    Оценка условия
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
    Создание условия
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
    Типы условий
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
    NULL: это слово из четырех букв…
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    6
    Оглавление
    5. Запрос к нескольким таблицам
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
    Что такое соединение?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
    Соединение трех и более таблиц
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
    Рекурсивные соединения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
    Сравнение эквисоединений с неэквисоединениями
    . . . . . . . . . . . . . . . 103
    Сравнение условий соединения и условий фильтрации
    . . . . . . . . . . . . 105
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
    6. Работа с множествами
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
    Основы теории множеств
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
    Теория множеств на практике
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
    Операторы работы с множествами
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
    Правила операций с множествами
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
    7. Создание, преобразование и работа с данными
    . . . . . . . . . . . . . . 122
    Строковые данные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
    Числовые данные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
    Временные данные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
    Функции преобразования
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
    8. Группировка и агрегаты
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
    Принципы группировки
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
    Агрегатные функции
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
    Формирование групп
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
    Условия групповой фильтрации
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
    9. Подзапросы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
    Что такое подзапрос?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
    Типы подзапросов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
    Несвязанные подзапросы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
    Связанные подзапросы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
    Использование подзапросов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
    Краткий обзор подзапросов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
    10. И снова соединения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
    Внешние соединения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
    Перекрестные соединения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
    Естественные соединения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    Оглавление
    7
    11. Условная логика
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
    Что такое условная логика?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
    Выражение case
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
    Примеры выражений case
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
    Упражнения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
    12. Транзакции
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
    Многопользовательские базы данных
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
    Что такое транзакция?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
    13. Индексы и ограничения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
    Индексы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
    Ограничения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
    A. ER диаграмма примера базы данных
    . . . . . . . . . . . . . . . . . . . . . . . . 257
    B. MySQL расширения языка SQL
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
    C. Решения к упражнениям
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
    D. Дополнительные источники
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
    Алфавитный указатель
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

    Предисловие
    Языки программирования постоянно появляются и исчезают, и очень немногие из современных языков имеют более чем 10 летнюю исто рию. Среди долгожителей можно назвать КОБОЛ, который до сих пор довольно широко используется в мэйнфреймовых средах, и С, по прежнему весьма популярный при разработке операционных систем,
    серверов и встроенных систем. В области баз данных это SQL, корни которого уходят в далекие 1970 е.
    SQL – язык для формирования, манипулирования и извлечения дан ных из реляционной БД. Одна из причин популярности реляционных
    БД в том, что, будучи правильно спроектированными, они могут опери ровать гигантскими объемами данных. В работе с большими наборами данных SQL напоминает современную цифровую фотокамеру с мощ ным объективом: он позволяет просматривать большие объемы данных или перейти к «крупному плану», т. е. сфокусироваться на отдельных строках (подвластно и все, что между этими крайностями). Другие
    СУБД дают сбой при мощных нагрузках, потому что их фокус слишком узок (увеличительные линзы достигают своего максимума). Именно по этой причине все попытки низвергнуть реляционные БД и SQL окан чиваются неудачей. Поэтому, даже несмотря на то, что SQL – старый язык, похоже, его ждет еще очень долгая жизнь и блестящее будущее.
    Зачем изучать SQL?
    Если вы собираетесь работать с реляционными БД – писать приложе ния, или выполнять задачи по администрированию, или формировать отчеты, – вам понадобится знать, как взаимодействовать с данными
    БД. Даже при использовании инструмента, генерирующего SQL (на пример, инструмента создания отчетов), могут возникнуть ситуации,
    в которых понадобится обойти автоматические возможности и созда вать собственные SQL выражения.
    Дополнительное преимущество изучения SQL в том, что вы быстрее рассмотрите и поймете структуры данных, применяемые для хране ния информации о вашей организации. Почувствовав себя уверенно со своей БД, вы сможете вносить предложения по изменению или до полнению ее схемы.

    Предисловие
    9
    Почему именно эта книга?
    Язык SQL включает несколько категорий. Выражения, с помощью ко торых создаются объекты БД (таблицы, индексы, ограничения и т. д.),
    называют SQL выражениями управления схемой данных (schema sta
    tements
    ). Выражения, предназначенные для создания, манипулирова ния и извлечения данных, хранящихся в БД, называют 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

    10
    Предисловие

    Глава 4 «Фильтрация» представляет разные типы условий, кото рые могут использоваться в блоке where выражений select, update и delete.

    В главе 5 «Запрос к нескольким таблицам» показывается, как за просы могут работать с несколькими таблицами посредством соеди нений таблиц.

    Глава 6 «Работа с множествами» – все о множествах данных и о том,
    как они могут взаимодействовать внутри запросов.

    Глава 7 «Создание, преобразование и работа с данными» представ ляет несколько встроенных функций, используемых для манипу лирования или преобразования данных.

    В главе 8 «Группировка и агрегаты» показывается, как можно аг регировать данные.

    Глава 9 «Подзапросы» представляет подзапрос (мой любимый при ем) и показывает, как применяются подзапросы.

    Глава 10 «И снова соединения» продолжает рассматривать различ ные типы соединений таблиц.

    В главе 11 «Условная логика» рассматривается использование ус ловной логики (т. е. if then else) в выражениях select, insert, up date и delete.

    Глава 12 «Транзакции» знакомит с транзакциями и их использова нием.

    В главе 13 «Индексы и ограничения» исследуются индексы и огра ничения.

    Приложение A «ER диаграмма примера базы данных» содержит схему базы данных, используемой для всех примеров книги.

    Приложение B «MySQL расширения языка SQL» представляет не которые интересные возможности реализации SQL – MySQL, не входящие в стандарт ANSI.
      1   2   3   4   5   6   7   8   9   ...   31


    написать администратору сайта