Нормальные формы


Использование оператора EXISTS



жүктеу 4,63 Mb.
бет41/72
Дата11.02.2023
өлшемі4,63 Mb.
#41261
түріУчебное пособие
1   ...   37   38   39   40   41   42   43   44   ...   72
Копия Теория баз данных

Использование оператора EXISTS
Логические операторы EXIST и NOT EXIST возвращают значение true или false в зависимости от наличия записей, удовлетворяющих условию поиска. Как правило, оператор EXISTS используется с вложенными запросами. Для иллюстрации принципов его применения можно использовать довольно простой запрос:
SELECT TitleOfCourtesy, FirstName, LastName FROM Employees
WHERE EXISTS (SELECT * FROM Orders WHERE Freight > 1000)
ORDER BY LastName
В подзапросе выбираются строки, значение которых больше 1000. Так как подобные строки существуют, то оператору WHERE передается значение true и выражение SELECT выбирает соответствующие записи.
Можно изменить условие, накладываемое на поле Freight, и использовать вместо оператора EXISTS оператор NOT EXISTS.
SELECT TitleOfCourtesy, FirstName, LastName FROM Employees
WHERE NOT EXISTS (SELECT * FROM Orders WHERE Freight > 2000 )
ORDER BY LastName
Результат выполнения запроса будет аналогичен предыдущему. Нужно разобраться, почему так произошло. Оператор NOT EXISTS вернет значение true только в том случае, если ни одна запись не будет удовлетворять заданному условию. Так как ни одно судно не перевезло больше чем 2 тысячи тонн груза, то ни одна запись не будет выбрана.


Использование объединения UNION


Оператор UNION используется для объединения результатов двух и более запросов в единый набор полей и записей. Когда результаты запросов подвергаются объединению, их столбцы вывода должны быть совместимы. Это означает, что все запросы должны указывать одинаковое число столбцов в одном и том же порядке. И все совпадающие поля должны иметь один и тот же тип.
Это иллюстрируется простым запросом
SELECT CustomerID FROM Customers UNION SELECT CustomerID FROM Orders
В ходе выполнения запроса в результирующую таблицу были включены записи из двух таблиц.
Рассмотрим пример. Необходимо получить список студентов, имеющих оценку 2 по трем предметам. Для этого выполняется следующий запрос:
Select * from uspev As F where ocenca=2 And exists
( Select * from uspev as S where F. kod=S. kod and 3=(Select count (*) from uspev as T where T.ocenca=2 and S. kod=t. kod))
Чтобы получить список читателей – задолженников (задолженниками будем считать тех, кто не сдал книги по прошествии трех месяцев) нужно написать следующий запрос:
Select p1.*, p2.data_v, p3.* From reader p1, uchet p2, book p3 where
(p1.nomer=p2.nomer)And (p2.shifr=p3.shifr) And DATEDIFF(MM, p2.data_v, GetDate()>=3)
Здесь GetDate() – текущая дата в MS SQL Server, DATEDIFF – функция для работы с датами в MS SQL Server, которая вычисляет промежуток между двумя датами, в данном случае число полных месяцев между текущей датой и датой взятия книги.
Контрольные вопросы:

  1. Назовите обязательные составляющие оператора SELECT.

  2. Для всех ли данных в выражении ключевого слова WHERE обязательно нужно использовать кавычки?

  3. К какому разделу SQL относится оператор SELECT?

  4. Можно ли в выражении для ключевого слова WHERE задать несколько условий?

  5. Допустимы ли кавычки для значений числовых полей?

  6. Играет ли роль тип данных при использовании функции COUNT?

  7. Чтобы группировать данные по столбцу, должен ли этот столбец быть указан в списке ключевого слова SELECT?

8. При использовании ключевого слова ORDER BY в операторе SELECT обязательно ли использовать ключевое слово GROUP BY?



жүктеу 4,63 Mb.

Достарыңызбен бөлісу:
1   ...   37   38   39   40   41   42   43   44   ...   72




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау