Запросы к нескольким таблицам — студенческий портал

Инфоурок › Информатика ›Презентации›Курс «Введение в язык SQL (запросы к нескольким таблицам)»

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Запросы к нескольким таблицам - Студенческий портал

Описание презентации по отдельным слайдам:

1 слайд Описание слайда:

Введение в язык SQL 2.Построение запросов к нескольким таблицам к.т.н. Герасимов Н.А., Магин Б.Е.

2 слайд Описание слайда:

Занятие 2. Построение запросов к нескольким таблицам Тема занятия 2: использование в запросах нескольких таблиц, Для демонстрации примеров SQL-запросов будем использовать учебную базу данных Avto.mdb, описание которой дано в приложении 1. к.т.н. Герасимов Н.А., Магин Б.Е.

3 слайд Описание слайда:

3.1.

Объединение таблиц в запросах и выполнение операции JOIN (объединение) Предположим, нам надо получить ответ на вопрос: сколько заказов сделал покупатель с фамилией Семенов, причем в результате мы хотим получить таблицу, которая содержит только 4-ре следующих столбца: номер заказа, дата заказа, фамилия покупателя и фамилия продавца. Понятно, что из одной таблицы Orders (Заказы) мы всю необходимую информацию по данному запросу не получим, т.к. таблица orders не содержит полей sname и cname. Поэтому для построения этого запроса необходимо привлечь таблицы Customers и Salespeople. к.т.н. Герасимов Н.А., Магин Б.Е.

4 слайд Описание слайда:

Построение запроса к нескольким таблицам с помощью QBE Для построения запросов над несколькими таблицами в Access удобно пользоваться режимом Конструктор (ЗапросыКонструктор), который открывает окно построения запроса QBE, состоящее из двух частей: зона таблиц (сверху) и зона для макета запроса (снизу) (более подробно о QBE см. Занятие 1). В верхнюю зону поместим три таблицы Customers, Orders и Salespeople, в нижнюю часть (зона запроса) выберем столбцы: onum и odate из таблицы orders, cname из таблицы Customers и sname из таблицы Salespeople, как показано на рис. ниже. к.т.н. Герасимов Н.А., Магин Б.Е.

5 слайд Описание слайда:

Вид запроса в QBE Пример построения запроса с тремя таблицами в QBE к.т.н. Герасимов Н.А., Магин Б.Е.

6 слайд Описание слайда:

Пояснение: В столбце с именем покупателя (cname.customers) запишем условие отбора записей (“Семенов”) (см.рис выше). Выполнение запроса даст следующий результат, который показан на рис. ниже, т.е. будут отобраны только строки с заказами, которые обслужили покупателя с фамилией «Семенов». к.т.н. Герасимов Н.А., Магин Б.Е.

7 слайд Описание слайда:

Результат запроса к нескольким таблицам Результат запроса к БД «Авто.mdb» к.т.н. Герасимов Н.А., Магин Б.Е.

8 слайд Описание слайда:

Посмотрим, как выглядит это запрос в режиме SQL, для чего войдем в редактор языка SQL через соответствующую пиктограмму или выполнив команду ВидЗапрос на SQL.

Открывается окно редактора SQL и теперь мы можем рассмотреть текст запроса на языке SQL: SELECT orders.onum, orders.odate, customers.cname, Salespeople.sname FROM Salespeople INNER JOIN (customers INNER JOIN orders ON customers.cnum = orders.

cnum) ON Salespeople.snum = orders.snum WHERE (((customers.cname)=»Семенов»)); к.т.н. Герасимов Н.А., Магин Б.Е.

9 слайд Описание слайда:

Отметим, что имена столбцов в строке с ключевым словом SELECT записаны в полной синтаксической структуре: .. Это необходимо, чтобы каждый столбец был четко приписан к соответствующей таблице.

В строке с ключевым словом FROM используются все три таблицы Orders, Salespeple и Customers, которые объединены с помощью оператора INNER JOIN и с указанием соответствующих условий связи между ними ( в нашем случае customers.cnum = orders.

cnum и salespeople.snum = orders.snum). к.т.н. Герасимов Н.А., Магин Б.Е.

10 слайд Описание слайда:

Построение запроса с объединением таблиц Разобраться в структуре такого SQL сразу достаточно трудно, поэтому попытаемся создать аналогичный запрос вручную с помощью редактора SQL-запросов, путем построения сначала более простого запроса на объединение двух таблиц, а затем добавим в него необходимые ограничения с помощью условий.

Запрос сформулируем следующим образом отобрать все заказы для продавцов, которые живут в городе «Тула» (в Туле живет один продавец) и показать только три столбца (код заказа, дата заказа и фамилию продавца). Очевидно, что в построении запроса должны участвовать две таблицы: orders и Salespeople к.т.н. Герасимов Н.А., Магин Б.Е.

11 слайд Описание слайда:

Сначала составим запрос без условия на отбор строк используя строки с ключевыми словами SELECT и FROM: SELECT orders.onum, orders.odate, Salespeople.

sname FROM Orders, Salespeople Результатом запроса будет объединение строк таблиц Orders и Salespeople по полям orders.onum и salespeople.sname и мы получим таблицу из 30 записей как показано на рис. 3.3.

ниже, которая отражает всевозможные комбинации указанных столбцов.

12 слайд Описание слайда:

Объединение двух таблиц Результат объединения двух таблиц Orders и Salespeople к.т.н. Герасимов Н.А., Магин Б.Е.

13 слайд Описание слайда:

Часть строк этого результата являются лишними (не реальные), т.к. не отвечают нашему условию и не содержатся в таблице orders.

