Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

О предложении SELECT




Предложение SELECT. Область применения. Формат записи.

Обзор визуальных компонентов среды делфи, необходимых для работы с БД.

Визуальные компоненты для работы с БД

 

Визуальные компоненты Delphi предназначены доя визуализации записей наборов данных (например, компонент TDBGrid) или отдельных полей текущей записи набора данных (например, TDBEdit, TDBText). Эти компоненты расположены на странице компонентов Data Controls палитры компонентов в интегрированной среде разработки Delphi. Визуальный компонент "перетаскивается" из палитры компонентов в форму разрабатываемого приложения. После этого Delphi автоматически описывает в форме экземпляр компонента указанного класса. Далее разработчик определяет соединение визуального компонента с невизуальными компонентами, определяет по необходимости различные свойства компонента, кодирует обработчики событий, где в программном коде вызывает необходимые ему методы компонента.

 

Какие визуальные компоненты для работы с данными входят в Delphi?

 

Различные версии Delphi содержат следующие наборы компонентов: Компоненты Краткое описание Версии Delphi

TDBGrid Представление данных в виде таблицы (очень сложный и наиболее популярный компонент) 1 2 3

TDBEdit Редактирования одного поля 1 2 3

TDBNavigator Как видно из названия, компонент позволяет перемещаться по таблице 1 2 3

TDBLabel Статическое отображение содержимого поля 1 2 3

TDBMemo Редактирования текста в поле типа BLOB 1 2 3

TDBImage Отображение картинок из BLOB-а 1 2 3

TDBRadioGroup, TDBCheckBox Дополнительные средства отображения данных 1 2 3

TDBComboBox, TDBListBox Упрощают ввод данных, предлагая несколько заранее определенных вариантов 1 2 3

TDBLookupListBox, TDBLookupComboBox То же самое, но возможные варианты выбираются из другой таблички 1 2 3

TDBCtrlGrid Вариант представления записей с произвольным расположением полей 2 3

TDBChart Компонент для построение графиков и диаграмм на основании данных, хранящихся в таблице 3

TDecisionGrid, TDecisionChart Компоненты для поддержки принятия решений 3

 

Все запросы на получение практически любого количества данных из одной или нескольких таблиц выполняются с помощью единственного предложения SELECT. В общем случае результатом реализации предложения SELECT является другая таблица (см. примеры п. 1.3). К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Представляет исторический интерес тот факт, что именно возможность включения одного предложения SELECT внутрь другого послужила мотивировкой использования прилагательного “структуризированный” в названии языка SQL.

Предложение SELECT может использоваться как:

1. Самостоятельная команда на получение и вывод строк таблицы, сформированной из столбцов и строк одной или нескольких таблиц (представлений).

2. Элемент WHERE- или HAVING-условия (сокращенный вариант предложения, называемый “вложенный запрос”).

3. Фраза выбора в командах CREAT VIEW, DECLARE CURSOR или INSERT.

4. Средство присвоения глобальным переменным значений из строк сформированной таблицы (INTO-фраза).

В данной и следующей главах будут рассмотрены только две первые функции предложения SELECT, а здесь его синтаксис, ограниченный конструкциями, используемыми при реализации этих функций. При этом здесь (также как и в других главах книги) в синтаксических конструкциях используются следующие обозначения:

- звездочка (*) для обозначения “все”, она употребляется в обычном для программирования смысле, т.е. “все случаи удовлетворяющие определению”;

- квадратные скобки ([]) обозначают, что конструкции, заключенные в эти скобки, являются необязательными (т.е. могут быть опущены);

- прямая черта (|) означает наличие выбора из двух или более возможностей; например обозначение ASC|DESC указывает, можно выбрать один из терминов ASC или DESC; когда же один из элементов выбора заключен в квадратные скобки, то это означает, что он выбирается по умолчанию (так [ASC]|DESC означает, что отсутствие всей этой конструкции будет восприниматься как выбор ASC);

- фигурные скобки ({}) обозначают, что конструкции, заключенные в эти скобки, должны рассматриваться как одна синтаксическая единица;

- многоточие (...) указывает на то, что непосредственно предшествующая ему синтаксическая единица факультативно может повторяться один или более раз;

- точка с запятой (;) как завершающий элемент предложений языка SQL;

- запятая (,) используется для разделения элементов, включенных в список;

- пробелы () могут вводиться для повышения наглядности в любом количестве между любыми синтаксическими конструкциями предложений языка SQL;

- прописные латинские буквы используются для написания конструкций языка SQL и должны (если это специально не оговорено) записываться в точности так, как показано;

- строчные буквы используются для написания конструкций, которые должны заменяться конкретными значениями, выбранными пользователем; для определенности отдельные слова этих конструкций связываются между собой символом подчеркивания (_);

- для сокращения текста синтаксических конструкций в них вместо терминов имя_таблицы, имя_столбца,... используются термины таблица, столбец,...;

- термин таблица используется для обобщения таких видов таблиц, как базовая_таблица, представление или псевдоним; здесь псевдоним служит для временного (на момент выполнения запроса) переименования и (или) создания рабочей копии базовой_таблицы (представления);

- в графических нотациях (см., например, рис. 2.1) альтернативные части предложений находятся на разветвлениях основной (жирной) линии, факультативные (тонкая линия) - под основной, а повторяемые части охватываются пунктирной линией со стрелкой

Предложение SELECT (выбрать) имеет следующий формат:

подзапрос [UNION [ALL] подзапрос]...

[ORDER BY столбец | номер_элемента_select [[ASC] | DESC]

[,столбец | номер_элемента_select [[ASC] | DESC]]...;

и позволяет объединить (UNION) а затем упорядочить (ORDER BY) результаты выбора данных, полученных с помощью нескольких “подзапросов”. При этом упорядочение можно производить в порядке возрастания - ASC (Ascending) или убывания DESC (Descending), а по умолчанию принимается ASC.

В этом предложении подзапрос позволяет указать условия для выбора нужных данных и (если требуется) их обработки

SELECT (выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствие с указанными выражениям и (или) функциям

FROM (из) перечисленных таблиц, в которых расположены эти столбцы

WHERE (где) строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк

GROUP BY (группируя по) указанному перечню столбцов с тем, чтобы получить для каждой группы единственное агрегированное значение, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество), MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение)

HAVING (имея) в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп и имеет формат:

SELECT [[ALL] | DISTINCT] * | элемент_select [,элемент_select]...

FROM базовая_таблица | представление [псевдоним] [,базовая_таблица | представление [псевдоним]]...

[WHERE фраза]

[GROUP BY фраза [HAVING фраза]];

 

Элемент_select - это одна из следующих конструкций:

[таблица.]* | [таблица.]столбец | SQL_функция | (выражение) | системная_переменная

 

где синтаксис выражений и SQL_функций показан на рис. 2.1.


+------------------------------------------------------------------------+

¦ а) + - - <= - - - - - - - - - - - - - - - - - - - -+ ¦

¦ +-- константа ---------+ +- + -+ ¦

¦ (--------------+-- переменная --------+--+-------+---) ¦

¦ +- - -¦ ¦-- (выражение) -------¦ ¦- - -¦ ¦

¦ +- + -+ ¦-- [таблица.]столбец -¦ ¦- * -¦ ¦

¦ знак +-- функция СУБД ------+ ¦- / -¦ ¦

¦ +- ** -+ ¦

¦ Текстовая константа должна заключаться в апострофы (') ¦

¦ ¦

¦ б) +- SUM -+ +- [таблица.]столбец -+ ¦

¦ ¦- AVG -¦ +-------¦ ¦+ ¦

¦... -+- MIN -+ (¦+ ALL ++--- выражение -----+¦) --... ¦

¦ ¦- MAX -¦ +- DISTINCT [таблица.]столбец -+ ¦ ¦

¦ ¦- COUNN + ¦ ¦

¦ +--------------------- COUNT(*) --------------+ ¦

+------------------------------------------------------------------------+

Рис. 2.1. Синтаксис: а - выражений, б - SQL-функций

 

Фраза WHERE включает набор условий для отбора строк. Ее синтаксис показан на рис. 2.2. Кроме традиционных операторов сравнения (= | <> | < | <= | > | >=) в WHERE фразе используются условия BETWEEN (между), LIKE (похоже на), IN

 

+----------------------------------------------------------------------------+

¦ а) +- AND -+ ¦

¦ + - - <= - - - - ¦ ¦ + ¦

¦ + OR -+ ¦

¦... WHERE --------- WHERE_условие -----... ¦

¦ + NOT + ¦

¦ = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =¦

¦ б) +- = -+ +- столбец ¦

¦ столбец -+ ¦- <> -¦ ¦- константа ¦

¦ константа -+-+- >= -+-+- (выражение) ¦

¦ (выражение) -+ ¦- > -¦ +- (подзапрос) ¦

¦ ¦- <= -¦ ¦

¦ +- < -+ ¦

¦ ¦

¦ столбец1 -+ +- столбец2 -+ +- столбец3 ¦

¦ константа1 -+-------- BETWEEN -+- константа2 -+- AND -+- константа3 ¦

¦ (выражение1) -++ NOT + +- (выражение2) -+ +- (выражение3) ¦

¦ ¦

¦ столбец --------- LIKE 'строка' ----------------------- ¦

¦ + NOT + +- ESCAPE 'символ' -+ ¦

¦ ¦

¦ столбец -+ +- (константа [,константа]...) ¦

¦ константа -+------- IN ¦ ¦

¦ (выражение) -++ NOT + +- (подзапрос) ¦

¦ столбец -+ ¦

¦ EXISTS (подзапрос) константа -+ IS -------- NULL ¦

¦ (выражение) -+ + NOT + ¦

+----------------------------------------------------------------------------+

Рис. 2.2. Синтаксис: а - WHERE фраза, б - WHERE_условия

 

(принадлежит), IS NULL (не определено) и EXISTS (существует), которые могут предваряться оператором NOT (не). Критерий отбора строк формируется из одного или нескольких условий, соединенных логическими операторами:

AND - когда должны удовлетворяться оба разделяемых AND условия;

OR - когда должно удовлетворяться одно из разделяемых OR условий;

AND NOT - когда должно удовлетворяться первое условие и не должно второе;

OR NOT - когда должно или удовлетворяться первое условие или не должно удовлетворяться второе,

 

причем существует приоритет AND над OR (сначала выполняются все операции AND и только после этого операции OR). Для получения желаемого результата WHERE условия должны быть введены в правильном порядке, который можно организовать введением скобок.

При обработке условия числа сравниваются алгебраически - отрицательные числа считаются меньшими, чем положительные, независимо от их абсолютной величины. Строки символов сравниваются в соответствии с их представлением в коде, используемом в конкретной СУБД, например, в коде ASCII. Если сравниваются две строки символов, имеющих разные длины, более короткая строка дополняется справа пробелами для того, чтобы обе строки имели одинаковую длину перед осуществлением сравнения.

Наконец, синтаксис фразы GROUP BY имеет вид:

GROUP BY [таблица.]столбец [,[таблица.]столбец]... [HAVING фраза]

 

GROUP BY инициирует перекомпоновку формируемой таблицы по группам, каждая из которых имеет одинаковое значение в столбцах, включенном в перечень GROUP BY. Далее к этим группа применяются агрегирующие функции, указанные во фразе SELECT, что приводит к замене всех значений группы на единственное значение (сумма, количество и т.п.). С помощью фразы HAVING, синтаксис которой приведен на рис. 2.3 и почти не отличается от синтаксиса фразы WHERE, можно исключить из результата группы, не удовлетворяющие заданным условиям.

+----------------------------------------------------------------------------+

¦ а) +- AND -+ ¦

¦ + - - <= - - - - ¦ ¦ + ¦

¦ + OR -+ ¦

¦... HAVING --------- HAVING_условие -----... ¦

¦ + NOT + ¦

¦ = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =¦

¦ б) +- = -+ +- столбец ¦

¦ столбец -+ ¦- <> -¦ ¦- константа ¦

¦ константа -+-+- >= -+-+- (выражение) ¦

¦ (выражение) -¦ ¦- > -¦ ¦- (подзапрос) ¦

¦ SQL_функция -+ ¦- <= -¦ +- SQL_функция ¦

¦ +- < -+ ¦

¦ ¦

¦ столбец1 -+ +- столбец2 -+ +- столбец3 ¦

¦ константа1 -+-------- BETWEEN -+- константа2 -+- AND -+- константа3 ¦

¦ (выражение1) -¦+ NOT + ¦- (выражение2) -¦ ¦- (выражение3) ¦

¦ SQL_функция1 -+ +- SQL_функция2 -+ +- SQL_функция3 ¦

¦ ¦

¦ столбец --------- LIKE 'строка' ----------------------- ¦

¦ + NOT + +- ESCAPE 'символ' -+ ¦

¦ ¦

¦ столбец -+ +- (константа [,константа]...) ¦

¦ константа -+------- IN ¦ ¦

¦ (выражение) -¦+ NOT + +- (подзапрос) ¦

¦ SQL_функция -+ столбец -+ ¦

¦ константа -+ IS -------- NULL ¦

¦ EXISTS (подзапрос) (выражение) -¦ + NOT + ¦

¦ SQL_функция -+ ¦

+----------------------------------------------------------------------------+

Рис. 2.3. Синтаксис: а - HAVING фраза, б - HAVING_условия

 




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 391; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.