Админ

воскресенье, 18 июня 2017 г.

Уроки Firebird 2.5: тонкости использования оператора select

|
Этот урок посвящён различным тонкостям и особенностям использования различных конструкций внутри оператора select. Рассмотрены такие вещи, как вложенные запросы, порядок интерпретации запроса, common table expressions, рекурсивные запросы и многое другое.

Многие из освещённых здесь вопросов хорошо известны опытным программистам на Firebird SQL. Поэтому я на всякий случай напоминаю читателям, что эти материалы были разработаны для конкретной аудитории: программистов нашего отдела. Если они будут интересны кому-то ещё, я буду рад.

Основой для материалов послужили личный опыт автора и официальное руководство по языку Firebird SQL.



Краткое содержание (оно не совсем соответствует структуре документа, но полнее отражает содержание):
  1. Cast the spell, или О приведении типов
    • Округление чисел при помощи cast
    • Приведение типов строковых констант: char и varchar
    • Приведение типов целочисленных констант
    • Деление целых чисел нацело и с приведением к вещественному
    • Указание типа параметра при помощи cast
    • Замечание о пробелах на конце строк
  2. На первый, второй — рассчитайсь! Выбор определённого количества записей
    • Постановка задачи: пагинаторы на веб-страницах
    • Ключевые слова first и skip
    • Ключевое слово rows
    • Возможные проблемы при использовании first и skip
  3. Подзапросы (вложенные запросы)
    • Определения и общие моменты, вложенность подзапросов
    • Подзапрос-значение (singleton select)
    • Подзапросы в условиях any (some), all, in, exists: что это за условия и как ими пользоваться
    • Ошибка «Too many contexts of relation / procedure / views. Maximum allowed is 255»
  4. Правила имён. Имена, псевдонимы и их области видимости
    • Псевдонимы (алиасы), их объявление и использование
    • Порядок чтения запроса
    • Псевдонимы в подзапросах, области видимости псевдонимов
  5. Common table expression, или Подзапросы с ключевым словом with
    • Что такое CTE и зачем они нужны
    • Рекурсивные запросы, работа с генеалогическим древом
    • Разные полезные функции (lpad, maxvalue и др.) на примере сложного рекурсивного запроса.
Я долго думал перед тем, как выложить этот урок. Во-первых, он очень большой. Лекция заняла больше часа времени, а с учётом общения с аудиторией получилось и все полтора. Во-вторых, в отличие от урока, посвящённого понятию null, здесь нет такой универсальной презентации, которую можно читать как книгу. Презентация есть, и не маленькая: почти 60 кадров. Но это именно классическая презентация, с картинками и примерами скриптов, но без текста. Отдельно есть конспект лекции на 25 с лишним страниц, с разметкой: когда показывать тот или иной слайд. Эти две вещи не имеют смысла по отдельности.

Была даже мысль записать видео, в котором будет разворачиваться презентация, а за кадром будет звучать голос, который читает текст. Но я сам не люблю такой способ подачи материала. В конце концов я решил выложить и презентацию, и конспект в виде текста.

Комментариев нет:

Отправить комментарий

К началу