- •Вводный раздел
- •1. Информационные системы. Основные понятия
- •Моделирование информационных систем
- •2. Архитектуры распределенного приложения с базой данных. Функции клиента и сервера при различных вариантах расслоения. Типовые клиенты доступа к бд на основе различных технологий.
- •Модель Клиент – Сервер
- •Трехуровневая модель
- •Распределенная (многоуровневая) модель
- •4 Технологии программ расширений
- •Тема 1. Средства взаимодействия клиента и сервера бд
- •1.1 Сервисы сети Internet. Сетевая архитектура osi.
- •1.2 Протоколы прикладного уровня в стеке tcp/ip. Унифицированный локатор ресурса при работе с бд
- •1.3 Блоки данных в стеке протоколов
- •Тема 2. Удаленные базы данных
- •2.1 Понятие удаленных баз данных
- •2.2 Инструментальные средства проектирования структуры бд. Утилиты автоматизированного проектирования бд.
- •2.3 Характеристика субд удаленного доступа
- •Тема 3. Разработка и эксплуатация серверной части
- •3.1 Проектирование структуры базы данных (на самостоятельное изучение) Вопросы для самостоятельной работы
- •3.2 Создание баз данных, таблиц и индексов
- •Удаление баз данных, таблиц
- •Изменение структуры таблиц
- •3.3 Типы данных в MySql
- •Integer и его вариации
- •3.4 Методы заполнения полей базы данных Использование insert
- •Использование replace
- •Использование delete
- •Использование truncate
- •Использование update
- •Загрузка данных с помощью load data infile
- •Тема 4. Разработка и эксплуатация клиентской части.
- •4.1 Простые запросы
- •4.2 Выбор строк с помощью where
- •Удаление повторений с помощью distinct
- •Выбор групп с помощью having
- •Сортировка результатов поиска с помощью order by
- •Ограничение результатов поиска с помощью limit
- •4.4 Сложные запросы Объединение двух таблиц
- •Объединение нескольких таблиц
- •Самообъединение таблиц
- •Типы объединений
- •4.5 Создание подзапросов
- •4.6 Встроенные функции MySql
- •Операторы
- •Типы таблиц MySql
- •Тема 5. Язык html как средство внешнего представления данных.
- •5.1 Основные правила проектирования пользовательского интерфейса
- •5.2. Построение абзацев в гипертекстовом документе
- •5.3 Построение заголовков в гипертекстовом документе
- •Тема 6. Разработка бизнес-слоя и интерактивных компонентов
- •6.1 Perl как средство разработки программ –приложения
- •6.2 Типы данных в Рerl
- •Переменные
- •Скалярные переменные
- •Массивы
- •Ассоциативные массивы
- •6.3 Конструкции языка Рerl Простые и составные операторы
- •Условные операторы
- •Оператор unless
- •Оператор do
- •Циклы и ветвления
- •Цикл until
- •Циклы for и foreach
- •Оператор безусловного перехода goto
- •Генерация динамических выражений с помощью функции eval
- •6.4 Подпрограммы
- •Использование пакетов для изоляции подпрограмм
- •6.5 Операторы языка Perl .Операторы сравнения
- •Логические операторы
- •6.6 Работа с файлами и строками
- •Функция chop
- •Функция index
- •Функция length
- •Функция substr
- •Функция join
- •Функция split
- •Функции для обработки списков
- •Функция reverse
- •Функция sort
- •Функции работы с массивами
- •Функции push и pop
- •Функция shift
- •Функция unshift
- •Функция splice
- •Функция scalar
- •Функция grep
- •Функции обработки ассоциативных массивов
- •Функция keys
- •Функция values
- •Функция each
- •Функция delete
- •Пример скриптов для выполнения практического задания
- •1. Добавление информации в базу (на примере винного погреба -добавление страны)
- •Часть 1
- •Удаление информации из базы (удаление страны)
- •Часть 2
- •Часть 3
- •Поиск информации в базе данных
- •Занесение новой информации во все таблицы базы данных
- •Часть 1
- •Часть 2
Объединение нескольких таблиц
Объединение нескольких таблиц аналогично объединению двух таблиц.
Рассмотрим случай, когда требуется выяснить, служащим какого отдела было поручено работать с клиентом TelcoInc. Как найти эту информацию?
Мы знаем имя клиента, и, найдя его в таблице клиентов, можно выяснить его кодовый номер (clientID). Это можно использовать для того, чтобы найти соответствующие задания в таблице заданий и увидеть, какие служащие работали с данным клиентом. Из таблицы заданий мы получим кодовые номера служащих (employeelD), а по таблице служащих можно выяснить номера отделов, в которых эти служащие работают. С этой информацией мы можем обратиться к таблице отделов и найти название соответствующего отдела!
Имея план в виде указанного пути через четыре таблицы, мы должны создать запрос, отражающий нашу логику. Такой запрос может выглядеть следующим образом:
select department.name
from client, assignment, employee, department
where client.name='Telco Inc'
and client.clientID = assignment.clientID
and assignment.employeelD = employee.employeeID
and employee.departmentID = department.departmentID;
Ниже приведен результат выполнения этого запроса.
изучая представленный здесь запрос, вы можете заметить, что нам пришлось указать сначала все таблицы спланированного нами пути, а затем условия объединений, связывающие эти таблицы одну с другой. Мы здесь имеем одно обычное условие — client. name=' Telco Inc' — и несколько условий объединения.
Если требуется объединить 7 таблиц, то, как правило, каждое условие будет связывать пару таблиц, поэтому нужно указать n-1 условие объединения. Объединения таблиц из нашего примера показаны на рис. 5.1, на котором совершенно понятно, почему для четырех таблиц требуются три условия объединения.
Рисунок 5.1. Для объединения четырех таблиц требуются три условия объединения
Самообъединение таблиц
Аналогично объединению таблицы с другой таблицей, можно объединить таблицу саму с собой. Предположим, что вы хотите выяснить имена служащих отдела, в котором работает Нора Эдварде. Для этого необходимо найти в таблице employee номер отдела (departmentID), в котором работает Нора, а затем посмотреть в таблице employee, кто еще работает в том же отделе.
Это можно сделать так:
select e2.name
from employee el, employee e2
where el.name = 'Нора Эдварде'
and el.departmentID = e2.departmentID;
В этом запросе для таблицы employee мы определили два разных псевдонима. По сути мы сообщили системе MySQL, что хотели бы иметь две отдельных таблицы, el и е2, которые должны содержать одни и те же данные. После этого мы объединяем их так же, как любые другие таблицы. Теперь сначала находим строку Норы в таблице el (el. name=' Нора Эдварде '), а затем в таблице е2 ищем строки с тем же значением номера отдела, что и у Норы (el .departmentID = e2 . departmentID).
Ниже приведены результаты предыдущего запроса
Здесь представлены все служащие, работающие в одном отделе с Норой, включая и саму Нору Эдварде. Очень просто добавить условие, которое исключит ее из результирующего списка:
select e2.name
from employee el, employee e2
where el.name = 'Нора Эдварде'
and el.departmentID = e2.departmentID
and e2.name != 'Nora Edwards';
