Использование SQL для извлечения информации из таблиц

В ЭТОЙ ГЛАВЕ МЫ ПОКАЖЕМ ВАМ, КАК ИЗВЛЕКАТЬ информацию из таблиц. Вы узнаете, как опускать или переупорядочивать столбцы и как автоматически устранять избыточность данных из вашего вывода. В заключение вы узнаете, как ставить условие (проверку), которую вы можете использовать, чтобы определить какие строки таблицы используются в выводе. Эта последняя особенность, будет далее описана в более поздних главах и является одной из наиболее изящных и мощных в SQL.

Создание запроса

Как мы подчеркивали ранее, термин SQL означает "Структурированный Язык Запросов". Запросы — вероятно, наиболее часто используемый аспект SQL. Фактически, для категории SQL пользователей, маловероятно чтобы кто-либо использовал этот язык для чего-то другого. По этой причине, мы будем начинать наше обсуждение SQL с обсуждения запроса, и как он выполняется на этом языке.

Что такое запрос?

Запрос — команда, которую вы даете вашей программе базы данных, и которая сообщает ей, чтобы она вывела определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, которым вы пользуетесь, хотя, в большинстве случаев, ее можно также послать принтеру, сохранить в файле (как объект в памяти компьютера), или представить как вводную информацию для другой команды или процесса.

Где применяются запросы?

Запросы обычно рассматриваются как часть языка DML. Однако, так как запрос не меняет информацию в таблицах, а просто показывает ее пользователю, мы будем рассматривать запросы как самостоятельную категорию среди команд DML, которые производят действие, а не просто показывают содержание базы данных.

Все запросы в SQL состоят из одиночной команды. Структура этой команды обманчиво проста, потому что вы должны расширять ее так, чтобы выполнить высоко сложные оценки и обработки данных. Эта команда называется — SELECT (ВЫБОР).

Команда SELECT

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

SELECT snum, sname, city, comm
FROM Salespeople;

Вывод для этого запроса показывается в Рисунке 3.1.

=============== SQL Execution Log ============
| SELECT snum, sname, city, comm |
| FROM Salespeople; |
| ==============================================|
| snum sname city comm |
| ------ ---------- ----------- ------- |
| 1001 Peel London 0.12 |
| 1002 Serres San Jose 0.13 |
| 1004 Motika London 0.11 |
| 1007 Rifkin Barcelona 0.15 |
| 1003 Axelrod New York 0.10 |
===============================================

Рисунок 3.1. команда SELECT

Другими словами, эта команда просто выводит все данные из таблицы. Большинство программ будут также давать заголовки столбца как выше, а некоторые позволяют детальное форматирование вывода, но это уже вне стандартной спецификации.

Имеется объяснение каждой части этой команды:

SELECT Ключевое слово, которое сообщает базе данных, что эта команда — запрос. Все запросы начинаются этим словом, сопровождаемым пробелом.
snum, sname Это — список столбцов из таблицы, которые выбираются запросом. Любые столбцы, не перечисленные здесь, не будут включены в вывод команды. Это, конечно, не значит, что они будут удалены или их информация будет стерта из таблиц, потому что запрос не воздействует на информацию в таблицах, он только показывает данные.
FROM Salespeople Ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именем таблицы используемой в качестве источника информации. В данном случае — это таблица Продавцов (Salespeople).
; Точка с запятой используется во всех интерактивных командах SQL, чтобы сообщать базе данных, что команда заполнена и готова выполниться. В некоторых системах наклонная черта влево (\) в строке, является индикатором конца команды.

Естественно, запрос такого характера не обязательно будет упорядочивать вывод любым указанным способом. Та же самая команда, выполненная с теми же самыми данными но в разное время не сможет вывести данные в том же порядке. Обычно, строки выводятся в том порядке, в котором они найдены в таблице, поскольку как мы установили в предыдущей главе — этот порядок произволен. Это не обязательно будет тот порядок, в котором данные вводились или сохранялись. Вы можете упорядочивать вывод командами SQL непосредственно, с помощью специального предложения. Позже мы покажем, как это делается. А сейчас, просто усвойте, что в отсутствии явного упорядочения в вашем выводе нет никакого определенного порядка.

Наше использование конца строки (Клавиша ENTER) является произвольным. Мы должны точно установить, как удобнее составить запрос, в несколько строк или в одну строку, следующим образом:

SELECT snum, sname, city, comm FROM Salespeople;

С тех пор как SQL использует точку с запятой, чтобы указывать конец команды, большинство программ SQL обрабатывают конец строки (через нажим Возврат или клавишу ENTER) как пробел. Оператор SQL можно разбить на насколько строк для облегчения чтения и понимания структуры команд SQL.

Наши рекомендации