КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лабораторная работа №2. Запросы с условиями
Теоретическая часть. Язык SQL дает возможность задать критерий определения строк, которые следует включить в состав выходного НД. Предложение WHERE команды SELECT позволяет определить предикат — условие, которое может быть истинным, либо ложным для каждой строки таблицы. Команда извлекает только те строки из таблицы, для которых предикат имеет значение «истина». Например, запрос (6) извлекает все записи таблицы, для которых значение колонки «КОЛОНКА1» больше двух. Также необязательно, чтобы столбец, используемый в предложении WHERE, был представлен в предложении SELECT. SELECT КОЛОНКА1 FROM ТАБЛИЦА WHERE КОЛОНКА1 > 2; (6). Реляционный оператор — это математический символ, который задает определенный тип сравнения между двумя значениями. Допустимые реляционные операторы перечислены в табл. 2. Таблица 2 Реляционные операторы
Условие описывается следующим образом: [Столбец] [оператор сравнения] [значение с которым идет сравнение]. Символьные значения в запросах указываются в одинарных кавычках. При сравнении символьных значений учитывается регистр, поэтому, если в таблице имеются значения «МОСКВА», а при написании условия запроса использовалось значение «Москва», то такой запрос вернет пустой НД. Решить данную проблему можно с помощью функции UPPER, которая приводит аргумент в скобках к верхнему регистру. В качестве аргумента можно передавать не только константы, но и колонки таблицы БД. Выполните самостоятельно в программе следующие запросы: 1. SELECT JOB_TITLE, MAX_SALARY FROM JOBS WHERE MAX_SALARY > 10000 ORDER BY 1; 2. SELECT COUNTRY_NAME FROM COUNTRIES WHERE UPPER(COUNTRY_ID) = 'IT'; 3. SELECT REGION_NAME FROM REGIONS WHERE UPPER(REGION_NAME) <> 'ASIA' ORDER BY REGION_NAME DESC; В запросе могут фигурировать одновременно несколько условий, каждое из которых имеет собственное значение «истина/ложь». Чтобы получить общее значение всех условий применяют булевы операторы. К ним относят операторы AND, OR и NOT. Оператор AND берет два булевых выражения в качестве аргументов и дает в результате истину, если оба выражения истинны. Оператор OR берет два булевых выражения в качестве аргументов и дает в результате истину, если хотя бы один из аргументов истинен. Оператор NOT берет одно булево выражение в качестве аргумента и изменяет его значение на противоположное (с истинного на ложное и с ложного на истинное). Выполните самостоятельно в программе следующие запросы: 1. SELECT JOB_TITLE, MAX_SALARY FROM JOBS WHERE (MAX_SALARY > 10000) AND (MAX_SALARY < 20000) ORDER BY 1 2. SELECT COUNTRY_NAME FROM COUNTRIES WHERE (UPPER(COUNTRY_ID) = 'IT') OR (UPPER(COUNTRY_ID) = 'FR') ORDER BY 1 ASC; 3. SELECT REGION_NAME FROM REGIONS WHERE NOT (UPPER(REGION_NAME) <> 'ASIA') ORDER BY REGION_NAME DESC; Оператор IN полностью определяет множество, которому сравниваемое значение может принадлежать или не принадлежать. Элементы множества перечисляются в круглых скобках после оператор IN и разделяются запятыми. Если сравниваемое значение равно одному из элементов множества, то такой предикат считается истинным. Выполните самостоятельно в программе следующие запросы: 1. SELECT COUNTRY_NAME FROM COUNTRIES WHERE UPPER(COUNTRY_ID) IN ('IT','FR','JP') ORDER BY 1 ASC; 2. SELECT REGION_NAME FROM REGIONS WHERE NOT (UPPER(REGION_NAME) IN ('ASIA','EUROPE')) ORDER BY REGION_NAME DESC;
Оператор BETWEEN используется для получений, которые попадают в указанный интервал. В отличие от оператора IN, который задает фиксированное множество значений, оператор BETWEEN задает границы интервала, в которые должны попадать значения, чтобы предикат был истинным. При этом граничные значения входят в проверяемое множество. При написании условия после оператора BETWEEN следует начальное значение интервала, пробел, ключевое слово AND, пробел и конечное значение интервала. Оператор BETWEEN так же может применяться и с символьными полями, при этом рассматривается только первый символ строки. Если сравниваются строки неравной длины, то значения дополняются пробелами. Выполните самостоятельно в программе следующие запросы: 1. SELECT JOB_TITLE, MAX_SALARY FROM JOBS WHERE MAX_SALARY BETWEEN 10000 AND 20000 ORDER BY 1; 2. SELECT REGION_NAME FROM REGIONS WHERE UPPER(REGION_NAME) BETWEEN 'A' AND 'F' ORDER BY 1 DESC;
Оператор LIKE используется для поиска подстрок в полях символьного типа (CHAR, VARCHAR, VARCHAR2). Этот оператор осуществляет просмотр строки для выяснения: входит ли заданная подстрока (шаблон) в указанное поле. Для создания шаблона оператора LIKE применяются два типа групповых символов: • символ подчеркивания («_») заменяет любой одиночный символ. Например, шаблон «к_т» будет соответствовать таким словам, как «кит», «кот», но не будет соответствовать слову «кнут»; • символ процент («%») заменят последовательность символов произвольной длины, в том числе и нулевой. Например, шаблон «%к%т» будет соответствовать таким словам, как «капот», «апперкот», «кабинет», но не будет соответствовать слову «ракета».
Выполните самостоятельно в программе следующие запросы: 1. SELECT JOB_TITLE, MAX_SALARY FROM JOBS WHERE (MAX_SALARY > 10000) AND (MAX_SALARY < 20000) AND (UPPER(JOB_TITLE) LIKE 'PU%') ORDER BY 1; 2. SELECT REGION_NAME FROM REGIONS WHERE (UPPER(REGION_NAME) LIKE 'A%') OR (UPPER(REGION_NAME) LIKE '_UROPE') ORDER BY REGION_NAME;
Задания для самостоятельной работы: 1. Напишите запрос, который бы вывел все колонки таблицы COUNTRIES, отсортировав данные по колонке COUNTRY_NAME. Условие: колонка COUNTRY_NAME должна включать любой из символов (‘n’,’m’, ’k’) в любом месте значения поля. 2. Получить все колонки таблицы JOBS, у которых JOB_TITLE включает слово ‘Clerk’ и MIN_SALARY больше или равна 10000, но MAX_SALARY должна быть не больше 20000. Отсортировать данные по колонке MIN_SALARY по убыванию. 3. Получить все колонки таблицы DEPARTMENTS, у которых поле LOCATION_ID лежит в диапазоне от 1500 до 2000, MANAGER_ID больше 108. Отсортируйте данные по колонке DEPARTMENT_ID в порядке возрастания. 4. Получите колонку REGION_NAME таблицы REGIONS, значения которых начинаются на символы ‘E’,’M’, но не содержат символа ‘d’. 5. Получите колонки COUNTRY_ID, CITY таблицы LOCATIONS, у которых COUNTRY_ID равно ‘US’ и CITY начинается со слова ‘South’ или COUNTRY_ID равно ‘UK’ и CITY содержит слово ‘ford’. 6. Получите колонки DEPARTMENT_ID, FIRST_NAME таблицы EMPLOYEES, у которых DEPARTMENT_ID меньше 100, но не равен 20, SALARY лежит в диапазонах 2000..4000 или 6000..12000, а также имя (FIRST_NAME) не содержит символ ‘n’. Отсортируйте по колонке FIRST_NAME. 7. Получите колонки EMPLOYEE_ID, JOB_ID, DEPARTMENT_ID таблицы JOB_HISTORY, у которых DEPARTMENT_ID не равен 110, 50 и 90, EMPLOYEE_ID больше либо равен 100. Отсортируйте по второй колонке по возрастанию, по третьей колонке по убыванию. 8. Получить все колонки таблицы JOBS, у которых (MIN_SALARY меньше 10000 и MAX_SALARY больше 10000) или JOB_TITLE содержит слово ‘MANAGER’ или поле JOB_ID равно ‘AC_ACCOUNT’. Отсортируйте данные по полю JOB_TITLE. 9. Получите все колонки таблицы COUNTRIES, у которых (поле COUNTRY_ID начинается на ‘D’ и REGION_ID равен 1) либо (поле COUNTRY_ID начинается на ‘F’ и REGION_ID равен 1) либо (поле COUNTRY_ID начинается на ‘A’ и REGION_ID равен 2). Отсортируйте НД по полю COUNTRY_ID. 10. Получите все колонки таблицы DEPARTMENTS, у которой ((поле DEPARTMENT_NAME содержит слово ‘IT’ и поле LOCATION_ID не равен 1700) либо (DEPARTMENT_ID меньше либо равен 200)) и поле DEPARTMENT_NAME не равно ‘Sales. Отсортируйте НД по полю DEPARTMENT_ID в порядке возрастания.
Дата добавления: 2015-05-09; Просмотров: 422; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |