Студопедия — lt; имя атрибута >IS NULL и < имя атрибута > IS NOT NULL
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

lt; имя атрибута >IS NULL и < имя атрибута > IS NOT NULL

lt; имя атрибута >IS NULL и < имя атрибута > IS NOT NULL.

Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение «Истина» (TRUE), а предикат IS NOT NULL — «Ложь» (FALSE), в противном случае предикат IS NULL принимает значение «Ложь», а предикат IS NOT NULL принимает значение «Истина».

Введение Null -значений вызвало необходимость модификации классической дву­значной логики и превращения ее в трехзначную. Все логические операции, производимые с неопределенными значениями, подчиняются этой логике в соот­ ветствии с заданной таблицей истинности:

 

А В Not A AAB A V В
TRUE TRUE FALSE TRUE TRUE
TRUE FALSE FALSE FALSE TRUE
TRUE Null FALSE Null TRUE
FALSE TRUE TRUE FALSE TRUE
FALSE FALSE TRUE FALSE FALSE
FALSE Null TRUE FALSE Null
Null TRUE Null Null TRUE
Null FALSE Null FALSE Null
Null Null Null Null Null
Q Предикаты существования EXIST и несуществования NOT EXIST. Эти предикаты относятся к встроенным подзапросам, и подробнее мы рассмотрим их, когда коснемся вложенных подзапросов.

В условиях поиска могут быть использованы все рассмотренные ранее предикаты.

Отложив на время знакомство с группировкой, рассмотрим детально первые три строки оператора SELECT:

· SELECT — ключевое слово, которое сообщает СУБД, что эта команда — запрос. Все запросы начинаются этим словом с доследующим пробелом, За ним может следовать способ выборки — с удалением дубликатов (DISTINCT) или без удаления (ALL, подразумевается по умолчанию). Затем следует список перечисленных через запятую столбцов, которые выбираются запросом из таблиц, или символ '*' (звездочка) для выбора всей строки. Любые столбцы, не перечисленные здесь, не будут включены в результирующее отношение, соответствующее выполнению команды. Это, конечно, не значит, что они будут удалены или их информация будет стерта из таблиц, потому что запрос не воздействует на информацию в, таблицах — он только показывает данные.

· FROM — ключевое слово, подобно SELECT, которое должно быть представлено в каждом запросе. Оно сопровождается пробелом и затем именами таблиц, используемых в качестве источника информации. В случае если указано более одного имени таблицы, неявно подразумевается, что над перечисленными таблицами осуществляется операция декартова произведения. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса (вложенные подзапросы здесь не рассматриваются).

 

Все последующие разделы оператора SELECT являются необязательными.

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

SELECT * FROM Rl,. R 2

соответствует декартову произведению таблиц R 1 и R 2. Выражение

SELECT Rl.A. R2.B FROM Rl. R 2

соответствует проекции декартова произведения двух таблиц на два столбца А из таблицы R 1 и В из таблицы R 2, при этом дубликаты всех строк сохранены, в отличие от операции проектирования в реляционной алгебре, где при проектиро­ вании по умолчанию все дубликаты кортежей уничтожаются.

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

Рассмотрим базу данных, которая моделирует сдачу сессии в некотором учебном заведении. Пусть она состоит из трех отношений R 1, R 2, R3- Будем считать, что они представлены таблицами R1, R 2 и R 3 соответственно.

 

R1=- (ФИО, Дисциплина, Оценка); R 2 = (ФИО, Группа);

R3=(Группы, Дисциплина >

 

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

R2
ФИО Группа
Петров Ф. И.  
Сидоров К. А.  
Миронов А. В.  
Крылова Т. С.  
Владимиров В. А.  
Трофимов П. А.  
Иванова Е. А.  
Уткина Н. В.  
 

R3
Группа Дисциплина
  Базы данных
  Теория информации
  Английский язык
  Английский язык
  Сети и телекоммуникации
Приведем несколько примеров использования оператора SELECT.

· Вывести список всех групп (без повторений), где должны пройти экзамены.

SELECT DISTINCT Группы FROM R3

Результат:

Группа
 
 
· Вывести список студентов, которые сдали экзамен по дисциплине «Базы данных» на «отлично».

SELECT ФИО

FROM R 1

WHERE Дисциплина = " Базы данных " AND Оценка = 5

Результат:

ФИО
Петров Ф. И.
Крылова Т. С.
 

· Вывести список всех студентов, которым надо сдавать экзамены с указанием названий дисциплин, по которым должны проводиться эти экзамены.

SELECT ФИО, Дисциплина

FROM R2.R3

WHERE R2.Группа =R 2.Группа:

Здесь часть WHERE задает условия соединения отношений R 2 и R 3, при отсутствии условий соединения в части WHERE результат будет эквивалентен расширенному декартову произведению, и в этом случае каждому студенту были бы приписаны все дисциплины из отношения R 3, а не те, которые должна сдавать его группа.

Результат:

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

SELECT DISTINCT R1.ФИО

FROM R1 a. R2 b:

WHERE a. ФИО =- Ь.ФИО AND

a. Дисциплина <> b. Дисциплина AND

а.Оценка <= 2 AND b.Оценка <- 2;

Здесь мы использовали псевдонимы для именования отношения R 1 а и Ь, так как для записи условий поиска нам необходимо работать сразу с двумя экзем­плярами данного отношения.

Результат:

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

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

SELECT ФИО. Дисциплина

FROM R 1

WHERE Оценка IS NULL

Результат:

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




<== предыдущая лекция | следующая лекция ==>
По назначению и сфере примененияосновные средства делятся на производственные и непроизводственные | Операции в условиях для отбора данных

Дата добавления: 2015-03-11; просмотров: 386. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

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

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия