2012г.
Количество страниц: 584
В сегодняшнем мире наивысшую ценность имеет информация, однако не наименее важно уметь этой информацией руководить. Эта книга Изучаем SQL. Бейли посвящена языку запросов SQL и управлению БД. Материал излагается, начиная с описания основных запросов и заканчивая сложными манипуляциями при помощи объединений, подзапросов и транзакций. Если вы пытаетесь разобраться в организации и управлении БД - эта книга будет отличным практическим пособием и предоставит вам все нужные инструменты. Особенностью данного издания является эксклюзивный метод подачи материала, выделяющий серию "Head First" издательства O'Reilly в ряду множества скучных книжек, посвященных программированию.
Оглавление книги
Изучаем SQL. Бейли
Введение 25
1 Данные и таблицы: Всему свое место 37
2 Команда SELECT: Выборка данных 87
3 DELETE и UPDATE: О пользе изменений 153
4 Проектирование таблиц: Как важно быть нормальным 193
5 ALTER: Как изменить прошлое 231
6 Расширенные возможности SELECT: Взглянуть на данные
под другим углом 267
7 Многотабличные базы данных: Когда в одной таблице тесно 311
8 Cоединения и многотабличные операции:
Не могли бы мы остаться в одиночестве? 373
9 Подзапросы: Запросы внутри запросов 409
10 Внешние соединения, самосоединения и союзы:
Новые приемы 445
11 Ограничения, представления и транзакции: У семи нянек 481
12 Безопасность: Защита данных 519
Приложение I: Прочее 549
Приложение II: Установка MySQL 567
Приложение III: Список инструментов 57
Настройте свой мозг на SQL. Вот что вам понадобится, когда
вы пытаетесь что-то выучить, в то время как ваш мозг не хочет вос-
принимать информацию. Ваш мозг считает: «Лучше уж я подумаю о
более важных вещах, например об опасных диких животных или почему
нельзя голышом прокатиться на сноуборде». Как же заставить свой мозг
думать, что ваша жизнь зависит от овладения SQL?
Для кого написана эта книга? 26
Мы знаем, о чем вы думаете 27
Метапознание: наука о мышлении 29
Заставить свой мозг повиноваться 31
Примите к сведению 32
Технические рецензенты 34
Благодарности 35
Всему свое место
1 Разве не обидно потерять? Что угодно — ключи от машины,
купон на скидку в 25%, данные приложения... Нет ничего хуже, чем не-
возможность найти то, что вам нужно... и именно тогда, когда нужно.
А в том, что касается приложений, для хранения важной информации не
найти места лучше, чем таблица. Так что переверните страницу и при-
соединяйтесь к нашей прогулке по миру реляционных баз данных.
Данные и таблицы
Определение данных 38
Рассматриваем данные по категориям 43
Что такое «база данных»? 44
Посмотрим на базу данных через волшебные очки... 46
В базах данных хранится логически связанная информация 48
Таблицы под увеличительным стеклом 49
Командуйте! 53
Создание таблицы: команда CREATE TABLE 55
Создание более сложных таблиц 56
Посмотрите, как просто пишется код SQL 57
Наконец-то создаем таблицу my_contacts 58
Таблица готова 59
Знакомство с типами данных 60
Описание таблицы 64
Нельзя заново создать существующую таблицу или базу данных! 66
Долой старые таблицы! 68
Для добавления данных в таблицу используется команда INSERT 70
Создание команды INSERT 73
Модификации команды INSERT 77
Столбцы без значений 78
Команда SELECT читает данные из таблицы 79
Управление NULL в таблицах 81
NOT NULL в выходных данных DESC 83
DEFAULT и значения по умолчанию 84
Новые инструменты 85
Команда SELECT
2
Я — звезда!
Трудный поиск 88
Улучшенная команда SELECT 91
Что это за * ? 92
Как запрашивать разные типы данных 98
Проблемы со знаками препинания 99
Непарный апостроф 100
Апострофы как специальные символы 101
Команда INSERT с внутренним апострофом 102
Выборка ограниченного набора столбцов 105
Отбор столбцов ускоряет получение результатов 107
Объединение условий 114
Поиск числовых значений 117
Операторы сравнения 120
Операторы сравнения при поиске числовых данных 122
Операторы сравнения при поиске текстовых данных 125
Быть ИЛЬ не быть 127
Чем AND отличается от OR 130
Испольование IS NULL для поиска NULL 133
LIKE: слово для экономии времени 135
Специальные символы 135
Проверка диапазонов с использованием AND
и операторов сравнения 139
Только МЕЖДУ нами... Есть и другой способ 140
Условие IN 143
Ключевые слова NOT IN 144
Другие применения NOT 145
Новые инструменты 15
DELETE и UPDATE
Клоуны вокруг нас 154
Информация о клоунах 155
Перемещения клоунов 156
Как вводятся сведения о клоунах 160
Бонзо, у нас проблема 162
Уничтожение записей командой DELETE 163
Использование команды DELETE 165
Правила DELETЕ 166
Танцы INSERT-DELETE 169
Будьте внимательны при выполнении DELETE 174
Проблемы с неточными условиями DELETE 178
Изменение данных командой UPDATE 180
Правила UPDATE 181
UPDATE как замена INSERT-DELETE 182
UPDATE в действии 183
Обновление цен 188
Достаточно одной команды UPDATE 190
Новые нструменты 192
Проектирование таблиц
Две таблицы 194
Логические связи как суть таблицы 198
Атомарные данные 202
Атомарные данные и таблицы 204
О пользе нормализации 208
Преимущества нормализованных таблиц 209
Ненормализованные клоуны 210
На полпути к 1НФ 211
Правила первичных ключей 212
Как прийти в НОРМУ 215
Исправление таблицы Грега 216
Старая команда CREATE TABLE 217
Сначала покажи деньги таблицу 218
Команда для экономии времени 219
Команда CREATE TABLE с назначением
первичного ключа 220
1, 2, 3 и так далее 222
Добавление первичного ключа в существующую таблицу 226
ALTER TABLE и добавление первичного ключа 227
Новые инструменты 228
ALTER
Нужно внести пару изменений 232
Изменение таблиц 237
Капитальный ремонт таблицы 238
Переименование таблицы 239
Грандиозные планы 241
Перепланировка столбцов 242
Структурные изменения 243
ALTER и CHANGE 244
Изменение двух столбцов одной командой SQL 245
Стоп! Никаких лишних столбцов! 249
Неатомарный столбец location 256
В поисках закономерности 257
Удобные строковые функции 258
Заполнение нового столбца существующими данными 263
Как работает комбинация UPDATE с SET 264
Новые инструменты 266
Расширенные возможности SELECT
Пора обзавестись более точными инструментами. Вы уже знаете,
как выполнять выборку данных, и умеете работать с условиями WHERE. Но в не-
которых ситуациях нужна точность, на которую SELECT и WHERE не способны.
В этой главе вы научитесь упорядочивать и группировать свои данные, а также
выполнять математические операции с полученными результатами.
Перестройка в видеотеке 268
Недостатки существующей таблицы 269
Классификация существующих данных 270
Заполнение нового столбца 271
UPDATE с выражением CASE 274
Похоже, у нас проблемы 276
Трудности с таблицами 281
Упорядочение результатов выборки 282
ORDER BY 285
Упорядочение по одному столбцу 286
ORDER с двумя столбцами 289
ORDER с несколькими столбцами 290
Упорядоченная таблица 291
DESC и изменение порядка данных 293
Проблемы с печеньем 295
SUM сложит числа за нас 297
Суммирование с использованием GROUP BY 298
Функция AVG с GROUP BY 299
MIN и MAX 300
COUNT и подсчет дней 301
Команда SELECT DISTINCT 303
LIMIT и ограничение результатов 306
LIMIT и второе место 307
Новые нструменты 310
Многотабличные базы данных
Как найти Найджелу подружку 312
Одной таблицы недостаточно 324
Многотабличная база данных с информацией о клоунах 325
Схема базы данных clown_tracking 326
Как из одной таблицы сделать две 328
Связывание таблиц 333
Что нужно знать о внешних ключах 334
Связи между таблицами 339
Типы связей: один-к-одному 339
Когда используются таблицы со связями
типа «один-к-одному» 340
Типы связей: «один-ко-многим» 341
Типы связей: «многие-ко-многим» 342
Нам нужна соединительная таблица 345
Типы связей: «многие-ко-многим» 346
Исправляем таблицу Грега 349
Наконец-то — 1НФ... 351
Составные ключи состоят из нескольких столбцов 352
Сокращенная запись 354
Супергеройские зависимости 355
Частичные функциональные зависимости 355
Транзитивные функциональные зависимости 356
Вторая нормальная форма 360
Возможно, таблица уже находится в 2НФ... 361
Третья нормальная форма (наконец-то!) 366
Что делать с таблицей my_contacts? 367
Новые инструменты 370
Cоединения и многотабличные операции
Добро пожаловать в многотабличный мир! Базы данных, со-
стоящие из нескольких таблиц, удобны, но чтобы успешно работать с ними,
вам придется освоить некоторые новые инструменты и приемы. При работе
с несколькими таблицами может возникнуть путаница, поэтому вам понадобятся
псевдонимы. А соединения помогут установить связь между таблицами, чтобы
снова собрать воедино информацию, разбросанную по разным таблицам. При-
готовьтесь, пора снова взять базу данных под свой полный контроль!
И все равно повторения, повторения... 374
Заполнение таблиц 375
Проблемы с нормализацией 377
Особые увлечения (столбец) 378
Разделение увлечений 379
Обновление столбцов 380
Вывод списка 381
Дороги, которые мы выбираем 382
(Почти) одновременное выполнение CREATE, SELECT
и INSERT 382
Одновременное выполнение CREATE, SELECT и INSERT 383
Зачем нужно AS? 384
Псевдонимы столбцов 385
Кому нужны псевдонимы таблиц? 386
Все, что вы хотели знать о внутренних соединениях 387
Перекрестное соединение 388
Открой свое внутреннее соединение 393
Внутреннее соединение в действии: эквисоединение 394
Внутреннее соединение в действии: неэквивалентное
соединение 397
Последнее внутреннее соединение: естественное
соединение 398
Встроенные запросы? 405
Новые инструменты 407
Подзапросы
Внешний
запрос
Мне, пожалуйста, запрос из двух частей. Соединения — хорошая
штука, но иногда возникает необходимость обратиться к базе данных сразу
с несколькими вопросами. Или взять результат одного запроса и исполь-
зовать его в качестве входных данных другого запроса. В этом вам помогут
подзапросы, также называемые подчиненными запросами. Они предотвра-
щают дублирование данных, делают запросы более динамичными и даже
помогут вам попасть на вечеринку в высшем обществе. (А может, и нет —
но два из трех тоже неплохо!)
Грег берется за поиски работы 410
В списке Грега появляются новые таблицы 411
Грег использует внутреннее соединение 412
Но он хочет опробовать другие запросы 414
Подзапросы 416
Два запроса преобразуются в запрос с подзапросом 417
Подзапросы: если одного запроса недостаточно 418
Подзапрос в действии 419
Правила для подзапросов 421
Построение подзапроса 424
Подзапрос как столбец SELECT 427
Другой пример: подзапрос с естественным соединением 428
Некоррелированный подзапрос 429
Некоррелированный подзапрос с несколькими
значениями: IN, NOT IN 433
Коррелированные подзапросы 438
Коррелированный подзапрос с NOT EXISTS 439
EXISTS и NOT EXISTS 440
Служба поиска работы Грега принимает заказы 442
По дороге на вечеринку 443
Новые инструменты 444
Внешние соединения, самосоединения и союзы
Уничтожение старых данных 446
Левое, правое... 447
Пример левого внешнего соединения 448
Внешние соединения и множественные совпадения 453
Правое внешнее соединение 454
Пока мы занимались внешними соединениями... 457
Создание новой таблицы 458
Место новой таблицы в схеме 459
Рефлексивный внешний ключ 460
Соединение таблицы с ней самой 461
Потребуется самосоединение 463
Другой способ получения многотабличной информации 464
Союзы 465
Ограничения союзов 466
Правила союзов в действии 467
UNION ALL 468
Создание таблицы на основе союза 469
INTERSECT и EXCEPT 470
С союзами разобрались, пора переходить к... 471
Сравнение подзапросов и соединений 471
Преобразование подзапроса в соединение 472
Самосоединение как подзапрос 477
Компания Грега растет 478
Новые инструменты 480
Ограничения, представления и транзакции
Dataville
Savings & Loan
Ваша база данных выросла, и теперь с ней будут работать дру-
гие люди. К сожалению, далеко не все они так же хорошо разбираются в SQL,
как вы. Вам придется позаботиться о том, чтобы предотвратить ввод неверных
данных, запретить просмотр лишних данных, а также предотвратить возмож-
ные конфликты при одновременном вводе данных. В этой главе мы займемся
защитой данных от чужих ошибок. Итак — Защита Баз Данных, часть 1.
Грег нанимает помощников 482
Первый день: вставка данных нового клиента 483
Джим не хочет использовать NULL 484
Три месяца спустя 485
Добавление ограничения CHECK 486
Ограничение CHECK для столбца gender 487
Однообразная работа Фрэнка 489
Создание представления 491
Просмотр представлений 492
Как работает представление 493
Что такое представление 494
Вставка, обновление и удаление в представлениях 497
Обновление данных через представление 498
Представление с CHECK OPTION 501
Представление может быть обновляемым, если... 502
Удаление представлений 503
Когда хорошая база данных плохо ведет себя 504
Что произошло с банкоматом 505
Новые неприятности с банкоматами 506
Это не мечты, а транзакции 508
Свойства транзакций 509
SQL помогает работать с транзакциями 510
Как должен был работать банкомат 511
Как работать с транзакциями в MySQL 512
Теперь попробуйте сами 513
Новые инструменты 516
Безопасность
root bashful doc dopey grumpy happy sleepy sneezy
Вы потратили массу времени и сил на создание базы данных.
И если теперь с ней что-нибудь случится, это будет полной катастрофой. Кроме
того, вам приходится предоставлять другим пользователям доступ к данным,
и вы опасаетесь, что они могут ошибиться с вставкой или обновлением — или
и того хуже, удалить нужные данные. В этой главе вы узнаете, как защитить
базу данных и хранящиеся в ней объекты и как установить контроль над тем,
какие операции с данными разрешены тем или иным пользователям.
Проблемы с пользователями 520
Предотвращение ошибок в базе данных 521
Защита учетной записи root 523
Создание нового пользователя 524
Решите, что необходимо каждому пользователю 525
Простая команда GRANT 526
Разновидности GRANT 529
Команда REVOKE 530
Отзыв использованной привилегии GRANT OPTION 531
Проблема общих учетных записей 536
Использование роли 538
Удаление ролей 538
Конструкция WITH ADMIN OPTION 540
Объединение CREATE USER с GRANT 545
Оглушительный успех! 546
Новые инструменты 547
Присоединяйтесь! 548
Используйте SQL в своих проектах... и возможно,
вас тоже ожидает успех! 548
Прочее
Z ZONE
Но даже после всего сказанного беседа еще не закон-
чена! Есть еще кое-что, о чем вы должны знать. Мы решили, что будет
неправильно просто проигнорировать эти темы — они заслуживают хотя
бы краткого упоминания. Итак, прежде чем откладывать книгу, ознакомь-
тесь с этими короткими, но важными разделами. А когда вы прочитае-
те и эту главу, останется еще пара приложений... и может быть, немного
рекламы... и ничего больше. Честное слово!
1. Используйте графический интерфейс к своей РСУБД 550
2. Зарезервированные слова и специальные символы 552
3. ALL, ANY и SOME 554
4. Подробнее о типах данных 556
5. Временные таблицы 558
6. Преобразование типа 559
7. Имя пользователя и текущее время 560
8. Полезные числовые функции 561
8. Полезные числовые функции (продолжение) 562
9. Индексирование для ускорения операций 563
10. PHP/MySQL за две минуты 564Установка MySQL
III Полный инструментарий SQL
Cписок инструментов
За дело! 568
Инструкции и устранение проблем 568
Установка MySQL в системе Windows 569
Установка MySQL в Mac OS X 572
Ваши новые знания принесут пользу только в том слу-
чае, если вы сможете применить их на практике. В этом
приложении содержатся инструкции по установке РСУБД MySQL.
В этом приложении перечислены все инструменты SQL,
упоминавшиеся в книге. Не жалейте времени, просмот рите весь
список и возрадуйтесь — ведь вы изучили их все!