|
Программирование >> Руководство по sql
в результате получилось не совсем то, что мы хотели, так как в список попали все авторы, независимо от их места проживания. Для получения требуемого результата в оператор выборки данных необходимо ввести предложение WHERE. SQL: select au lname, au fname from authors where state = CA Результат: au lname au fname Bennet Abraham Carson Cheryl McBadden Heather Dull Ann Yokomoto Akiko OLeary Michael Gringlesby Burt White Johnson Hunter Sheryl Locksley Chastity Теперь в списке будут перечислены только авторы, проживающие в Калифорнии. На практике синтаксис оператора SELECT может быть простым и сложным. Он упрощается, если в оператор включаются только предложения SELECT и FROM. Предложение WHERE (и все другие предложения) в принципе необязательны. С другой стороны, полный синтаксис оператора SELECT имеет следующий вид: SELECT [ALL DISTINCT] список Выбора FROM {имя таблицы имя курсора} [ , {имя таблицы I имя курсора}]... [WHERE условия] [GROUP BY имя столбца [ , имя столбца]...] [HAVING условия] [ORDER BY {имя столбца список выбора} [ASC j DESC] [ , {column name список выбора} [ASC DESC] ]...] Хотя SQL и является языком с необусловленной формой, порядок предложений в операторе SELECT должен строго соблюдаться (например, предложение GROUP BY должно предшествовать предложению ORDER BY). В противном случае это приведет к появлению ошибки синтаксиса. Помимо этого, нужно однозначно описывать все объекты базы данных (в соответствии с конкретным диалектом SQL). Например, если в базе данных содержится несколько столбцов с именем notes, нужно точно указать, какой из них вы имеете в виду. Для этого в соответствующий запрос нужно включить имя базы данных, таблицы или курсора и имя владельца, например: база данных. владелец. имя таблицы. notes база данных. владелец. имя курсора. notes Все примеры запросов в этой главе используют по одной таблице, поэтому такие уточнения вам не потребуются. О них также не упоминается в большинстве книг, статей и руководств по SQL, так как более краткая форма упрощает понимание операторов SELECT. Тем не менее не забывайте включать их в запросы в случае необходимости. ВЫБОР СТОЛБЦОВ: СПИСОК ВЫБОРА Любой оператор SELECT начинается с ключевого слова SELECT. Ключевые слова ALL и DISTINCT, которые определяют, будут ли включаться в результат повторяющиеся строки, являются необязательными и описываются в следующей главе. В списке выбора (select list) определяется столбец или столбцы, включаемые в результат. Он может состоять из имен одного или нескольких столбцов, или включать единственную звездочку (*), определяющую все столбцы. Можно также использовать выражения - константы, имена столбцов, функций и их комбинации с арифметическими операторами и скобками. Вот несколько примеров выражений: ytd sales * price price * 1.2 (12000 - 500)/ 13 avg(advance) Каждый элемент в списке выбора отделяется от другого запятой. Выбор всех столбцов: SELECT * Знак звездочки (*) ифает в списке выбора особую роль. Он означает выбор всех имен столбцов во всех таблицах из списка таблиц. Столбцы отображаются в соответствии с порядком, в котором они были определены в операторе (операторах) CREATE TABLE. Этот знак используется, если необходимо увидеть все столбцы таблицы. Для выбора всех столбцов таблиц используется следующий оператор: SELECT * FROM список таблиц Так как оператор SELECT * находит все текущие столбцы таблицы, при изменении структуры таблицы (добавление, удаление или переименование столбцов) соответственно изменяются и его результаты. Просмотр столбцов по отдельности, конечно, позволяет более тщательно контролировать получаемые результаты, однако вводить оператор SELECT * значительно проще (к тому же в нем сложно сделать ощибку). Оператор SELECT * наиболее подходит для таблиц с несколькими столбцами, так как одновременное отображение данных из большого количества столбцов обычно неудобно. Также этот оператор будет полезен, если вы хотите получить общие представления о структуре таблицы (о столбцах и их порядке). Следующий оператор извлекает все столбцы из таблицы publishers и отображает их в соответствии с порядком, в котором они были определены при создании таблицы. Поскольку в этом запросе не используется предложение WHERE, из таблицы будут выбраны все строки. SQL: select * from publishers Результат: pub id pub name address city state 0736 New Age Books 1 1st St Boston MA 0877 Binnet & Hardley 2 2nd Ave. Washington DC 1389 Algodata Infosystems 3 3rd Dr. Berkeley CA Tot же результат получается и при перечислении всех имен столбцов этой таблицы после ключевого слова SELECT: SQL: select pub id, pub name, address, city, state from publishers Звездочка в списке выбора многотабличного запроса заставляет SQL отображать все столбцы из всех таблиц в списке таблиц. В некоторых системах в списке выбора могут одновременно присутствовать и звездочка, и имена отдельных столбцов. Это наиболее удобно в многотабличных запросах, когда вместе со звездочкой используется имя таблицы. Следующий оператор извлекает информацию из таблицы publishers для каждого значения titlejd из таблицы titles. При этом будут извлекаться все столбцы из таблицы publishers (так как в списке выбора присутствует publishers. *) и только один столбец из таблицы titles (так как в списке выбора присутствует titlejd). SQL: SELECT title id, publishers.* from titles, publishers where titles.pub id = publishers.pub id Результат:
Без использования звездочки этот запрос имел бы следующий вид: SQL: select title id, publishers.pub id, publishers.pub name, publishers.address, publishers.city, publishers.state from titles, publishers where titles.pub id = publishers.pub id (Вопросы, связанные с операцией объединения, будут рассматриваться в главе 7. Поэтому сейчас не обращайте особого внимания на вид этого запроса.)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |