Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция по Ms Access.doc
Скачиваний:
92
Добавлен:
19.05.2015
Размер:
1.86 Mб
Скачать

Сортировка данных

Конструкция выражения Select позволяет упорядочивать возвращаемые наборы данных по возрастанию или убыванию значений поля. Для этого служит предложение ORDER BY.

Синтаксис:

SELECT * FROM ИмяТаблицы

ORDER BY СписокПолей DESC, СписокПолей ASC,

где ASC- сортировка по возрастанию, DESC- сортировка по убыванию.

Если порядок сортировки не указан, то сортируется по возрастанию.

Группировка столбцов

Для группировки данных в столбцах применяется предложение GROUP BY.

Предложение GROUP BY требует задания списка наименований полей, разделённых запятыми. Оно находит применение тогда, когда необходимо получить только одну строку из группы строк, в определённых столбцах которых хранятся идентичные значения.

Объединение таблиц

Реляционные базы данных предполагают наличие механизма объединения информации об объекте, хранящейся в нескольких таблицах. Процесс и результат сбора данных об определённом объекте, хранящихся в нескольких таблицах, называется объединением таблиц. Рассмотрим операторы, которые работают при объединении таблиц.

Оператор JOIN работает с двумя аргументами-таблицами. Существуют три разновидности конструкций JOIN.

Оператор INNER JOIN

Конструкция INNER JOIN позволяет возвратить все записи, для которых выполняется условие равенства содержимого столбцов двух объединяемых таблиц.

SELECT * FROM имя INNER JOIN имя ON имя поля =имя поля

таблицы1 таблицы2 из таб.1 из таб.2

Оператор LEFT JOIN

Оператор LEFT JOIN применяется в тех случаях, когда следует вернуть все записи левой таблицы и только те строки правой, значения полей которых соответствуют данным левой таблицы.

SELECT * FROM имя LEFT JOIN имя ON имя поля =имя поля

таблицы1 таблицы2 из таб.1 из таб.2

Оператор RICHT JOIN

Конструкция RIGHT JOIN прямо противоположна по назначению оператору

LEFT JOIN. При использовании RIGHT JOIN возвращённый набор данных будет содержать все записи правой таблицы, и только те строки левой, для которых в правой таблице имеются соответствия.

SELECT * FROM имя RIGHT JOIN имя ON имя поля =имя поля

таблицы1 таблицы2 из таб.1 из таб.2

Добавление записей

Можно копировать данные из одной таблицы в другую.

Синтаксис:

INSERT INTO ИмяТаблицыПриёмника

(ИмяПоля1 [. ИмяПоля2,……])

SELECT ИмяТаблицыИсточника.ИмяПоля1 [,

ИмяТаблицыИсточника.ИмяПоля2, ….]

FROM ИмяТаблицыИсточника

Обновление данных

Команда UPDATE применяется для единовременного изменения содержимого полей одной или нескольких записей.

Синтаксис:

UPDATE ИмяТаблицы

SET ИмяПоля1=Значение1 [,ИмяПоля2=Значение2, …. ]

[WHERE Предложение0 ]

Удаление данных

При необходимости удаления записей из таблицы используется конструкция:

Синтаксис:

DELETE FROM ИмяТаблицы [WHERE Предложение]

Организация запроса на выборку

Дана таблица “Товары”. Получить список товаров, начинающихся на заданную букву.

Private Sub Кнопка2_Click()

Dim basa As Database, zapros As QueryDef, s As String, bucva As String

Set basa = CurrentDb

s = "Select * from Товары where Товар like 'М*'" ‘Cтрока запроса

Set zapros = basa.CreateQueryDef("Запрос1", s) ‘ Создание запроса

DoCmd.OpenQuery ("Запрос1") ‘Открытие запроса

basa.QueryDefs.Delete "Запрос1"

Set basa = Nothing

End Sub

Результат:

Пример:

Выбрать из таблицы «Товары» все записи, где 80<цена <130

Результат:

Текст программы:

Dim basa As Database, zapros As QueryDef, s As String, bucva As String

Set basa = CurrentDb

s = "SELECT * FROM Товары WHERE Цена>80 and цена <130"

Set zapros = basa.CreateQueryDef("Запрос1", s)

DoCmd.OpenQuery ("Запрос1")

basa.QueryDefs.Delete "Запрос1"

Set basa = Nothing

Пример:

Получить из таблицы «Товары» все записи по полю Поставщик от значения =”Красный Октябрь” до значения “Тверьрыба”. Выбрать только поля: название товара, поставщик.

Dim basa As Database, zapros As QueryDef, s As String, bucva As String

Set basa = CurrentDb

s = "SELECT Товар,Поставщик FROM Товары WHERE "

s = s & " Поставщик BETWEEN 'Красный Октябрь' AND 'Тверьрыба'"

Set zapros = basa.CreateQueryDef("Запрос1", s)

DoCmd.OpenQuery ("Запрос1")

basa.QueryDefs.Delete "Запрос1"

Set basa = Nothing

Результат:

Выборка произведена по

алфавитному расположению.

Пример:

Выбрать из таблицы «Товары» все записи, где название товара совпадает со значениями: сыр, масло, шоколад.

Строка запроса:

S=” SELECT * FROM Товары WHERE Товар IN (‘Сыр’, ‘Масло’, ‘Шоколад’)”

Результат работы:

Пример:

В таблице Товары изменить значение название товара=”Сыр” на

значение “Швейцарский сыр”

S=”UPDATE Товары SET Товар=’Швейцарский сыр’ where Товар=’Cыр’”

Таблица “Товары” до обновления:

При выполнении в системные окна выдаются сообщения:

Необходимо сделать выбор. Если нажали «Да», то появится следующее сообщение:

Подтвердить обновление.

При повторном запуске запроса будет появляться окно:

Таблица “Товары” после обновления:

Пример:

Удалить записи из таблицы, где Цена =100 и поле Товар=’Масло’

Dim basa As Database, zapros As QueryDef, s As String

Set basa = CurrentDb

s = "Delete from Товары where Цена=100 and Товар='Масло'"

Set zapros = basa.CreateQueryDef("Запрос1", s)

zapros.Execute

basa.QueryDefs.Delete "Запрос1"

Set basa = Nothing

Результат:

В задаче использован метод Execute для объекта QueryDef. В отличие от объекта Docmd - этот метод не даёт никаких уведомлений о ходе выполнения запроса.

Пример:

Отсортировать таблицу “Товары” по полю Товар - по возрастанию, а по полю Цена – по убыванию.

Таблица до сортировки:

Строка запроса:

s = "SELECT * FROM Товары ORDER BY Товар ASC, Цена DESC"

Таблица после сортировки:

В начале сортируется по алфавиту название товара, при совпадающих

названиях сортируется по убыванию поле Цена.

Пример:

В таблице “Товары” вычислить количество товаров с одним наименованием и их среднюю цену:

Строка запроса:

s = "SELECT Товар, Count(Товар),avg(Цена) FROM Товары Group BY Товар "

Результат работы:

В поле Expr1 помещено количество товаров одного

наименования, в поле Expr2 –средняя цена этих товаров.