|
Программирование >> Исключение дубликатов строк
WHERE - Это необязательное условие, которое используется для фильтрации строк, возвращенных условием FROM. Ключевое слово WHERE сопровождается выражением, формально называемым предикатом, значение которого оценивается как True (Истина), False (Ложь) или Unknown (Неизвестно). Это выражение можно проверить, используя стандартные операторы сравнения, булевы операторы или специальные операторы (обо всех элементах условия WHERE см. в главе 6). GROUP BY - Когда в условии SELECT используются агрегатные функции для получения сводной информации, следует использовать условие GROUP BY для разделения информации на отдельные группы. СУБД использует любой столбец или список столбцов, расположенный после ключевых слов GROUP BY, как группирующие столбцы. Условие GROUP BY является необязательным (см. главу 13). HAVING - Условие HAVING специально связано с условием GROUP BY и используется для фильтрации сгруппированной информации. Оно подобно условию WHERE, в котором за ключевым словом HAVING следует выражение, оцениваемое как True, False или Unknown. Это выражение можно проверить, используя стандартные операторы сравнения, булевы операторы или специальные операторы. Условие HAVING также необязательно (подробнее см. в главе 14). Вначале мы должны усвоить самые базовые конструкции оператора SELECT, поэтому сосредоточимся на условиях SELECT и FROM. Другие условия будем добавлять по одному, переходя к следующим главам и формируя более сложный оператор SELECT. Кроткое отступление: Донные а сравнении с информацией Прежде чем обратиться с первым запросом к базе данных, необходимо четко уяснить один момент. Между данными и информацией имеется глубокое различие. По существу, данные - это то, что хранится в базе данных, а информация - это то, что извлекается из нее. Это различие важно понимать, потому что оно помогает видеть надлежащее соотношение вещей. Вспомните, что база данных проектируется для того, чтобы обеспечить осмысленную информацию для сотрудников организации. Однако информацию можно предоставить, только если соответствующие данные существуют в базе данных и если структура самой базы данных поддерживает эту информацию. Рассмотрим эти термины более конкретно. значения, сохраняемые в базе данных, являются данными. Данные являются статичными в том смысле, что они остаются в том же состоянии до тех пор, пока вы не измените их вручную или с использованием автоматизированного процесса. На рис. 4.2 представлены примеры некоторых данных. Katherine Ehrlich 89931 Active 79915 Рис. 4.2. Пример данных При поверхностном взгляде эти данные не имеют смысла. Например, совсем непросто определить, что означает 89931. Это почтовый индекс? Номер какой-то части? Даже если известно, что оно представляет собой идентификационный номер клиента, можно ли его связать с Катериной Эрлих? Возможность узнать это отсутствует полностью до того момента, как данные будут обработаны. Как только данные обработаны и стали понятными и полезными для работы, они становятся информацией. Информация является динамической в том смысле, что она постоянно изменяется относительно данных, сохраненных в базе данных, а также вследствие ее способности к бесконечному числу способов обработки и представления. Можно показать информацию как результат оператора SELECT, отобразить ее на некотором бланке на экране компьютера или вывести на бумагу как отчет. Поданные необходимо обработать таким образом, который позволяет превратить их в осмысленную информацию. На рис. 4.3 представлены данные из предыдущего примера, преобразованные в информацию на экране клиента. Здесь показано, как можно манипулировать данными для того, чтобы придать им смысл. При работе с оператором SELECT мы использовали его ус/ювия для манипулирования данными, но сам оператор возвратил информацию. Она будет выглядеть так: N а m е ( L): (ГКа!Иег1пеП [EhгТich 7А02 laxco Avenue : CLActive J) City El Paso 555-9284 Stale: iJX /i ( 79915 AX 554-0099 Рис. 4.3. Пример данных, преобразованных в информацию Нам необходимо решить последний вопрос. Когда выполняется оператор SELECT, он обычно извлекает одну или несколько строк информации. Точное количество зависит от того, как построен оператор. Все эти строки вместе называются набором результатов, и этот термин используется во всей оставшейся части книги. В этом наименовании заключен точный смысл, поскольку при использовании реляционной базы данных вы всегда работаете с наборами данных. (Вспомните, что реляционная модель основана, в частности, на теории множеств.) Можно легко просмотреть информацию в наборе результатов, и во многих случаях его данные можно модифицировать. Но все это зависит от построения оператора SELECT, к изучению которого мы и приступим. Перевод запроса на SQL Запрос информации из БД обычно имеет вид вопроса или утверждения, которое подразумевает вопрос. Например, можно сформулировать такие утверждения: В каких городах живут ваши клиенты? Показать текущий список наших слуотщих и номера их телефонов . Предметы какого типа мы предлагаем в настоящее время? Дать имена людей, состоящих в нашем штате, и даты их приема на работу . Когда известно, что вы хотите спросить, можно преобразовать запрос в более формальное утвер>вдение. Преобразование выполняется с использованием следующей формы: Select <item> from the <source> (Выбрать <элемент> из <источник>) Начните с рассмотрения своего запроса и замените все слова или фразы типа список , показать , какой , который и кого/что на слово Select (Выбрать). Затем найдите в запросе все имена существительные и определите, представляет ли данное существительное элемент, который вы хотите видеть, или оно является именем таблицы, в которой может сохраняться элемент. Если это элемент, вставьте его вместо компонента <item> преобразуемого утверждения. Если это имя таблицы, вставьте его вместо компонента <source>. Если преобразовать наш первый вопрос, то утверждение будет примерно следующим: Select city from the customers table (Выбрать город из таблицы заказчиков) После того как утверждение определено, необходимо превратить его в законченный оператор SELECT, используя синтаксис, показанный на рис. 4.4. Однако первый шаг состоит в приведении в порядок преобразуемого утверждения. Это достигается путем вычеркивания всех слов, которые не являются существительными, представляющими собой имя столбца или таблицы, и не являются ключевыми словами SQL. Взгляните, какой вид принимает преобразуемое утверждение в процессе окончательного преобразования: Select city from the customers table
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |