Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
David Rozenshtein и Tom Bondur "The Essence of SQL" - очень лаконичная книга в большей мере для начинающих.
Judith S. Bowman, Sandra Emerson, Marcy Darnovsky "The Practical SQL Handbook" - настольный справочник по стандарту SQL, получивший хорошие отзывы.
Hugh Darwen и Chris Date "A Guide to the SQL Standard" содержит все, что вам нужно знать об SQL-92, а также многое из того, о чем вы не знаете, что вы этого не знаете.
Jim Melton и Alan Simon "Understanding the New SQL: A Complete Guide" описывает SQL-89 и SQL-92. Это всеобъемлющий красиво оформленный справочник для начинающих. Включает некоторые базовые теории моделирования.
Martin Gruber "Mastering SQL" является переработанной и расширенной версией книги того же автора "Understanding SQL",
Свободная поддержка SQL
По всем вопросам, связанным с SQL Firebird, присоединяйтесь к форуму поддержки Firebird наЭто добровольный список адресов электронной почты, где знающие и новые пользователи Firebird делятся своим опытом. Если вы предпочитаете интерфейс конференции, то здесь зеркально отображаются новости: news://news.atkin.com/egroups.ib-support. Вы можете послать список сообщений через зеркальную конференцию, если подпишетесь на список рассылки и будете использовать тот же адрес отправителя.
64
В переводе на русский язык книга называется М. Грабер "SQL" и доступна в книжных магазинах начиная с 2001 г.
– Прим. науч. ред.
Язык манипулирования данными (DML) является подмножеством языка SQL, которое мы используем, чтобы определить наборы данных для чтения или обработки в приложениях. В следующей главе мы рассмотрим базовый синтаксис "большой четверки" операторов SQL: SELECT, INSERT, UPDATE и DELETE.
ГЛАВА 20. Запросы DML.
Приложения пользователя могут получить доступ к таблицам Firebird только одним путем - выполняя к ним запрос. По своей сущности запрос является оператором SQL, который передается на сервер. Оператор SQL является выражением, состоящим из ключевых слов, фраз и предложений на формализованном языке на базе английского. Этот язык имеет ограниченный словарь, который понятен клиентской библиотеке и серверу Firebird - а также, желательно, и человеку, который составляет такие выражения! Задачи создания, модификации и управления метаданными и данными - все без исключения - выполняются в запросах.
Строго говоря, оператор не является запросом, пока он не будет передан серверу. При этом большинство разработчиков используют термины оператор и запрос одинаково.
Все запросы DML обращаются к данным, постоянно хранящимся в базе данных в виде столбцов в таблицах. Запрос задает набор данных и одну или более операций, которые должны быть выполнены над этим набором. Он может использовать выражения для преобразования данных для поиска или сохранения или для предоставления специальных условий поиска для наборов данных.
Наборы данных
Запрос DML определяет логическую совокупность элементов данных, упорядоченных слева направо, из одного или более столбцов, называемую набором. Запрос может ограничивать спецификацию набора одной строкой или же набор может состоять из множества строк. В наборе, состоящем из множества строк, порядок столбцов в одной строке идентичен всем другим строкам в наборе.
Люди часто небрежно называют наборы "запросами". Эти слова не являются синонимами.
Таблица является набором
Таблица является набором, чья полная спецификация может быть получена из системных таблиц сервером базы данных, когда к таблице происходит обращение из запроса, полученного от клиента. Сервер Firebird выполняет свои собственные внутренние запросы к системным таблицам для получения метаданных, необходимых для выполнения клиентских запросов.
Выходные
наборыОбщее использование оператора запроса, начинающегося с ключевого слова SELECT, - получение выходного набора для клиентского приложения с целью отображения данных для пользователя. Термины набор данных и набор записей являются синонимами для выходного набора. Выходной набор может содержать неупорядоченные строки или он может быть представлен как сортированный набор, в соответствии со спецификацией в предложении ORDER BY.
! ! !
ПРИМЕЧАНИЕ. Выражение "неупорядоченные строки" означает следующее. Строки таблицы хранятся без каких-либо атрибутов, и порядок неупорядоченных наборов может непредсказуемо меняться от одного запроса к другому.
. ! .
Например, следующий запрос создаст выходной набор из трех столбцов из таблицы TABLEA, содержащий каждую строку, которая соответствует условиям, указанным в предложении WHERE. Строки будут отсортированными, следовательно, строка с наименьшим значением в COL1 появится первой:
SELECT COL1, COL2, COL3 FROM TABLEA
WHERE COL3 = 'Mozart'
ORDER BY COL1;
Если не будет задано предложение WHERE, ТО набор будет содержать все строки из таблицы TABLEA, а не только те, в которых столбец COL3 будет иметь значение 'Mozart'.
Если нужны все столбцы из таблицы TABLEA, то вместо списка имен столбцов в операторе можно указать символ звездочки (*), например, оператор
SELECT * FROM TABLEA;
определяет выходной набор, состоящий из всех столбцов и всех строк таблицы TABLEA.
Кардинальное число и положение
Одним из терминов, который иногда можно встретить в отношении наборов, включая таблицы- является кардинальное число (cardinality, "мощность множества"). Оно описывает количество строк в наборе, который может быть таблицей или выходным набором. Реже можно встретить кардинальное число строки или кардинальное число значения ключа, что означает позицию строки в упорядоченном выходном наборе.
Термин, используемый для номера столбца в наборе, - положение (degree). Кроме того, вы можете встретить фразу типа положение столбца, означающую позицию столбца в порядке столбцов в наборе слева направо.
Входные наборы
Как часть SELECT ... FROM В запросе на поиск задает набор для вывода или для операции курсора, точно так же и другие операторы DML (INSERT, UPDATE и DELETE) задают входные наборы, идентифицируя данные, над которыми выполняется операция.
Входной набор запроса INSERT задает одну таблицу и упорядоченный слева направо список идентификаторов столбцов, которые получат входные значения в последующем предложении VALUES. Предложение VALUES должно поставлять список значений, которые в точности соответствуют порядку входного набора и типу данных его элементов.
Следующий пример определяет входной набор, состоящий из трех столбцов таблицы TABLEB. Константы в предложении VALUES о будут проверяться на присутствие трех значений и на наличие у них корректных типов данных:
INSERT INTO TABLEB(COLA, COLB, COLC)
VALUES(99, 'Christmas 2004', '2004-12-25');
Оператор INSERT имеет альтернативный синтаксис, в котором предложение VALUES о заменяется на выборку набора из одной или более других таблиц, реальных или виртуальных. Операторы INSERT подробно обсуждаются в разд. "Оператор INSERT".
Оператор UPDATE определяет свой входной набор, задавая одну таблицу и список из одного или более столбцов вместе с их значениями в предложении SET. Он идентифицирует строки, принимающие участие в операции, в предложении WHERE: