![]() |
|
|
Реферат: Организация Web-доступа к базам данных с использованием SQL-запросовВ другом примере, где перемножаются таблицы Меню, Трапезы, Вид_блюд, Блюда: SELECT Меню.*, Трапезы.*, Вид_блюд.*, Блюда.* FROM Меню, Трапезы, Вид_блюд, Блюда; образуется таблица (рис 2.6), содержащая 21 х 3 х 5 х 33 = 10395 строк. Эквисоединение таблиц Если из декартова произведения убрать ненужные строки и столбцы, то можно получить актуальные таблицы, соответствующие любому из соединений.
Очевидно, что отбор актуальных строк обеспечивается вводом в запрос WHERE фразы, в которой устанавливается соответствие между: · кодами трапез (Т) в таблицах Меню и Трапезы (Меню.Т = Трапезы.Т), · кодами видов блюд (В) в таблицах Меню и Вид_блюд (Меню.В = Вид_блюд.В), · номерами блюд (БЛ) в таблицах Меню и Блюда (Меню.БЛ = Блюда.БЛ). Такой скорректированный запрос SELECT Меню.*, Трапезы.*, Вид_блюд.*, Блюда.* FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ; позволит получить эквисоединение таблиц Меню, Трапезы, Вид_блюд и Блюда:
Естественное соединение таблиц Легко заметить, что в эквисоединение таблиц вошли дубликаты столбцов, по которым проводилось соединение (Т, В и БЛ). Для исключения этих дубликатов можно создать естественное соединение тех же таблиц: SELECT Т, В, БЛ, Трапеза, Вид, Блюдо, Основа, Выход, Труд FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ; Реализация естественного соединения таблиц имеет вид
Композиция таблиц Для исключения всех столбцов, по которым проводится соединение таблиц, надо создать композицию SELECT Трапеза, Вид, Блюдо, Основа, Выход, Труд FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ; имеющую вид
Тета-соединение таблиц В базе данных ПАНСИОН трудно подобрать несложный пример, иллюстрирующий тета-соединение таблиц. Поэтому сконструируем такой надуманный запрос: SELECT Вид_блюд.*, Трапезы.* FROM Вид_блюд, Трапезы WHERE Вид Трапеза; позволяющий выбрать из полученного декартова произведения таблиц Вид_блюд и Трапезы лишь те строки, в которых значение трапезы «меньше» (по алфавиту) значения вида блюда:
Соединение таблиц с дополнительным условием При формировании соединения создается рабочая таблица, к которой применимы все операции: отбор нужных строк соединения (WHERE фраза), упорядочение получаемого результата (ORDER BY фраза) и агрегатирование данных (SQL-функции и GROUP BY фраза). Например, для получения перечня блюд, предлагаемых в меню на завтрак, можно сформировать запрос на основе композиции: SELECT Вид, Блюдо, Основа, Выход, 'Номер –', БЛ FROM Меню, Трапезы, Вид_блюд, Блюда WHERE Меню.Т = Трапезы.Т AND Меню.В = Вид_блюд.В AND Меню.БЛ = Блюда.БЛ AND Трапеза = ’Завтрак’;
Соединение таблицы со своей копией В ряде приложений возникает необходимость одновременной обработки данных какой-либо таблицы и одной или нескольких ее копий, создаваемых на время выполнения запроса. Например, при создании списков студентов (таблица Студенты) возможен повторный ввод данных о каком-либо студенте с присвоением ему второго номера зачетной книжки. Для выявления таких ошибок можно соединить таблицу Студенты с ее временной копией, установив в WHERE фразе равенство значений всех одноименных столбцов этих таблиц кроме столбцов с номером зачетной книжки (для последних надо установить условие неравенства значений). Временную копию таблицы можно сформировать, указав имя псевдонима за именем таблицы во фразе FROM. Так, с помощью фразы FROM Блюда X, Блюда Y, Блюда Z будут сформированы три копии таблицы Блюда с именами X, Y и Z. В качестве примера соединения таблицы с ней самой сформируем запрос на вывод таких пар блюд таблицы Блюда, в которых совпадает основа, а название первого блюда пары меньше (по алфавиту), чем номер второго блюда пары. Для этого можно создать запрос с одной копией таблицы Блюда (Копия): SELECT Блюдо, Копия.Блюдо, Основа FROM Блюда, Блюда Копия WHERE Основа = Копия.Основа AND Блюдо < Копия.Блюдо; или двумя ее копиями (Первая и Вторая): SELECT Первая.Блюдо, Вторая.Блюдо, Основа FROM Блюда Первая, Блюда Вторая WHERE Первая.Основа = Вторая.Основа AND Первая.Блюдо < Вторая.Блюдо; Получим результат вида
Вложенные подзапросы Виды вложенных подзапросов Вложенный подзапрос – это подзапрос, заключенный в круглые скобки и вложенный в WHERE (HAVING) фразу предложения SELECT или других предложений, использующих WHERE фразу. Вложенный подзапрос может содержать в своей WHERE (HAVING) фразе другой вложенный подзапрос и т.д. Нетрудно догадаться, что вложенный подзапрос создан для того, чтобы при отборе строк таблицы, сформированной основным запросом, можно было использовать данные из других таблиц (например, при отборе блюд для меню использовать данные о наличии продуктов в кладовой пансионата). Существуют простые и коррелированные вложенные подзапросы. Они включаются в WHERE (HAVING) фразу с помощью условий IN, EXISTS или одного из условий сравнения ( = | < | < | <= | | = ). Простые вложенные подзапросы обрабатываютя системой «снизу вверх». Первым обрабатывается вложенный подзапрос самого нижнего уровня. Множество значений, полученное в результате его выполнения, используется при реализации подзапроса более высокого уровня и т.д. Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |