Базы данных - модели, разработка, реализация



         

Оператор выбора SELECT - часть 6


/p>

79

ФИО Дисциплина
Крылова Т. С. Теория информации
Владимиров В. А. Теория информации
Петров Ф. И. Английский язык
Сидоров К. А. Английский язык
Миронов А. В. Английский язык
Степанова К. Е. Английский язык
Крылова Т. С. Английский язык
Владимиров В. А. Английский язык
Трофимов П. А. Сети и телекоммуникации
Иванова Е. А. Сети и телекоммуникации
Уткина Н. В. Сети и телекоммуникации
Трофимов П. А. Английский язык
Иванова Е. А. Английский язык
Уткина Н. В. Английский язык

Вывести список лентяев, имеющих несколько двоек.

  • SELECT DISTINCT Rl.ФИО
  • FROM Rl a. Rl b
  • WHERE a.ФИО = b.ФИО AND
  • a.Дисциплина <> b.Дисциплина AND
  • а.Оценка
  • Здесь мы использовали псевдонимы для именования отношения R1 а и b, так как для записи условий поиска нам необходимо работать сразу с двумя экземплярами данного отношения.

    Результат:

    ФИО
    Степанова К. Е.

    Из этих примеров хорошо видно, что логика работы оператора выбора (декартово произведение - селекция - проекция) не совпадает с порядком описания в нем данных (сначала список полей для проекции, потом список таблиц для декартова произведения, потом условие соединения). Дело в том, что SQL изначально разрабатывался для применения конечными пользователями, и его стремились сделать возможно ближе к языку естественному, а не к языку алгоритмическому. По этой причине SQL на первых порах вызывает путаницу и раздражение у начинающих его изучать профессиональных программистов, которые привыкли разговаривать с машиной именно на алгоритмических языках.

    80

    Наличие неопределенных (Null) значений повышает гибкость обработки информации, хранящейся в БД. В наших примерах мы можем предположить ситуацию, когда студент пришел на экзамен, но не сдавал его по некоторой причине, в этом случае оценка по некоторой дисциплине для данного студента имеет неопределенное значение. В данной ситуации можно поставить вопрос: "Найти студентов, пришедших на экзамен, но не сдававших его с указанием названия дисциплины".Оператор SELECT будет выглядеть следующим образом:

  • SELECT ФИО, Дисциплина
  • FROM R1
  • WHERE Оценка IS NULL
  • Результат:

    ФИО Дисциплина
    Миронов А. В. Теория информации

    81

    74 :: 75 :: 76 :: 77 :: 78 :: 79 :: 80 :: 81 :: Содержание




    Содержание  Назад  Вперед