sql лекц 43 стр 1. Подготовка к изучению. Программы для работы
Скачать 0.66 Mb.
|
Сокращение запросов с помощью псевдонимовИзучаемые нами запросы становятся всё более громоздкими. Нам приходится по несколько раз включать в запрос названия таблиц, которые могут быть достаточно длинными. Это не очень удобно и увеличивает вероятность опечатки при вводе запроса. В SQL есть способ сократить длинные запросы с помощью так называемых псевдо- нимов. Псевдоним таблицы представляет собой короткую замену названию таблицы, которая может использоваться в пределах запроса в полных именах полей. Например, наш предыдущий запрос можно записать таким образом: select Category, Tasklist, Task, Description from Categories c, Tasks t, Tasklists tl where t.Tasklist_ID=tl.Tasklist_ID and tl.Category_ID=c.Category_ID Для каждой таблицы в этом запросе определён псевдоним. Псевдоним указывается сразу после настоящего имени таблицы в конструкции FROM: from Categories c, Tasks t, Tasklists tl В нашем примере псевдонимы использовались для сокращения текста запроса в условиях отбора после ключевого слова WHERE. Но их точно так же можно исполь- зовать и до ключевого слова FROM в полных именах полей, например: select tl.Category_ID, Tasklist from Categories c, Tasklists tl where tl.Category_ID=c.Category_ID ПрактикаДля выполнения задания скачайте учебную базу данных «Учёт расходов», запустите программу SQLite Database Browser и откройте скачанную базу данных. Ссылка на тест этого задания в курсе «SQL для непрограммистов»: Запросы к нескольким таблицам — тест Составьте запрос, выбирающий из таблиц Goods и Goods_Spending и возвраща- ющий перечень названий отслеживаемых товаров и всех потраченных на них сумм. Составьте запрос к таблицам Categories и Spendings, который возвращает на- звание категории покупки, название магазина и потраченную сумму для всех покупок, относящихся к категории с номером4. Составьте запрос к таблицам Goods и Goods_Spendings, возвращающий на- именование товара и количество купленных единиц по всем покупкам длято- вара«Пиво». Доработайте предыдущий запрос, добавив к результатам дату покупки из та- блицы Spendings. Таким образом, ваш запрос должен обращаться к трём табли- цам и возвращать наименование товара, количество купленных единиц и дату каждой покупки для товара«Пиво». Составьте запрос, обращающийся ко всем четырём таблицам (Categories, Spendings, Goods, Goods_Spendings), возвращающий следующуюинформацию обо всех покупках отслеживаемых товаров: название категории, название то- вара, название магазина и датупокупки. Условия отбораОператоры сравненияВ рассмотренных примерах мы до сих пор использовали в качестве условий отбора записей только выражения, содержащие знак равенства, например: Tasklists.Tasklist='Ремонт в ванной' Это выражение можно словами описать таким образом: «значение поля Tasklist та- блицы Tasklists совпадает со строкой 'Ремонт в ванной'». Проверка на совпадение значений — это, конечно, не единственное допустимое вы- ражение в условиях отбора. SQL позволяет использовать в условиях разнообразные операторы сравнения. К числу самых распространённых относятся следующие: = — уже знакомый нам оператор сравнения на совпадение или равенство; <> или != — оператор сравнения на несовпадение или неравенство. Результат сравнения противоположен результату условия с оператором = Например, следующий запрос выберет из таблицы Tasklists названия всех списков задач, кроме списка с номером 1: select Tasklist from Tasklists where Tasklist_ID<>1 < , > , <= , >= - меньше, больше, меньше или равно, больше или равно. Результат сравнения с этими операторами зависит от типа данных. Для численных данных операторы сравнения работают обычным, знакомым нам со школьных лет способом. Например, следующий запрос выберет из таблицы Tasks все записи с но- мером задачи больше 5. select * from Tasks where Task_ID>5 Для данных типов «дата» и «время» эти операторы работают интуитивно понятным образом, используя хронологический порядок: < означает «раньше», > — «позже». <= и >=, соответственно, означают «не позже» и «не раньше». Для данных типа «текст» производится побуквенное сравнение, начиная с первой буквы. При этом используется алфавитный порядок: выполнение условия 'а' < 'б' означает, что левая буква находится ближе к началу алфавита, чем правая. Но надо сказать, что результат сравнения зависит от типа и языковых настроек используемой базы данных. В частности, заглавные и строчные буквы могут считаться двумя разными наборами букв, так что их сравнение оказывается бессмысленным. Напри- мер, может выполняться такое условие: 'а' > 'Б'. У каждого типа баз данных есть соб- ственные настройки таких сравнений для текстовых данных. Если вы не знаете особенностей этих настроек, то лучше избегать сравнения текстовых строк с исполь- зованием этих операторов, потому что результат может оказаться совсем не таким, как вы ожидали. Операторы сравнения удобно использовать, когда мы имеем дело с количественны- ми значениями. В нашей учебной базе «Список дел» числа используются только как идентификаторы или признаки, поэтому условие вроде Task_ID>5 выглядит оторван- ным от жизни. Более осмысленные задачи с использованием операторов сравнения вы будете решать со второй учебной базой, «Учёт расходов», в которой хранятся данные о суммах покупок. |