- Необходимо создать базу данных заказы организации 1 создать таблицы
- Проектирование базы данных
- Определение ключей и создание связей схемы связей.
- Создание файла базы данных в СУБД Microsoft Access 2003 .
- Запросы SQL на создание всех спроектированных таблиц.
- Изменение структуры таблиц с помощью SQL запроса
- Внесение данных в таблицы.
- Запросы на языке SQL для манипулирования данными в базе MS Access
- Запросы SQL для выборк данных в базе MS Access
- Создание запроса на создание таблицы
- В этой статье
- Общие сведения о запросах на создание таблиц
- Создание запроса на создание таблицы
- Создание запроса на выборку
- Преобразование запроса на выборку
- Дополнительные сведения об условиях запроса и выражениях
- Предотвращение блокировки запроса режимом отключения
Необходимо создать базу данных заказы организации 1 создать таблицы
1) Спроектировать базу данных (БД) согласно варианту задания.
2) Написать запросы SQL на создание всех спроектированных таблиц.
3) С помощью 2-х запросов SQL изменить структуру двух таблиц (например, добавить или удалить какой-либо атрибут), показать результаты изменения.
4) Внести данные в таблицы в режиме Таблица -> Открыть (не менее 10 кортежей в каждой таблице).
5) Создайте запросы SQL, которые будут использоваться для манипулирования данными:
7) Сформулировать 2 подзапроса (однотабличный и многотабличный), создайте их с помощью языка SQL и покажите результаты их выполнения.
8) Сформулировать 2 многотабличных запроса, создать их на SQL и показать результаты их выполнения.
Проектирование базы данных
Рассмотрим основное отношение, соответствующее базе данных «Сведения о клиентах и заказах».
Код клиента, Название, Имя, Фамилия, Адрес счета, Город, Регион, Индекс, Страна, Должность, Телефон, Факс, Сумма долга, Код заказа, Код клиента, Код сотрудника, Номер заказа, Дата заказа, Модель, Серийный номер, Описание, Дата завершения, Ставка налога.
Данное отношение находится в первой нормальной форме, поскольку все его атрибуты являются неделимыми.
Определим атрибуты и их типы значений:
Используя метод нормальных форм, нормализуем данное отношение путем декомпозиции его на несколько отношений
Данное отношение находится в первой нормальной форме, т.к. все атрибуты являются неделимыми. Устраним частичную зависимость и переведем это отношение во вторую нормальную форму путем декомпозиции основного отношения:
1) Код клиента, Название, Адрес счета, Город, Регион, Индекс, Страна, Телефон, Факс, Сумма долга.
2) Код сотрудника. Имя, Фамилия, Должность.
3) Номер заказа, Дата заказа, Код сотрудника, Код клиента, Модель, Серийный номер, Дата завершения, Ставка налога.
4) Модель, Описание.
Данные отношения, кроме третьего, находятся в третьей нормальной форме. Отношение 3 находится во второй нормальной форме, поскольку неключевой атрибут Модель зависит от атрибута Серийный номер. Устраним частичную зависимость и переведем это отношение в третью нормальную форму путем декомпозиции отношения 3 на два отношения:
1. Номер заказа, Дата заказа, Код сотрудника, Код клиента, Серийный номер, Дата завершения, Ставка налога.
2. Серийный номер, Модель.
Получим следующие таблицы:
1) Код клиента, Название, Адрес счета, Город, Регион, Индекс, Страна, Телефон, Факс, Сумма долга.
2) Код сотрудника. Имя, Фамилия, Должность.
3) Номер заказа, Дата заказа, Код сотрудника, Код клиента, Серийный номер, Дата завершения, Ставка налога.
4) Серийный номер, Модель.
5) Модель, Описание.
Определение ключей и создание связей схемы связей.
Определим первичные и внешние ключи в таблицах.
В 1-ой таблице первичный ключ — Код клиента.
Во 2-ой таблице первичный ключ- Код сотрудника.
В 3-ей таблице первичный ключ- Номер заказа. Внешние ключи — Код сотрудника, Код клиента, Серийный номер.
В 4-ой таблице первичный ключ- Серийный номер, внешний ключ — Модель.
В 5-ой таблице первичный ключ- Модель.
Создадим схему связей между атрибутами таблиц для обеспечения целостности БД.
Создадим схему связей между атрибутами таблиц для обеспечения целостности БД.
Создание файла базы данных в СУБД Microsoft Access 2003 .
Создадим файл спроектированной БД в СУБД Microsoft Access 2003. Для этого запустим программу Microsoft Access 2003, выберем в окне команду Создать файл, затем в окне Создание файла выберем пункт Новая база данных.
Запросы SQL на создание всех спроектированных таблиц.
1. CREATE TABLE Клиенты ([Код клиента] INT PRIMARY KEY, Название CHAR(30) NOT NULL, [Адрес счета] CHAR(20), Город CHAR(15), Регион CHAR(15), Телефон CHAR(10), Факс CHAR(10), Индекс CHAR(6), Страна CHAR(15));
2. CREATE TABLE Сотрудники ([Код сотрудника] INT PRIMARY KEY, Имя CHAR(15) NOT NULL, Фамилия CHAR(15) NOT NULL, Должность CHAR(20));
3. CREATE TABLE Товары ([Серийный номер] CHAR(8) PRIMARY KEY, Модель CHAR(10) NOT NULL);
4. CREATE TABLE Модели (Модель CHAR(10) PRIMARY KEY, Описание CHAR(50));
5. CREATE TABLE Заказы ([Код заказа] INT PRIMARY KEY, [Дата заказа] DATE, [Код сотрудника] INT, [Код клиента] INT, [Серийный номер] CHAR(8), [Дата завершения] DATE, [Ставка налога] INT);
Изменение структуры таблиц с помощью SQL запроса
Из таблицы клиенты удалим атрибуты Регион и Факс.
ALTER TABLE Клиенты DROP COLUMN Факс, Регион;
Добавим в таблицу Модели атрибут Выпуск.
ALTER TABLE Модели ADD COLUMN Выпуск INT);
Внесение данных в таблицы.
В окне базы данных выберем объект Таблицы, установим курсор на нужную таблицу и нажмем кнопку Открыть. В режиме Таблицы введем записи в таблицы:
Запросы на языке SQL для манипулирования данными в базе MS Access
1) Запрос на добавление:
INSERT INTO Заказы ( [Номер заказа], [Дата заказа], [Код сотрудника], [Код клиента], [Серийный номер], [Дата завершения], [Ставка налога] )
VALUES (11, #02/22/2009#, 8, 9, ‘31548722 ‘, #02/22/2009#, 19);
2) Запрос на удаление:
DELETE [Код сотрудника]
FROM Сотрудники
WHERE [Код сотрудника]=7;
3) Запрос на обновление:
UPDATE Заказы SET Заказы.[Ставка налога] = [Заказы]![Ставка налога]+1;
4) Запрос на создание таблицы «Сотрудники и заказанные модели» на основе имеющихся:
SELECT Сотрудники.Фамилия, Сотрудники.Имя, Товары.Модель, Модели.Описание INTO [Сотрудники и заказанные модели]
FROM (Модели INNER JOIN Товары ON Модели.Модель = Товары.Модель) INNER JOIN (Сотрудники INNER JOIN Заказы ON Сотрудники.[Код сотрудника] = Заказы.[Код клиента]) ON Товары.[Серийный номер] = Заказы.[Серийный номер];
Запросы SQL для выборк данных в базе MS Access
Создадим 4 запроса на выборку (с обязательным использованием агрегатных функций и сортировки данных).
1. Выберем информацию о заказах и клиентах на телевизоры 2010 года выпуска:
SELECT Заказы.[Номер заказа], Заказы.[Дата заказа], Клиенты.Название, Заказы.[Серийный номер]
FROM (Модели INNER JOIN Товары ON Модели.Модель = Товары.Модель) INNER JOIN (Клиенты INNER JOIN Заказы ON Клиенты.[Код клиента] = Заказы.[Код клиента]) ON Товары.[Серийный номер] = Заказы.[Серийный номер]
WHERE (((Модели.Выпуск)=2007))
ORDER BY Заказы.[Номер заказа];
Номер заказа | Дата заказа | Название | Серийный номер |
---|---|---|---|
8 | 19.02.2009 | Фостергруп | 40110057 |
9 | 22.02.2009 | Мвидео | 36985014 |
2. Подсчитаем количество заказанных товаров по клиентам и отсортируем в порядке возрастания количества:
SELECT Клиенты.[Код клиента], Клиенты.Название, Count(Заказы.[Серийный номер]) AS Количество
FROM Клиенты INNER JOIN Заказы ON Клиенты.[Код клиента] = Заказы.[Код клиента]
GROUP BY Клиенты.[Код клиента], Клиенты.Название
ORDER BY Count(Заказы.[Серийный номер]);
Код клиента | Название | Количество |
---|---|---|
9 | ТехноЦентр | 1 |
8 | Наномир | 1 |
5 | Мвидео | 1 |
4 | Фостергруп | 1 |
3 | Телерынок | 1 |
1 | ТелеСтиль | 1 |
2 | Плазмацентр | 2 |
3. Выберем из таблицы Заказы номера заказов и серийные номера товаров, а так же вычислим количество дней исполнения заказа:
SELECT Заказы.[Номер заказа], Заказы.[Серийный номер], Заказы![Дата завершения]-Заказы![Дата заказа] AS [Количество дней]
FROM Заказы
ORDER BY Заказы.[Номер заказа];
Номер заказа | Серийный номер | Количество дней |
---|---|---|
2 | 18012205 | 1 |
3 | 36512001 | 0 |
5 | 21777745 | 3 |
6 | 11446804 | 1 |
7 | 13241114 | 0 |
8 | 40110057 | 5 |
9 | 36985014 | 2 |
11 | 31548722 | 0 |
4. Выберем данные по сотрудникам с должностями ст. продавец или продавец 1 кат. и подсчитаем количество оформленных ими заказов:
SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Должность, Count(Заказы.[Номер заказа]) AS [Количество заказов]
FROM Сотрудники INNER JOIN Заказы ON Сотрудники.[Код сотрудника] = Заказы.[Код клиента]
GROUP BY Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Должность
HAVING (Сотрудники.Должность=»ст. продавец» OR Сотрудники.Должность=»продавец 1кат.»);
Фамилия | Имя | Должность | Количество заказов |
---|---|---|---|
Балышев | Николай | продавец 1кат. | 2 |
Плюснин | Александр | продавец 1кат. | 1 |
Шатова | Мария | продавец 1кат. | 1 |
Создание однотабличного подзапроса на языке SQL:
С помощью однотабличного подзапроса выберем из таблицы Заказы данные о заказах, сделанных клиентами из города Тверь. Выбор кодов клиента по городу осуществим в виде подзапроса.
SELECT Заказы.[Номер заказа], Заказы.[Дата заказа], Заказы.[Код клиента]
FROM Заказы
WHERE (Заказы.[Код клиента]) In (SELECT [Код клиента] FROM Клиенты WHERE (Клиенты.Город=»Тверь»));
Номер заказа | Дата заказа | Код клиента |
---|---|---|
5 | 16.02.2009 | 1 |
6 | 19.02.2009 | 2 |
7 | 19.02.2009 | 2 |
11 | 22.02.2009 | 9 |
Создание многотабличного подзапроса SQL:
Выберем серийные номера и модели товаров из таблицы Товары, с последней датой заказа:
SELECT Товары.[Серийный номер], Товары.Модель, Заказы.[Дата заказа]
FROM Товары INNER JOIN Заказы ON Товары.[Серийный номер] = Заказы.[Серийный номер]
WHERE (Заказы.[Дата заказа]) In (SELECT Max([Дата заказа])
FROM Заказы);
Источник
Создание запроса на создание таблицы
В этой статье объясняется, как создать и выполнить запрос таблицы в Access. Вы можете воспользоваться запросом на создание таблицы, чтобы скопировать данные в таблицу, архивировать их или сохранить результаты запроса в виде таблицы.
Чтобы изменить или обновить часть данных в существующем наборе записей, например одно или несколько полей, вы можете использовать запрос на обновление. Дополнительные сведения о запросах на обновление см. в статье Создание и выполнение запроса на обновление.
Чтобы добавить записи (строки) в существующую таблицу, вы можете использовать запрос на добавление. Дополнительные сведения о запросах на добавление см. в статье Добавление записей в таблицу с помощью запроса на добавление.
В этой статье
Общие сведения о запросах на создание таблиц
Запрос на сделайте так, чтобы он извлекал данные из одной или нескольких таблиц, а затем загружал полученный набор в новую таблицу. Новая таблица может находиться в открытой базе данных или создать ее в другой базе данных.
Как правило, запросы на создание таблицы используются, если нужно скопировать или архивировать данные. Например, предположим, что у вас есть таблица (или несколько таблиц) с данными о продажах, которые используются в отчетах. Суммы продаж не меняются, так как транзакции выполнялись по крайней мере один день назад, а постоянное выполнение запроса для извлечения данных может занимать время, особенно если вы применяете сложный запрос к крупному хранилищу данных. Чтобы снизить рабочую нагрузку и получить удобный архив, вы можете загрузить данные в отдельную таблицу и использовать ее в качестве источника. При этом не забывайте, что данные в новой таблице — это моментальный снимок: они не связаны с исходными таблицами и не подключены к ним.
Создание запроса на создание таблице включает следующие основные этапы:
Включите базу данных, если она не подписана или не находится в надежном расположении. В противном случае не удастся выполнять запросы на изменение (добавление, обновление и создание таблиц).
В конструкторе запросов создайте запрос на выборку и настройте его так, чтобы он возвращал нужные записи. Вы можете выбрать данные из нескольких таблиц данных и выполнить денормализацию данных. Например, можно поместить данные клиентов, грузоотправителей и поставщиков в одну таблицу, что вы никогда не стали бы делать в рабочей базе данных с нормализованными таблицами. Вы также можете использовать условия в запросе для дальнейшей настройки или ограничения результирующего набора.
Дополнительные сведения о нормализации данных см. в статье Основные сведения о создании баз данных.
Преобразуйте запрос на выборку в запрос на создание таблицы, выберите расположение для новой таблицы и выполните запрос.
Не путайте запрос на создание таблицы с запросом на обновление или на добавление. Используйте запрос на обновление, когда вам нужно добавить или изменить данные в отдельных полях. Запрос на добавление нужен, чтобы добавлять новые записи (строки) в существующий набор записей в существующей таблице.
Создание запроса на создание таблицы
При составлении запроса на создание таблицы следует сначала создать запрос на выборку, а затем преобразовать его в запрос на создание таблицы. В запросе на выборку можно использовать вычисляемые поля и выражения, чтобы он возвращал нужные данные. Ниже описано, как создать и преобразовать запрос. Если нужный запрос на выборку уже создан, переходите непосредственно к инструкциям по преобразованию запроса на выборку и выполнению запроса на создание таблицы.
Создание запроса на выборку
Примечание: Если запрос на выборку, возвращающий нужные данные, уже создан, перейдите к следующему действию.
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Дважды щелкните таблицы, из которых вы хотите получить данные. Каждая таблица отображается в верхней части конструктора запросов. Завершив добавление таблиц, нажмите кнопку Закрыть.
В каждой таблице дважды щелкните поля, которые вы хотите использовать в запросе. Каждое поле появится в пустой ячейке в строке Поле на бланке. На рисунке показан бланк с несколькими добавленными полями таблицы.
При необходимости добавьте выражения в строку Поле.
Вы также можете добавить любые условия в строку Условие отбора на бланке.
Нажмите кнопку выполнить, чтобы выполнить запрос и отобразить результаты в таблицу.
Настраивайте поля, выражения или условия и повторно выполняйте запрос, пока он не будет возвращать данные, которые вы хотите поместить в новую таблицу.
Преобразование запроса на выборку
Откройте запрос на выборку в Конструкторе или перейдите в Конструктор. В Access это можно сделать несколькими способами:
Если запрос открыт в режиме таблицы, щелкните правой кнопкой мыши вкладку документа запроса и выберите пункт Конструктор.
Если запрос закрыт, щелкните его правой кнопкой мыши в области навигации и выберите в контекстном меню пункт Конструктор.
На вкладке Конструктор в группе Тип запроса нажмите кнопку Создание таблицы.
Откроется диалоговое окно Создание таблицы.
В поле Имя таблицы введите имя новой таблицы.
Щелкните стрелку вниз и выберите имя существующей таблицы.
Выполните одно из указанных ниже действий.
Помещение новой таблицы в текущую базу данных
Выберите параметр Текущая база данных, если он еще не выбран, и нажмите кнопку ОК.
Нажмите кнопку » » и нажмите кнопку «Да», чтобы подтвердить операцию.
Примечание: При замене существующей таблицы эта таблица сначала удаляется, при этом запрашивается подтверждение удаления. Нажмите кнопку Да, а затем нажмите кнопку Да еще раз, чтобы создать новую таблицу.
Помещение новой таблицы в другую базу данных
Щелкните элемент В другой базе данных.
В поле Имя файла введите расположение и имя файла другой базы данных.
Нажмите кнопку Обзор, в новом диалоговом окне Создание таблицы укажите расположение другой базы данных и нажмите кнопку ОК.
Нажмите кнопку ОК, чтобы закрыть первое диалоговое окно Создание таблицы.
Нажмите кнопку » » и нажмите кнопку «Да», чтобы подтвердить операцию.
Примечание: При замене существующей таблицы эта таблица сначала удаляется, при этом запрашивается подтверждение удаления. Нажмите кнопку Да, а затем нажмите кнопку Да еще раз, чтобы создать новую таблицу.
Дополнительные сведения об условиях запроса и выражениях
Ранее в статье упоминались условия запроса и выражения. Условие запроса — это правило, служащее для определения записей, которые должен возвращать запрос. Условия используются, если вам нужны не все записи в наборе данных. Такое условие, как «Воронеж» OR «Рязань» OR «Москва», возвращает только записи для этих городов.
Дополнительные сведения об использовании условий см. в статье Примеры условий запроса.
Выражение — это сочетание математических или логических операторов, констант, функций и имен полей, элементов управления и свойств, результатом вычисления которого является одно значение. Выражения используются для получения данных, которые не хранятся непосредственно в таблице. Например, выражение [ ЦенаЗаЕдиницу ]*[Количество] умножает значение в поле «ЦенаЗаЕдиницу» на значение в поле «Количество». Выражения можно использовать различными способами, и процесс их создания и работы с ними может быть довольно сложным.
Дополнительные сведения о создании и использовании выражений см. в статье Создание выражений.
Предотвращение блокировки запроса режимом отключения
По умолчанию при открытии базы данных, которая не сохранена в надежном расположении или не является доверенной, Access не позволяет выполнять никакие запросы на изменение (запросы на добавление, обновление, удаление и создание таблиц).
Если при попытке выполнения запроса на изменение ничего не происходит, проверьте, не появляется ли в строке состояния Access следующее сообщение:
Данное действие или событие заблокировано в режиме отключения.
Если выводится это сообщение, сделайте следующее:
На панели сообщений (сразу под лентой) нажмите кнопку Включить содержимое.
Источник