Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных / БД2012 / Understanding.SQL.doc
Скачиваний:
281
Добавлен:
28.03.2015
Размер:
1.75 Mб
Скачать

Работа с sql

Обратите внимание: Ответы для этих упражнений написаны в псевдокодах, являющихся английским языком описания логики, которой должна следовать программа. Это сделано для того чтобы помочь читателям которые могут быть незнакомы с ПАСКАЛем(или любым другим языком). Кроме того это лучше сфокусирует ваше внимание на включаемых понятиях, опуская частности того или другого языка. Чтобы непротиворечить нашим примерам, стиль псевдокода будет напоминать Паскаль. Мы опустим из программ все что не относится напрямую к рассматриваемым вопросам, например, определение устройств ввода-вывода, подключение к базе данных, и так далее. Конечно, имеется много способов чтобы выполнять такие упражнения; и совсем не обязательно что представленные варианты решений являются самыми удачными. 1. Разработайте простую программу которая выберет все комбинации по- лей snum и cnum из таблиц Порядков и Заказчиков и выясните, всегда ли предыдущая комбинация такая же как последующая. Если комбинация из таблицы Порядков не найдена в таблице Заказчиков, значение пол snum для этой строки будет изменено на удовлетворяющее условию совпадения. Вы должны помнить, что курсор с подзапросом - модифицируем ( ANSI ограничение, также применимо к просмотрам, и что базисна целостность базы данных это не тоже самое что проверка на ошибку( т.е. первичные ключи уникальны, все пол cnums в таблице Порядков правильны, и так далее ). Проверьте раздел объявлений, и убедитесь что там объявлены все используемые курсоры. 2. Предположим, что ваша программа предписывает ANSI запрещение курсоры или просмотры использующие модифицируемые подзапросы. Как вы должны изменить вышеупомянутую программу? 3. Разработайте программу которая подсказывает пользователям изменить значения пол city продавца, автоматически увеличивает комиссионные на .01 для продавца переводимого в Барселону и уменьшает их на .01 для продавца переводимого в Сан Хосе. Кроме того, продавец находящийся в Лондоне должен потерять .02 из своих комиссионных, независимо от того меняет он город или нет, в то врем как продавец не находящийся в Лондоне должен иметь увеличение комиссионных на .02. Изменение в комиссионных основывающееся на нахождении продавца в Лондоне, может применяться независимо от того куда тот переводится. Выясните могут ли поле city или поле comm содержать NULL значения, и обработайте их, как это делается в SQL. Предупреждение! : эта программа имеет некоторые сокращения.

Приложение a

ОТВЕТЫ ДЛЯ УПРАЖНЕНИЙ

Глава 1

1. cnum

2. rating

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

является - поле.

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

определенного упорядочения.

Глава 2

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

2. Нет

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

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

Глава 3

1. SELECT onum, amt, odate

FROM Orders;

2. SELECT *

FROM Customers

WHERE snum = 1001;

3 SELECT city, sname, snum, comm

FROM Salespeople;

4. SELECT rating, cname

FROM Customers

WHERE city = 'SanJose';

5. SELECT DISTINCT snum

FROM Orders;

Глава 4

1. SELECT * FROM Orders WHERE amt > 1000;

2. SELECT sname, city

FROM Salespeople

WHERE city = 'London'

AND comm > .10;

3. 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');

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

4. 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

5. onum amt odate cnum snum

3001 18.69 10/03/1990 2008 1007

3003 767.19 10/03/1990 2001 1001

onum amt odate cnum snum

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

6. SELECT *

FROM Salespeople;

Соседние файлы в папке БД2012