История развития баз данных. Основные понятия и определения. Архитектура базы данных. Физическая и логическая независимость, страница 13

FROM оценка

GROUP BY osnum;

HAVING AVG (ocen) >= 4;

Результат:

osnum

AVG (ocen)

001

5

002

4

Тема 7.

Вопросы темы:

1. Форматирование выходных данных запросов.

2. Соединение таблиц.

3. Вложенные подзапросы.

4. Связанные подзапросы. Оператор EXISTS.

5. Вложенные и связанные подзапросы. Операторы ANY, ALL, SOME

1. Форматирование выходных данных запросов.

Во многих СУБД, которые используют SQL, имеются специальные средства, позволяющие оформить результат запросов. Эти средства позволяют получить пользователю нечто больше, чем значения полей и функций агрегирования. В предложении SELECT наряду с именами полей могут указываться константы и выражения над полями. Например:

SELECTosnum, «Недобрано баллов = »,

5 – ocenFROM оценка;

Результат:

osnum

AVG (ocen)

001

Недобрано баллов =

0

002

----//----

1

003

----//----

2

По стандарту SQL столбцы с константами и выражениями не имеют имени. MS ACCESS позволяет поименовать эти столбцы с помощью ключевого слова AS имя_столбца. Для нашего примера:

SELECTosnum, «Недобрано баллов = »,

5 – ocenAS «Баллы до 5»;

Результат:

osnum

AVG (ocen)

001

Недобрано баллов =

0

002

----//----

1

003

----//----

2

Результаты выполнения запроса могут быть упорядочены по значению одного или нескольких столбцов путём указания предложения ORDERBY поле [ASC/DESC], … [ASC/DESC], где ASCсортировка по возрастанию, DESCсортировка по убыванию.

Пример:

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

SELECT osnum, odate, ocen

FROM оценка

ORDER BY osnum, ocen DESC;

Результат:

osnum

odate

ocen

001

10/01/01

5

001

15/01/01

5

002

11/01/01

4

003

17/01/01

4

003

11/01/01

3

003

16/01/01

2

Предложение ORDERBY может совместно использоваться с GROUPBY, при этом, операция сортировки всегда реализуется по концу выполнения запроса, над уже построенной таблицей.

Пример:

SELECT osnum, AVG (ocen)

FROM оценка

GROUP BY osnum

ORDER BY osnum;

Результат:

osnum

AVG (ocen)

001

5

002

4

003

3

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

SELECT osnum, AVG (ocen)

FROM оценка

GROUP BY osnum

ORDER BY AVG (ocen);

Результат:

osnum

AVG (ocen)

003

3

002

4

001

5

По стандарту SQL такой запрос является ошибочным, но многие системы, в том числе и MS ACCESS, его воспринимают и отрабатывают. По стандарту SQL в предложении ORDERBY необходимо указывать не имя столбца, а его номер:

SELECT osnum, AVG (ocen)

FROM оценка

GROUP BY osnum

ORDERBY 2;

Номер столбца можно указывать и для столбца с именем, но нужно помнить, что номер столбца – это всегда номер столбца в запросе, а не в таблице, по которой строится запрос. Если в поле, которое используется для упорядочения данных, существует NULL-значения, т.е. значения не заданы, то они всегда располагаются в начале или в конце таблицы. Конкретный вариант стандартом не оговаривается, и вопрос решается индивидуально для каждой СУБД.