Поэтому чтобы отобрать только «реальные строки» необходимо добавить условие, отражающее межсущностную связь (межу таблицами Salespeople и orders): Salespeople.snum = orders.

snum, которое требует отобрать только те строки, в которых номер продавца в двух таблицах совпадает. SQL-запрос с дополнительным условием будет выглядеть так: к.т.н. Герасимов Н.А., Магин Б.Е.

14 слайд Описание слайда:

Запрос с дополнительным условием SELECT orders.onum, orders.odate, Salespeople.sname FROM Orders, Salespeople WHERE Salespeople.snum = orders.snum Теперь получим таблицу с «реальными» строками, которые отражают все строки в таблице orders и фамилии продавцов. к.т.н. Герасимов Н.А., Магин Б.Е.

15 слайд Описание слайда:

Запрос к двум таблицам Запрос над двумя таблицами с дополнительным условием (Salespeople.snum = orders.snum) SELECT orders.onum, orders.odate, Salespeople.sname FROM Orders, Salespeople WHERE Salespeople.snum = orders.snum

16 слайд Описание слайда:

Добавление условия на селекцию строк Теперь в текст SQL-запроса добавим еще одно условие отбора строк: живущие в городе «Тула» (или Salespeople.saddress ='Тула') и соединим его при помощи логического оператора AND с условием в строке с ключевым словом WHERE.

Полный запрос, отвечающий на посталенный вопрос показан ниже: SELECT orders.onum, orders.odate, Salespeople.sname FROM Orders, Salespeople WHERE (Salespeople.snum = orders.snum) AND (Salespeople.

saddress ='Тула'); В результате получим искомую таблицу с одной строкой, отвечающую на поставленный вопрос (см. рис.3.5).

17 слайд Описание слайда:

Запрос к нескольким таблицам с условием Запрос над двумя таблицами с условием Salespeople.saddress ='Тула' SELECT orders.onum, orders.odate, Salespeople.sname FROM Orders, Salespeople WHERE (Salespeople.snum = orders.snum) AND (Salespeople.saddress ='Тула');

18 слайд Описание слайда:

Сравнение SQL запросов Аналогичный результат можно получить, используя оператор INNER JOIN для объединения таблиц с включением условия объединения в строку с ключевым словом FROM.

В этом случае запрос на SQL будет выглядеть следующим образом: SELECT Orders.onum, Orders.odate, Salespeople.sname FROM Salespeople INNER JOIN Orders ON Salespeople.snum = Orders.snum WHERE Salespeople.

saddress ='Тула'; к.т.н. Герасимов Н.А., Магин Б.Е.

19 слайд Описание слайда:

Замечание: Следует отметить, что поле snum в таблице Salespeople является первичным ключем (PK-primary key), а поле snum в таблице orders – внешним ключом (FK – foreign key), который используется для связи и организации проверки целостности.

Более подробно о целостности в реляционных базах данных смотри в работе [1,2].

Таким образом, ключевое слово INNER JOIN с условием на первичных и внешних ключах позволяет упростить структуру запроса над несколькими таблицами, оставляя в строке с ключевым словом WHERE только условия над обычными полями. к.т.н. Герасимов Н.А., Магин Б.Е.

20 слайд Описание слайда:

3.2. Объединение копий таблиц В сложных запросах можно объединять не только разные таблицы, но и копии таблиц. Например, если необходимо найти все пары продавцов, которые имеют одинаковые комиссионные.

Для этого с помощью Конструктора создадим запрос как показано на рис. 3.6. Здесь таблица Salespeople выбрана два раза, поэтому в зоне таблиц находится таблица Salespeople и ее копия Salespeople_1. к.т.н. Герасимов Н.А.

, Магин Б.Е.

21 слайд Описание слайда:

Запрос над копиями одной таблицы Пример запроса над таблицей Salespeople и ее копией (Salespeople_1). к.т.н. Герасимов Н.А., Магин Б.Е.

22 слайд Описание слайда:

Построение SQL запроса над копиями одной таблицы Текст соответствующего SQL-запроса показан ниже: SELECT Salespeople.sname, Salespeople_1.sname, Salespeople_1.comm FROM Salespeople, Salespeople AS Salespeople_1 WHERE (((Salespeople_1.comm)=[Salespeople].

[comm]) Имя второй таблицы и ее синоним (Salespeople AS Salespeople_1) содержится в строке с ключевым словом FROM. Результат этого запроса будет содержать все комбинации пар фамилий, которые имею одинаковый рейтинг, в том числе и строки с идентичными фамилиями (см. рис. ниже). к.т.н.

Герасимов Н.А., Магин Б.Е.

23 слайд Описание слайда:

Запрос над копиями одной таблицы Результат запроса с двумя таблицами Salespeople. (найти все пары продавцов, которые имеют одинаковые комиссионные) SELECT Salespeople.sname, Salespeople_1.sname, Salespeople_1.comm FROM Salespeople, Salespeople AS Salespeople_1 WHERE (((Salespeople_1.comm)=[Salespeople].[comm])

24 слайд Описание слайда:

Модификация запроса с копиями таблицы Исключить строки с одинаковыми значениями в первом и втором столбцах можно, добавив через логическую связку AND условие типа: Salespeople_1.snum < Salespeople.snum (т.е. «номер продавца в первой таблице должен быть строго меньше номера во второй таблице»).

Это позволит исключить строки типа «Веселов=Веселов». В этом случае полный запрос будет выглядеть как показано ниже: SELECT Salespeople.sname, Salespeople_1.sname, Salespeople_1.comm FROM Salespeople, Salespeople AS Salespeople_1 WHERE (((Salespeople_1.comm) = [Salespeople].[comm]) AND ((Salespeople_1.snum) < [Salespeople].

[snum])); к.т.н. Герасимов Н.А., Магин Б.Е.

25 слайд Описание слайда:

Пояснение: Результат запроса с дополнительным условием показан на рис.ниже. Здесь отобрана только одна строка, в которой продавец «Трофимов» имеет комиссионные такие же как и продавец «Змеев», что полностью соответствует поставленному вопросу. к.т.н. Герасимов Н.А., Магин Б.Е.

26 слайд Описание слайда:

Результат запроса Рис.3.8. Результат отбора строк с дополнительным условием (Salespeople_1.snum < Salespeople.snum); к.т.н. Герасимов Н.А., Магин Б.Е.

27 слайд Описание слайда:

Модификация запроса Следует отметить, что конструктор, строит синонимы таблиц по упрощенному алгоритму. В общем случает можно использовать любые синонимы для выбранных таблиц.

Читайте также:  Строение земной коры - студенческий портал

Вот как будет выглядеть тот же запрос, если мы для первой таблицы Salespeople будем использовать букву A, а для второй таблицы Salespeople — ,букву B: SELECT A.sname, B.sname, B.comm FROM Salespeople AS A, Salespeople AS B WHERE B.comm = A.comm AND B.snum < A.snum; Результат показан на рис.ниже.

Таким образом, вводя синонимы исходным таблицы базы данных, пользователь может существенно расширить возможности при построении сложных запросов над несколькими таблицами.

28 слайд Описание слайда:

3.3.Вложенные запросы Язык SQL позволяет строить вложенные запросы, т.е. такие запросы, которые в условиях используют результаты работы другого запроса. Например, нам известна фамилия продавца ( пусть это «Курочкин»), но не помним его номера, а нам необходимо знать все его заказы.

Этот запрос можно выполнить в два этапа: — сначала найти по таблице Salespeople код продавца (SELECT snum FROM Salespeople WHERE sname = «Курочкин»); — затем, по коду продавца (код продавца с фамилией «Курочкин» равен ‘0001’) выбрать из таблицы orders все его заказы (SELECT * FROM Orders WHERE snum=’0001’).

29 слайд Описание слайда:

Логика вложенного запроса Такой способ получения результата не очень удобный, и его можно получить другим способом – построением вложенного запроса. Для этого в Конструкторе в строке «Условия запроса» введем запрос на поис кода продавца. На рис.ниже. показано как выглядит вложенный запрос в Конструкторе. Вычисление вложенного запроса Вычисление основного запроса

30 слайд Описание слайда:

Построение вложенного запроса в QBE Построение вложенного запроса к.т.н. Герасимов Н.А., Магин Б.Е.

31 слайд Описание слайда:

SQL-запрос с вложенным запросом Текст SQL-запроса с вложенным запросом показан ниже: SELECT * FROM Orders WHERE snum=(SELECT snum FROM Salespeople WHERE sname = «Курочкин») к.т.н. Герасимов Н.А., Магин Б.Е.

32 слайд Описание слайда:

Пояснение: Важным условием корректности исполнения вложенных запросов, является однозначность результата «внутреннего» (вложенного) запроса. Нашем случае мы имеем однозначный результат внутреннего запроса ( код продавца равен ‘0001’). Результ выполнения вложенного запроса показан на рис. 9.10.

33 слайд Описание слайда:

Выполнение запроса с вложенным подзапросом Результат SQL-запроса с вложенным запросом SELECT * FROM Orders WHERE snum=(SELECT snum FROM Salespeople WHERE sname = «Курочкин»)

34 слайд Описание слайда:

Усложнение запроса Более сложный вложенный запрос, построенный на основании предыдущего запроса может выглядеть так: SELECT orders.onum as НОМЕР, orders.odate as ДАТА, Salespeople.sname as ФАМИЛИЯ, price.pname as МАРКА, orders.amount as ЦЕНА FROM Salespeople INNER JOIN (price INNER JOIN orders ON price.pnum = orders.

pnun) ON Salespeople.snum = orders.snum WHERE Salespeople.snum =(SELECT snum FROM Salespeople WHERE sname = «Курочкин»); Результат этого запроса, который использует несколько таблиц (Orders, Salespeople и Price) и содержит встроенный запрос, который по фамилии ( «Курочкин» ) определяет код продавца показан на рис. ниже.

35 слайд Описание слайда:

Результат Результат сложного запроса с несколькими таблицами и встроенным запросом. к.т.н. Герасимов Н.А., Магин Б.Е.

Общая информация

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

Источник: https://infourok.ru/kurs-vvedenie-v-yazik-sl-zaprosi-k-neskolkim-tablicam-2723388.html

SQL-запрос на выборку из нескольких таблиц

Вы здесь:
Главная — MySQL — SQL — SQL-запрос на выборку из нескольких таблиц

Запросы к нескольким таблицам - Студенческий портал

Я уже писал о самых различных SQL-запросах, но пришло время поговорить и о более сложных вещах, например, SQL-запрос на выборку записей из нескольких таблиц.

Когда мы с Вами делали выборку из одной таблицы, то всё было очень просто:

SELECT названия_нужных_полей FROM название_таблицы WHERE условие_выборки

Всё очень просто и тривиально, но при выборке сразу из нескольких таблиц становится всё несколько сложнее. Одна из трудностей — это совпадение имён полей. Например, в каждой таблице есть поле id.

Давайте рассмотрим такой запрос:

SELECT * FROM table_1, table_2 WHERE table_1.id > table_2.user_id

Многим, кто не занимался подобными запросами, покажется, что всё очень просто, подумав, что здесь добавились только названия таблиц перед названиями полей. Фактически, это позволяет избежать противоречий между одинаковыми именами полей. Однако, сложность не в этом, а в алгоритме работы подобного SQL-запроса.

Перед тем как читать дальше, попробуйте самостоятельно сообразить, как будет работать подобный SQL-запрос. Что он должен вывести?

Алгоритм работы следующий: берётся первая запись из table_1. Берётся id этой записи из table_1. Дальше полностью смотрится таблица table_2. И добавляются все записи, где значение поля user_id меньше id выбранной записи в table_1.

Таким образом, после первой итерации может появиться от 0 до бесконечного количества результирующих записей. На следующей итерации берётся следующая запись таблицы table_1. Снова просматривается вся таблица table_2, и вновь срабатывает условие выборки table_1.id > table_2.user_id. Все записи, удовлетворившие этому условию, добавляются в результат.

На выходе может получиться огромное количество записей, во много раз превышающих суммарный размер обеих таблиц.

Если Вы поняли, как это работает после первого раза, то очень здорово, а если нет, то читайте до тех пор, пока не вникните окончательно. Если Вы это поймёте, то дальше будет проще.

Предыдущий SQL-запрос, как таковой, редко используется. Он был просто дан для объяснения алгоритма выборки из нескольких таблиц. А теперь же разберём более приземистый SQL-запрос.

Допустим, у нас есть две таблицы: с товарами (есть поле owner_id, отвечающего за id владельца товара) и с пользователями (есть поле id).

Мы хотим одним SQL-запросом получить все записи, причём чтобы в каждой была информация о пользователе и его одном товаре. В следующей записи была информация о том же пользователе и следущем его товаре.

Когда товары этого пользователя кончатся, то переходить к следующему пользователю. Таким образом, мы должны соединить две таблицы и получить результат, в котором каждая запись содержит информацию о пользователе и об одном его товаре.

Подобный запрос заменит 2 SQL-запроса: на выборку отдельно из таблицы с товарами и из таблицы с пользователями. Вдобавок, такой запрос сразу поставит в соответствие пользователя и его товар.

Сам же запрос очень простой (если Вы поняли предыдущий):

SELECT * FROM users, products WHERE users.id = products.owner_id

Алгоритм здесь уже несложный: берётся первая запись из таблицы users.

Далее берётся её id и анализируются все записи из таблицы products, добавляя в результат те, у которых owner_id равен id из таблицы users.

Таким образом, на первой итерации собираются все товары у первого пользователя. На второй итерации собираются все товары у второго пользователя и так далее.

Как видите, SQL-запросы на выборку из нескольких таблиц не самые простые, но польза от них бывает колоссальная, поэтому знать и уметь использовать подобные запросы очень желательно.

Полный курс по PHP и MySQL: http://srs.myrusakov.ru/php

Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так:

  2. Текстовая ссылка:Как создать свой сайт

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Источник: https://MyRusakov.ru/sql-select-several.html

Многотабличные запросы SQL — CodeTown.ru

Здравствуйте! До сих пор в нашем курсе мы разбирали упражнения, которые оперировали данными только из одной таблицы. Сегодня мы это исправим и научимся делать запросы сразу к нескольким таблицам в одной базе данных.

Введение

Итак, в прошлых статьях, например по оператору SELECT в SQL, мы прописывали что то похожее:

SELECT cname FROM customers;

На самом деле изначально в языке SQL было предписано указывать поле, которое хотим выбрать в явном виде, а именно так:

SELECT customers.cname FROM customers;

Мы указываем через оператор доступа «точка» то поле, которое нужно. С течением времени, SQL стал гораздо умнее и понятнее, и на данный момент он сам понимает из какой таблице мы хотим выбрать поля, если речь идет о запросах с одной таблицей.

Если же обращаться к данным из нескольких таблиц, то хорошим тоном будет указывать явно поля, так как иногда в таблицах могут содержаться поля с одинаковыми названиями, а это потенциальная ошибка.

В SQL для многотабличных запросов продумали объединение таблиц несколькими способами, о них мы и поговорим подробнее.

Объединение таблиц в SQL

  • Начнем с самого простого способа, в котором будем явно указывать поля и условия, при котором их нужно выводить. Вот пример:
  • Вывести попарно продавцов и покупателей из одного города.
  • Поскольку, нужно вывести попарно то придется перебрать все комбинации — SQL сделает это:

SELECT salespeople.sname, customers.cname, customers.

city
FROM salespeople, customers
WHERE salespeople.city = customers.

city

snamecnamecity
Колованов Деснов Москва
Плотников Деснов Москва
Проворов Деснов Москва
Колованов Краснов Москва
Плотников Краснов Москва
Проворов Краснов Москва
Петров Кириллов Тверь
Шипачев Пушкин Челябинск
Мозякин Лермонтов Одинцово
Колованов Белый Москва
Плотников Белый Москва
Проворов Белый Москва
Колованов Чудинов Москва
Плотников Чудинов Москва
Проворов Чудинов Москва
Мозякин Лосев Одинцово
Читайте также:  Журналы по дошкольной педагогике - студенческий портал

Это пример объединения таблиц с использованием явного определения полей. Такой запрос вполне понятен, но в будущем если будет возможность обойтись без префиксов, мы будем обходиться без них.

Объединение таблиц с помощью отношений

В SQL используются математические относительные выражения («=», «>»,»

Источник: https://codetown.ru/sql/mnogotablichnye-zaprosy/

GOUSPO студенческий портал! » Технология разработки таблиц баз данных

  • admin
  • Проектирование базы данных и создание таблиц(5 ч)
  • Технология разработки таблиц баз данных
  • Процесс создания таблиц баз данных можно подразделить на следующие этапы:
  • — разработка физической модели данных;
  • — создание таблицы с помощью Конструктора таблиц;
  • — установление связей между таблицами;
  • — заполнение таблиц данными.

Разработка физической модели данных.Прежде чем включит компьютер и запустить ACCESS, желательно с карандашом руках составить обязательные характеристики объектов БД, т.е. физическую модель данных:

  1. —        установить номенклатуру признаков описания объекта (состав и число полей);
  2. —        установить характеристики каждого поля таблицы;
  3. —        оформить результаты в табличном виде.

После того как состав признаков описания объектов и соответ­ствующие им характеристики полей продуманы, можно присту­пить к созданию таблицы в среде ACCESS. В имеющихся версиях этой системы последовательность действий практически одина­кова. Отличия состоят лишь в некоторой разнице оформления диалоговых окон.

Таблица для описания характеристик полей БД

Состав признаков объектов БД Характеристики полей БД
№ п/п Признак Имя поля Тип данных Количество символов Точность
  • Создание таблицы с помощью Конструктора таблиц.Для со­здания таблицы с помощью Конструктора таблиц необходимо вы­полнить следующие действия:
  • —        включить компьютер и загрузить программное обеспечение Windows и Access;
  • —        после загрузки Access в появившемся диалоговом окне дваж­ды щелкнуть кнопкой по меню Файл и выбрать команду Создать;
  • —        в появившемся диалоговом окне Создание активизировать переключатель База данных, а затем щелкнуть мышью по кнопке ОК;
  • —        в следующем появившемся диалоговом окне Файл новой базы данных присвоить имя файлу, указав при этом имя директории (папки), где будет храниться БД; щелкнуть мышью по кнопке Создать.
  • В следующем появившемся диалоговом окне База данных акти­визировать закладку Таблица и выбрать команду Создать в режиме конструктора.
  • В появившемся диалоговом окне Конструктор таблиц создать структуру таблицы в соответствии с установленными со­ставом и характеристиками полей.
  • Конструктор таблиц содержит четыре информационных блока:
  • — имя поля;
  • — тип данных;
  • — описание;
  • — свойства поля.
  • В блоке Свойства поля имеется два окна (закладки): Общие    Подстановка.

Свойства поля Общие заполняются обязательно. В окне Подстановка можно задать список значений, который будет выводиться при вводе данных непосредственно в таблицу. Пользователь в этом случае должен будет щелкнуть мышью по нужному значению. Такие поля называют полями со списком.

  1. При задании имен полям таблицы необходимо руководствоваться следующими рекомендациями:
  2. —             имя поля не должно начинаться с пробела;
  3. —             в имени поля не должно быть знаков препинания, скобок, восклицательных знаков;
  4. —             не допускается повторение имен в таблице;

—             имена полей могут содержать до 255 символов. Имя следует задавать имя минимальным числом символов (это необходимо для минимизации объема памяти и времени поиска информации). Же­лательно, чтобы имя поля представляло аббревиатуру названия признака объекта, которое будет вводиться в ячейки поля.

  • Технология заполнения данных в строки информационных бло­ков Конструктора таблиц аналогична технологии работы с таблицами в текстовом редакторе WORD.
  • Заполнение информационных блоков следует производить последовательно для каждого поля. Рекомендуется следующий порядок заполнения информационных блоков:
  • —        ввести имя поля;
  • —        выбрать тип данных;
  • —        ввести в строку блока Описание характер вводимых значений в ячейку данного поля (в дальнейшем при заполнении таблицы этот комментарий выводится в стро­ку подсказки в нижней части экрана);
  • —        повторить указанные действия для всех остальных полей таблицы.

После того как имя поля введено в соответствии с изложенны­ми выше рекомендациями, выбираем для него тип данных. В Кон­структоре таблиц Microsoft Access выбор типа данных можно осу­ществить выбором из списка. В списке предлагаются следующие типы данных.

Текстовый. Поле данного типа может содержать до 255 симво­лов. Это могут быть любые символы, в том числе и цифры. В текстовое поле могут вводиться и одни цифры, если с ними не пред­полагается производить вычислений.

MEMO. Поле MEMO называют полем текстовых примечаний. Этот тип поля предназначен для ввода в него текстовой информа­ции длиной более 255 символов (в Access 2000 — до 65 535 симво­лов).

Этот тип данных отличается от текстового тем, что в таблице хранятся не сами данные, а ссылки на блоки данных, которые хранятся отдельно. Это значительно ускоряет обработку таблиц.

Поля MEMO не могут быть ключевыми или индексными.

Числовой. Этот тип данных для характеристик объектов базы; данных, которые могут участвовать в математических расчетах.

Дата/Время. Такой тип данных предназначен для указания даты  или времени, характеризующих конкретную запись таблицы (на­пример, дата поступления товара на склад или время начала и окончания работы пользователя в сети Интернет). В данное поле можно вводить даты с 100 по 9999 г.

Денежный. Этот тип данных аналогичен числовому. Отличается от него только характеристиками вводимых чисел. Точность числа не превышает четырех знаков после запятой. Целая часть может содержать до 15 десятичных разрядов. В конце числа могут быть проставлены обозначения валюты (р. или $).

Счетчик. Поле содержит уникальный (не повторяющийся) но­мер записи таблицы БД. Значения этого поля не обновляются.

Логический. Тип поля, параметры которого могут принимать только два значения, интерпретированные как ДА или НЕТ (Да/ Нет), Истина/Ложь, Включено/Выключено. Поля логического типа не могут быть ключевыми, но могут быть индексными.

OLE (OLE-объект). В ячейки поля данного типа вводятся ссыл­ки на приложения, разработанные для Windows. Это могут быть текстовые, графические и мультимедийные файлы. Объем храни­мых данных в ячейках данного поля ограничен только дисковым пространством компьютера.

Гиперссылка (Hyperlink).

Этот тип данных позволяет вставлять в поле гиперссылку, с помощью которой можно сослаться на лю­бой файл или фрагмент файла, находящегося на том же компью­тере, на котором находится таблица БД, или на любом компью­тере в локальной сети или сети Интернет.

Гиперссылка состоит из трех частей: адрес, указывающий путь к файлу; дополнительный адрес, указывающий положение фрагмента внутри файла или стра­ницы текста; отображаемый текст. Каждая часть гиперссылки мо­жет содержать до 2048 символов.

Мастер подстановок. При выборе этого типа имеется возмож­ность создать фиксированный список значений, которые могут принимать данные, заносимые в ячейки поля.

После установления имени и типа данных следует поместить курсор в соответствующую строку блока Описание и ввести комментарий, позволяющий пользователю правильно вводить инфор­мацию при заполнении таблицы.

Рекомендуется обязательно вводить комментарий, особенно для тех случаев, когда в обозначении имени или подписи поля со­держится недостаточно информации для правильного ввода данных.

После ввода необходимо перейти к блоку Свой­ства поля, разделу Общие и задать полю необходимые свойства. ВКонструкторе таблиц каждому полю в зависимости от типа данных автоматически (по умолчанию) задается определенный на­бор свойств. Конструируя таблицу, эти свойства можно изменять и соответствии с конкретными требованиями к данным.

  1. Имя таблицы.При задании имени таблицы необходимо учесть следующие рекомендации:
  2. —        имя поля должно отражать содержание данных в таблице (класс объектов);
  3. —        в имени таблицы не должно быть знаков препинания, ско­бок, восклицательных знаков;
  4. —        имя таблицы не должно начинаться с пробела;
  5. —        в одном файле БД не должно быть таблиц с одинаковыми именами.

2. Ключевое поле.

Ключевые поля устанавливаются в тех случаях, когда данные таблицы БД должны быть связаны с данными других таблиц. Ключевое поле должно однозначно определять каждую запись в таблице. Значения данных ключевого поля не повторяются (не должны повторяться).

  • Ключевым может быть любое поле таблицы, если значения данных этого поля могут однозначно определить всю запись.
  • Если запись нельзя однозначно определить по значению данных одного поля, то устанавливают несколько ключевых полей.
  • В качестве ключевого поля можно выбрать поле типа Счетчик, которое однозначно определяет каждую запись таблицы.

Ключевое поле создается при описании свойств полей в Конструкторе таблиц. Для этого необходимо выделить необходимо поле и на панели инструментов щелкнуть по соответствующей кнопке.

Несколько замечаний по технологии разработки таблиц. Технология работы в Конструкторе таблиц полностью аналогична работе с таблицами в текстовом редакторе Word.

  1. При создании нескольких таблиц, содержащих одинаковые xaрактеристики объектов, следует применять технологию копирования данных. Для этого необходимо:
  2. 1)  открыть созданную ранее таблицу в режиме Конструктор;
  3. 2)  выделить поле, которое повторяется в другой таблице;
  4. 3)  скопировать выделенное поле (со всеми его свойствами) буфер обмена;
  5. 4)  при конструировании другой таблицы вставить из буфера обмена характеристики поля в соответствующую строку Конст­руктора таблиц.
  6. После того как структуры таблиц БД созданы, необходимо ус­тановить логические связи между таблицами.

3. Установление связей между таблицами.

Установление связей меж­ду таблицами необходимо для обеспечения целостности данных.

Целостность данных гарантирует защиту информации от слу­чайных изменений в связанных таблицах.

В связанных таблицах одна таблица является главной, а вто­рая — подчиненной. Главная таблица должна обязательно со­держать ключевое поле. Подчиненная таблица должна содер­жать аналогичное поле, которое не является ключевым.

  • Для установления связей между таблицами необходимо выпол­нить следующие действия.
  • —        на панели инструментов окна базы данных активизировать команду (значок) Схема данных;
  • —        в открывшееся окно построителя схемы данных вве­сти главную и подчиненные таблицы;
  • —        связать таблицы по одинаковому полю.
  • При этом параметре не допускается произвольное удаление или изменение записей в главной таблице.
  • Если установить (включить) параметры связи между таблица­ми Каскадное обновление связанных полей и Каскадное удаление свя­занных записей, то при любых изменениях данных в главной таб­лице произойдет автоматическое изменение связанных данных в подчиненной таблице.
  • После того как состав таблиц базы данных установлен, струк­тура каждой таблицы разработана, определены и установлены связи между таблицами, приступают к заполнению таблиц данными.

4. Заполнение таблиц данными.

  1. Технология ввода данных в табли­цы производится двумя способами:
  2. • непосредственным вводом данных в ячейки таблицы;
  3. •  организацией ввода данных через формы.
  4. При выборе первого способа ввода данных необходимо руко­водствоваться:
  5. • уменьшением вероятности ошибок оператора;
  6. • удобством организации самого процесса ввода данных.
  7. Если таблица базы данных имеет небольшое число полей, ко­торые размещаются на экране монитора, и не связана с другими таблицами, а также если вы создаете некоммерческую систему, то для ввода данных можно не создавать соответствующей формы.
  8. 5. Технология разработки запросов
  9. Основное назначение любой информационной системы состоит в предоставлении пользователю необходимой и достоверной информации.
  10. Обработка информации, содержащейся в таблицах БД, осуществляется с помощью запросов.
  11. Запросы представляют собой некоторый набор команд, предназначенных для поиска и обработки информации в таблицах по заданным пользователем условиям (значениям полей). В системе ACCESS в зависимости от выполняемых действий можно создавать следующие виды запросов:
  12. • на выполнение действий (на выборку);
  13. • обновление;
  14. • добавление;
  15. • удаление;
  16. •  создание таблиц.
Читайте также:  Виды речи - студенческий портал

Каждый из указанных видов запросов может отличаться технологией их создания и формой представления информации. В зависимости от технологии создания запросы можно подразделить на постоянные и параметрические.

  • Постоянные запросы — это запросы, условие выбора информации в которых не меняется в течение длительного времени.
  • Параметрические запросы — это запросы, параметры выбора информации в которых меняются.
  • Результатом выполнения запросов являются динамические таблицы. По форме динамические таблицы могут быть двух видов:
  • • таблицы, структура которых соответствует исходной таблице (таблицам) БД;
  • • таблицы, структура которых отличается от исходной таблицы (таблиц) БД, — так называемые кросс таблицы.

Структура кросс таблицы отличается от структуры исходной таблицы БД тем, что заголовками столбцов в такой таблице являются не имена, а значения выбранных полей. Такие таблицы формируются с помощью особых видов запросов — перекрестных запросов.

Перекрестные запросы — это запросы, которые применяются для выбора информации с одновременным группированием данных по значениям отдельных полей. При таком запросе данные  формируются в виде кросс таблицы.

Источник: http://gouspo.ru/?p=211

Выборка данных из нескольких таблиц (JOIN)

Довольно часто приходится выбирать данные из нескольких таблиц. Для показа в одном запросе данных из нескольких таблиц Oracle позволяет выполнять так называемые соединения таблиц.

Имеется два относящихся к соединению таблиц правила, о которых следует постоянно помнить.

Данные из двух (или нескольких) таблиц могут быть объединены в том случае, если у обеих таблиц имеется совпадающий столбец (с тем же самым или с другим именем) и этот столбец в одной из таблиц является первичным ключом (или частью этого ключа).

SELECT ename, deptno
FROM emp
ORDER BY deptno;
SELECT deptno, dname
FROM dept
ORDER BY deptno;
ENAMEDEPTNO
CLARK 10
KING 10
MILLER 10
JONES 20
FORD 20
ADAMS 20
SMITH 20
SCOTT 20
WARD 30
TURNER 30
ALLEN 30
JAMES 30
BLAKE 30
MARTIN 30
DEPTNODNAME
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS

Давайте рассмотрим пример оператора соединения (join), использующего традиционный синтаксис Oracle, где мы объединяем вместе содержимое таблиц emp и dept для получения перечня всех сотрудников и названий отделов, где они работают:

SELECT e.ename, e.deptno, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;

ENAMEDEPTNODNAME
CLARK 10 ACCOUNTING
KING 10 ACCOUNTING
MILLER 10 ACCOUNTING
JONES 20 RESEARCH
FORD 20 RESEARCH
ADAMS 20 RESEARCH
SMITH 20 RESEARCH
SCOTT 20 RESEARCH
WARD 30 SALES
TURNER 30 SALES
ALLEN 30 SALES
JAMES 30 SALES
BLAKE 30 SALES
MARTIN 30 SALES

