
SQL–запросы
Вопросы
1.Запрос на объединение записей.
2.Запрос к серверу.
3.Управляющий запрос.
4.Подчиненный запрос.
Запрос SQL
Синтаксис:
SELECT [ALL | DISTINCT | DISTINCTROW] <список полей> FROM <список таблиц/запросов>
[WHERE <спецификация выбора строк>] [GROUP BY <спецификация группировки>] [HAVING <спецификация выбора групп>] [ORDER BY <спецификация сортировки>]
Примеры:
Получить полную информацию обо всех товарах
SELECT * FROM Товары;
Получить список товаров категорий "Приправы" и "Фрукты" (категория, марка, количество на складе) поставки, которых не прекращены. Список упорядочить по убыванию количества товара на складе в каждой категории.
SELECT Типы. Категория, Товары. Марка, Товары. НаСкладе
FROM Типы INNER JOIN Товары ON Типы. КодТипа = Товары. КодТипа
WHERE (Типы. Категория='Приправы' Or Типы. Категория='Фрукты')
AND Товары. ПоставкиПрекращены = False
ORDER BY Типы. Категория, Товары. НаСкладе DESC;
Примеры
Получить список стран, в которых есть клиенты, но нет поставщиков. SELECT DISTINCT Клиенты. Страна
FROM Клиенты LEFT JOIN Поставщики
ON Клиенты. Страна = Поставщики. Страна
WHERE Поставщики. Страна Is Null
ORDER BY Клиенты. Страна;
примеры
Получить стоимость каждого заказа с учетом скидки, исполненного в 2020 году и оформленного сотрудницей Белова Мария.
SELECT [Фамилия] & " " & [Имя] AS ФИО, Заказы. КодЗаказа, Sum([Цена]*[Количество]*(1-[Скидка])) AS Стоимость
FROM Сотрудники INNER JOIN (Заказы INNER JOIN Заказано
ON Заказы. КодЗаказа = Заказано. КодЗаказа)
ON Сотрудники. КодСотрудника = Заказы. КодСотрудника
WHERE Year([ДатаИсполнения]) = 2020
GROUP BY Фамилия] & " " & [Имя], Заказы. КодЗаказа
HAVING [Фамилия] & " " & [Имя] = "Белова Мария";.
Запрос на объединение записей
Запрос на объединение записей – это запрос, в котором в результирующем наборе записей объединяются строки из нескольких таблиц, запросов и инструкций SELECT по одному или нескольким полям.
Синтаксис:
{TABLE <имя таблицы/запроса> | <инструкция_SELECT>}
UNION
[ALL] {TABLE <имя таблицы/запроса> | <инструкция_SELECT>}
[UNION
[ALL] {TABLE <имя таблицы/запроса> | <инструкция_SELECT>}]
ALL – позволяет включить в результирующий набор все записи (по умолчанию записи, повторяющиеся в объединяемых таблицах и запросах, в результирующий набор не включаются).
Все таблицы и запросы, включенные в операцию UNION, должны отбирать одинаковое количество полей, при этом типы данных и размеры полей могут не совпадать. В качестве полей для сортировки нужно указывать имена полей из первой таблицы или запроса, т. к. именно эти имена будут использоваться в качестве имен полей результирующего набора записей.
Запрос к серверу
Запрос к серверу, в отличие от других запросов, передается на сервер базы данных, к которому выполняется обращение, например MS SQL Server.
Главной особенностью этого запроса состоит в том, что он должен использовать синтаксис языка SQL сервера базы данных (для MS SQL Server – это Transact-SQL).
Управляющий запрос
Управляющий запрос используется для создания, изменения структуры и удаления таблиц, создания и удаления индексов.
Инструкция CREATE TABLE
Позволяет создать таблицу, определить поля, задать типы данных и некоторые свойства полей, а также определить первичный ключ.
Синтаксис:
CREATE TABLE <имя таблицы>
(<имя поля> <тип данных> [(<размер>)] [NOT NULL] [UNIQUE]
[, <имя поля> <тип данных> [(<размер>)] [NOT NULL] [UNIQUE]] [, CONSTRAINT <имя индекса>
PRIMARY KEY (<имя поля> [, <имя поля>])]);
NOT NULL – запрет на пустое значение в поле (обязательное поле);
UNIQUE – индексированное поле (совпадения в индексе не допускаются);
PRIMARY KEY – определение первичного ключа таблицы.
Пример
CREATE TABLE Должности
(КодДолжности LONG, НаимДолжности TEXT(30) UNIQUE NOT NULL, CONSTRAINT Индекс1 PRIMARY KEY (КодДолжности));