Главная страница

sql лекц 43 стр 1. Подготовка к изучению. Программы для работы


Скачать 0.66 Mb.
НазваниеПодготовка к изучению. Программы для работы
Дата13.05.2022
Размер0.66 Mb.
Формат файлаdocx
Имя файлаsql лекц 43 стр 1 .docx
ТипДокументы
#527003
страница8 из 9
1   2   3   4   5   6   7   8   9

Сокращение запросов с помощью псевдонимов


Изучаемые нами запросы становятся всё более громоздкими. Нам приходится по несколько раз включать в запрос названия таблиц, которые могут быть достаточно длинными. Это не очень удобно и увеличивает вероятность опечатки при вводе запроса.

В 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 для непрограммистов»: Запросы к нескольким таблицам — тест


  1. Составьте запрос, выбирающий из таблиц Goods и Goods_Spending и возвраща- ющий перечень названий отслеживаемых товаров и всех потраченных на них сумм.

  2. Составьте запрос к таблицам Categories и Spendings, который возвращает на- звание категории покупки, название магазина и потраченную сумму для всех покупок, относящихся к категории с номером4.

  3. Составьте запрос к таблицам Goods и Goods_Spendings, возвращающий на- именование товара и количество купленных единиц по всем покупкам длято- вара«Пиво».

  4. Доработайте предыдущий запрос, добавив к результатам дату покупки из та- блицы Spendings. Таким образом, ваш запрос должен обращаться к трём табли- цам и возвращать наименование товара, количество купленных единиц и дату каждой покупки для товара«Пиво».

  5. Составьте запрос, обращающийся ко всем четырём таблицам (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 выглядит оторван- ным от жизни. Более осмысленные задачи с использованием операторов сравнения вы будете решать со второй учебной базой, «Учёт расходов», в которой хранятся данные о суммах покупок.

1   2   3   4   5   6   7   8   9


написать администратору сайта