Пример 2.7.
Пример 2.6.
Пример 2.5.
INSERT INTO Студент ([Фамилия]. [Имя], [Дата рождения]) VALUES ("Петров", "Иван", 23/3/80)
Возможен групповой ввод записей (пакетный режим), являющихся результатом выборки (запроса) из других таблиц:
INSERT INTO таблица [IN внешняя база данных] SELECT [источник.]поле1[, поле2[,...] FROM выражение WHERE условие
Сначала выполняется оператор подзапроса SELECT, который и формирует выборку для добавления.
Фраза SELECT определяет структуру данных источника передаваемых записей — имена таблицы и полей, содержащих исходные данные для загрузки в таблицу.
FROM позволяет указать имена исходных таблиц, участвующих в формировании выборки, а фраза WHERE задает условия выполнения подзапроса. Структура данных выборки должна соответствовать структуре данных таблицы, в которую производится добавление.
Добавление (перезагрузка) записей возможна и во внешнюю базу данных, для которой указывается полностью специфицированное имя (диск, каталог, имя, расширение). Структуры таблиц должны совпадать.
|
|
INSERT INTO Студент SELECT [Студент-заочник].* FROM [Студент-заочник]
Все записи таблицы СТУДЕНТ-ЗАОЧНИК будут добавлены в таблицу СТУДЕНТ
INSERT INTO Студент SELECT [Студент-заочник].* FROM [Студент-заочник] WHERE [Дата рождения] > = # 01/01/80 #
2.8. Обработка данных в базе
67
Записи таблицы СТУДЕНТ-ЗАОЧНИК добавляются в таблицу СТУДЕНТ, если дата рождения студента больше или равна указанной.
5. Операции соединения таблиц. Операцию INNER JOIN можно использовать в любом предложении FROM. Она создает симметричное объединение, наиболее частую разновидность внутреннего объединения. Записи из двух таблиц объединяются, если связующие их поля содержат одинаковые значения:
FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1=таблица2. поле2
Данный оператор описывает симметричное соединение двух таблиц по ключам связи (поле1; поле2). Новая запись формируется в том случае, если в таблицах содержатся одинаковые значения ключей связи.
Возможные варианты операции:
• LEFT JOIN (левостороннее) соединение — выбираются все записи «левой» таблицы и только те записи «правой» таблицы, которые содержат соответствующие ключи связи;
• RIGHT JOIN (правостороннее) соединение — выбираются все записи «правой» таблицы и только те записи «левой» таблицы, которые содержат соответствующие ключи связи.
SELECT Студент.*, Оценка.* FROM Студенты INNER JOIN Оценка ON Студент.[№ зач.книжки] = Оценка.[№ зач.книжки];
SELECT Студент.*, Оценка.* FROM Студенты LEFT JOIN Оценка ON Студент.[№ зач. книжки] = Оценка.[№ зач.книжки];
SELECT Студент.*, Оценка.* FROM Студенты RIGHT JOIN Оценка ON Студент.[№ зач.книжки] = Оценка.[№ зач.книжки]
|
|
В первом случае создается симметричное соединение двух таблиц по полю [№ зач.книжки]. Не выводятся записи, если значение их ключей связи (указанное поле) не представлено в двух таблицах. Во втором случае будут выведены все записи таблицы СТУДЕНТ и соответствующие им записи таблицы ОЦЕНКА. В третьем случае — наоборот, все записи таблицы ОЦЕНКА и соответствующие им записи таблицы СТУДЕНТ.
Операции JOIN могут быть вложенными для последовательного соединения нескольких таблиц.
68
Глава 2. Использование СУБД ACCESS