Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
148
Добавлен:
02.02.2021
Размер:
85.79 Кб
Скачать

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 (КодДолжности));