- •4. Реляционные языки запросов
- •Isbl -язык реляционной алгебры
- •Язык sql
- •Типы данных.
- •Создание, удаление или изменение таблиц или индексов с помощью управляющих запросов sql.
- •Инструкция create table
- •Предложение constraint (sql)
- •Инструкция alter table
- •Инструкция drop
- •Drop {table таблица | index индекс on таблица}
- •Инструкция create index
- •Запросы на выборку. Инструкция select
- •Предикаты all, distinct, distinctrow, top (sql)
- •Select [all | distinct | distinctrow | [top n [percent]]]
- •Предложение from
- •Синтаксис
- •Предложение where
- •Синтаксис
- •Предложение order by
- •Синтаксис
- •Группировка записей. Предложение group by
- •Синтаксис
- •Where условие_отбора
- •Предложение having
- •Синтаксис
- •From таблица
- •Запросы с соединением таблиц. Операция inner join
- •On таблица1.Поле2 оператор_сравнения таблица2.Поле2) or
- •Операции left join, right join
- •From таблица1 [ left | right ] join таблица2
- •Объединение результатов нескольких запросов. Операция union
- •Подчиненный запрос.
- •Запросы на изменение. Инструкция select...Into
- •From источник
- •Предложение in
- •Синтаксис
- •Инструкция insert into
- •Инструкция update
- •Инструкция delete
- •Delete [таблица.*]
- •Перекрестные запросы
- •Синтаксис
- •Запросы с параметрами Описание parameters
- •Синтаксис parameters имя тип_данных [, имя тип_данных [, ...]]
- •Статистические функции sql .
- •Функция Avg
- •Функция Count
- •Функции Min, Max
- •Функции StDev, StDevP
- •Функция Sum
- •Функции Var, VarP
- •Var(выражение)
- •VarP(выражение)
- •Quel:язык реляционного исчисления с переменными-кортежами
- •Query-by-example: язык исчисления с переменными – доменами
- •Формы запросов
- •Зарезервированные слова:
- •Конструирование операторов запроса.
- •Выбор записей
- •Запросы к нескольким таблицам
- •Вычисления
- •Операции
- •Группы записей
- •Работа с наборами записей
- •Развитые операторы запросов.
Выбор записей
В одном или нескольких полях формы запроса могут быть заданы конкретные значения. В этом случае в Answer будут включены записи с заданными значениями полей.
4) Получить данные о поставках деталей поставщиком с номером П3.
SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗
║√ П3 ║√ ║√ ║
ANSWER═╦═НомП═╦═НомД═╦══Колич══╗
1 ║ П3 ║ Д3 ║ 45 ║
2 ║ П3 ║ Д4 ║ 12 ║
3 ║ П3 ║ Д5 ║ 88 ║
5) Определить номера деталей черного цвета весом 12 кг.
P═╦════НомД════╦═══Наим════╦═════Цвет══════╦══Вес════╦════Город════╗
║√ ║ ║ Черный ║ 12 ║ ║
ANSWER═╦═НомД═╗
1 ║ Д11 ║
2 ║ Д12 ║
Значения могут быть заключены в парные кавычки.
Для задания диапазона значений в форме запроса используются операторы =, <, >, <=, >=. Диапазон может быть задан для любого типа поля.
6) Определить номера и имена поставщиков, находящихся в Калининграде и
имеющих статус >20.
S═╦══НомП════╦══════ИмяП══════╦══════Статус══════╦══════Город══════╗
║√ ║√ ║ >20 ║ Калининград ║
ANSWER═╦═НомП═╦══ИмяП════╗
1 ║ П4 ║ База 4 ║
2 ║ П8 ║ База 8 ║
Диапазон символьных полей можно задать, указав в качестве значения образец, в котором "@" обозначает любой символ, а ".." - любую последовательность символов.
7) Определить имена и адреса поставщиков, адреса которых начинаются на букву К.
S═╦══════НомП════╦══════ИмяП══════╦════Статус════╦═════Город══════╗
║ ║√ ║ ║√ К.. ║
ANSWER═╦══ИмяП════╦══════Город══════╗
1 ║ База 2 ║ Казань ║
2 ║ База 3 ║ Киев ║
3 ║ База 4 ║ Калининград ║
4 ║ База 8 ║ Калининград ║
8) Определить номера и имена поставщиков с семисимвольными именами.
S═╦════НомП════╦════ИмяП═════╦══════Статус══════╦══════Город══════╗
║√ ║√ @@@@@@@ ║ ║ ║
ANSWER═╦═НомП═╦══ИмяП════╗
1 ║ П10 ║ База 10 ║
При включении в образец знаков пунктуации и других зарезервированных символов их необходимо заключать в двойные кавычки.
При задании образца для полей типа дата нужно учитывать установленный формат представления даты (image/format).
Образец может быть задан и для числовых полей, например:
9)
SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗
║√ ║√ ║√ ..".5" ║
ANSWER═╦═НомП═╦═НомД═╦══Колич══╗
1 ║ П1 ║ Д5 ║ 45 ║
2 ║ П2 ║ Д10 ║ 35 ║
3 ║ П2 ║ Д15 ║ 65 ║
4 ║ П3 ║ Д3 ║ 45 ║
5 ║ П6 ║ Д1 ║ 35 ║
6 ║ П9 ║ Д7 ║ 35 ║
Очень мощным средством языка является оператор like, позволяющий пользователю получить информацию в том случае, если он не знает точного искомого значения. Like учитывает произношение слова, например:
10)
S═╦═════НомП════╦═════ИмяП══════╦═════Статус═════╦═════Город═════╗
║√ ║√ ║ ║√ like Ризан ║
ANSWER═╦═НомП═╦══ИмяП════╦══════Город══════╗
1 ║ П10 ║ База 10 ║ Рязань ║
Для получения записей, не соответствующих заданному условию, используется оператор not, например: получить информацию о поставках деталей кроме детали с номером Д5:
11)
SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗
║√ ║√ not Д5 ║√ ║
ANSWER═╦═НомП═╦═НомД═╦══Колич══╗
1 ║ П1 ║ Д3 ║ 4 ║
2 ║ П1 ║ Д4 ║ 12 ║
Можно использовать not совместно с образцом или оператором like, например:
12)
S═╦═══НомП════╦══════ИмяП══════╦════Статус════╦══════Город══════╗
║√ ║√ ║√ ║√ not К.. ║
ANSWER═╦═НомП═╦══ИмяП════╦═Статус══╦══════Город══════╗
1 ║ П1 ║ База 1 ║ 40 ║ Москва ║
2 ║ П10 ║ База 10 ║ 15 ║ Рязань ║
3 ║ П5 ║ База 5 ║ 5 ║ ║
4 ║ П6 ║ База 6 ║ 20 ║ Тула ║
5 ║ П7 ║ База 7 ║ 40 ║ Москва ║
6 ║ П9 ║ База 9 ║ 40 ║ Москва ║
13)
S═╦═══НомП════╦══════ИмяП══════╦════Статус════╦══════Город══════╗
║√ ║√ ║ ║√ not like Ризан ║
ANSWER═╦══НомП═╦══ИмяП════╦══════Город══════╗
1 ║ П1 ║ База 1 ║ Москва ║
2 ║ П2 ║ База 2 ║ Казань ║
3 ║ П3 ║ База 3 ║ Киев ║
4 ║ П4 ║ База 4 ║ Калининград ║
5 ║ П5 ║ База 5 ║ ║
6 ║ П6 ║ База 6 ║ Тула ║
7 ║ П7 ║ База 7 ║ Москва ║
8 ║ П8 ║ База 8 ║ Калининград ║
9 ║ П9 ║ База 9 ║ Москва ║
Для нахождения записей, не содержащих значений в одном или нескольких полях, используется слово blank в соответствующем поле формы запроса, например:
14)
S═╦═══НомП════╦════ИмяП════╦════Статус════╦═════Город══════╗
║√ ║√ ║ ║ blank ║
ANSWER═╦══НомП═╦══ИмяП════╗
1 ║ П5 ║ База 5 ║
Not blank в поле формы обозначает непустое поле.
Для выбора записей по текущей дате в соответствующем поле формы запроса используется слово today, например: >today. Поля формы запроса могут содержать арифметические выражения, например: today - 5.
В одном поле можно записать два или более условий, разделенных запятыми. Они образуют сложное условие, в котором его составляющие связаны операцией and, например:
15)
SP════╦════════НомП══════╦════════НомД══════╦══════Колич══════╗
║√ ║√ ║√ >=100,<=300 ║
ANSWER═╦═НомП═╦═НомД═╦══Колич══╗
1 ║ П1 ║ Д7 ║ 278 ║
2 ║ П1 ║ Д9 ║ 300 ║
3 ║ П10 ║ Д7 ║ 100 ║
4 ║ П9 ║ Д8 ║ 300 ║
Два условия, связанных логическим or, можно записать в одном поле, используя слово оr. Тот же смысл имеют условия, записанные в разных строках.
В одном запросе могут использоваться and и or условия.
16)
S═╦═══НомП════╦═══ИмяП════╦════Статус════╦════════Город════════╗
║√ ║√ ║√ ║√ Рязань or Казань ║
ANSWER═╦═НомП═╦══ИмяП════╦══Статус══╦══════Город══════╗
1 ║ П10 ║ База 10 ║ 15 ║ Рязань ║
2 ║ П2 ║ База 2 ║ 15 ║ Казань ║
17)
S═╦═══НомП════╦═════ИмяП═════╦════Статус════╦══════Город══════╗
║√ ║√ ║√ ║√ Москва ║
║√ ║√ ║√ <15 ║√ ║
ANSWER═╦═НомП═╦══ИмяП═════╦═Статус══╦══════Город══════╗
1 ║ П1 ║ База 1 ║ 40 ║ Москва ║
2 ║ П3 ║ База 3 ║ 10 ║ Киев ║
3 ║ П5 ║ База 5 ║ 5 ║ ║
4 ║ П7 ║ База 7 ║ 40 ║ Москва ║
5 ║ П9 ║ База 9 ║ 40 ║ Москва ║
18)
P═╦══НомД═══╦═══Наим═══╦════Цвет═════╦════Вес═════╦════Город════╗
║ ║√ ║√ ║√ >10,<15 ║√ ║
║ ║√ ║√ Красный ║√ ║√ ║
ANSWER═╦═════Наим══════╦════Цвет════╦══Вес══╦══════Город══════╗
1 ║ Вал ║ Черный ║ 12 ║ Киев ║
2 ║ Мотор ║ Красный ║ 88 ║ Казань ║
3 ║ Редуктор ║ Красный ║ 57 ║ Москва ║
4 ║ Шкив ║ Черный ║ 12 ║ Киев ║