Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Синтаксис оператора 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. Выбор всех столбцов всех строк таблицы людей

PR_CODE PR_NAME PR_NAME2 PR_NAME3 PR_BIRTHDAY
  Зеленина Надежда Александровна 11.12.1965
  Бычкова Марина Валентиновна 01.04.1957
  Мельчакова Оксана Владимировна 06.07.1978
  Бычков Максим Владимирович 08.09.1970
  Попутько Павел Павлович 05.05.1959
  Лебедев Александр Анатольевич 03.04.1977
  Варанкина Елена Алевтиновна 01.02.1952
  Лядов Олег Владимирович 07.06.1964
  Вашкарина Лариса Вилльевна 05.11.1980
  Верхоланцева Анна Николаевна 06.10.1991
  Алексеев Юлий Альбертович 19.09.1974

Следует исключить из списка коды личностей, которые обычному человеку ничего не говорят. Выполним оператор в следующем виде:[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. Добавление осмысленных заголовков

Имя Отчество Фамилия Дата рождения
Надежда Александровна Зеленина 11.12.1965
Марина Валентиновна Бычкова 01.04.1957
Оксана Владимировна Мельчакова 06.07.1978
Максим Владимирович Бычков 08.09.1970
Павел Павлович Попутько 05.05.1959
Александр Анатольевич Лебедев 03.04.1977
Елена Алевтиновна Варанкина 01.02.1952
Олег Владимирович Лядов 07.06.1964
Лариса Вилльевна Вашкарина 05.11.1980
Анна Николаевна Верхоланцева 06.10.1991
Юлий Альбертович Алексеев 19.09.1974

 

 

ЗАМЕЧАНИЕ

Обратите, пожалуйста, внимание на вид, в котором представляются операторы SELECT в этой главе. Вместо того чтобы даже короткие операторы размещать на одной строке, старайтесь отдельные группы переносить на новые строки. SQL позволяют для ввода любого оператора использовать произвольное количество cтрок.

В списке выбора могут присутствовать не только имена столбцов, но и константы или литералы (строки). Выполните следующий оператор:[4]

SELECT PR_NAME2 AS "Имя",

PR_NAME3 AS "Отчество",

'Фамилия:' AS "Текст",

PR_NAME AS "Фамилия",

PR_BIRTHDAY AS "Дата рождения"

FROM PERSON

В результате выполнения запроса один столбец будет во всех строках содержать один и тот же текст — "Фамилия:". Ему мы и присвоили заголовок Текст

Листинг 3. Добавление в результат выбора текстовой строки "Фамилия:"

Имя Отчество Текст Фамилия Дата рождения
Надежда Александровна Фамилия: Зеленина 11.12.1965
Марина Валентиновна Фамилия: Бычкова 01.04.1957
Оксана Владимировна Фамилия: Мельчакова 06.07.1978
Максим Владимирович Фамилия: Бычков 08.09.1970
Павел Павлович Фамилия: Попутько 05.05.1959
Александр Анатольевич Фамилия: Лебедев 03.04.1977
Елена Алевтиновна Фамилия: Варанкина 01.02.1952
Олег Владимирович Фамилия: Лядов 07.06.1964
Лариса Вилльевна Фамилия: Вашкарина 05.11.1980
Анна Николаевна Фамилия: Верхоланцева 06.10.1991
Юлий Альбертович Фамилия: Алексеев 19.09.1974

Как это будет использоваться, покажем позднее, при исследовании ключевого слова UNION

В вывод может попадать не только столбец но и результат каких либо действий над столбцами, для примера, вместо имени, отчества и фамилии мы можем вывести один столбец содержащий результат объединения имени, отчества и фамилии из таблицы PERSON добавив между ними пробелы (соединение нескольких строк осуществляем при помощи операции конкатенации – ||): [5]

SELECT PR_NAME2 || ' ' || PR_NAME3 || ' ' || PR_NAME AS "ФИО",

PR_BIRTHDAY AS "Дата рождения"

FROM PERSON

В результате выполнения запроса получим

Листинг 4. Список людей с использованием соединения имени, отчества и фамилии при помощи операции конкатенации

ФИО Дата рождения
Надежда Александровна Зеленина 11.12.1965
Марина Валентиновна Бычкова 01.04.1957
Оксана Владимировна Мельчакова 06.07.1978
Максим Владимирович Бычков 08.09.1970
Павел Павлович Попутько 05.05.1959
Александр Анатольевич Лебедев 03.04.1977
Елена Алевтиновна Варанкина 01.02.1952
Олег Владимирович Лядов 07.06.1964
Лариса Вилльевна Вашкарина 05.11.1980
Анна Николаевна Верхоланцева 06.10.1991
Юлий Альбертович Алексеев 19.09.1974

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...