Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
Оцінювання кредитоспроможності клієнтаДата добавления: 2014-12-06; просмотров: 664
Если в данном кортеже (в данной строке) указанный атрибут имеет неопределенное значение, то предикат IS NULL принимает значение «Истина» ( TRUE ), а предикат IS NOT NULL — «Ложь» ( FALSE ), в противном случае предикат IS NULL принимает значение «Ложь», а предикат IS NOT 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=(Группы, Дисциплина >
Приведем несколько примеров использования оператора 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 Результат :
Операции в условиях для отбора данных 5. 4. 1 Операции в SQL. Операции представляются зарезервированными словами или символами. В SQL операции используются в основном в выражениях ключевого слова WHERE, где они задают сравнения и арифметические операции. Знаки операций в операторах SQL используются для задания условий и связывания нескольких условий между собой. В ходе этого урока мы обсудим следующие типы операций. • Операции сравнения Операции сравнения Операции сравнения используются в операторах SQL для сравнивания отдельных значений и представляются знаками =, о, < и >. Эти операции предназначены соответственно для проверки равенства и неравенства значений, проверки выполнения отношений "меньше" и "больше" между ними. Суть операций сравнения раскрывается в следующих разделах.
Равенство Операция проверки равенства в операторе SQL выясняет равенство одного значения другому. Для этого используется знак равенства (=). При выяснении равенства сравниваемые значения должны совпадать в точности, иначе запрос к базе данных не вернет никаких данных. Если сравниваемые значения равны, соответствующее выражение получает значение TRUE (Истина), иначе — FALSE (Ложь). Это логическое значение (TRUE/FALSE) используется системой для того, чтобы выяснить, должны ли соответствующие данные включаться в ответ запроса. Операция = может использоваться отдельно или в комбинации с другими операциями. Вот пример, раскрывающий смысл операции проверки равенства. Пример________________________________Значение______ WHERE SALARY = '20000' Зарплата равна 20000 Следующий запрос возвращает все строки данных с PROD_ID равным 2345. Ввод: SELECT * FROM PRODUCTSJTBL WHERE PROD_ID = '2345'; Вывод: PROD_ID PROD_DESC COST 2345 ПОЛОЧКА ИЗ ДУБА 59.99 1 строка выбрана. Неравенство В противоположность равенству существует неравенство. В SQL для представления проверки неравенства используется знак о (комбинация знаков "меньше" и "больше"). В этом случае условие возвращает TRUE, если обнаруживается неравенство значений, и FALSE — если равенство. Во многих из основных реализаций SQL эквивалентом знака операции о является комбинация ' = Уточните в документации, является ли эта комбинация применимой в вашем конкретном случае. Пример________________________________Значение________ WHERE SALARY <>'20000' Зарплата не равна 20000 Ввод: SELECT * FROM PRODUCTS_TBL WHERE PROD_ID <> '2345'; Вывод: PROD_ID PROD_DESC COST 11235 КОСТЮМ ВЕДЬМЫ 29.99 222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75 13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1 90 ФОНАРИ 14.5 15 КОСТЮМЫ В АССОРТИМЕНТЕ 10 9 СЛАДКАЯ КУКУРУЗА 1.35 6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45 87 ПЛАСТИКОВЫЕ ПАУКИ 1.05 119 МАСКИ В АССОРТИМЕНТЕ 4.95 1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95 10 строк выбраны. „Меньше" и „больше" Знаки < ("меньше") и > ("больше") можно использовать по отдельности, и в комбинации с другими операциями.
|