Слайд 2Jet SQL
VBA является не единственным языком, который "понимает" программа Access.
Язык структурированных запросов SQL (Structured Query Language) — "родной" язык
реляционных баз данных, поэтому программа Access не может его не понимать. При работе с Access «используется диалект Jet SQL.
Слайд 3JetSQL
Язык JetSQL используют для прямого взаимодействия с данными средствами механизма
Jet. Все его инструкции можно формально разделить на две части:
■
Язык управления данными (DML). Этот язык используется для извлечения, изменения и удаления существующих данных, а также для добавления новых данных.
■ Язык определения данных (DDL). Этот язык используется для управлениями объектами в базе данных, в приложении мы не будем его рассматривать.
Слайд 4Извлечение данных с помощью инструкции SELECT
Для извлечения данных с целью
просмотра или дальнейшего использования используется инструкция SELECT.
SELECT ALL|DISTINCT список_полей|*
FROM источник_данных [WHERE условие]
[GROUP BY столбец1[,столбец2 ..]][HAVING условие]
[ORDER BY столбец1[ASC|DESC] [,столбец2..]
Если опустить компонент all | DISTINCT, SQL предполагает наличие первого из них. Аналогично, в предложении ORDER BY по умолчанию предполагается наличие ключевого слова ASC. Символ звездочки предполагает отбор всех полей в источнике данных.
Слайд 5Извлечение данных с помощью инструкции SELECT
Аргумент список_полей представляет собой, как
и следует из названия, список имен полей источника данных, разделенных
запятыми: SELECT поле1 [AS псевдоним] [, поле2 [AS псевдоним]...]
где поле1, поле2 и т.д. представляют имена полей. Полю, которое в источнике данных имело некоторое имя, можно в результатах запроса присвоить псевдоним. К примеру, в следующей инструкции имена Lname и Fname преобразуются в LastName и FirstName соответственно: SELECT Lname AS LastName, Fname AS FirstName FROM Employees
Слайд 6Извлечение данных с помощью инструкции SELECT
Предложение FROM является обязательным, и
его полная форма имеет следующий вид:
FROM источник_данных | таблица_один СВЯЗЬ
таблица_много ON таблица_один. первичный_ключ = таблица _много. вторичный_ключ
где таблица_один и таблица_много указывают на две таблицы, участвующие в отношении "один ко многим". Аргумент СВЯЗЬ идентифицирует тип связи между таблицами: INNER JOIN, LEFT или RIGHT. Существуют и другие типы отношений, однако только эти три поддерживаются языком Jet SQL.
Слайд 7Извлечение данных с помощью инструкции SELECT
Предложение WHERE предназначено ограничивать объем
извлекаемых, обновляемых или удаляемых данных.
Это предложение имеет следующий синтаксис:
WHERE условное_выражение
где
условное_выражение может принимать множество форм, однако суть состоит в том, что в результат запроса включаются только те записи, которые удовлетворяют этому условию. В простейшем случае условным выражением может быть операция сравнения значения некоторого поля с константой:
SELECT * FROM Clients
WHERE ClientID = 1
Слайд 8Извлечение данных с помощью инструкции SELECT
Предложение ORDER BY может осуществлять
сортировку по текстовым и числовым данным, а также по датам.
Синтаксис:
ORDER BY столбец1 [ASC | DESC][, столбец2 [ASC | DESC]...]
Компонент asс | DESC определяет вид сортировки: по возрастанию или по убыванию соответственно.
Слайд 9Извлечение данных с помощью инструкции SELECT
Предложение GROUP BY определяет группы
и иногда выполняет вычисление итогов по группе. Синтаксис : GROUP
BY столбец1 [, столбец2...]
где столбец1, столбец2 и т.д. являются ссылками на фактические столбцы или вычисляемые поля. Единственное условие участия вычисляемых полей в этом предложении — отсутствие в их выражениях функций и констант агрегирования. Еще одним условием является то, что все поля в инструкции SELECT должны присутствовать в следующем виде:
■ как аргументы функций агрегирования;
■ в предложении GROUP BY — как ссылки на поля.
Слайд 10Извлечение данных с помощью инструкции SELECT
Предложение HAVING ограничивает результаты группировки,
произведенной предложением GROUP by. Механизм Jet применяет предложение having уже
после группировки данных. Это значит, что вы можете его использовать для отсечения определенных записей уже после группировки, что может оказаться полезным при подведении итогов по группам и последующем применении к результатам некоторого условия.
синтаксис:
HAVING условие
Аргумент условие может представлять собой одно или несколько условий, скомбинированных операторами OR и and в более сложную форму:
HAVING выражение1 AND|OR выражение2
Слайд 11Пример
Для примера предположим, что требуется сгруппировать записи о проектах клиентов,
чтобы впоследствии их подсчитать. В этом случае можно использовать следующую
инструкцию:
SELECT Projects.ClientID, Projects.ProjectName, _
Count(Projects.StartDate) AS CountOfStartDate FROM Projects
WHERE Projects .ClientID = 1 AND ( Projects .StartDate
Between #1/1/2009# And #31/01/2009#)
GROUP BY Projects.ClientID
Обратите внимание, что каждый столбец в инструкции SELECT является либо частью функции агрегирования (в данном случае функции Count) или перечислен в предложении GROUP BY.
Слайд 12Использование условия Like
Условие like использует символы макроподстановки для поиска строк,
соответствующих заданному шаблону:
Пример: условие like используется для поиска всех
товаров, названия которых начинаются с ‘Air':
SELECT ProductName FROM Product
WHERE ProductName LIKE 'Air%';
Слайд 13Множественные условия where
В предложении WHERE можно комбинировать множество условий с
помощью логических булевых операторов and, or и not. Как и
в математических операторах, в булевых логических операторах существует свой порядок приоритетов. Наивысший приоритет имеет оператор and. далее следует or и, наконец, not.
Рассмотрим пример:
SELECT ProductCode, ProductName FROM Product WHERE
ProductName LIKE 'Air%'
AND
ProductName LIKE '%G%’;
Слайд 15Агрегирующие функции
Анализ данных, которые обычно формируются с использованием конструкции GROUP
BY, показывает, что эти данные представляют собой результаты агрегирования с
помощью функций, воздействующих на группы данных. Рассмотрим наиболее распространенные агрегирующие функции:
Слайд 16Агрегирующие функции (продолжение)
Функция AVG
Эта функция применяется для вычисления средних значений.
Функция COUNT (Выражение / *)
Функция COUNT (*) предназначена для вычисления
количества строк в результатах запроса. Для начала рассмотрим одну из наиболее широко применяемых разновидностей запроса:
SELECT COUNT(*) FROM Employee – общее количество строк в таблице Employee.
Слайд 17Объединение данных
Реляционные базы данных по своей природе сегментируют данные в
несколько узких, но достаточно длинных таблиц. Очень редко бывает, когда
данные одной таблицы могут обеспечить пользователя смысловой информацией. Таким образом, объединение данных из множества таблиц является одной из основных задач программиста SQL.
Слайд 18Объединение данных
Для создания запросов, выбирающих данные из нескольких таблиц (объединения
таблиц) необходимо использовать дополнительные условия соединения.
Пример
Select Модель.КодМодели, Модель.Название модели,
ГотовыйПродукт.Серийный номер FROM Модель, ГотовыйПродукт WHERE Модель.КодМодели = ГотовыйПродукт.КодМодели
Слайд 19Изменение данных с помощью инструкции UPDATE
Инструкция update языка SQL аналогична
запросу обновления, выполняемому в интерфейсе пользователя Access для изменения существующих
данных. Эта инструкция использует следующий синтаксис:
UPDATE источник_данных
SET столбец1 = выражение1[, столбец2 = выражение2...]
[WHERE условие]
Слайд 20Удаление записей с помощью инструкции DELETE
синтаксис :
DELETE
FROM источник_данных [WHERE условие]
Естественно,
вы можете указать поля, и это не приведет к ошибке,
но в то же время будет абсолютно бессмысленным. Инструкция DELETE поймет символ подстановки *, однако он тоже не имеет смысла, так как в любом случае запись удаляется целиком.
Слайд 21Добавление записей с помощью инструкции INSERT INTO
При использовании INSERT данные
из одной таблицы копируются в другую, или в некоторой таблице
создается новая запись.
При копировании записей из одной таблицы в другую используется следующий синтаксис:
INSERT INTO таблица_приемник SELECT таблица_источник
где таблица_приемник — это таблица, в которую копируются данные, а таблица_источник— та, из которой эти записи берутся. Эта инструкция поддерживает предложения where и order by.
Слайд 22Добавление записей с помощью инструкции INSERT INTO
Для добавления записей (по
одной) в таблицу используют следующий синтаксис:
INSERT INTO таблица [столбец1[,
столбец2...]] VALUES [значение1[, значение2...] ]
Для успешного использования этой формы инструкции следует учесть следующие правила:
■ Ссылки на столбцы не обязательны; когда они опущены, значения должны передаваться для всех полей таблицы по порядку.
■ Значения в предложении values должны иметь тот же порядок, что и в списке полей таблицы инструкции INSERT INTO. Этот порядок может отличаться от заложенного в исходной конструкции таблицы.