Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы и банки данных.doc
Скачиваний:
10
Добавлен:
12.11.2019
Размер:
745.98 Кб
Скачать

Тема 6.

1. Запрос выборки в языке sql. Выборка из одной таблицы.

2. Суммирование данных с помощью функций агрегирования (групповых функций).

1. Запрос выборки в языке sql. Выборка из одной таблицы.

Рассмотрим результат выполнения команд SQL на примере БД, состоящей из трех таблиц: преподаватель, студент, оценка.

Преподаватель

Pnum

Pname

Pcaf

001

П-1

К-1

002

П-2

К-1

003

П-3

К-2

Студент

Snum

Sname

Sgrp

Spdp

001

С-1

Г-1

001

002

С-2

Г-2

001

003

С-3

Г-2

002

004

С-4

Г-3

Оценка

opnum

Osnum

odate

ocen

001

001

10/01/01

5

001

002

11/01/01

4

001

003

11/01/01

3

003

001

15/01/01

5

003

003

16/01/01

2

003

003

20/01/01

4

Структура таблицы «Преподаватель»:

  • Pnum – уникальный номер преподавателя

  • Pname – Фамилия

  • Pcaf – кафедра на которой он работает

Структура таблицы «Студент»:

  • Snum – уникальный номер

  • Sname – фамилия

  • Sgrp - группа

  • Spdp – номер преподавателя-руководителя дипломной работы

Структура таблицы «Оценка»:

  • Opnum - номер преподавателя поставившего оценку

  • Osnum - номер студента получившего оценку

  • Odate - дата получения оценки

  • Ocen – оценка

Запрос выборки – ядро SQL, наиболее часто используемое средство этого языка.

Выборка информации из БД осуществляется по следующей команде:

SELECT <список полей>

FROM <список таблиц>

WHERE<спецификация выбора строк>

GROUP BY <спецификация группировки>

HAVING <спецификация выбора групп>

ORDER BY <спецификация сортировки>;

Вся команда должна быть набрана в одной строке. Символ новой строки при анализе команды трактуется системой как пробел. Любой запрос должен заканчиваться точкой с запятой.

Рассмотрим простейшие команды SQL, на примере одной таблицы:

Параметр может задаваться через *, т.е. все поля таблицы, иначе – список полей через запятую. Последовательность имен в списке может быть произвольной и не совпадать с последовательностью имен в таблице.

Пример:

SELECT * FROM Преподаватель; // результат – вся таблица преподаватель

SELECT pcaf FROM Преподаватель; // результат – список кафедр

pcaf

K-1

K-1

K-2

Перед параметром «список полей», может быть задано ключевое слово «ALL/DISTINCT», т.е. показывать или нет повторяющиеся строки таблицы. ALL используется по-умолчанию.

SELECT DISTINCT pcaf FROM Преподаватель; //исключили повторяющиеся строки

pcaf

K-1

K-2

Таким образом оператор SELECT DISTINCT <список полей> FROM <список таблиц> реализует операцию «проекция» реляционной алгебры

Параметр WHERE - определяет условное выражение которому должны удовлетворять строки, включаемые в таблицу результатов.

Выражения могут использовать операции сравнения =, <,>,=<,=>,< >, а так же логические операции AND, OR, NOT.

Пример:

pnum

pname

001

Г-1

002

Г-2

SELECT pnum, pname

FROM преподаватель

WHERE pcaf=”k-1”;

Пример:

SELECT osnum, ocen

FROM оценка

osnum

Ocen

002

4

003

3

003

4

WHERE opnum =”001”

AND ocen >2

AND NOT ocen =5;

Логические выражения могут содержать специальные операторы. К ним относятся: IN, BETWEEN, LIKE, IS NULL.

Оператор IN имеет следующий формат:

Имя_поля IN(значение1, значение 2…)

Пример:

snum

sname

sgrp

Spdp

001

C-1

Г-1

Г-1

004

C-4

Г-3

SELECET * FROM студент

WHERE sgrp IN(“Г-1”,”Г-3”);

Оператор BETWEEN имеет следующий формат:

Имя_поля BETWEEN значение 1 AND значение 2

osnum

odate

Ocen

002

11/01/01

4

003

11/01/01

3

003

17/01/01

4

Пример:

SELECT osnum, odate, ocen

FROM оценка

WHERE ocen BETWEEN 3 AND 4;

Оператор LIKE служит для поиска подстрок в текстовых полях и имеет формат:

Имя_поля LIKE ”Шаблон”

Шаблон представляет собой текстовую строку с возможным использованием метасимволов. В основном используется * - множественная произвольная последовательность знаков.

Пример:

snum

sname

sgrp

spdp

004

C-4

Г-3

SELECT * FROM студент

WHERE sgrp LIKE (“*3”);

Поля таблицы могут содержать значения NULL – значение «не задано». Такие поля не равны не каким другим, в том числе NULL-значениям.

Результатом сравнения NULL-значения с другим значением есть неизвестность.

Обычные операции сравнения не могут быть использованы для сравнения со значением NULL и в таком случае, должен быть использован оператор IS NULL, в формате:

Имя_поля IS NULL;

snum

sname

sgrp

spdp

004

C-4

Г-3

Пример:

SELECT*FROM студент

WHERE spdp IS NULL;

Некоторые системы, в том числе Microsoft Acess, логическое выражение имя_поля=NULL, автоматически преобразует в имя_поля IS NULL;