В предложении FROM перед зарезервированными словами INNER JOIN указывается имя таблицы со стороны 1 (в нашем случае таблица “Экзаменаторы”). Если в предложении FROM больше двух таблиц, то объединение двух таблиц можно заключить в круглые скобки и рассматривать его как одну таблицу при объединении с другими таблицами или объединениями. Таким способом можно описать объединение любого числа таблиц.
Пример
FROM Преподаватели INNER JOIN (Экзаменаторы
INNER JOIN Экзамены
ON Экзаменаторы.Предмет = Экзамены.Предмет)
ON Преподаватели.Преподаватель = Экзаменаторы.Преподаватель
Описана вся схема данных (см. рисунок).
SELECT
Инструкция SELECT обеспечивает выборку необходимых полей из таблиц или запросов. Формат минимального варианта:
SELECT поля
FROM таблицы;
Поля -множество выражений и имен полей, разделенных запятыми.
Пример
SELECT Группа, Студент, Оценка
FROM Экзамены;
Если имя повторяется в нескольких таблицах, перечисленных в предложении FROM, то перед именем надо поместить имя таблицы и точку, например: [Экзаменаторы]. Преподаватель или [Экзамены]. [Предмет]
Если имя таблицы или поля содержит пробел или другой спецсимвол, то это имя нужно заключить в квадратные скобки. В других случаях скобки необязательны.
В приведенном примере в режиме таблицы запрос выдает таблицу с заголовками столбцов “Группа”, ”Студент”, ”Оценка” (именно в этом порядке). Иногда бывает желательно, чтобы заголовок отличался от имени поля. В этом случае после имени поля следует поместить зарезервированное слово AS и заголовок (псевдоним), например:
SELECT Группа, Студент AS ФИО,Оценка
В этом случае вместо заголовка “Студент” появится “ФИО”. Если в заголовке более одного слова, его необходимо заключить в квадратные скобки.
Если необходимо выдать все поля таблицы, то аргумент поля следует задать звездочкой или в виде “Таблица.*”.
Пример(запрос1)
Выдаются все 5 полей из таблицы “Преподаватели”.
Иногда требуется выдать не значение поля, а результат вычислений над значениями полей. В этом случае вместо имени поля надо задать выражение. Правила записи выражений не отличаются от правил, применяемых в конструкторе запросов.
Пример(запрос2)
Запрос выдает одно число в столбце с заголовком “Средний балл” – среднее арифметическое всех оценок студентов.
Пример(запрос3)
Под заголовком“Число преподавателей” будет помещено число строк таблицы “Преподаватели”, в которых поле “Преподаватель” не пусто (а оно всегда не пусто, так как является ключевым). Это и есть число преподавателей, так как в каждой записи есть номер преподавателя, отличный от номеров других преподавателей.
В инструкции SELECT сразу после слова SELECT может быть записан предикат – одно из слов ALL, DISTINCT, DISTINCTROW, TOP N [PERCENT].
Предикат ALL предписывает выдавать все записи, даже если они содержат повторы.
DISTINCT запрещает выводить записи, содержащие повторы в отобранных полях. Использование предиката DISTINCT эквивалентно установке значения “Да” свойства “Уникальные значения” в бланке свойств конструктора запросов.
DISTINCTROW влияет на результат только в том случае, если в запрос включены не все поля из анализируемых таблиц. Предикат игнорируется, если запрос содержит только одну таблицу. Предикат DISTINCTROW исключает записи, повторяющиеся полностью. Использование предиката DISTINCTROW эквивалентно установке значения “Да” свойства “Уникальные записи” в бланке свойств конструктора запросов.
Предикат Top N используется для возврата N записей, находящихся в начале или конце набора, отсортированного по возрастанию или убыванию значений этого поля. Сортировка определяется с помощью предложения ORDER BY, размещаемого после предложения FROM инструкции SELECT.
После слов ORDER BY надо поместить имя поля и слово ASC (по возрастанию, не обязательно) или DESC (по убыванию). Следующая инструкция SQL позволяет получить список из 5 лучших студентов.