Обратите внимание на многие важные компоненты этого соединения таблиц. Использование во фразе FROM двух таблиц четко указывает на то, что имеет место соединиения таблиц. Обратите также внимание на то, что перед именем каждой таблицы присутствует буква: e для таблицы emp или d для таблицы dept.

Это служит иллюстрацией интересной концепции – столбцы могут иметь псевдонимы точно так же, как их имеют таблицы. Псевдонимы служат важной цели – они не дают Oracle запутаться в том, какую таблицу использовать при выводе данных в столбец deptno.

Вспомните, что в обеих таблицах (emp и dept) имеются столбцы с именем deptno.

Неоднозначности при соединении таблиц можно также избежать, если в качестве префикса перед именем столбца указать имена таблиц.

SELECT emp.ename, emp.deptno, dept.dname
FROM emp, dept
WHERE emp.deptno = dept.deptno;

Заметьте, что в нашу фразу WHERE включено сравнение по полю deptno, соединяющему данные в emp с данными в dept. В случае отсутствия этой связи в выходные данные были вы включены все данные из emp и dept.

Синтаксис соединения по ANSI/ISO

В соответствии с синтаксисом ANSI/ISO, для того, чтобы соединить содержимое двух таблиц для получения единого результата, мы должны включить в SQL-оператор фразу JOIN имя_таблицы ON условие_соединения. Если вы хотите в соответствии с этим синтаксисом выполнить то же соединение таблиц, которое мы делали раньше, наш оператор будет выглядеть следующим образом:

SELECT ename, emp.deptno, dname
FROM emp JOIN dept
ON emp.deptno = dept.deptno;

ENAMEDEPTNODNAME
CLARK 10 ACCOUNTING
KING 10 ACCOUNTING
MILLER 10 ACCOUNTING
JONES 20 RESEARCH
FORD 20 RESEARCH
ADAMS 20 RESEARCH
SMITH 20 RESEARCH
SCOTT 20 RESEARCH
WARD 30 SALES
TURNER 30 SALES
ALLEN 30 SALES
JAMES 30 SALES
BLAKE 30 SALES
MARTIN 30 SALES

Обратите внимание на различия между этим синтаксисом и синтаксисом Oracle. Во-первых, в синтаксисе ANSI/ISO сравнения, используемые для соединения, отделяются от всех остальных сравнений с помощью специального ключевого слова ON, указывающего на то, что именно это сравнение используется для соединения.

Вы по-прежнему можете включать в соответствующие ANSI/ISO запросы на соединение фразу WHERE. Единственное отличие состоит в том, что фраза WHERE теперь будет содержать только дополнительные операторы сравнения, используемые дл дополнительной фильтрации данных. Кроме того, вы не должны теперь указывать во фразе FROM имена всех объединяемых таблиц.

Вместо этого сразу же после фразы FROM вы должны использовать фразу JOIN, в которой и будут определены имена всех соединяемых таблиц.

Естественные соединения (NATURAL JOIN)

Естественным соединением называется соединение между двумя таблицами, в котором Oracle соединяет таблицы по одинаково называющемуся столбцу (столбцам) обеих таблиц (естественным образом!). Естественное соединение выполняется в том случае, если указано ключевое слово NATURAL.

Единственным совпадающим столбцом для таблиц emp и dept является столбец depnto,

SELECT ename, deptno, dname
FROM emp NATURAL JOIN dept
ORDER BY deptno;

ENAMEDEPTNODNAME
CLARK 10 ACCOUNTING
KING 10 ACCOUNTING
MILLER 10 ACCOUNTING
JONES 20 RESEARCH
FORD 20 RESEARCH
ADAMS 20 RESEARCH
SMITH 20 RESEARCH
SCOTT 20 RESEARCH
WARD 30 SALES
TURNER 30 SALES
ALLEN 30 SALES
JAMES 30 SALES
BLAKE 30 SALES
MARTIN 30 SALES

Нетрудно заменить, что естественные соединения позволяют в значительной степени упростить запросы с соединением за счет устранения псевдонимов таблиц и сравнений дл соединения.

Источник: https://plsql.ru/sql/join/

Запросы к нескольким таблицам

Запросы можно
создавать для отбора данных как из
одной, так и из нескольких таблиц. Запросы
к нескольким таблицам производятся
аналогично запросам к однотабличным
БД с той лишь разницей, что в окно
конструктора запроса добавляются все
таблицы, данные которых нужны в запросе.

5. Выбор данных с помощью запросов-действий. Перекрестные запросы Понятие запросов-действий

Для быстрого
изменения, вставки, создания или удаления
наборов данных из базы данных используются
управляющие запросы или запросы-действия.

Создание
запросов-действий аналогично созданию
запросов-выборок. Отличие лишь в том,
что в режиме конструктора запросов
необходимо указать тип действий над
выбранными записями. Существует всего
четыре типа запросов-действий:

Создание
таблицы, обновление, удаление, добавление

Создание
таблицы.
Этот запрос позволяет сохранить набор
данных, вышедших в ответ на запрос, в
виде таблицы.

Обновление.
Используется для того, чтобы обновить
значения некоторых полей для всех
записей, вышедших в ответ на запрос.

Удаление.
Используется для удаления всех записей,
вышедших в ответ на запрос.

Добавление.
Используется для добавления данных в
имеющуюся таблицу.

ACCESS
отмечает запросы-действия специальными
значками.

Рис. 23. Меню для
выбора типа запроса

Особенности работы с запросами-действиями

Для того чтобы
обезопасить себя от каких-либо
случайностей, необходимо перед выполнением
запроса-действия создать резервную
копию используемой таблицы.

Для
создания резервной копии таблицы
необходимо перейти в окно базы данных,
выбрать таблицу, в которой произойдут
изменения, а затем воспользоваться
командой Правка/Копировать.
Затем
выполнить команду Правка/Вставить,
и в диалоговом окне указать имя для
копии таблицы.

Создание запросов
на обновление, добавление и удаление
невозможно без разрушения целостности
данных, поэтому упражняться лучше на
созданной копии таблице.

Новый запрос
желательно создать вначале как запрос
на выборку. Так вы сможете проверить
правильность отбора записей.

Прежде
чем щелкнуть по кнопке Запуск,
просмотрите результат в режиме таблице,
воспользовавшись кнопкой Вид.

Быстрое переключение
между режимами Конструктора и Выполнения
обычно осуществляется с помощью
одноименных пиктограмм, расположенных
на панели инструментов.

Запросы на создание таблицы

Для сохранения
результатов выборки в реально существующей
таблице используются запросы на создание
таблицы. Это ускоряет доступ к данным,
полученным по запросу. Сохранение в
виде отдельной таблицы полезно и в том
случае, если какие-либо данные нужно
хранить в течение длительного времени.

Например,
сводную информацию по годам необходимо
хранить в течение 5 лет. Для этого
создается итоговый запрос и результат
его выполнения сохраняется в виде
отдельной таблицы. Для этого в режиме
Конструктора
запросов нужно выбрать команду
Запрос/Создание
таблицы
.

Access
выведет на экран диалоговое окно
«Создание таблицы», где нужно указать
имя таблицы, в которой будут сохранены
результаты выборки .

Рис. 24 Вид окна
запроса на создание таблицы

Источник: https://studfile.net/preview/942915/page:25/

Ссылка на основную публикацию