Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
SELECT rating, COUNT (DISTINCT cnum)
FROM Customers GROUP BY rating HAVING rating > (SELECT AVG (rating) Эта команда подсчитывает количество покупателей с рейтингом, превышающим среднее значение для покупателей города Rom. Объединение множества запросов в один Можно задать множество запросов одновременно и комбинировать их выходные данные с использованием предложения UNION. UNION объединяет выходные данные двух или более SQL-запросов в единое множество строк и столбцов. Для того чтобы получить сведения обо всех продавцах (salespeople) и покупателях (customers) Лондона в виде выходных данных одного запроса, следует ввести: SELECT snum, sname FROM Salespeople WHERE city ='London'. UNION SELECT cnum, cname FROM Customers WHERE city ='London';
Использование строк и выражений с UNION Иногда можно вставлять константы и выражения в предложения SELECT, использующие UNION. Это не соответствует в точности стандарту ANSI, но часто и оправданно применяется. Однако применяемые константы и выражения должны при этом удовлетворять стандарту сравнимости, о котором упоминалось ранее. Такая процедура может оказаться полезной, например, для формулировки комментария, определяющего, из какого конкретно запроса получена данная строка. Можно объединить два запроса, вставив соответствующий текст в качестве комментария, для того чтобы различить каждый из двух случаев (минимальный заказ и максимальный заказ). SELECT a.snum, sname, onum, 'Hfgheat on', odatе FROM Salespeople a, Orders b WHERE a.snum = b.snum AND b.amt = (SELECT MAX (amt) FROM Orders с WHERE c.odate = b.date) UNION SELECT a.snum, sname, onum, 'Lowest on', odate FROM Salespeople a. Orders b WHERE a.snum = b-cnum AND b.amt = (SELECT MIN (amt) FROM Orders с WHERE c.odate = b.odate);
Задание В лабораторной работе на основе ранее созданной базы данных реализовать следующие механизмы языка структурированных запросов: 1. Скалярные выражения в выходных столбцах оператора SELECT. 2. Внесение текста в выходные данные запроса. 3. Группирование данных с применением функций агрегирования. 4. Исключение групп данных из результатов запроса. 5. Упорядочение данных с использованием всех режимов(ASC, DESC). 6. Механизм вложения запросов. 7. Объединение множества запросов в один. Содержание отчета 1. Название лабораторной работы. 2. Цель работы. 3. Протокол работы оператора SELECT (с использованием всех механизмов, описанных ниже). 4. Вывод Контрольные вопросы 1. Понятие эквисоединения 2. Цели использования группировки данных 3. Использование DISTINCT с подзапросами 4. Использование выражений в подзапросах. 5. Использование строк и выражений с UNION
Лабораторная работа №5 Использование команд обновления
Цель работы: Получить практические навыки работы с командами обновления INSERT, DELETE и UPDATE, позволяющие вводить, удалять или изменять данные в таблице БД.
Пояснения к работе Ввод, удаление и изменение значений полей. Все строки в SQL вводятся при помощи команды обновления INSERT. В простейшем случае команда INSERT имеет такой синтаксис: INSERT INTO «имя таблицы» VALUES (<значение>, <значение>...); Например, для того чтобы ввести строку в таблицу Salespeople, можно использовать следующее предложение: INSERT INTO Salespeople VALUES (1001, 'Peel', ‘London’,.12); Вставка NULL-значений Если нужно вставить NULL-значение. необходимо указать его как обычное значение. Предположим, значение поля city для Ms.Peel еще неизвестно. В этом случае для нее можно вставить строку, указав значение NULL в столбце city, следующим образом: INSERT INTO Salespeople VALUES (1001, 'Peel', NULL,.12); Поскольку NULL является специальным символом, а не символьным значением, оно указано без одиночных кавычек. Именование столбцов для INSERT Для указания имен столбцов, в которые необходимо ввести значения, порядок столбцов в таблице не важен. Предположим, значения для таблицы Customers берутся из напечатанного отчета, в котором интересующие сведения представлены в таком порядке: city,cname,cnum. Для простоты желательно вводить значения в порядке, указанном в напечатанном отчете. Можно воспользоваться командой: INSERT INTO Customers (city, cname, cnum) VALUES ('London', 'Hoffman', 2001); Вставка результатов запроса Команду INSERT можно применить для того, чтобы извлечь значения из одной таблицы и разместить их в другой, воспользовавшись для этого запросом. Для этого достаточно заменить предложение VALUES на соответствующий запрос, как в примере: INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE city ='London’; По этой команде все значения. полученные с помощью, размещаются в таблице с именем Londonstaff. Чтобы избежать проблем при выполнении команды, таблица Londonstaff должна удовлетворять следующим условиям: • Она должна быть уже создана с помощью команды CREATE TABLE. • Она должна иметь четыре столбца, соответствующих столбцам таблицы Salespeople в смысле типов данных: т.е. первый, второй и т.д. столбцы каждой из таблиц должны иметь один и тот же тип (использования одних и тех же имен не требуется). Исключение строк из таблицы DELETE FROM Salespeople; В результате выполнения этой команды таблица становится пустой и ее можно удалить по команде DROP TABLE. Обычно из таблицы требуется удалить только некоторые указанные строки. Чтобы их определить, можно, как и для запросов, использовать предикат. Например, чтобы исключить продавца c номером 1003 из таблицы, следует ввести: DELETE FROM Salespeople WHERE snum= 1003; Поле snum используется вместо поля sname, поскольку наилучший способ при удалении единственной строки — это указать значение ее первичного ключа. Применение первичного ключа гарантирует удаление единственной строки. Можно употребить и предикат, выбирающий группу строк, например: DELETE FROM Salespeople WHERE city=’London';
Изменение значений полей Например, для того чтобы изменить для всех покупателей рейтинг на 200, следует ввести: UPDATE Customers SET rating = 200;
Обновление только определенных строк Замена значения столбца во всех строках таблицы, как правило, не нужна. Поэтому в команде UPDATE, как и в команде DELETE, можно использовать предикат. Для выполнения указанной замены значений столбца rating, для всех покупателей, которые обслуживаются продавцом Peel (snum = 1001), следует ввести: UPDATE Customers SET rating = 200 WHERE snum=1001;
UPDATE для множества столбцов Предположим, Monika заменена новым продавцом (salesperson), необходимо сохранить ее персональный номер, но в соответствующую строку таблицы внести данные о новом продавце: UPDATE Salespeople SET sname = 'Gibson’, city= 'Boston', comm= .10 WHERE snum=1004; В результате выполнения команды все покупатели продавца Monika со своими заказами перейдут к Gibson, поскольку они связаны с Monika по значениюполя snum. Однако невозможно обновить множество таблиц с помощью единственной команды, так как нельзя использовать имя таблицы в качестве префикса имени столбца в предложении SET
|
||
Последнее изменение этой страницы: 2018-05-29; просмотров: 523. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |