- •Выборка данных
- •Оператор select
- •Выражения sql
- •Выражение from
- •Операции left join, right join
- •Операция inner join
- •Выражение in
- •Предикаты all, distinct, distinctrow, top
- •Объявление with owneraccess option
- •Выражение where
- •Операция Like
- •Операция In
- •Операция Between...And
- •Подзапрос
- •Выражение order by
- •Выражение group by
- •Выражение having
- •Оператор union
- •Оператор transform
- •Выражение procedure
- •Объявление parameters
- •Изменение данных
- •Оператор update
- •Оператор insert into
- •Оператор delete
- •Изменение структуры
- •Оператор select...Into
- •Оператор create table3
- •Выражение constraint4
- •Оператор alter table5
- •Оператор create index6
- •Оператор drop7
- •Агрегатные функции
- •Функция Count
- •Функция Avg
- •Функция Sum
- •Функции Var и VarP
- •Функции StDev и StDevP
- •Функции Min, Max
- •Функции First, Last
SQL для Microsoft Access 97
(Курс молодого бойца)
SQL для Microsoft Access 97 1
Выборка данных 1
Оператор SELECT 2
Выражения SQL 2
Выражение FROM 3
Предикаты ALL, DISTINCT, DISTINCTROW, TOP 7
Объявление WITH OWNERACCESS OPTION 9
Выражение WHERE 9
Выражение ORDER BY 13
Выражение GROUP BY 14
Выражение HAVING 14
Оператор UNION 15
Оператор TRANSFORM 15
Выражение PROCEDURE 17
Объявление PARAMETERS 18
Изменение данных 19
Оператор UPDATE 19
Оператор INSERT INTO 20
Оператор DELETE 21
Изменение структуры 21
Оператор SELECT...INTO 21
Оператор CREATE TABLE 22
Выражение CONSTRAINT 23
Оператор ALTER TABLE 23
Оператор CREATE INDEX 25
Оператор DROP 25
Агрегатные функции 26
Функция Count 26
Функция Avg 27
Функция Sum 27
Функции Var и VarP 28
Функции StDev и StDevP 28
Функции Min, Max 29
Функции First, Last 30
Structured Query Language – язык построения запросов для работы с данными, хранящимися в виде таблиц. Он позволяет
Создавать и удалять таблицы и индексы;
Менять структуру таблиц;
Вводить и удалять данные;
Выбирать и группировать имейщиеся данные.
Основная особенность SQL по сравнению с другими языками в том, что один оператор выполняет сразу несколько действий, очередность которых не описана им в явной форме. Отсюда (иногда) – неожиданные результаты.
Наиболее частое (и сложное) – выборка имеющихся данных. С этого и начнем.
Выборка данных
Запросы на выборку создаются с помощью операторов SELECT (выбор записей из существующих таблиц), UNION (объединение нескольких таблиц/запросов в одну) и TRANSFORM (создание сводной таблицы – перекрестный запрос).
«Основным» является оператор SELECT. В операторе SELECT сначала формируется источник (FROM), производится фильтрация (WHERE) и формируются записи из указанных полей с учетом предиката. Если используются агрегатные функции, они формируют записи с учетом группировки (GROUP BY) и сформированные записи фильтруются (HAVING). Полученный набор упорядочивается (ORDER BY).
Оператор select
Возвращает набор записей (работает через Microsoft Jet). Формат:
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]} FROM tableexpression [, ...] [IN externaldatabase] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION]
Оператор SELECT имеет следующие части:
Часть |
Описание |
predicate |
Один из предикатов ALL, DISTINCT, DISTINCTROW или TOP. По умолчанию ALL |
* |
Все поля из указанной таблицы/таблиц или запроса |
table |
Имя таблицы, из которой выбираются записи |
field1, field2 |
Имена полей, которые нужно вывести. Выводятся в порядке их перечисления |
alias1, alias2 |
Имена столбцов, используемые вместо исходных названий |
tableexpression |
Имя таблицы/таблиц или запроса – источника записей |
externaldatabase |
Имя базы, содержащей таблицу/таблицы или запрос. По умолчанию текущая база |
При выполнении этой операции SELECT находит нужные таблицы, выделяет соответствующие колонки, выбирает записи, соответствующие критерию, и сортирует или группирует результат указанным образом. Оператор SELECT не меняет данные в базе.
Обычно SELECT – первое слово в запросе, минимальный формат имеет вид
SELECT fields FROM table
Для выбора всех полей таблицы (источника) используется *
SELECT * FROM Employees;
Если имя поля встречается в нескольких таблицах, перечисленных в выражении FROM, перед ним указывается имя нужной таблицы, отделенное точкой. Например если поле Department имеется и в таблице Employees, и в таблице Supervisors, запрос, выбирающий Department из Employees и SupvName из Supervisors имеет вид
SELECT Employees.Department, Supervisors.SupvName FROM Employees INNER JOIN Supervisors WHERE Employees.Department = Supervisors.Department;
При создании объекта Recordset Microsoft Jet использует название поля в качестве имени объекта Field. Для изменения имени Field используется служебное слово AS. В следующем примере полю BirthDate присваивается псевдоним Birth:
SELECT BirthDate AS Birth FROM Employees;
При использовании агрегатной функции или запроса, возвращающего неоднозначное или дублирующееся имя объекта Field, необходимо использовать AS для введения однозначно определенного псевдонима:
SELECT COUNT(EmployeeID) AS HeadCount FROM Employees;
В операторе можно использовать также другие выражения для отбора и упорядочения данных.
В окне запросов Microsoft Access можно посмотреть данные запроса в режиме таблицы. Имена столбцов – названия полей (field1, field2). Для отображения других названий используется служебное слово AS. Его использование эквивалентно установке свойства Alias в конструкторе запросов.
