Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт7.doc
Скачиваний:
15
Добавлен:
27.11.2019
Размер:
379.39 Кб
Скачать

Министерство образования Республики Беларусь

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Факультет технологий управления и гуманитаризации

Кафедра «Таможенное дело»

Отчет по лабораторной работе № 7

по дисциплине «ТОХОД».

тема: «Язык SQL»

Выполнил: студент гр. 108621

Бублис К.С

Проверил: Разорёнова Т.Р.

Минск 2012

Задание 7.1. Запрос на выборку указанных полей по одной таблице:

7.1.1. Выбрать аббревиатуры факультетов.

SELECT [Аббревиатура]

FROM Факультет;

7.1.2. Выбрать фамилии студентов из таблицы Успеваемость, исключив повторяющиеся

записи.

SELECT DISTINCT Фамилия

FROM Успеваемость;

Задание 7.2. Запрос по связанным таблицам:

7.2.1. Вывести название специальностей и соответствующие им номера групп,

исключив повторы.

SELECT DISTINCT [Название Специальности], Группа

FROM Специальности INNER JOIN Студенты ON Специальности.[Код Специальности]=Студенты.[Код Специальности];

7.2.2. Вывести аббревиатуры факультетов и названия специальностей для этих

факультетов.

SELECT аббревиатура, [название специальности]

FROM факультет INNER JOIN специальности ON факультет.[код факультета]=специальности.[код факультета];

Задание 7.3. Запросы с условиями отбора и параметрами:

7.3.1. Вывести информацию о студентах (фамилия, группа, факультет, предмет),

имеющих оценки 2 и 3.

SELECT студенты.фамилия, группа, [название факультета], предмет

FROM студенты, успеваемость, факультет, специальности

WHERE факультет.[код факультета]=специальности.[код факультета] And специальности.[код специальности]=студенты.[код специальности] And студенты.фамилия=успеваемость.фамилия And студенты.имя=успеваемость.имя And студенты.отчество=успеваемость.отчество And (успеваемость.оценка Between 2 And 3);

7.3.2. Отобрать студентов, родившихся до 1988 года.

SELECT Фамилия, Имя, Отчество, [дата рождения]

FROM студенты

WHERE (year([дата рождения])<"1988");

7.3.3. Выбрать студентов, обучающихся в определенной группе, при этом группу

вводить как параметр.

PARAMETERS [Введите номер группы] Text ( 255 );

SELECT Фамилия, Имя, Отчество, Группа

FROM Студенты

WHERE (Группа=[Введите номер группы]);

7.3.4. Выбрать студентов, имеющих имя, запрашиваемое как параметр.

SELECT имя, фамилия

FROM студенты

WHERE (имя=[введите имя]);

Задание 7.4. Запросы с фразой BETWEEN или IN:

7.4.1. Отобрать студентов-отличников с оценками от 9 до 10.

SELECT фамилия, оценка

FROM успеваемость

WHERE (успеваемость.оценка Between 9 And 10);

7.4.2. Выбрать студентов, имеющих положительные оценки (6, 7 или 8).

SELECT фамилия, имя, оценка

FROM успеваемость

WHERE (успеваемость.оценка Between 6 And 8);

Задание 7.5. Запросы с фразой LIKE:

7.5.1. Отобрать студентов, которые родились в апреле.

SELECT фамилия, имя, [дата рождения]

FROM студенты

WHERE month([дата рождения]) like "5";

7.5.2. Найти студентов, в чьих фамилиях имеется мягкий знак.

SELECT Фамилия, имя

FROM студенты

WHERE фамилия like "*" & "ь" & "*";

Задание 7.6. Запрос с сортировкой:

7.6.1. Создать список групп в порядке возрастания номеров.

SELECT DISTINCT группа

FROM студенты

ORDER BY группа;

7.6.2. Создать упорядоченный по убыванию и без повторов список оценок, полученных

студентами.

SELECT DISTINCT фамилия, имя, оценка

FROM успеваемость

ORDER BY оценка DESC;

Задание 7.7. Запросы с вычислениями (без группировки):

7.7.1. Вычислить общую сумму по оплате за обучение.

SELECT sum(плата) AS [общая сумма обучения]

FROM студенты;

7.7.2. Подсчитать средний балл и количество студентов сдававших экзамены.

SELECT avg(оценка) AS [средний балл], count(фамилия) AS сдавшие

FROM успеваемость;

Задание 7.8. Запросы с фразой GROUP BY:

7.8.1. Определить количество студентов по группам.

SELECT группа, count(фамилия) AS [количество студентов]

FROM студенты

GROUP BY группа;

7.8.2. Определить количество студентов каждого курса, обучающихся платно.

SELECT курс, count(фамилия) AS [количество студентов]

FROM студенты

WHERE ([Форма] like "вн/б")

GROUP BY курс;

7.8.3. Вычислить средний балл каждого бюджетного студента, вывести также

информацию об его группе и факультете.

SELECT студенты.фамилия, avg(оценка) AS [средний балл], факультет.[название факультета], группа

FROM студенты, успеваемость, факультет, специальности

WHERE факультет.[код факультета]=специальности.[код факультета] And специальности.[код специальности]=студенты.[код специальности] And студенты.фамилия=успеваемость.фамилия And студенты.имя=успеваемость.имя And студенты.отчество=успеваемость.отчество And студенты.Форма="б"

GROUP BY студенты.фамилия, [название факультета], группа;

7.8.4. Вычислить суммы по оплате вне бюджетников по каждому факультету.

SELECT [название факультета], sum(плата) AS [сумма оплаты по факультету]

FROM факультет, студенты, специальности

WHERE факультет.[код факультета]=специальности.[код факультета] And специальности.[код специальности]=студенты.[код специальности]

GROUP BY [название факультета];

Задание 7.9. Запросы с фразой HAVING:

7.9.1. Определить количество платных студентов младших курсов (I и II).

SELECT курс, count(студенты.фамилия) AS [количество внебюджетников]

FROM студенты

WHERE форма like "вн/б"

GROUP BY курс

HAVING курс<"III";

7.9.2. Выбрать бюджетных студентов, чей средний балл выше семи.

SELECT студенты.фамилия, студенты.имя, студенты.отчество, avg(успеваемость.оценка) AS [средний балл]

FROM студенты INNER JOIN успеваемость ON студенты.фамилия=успеваемость.фамилия

WHERE форма="б"

GROUP BY студенты.фамилия, студенты.имя, студенты.отчество

HAVING avg(успеваемость.оценка)>"7";

Задание 7.10. Запросы с подзапросами:

7.10.1. Найти самого взрослого студента.

SELECT Фамилия, [Дата рождения]

FROM Студенты

WHERE ([Дата рождения]=

(SELECT min([Дата рождения])

FROM Студенты));

7.10.2. Вывести информацию о студентах (фамилию, имя, группу), у которых есть тезки

(совпадают имена).

SELECT имя, фамилия, группа

FROM студенты

WHERE имя in

(SELECT top 1 имя

FROM студенты

group by имя

having(count(имя)>1)

order by count(имя));

Задание 7.11. Провести модификацию базы данных – добавить поле Пол (текстовое, размер

3) в таблицу Студенты.

alter table студенты

add Пол text(3) not null

Задание 7.12. Обновить поле Пол соответствующими значениями (муж или жен в

зависимости от значений двух последних символов поля Отчество).

UPDATE студенты SET студенты.пол = IIf(Right([отчество],2)="ич","муж","жен");

Задание 7.13. Проиндексировать таблицу Студенты по полю Пол.

create index индекс_пол

on студенты(пол)

Задание 7.14. Разработать перекрестный запрос, определяющий количество юношей и

девушек в каждой группе.

TRANSFORM count(пол)

SELECT группа

FROM студенты

GROUP BY группа

PIVOT пол;

Задание 7.15. Разработать перекрестный запрос, определяющий количество оценок 2, 3, …

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