Практическая работа 1. 2 Описание проектирования базы данных 2 практическая работа 2 10
Скачать 2.52 Mb.
|
Использование отрицания Так как предикат BETWEEN возвращает истинностное значение, к нему можно применить логическое отрицание. Для этого следует воспользоваться нотацией NOT BETWEEN, в которой предикат будет истинным, только если значение столбца не входит в указанный диапазон. Представление отрицания нотацией NOT BETWEEN введено в язык для большей наглядности, так как с предикатом BETWEEN можно стандартным образом использовать логический оператор NOT (то есть ставить отрицание ко всему выражению, а не к предикату): NOT (имя_столбца BETWEEN минимум AND максимум) Круглые скобки в данном случае можно и опустить, так как они не меняют порядка исполнения операторов. В нотации NOT BETWEEN крайние значения в диапазон не включаются. Запрос 20. Вывести названия и номер корпуса кафедр, которые не расположены в корпусах 1 и 3. SELECT Name_Kafedru, NUM_KORPUSA FROM KAFEDRA WHERE NUM_KORPUSA NOT BETWEEN ‘1’ AND '3'; SELECT Name_Kafedru, NUM_KORPUSA FROM KAFEDRA WHERE NOT (NUM_KORPUSA BETWEEN ‘1’ AND '3'); Использование выражений над столбцами Как и в предикате IN, вместо имени столбца и границ диапазона можно использовать любое допустимое в языке выражение над столбцами таблицы, включая и функции. Запрос 21. Показать фамилии преподавателей, принятых на работу между 01.01.2000 и 12.12.2001. SELECT NAME_TEACHER, DATA_HIRE FROM TEACHER WHERE DATA_HIRE BETWEEN ‘01/01/2000’ AND '12/12/2001'; Запрос 22. Вывести данные преподавателей, зарплата которых (ставка + надбавка) находится в диапазоне от удвоенной величины надбавки до утроенной надбавки плюс 50. SELECT NAME_TEACHER, Salary + Rise, 2 * Rise, 3 * Rise + 50 FROM TEACHER WHERE Salary + Rise BETWEEN 2 * Rise AND 3 * Rise + 50; Проверка на соответствие шаблону Когда необходимо отобрать строки таблицы, в которых значение некоторого столбца совпадает с заданной строкой символов, следует использовать обычное сравнение, как это показано выше. Однако во многих случаях можно не знать точное представление в базе данных интересующего значения. Название одной и той же кафедры, например, может храниться в одном из следующих вариантов: ‘базы данных’, ‘организация баз данных’, ‘информационные системы и базы данных’, ‘базы данных и знаний’. Такая же ситуация возникает, когда не известно точное написание фамилии преподавателя, название дисциплины, факультета и т. п. Специально для таких случаев предназначен оператор сравнения LIKE, позволяющий отобрать из таблицы строки на основе частичного соответствия. Упрощенный синтаксис оператора следующий: имя_столбца [NOT] LIKE шаблон [ESCAPE символ_пропуска] Его можно использовать только с символьными значениями. Использование шаблона Оператор LIKE сравнивает значение столбца с множеством значений, определяемых шаблоном. Он представляет собой строку, в которой помимо обычных символов, составляющих основу поискового выражения, можно использовать так называемые подстановочные символы (иногда они называются групповыми символами). Имеется всего два подстановочных символа, различающихся тем, что именно на их месте может стоять: — любая последовательность символов, включая их отсутствие; _ — один любой символ. Подстановочные символы могут находиться в любом месте шаблона в любом наборе. Например, шаблону '%Иван%' соответствуют строки 'Иван', 'Иванов', 'Иванченко', 'Петр Иванович', а шаблону 'л_с_' - 'лист', 'леса', 'лоск' (ноне 'лес', 'листок', 'плес'). Оператор LIKE, как и все другие, работающие с символьными строками, чувствителен к регистру букв, поэтому при его использовании мы рекомендуем использовать уже известные вам функции UPPER() и L0WER(). Запрос 23. Найти фамилии преподавателей на букву ‘М’. SELECT NAME_TEACHER FROM TEACHER WHERE UPPER(NAME_TEACHER) LIKE 'М%'; Имейте в виду, что если вы запишете условие фразы WHERE как UPPER(NAME_TEACHER) = 'М%' или даже как 'М%' LIKE UPPER(NAME_TEACHER), фамилии преподавателей будут сравниваться со строкой ' М%'. Во втором случае выражение является синтаксически правильным оператором LIKE, однако в нем строка 'М%' не выступает в качестве шаблона, так как расположена перед ключевым словом LIKE. Запрос 24. Указать преподавателей, в фамилиях которых первой буквой является ‘М’, а четвертой – ‘ы’. SELECT NAME_TEACHER FROM TEACHER WHERE NAME_TEACHER LIKE 'М__ ы%’; Запрос 25. Вывести названия кафедр, в которых присутствует словосочетание ‘анализ’ (в различных грамматических формах). SELECT Name_Kafedru FROM KAFEDRA WHERE LOWER(Name_Kafedru) LIKE '%анализ%'; В левой части оператора LIKE может находиться не только имя столбца, но и любое допустимое над столбцами выражение, как это показано в следующем примере. Запрос 26. Указать преподавателей, в фамилию и название должности которых входит в сумме не меньше пяти букв ‘о’. SELECT NAME_TEACHER, DOLGNOST FROM TEACHER WHERE LOWER(NAME_TEACHE+DOLGNOST) LIKE '%o%o%o%o%o%'; Проверка на неопределенное значение Как мы уже отмечали, наличие значения NULL во фразе WHERE приводит к тому, что условие принимает истинностное значение UNKNOWN и соответствующая строка не включается в результат. Детальное описание работы с неопределенным значением вы можете найти в уроке 10, а здесь мы покажем, как обрабатывать значение NULL во фразе WHERE. Чтобы проверить столбец на неопределенное значение, следует применить унарный оператор IS NULL, имеющий такой синтаксис: имя_столбца IS [NOT] NULL Этот оператор принимает истинностное значение TRUE, если столбец имеет неопределенное значение, и FALSE — в противном случае. В нотации IS NOT NULL его действие обратное. Запрос 27. Вывести фамилии преподавателей, у которых не задан номер телефона или идентификационный код. SELECT NAME_TEACHER, INDEF_KOD, TEL_TEACHER FROM TEACHER WHERE INDEF_KOD IS NULL OR TEL_TEACHER IS NULL; Задание для практической работы №5 Для созданной базы данных самостоятельно создать на языке Transact-SQL 15 запросов с отбором строк по условию: 3 простейших запроса с использованием операторов сравнения; 3 запроса с использованием логических операторов AND, OR и NOT; 1 запрос на использование комбинации логических операторов; 1 запрос на использование выражений над столбцами; 2 запроса с проверкой на принадлежность множеству; 2 запроса с проверкой на принадлежность диапазону значений; 2 запроса с проверкой на соответствие шаблону; 1 запрос с проверкой на неопределенное значение. Все программные инструкции команд SQL сохранять в файлах с расширением *.sql в папке ФИО_студента/пр5. Для каждого запроса сформулировать текстовое задание, которое должно быть выполнено к базе данных. Создать текстовый отчет, в котором отобразить sql-команды разработанных запросов и скриншоты результатов работы из СУБД SQL Server Management Studio. |