Задачи по SQL
Таблицы данных для всех задач
Таблица Salespeople (продавцы)
snum – уникальный номер, назначенный каждому продавцу (“номер служащего”); sname – имя продавца; city – расположение продавца (город); comm – комиссионные продавцов в десятичной форме.
Таблица Customers (заказчики)
cnum – уникальный номер назначенный каждому заказчику; cname – имя заказчика; city – расположение заказчика (город); rating – код, указывающий уровень предпочтения данного заказчика перед другими. Более высокий номер указывают на большее предпочтение (рейтинг); snum – номер продавца, назначенного этому заказчику (из таблицы Продавцов)
Таблица Orders (заказы)
onum – уникальный номер данный каждому приобретению; amt – значение суммы приобретений; odate – дата приобретения; cnum – номер заказчика делающего приобретение (из таблицы Заказчиков); snum – номер продавца продающего приобретение (из таблицы Продавцов)
Условия задач
-
Напишите запрос который бы использовал оператор EXISTS для извлечения всех продавцов, которые имеют заказчиков с оценкой 300.
- Напишите запрос, использующий оператор EXISTS, который выберет всех продавцов с заказчиками, размещенными в их городах, которые ими не обслуживаются.
- Напишите запрос, который извлекал бы из таблицы Заказчиков каждого заказчика, назначенного к продавцу, который в данный момент имеет по крайней мере еще одного заказчика (кроме заказчика которого вы выберете) с заказами в таблице Заказов.
- Напишите запрос, который бы выбирал всех заказчиков, чьи оценки равны или больше, чем какая-нибудь (ANY) оценка заказчика Serres.
- Напишите запрос, использующий ANY или ALL, который бы находил всех продавцов, которые не имеют никаких заказчиков, размещенных в их городе.
- Напишите запрос, который бы выбирал все заказы с суммой больше, чем любая из сумм для заказчиков в Лондоне.
- Напишите предыдущий запрос с использованием MAX.
- Создайте объединение из двух запросов, которое показало бы имена, города, и
оценки всех заказчиков. Те из них, которые имеют поле rating=200 и более, должны, кроме того, иметь слова “Высокий Рейтинг”, а остальные должны иметь слова “Низкий Рейтинг”. - Напишите команду, которая бы вывела имена и номера каждого продавца и каждого заказчика, которые имеют больше чем один текущий заказ. Результат представьте в алфавитном порядке.
- Сформируйте объединение из трех запросов. Первый выбирает поля snum всех продавцов в San Jose; второй, поля cnum всех заказчиков в San Jose; и третий поля onum всех порядков на 3 Октября. Сохраните дубликаты между последними двумя запросами, но устраните любую избыточность вывода между каждым из их и самым первым.
- Напишите команду, которая бы поместила следующие значения, в указанном порядке, в таблицу Продавцов: city — San Jose, name — Bianco, comm — NULL, cnum — 1100.
- Напишите команду, которая бы удалила все заказы заказчика Clemens из таблицы Заказов.
- Напишите команду, которая бы увеличила оценку всех заказчиков в Риме на 100.
- Продавец Serres оставил компанию. Переназначьте его заказчиков продавцу Motika.
- Предположите, что имеется таблица, называемая Multicust, с такими же именами столбцов, что и таблица Продавцов. Напишите команду, которая бы вставила всех продавцов (из таблицы Продавцов) имеющих более чем одного заказчика в эту таблицу.
- Напишите команду, которая бы удаляла всех заказчиков, не имеющих текущих заказов.
- Напишите команду которая бы увеличила на двадцать процентов комиссионные всех продавцов, имеющих общие текущие заказы выше чем $3,000.
- Напишите команду CREATE TABLE, которое бы вывело таблицу Заказчиков.
- Напишите команду, которая бы давала возможность пользователю быстро извлекать заказы, сгруппированные по датам из таблицы Заказов.
- Создайте индекс, который бы разрешал каждому продавцу быстро отыскивать его заказы, сгруппированные по датам.
- Предположим, что каждый продавец имеет только одного заказчика с данной оценкой, введите команду которая его извлечет.
- Создайте таблицу Заказов так, чтобы все значения поля onum, а также все комбинации полей cnum и snum отличались друг от друга, и так чтобы значения NULL исключались из поля даты.
- Создайте таблицу Заказов так, чтобы комиссионные, по умолчанию составляли 10%, не разрешались значения NULL, чтобы поле snum являлось первичным ключом, и чтобы все имена были в алфавитном порядке между A и M включительно (учитывая, что все имена будут напечатаны в верхнем регистре).
- Создайте таблицу Заказов, считая, что поле onum больше, чем поле cnum, а cnum больше, чем snum. Запрещены значения NULL в любом из этих трех полей.
- Создайте таблицу с именем Cityorders. Она должна содержать такие же поля onum, amt, и snum что и таблица Заказов, и такие же поля cnum и city, что и таблица Заказчиков, так что порядок каждого заказчика будет вводиться в эту таблицу вместе с его городом. Поле оnum будет первичным ключом Cityorders. Все поля в Cityorders должны иметь ограничения при сравнении с таблицами Заказчиков и Заказов. Допускается, что родительские ключи в этих таблицах уже имеют соответствующие ограничения.
- Переопределите таблицу Заказов следующим образом: добавьте новый столбец с именем prev, который будет идентифицирован для каждого порядка, поле onum предыдущего порядка для этого текущего заказчика. Выполните это с использованием внешнего ключа ссылающегося на саму таблицу Заказов. Внешний ключ должен ссылаться также на поле cnum заказчика, обеспечивающего определенную предписанную связь между текущим порядком и ссылаемым.
смотрите еще серию задач 43 задачи по SQL