Синтаксис оператора SELECT
Рассмотрим упрощенный синтаксис этого оператора. SELECT [ALL | DISTINCT] <список выбора> FROM <ссылка на таблицу> [, <ссылка на таблицу>]... [WHERE <условия поиска>] [GROUP BY <список столбцов> [HAVING <условия поиска>]] [ORDER BY <список упорядочения>]; Разберем предложения оператора. SELECT [ALL | DISTINCT] <список выбора> — список выбираемых столбцов, констант, функций или выражений, разделенных запятыми. Необязательное ключевое слово ALL означает, что выбираются все строки, соответствующие условию поиска. Это значение по умолчанию, и обычно в операторе не указывается. Ключевое слово DISTINCT указывает, что в выходной набор данных попадут лишь отличающиеся строки, дубликаты будут отбрасываться. Сам список выбираемых столбцов (или список выбора) может содержать имена требуемых столбцов, константы, выражения или символ *, который означает, что выбираются все столбцы таблицы. Столбцы могут быть представлены или просто своими именами или перед именем столбца может присутствовать имя таблицы (или псевдоним таблицы — см. далее), после которого стоит точка. Никаких пробелов в таких конструкциях использовать нельзя. Синтаксис такой уточненной конструкции выглядит следующим образом: <имя таблицы>.<имя столбца> или <псевдоним таблицы>.<имя столбца> Уточненные имена столбцов обязательно должны присутствовать в операторах SELECT, где присутствует несколько таблиц, это позволит избежать двусмысленности при обращении к столбцам с одинаковым именем из разных таблиц. Такая ситуация может возникнуть при выполнении соединений таблиц. При задании имени столбца из таблицы, константы или любого выражения можно после ключевого слова AS указать текст, который будет помещаться в заголовок отображаемой таблицы. Такой текст называется псевдонимом или алиасом столбца. Если псевдоним содержит пробелы, специальные символы или буквы кириллицы, то этот текст нужно заключить в двойные кавычки. Например:
SELECT CITY.CT_NAME AS "Город", AIRPORT.AP_NAME AS "Аэропорт" FROM AIRPORT INNER JOIN CITY ON AIRPORT.AP_CT_CODE = CITY.CT_CODE WHERE CITY.CT_NAME = 'Москва' Русские тексты здесь заключены в кавычки, потому что содержат символы, недопустимые в именах, а например CT_NAME, являясь правильным именем в SQL, может обойтись без кавычек. Строковые константы должны заключатся в одинарные кавычки. ВНИМАНИЕ! Не путайте описанные таким образом псевдонимы столбцов с псевдонимами таблиц (см. дальше). Если псевдонимы таблиц можно использовать в операторе, где они определены, для уточнения ссылок на столбцы, то с псевдонимами столбцов дело обстоит несколько сложнее. В разных версиях разных серверов баз данных их можно использовать по-разному. Чуть позже мы рассмотрим некоторые варианты. FROM <ссылка на таблицу> задает список имен таблиц, в которых осуществляется поиск. Здесь же можно указывать соединения (JOIN) таблиц, представления (см. в конце этой главы). Необязательное предложение WHERE <условия поиска> определяет условия поиска строк в таблицах. На самом деле это предложение не является таким уж необязательным. Если таблица в базе данных содержит тысячи строк, то, во-первых, вам вряд ли понадобится за один раз такое количество записей, поскольку просмотреть их вы просто физически не сможете, а во-вторых, выборка больших объемов данных на сервере приводит к увеличению сетевого трафика и перегрузке сети. Необязательное предложение GROUP BY <имя столбца> группирует найденные строки в соответствии со значением указанного столбца. Необязательное предложение HAVING <условия поиска> определяет дополнительные условия поиска для использования в GROUP BY.
Необязательное предложение ORDER BY <список имен> позволяет упорядочить найденные строки, указывая список имен столбцов (здесь опять же можно использовать уточненные имена в виде <имя таблицы>.<имя столбца>), а также направление сортировки для каждого столбца — ключевые слова ASCENDING (по возрастанию) или DESCENDING (по убыванию). Для разъяснения содержания запроса в любом месте может быть размещен комментарий - произвольный текст ограниченный парой символов, спереди / *, сзади */ (так же как в языке С). Синтаксис: / * т е к с т...*/ Текст комментария может занимать несколько строк. Многие СУБД допускают удобный способ комментирования при помощи пары символов ‘--’, текст от этой пары до конца строки будет считаться комментарием. Простые варианты поиска данных Рассмотрим вначале наиболее простые варианты использования оператора. Мы будем отыскивать данные каждый раз только в одной из таблиц базы данных. Сразу после ключевого слова SELECT указывается список выбора — список столбцов таблицы, литералов, констант или выражений, которые попадут в результирующий набор данных. В самом простом варианте оператора SELECT можно указать вместо списка отображаемых столбцов символ *, например:[1] SELECT * FROM PERSON Этот оператор возвращает все столбцы всех строк таблицы PERSON Листинг 1. Выбор всех столбцов всех строк таблицы людей
Следует исключить из списка коды личностей, которые обычному человеку ничего не говорят. Выполним оператор в следующем виде:[2] SELECT PR_NAME, PR_NAME2, PR_NAME3, PR_BIRTHDAY FROM PERSON Мы получим те же записи. Каждая будет содержать фамилию, имя, отчество и дату рождения человека. Заголовки нам с вами, как проектировщикам таблиц нашей базы данных, понятны. Однако другим людям следует долго объяснять, что это такое. Лучше сразу сформировать заголовки на русском языке. Выполните:[3]
SELECT PR_NAME2 AS "Имя", PR_NAME3 AS "Отчество", PR_NAME AS "Фамилия", PR_BIRTHDAY AS "Дата рождения" FROM PERSON Результат станет более понятным, заголовки содержат правильные тексты. Листинг 2. Добавление осмысленных заголовков
ЗАМЕЧАНИЕ Обратите, пожалуйста, внимание на вид, в котором представляются операторы SELECT в этой главе. Вместо того чтобы даже короткие операторы размещать на одной строке, старайтесь отдельные группы переносить на новые строки. SQL позволяют для ввода любого оператора использовать произвольное количество cтрок. В списке выбора могут присутствовать не только имена столбцов, но и константы или литералы (строки). Выполните следующий оператор:[4] SELECT PR_NAME2 AS "Имя", PR_NAME3 AS "Отчество", 'Фамилия:' AS "Текст", PR_NAME AS "Фамилия", PR_BIRTHDAY AS "Дата рождения" FROM PERSON В результате выполнения запроса один столбец будет во всех строках содержать один и тот же текст — "Фамилия:". Ему мы и присвоили заголовок Текст Листинг 3. Добавление в результат выбора текстовой строки "Фамилия:"
Как это будет использоваться, покажем позднее, при исследовании ключевого слова UNION
В вывод может попадать не только столбец но и результат каких либо действий над столбцами, для примера, вместо имени, отчества и фамилии мы можем вывести один столбец содержащий результат объединения имени, отчества и фамилии из таблицы PERSON добавив между ними пробелы (соединение нескольких строк осуществляем при помощи операции конкатенации – ||): [5] SELECT PR_NAME2 || ' ' || PR_NAME3 || ' ' || PR_NAME AS "ФИО", PR_BIRTHDAY AS "Дата рождения" FROM PERSON В результате выполнения запроса получим Листинг 4. Список людей с использованием соединения имени, отчества и фамилии при помощи операции конкатенации
Читайте также: Види вправ із синтаксису й пунктуації Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|