Категория Извлечение данных состоит из одной команды SELECT, являющейся основной, наиболее часто используемой командой языка SQL. Структура этой команды проста, потому что её можно расширять для того, чтобы выполнять очень сложные вычисления и обработку данных. Эта команда применяется при формировании всех запросов выбора. Запрос – команда, которая формулируется для СУБД и требует предоставить определённую указанную информацию. Эта информация обычно выводится на экран, может быть направлена на принтер, сохранена в файле или использована в качестве исходных данных для другой команды или процесса
Команда SELECT – извлекает данные из БД
Формат: SELECT <что выводится>
FROM < откуда > [ INTO < куда >
WHERE < каким условиям должно отвечать >
GROUP BY < колонки(поле), по которым осущ-ся группирование >
HAVING < условие группирования записей в одну строку >
ORDER BY < в каком порядке выводить данные >]
Выборка определенных столбцов таблицы
Для этого в команде SELECT достаточно перечислить имена полей, которые необходимо увидеть.
Пример 1. Из таблицы Сведения выбрать сведения о клиентах.
SELECT ФИО, [Код вклада], [Сумма вклада]
FROM Сведения;
Устранение избыточных данных
Ключевое слово DISTINCT – аргумент, дающий возможность исключить дублирующие значения из результата выполнения предложения SELECT.
DISTINCT можно задать только один раз для данного SELECT. Если SELECT извлекает множество полей, то он исключает строки, в которых все выбранные поля идентичны. Строки, в которых некоторые значения одинаковы, а другие различны, он включает в результат.
Пример 2. Пользуясь таблицей Сведения, вывести список видов счетов, предоставляемых банком.
SELECT [Код вклада] FROM Сведения; | SELECT DISTINCT [Код вклада] FROM Сведения; | ||||||||||||||||||
Результат
| Результат
|
Определение условия выбора WHERE
Предложение WHERE команды SELECT позволяет определить предикат (условие), который может быть либо истинным, либо ложным для каждой строки таблицы. Команда извлекает только те строки из таблицы, для которых предикат имеет значение «истина». При наличии предложения WHERE программа обработки БД просматривает таблицу строка за строкой и для каждой строки проверяет, истинен ли предикат.
Кроме того, в предложении WHERE может указываться условие связывания таблиц, если выбор производится не из одной таблицы, а из нескольких. Таким образом, SQL-запрос обеспечивает возможность определять связи между множеством таблиц и отображать содержащуюся в них информацию в терминах этих связей в рамках единственной команды. Операции такого рода называются соединением (join) и являются одним из самых мощных преимуществ реляционных БД.
При операции соединения имена таблиц перечисляются через запятую в предложении FROM. Предикат (условие) запроса может ссылаться на любой столбец любой из соединяемых таблиц и использоваться для установления связей между ними. Записи из двух таблиц объединяются при обнаружении совпадающих значений в объединяемых полях. При этом поля должны иметь одинаковый тип данных, но могут иметь разные имена. Обычно предикат сравнивает значения в столбцах различных таблиц для того, чтобы определить, выполняется ли условие WHERE.
Формат: WHERE критерий поиска,
где критерий поиска является выражением, включающим текстовый оператор сравнения для текстовых полей или арифметический оператор сравнения для числовых полей. В критерии поиска могут использоваться реляционные и булевы операторы.
Реляционный оператор – это математический символ, который задает определенный тип сравнения между двумя значениями: = (равно), >= (больше или равно), > (больше, чем), <= (меньше или равно), < (меньше, чем), <> ( не равно).
Булевы операторы (выражения) - это те выражения, относительно которых, подобно предикатам, можно сказать истинны они или ложны. Булевы операторы связывают одно или несколько значений (истина/ложь) и в результате получают единственное значение (истина/ложь).
Стандартные булевы операторы: AND, OR, NOT.
В сложных булевых выражениях можно использовать скобки. SQL понимает круглые скобки так: всё то, что расположено внутри круглых скобок, вычисляется прежде всего и рассматривается как единственное выражение по отношению к тому, что расположено за пределами круглых скобок.
Пример 1. Выбрать сведения о клиентах, у которых на вкладе размещена сумма меньше 10000 у.е.
SELECT. ФИО,[Код вклада],[Сумма вклада]
FROM Сведения
WHERE [Сумма вклада]<=10000;
ФИО | Код вклада | Сумма вклада |
Сергеев И. | ВД | |
Костин В. | ВД | |
Суворов А. | ВД | |
Петрова И. | ВДС | |
Михайлова А. | ВДС | |
Купцова С. | ВДН | |
Разин А. | ТВ |
Пример 2. Выбрать сведения о клиентах, у которых на текущем счете размещена сумма не меньше 10000 у.е.
SELECT ФИО, [Код вклада], [Сумма вклада]
FROM Сведения
WHERE [Код вклада]="ТВ" AND [Сумма вклада]>10000;
ФИО | Код вклада | Сумма вклада |
Архипов Н. | ТВ | |
Пугачева А. | ТВ |
Пример3. Выбор данных из двух таблиц.
Вывести информацию о вкладчиках с полным названием вида вклада. Выводимым полям присвоить собственные имена.
SELECT ФИО AS [ФИО вкладчика], [Сумма вклада], [Вид вклада] AS [Название вклада]
FROM Справочник, Сведения
WHERE Справочник.Код = Сведения.[Код вклада];
ФИО вкладчика | Сумма вклада | Название вклада |
Сергеев И. | Валютный депозит | |
Костин В. | Валютный депозит | |
Суворов А. | Валютный депозит | |
Петрова И. | Валютный депозит срочный | |
Соколова Н. | Валютный депозит срочный | |
Михайлова А. | Валютный депозит срочный | |
Орлова И. | Валютный депозит накопительный | |
Богданова О. | Валютный депозит накопительный | |
Купцова С. | Валютный депозит накопительный | |
Архипов Н. | Валютный текущий | |
Разин А. | Валютный текущий | |
Пугачева А. | Валютный текущий |