
- •!!! Для дальнейшей работы откройте файл Учебной базы данных!!!
- •1. Основное sql-выражение для выборки данных
- •2. Уточнения запроса
- •2.1. Оператор where
- •Предикаты сравнения
- •Предикаты для вложенных запросов
- •2.2. Оператор group by
- •2.3. Оператор having
- •2.4. Оператор order by
- •2.5. Логические операторы
- •Список контрольных вопросов:
- •Задачи для самостоятельного выполнения:
Материал для подготовки к практической работе по теме:
«Создание простых запросов на выборку на языке SQL»
Задания:
Внимательно изучите предложенный теоретический материал.
Письменно ответьте на контрольные вопросы, список которых приведен в конце документа.
Реализуйте на практике все специально выделенные практические примеры (отмечены символом ).
Решите задачи, предложенные для самостоятельного выполнения (в конце документа).
Теоретический материал для изучения:
Введение
Предположим, что реляционная база данных, состоящая из одной или нескольких таблиц, создана и вы к ней уже подключились. В этом случае типичной практической задачей является получение (извлечение) нужных данных. Например, может потребоваться просто просмотреть все содержимое какой-либо таблицы из базы данных или некоторых ее полей. При этом, возможно, вы захотите получить не все записи, а лишь те, которые удовлетворяют заданным условиям. Однако чаще возникает более интересная и сложная задача извлечения данных сразу из нескольких таблиц. Данные из двух и более таблиц необходимо скомпоновать в одну таблицу, чтобы представить ее для обозрения, анализа или последующей обработки.
В результате выполнения выражения на языке SQL (SQL-выражения) создается таблица, которая либо содержит запрошенные данные, либо пуста, если данных, соответствующих запросу, не нашлось. Эта таблица, называемая еще результатной, существует только во время сеанса работы с базой данных и не присоединяется к числу таблиц, входящих в базу данных. Иначе говоря, она не хранится на жестком диске компьютера подобно исходным таблицам базы данных, и поэтому ее еще называют виртуальной.
Выборка данных из нескольких таблиц, их обработка, а также использование подзапросов (запросов, которые нужны в качестве промежуточных для получения окончательного результата) относятся к теме сложных запросов. Сейчас остановимся на задаче выборки данных из одной таблицы при относительно простых условиях отбора, группировки и сортировки записей. Тем не менее, операторы SQL, применяемые в простых запросах на выборку данных, используются и в сложных запросах, направленных не только на получение, но и на изменение данных.
Все SQL-выражения, предназначенные для выборки данных из существующих таблиц базы данных, начинаются с ключевого слова (оператора) SELECT (выбрать). Для уточнения запроса служат дополнительные операторы, такие как FROM (из), WHERE (где) и др. Сейчас важно понять и запомнить, что результатом выполнения запроса, сформулированного в виде SQL-выражения, является таблица, содержащая запрошенные данные. Эта таблица виртуальна в том смысле, что только представляет результаты запроса и не принадлежит к базе данных. Замечу также, что SQL позволяет изменять существующую базу данных— создавать и добавлять к ней новые таблицы, а также модифицировать и удалять уже существующие.
!!! Для дальнейшей работы откройте файл Учебной базы данных!!!
1. Основное sql-выражение для выборки данных
Чтобы выбрать из таблицы базы данных требуемые записи, следует, по крайней мере, указать столбцы и имя этой таблицы. Это требование было бы естественно сформулировать так:
ВЫБРАТЬ такие-то столбцы ИЗ такой-то таблицы;
Разумеется, вам может потребоваться выбрать не все записи таблицы, а лишь те, которые отвечают некоторому условию. На практике именно так и бывает. Отложим пока рассмотрение формирования условий отбора записей, а сконцентрируем внимание на выборке всех записей из заданной таблицы. SQL-запрос к базе данных, результатом которого является таблица, полученная из указанной в запросе, но отличающаяся от нее тем, что содержит лишь указанные столбцы, выглядит так:
SELECT списокСтолбцов FROM списокТаблиц;
Операторы select (выбрать) и from (из) в SQL-выражении, определяющем выборку данных, являются обязательными, т. е. ни один из них нельзя пропустить. SQL-выражение, содержащее только эти операторы, является основным выражением, определяющим запрос к базе данных на выборку данных. В результате выполнения этого запроса создается виртуальная таблица, содержащая указанные столбцы и все записи исходной таблицы.
Примечание
Оператор select осуществляет проекцию отношения, указанного в выражении from, на заданное множество атрибутов (столбцов), указанное в выражении select.
В выражении from указывается список имен таблиц базы данных, из которых требуется выбрать данные. В простейшем случае список таблиц содержит лишь одно имя таблицы. Если же таблиц несколько, то их имена в списке разделяются запятыми. Если в выражении from указано более одной таблицы, то результатная таблица получается из декартового произведения перечисленных в списке таблиц. Иногда это используется для специальных целей, но чаще всего в выражении from указывается только одна таблица.
Список столбцов — это перечень имен столбцов, разделенных запятой, как они определены в таблице, указанной в выражении from. Разумеется, можно указать все или только некоторые столбцы. Если вы хотите получить все столбцы таблицы, то вместо списка столбцов достаточно указать символ (*). Если в выражении from указано несколько таблиц, то в выражении select имена столбцов должны содержать префиксы, указывающие, к какой именно таблице они относятся. Префикс отделяется от имени столбца точкой. Например, выражение Клиенты.Адрес означает столбец Адрес ИЗ Таблицы Клиенты.
Тривиальный запрос, возвращающий все данные (все столбцы и все записи) из одной таблицы, формулируется так:
SELECT * FROM имяТаблицы;
Основное SQL-выражение может быть дополнено другими операторами, уточняющими запрос. Чаще всего употребляется оператор where (где), с помощью которого можно задать условие выборки записей (строк таблицы). Таким образом, если выражение select задает столбцы таблицы, указанной в операторе from, то выражение where определяет записи (строки) из этой таблицы. Выражение, определяющее запрос на выборку данных, находящихся в некоторой таблице, имеет следующий вид:
SELECT * FROM имяТаблицы WHERE условиеПоиска;
Условие, указанное в выражении where, принимает одно из двух логических значений: true (ИСТИНА) или false (ЛОЖЬ). Другими словами, это логическое выражение. При обработке запроса условие проверяется для каждой записи таблицы. Если оно истинно для данной записи, то она выбирается и будет представлена в результатной таблице. В противном случае запись не выбирается и в результатную таблицу не попадает. Если выражение where не указано в SQL-выражении, то результатная таблица будет содержать все записи из таблицы, заданной в выражении from. Таким образом, выражение where определяет фильтр записей. Фильтр что-то пропускает в результатную таблицу, а что-то отбрасывает.
Сразу за оператором select до списка столбцов можно применять ключевые слова all (все) и distinct (отличающиеся), которые указывают, какие записи представлять в результатной таблице. Если эти ключевые слова не используются, то подразумевается, что следует выбрать все записи, что также соответствует применению ключевого слова all. В случае использования distinct в результатной таблице представляются только уникальные записи. При этом если в исходной таблице находятся несколько идентичных записей, то из них выбирается только первая.
Примечание
В Microsoft Access кроме ключевых слов all и distinct после select можно использовать ключевое слово тор с дополнительными параметрами. Выражение тор n требует, чтобы в выборку данных попали только первые п записей, удовлетворяющих заданному условию запроса. Это ограничение условия поиска нужных записей, формулируемого в выражении where. Если исходная таблица очень большая, то distinct может ускорить получение ответа.
В Access можно использовать и выражение тор n percent, чтобы указать, что n выражается в процентах от общего количества записей. Не трудно понять, что использование такого выражения направлено не на ускорение поиска, а на получение таблицы, избавленной от лишних данных.
Заголовки столбцов в результатной таблице можно переопределить по своему усмотрению, назначив для них так называемые псевдонимы. Для этого в списке столбцов после соответствующего столбца следует написать выражение вида: as заголовок_столбца. Например:
SELECT ClientName AS Клиент, Address AS Адрес FROM Клиенты;
Псевдонимы также можно задать и для каждой таблицы после ключевого слова from. Для этого достаточно указать псевдоним через пробел сразу после имени соответствующей таблицы. Псевдонимы таблиц, более короткие, чем их имена, удобно использовать в сложных запросах. Например:
SELECT Т1.Имя, Т2.Адрес FROM Клиенты Т1, Контакты Т2;