Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр №9 Основы SQL.doc
Скачиваний:
1
Добавлен:
11.11.2019
Размер:
113.66 Кб
Скачать

In Имя_базы_данных

GROUP BY Список_полей

HAVING Критерии_поиска

ORDER BY Список_полей

Итак, SELECT – ключевое слово, которое сообщает СУБД, что эта команда – запрос на выборку. Все запросы на выборку начинаются этим словом с последующим пробелом. За ним может следовать выборки – с удалением дубликатов (DISTINCT, DISTINCTROW) или без удаления (ALL, подразумевается по умолчанию).

Инструкция SELECT определяет также, какие поля подлежат обработке (будут извлечены и представлены в качестве результата выполнения запроса). Внутри параметра указываются также тип соединения таблиц и поля , по которым производится связывание по отношению равенства (так как соединение таблиц внутреннее): Таблица1 INNER JOIN Таблица2 ON Условие связывания.

Если необходимо просто перечислить таблицы, их имена отделяются друг от друга запятыми. Все последующие операторы SELECT являются необязательными. Если параметр WHERE не задаётся, при выполнении SQL-запроса будут выбраны все блоки данных.

Параметр WHERE задаёт условия, которым должны удовлетворять извлекаемые записи. WHERE – это ключевое слово, за которым следует предикат – условие, налагаемое на запись в таблице, которому она должна удовлетворять, чтобы попасть в выборку. В условии выборки могут использоваться следующие предикаты:

  • предикаты сравнения = , <> , > , < , >= , <=;

  • предикат BETWEEN – принимает значение между a1 и a2:

        • /NOT BETWEEN – не принимает значение между a1 и a2;

        • <имя> BETWEEN a1 AND a2 или <имя> NOT BETWEEN a1 AND a2;

  • предикат IN – входит в множество/не входит:

    • <имя> IN (Подзапрос) (список_значений);

    • <имя> NOT IN (Подзапрос) (список_значений);

  • предикат LIKE – включает (подобен):

    • <имя> LIKE <образец>;

    • <имя> NOT LIKE <образец> – не подобен.

Образец может содержать символы подчёркивания «_» для обозначения любого одиночного символа; «%» – для обозначения любой произвольной последовательности символов;

  • предикат IS NULL – неизвестно, не определено:

    • <имя> IS NULL – является неопределённым;

    • <имя> NOT IS NULL – не является неопределённым;

  • предикат EXISTS – существует что-то; EXISTS (Подзапрос) = Истина, когда подзапрос не пуст;

  • булевы операторы AND, OR, NOT.

При работе с базами данных другого (не Access) формата приходится пользоваться параметром IN.

Инструкция GROUP BY позволяет группировать данные. GROUP BY группирует блоки данных, объединяя все записи, содержащие в заданных полях идентичные значения, в один отдельный элемент выходного набора. При этом повторяющиеся значения будут присутствовать в выходном наборе только один раз, например:

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

После группировки данных вследствие выполнения инструкции GROUP BY при помощи параметра HAVING отражаются все эти сгруппированные блоки данных, удовлетворяющие заданным в HAVING условиям. Предложения HAVING определяет критерии, используемые для того, чтобы удалять определённые группы из результирующего множества запроса, так же как для отдельных записей это делается в инструкции WHERE. Это дополнительная возможность «профильтровать» результирующее множество запроса.

HAVING – необязательный параметр, но если он задан, то должен за GROUP BY.

Параметр ORDER BY сортирует выходные данные в заданной последовательности. Сортировка может выполняться по нескольким полям, в этом случае они перечисляют через запятую. Способ сортировки определяется параметром, указанным следом за названием поля, по которому выполняется сортировка по возрастанию (в явном виде она задаётся параметром ASC); если следом за названием поля записан параметр DESC, выполняется сортировка по убыванию. Сортировка может выполняться для каждого из полей, приведённых в списке параметра ORDER BY.

ORDER BY не является обязательным параметром, и если он не задан, данные на сортируются, а выводятся в той последовательности, в какой они записаны в исходной таблице. ORDER BY обычно является последним элементом SQL-инструкции.

ПРАКТИЧЕСКОЕ ЗАДАНИЕ

  1. Разработайте SQL-запрос Списки на стипендию, отображающий фамилии студентов, получающих стипендию и номера групп, в которых они учатся.

  2. Разработайте SQL-запрос Средний балл студента.

  3. Разработайте SQL-запрос с параметром Оценки по дисциплине, отражающий фамилии студентов, название дисциплины и оценку студента по дисциплине.

  4. Разработайте SQL-запрос вычисляющий Средний балл по дисциплине, отражающий название дисциплины и соответствующий средний балл.

  5. Разработайте SQL-запрос вычисляющий Средний балл по преподавателю, отражающий фамилию преподавателя и средний балл по дисциплине, которую он ведет.

  6. Разработайте SQL-запрос вычисляющий Среднюю зарплату преподавателей (самостоятельно).

ТЕХНОЛОГИЯ РАБОТЫ

  1. Для создания SQL-запроса на выборку студентов, получающих стипендию и номеров групп

  • перейдите в режим SQL. Для этого в режиме конструктора запросов выберите пункт SQL в меню Результаты (рис. 1).

Р ис. 1. Переход в режим SQL

  • в открывшемся окне напишите текст запроса:

SELECT Студенты.Фамилия, Студенты.Имя, Студенты.[Номер группы], Студенты.Стипендия

FROM Студенты

WHERE (((Студенты.Стипендия)=True));

  • нажмите кнопку Выполнить!;

  • закройте запрос, задав имя Списки на стипендию.

2. Для создания SQL-запроса Средний балл студента:

  • перейдите в режим SQL;

  • в открывшемся окне напишите текст запроса:

SELECT Студенты.[Код студента], Студенты.Фамилия, Студенты.Имя, Avg(Оценки.Оценки) AS [Средний балл]

FROM Студенты INNER JOIN Оценки ON Студенты.[Код студента] = Оценки.[Код студента]

GROUP BY Студенты.[Код студента], Студенты.Фамилия, Студенты.Имя;

  • нажмите кнопку Выполнить!;

  • закройте запрос, задав имя Средний балл студента.

3. Для создания SQL-запроса Оценки по дисциплине:

  • перейдите в режим SQL;

  • в открывшемся окне напишите текст запроса:

SELECT Студенты.Фамилия, Дисциплины.[Название дисциплины], Оценки.Оценки

FROM Студенты INNER JOIN (Дисциплины INNER JOIN Оценки ON Дисциплины.[Код дисциплины] = Оценки.[Код дисциплины]) ON Студенты.[Код студента] = Оценки.[Код студента]

WHERE (((Дисциплины.[Название дисциплины])=[введите дисциплину]));

  • нажмите кнопку Выполнить!;

  • закройте запрос, задав имя Оценки по дисциплине.

4. Для создания SQL-запроса вычисляющего Средний балл по дисциплине:

  • перейдите в режим SQL;

  • в открывшемся окне напишите текст запроса:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]