|
Программирование >> Построение запросов sql
Контрольные вопросы 1. Какие основные объекты существуют в БД? 2. Какие функции выполняет ядро базы данных? 3. Какие функции выполняет язык SQL? 4. Какие достоинства языка SQL принесли ему успех? 5. Охарактеризуйте основные файлы, входящие в состав сервера Firebird, и опишите, как работает сервер. 6. Какие существуют утилиты для администрирования БД Firebird? 7. Какие существуют категории запросов языка SQL? 8. Какие фазы обработки проходит каждый SQL-запрос при выполнении? 9. В каких формах может использоваться язык SQL? 10. Какие существуют правила составления имен объектов в SQL, какие константы могут использоваться? 11. Что представляет собой выражение в языке SQL? Какие разновидности выражений существуют? 12. Какие типы данных используются в СУБД Firebird? 3. Язык выборки данных В этой главе приводятся возможности SQL по выборке данных из БД. Это самая большая глава из представленных в данном учебном пособии, потому что именно для организации выборки информации из БД SQL используется наиболее интенсивно подавляющим большинством пользователей. Начиная с самых простых возможностей и последовательно переходя ко все более сложным конструкциям, в данной главе рассматриваются практически все указанные в стандарте SQL средства выборки данных. Кроме того, представлены некоторые дополнительные возможности, реализованные в СУБД Firebird. 3.1. Синтаксис запроса SELECT Для выборки данных из БД используется запрос SELECT. Он позволяет производить выборку требуемых данных из таблиц и преобразовывать к нужному виду полученные результаты. В общем случае результатом реализации запроса SELECT является другая таблица, которую будем называть таблицей результатов запроса (ТРЗ). К этой новой (рабочей) таблице может быть снова применен запрос SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Запрос SELECT может использоваться как: - самостоятельная команда на получение и вывод строк таблицы, сформированной из столбцов и строк одной или нескольких таблиц (представлений); - элемент SELECT, WHERE- или HAVING-условия (сокращенный вариант предложения, называемый вложенный запрос ); - запрос на формирование данных представления в команде CREATE VIEW; - средство выборки информации, необходимой для модификации данных в других таблицах (многострочные запросы DML); - средство присвоения глобальным переменным значений из строк сформированной таблицы (INTO-фраза). Полный синтаксис запроса SELECT имеет следующий вид [19, 20]: [WITH [RECURSIVE] имя производной таблицы1 [(<список столбцов>)] AS (<табличный подзапрос> ) [, имя производной таблицы2 [(<список столбцов>)] AS (<табличный подзапрос> )... SELECT [DISTINCT ALL] FIRST m] [SKIP n] {* <возвращаемый элемент1> [[AS] псевдоним элемента1 [,<возвращаемый элемент2> [[aS] псевдоним элемента2] ] } FROM { <таблица1> [псевдоним1] [,<таблица2> [псевдоним2 <таблица1> [псевдоним1] <тип соединения1> <таблица2> [псевдоним2] {ON<условие соединения1> USING (<список столбцов>)} <тип соединения2> <таблица3> [псевдонимЗ] {ON<условие соединения2> USING (<список столбцов>)}]] } [WHERE <условие поиска>] [GROUP BY <элемент группировки1> [, <элемент группировки2>] ] [HAVING <условие поиска>] [PLAN <список пунктов плана>] ORDER BY <элемент сортировки1> [, <элемент сортировки 2>] ROWS k [TO r ]], <список столбцов>:: = столбец1 [, столбец2 ...]; <возвращаемый элемент> :: = { [<таблица>].* [<таблица>.] столбец константа <выражение> (<скалярный подзапрос> ) }; <таблица>:: = { базовая таблица представление имя производной таблицы <производная таблица>}; <производная таблица> (<табличный подзапрос>) [[AS] псевдоним] [(<список столбцов>)]; <тип соединения>::= {CROSS JOIN [NATURAL] [{INNER {LEFT RIGHT FULL} [OUTER]}] JOIN}; <условие соединения>::= {<таблица1>.столбец <операция сравнения> <таблица2>.столбец}; <операция сравнения> {= < > <= >= <> }; <условие поиска> [NOT] <условие поиска1> [[ANDOR][NOT] <условие поиска2>], <условие поиска> { <значение> <операция сравнения> {<значение1> (<скалярный подзапрос> ) {aNY ALL} (<подзапрос столбца>)} <значение> [NOT] BETWEEN <значение1> AND <значение2> <значение> [nOT] LIKE шаблон [ESCAPE символ пропуска] <значение> [nOt] CONTAINING <значение1> <значение> [nOt] STARTING WITH <значение1> <значение> [nOt] IN ({<значение1> [, <значение2> ] <подзапрос столбца>}) <значение> IS [NOT] NULL <значение> IS [nOt] DISTINCT FROM <значение1> EXISTS (<табличный подзапрос>) SINGULAR (<табличный подзапрос>)}; <значение>::= {[<таблица>.] столбец константа <выражение> функция}; <элемент сортировки> :: ={ [<таблица>.] столбец порядковый номер столбца псевдоним столбца <выражение>} [ASC[ENDING] DESC [ENDING]] NULLS FIRST NULLS LAST]}; <элемент группировки> := { [<таблица>.] столбец порядковый номер столбца псевдоним столбца <выражение>}. Конкретные особенности использования приведенных выше конструкций поясняются далее в процессе изучения запроса SELECT. 3.2. Запросы к одной таблице Применительно к однотабличным запросам SELECT имеет следующий формат: SELECT [DISTINCT ALL] FIRST m] [SKIP n] {* <возвращаемый элемент1> [AS псевдоним элемента1] [,<возвращаемый элемент2>[AS псевдоним элемента2] ] } FROM {базовая таблица представление} [псевдоним] [WHERE <условие поиска>] [GROUP by <элемент группировки1> [, <элемент группировки2>] ]
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |