Правильная ссылка на эту страницу
http://az-design.ru/Support/DataBase/SQL/CelkoJ/010toc.shtml

SQL для профессионалов:
продвинутое программирование на SQL

       Книга "SQL для профессионалов" стала первым изданием, посвященным исключительно сложным технологиям SQL, освоение которых способно сделать читателя экспертом в этой области. В нынешнем обновленном издании автор книги Джо Селко в увлекательной и захватывающей форме описывает лучшие решения старых и новых проблем SQL, стараясь облегчить усвоение этого материала для читателя.
       Логически и теоретико-множественный анализ призван заменить традиционный процедурный подход к решению проблем, он позволяет сделать важный шаг, отделяющий профессионала языка SQL от всех остальных специалистов в этой области. Вы узнаете, как лучше всего работать с агрегатными функциями, NULL-значениями, структурами массивов.
       Особое внимание в книге уделяется стандарту SQL-92 и не зависящем от конкретных продуктов технологиям, позволяющим оптимизировать производительность и обеспечить функциональность, не зависящую от СУБД, с которой вы в данный момент работаете. Если вы всерьез настроены извлечь все возможное из SQL, то книга "SQL для профессионалов" потому необходима, что только в ней:
       -- Самая современная информация, вводящая вас в реальный мир программирования SQL
       -- Стандарт SQL-89 и SQL-92
       -- Различные недокументированные приемы, позволяющие решить проблемы производительности систем
       -- Технологии, совместимые с любым продуцктом в любой среде SQL
       Советы автора и других признанных авторитетов в области стандарта SQL
      
             Джо Селко - известный консультант, доктор, писатель и преподаватель, чья колонка в журнале DBMS Magazine (теперь Intelligent Enterprise) заслужила несколько призов читателей. Хорошо известна его десятилетняя работа в комитете по стандартам ANSI SQL, его неоценимый вклад в работу форума по СУБД на ComputerServe, а также умение популярно излагать серьезные проблемы программирования на этом языке

  • ПРЕДИСЛОВИЕ
  • ВВЕДЕНИЕ
  • Глава 1. Проектирование базы данных
    • 1.1. Создание схем и таблиц
      • 1.1.1. Схемы
      • 1.1.2. Манипулирование таблицами
      • 1.1.3. Определения столбцов
      • 1.1.4. Примечание относительно дубликатов строк
      • 1.1.5. Сравнение ограничений UNIQUE и уникальных индексов
    • 1.2. Генерация последовательных чисел
  • Глава 2. Нормализация
    • 2.1. Функциональные и многозначные зависимости
    • 2.2. Первая нормальная форма (1NF)
      • 2.2.1. Комментарий относительно повторяющихся групп
    • 2.3. Вторая нормальная форма (2NF)
    • 2.4. Третья нормальная форма (3NF)
    • 2.5. CASE-средства для нормализации
    • 2.6. Нормальная форма Бойса-Кодда (BCNF)
    • 2.7. Четвертая нормальная форма (4NF)
    • 2.8. Пятая нормальная форма (5NF)
    • 2.9. Нормальная форма "домен-ключ" (DKNF)
    • 2.10. Практические советы по нормализации
    • 2.11. Практические советы по денормализации
  • Глава 3. Числовые данные в языке SQL
    • 3.1. Числовые типы данных
    • 3.2. Преобразования числовых типов
      • 3.2.1. Округление и усечение
      • 3.2.2. Функция CAST()
    • 3.3. Четыре арифметические операции
    • 3.4. Арифметические операции и неопределенные значения
    • 3.5. Взаимное преобразование значений и NULL
      • 3.5.1. Функция NULLIF()
      • 3.5.2. Функция COALESCE()
    • 3.6. Математические функции разработчиков
      • 3.6.1. Операции теории чисел
      • 3.6.2. Экспоненциальные функции
      • 3.6.3. Функции масштабирования
      • 3.6.4. Функции генератора
  • Глава 4. Типы данных времени в стандарте SQL
    • 4.1. Советы по работе с датами, временем и временными отметками
      • 4.1.1. Стандарты формата даты
      • 4.1.2. Работа с отметками даты и времени
      • 4.1.3. Работа со временем
    • 4.2. Запросы, содержащие даты
    • 4.3. Персональные календари
    • 4.4. Временные серии
      • 4.4.1. Промежутки во временных сериях
      • 4.4.2. Сплошные периоды времени
      • 4.4.3. Локализация дат
      • 4.4.4. Первый и последний дни месяца
    • 4.5. Юлианские даты
    • 4.6. Функции извлечения даты и времени
    • 4.7. Другие функции работы с датами и временем
    • 4.8. Проблема 2000 года
      • 4.8.1. Нули
      • 4.8.2. Високосный год
      • 4.8.3. Тысячелетие
      • 4.8.4 Фатальные даты в унаследованных данных
  • Глава 5. Символьные типы данных в SQL
    • 5.1. Проблемы строк в стандарте SQL
      • 5.1.1. Проблемы определения равенства строк
      • 5.1.2. Проблемы порядка строк
      • 5.1.3. Проблемы группировки строк
    • 5.2. Стандартные функции работы со строками
    • 5.3. Распространенные расширения разработчиков
      • 5.3.1. Фонетическое соответствие
    • 5.4. Таблицы отсечения
  • Глава 6. Неопределенные значения — отсутствующие данные в SQL
    • 6.1. Пустые и отсутствующие таблицы
    • 6.2. Отсутствие значений в столбцах
    • 6.3. Контекст и отсутствующие значения
    • 6.4. Сравнение NULL-значений
    • 6.5. NULL-значения и логика
      • 6.5.1. Применение NULL-значений в предикатах с подзапросами
      • 6.5.2. Решения в стандарте SQL-92
    • 6.6. Математические выражения и NULL-значения
    • 6.7. Функции и NULL-значения
    • 6.8. NULL-значения и базовые языки
    • 6.9. Советы по проектированию с учетом NULL-значений
      • 6.9.1. Как избежать NULL-значений в базовых программах
    • 6.10. Использование нескольких NULL-значений
  • Глава 7. Другие выражения
    • 7.1. Выражение CASE
      • 7.1.1. Функции COALESCE() и NULLIF()
      • 7.1.2. Выражения CASE с GROUP BY
      • 7.1.3. Конструкции CASE, CHECK() и логическая импликация
      • 7.1.4 Функция DEC0DE() СУБД Oracle
    • 7.2. Подзапросы и константы
    • 7.3. Характеристические функции Розенштейна
  • Глава 8. Другие объекты схемы
    • 8.1. Создание схемы
      • 8.1.1. Таблицы схемы
    • 8.2. Временные таблицы
    • 8.3. CREATE ASSERTION
    • 8.4. CREATE DOMAIN
    • 8.5. Триггеры
    • 8.6. CREATE PROCEDURE
  • Глава 9. Операции с таблицами
    • 9.1. Оператор DELETE FROM
      • 9.1.1. Предложение DELETE FROM
      • 9.1.2. Предложение WHERE
      • 9.1.3. Удаление, основанное на данных второй таблицы
      • 9.1.4. Удаление из той же самой таблицы
      • 9.1.5. Удаление строк из нескольких таблиц без ограничений ссылочной целостности
    • 9.2. Оператор INSERT INTO
      • 9.2.1. Предложение INSERT INTO
      • 9.2.2. Природа вставок
      • 9.2.3. Утилиты массовой загрузки и выгрузки
    • 9.3. Оператор UPDATE
      • 9.3.1. Предложение UPDATE
      • 9.3.2. Предложение WHERE
      • 9.3.3. Предложение SET
      • 9.3.4. Обновления с помощью второй таблицы
      • 9.3.5. Выражение CASE в обновлениях
      • 9.3.6. Обновления внутри одной таблицы
      • 9.3.7. Обновление первичного ключа
    • 9.4. Недостатки распространенных расширений разработчиков
  • Глава 10. Сравнение ИЛИ операции Theta
    • 10.1. Преобразования типов данных
    • 10.2. Сравнение строк в стандарте SQL-92
  • Глава 11. Предикаты значений
    • 11.1. Предикат IS NULL
      • 11.1.1. Источники NULL-значений
    • 11.2. Предикат IS [NOT] {TRUE | FALSE | UNKNOWN }
  • Глава 12. Предикаты LIKE и SIMILAR
    • 12.1. Приемы работы с образцами
    • 12.2. Результаты поиска среди NULL-значенийи пустых строк
    • 12.3. Различия операторов LIKE и равенства
    • 12.4. Как избежать предиката LIKE с помощью соединений
    • 12.5. Другие предикаты сравнения с образцом
  • Глава 13. Предикаты BETWEEN и OVERLAPS
    • 13.1. Предикат BETWEEN
      • 13.1.1. Результаты применения предикатак NULL-значениям
      • 13.1.2. Результаты применения предиката к пустым множествам
      • 13.1.3. Советы по программированию
    • 13.2. Предикат OVERLAPS
      • 13.2.1. Периоды времени и предикат OVERLAPS
  • Глава 14. Предикат [NOT] IN
    • 14.1. Оптимизация предиката IN
    • 14.2. Замена оператора OR предикатом IN
    • 14.3. NULL-значения и предикат IN
    • 14.4. Предикат IN и ссылочные ограничения
  • Глава 15. Предикат EXISTS()
    • 15.1. Предикат EXISTS и NULL-значения
    • 15.2. Предикат EXISTS и соединения
    • 15.3. Предикат EXISTS и кванторы
    • 15.4. Предикат EXISTS() и ссылочные ограничения
  • Глава 16. Кванторизованные предикаты подзапросов
    • 16.1. Сравнения скалярных подзапросов
    • 16.2. Кванторы и отсутствующие данные
    • 16.3. Предикат ALL и экстремальные функции
    • 16.4. Предикат UNIQUE
  • Глава 17. Оператор SELECT
    • 17.1. Оператор SELECT и объединения
      • 17.1.1. Одноуровневый оператор SELECT
      • 17.1.2. Коррелированные подзапросы в операторе SELECT
      • 17.1.3. Оператор SELECT в стандарте SQL-92
      • 17.1.4. Предложение ORDER BY
    • 17.2. Внешние соединения
      • 17.2.1. Синтаксис разработчиков для внешних соединений
      • 17.2.2. Синтаксис SQL-92 для соединений
      • 17.2.3. NULl-значения и внешние соединения
      • 17.2.4. Естественное и условное внешние соединения
      • 17.2.5. Внешнее соединение таблицы с собой
      • 17.2.6. Два или больше внешних соединений
      • 17.2.7. Внешние соединения и агрегатные функции
      • 17.2.8. Полное внешнее соединение
      • 17.2.9. Операции внешнего соединения в предложении WHERE
    • 17.3. Старый и новый синтаксис соединения
    • 17.4. Экзотические соединения
      • 17.4.1. Соединение таблицы с собой по условию неравенства
      • 17.4.2. Соединения по диапазону
      • 17.4.3. Соединения по функциям
      • 17.4.4. Соединение UNION JOIN
    • 17.5. Т-соединение Кодда
      • 17.5.1. Хорватское решение
      • 17.5.2. Шведское решение
      • 17.5.3. Колумбийское решение
  • Глава 18. Представления и временные таблицы
    • 18.1. Представления в запросах
    • 18.2. Обновляемые представления и представления только для чтения
    • 18.3. Типы представлений
      • 18.3.1. Проекция и ограничение для одной таблицы
      • 18.3.2. Вычисляемые столбцы
      • 18.3.3. Преобразуемые столбцы
      • 18.3.4. Сгруппированные представления
      • 18.3.5. Представления с объединением
      • 18.3.6. Соединения в представлениях
      • 18.3.7. Вложенные представления
    • 18.4. Обработка представлений средствами СУБД
      • 18.4.1. Список столбцов представления
      • 18.4.2. Материализация представления
      • 18.4.3. Линейное разложение текста
      • 18.4.4. Структуры указателей
      • 18.4.5. Индексирование и представления
    • 18.5. Предложение WITH CHECK OPTION
    • 18.6. Удаление представлений
    • 18.7. Временные таблицы
    • 18.8. Советы по работе с представлениями и временными таблицами
      • 18.8.1. Работа с представлениями
      • 18.8.2. Использование временных таблиц
      • 18.8.3. Упрощение таблицы с помощью представления
  • Глава 19. Разбиение данных на разделы
    • 19.1. Покрытия и разделы
      • 19.1.1. Разделение по диапазонам
      • 19.1.2. Разделение по функциям
    • 19.2. Реляционное деление
      • 19.2.1. Деление с остатком
      • 19.2.2. Точное деление
      • 19.2.3. Примечание относительно производительности
      • 19.2.4. Деление Тодда
      • 19.2.5. Деление с соединениями
      • 19.2.6. Деление с участием множественных операций
  • Глава 20. Операции группирования
    • 20.1. Предложение GROUP BY
      • 20.1.1. NULL-значения и группы
      • 20.1.2. Предложения GROUP BY и HAVING
      • 20.1.3. Представления, сгруппированные для нескольких уровней агрегации
      • 20.1.5. Сгруппированные подзапросы для нескольких уровней агрегации
      • 20.1.6. Группирование на вычисляемых столбцах
    • 20.2. Разгруппирование таблицы
      • 20.2.1. Разгруппирование таблицы путем ее расщепления
      • 20.2.2. Разгруппирование с помощью соединения
  • Глава 21. Агрегатные функции
    • 21.1. Функции COUNT()
    • 21.2. Функции SUM
    • 21.3. Функции AVG
      • 21.3.1. Подсчет среднего значения при наличии пустых групп
    • 21.4. Экстремальные функции
      • 21.4.1. Простые экстремальные функции
      • 21.4.2. Обобщенные экстремальные функции
      • 21.4.3. Экстремальные функции с несколькими критериями
    • 21.5. Другие агрегатные функции
      • 21.5.1. Агрегатная функция LIST()
      • 21.5.2. Агрегатная функция PROD()
  • Глава 22. Вспомогательные таблицы
    • 22.1. Таблица последовательностей
      • 22.1.1. Пример таблицы последовательности
    • 22.2. Календарная таблица
      • 22.2.1. Пример календарной таблицы
    • 22.3. Интерполяция со вспомогательными таблицами функций
  • Глава 23. Статистическая обработка информации в SQL
    • 23.1. Мода
    • 23.2. Медиана
      • 23.2.1. Первая медиана Дейта
      • 23.2.2. Первая медиана Селко
      • 23.2.3. Вторая медиана Дейта
    • 23.1. Медиана Мэрчисона
      • 23.2.5. Вторая медиана Селко
      • 23.2.6. Медиана Вогана с представлениями
      • 23.2.7. Медиана с характеристической функцией
      • 23.2.8. Третья медиана Селко
    • 23.3. Дисперсия и стандартное отклонение
    • 23.4. Среднее отклонение
    • 23.5. Интегральная статистика
      • 23.5.1. Текущие суммы
      • 23.5.2. Текущие приращения
      • 23.5.3. Интегральные проценты
      • 23.5.4. Ранжирование и связанная с ним статистика
    • 23.6. Перекрестные таблицы
      • 23.6.1. Создание перекрестных таблиц с помощью перекрестного соединения
      • 23.6.2. Создание перекрестных таблиц с помощью внешних соединений
      • 23.6.3. Создание перекрестных таблиц с помощью подзапросов
  • Глава 24. Области, серии и последовательности
    • 24.1. Поиск подобластей размера n
    • 24.2. Поиск областей максимального размера
    • 24.3. Граничные запросы
    • 24.4. Запросы серий и последовательностей
  • Глава 25. Структуры массивов в языке SQL
    • 25.1. Массивы в языке SQL
    • 25.2. Операции с матрицами в SQL
      • 25.2.1. Равенство матриц
      • 25.2.2. Сложение матриц
      • 25.2.3. Умножение матриц
      • 25.2.4. Другие операции с матрицами
    • 25.3. Преобразование таблицы в массив
    • 25.4. Сравнение массивов в формате таблицы
  • Глава 26. Операции со множествами
    • 26.1. Операторы UNION и UNION ALL
      • 26.1.1. Дубликаты и операторы объединения
      • 26.1.2. Порядок выполнения
      • 26.1.3. Смешанные объединения и операторы UNION ALL
    • 26.2. Оператор вычитания множеств
      • 26.2.1. Определение разности множеств с помощью внешнего соединения
    • 26.3. Пересечение
    • 26.4. Примечание относительно использования ALL и SELECT DISTINCT
  • Глава 27. Подмножества
    • 27.1. Каждый n-ый элемент таблицы
    • 27.2. Выбор строк из таблицы случайным образом
    • 27.3. Операторы включения
      • 27.3.1. Операторы правильных подмножеств
      • 27.3.2. Равенство множеств
  • Глава 28. Модель списка смежных вершин деревьев в SQL
    • 28.1. Список смежных вершин в одной таблице
    • 28.2. Поиск корневого узла
    • 28.3. Поиск листовых узлов
    • 28.4. Поиск уровней дерева
    • 28.5. Функции в модели списка смежных вершин
    • 28.6. Операции с деревом
      • 28.6.1. Удаление ветви
      • 28.6.2. Вставка ветви
    • 28.7. Расширения модели дерева, предоставляемые разработчиками
      • 28.7.1. Расширения модели дерева компании Oracle
      • 28.7.2. Расширения модели дерева в XDB
      • 28.7.3. Оператор WITH системы DB2
      • 28.7.4. Оператор Дейта EXPLODE
      • 28.7.5. Предложения Тилквиста и Куо
    • 28.8. Модель транзитивного замыкания
      • 28.8.1. Оценка размера таблицы
      • 28.8.2. Удаление узлов
      • 28.8.3. Включение ветви
      • 28.8.4. Функции суммирования
      • 28.8.5. Модель транзитивного замыкания с фиксированной глубиной
  • Глава 29. Модель вложенных множеств деревьев в SQL
    • 29.1. Поиск корневых и листовых узлов
    • 29.2. Поиск ветвей
    • 29.3. Поиск уровней и путей в дереве
      • 29.3.1. Поиск высоты дерева
      • 29.3.2. Поиск непосредственных подчиненных
      • 29.3.3. Поиск самого старшего и самого младшего подчиненного
      • 29.3.4. Поиск пути
    • 29.4. Функции в модели вложенных множеств
    • 29.5. Удаление узлов и ветвей
      • 29.5.1. Удаление ветвей
      • 29.5.2. Удаление одного узла
    • 29.6. Закрытие пробелов в дереве
    • 29.7. Применение функций суммирования к деревьям
    • 29.8. Вставка и обновление деревьев
    • 29.9. Линейная версия модели вложенных множеств
    • 29.10. Преобразование модели списка смежных вершин в модель вложенных множеств
  • Глава 30. Графы в SQL
    • 30.1. Двухтабличное представление графа
    • 30.2. Перечисления пути в графе
    • 30.3. Агрегация пути в графе
    • 30.4. Расщепление узла
  • Глава 31. Оптимизация кода
    • 31.1. Методы доступа
      • 31.1.1. Последовательный доступ
      • 31.1.2. Доступ посредством индексов
      • 31.1.3. Хешированные индексы
      • 31.1.4. Битовые векторные индексы
    • 31.2. Выражения и невложенные запросы
      • 31.2.1. Использование простых выражений
      • 31.2.2. Строковые выражения
    • 31.3. Ввод в запросы дополнительной информации о соединениях
    • 31.4. Внимательно индексируйте таблицы
    • 31.5. Следите за предикатом IN
    • 31.6. Избегайте операторов UNION
    • 31.7. Соединения лучше, чем вложенные запросы
    • 31.8. Избегайте выражений на индексированных столбцах
    • 31.9. Избегайте сортировок
    • 31.10. Избегайте перекрестных соединений
    • 31.11. Внимательно используйте индексы
    • 31.12. Внимательно задавайте порядок индексов
    • 31.13. Перекомпиляция статического кода SQL после изменений в схеме
    • 31.14. Работа с временными таблицами
  • ПРИЛОЖЕНИЕ
    • Книги для чтения и полезные ресурсы
    • ссылки




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/DataBase/SQL/CelkoJ/010toc.shtml