русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-09; просмотров: 1095; Нарушение авторских прав


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

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

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

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

Внешнее соединение.Выдает все строки, которые удовлетворяют условию соединения, а также строки одной из таблиц, которые не удовлетворяют условию соединения. Чтобы записать запрос, который выполняет внешнее соединение таблиц A и B и выдает все строки из таблицы A, применим операцию внешнего соединения (+) ко всем столбцам из таблицы B в условиях соединения. Тогда для всех строк из таблицы A, для которых нет соответствующих строк в таблице B,

ORACLE предоставит строку, содержащую NULL во всех выражениях в списке столбцов, которые содержат столбцы из таблицы B.

Демонстрационные примеры

1.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA информацию о книгах, поставленных продавцам за период с 24.01.2004 по 12.02.2004, указав для выводимого значения даты специальный формат вывода:



SELECT ПРОДАВЕЦ, АВТОР, НАЗВАНИЕ, TO_CHAR(ДАТА_ПОСТУПЛЕНИЯ, ‘DD MONTH YYYY’)

FROM KNIGA, KNIGA_POSTAVKA WHERE

KNIGA.КОД_КНИГИ = KNIGA_POSTAVKA.КОД_КНИГИ AND ДАТА_ПОСТУПЛЕНИЯ BETWEEN '24-JAN-04' AND '12-FEB-04'

ORDER BY ПРОДАВЕЦ, АВТОР;

2.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA по указанному продавцу – перечень издательств и жанров имеющихся у него книг без повторения; для задания фамилии продавца использовать переменную подстановки:

SELECT DISTINCT ПРОДАВЕЦ, ИЗДАТЕЛЬСТВО, ЖАНР

FROM KNIGA, KNIGA_POSTAVKA

WHERE KNIGA_POSTAVKA.КОД_КНИГИ = KNIGA.КОД_КНИГИ AND ПРОДАВЕЦ = '&PRODAVES'

ORDER BY ИЗДАТЕЛЬСТВО, ЖАНР;

3.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA список продав-цов, у которых в наличии более 20 книг, указав данные об общем коли-честве и суммарной стоимости имеющихся у них книг:

SELECT ПРОДАВЕЦ, SUM(КОЛ_ЕДИНИЦ), SUM(ЦЕНА*КОЛ_ЕДИНИЦ) FROM KNIGA, KNIGA_POSTAVKA

WHERE KNIGA_POSTAVKA.КОД_КНИГИ = KNIGA.КОД_КНИГИ

GROUP BY ПРОДАВЕЦ HAVING SUM(КОЛ_ЕДИНИЦ) >= 20;

4.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA по каждому из-дательству информацию об общем количестве и суммарной стоимости поставленных ими книг каждому продавцу:

SELECT ИЗДАТЕЛЬСТВО, ПРОДАВЕЦ, COUNT(КОЛ_ЕДИНИЦ), SUM(ЦЕНА*КОЛ_ЕДИНИЦ) FROM KNIGA, KNIGA_POSTAVKA

WHERE KNIGA.КОД_КНИГИ = KNIGA_POSTAVKA.КОД_КНИГИ

GROUP BY ИЗДАТЕЛЬСТВО, ПРОДАВЕЦ;

5.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA по каждой кни-ге, сведения о которой имеются в таблице KNIGA, информацию о коли-честве продавцов, которым она была поставлена:

SELECT KNIGA.КОД_КНИГИ, COUNT(ПРОДАВЕЦ) FROM KNIGA, KNIGA_POSTAVKA WHERE KNIGA_POSTAVKA.КОД_КНИГИ

(+)= KNIGA.КОД_КНИГИ GROUP BY KNIGA.КОД_КНИГИ;

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

SELECT ПРОДАВЕЦ, НАЗВАНИЕ, ЦЕНА FROM KNIGA, KNIGA_POSTAVKA

MINUS

SELECT ПРОДАВЕЦ, НАЗВАНИЕ, ЦЕНА FROM KNIGA, KNIGA_POSTAVKА WHERE KNIGA_POSTAVKA.КОД_КНИГИ = KNIGA.КОД_КНИГИ;

7.Выбрать из таблицы KNIGA информацию (название, цена) о трех самых дешевых книгах; предполагается, что в перечне книг не более трех различных книг с минимальной ценой:

SELECT А.НАЗВАНИЕ, А.ЦЕНА FROM KNIGA А, KNIGA В WHERE А.ЦЕНА >= В.ЦЕНА

GROUP BY А.НАЗВАНИЕ, А.ЦЕНА HAVING COUNT(В.НАЗВАНИЕ) <= 3 ORDER BY А.НАЗВАНИЕ;

8.Выбрать из таблиц KNIGA и KNIGA_POSTAVKA информацию (название и фамилию автора) о книгах, которые не были поставлены в магазин для продажи:

SELECT НАЗВАНИЕ, АВТОР FROM KNIGA WHERE

NOT EXISTS

(SELECT * FROM KNIGA_POSTAVKA WHERE KNIGA_POSTAVKA.КОД_КНИГИ

 

Пример работы с базой данных с использованием утилиты SQLplus СУБД Oracle.

 

Утилита SQLplus является клиентским приложением, которое может осуществить доступ к базе данных Oracle Express через локальную или глобальную сеть. Ее можно установить на компьютер клиента без установки сервера Oracle Express. При установке сервера она устанавливается автоматически.

Для работы с этой утилитой, добавим нового пользователя с именем Stud. Для этого выполним команды:

  1. Запустите домашнюю страницу Oracle Express, выполняя команду Пуск\Все программы\ Oracle Database 10g Express Edition\Go To Database Home Page.
  2. В появившемся приглашении введите логин system и пароль oracle. В первой вкладке администрирования выберите раздел DateBase Users\Create Users и добавьте нового пользователя с именем test, пароль – test.
  3. Выполните подсоединение к базе данных пользователя test с помощьюSQLplus, для этого:
  4. Откройте меню Пуск системы Windows и нажмите «Выполнить».В появившемся окне введите команду cmd для запуска командного интерпретатора DOS.
  5. Наберите команду SQLplus, клавиша <Enter>.
  6. Введите имя пользователя test, затем пароль test. Должно появиться приглашение SQL>
  7. Создайте таблицу:

· Orders (Заказы)с полями: № заказа, ФИО покупателя, Дата.

Create table Orders (

ID Int not null primary key,

FIO varchar2 (20) not null,

Data date not null); клавиша <Enter>.

При работе в командной строке DOS предыдущие команды можно выбрать с помощью кнопок стрелочек вверх-вниз.

· Добавьте новый столбец Название товара: (Name_Tovar)

Alter table Orders add (Name_Tovar varchar2 (40) not null); клавиша <Enter>.

· Добавьте строку данных.

Insert into Orders values (

1, ‘Ivanov’,’25.10.2008’,’Bred’);

· Добавьте еще несколько строк данных.

    • Выполните просмотр данных из таблицы Orders

SELECT * FROM Orders; клавиша <Enter>.

· Выполните просмотр количества записей:

SELECT count(*) FROM Orders; клавиша <Enter>.

  1. Выполните команду отсоединения:

Disconnect клавиша <Enter>.

Снова откройте домашнюю страницу, войдя под именем test, пароль – test и посмотрите созданную таблицу через раздел Object Brower.

 

Литература:

1. К. Дж. Дейт Введение в системы баз данных = An Introduction to Database Systems. — 7-е изд. — «Вильямс», 2001. — ISBN 5-8459-0138-3 (рус.)
2. Джонатан Сакс Система управления реляционной базой данных ORACLE. - Oracle Белмонт, 1987. – 195с.
3. Том Кайт Oracle для профессионалов: архитектура, методики программирования и особенности версий 9i, 10g и 11g, 2-е издание = Expert Oracle Database Architecture: Oracle Database Programming 9i, 10g, and 11g Techniques and Solutions, Second Edition. — М.: «Вильямс», 2011. — 848 с. — ISBN 978-5-8459-1703-4
4. Базы данных: модели реализация / Т. С. Карпова. - СПб.: Питер, 2001. - 304 с.: ил.
5. В.А. Гладцын, К.В. Кринкин, В.В. Яновский. Сервис-ориентированная архитектура, стандарты, алгоритмы, протоколы. —СПб.: Издательство СПбГЭТУ "ЛЭТИ", 2006;
6. Бондаренко С.П. Практикум по курсу «Модели данных и СУБД». Учебное пособие // Бондаренко С.П, Исаченко А.Н – Минск: БГУ, 2005.-103с.
7. Маслова Н.А. Методические рекомендации и контрольные задания для работы со стандартными приложениями среды Microsoft Windows. Часть третья – Access for Windows ./ Маслова Н.А., Павлыш В.Н., Шамаев - Донецк: ДГТУ, 1998.- 82с.

 



<== предыдущая лекция | следующая лекция ==>
Группирование строк | Лабораторная работа №1


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.204 сек.