18102010 (775481)

Файл №775481 18102010 (Собственноручно набранные лекции по БД)18102010 (775481)2017-06-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

SeregaProMai.Narod.ru ©

Лекция от 18.10.2010. (на основе лекции Димы + фото с лекции-презентации)

Подзапросы.

Подзапрос, как правило, можно написать в том месте, где требуется получить/вычислить какое-либо одно значение. В этом случае просто на месте значения пишут подзапрос в скобках. При этом фраза select этого подзапроса должна возвращать ровно одно поле, а логика остальных частей должна обеспечивать, чтобы возвращалось не более одной записи. Если не будет сформировано ни одной, то подзапрос возвращает null, если же несколько, то возникнет ошибка. Подзапросы подобного рода могут фигурировать, в частности, в вычисляемых выражениях или в операциях сравнения.

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

- выражение IN (подзапрос)

- выражение =ALL (подзапрос)

- выражение =SOME (подзапрос)

- выражение =ANY (подзапрос) (интернет)

SELECT COUNT (A) AS dbo.Поставщик

FROM (SELECT DISTINCT НомерП FROM Поставки)

AS ??

Обязательно подзапросу присваивается имя. ???

SELECT НомерП, СтатусП FROM Поставщики

WHERE СтатусП (SELECT MAX(СтатусП) FROM Поставщики)

При использовании подзапросов часто используется оператор IN. Подзапрос возвращает список значений с помощью IN, проверяется, совпадает ли значение заданного статуса с одним из этих значений.

???

SELECT * FROM Поставщики

WHERE НомерП IN

(SELECT DISTINCT НомерП

FROM Поставки

WHERE НомерП=2)

В зависимости от того, как подзапрос взаимодействует с основным запросом, различают простые и контролируемые запросы.

Простой сначала выполняется подзапрос, после выполняется основной запрос, который использует ??? подзапрос. Подзапрос выполняется один раз.

???

EXISTS и NOT EXISTS

Если подзапрос вообще возвращает какие-нибудь значения, то EXISTS подзапрос возвращает TRUE, a NOT EXISTS подзапрос - FALSE, например:
SELECT columnl FROM tl WHERE EXISTS (SELECT * FROM t2);
Традиционно подзапрос в EXISTS начинается с SELECT *, но он может начинаться с SELECT 5 или SELECT columnl, либо с еще чего-нибудь. MySQL игнорирует список SELECT в таком подзапросе, потому это не важно.
Ниже представлены примеры:

  • Какие типы магазинов есть в одном или более городов?
    SELECT DISTINCT store_type FROM Stores
    WHERE EXISTS (SELECT * FROM Cities_Stores
    WHERE Cities_Stores.store_type = Stores.store_type);

  • Каких типов магазинов нет ни в одном городе?
    SELECT DISTINCT store_type FROM Stores
    WHERE NOT EXISTS (SELECT * FROM Cities_Stores
    WHERE Cities_Stores.store_type = Stores.store_type);

  • Какой тип магазинов есть во всех городах?

SELECT DISTINCT store_type FROM Stores SI

WHERE NOT EXISTS (SELECT * FROM Cities WHERE NOT EXISTS

(SELECT * FROM Cities_Stores

WHERE Cities_Stores.city = Cities.city AND Cities_Stores.store_type = Stores.store_type));

В последнем примере представлен дважды вложенный подзапрос NOT EXISTS. To есть конструкция NOT EXISTS содержится внутри другой конструкции NOT EXISTS. Формаль­но он отвечает на вопрос "есть ли город с магазином, которого нет в Stores?". Но проще сказать, что вложенный NOT EXISTS отвечает на вопрос "истинно ли х для всех у?". (интернет)

SELECT * FROM Поставщики

WHERE EXISTS

(SELECT * FROM Поставки

WHERE Поставки.НомерП=Поставщики.НомерП AND Поставки.НомерД=2)

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

Схема выполнения:

- выбирается первая строка

- номер поставщика передается в подзапрос, который выполняется поставлял ли этот поставщик деталь номер 2

- если за то, что результат подзапроса не идет и EXISTS вернет значение Истина и сведения номер поставщика будет помещены в результат основного запроса и т. д. остальные записи.

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

SELECT *

FROM Таблица T1, Таблица T2.

Пример:

Необходимо найти детали, для которых можно найти другие детали, изготовленные из того же материала. (все выше набрано по Диминым лекциям + интернет, далее все мои лекции набраны по фото)

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

Результат выполнения этого запроса означает, что детали с номерами 3,4,5 поставляются только одним поставщиком.

Представление.

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

Если в качестве источника данных указано имя представления, то СУБД выполняет содержащийся в нем запрос и возвращает результат его выполнения.

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

Для создания представлений используется инструкция CREATE VIEW, которая имеет следующий синтаксис.

CREATE VIEW dbo.Имя_представления

AS

SELECT ( текст запроса )

Запрос, следующий за AS и, являющийся определением данного представления, не исполняется, а просто сохраняется в каталоге.

Уничтожение ненужных представлений выполняется с помощью инструкции DROP VIEW (уничтожить представление), имеющей следующий формат:

DROP VIEW dbo.Имя_представления

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

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

Рассмотрим примеры запросов, которые используют это представление.

Отобразить данные о поставках деталей, статус которых > 2.

Упорядочить данные, содержащиеся в таблице Поставки, в порядке убывания статуса поставщиков.

Операторы модификации данных.

Модификация данных может выполняться с помощью операторов:

- INSERT (вставить)

- UPDATE (изменить)

- DELETE (удалить)

Оператор INSERT.

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

Для добавления одной записи используется следующий формат:

INSERT имя таблицы [список столбцов]

VALUES (список констант или переменных)

Рассмотрим пример добавления нового поставщика.

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

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

INSERT имя таблицы [список столбцов]

SELECT [список столбцов] текст запроса

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

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

Заполнить эту таблицу данными можно при помощи следующего запроса.

Оператор UPDATE.

Этот оператор используется для изменения значения столбцов и имеет два формата.

Первый формат имеет следующий вид:

UPDATE имя таблицы

SET столбец = значение / выражение

WHERE условия

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

Увеличить на 1 статус поставщиков, поставляющих деталь №2.

Второй формат имеет следующий вид:

UPDATE Таблицы1

SET Таблица1.столбец = Таблица2.столбец

FROM Таблица2

WHERE условия

Он используется в тех случаях, когда определённым столбцам Таблицы1 нужно присвоить значения столбцов Таблицы2, в тех строках, для которых выполняются заданные условия.

В качестве примера использования данного формата оператора UPDATE, рассмотрим следующую задачу.

Добавим в таблицу Поставщики столбец Расстояние и присвоим ему значение расстояния до того города, в котором находится данный поставщик. Это значение будет извлечено из таблицы Города.

Оператор DELETE.

Используется для удаления строк из заданной таблицы и имеет следующий формат:

DELETE

FROM таблица

[WHERE условия];

При наличии предложения WHERE, удаляются только те строки, которые удовлетворяют заданным условиям. Если предложение WHERE отсутствует, то будут удалены все строки.

Рассмотрим особенности использования данного оператора на конкретных примерах.

Необходимо удалить сведения о поставщике с номером 6. Пример выполнения этого запроса приведен на рисунке.

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

Поставок от поставщика с номером 6 не было и его удаление не нарушает условий ссылочной целостности. Удаление поставщика с номером 4, от которого были поставки, нарушило бы условие ссылочной целостности. В таблице Поставки появились бы несвязанные записи. Поэтому СУБД прервало выполнение этого запроса.

Рассмотрим еще один пример. Необходимо удалить поставки от поставщиков, статус которых > 5.

7

Характеристики

Тип файла
Документ
Размер
11,68 Mb
Тип материала
Предмет
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

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

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лекций

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее