- •4. Реляционные языки запросов
- •Isbl -язык реляционной алгебры
- •Язык sql
- •Типы данных.
- •Создание, удаление или изменение таблиц или индексов с помощью управляющих запросов sql.
- •Инструкция create table
- •Предложение constraint (sql)
- •Инструкция alter table
- •Инструкция drop
- •Drop {table таблица | index индекс on таблица}
- •Инструкция create index
- •Запросы на выборку. Инструкция select
- •Предикаты all, distinct, distinctrow, top (sql)
- •Select [all | distinct | distinctrow | [top n [percent]]]
- •Предложение from
- •Синтаксис
- •Предложение where
- •Синтаксис
- •Предложение order by
- •Синтаксис
- •Группировка записей. Предложение group by
- •Синтаксис
- •Where условие_отбора
- •Предложение having
- •Синтаксис
- •From таблица
- •Запросы с соединением таблиц. Операция inner join
- •On таблица1.Поле2 оператор_сравнения таблица2.Поле2) or
- •Операции left join, right join
- •From таблица1 [ left | right ] join таблица2
- •Объединение результатов нескольких запросов. Операция union
- •Подчиненный запрос.
- •Запросы на изменение. Инструкция select...Into
- •From источник
- •Предложение in
- •Синтаксис
- •Инструкция insert into
- •Инструкция update
- •Инструкция delete
- •Delete [таблица.*]
- •Перекрестные запросы
- •Синтаксис
- •Запросы с параметрами Описание parameters
- •Синтаксис parameters имя тип_данных [, имя тип_данных [, ...]]
- •Статистические функции sql .
- •Функция Avg
- •Функция Count
- •Функции Min, Max
- •Функции StDev, StDevP
- •Функция Sum
- •Функции Var, VarP
- •Var(выражение)
- •VarP(выражение)
- •Quel:язык реляционного исчисления с переменными-кортежами
- •Query-by-example: язык исчисления с переменными – доменами
- •Формы запросов
- •Зарезервированные слова:
- •Конструирование операторов запроса.
- •Выбор записей
- •Запросы к нескольким таблицам
- •Вычисления
- •Операции
- •Группы записей
- •Работа с наборами записей
- •Развитые операторы запросов.
Предложение from
указывает таблицы или запросы, которые содержат поля, перечисленные в инструкции SELECT.
Синтаксис
SELECT список_полей
FROM выражение [IN внешняя_база_данных]
где:
список_полей - имена одного или нескольких полей, из которых отбираются данные, вместе с псевдонимами, статистическими функциями SQL, предикатами отбора (ALL, DISTINCT, DISTINCTROW или TOP) или другими элементами инструкции SELECT;
выражение - выражение, определяющее одну или несколько таблиц, откуда извлекаются данные. Это выражение может быть именем отдельной таблицы, именем сохраненного запроса или результатом операции INNER JOIN, LEFT JOIN или RIGHT JOIN;
внешняя_база_данных - полное имя внешней базы данных, содержащей таблицы, указанные в аргументе выражение.
Предложение FROM должно присутствовать в каждой инструкции SELECT.
Порядок следования имен таблиц в аргументе выражениене существенен.
Для повышения быстродействия и облегчения применения рекомендуется использовать присоединение таблиц вместо предложения IN для загрузки данных из внешней базы данных.
Минимальный синтаксис инструкции SELECT:
SELECT поля FROM таблица
Для отбора всех полей таблицы можно использовать знак звездочки (*).
Предложение where
Определяет, какие записи из таблиц, перечисленных в предложении FROM, следует включить в результат выполнения инструкции SELECT, UPDATE или DELETE.
Синтаксис
SELECT список_полей
FROM выражение
WHERE условие отбора
где условие отбора - выражение, которому должны удовлетворять записи, включаемые в результат выполнения запроса.
Ядро базы данных Microsoft Jet выбирает записи, соответствующие условиям, перечисленным в предложении WHERE. Если не задавать предложение WHERE, запрос возвращает все строки таблицы. Если в запросе определить несколько таблиц и не включить предложение WHERE или JOIN, запрос будет возвращать скалярное произведение таблиц.
Предложение WHERE не является обязательным, однако, если оно присутствует, то должно следовать после предложения FROM.
Предложение WHERE может содержать до 40 выражений, связанных логическими операторами, такими как And и Or.
Имена полей, которые содержат пробелы или знаки препинания, необходимо заключать в квадратные скобки ([ ]).
При определении аргумента условия_отбора символы дат должны быть введены в американском формате, даже если используется неамериканская версия ядра базы данных Jet. Обязательно даты заключаются в знаки "решетки" (#).
Если несколько таблиц, включенных в предложение FROM, содержат одноименные поля, перед именем такого поля следует ввести имя таблицы и оператор . (точка).
При работе со статистическими функциями или запросами, которые возвращают повторяющиеся имена объекта Field, используется предложение AS для задания другого имени объекта Field.
Предложение order by
Сортирует записи, полученные в результате запроса, на основе значений указанного поля или полей в возрастающем или убывающем порядке.
Синтаксис
SELECT список_полей
FROM таблица
WHERE условие_отбора
ORDER BY поле1 [ASC | DESC ][, поле2 [ASC | DESC ][, ...]]
где поле1, поле2 - имена полей для сортировки записей.
Если инструкция содержит предложение WHERE, ядро базы данных Microsoft Jet выполняет группирование значений после применения к записям условий отбора WHERE.
Предложение ORDER BY не является обязательным. Однако, чтобы отобразить данные в отсортированном порядке, его необходимо использовать.
По умолчанию используется возрастающий порядок сортировки (А-Я, 0-9).
Чтобы сортировать в убывающем порядке (Я-А, 9-0), добавляется зарезервированное слово DESC в конец каждого поля, которое нужно отсортировать в убывающем порядке.
Если в предложение ORDER BY будет включено поле МЕМО или объекта OLE, то возникнет ошибка. Ядро базы данных Jet не позволяет проводить сортировку по полям этих типов.
Предложение ORDER BY обычно является последним элементом инструкции SQL.
Предложение ORDER BY может содержать несколько полей. Сначала записи сортируются по первому полю в списке ORDER BY, затем записи, имеющие совпадающие значения в первом поле, сортируются по второму полю и т.п.
Примеры:
Получить полную информацию о всех товарах:
SELECT *
FROM Товары;
Получить коды и наименования всех товаров:
SELECT [Код товара],Наименование
FROM Товары;
Определить имена поставщиков из Калининграда:
SELECT Имя
FROM Поставщики
WHERE Адрес="Калининград";
Определить коды поставщиков, поставляющих товары сегодня:
SELECT DISTINCT [Код поставщика]
FROM Поставки
WHERE Дата=Date();
Получить наименование, цену и тип товаров, хранящихся в Москве, Киеве или Риге. Список упорядочить по наименованиям товаров:
SELECT DISTINCT Наименование,Тип,Цена
FROM Товары
WHERE [Место хранения] In ("Москва","Киев","Рига")
ORDER BY Наименование;
Получить имена и адреса поставщиков, имена которых начинаются на А:
SELECT DISTINCT Имя,Адрес
FROM Поставщики
WHERE Имя Like "А*";
Получить информацию о поставках товаров за период между 1/10/99 и 7/30/99:
SELECT [Код товара],[Код поставщика],Количество
FROM Поставки
WHERE Дата Between #1/10/99# And #7/30/99#;
Получить информацию о поставках товаров с незаданной датой:
SELECT [Код товара],[Код поставщика],Количество
FROM Поставки
WHERE Дата IS NULL;
Определить имена поставщиков, адрес которых неизвестен:
SELECT Имя
FROM Поставщики
WHERE Адрес="";
Определить 10 самых дорогих товаров типа «Обувь»:
SELECT TOP 10 Наименование,Цена
FROM Товары
WHERE Тип="Обувь"
ORDER BY Цена DESC;
Определить товары типа «Обувь» с ценой менее 1000, хранящиеся в Москве:
SELECT Наименование, Цена
FROM Товары
WHERE Цена<=1000 AND Тип="Обувь" AND [Место хранения]="Москва";
Определить товары, хранящиеся в Москве или Киеве:
SELECT *
FROM Товары
WHERE [Место хранения]="Москва" OR [Место хранения]="Киев";
Определить количество поставщиков из Москвы:
SELECT Count([Код поставщика]) AS [Количество поставщиков]
FROM Поставщики
WHERE Адрес="Москва";