Читаем Понимание SQL полностью

* Разработайте простую программу которая выберет все комбинации полей snum и cnum из таблиц Порядков и Заказчиков и выясните, всегда ли предыдущая комбинация такая же как последующая. Если комбинация из таблицы Порядков не найдена в таблице Заказчиков, значение поля snum для этой строки будет изменено на удовлетворяющее условию совпадения. Вы должны помнить, что курсор с подзапросом - модифицируем (ANSI ограничение, также применимо к просмотрам, и что базисная целостность базы данных это не тоже самое что проверка на ошибку(т.е. первичные ключи уникальны, все поля cnums в таблице Порядков правильны, и так далее). Проверьте раздел обьявлений, и убедитесь что там обьявлены все используемые курсоры.

* Предположим, что ваша программа предписывает ANSI запрещение курсоры или просмотры использующие модифицируемые подзапросы. Как вы должны изменить вышеупомянутую программу?

* Разработайте программу которая подсказывает пользователям изменить значения поля city продавца, автоматически увеличивает комиссионные на .01 для продавца переводимого в Барселону и уменьшает их на .01 для продавца переводимого в Сан Хосе. Кроме того, продавец находящийся в Лондоне должен потерять .02 из своих комиссионных, независимо от того меняет он город или нет, в то время как продавец не находящийся в Лондоне должен иметь увеличение комиссионных на .02. Изменение в комиссионных основывающееся на нахождении продавца в Лондоне, может применяться независимо от того куда тот переводится. Выясните могут ли поле city или поле comm содержать NULL значения, и обработайте их, как это делается в SQL. Предупреждение! : эта программа имеет некоторые сокращения.

Приложение A. ОТВЕТЫ ДЛЯ УПРАЖНЕНИЙ


Глава 1.

* cnum

* rating

* Другим словом для строки является - запись. Другим словом для столбца является - поле.

* Потому что строки, по определению, находятся без какого либо определенного упорядочения.


Глава 2.

* Символ (или текст ) и номер

* Нет

* Язык Манипулирования Данными (ЯЗЫК DML)

* Это слово в SQL имеет специальное учебное значение.


Глава 3.

* 1. SELECT onum, amt, odate FROM Orders;

* 2. SELECT * FROM Customers WHERE snum=1001;

* SELECT city, sname, snum, comm FROM Salespeople;

* SELECT rating, cname FROM Customers WHERE city='SanJose';

* SELECT DISTINCT snum FROM Orders;


Глава 4.

* 1. SELECT * FROM Orders WHERE amt > 1000;

* SELECT sname, city FROM Salespeople WHERE city='London' AND comm > .10;

SELECT * FROM Customers WHERE rating > 100 OR city='Rome';

или

SELECT * FROM Customers WHERE NOT rating <=100 OR city ='Rome';

или

SELECT * FROM Customers WHERE NOT (rating <=100 AND city < > 'Rome');

* Могут быть еще другие решения.

onum amt odate cnum snum

3001 18.69 10/03/1990 2008 1007

3003 767.19 10/03/1990 2001 1001

3005 5160.45 10/03/1990 2003 1002

3009 1713.23 10/04/1990 2002 1003

3007 75.75 10/04/1990 2004 1002

3008 4723.00 10/05/1990 2006 1001

3010 1309.95 10/06/1990 2004 1002

* 3011 9891.88 10/06/1990 2006 1001

onum amt odate cnum snum

3001 18.69 10/03/1990 2008 1007

3003 767.19 10/03/1990 2001 1001

3006 1098.16 10/03/1990 2008 1007

3009 1713.23 10/04/1990 2002 1003

3007 75.75 10/04/1990 2004 1002

3008 4723.00 10/05/1990 2006 1001

3010 1309.95 10/06/1990 2004 1002

* 3011 9891.88 10/06/1990 2006 1001

* . SELECT * FROM Salespeople;


Глава 5.

SELECT * FROM Orders WHERE odate IN (10/03/1990,10/04/1990);

и

* SELECT * FROM Orders WHERE odate BETWEEN 10/03/1990 AND 10/04,1990;

* SELECT * FROM Customers WHERE snum IN (1001,1004);

SELECT * FROM Customers WHERE cname BETWEEN 'A' AND 'H';

* ПРИМЕЧАНИЕ: В ASCII базовой системе Hoffman не буде выведен из-за конечных пробелов после H. По той же самой причине воторая граница не может быть G, поскольку она не выведет имена Giovanni и Grass. G может использоваться в сопровождении с Z, так чтобы следовать за другими символами в алфавитном порядке, а не предшествовать им, как это делают пробелы.

* SELECT * FROM Customers WHERE cname LIKE 'C%';

SELECT * FROM Orders WHERE amt < > O AND (amt IS NOT NULL);

или

* SELECT * FROM Orders WHERE NOT (amt=O OR amt IS NULL);


Глава 6.

* SELECT COUNT(*) FROM Orders WHERE odate=10/03/1990;

* SELECT COUNT (DISTINCT city) FROM Customers;

* SELECT cnum, MIN (amt) FROM Orders GROUP BY cnum;

* SELECT MIN (cname) FROM Customers WHERE cname LIKE 'G%';

* SELECT city, MAX (rating) FROM Customers GROUP BY city;

* SELECT odate, count (DISTINCT snum FROM Orders GROUP BY odate;


Глава 7.

* SELECT onum, snum, amt * .12 FROM Orders;

SELECT 'For the city ', city, ', the highest rating is ', ", MAX (rating)

* FROM Customers GROUP BY city;

* SELECT rating, cname, cnum FROM Customers ORDER BY rating DESC;

* SELECT odate, SUM (amt) FROM Orders GROUP BY odate ORDER BY 2 DESC;


Глава 8.

SELECT onum, cname FROM Orders, Customers

* WHERE Customers.cnum=Orders.cnum;

SELECT onum, cname, sname FROM Orders, Customers, Salespeople

* WHERE Customers.cnum=Orders.cnum AND Salespeople.snum=Orders.snum;

SELECT cname, sname, comm FROM Salespeople, Customers

* WHERE Salespeople.snum=Customers.snum AND comm * .12;

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже