2. Написать запрос, выбирающий данные о фамилиях студентов, имеющих по предмету с идентификатором 2 балл ниже общего среднего балла.
SELECT DISTINCT S_fam
FROM Students, Examination
WHERE E_mark<(SELECT AVG(E_mark)
FROM Examination)
AND S_code=E_student AND E_predm=2
3. Написать запрос, выполняющий вывод количества предметов, по которым экзаменовался каждый студент, сдававший более 2-х предметов.
SELECT E_student, COUNT(E_predm)
FROM Examination
GROUP BY E_student
HAVING COUNT (E_predm)>2
- предложение HAVING указывает только поля или выражения, которые на выходе имеют единственное значение для каждой выводимой группы.
!!! Предложение HAVING определяет критерий, по которому группы следует включать в выходные данные, по аналогии с предложением WHERE, которое осуществляет это для отдельных строк!!!
4. Написать запрос, который выполняет вывод а) среднего, б) минимального, в) максимального баллов всех студентов для каждой даты сдачи экзаменов и который представляет результаты в порядке убывания этих значений.
a).
SELECT AVG(E_mark),E_date
FROM Examination
GROUP BY E_date
ORDER BY 1 DESC
b).
SELECT MIN(E_mark),E_date
FROM Examination
GROUP BY E_date
ORDER BY 1 DESC
c).
SELECT MAX(E_mark),E_date
FROM Examination
GROUP BY E_date
ORDER BY 1 DESC
p
Модификация записей заключается в вставке в набор данных новых записей, редактировании записей или удалении записей. При реляционном способе доступа к БД операции модификации выполняются не над одиночными записями, а над группами записей. Группа записей может состоять и из одной записи.
Вставка записей выполняется с помощью оператора INSERT. Оператор позволяет добавить к таблицам одну или несколько записей.
При добавлении одной записи оператор INSERT имеет формат:
INSERT INTO <имя таблицы>
(<список полей>)
VALUES (<список значений>);
К указанной в операторе таблице, добавляется одна запись. При этом заполняются поля, перечисленные в списке полей, значениями, которые берутся из списка значений. Списки полей и списки значений должны соответствовать друг другу по числу элементов и по типу. Порядок полей и значений может отличаться от фактического порядка полей в таблице. В списке перечисляются только те поля, значения которых известны. Для пропущенных полей значения берутся по умолчанию (если значения по умолчанию заданы) или поля остаются пустыми.
Например, добавление записи в таблицу Doljn:
1) INSERT INTO Doljn
(D_Nazv, D_Stavka)
VALUES ("слесарь",2500);
2) INSERT INTO Doljn
(D_Nazv)
VALUES (‘сторож’);
При добавлении к таблице сразу нескольких записей оператор INSERT имеет формат:
INSERT INTO <имя таблицы>
(<список полей>) <оператор Select>;
Этот оператор может выбирать записи из какой-то другой таблицы и вставлять их в данную таблицу.