Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаврентев Освоение СQЛ 2009

.pdf
Скачиваний:
63
Добавлен:
16.08.2013
Размер:
2.47 Mб
Скачать

71

Пользователь DEMO может дать другим пользователям привилегию для работы с таблицей своей схемы:

DEMO@ORCL>GRANT select ON employee TO scott;

Привилегии предоставлены.

Теперь пользователь SCOTT (конечно, предварительно соединившись с Oracle) может извлекать данные из таблицы employee пользователя DEMO такой командой: SELECT * FROM demo.employee; , указав владельца таблицы и название таблицы. Пользователю SCOTT обращаться к таблице EMPLOYEE пользователя DEMO, каждый раз набирая имя пользователя DEMO, не совсем удобно (лишние действия на клавиатуре). Чтобы устранить это неудобство, администратор SYSTEM выполняет команду: CREATE public synonym empl for demo.employee;, после которой и пользователь DEMO, и все другие пользователи, у которых есть привилегия извлекать данные из таблицы EMPLOYEE, принадлежащей пользователю DEMO, могут извлекать данные из этой таблицы, обращаясь к ней по имени EMPL:

DEMO@ORCL>SELECT * FROM empl; SCOTT@ORCL>SELECT * FROM empl;

Q6_10. Создадим снимок для таблицы SALES_ORDER:

DEMO@ORCL>CREATE SNAPSHOT sale_ord AS

SELECT customer_id, TO_CHAR(ship_date, 'YYYY') AS year, SUM(total) FROM sales_order

GROUP BY (customer_id, TO_CHAR(ship_date, 'YYYY'));

FROM SALES_ORDER

*

ошибка в строке 3:

ORA-01031: привилегий недостаточно

Пользователь SYSTEM из своей сессии выполняет команду: grant CREATE snapshot to demo;, после чего пользователь DEMO повторяет:

DEMO@ORCL>CREATE SNAPSHOT sale_ord AS

SELECT customer_id, TO_CHAR(ship_date,'YYYY') AS year, SUM(total) FROM sales_order

WHERE TO_CHAR(ship_date,'YYYY')='1989'

GROUP BY (customer_id, TO_CHAR(ship_date,'YYYY')) ORDER BY customer_id;

Материализованное представление создано.

72

DEMO@ORCL>SELECT * FROM sale_ord;

Q6.11. Удалим созданный снимок:

DEMO@ORCL>DROP SNAPSHOT sale_ord;

Материализованное представление удалено.

Глава III. Общая последовательность этапов выполнения лабораторных работ по освоению языка PL/SQL Oracle

1. Ознакомление с примерами PL/SQL программ по главам 1-3 и 6-10 книги /2/

Темы этих глав:

Введение в PL/SQL (глава 1) Основы PL/SQL (глава 2) Записи и таблицы (глава 3) Курсоры (глава 6)

Подпрограммы: процедуры и функции (глава 7) Модули (глава 8)

Триггеры (глава 9) Обработка ошибок (глава 10)

2. Написание, отладка и выполнение программ для заданной преподавателем предметной области (такая предметная область была задана для выполнения SQL лабораторных работ), соответствующих программам в вышеприведенных главах книги /2/. Программы из /2/ были после публикации /2/ открыты для общего пользования на сайте издательства «ЛОРИ». Теперь их несложно найти в интернете. Книга /2/ имеется в учебном фонде МИФИ.

В нижеприведенной табл. уточняется, что студент должен выполнить в соответствии с образцами программ из /2/.

 

 

 

Таблица III.1

Глава

Названия программ

Что надо выполнить на лабораторных работах

лабо-

книги

– примеров,

(написать на PL/SQL, отладить и

рато-

/2/

по образцам

продемонстрировать в работе

ной

 

которых студент

 

 

 

должен написать

 

 

 

программы

 

 

 

для своей

 

 

 

предметной

 

 

 

области

 

1

2

3

4

 

 

 

73

 

 

 

 

1

2

3

4

1

1

3GL_4GL.SQL,

Для одной из таблиц предметной области написать

 

 

CURSOR.SQL,

анонимный блок, предусматривающий

 

 

SIMPLE.SQL,

использование явного курсора, цикла FOR, вывод

 

 

NUMERIC.SQL

информации с помощью

 

 

 

DBMS_OUTPUT.PUT_LINE, а также занесение

 

 

 

информации в служебную таблицу (типа

 

 

 

TEMP_TABLE). Служебную таблицу потребуется

 

 

 

создать в своей схеме

2

2

ALLTHREE.SQL,

Для одной из таблиц предметной области написать:

 

 

ALLTHREE1.SQL,

А) хранимую процедуру, использующую курсор,

 

 

COMMENTS1.SQL,

цикл FOR, условие

 

 

EXITWHEN.SQL,

IF…THEN….ELSIF…THEN...ELSE…END IF,

 

 

FORSCOPE.SQL,

вывод информации с помощью

 

 

GOTO.SQL,

DBMS_OUTPUT.PUT_LINE, а также занесение

 

 

IF1.SQL, If1b.sql,

информации в служебную таблицу;

 

 

NULL.SQL,

Б) триггер на вставку, проверяющий некоторое

 

 

PROC.SQL,

ограничение (придумать самостоятельно) на

 

 

TRIGGER.SQL

вставляемую символьную информацию

3

3

ASSIGN.SQL,

Для одной из таблиц предметной области написать

 

 

COUNT.SQL,

анонимный блок, предусматривающий работу с

 

 

DELETE.SQL,

записями и таблицами PL/SQL: заполнение таблиц,

 

 

EXISTS.SQL,

извлечение данных из таблиц, удаление строк

 

 

FRSTLAST.SQL,

таблицы, а также использование в работе с

 

 

NULLTAB.SQL,

таблицами условия IF, простого цикла LOOP и

 

 

NXTPRIOR.SQL,

метода NEXT

 

 

SELECT.SQL,

 

 

 

TABREC.SQL

 

4

6

BADFETCH.SQL,

Для нескольких таблиц предметной области

 

 

BINDS.SQL,

написать

 

 

COMMIT1.SQL,

анонимный блок и хранимую процедуру,

 

 

COMMIT2.SQL,

использующие явный и неявный курсор. Эти блок

 

 

CUREXAMP.SQL,

и процедура должны предусматривать

 

 

CURSOR2.SQL,

использование связанных переменных в курсоре,

 

 

FORLOOP.SQL,

цикл FOR, извлечение и изменение значений

 

 

FORUPDAT.SQL,

таблицы в этом цикле FOR, использование

 

 

NOMATCH1.SQL,

различных курсорных атрибутов

 

 

NOMATCH2.SQL,

(SQL%NOTFOUND, SQL%ROWCOUNT),

 

 

SIMPLE.SQL,

использование курсорной переменной

 

 

WHILE.SQL

 

 

 

 

 

74

1

2

3

4

5

7

ADDSTUD.SQL,

Для нескольких таблиц предметной области

 

 

ALMOSTFL2.SQL,

написать:

 

 

CALLFUNC.SQL,

А) функцию, возвращающую символьное или

 

 

CALLME.SQL,

числовое значение;

 

 

CALLPROC.SQL,

Б) хранимую процедуру, использующую

 

 

CLASINFO.SQL,

обращение к функции, явный курсор, цикл FOR,

 

 

DEFAULT.SQL,

локальную процедуру.

 

 

ERROR.SQL,

Текст этого задания можно дополнительно

 

 

FORWAR.SQL

уточнить с преподавателем

 

 

(MUTUAL.SQL по

 

 

 

Скотту Урману),

 

 

 

FORWARD.SQL,

 

 

 

LOCAL2.SQL,

 

 

 

LOCAL.SQL,

 

 

 

MODETEST1.SQL,

 

 

 

RFCLASS2.SQL

 

 

 

 

 

6

8

CLPACK.SQL,

Скомпилировать модуль export.sql для своей схемы

 

 

CLLIST.SQL,

(настройку файла инициализационных параметров

 

 

My_Studops.sql,

- установку параметра utl_file_dir и задействование

 

 

OVERLOAD.SQL,

его, выдачу объектной привилегии execute на

 

 

RANDOM.SQL,

sys.utl_file владельцу схемы, из которой будет

 

 

EXPORT.SQL

выполняться экспорт, выполнит преподаватель) и

 

 

 

проверить его работу.

 

 

 

Откомпилировать модуль spelchek.sql из главы 5 и

 

 

 

проверить его в работе, для чего предварительно

 

 

 

создать и заполнить таблицу s_emp (скрипт

 

 

 

s_emp.sql в главе 5).

 

 

 

Примеры для проверки работы взять со с. 123-125

 

 

 

книги /2/

7

9

UPDATEMS.SQL,

В своей схеме создать для одной из таблиц триггер

 

 

INSTEAD.SQL,

на вставку, изменение и удаление данных и

 

 

ORDER.SQL,

продемонстрировать его в работе. Создать

 

 

PSEUDO.SQL,

представление для одной из таблиц по типу

 

 

STUDID.SQL,

представления на с.208 книги /2/ и для этого

 

 

RSCHANGE.SQL,

представления создать триггер instead of. Создать

 

 

RSINSERT.SQL,

триггер с использованием :new, :old и триггерных

 

 

LIMMAJOR.SQL,

предикатов INSERTING, UPDATING, DELETING.

 

 

MUTATING.SQL,

Проверить в работе каскадное изменение данных

 

 

Demobld.sql

(выполнить скрипт Demobld.sql и проверить его

 

 

 

работу для таблицы DEPT по примеру на с.223

 

 

 

книги /2/)

8

10

Выполнить все

Написать хранимую процедуру с несколькими (!)

 

 

скрипты главы 10 и

exseption

 

 

задать вопросы

 

 

 

преподавателю по

 

 

 

непонятным

 

 

 

моментам

 

75

При выполнении лабораторных работ студенту может потребоваться выполнить корректировку «своей» предметной области (добавить столбец/столбцы в таблицу, определить его/их внешним ключем, заполнить его/их; добавить новую таблицу/таблицы и заполнить ее/их; заполнить новыми данными ранее существовавшую/существовавшие таблицу/таблицы и т.д.). Все эти корректировки должны быть скомпонованы в отдельном

скрипте, который, как и spol –файлы лабораторных работ, предъявляется преподавателю при сдаче лабораторных работ. Лабораторные работы могут выполняться студентом вне дисплейного класса, а на занятиях предъявляться преподавателю для их сдачи. При сдаче преподаватель может предложить студенту скорректировать сдаваемые программы для выполнения предлагаемых преподавателем дополнительных действий по обработке информации предметной области.

В главе I уже говорилось о том, что график выполнения лабораторных работ по освоению SQL и PL/SQL предусматривает длительность аудиторной лабораторной работы для каждого студента - четыре академических часа раз в две недели. Поэтому, начиная с девятой недели (сразу после контрольной по SQL), на каждом из двух – трех

занятий во второй половине семестра студент должен сдавать преподавателю программы, написанные в соответствии с образцами из трех пяти глав табл. III.1, чтобы к контрольной работе по PL/SQL в конце семестра выполнить задания по всем восьми лабораторным из данной таблицы.

Библиографический список

1.Юринский В., Бачин А., Абрамов В. Oracle 7. Практическое руководство.– М.: SoftService, 1997

2.Урман С. Программирование на языке PL/SQL.- М.: ЛОРИ, 1999.

3.Мишра Санжей, Бьюли Алан. Секреты Oracle SQL. – СПБ – М.: Символ-

Плюс, 2003

4.Документация по Oracle10g

5.Примеры задач SQL олимпиады 2007г. http://gpi-mpei.ru//content/blogcategory/72/241/

ПРИЛОЖЕНИЯ

Скрипт demo.sql создания предметной области пользователя DEMO

SET ECHO ON

SET TERMOUT ON

DROP TABLE customer CASCADE CONSTRAINT;

DROP TABLE department CASCADE CONSTRAINT;

DROP TABLE employee CASCADE CONSTRAINT;

DROP TABLE item CASCADE CONSTRAINT;

DROP TABLE job CASCADE CONSTRAINT;

DROP TABLE location CASCADE CONSTRAINT;

DROP TABLE price CASCADE CONSTRAINT;

DROP TABLE product CASCADE CONSTRAINT;

DROP TABLE salary_GRADE CASCADE CONSTRAINT;

DROP TABLE sales_order CASCADE CONSTRAINT;

ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY'; ALTER SESSION SET NLS_LANGUAGE='AMERICAN';

CREATE TABLE job(

job_id NUMBER(3,0) NOT NULL, function VARCHAR2(30) NULL, CHECK (job_id IS NOT NULL), CHECK (function IS NOT NULL), PRIMARY KEY (job_id)

);

INSERT INTO job VALUES(

667

,'CLERK');

INSERT INTO job VALUES(

668

,'STAFF');

INSERT INTO job VALUES(

669

,'ANALYST');

INSERT INTO job VALUES(

670

,'SALESPERSON');

INSERT INTO job VALUES(

671

,'MANAGER');

INSERT INTO job VALUES(

672

,'PRESIDENT');

CREATE TABLE location(

location_id NUMBER(3,0) NOT NULL, regional_group VARCHAR2(20) NULL, CHECK (location_id IS NOT NULL), PRIMARY KEY (location_id)

);

INSERT INTO location VALUES(

122

, NEW YORK');

INSERT INTO location VALUES(

124

, 'DALLAS');

INSERT INTO location VALUES(

123

, 'CHICAGO');

INSERT INTO location VALUES(

167

, 'BOSTON');

INSERT INTO location VALUES(

168

, 'MOSCOW');

INSERT INTO location VALUES(

169

, 'KIEV');

CREATE TABLE department( department_id NUMBER(2,0) NOT NULL, name VARCHAR2(14) NULL,

location_id NUMBER(3,0) NULL, CHECK (department_id IS NOT NULL), PRIMARY KEY (department_id),

FOREIGN KEY (location_id) REFERENCES location(location_id) );

INSERT INTO department VALUES(

10

, 'ACCOUNTING',

122 );

INSERT INTO department VALUES(

20

, 'RESEARCH',

124 );

76

Приложение 1.

77

INSERT INTO department VALUES(

30

, 'SALES',

123 );

INSERT INTO department VALUES(

40

, OPERATIONS',

167 );

INSERT INTO department VALUES(

12

, 'RESEARCH',

122 );

INSERT INTO department VALUES(

13

, 'SALES',

122 );

INSERT INTO department VALUES(

14

, 'OPERATIONS',

122 );

INSERT INTO department VALUES(

23

, 'SALES',

124 );

INSERT INTO department VALUES(

24

, 'OPERATIONS',

124 );

INSERT INTO department VALUES(

34

, 'OPERATIONS',

123 );

INSERT INTO department VALUES(

43

, 'SALES',

167 );

INSERT INTO department VALUES(

55

, 'OPERATIONS',

NULL );

INSERT INTO department VALUES(

56

, 'SALES',

NULL );

CREATE TABLE employee( employee_id NUMBER(4,0) NOT NULL, last_name VARCHAR2(15) NULL, first_name VARCHAR2(15) NULL, middle_initial VARCHAR2(1) NULL, job_id NUMBER(3,0) NULL, manager_id NUMBER(4,0) NULL, hire_date DATE NULL,

salary NUMBER(7,2) NULL, commission NUMBER(7,2) NULL, department_id NUMBER(2,0) NULL, CHECK (employee_id IS NOT NULL), CHECK (department_id IS NOT NULL), PRIMARY KEY (employee_id),

FOREIGN KEY (job_id) REFERENCES job(job_id),

FOREIGN KEY (manager_id) REFERENCES employee(employee_id), FOREIGN KEY (department_id) REFERENCES department(department_id) );

INSERT INTO employee VALUES(7839,'KING', 'FRANCIS', 'A',672,NULL,'17-NOV-1985',5000,NULL,10); INSERT INTO employee VALUES(7505,'DOYLE', 'JEAN', 'K',671,7839,'04-APR-1985',2850,NULL,13); INSERT INTO employee VALUES(7555,'PETERS', 'DANIEL', 'T',670,7505,'31-MAR-1985',1250,300, 13); INSERT INTO employee VALUES(7557,'SHAW', 'KAREN', 'P',670,7505,'02-APR-1985',1250,1200,13); INSERT INTO employee VALUES(7600,'PORTER', 'RAYMOND', 'Y',670,7505,'15-APR-1985',1250,900, 13);

INSERT INTO employee VALUES(7820,'ROSS', 'PAUL',

'S',670,7505,'01-JUN-1985',1300,800, 13);

INSERT INTO employee VALUES(7950,'JENSEN', 'ALICE',

'B',667,7505,'15-JAN-1987', 750,NULL,13);

INSERT INTO employee VALUES(7506,'DENNIS', 'LYNN',

'S',671,7839,'15-MAY-1985',2750,NULL,23);

INSERT INTO employee VALUES(7560,'DUNCAN', 'SARAH', 'S',670,7506,'31-MAY-1985',1250,NULL,23); INSERT INTO employee VALUES(7564,'LANGE', 'GREGORY', 'J',670,7506,'01-JUN-1985',1250,300, 23); INSERT INTO employee VALUES(7789,'WEST', 'LIVIA', 'N',670,7506,'04-APR-1985',1500,1000,23); INSERT INTO employee VALUES(7954,'MURRAY', 'JAMES', 'T',667,7506,'16-JAN-1987', 750,NULL,23); INSERT INTO employee VALUES(7507,'BAKER', 'LESLIE', 'D',671,7839,'10-JUN-1985',2200,NULL,14); INSERT INTO employee VALUES(7609,'LEWIS', 'RICHARD', 'M',668,7507,'16-APR-1985',1800,NULL,14); INSERT INTO employee VALUES(7676,'SOMMERS','DENISE', 'D',668,7507,'19-APR-1985',1850,NULL,14); INSERT INTO employee VALUES(7566,'JONES', 'TERRY', 'M',671,7839,'02-APR-1985',2975,NULL,20); INSERT INTO employee VALUES(7788,'SCOTT', 'DONALD', 'T',669,7566,'09-DEC-1986',3000,NULL,20); INSERT INTO employee VALUES(7876,'ADAMS', 'DIANE', 'G',667,7788,'12-JAN-1987',1100,NULL,20); INSERT INTO employee VALUES(7902,'FORD', 'JENNIFER','D',669,7566,'03-DEC-1985',3000,NULL,20); INSERT INTO employee VALUES(7369,'SMITH', 'JOHN', 'Q',667,7902,'17-DEC-1984', 800,NULL,20); INSERT INTO employee VALUES(7569,'ALBERTS','CHRIS', 'L',671,7839,'06-APR-1985',3000,NULL,12); INSERT INTO employee VALUES(7799,'FISHER', 'MATTHEW', 'G',669,7569,'12-DEC-1986',3000,NULL,12); INSERT INTO employee VALUES(7919,'DOUGLAS','MICHAEL', 'A',667,7799,'04-JAN-1987', 800,NULL,12); INSERT INTO employee VALUES(7916,'ROBERTS','GRACE', 'M',669,7569,'04-JAN-1987',2875,NULL,12); INSERT INTO employee VALUES(7698,'BLAKE', 'MARION', 'S',671,7839,'01-MAY-1985',2850,NULL,30); INSERT INTO employee VALUES(7499,'ALLEN', 'KEVIN', 'J',670,7698,'20-FEB-1985',1600,300, 30); INSERT INTO employee VALUES(7521,'WARD', 'CYNTHIA', 'D',670,7698,'22-FEB-1985',1250,500, 30);

78

INSERT INTO employee VALUES(7654,'MARTIN', 'KENNETH', 'J',670,7698,'28-SEP-1985',1250,1400,30); INSERT INTO employee VALUES(7844,'TURNER', 'MARY', 'A',670,7698,'08-SEP-1985',1500,NULL,30); INSERT INTO employee VALUES(7900,'JAMES', 'FRED', 'S',667,7698,'03-DEC-1985', 950,NULL,30); INSERT INTO employee VALUES(7782,'CLARK', 'CAROL', 'F',671,7839,'09-JUN-1985',2450,NULL,10); INSERT INTO employee VALUES(7934,'MILLER', 'BARBARA', 'M',667,7782,'23-JAN-1986',1300,NULL,10);

CREATE TABLE customer( customer_id NUMBER(6,0) NOT NULL, name VARCHAR2(20) NULL,

address VARCHAR2(21) NULL, city VARCHAR2(16) NULL, state VARCHAR2(2) NULL, zip_code VARCHAR2(9) NULL, area_code NUMBER(3,0) NULL,

phone_number NUMBER(7,0) NULL, salesperson_id NUMBER(4,0) NULL, credit_limit NUMBER(9,2) NULL, CHECK (customer_id IS NOT NULL), CHECK (salesperson_id IS NOT NULL), CHECK (customer_id > 0),

CHECK (state = UPPER(state)),

CHECK (LENGTH(NVL(zip_code, '99999')) IN (5, 9)), PRIMARY KEY (customer_id),

FOREIGN KEY (salesperson_id) REFERENCES employee(employee_id) );

INSERT INTO customer VALUES(100,'JOCKSPORTS',

 

'345 VIEWRIDGE',

 

'BELMONT',

'CA','96711',415,5986609,7844,5000);

 

 

 

 

 

 

INSERT INTO customer VALUES(101,'TKB SPORT SHOP',

'490 BOLI RD.',

 

'REDWOOD CITY',

'CA','94061',415,3681223,7521,10000);

 

 

 

 

 

 

INSERT INTO customer VALUES(102,'VOLLYRITE',

 

'9722 HAMILTON',

 

'BURLINGAME',

'CA','95133',415,6443341,7654,7000);

 

 

 

 

 

 

INSERT INTO customer VALUES(103,'JUST TENNIS',

 

'HILLVIEW MALL',

'BURLINGAME',

'CA','97544',415,6779312,7521,3000);

 

 

 

 

 

 

INSERT INTO customer VALUES(104,'EVERY MOUNTAIN',

'574 SURRY RD.',

'CUPERTINO',

'CA','93301',408,9962323,7499,10000);

 

 

 

 

 

 

INSERT INTO customer VALUES(105,'K + T SPORTS',

 

'3476 EL PASEO',

'SANTA CLARA',

'CA','91003',408,3769966,7844,5000);

 

 

 

 

 

 

INSERT INTO customer VALUES(106,'SHAPE UP',

 

'908 SEQUOIA',

'PALO ALTO',

'CA','94301',415,3649777,7521,6000);

 

 

 

 

 

 

INSERT INTO customer VALUES(107,'WOMENS SPORTS',

'VALCO VILLAGE', 'SUNNYVALE',

'CA','93301',408,9674398,7499,10000);

 

 

 

 

 

 

INSERT INTO customer VALUES(108,'NORTH WOODS HEALTH', '98 LONE PINE WAY',

'HIBBING',

'MN','55649',612,5669123,7844,8000);

 

 

 

 

 

 

INSERT INTO customer VALUES(201,'STADIUM SPORTS',

'47 IRVING PL.',

'NEW YORK',

'NY','10003',212,5555335,7557,10000);

 

 

 

 

 

 

INSERT INTO customer VALUES(202,'HOOPS',

'2345 ADAMS AVE.',

'LEICESTER',

'MA','01524',508,5557542,7820,5000);

 

 

 

 

 

 

INSERT INTO customer VALUES(203,'REBOUND SPORTS',

'2 E. 14TH ST.',

 

'NEW YORK',

'NY','10009',212,5555989,7557,10000);

 

 

 

 

 

 

INSERT INTO customer VALUES(204,'THE POWER FORWARD', '1 KNOTS LANDING',

'DALLAS',

'TX','75248',214,5550505,7560,12000);

 

 

 

 

 

 

INSERT INTO customer VALUES(205,'POINT GUARD',

 

 

'20 THURSTON ST.',

'YONKERS',

'NY','10956',914,5554766,7557,3000);

 

 

 

 

 

 

INSERT INTO customer VALUES(206,'THE COLISEUM',

 

'5678 WILBUR PL.',

'SCARSDALE',

'NY','10583',914,5550217,7557,6000);

 

 

 

 

 

 

INSERT INTO customer VALUES(207,'FAST BREAK',

 

'1000 HERBERT LN.',

'CONCORD',

'MA','01742',508,5551298,7820,7000);

 

 

 

 

 

 

INSERT INTO customer VALUES(208,'AL AND BOB''S SPORTS','260 YORKTOWN CT.',

'AUSTIN',

'TX','78731',512,5557631,7560,4000);

 

 

 

 

 

 

79

INSERT INTO customer VALUES(211,'AT BAT',

'234 BEACHEM ST.',

 

'BROOKLINE',

'MA','02146',617,5557385,7820,8000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(212,'ALL SPORT',

 

'1000 38TH ST.',

'BROOKLYN',

'NY','11210',718,5551739,7600,6000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(213,'GOOD SPORT',

 

'400 46TH ST.',

'SUNNYSIDE',

'NY','11104',718,5553771,7600,5000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(214,'AL''S PRO SHOP',

'45 SPRUCE ST.',

 

 

'SPRING',

'TX','77388',713,5555172,7564,8000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(215,'BOB''S FAMILY SPORTS','400 E. 23RD',

 

'HOUSTON',

'TX','77026',713,5558015,7654,8000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(216,'THE ALL AMERICAN',

'547 PRENTICE RD.',

'CHELSEA',

'MA','02150',617,5553047,7820,5000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(217,'HIT, THROW, AND RUN', '333 WOOD COURT',

'GRAPEVINE',

'TX','76051',817,5552352,7564,6000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(218,'THE OUTFIELD',

 

'346 GARDEN BLVD.', 'FLUSHING',

'NY','11355',718,5552131,7820,4000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(221,'WHEELS AND DEALS',

'2 MEMORIAL DRIVE', 'HOUSTON',

'TX','77007',713,5554139,7789,10000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(222,'JUST BIKES',

 

'4000 PARKRIDGE BLVD.','DALLAS',

'TX','75205',214,5558735,7789,4000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(223,'VELO SPORTS',

 

'23 WHITE ST.',

 

 

'MALDEN',

'MA','02148',617,5554983,7820,5000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(224,'JOE''S BIKE SHOP', '4500 FOX COURT',

'GRAND PRARIE',

'TX','75051',214,5559834,7789,6000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(225,'BOB''S SWIM, AND RUN','300 HORSECREEK',

'IRVING',

'TX','75039',214,5558388,7789,7000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(226,'CENTURY SHOP',

'8 DAGMAR DR.',

 

'HUNTINGTON',

'NY','11743',516,5553006,7555,4000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(227,'THE TOUR',

 

'2500 GARDNER RD.',

'SOMERVILLE',

'MA','02144',617,5556673,7820,5000);

 

 

 

 

 

 

 

INSERT INTO customer VALUES(228 ,'FITNESS FIRST',

'5000 85TH ST.',

 

'JACKSON

HEIGHTS','NY','11372',718,5558710,7555,4000);

 

 

 

 

 

 

 

CREATE TABLE sales_order( order_id NUMBER(4,0) NOT NULL, order_date DATE NULL, customer_id NUMBER(6,0) NULL, ship_date DATE NULL,

total NUMBER(8,2) NULL, CHECK (order_id IS NOT NULL),

CHECK (customer_id IS NOT NULL), CHECK (total >= 0),

PRIMARY KEY (order_id),

FOREIGN KEY (customer_id) REFERENCES customer(customer_id) );

INSERT INTO sales_order VALUES(

610

, '07-JAN-1991' ,

101 ,

'08-JAN-1991' , 101.4 );

INSERT INTO sales_order VALUES(

611

, '11-JAN-1991' ,

102 ,

'11-JAN-1991' ,

45 );

INSERT INTO sales_order VALUES(

612

, '15-JAN-1991' ,

104 ,

'20-JAN-1991' , 5860 );

INSERT INTO sales_order VALUES(

601

, '16-NOV-1990' ,

106 , '30-NOV-1990' , 60.8 );

INSERT INTO sales_order VALUES(

602

, '05-JUN-1990' ,

102 , '20-JUN-1990' ,

56 );

INSERT INTO sales_order VALUES(

600

, '01-MAY-1990' ,

103

, '29-MAY-1990' ,

42 );

INSERT INTO sales_order VALUES(

604

, '15-JUN-1990' ,

106 ,

'30-JUN-1990' , 642 );

INSERT INTO sales_order VALUES(

605

, '14-JUL-1990' ,

106 , '30-JUL-1990' , 8374 );

INSERT INTO sales_order VALUES(

606

, '14-JUL-1990' ,

100 , '30-JUL-1990' , 3.4 );

INSERT INTO sales_order VALUES(

609

, '01-AUG-1990' ,

100 , '15-AUG-1990' , 102.5 );

INSERT INTO sales_order VALUES(

607

, '18-JUL-1990' ,

104 , '18-JUL-1990' , 5.6 );

INSERT INTO sales_order VALUES(

608

, '25-JUL-1990' ,

104 , '25-JUL-1990' , 35.2 );

INSERT INTO sales_order VALUES(

603

, '05-JUN-1990' ,

102 , '05-JUN-1990' , 224 );

INSERT INTO sales_order VALUES(

620

, '12-MAR-1991' ,

100 , '12-MAR-1991' ,

4450 );

80

INSERT INTO sales_order VALUES(

613

, '01-FEB-1991' ,

108

,

'01-FEB-1991' , 6400 );

INSERT INTO sales_order VALUES(

614

, '01-FEB-1991' ,

102

,

'05-FEB-1991' , 23940 );

INSERT INTO sales_order VALUES(

616

, '03-FEB-1991' ,

103

,

'10-FEB-1991' ,

764 );

INSERT INTO sales_order VALUES(

619

, '22-FEB-1991' ,

104

,

'04-MAR-1991' , 1260 );

INSERT INTO sales_order VALUES(

617

, '05-FEB-1991' ,

105

,

'03-MAR-1991' , 46370 );

INSERT INTO sales_order VALUES(

615

, '01-FEB-1991' ,

107

,

'06-FEB-1991' ,

710 );

INSERT INTO sales_order VALUES(

618

, '15-FEB-1991' ,

102

,

'06-MAR-1991' , 3083 );

INSERT INTO sales_order VALUES(

621

, '15-MAR-1991' ,

100 , '01-APR-1991' , 730 );

INSERT INTO sales_order VALUES(

509

, '04-JUN-1989' ,

226 , '10-JUN-1989' , 1174 );

INSERT INTO sales_order VALUES(

523

, '13-FEB-1990' ,

226

, '13-FEB-1990' , 1165 );

INSERT INTO sales_order VALUES(

549

, '27-DEC-1990' ,

226 , '14-JAN-1991' , 1620 );

INSERT INTO sales_order VALUES(

507

, '26-MAY-1989' ,

228

, '27-MAY-1989' , 886 );

INSERT INTO sales_order VALUES(

516

, '30-SEP-1989' ,

228 , '03-OCT-1989' , 1815 );

INSERT INTO sales_order VALUES(

553

, '02-FEB-1991' ,

228

, '13-FEB-1991' , 4400 );

INSERT INTO sales_order VALUES(

526

, '04-MAR-1990' ,

221 , '07-MAR-1990' , 7700 );

INSERT INTO sales_order VALUES(

543

, '04-SEP-1990' ,

221 , '07-SEP-1990' , 8400 );

INSERT INTO sales_order VALUES(

555

, '04-MAR-1991' ,

221 , '07-MAR-1991' , 8540 );

INSERT INTO sales_order VALUES(

559

, '16-NOV-1990' ,

222 , '23-APR-1991' , 387.2 );

INSERT INTO sales_order VALUES(

528

, '24-MAR-1990' ,

224 , '24-MAR-1990' , 3770 );

INSERT INTO sales_order VALUES(

531

, '31-MAR-1990' ,

224 , '02-APR-1990' , 1400 );

INSERT INTO sales_order VALUES(

558

, '31-MAR-1991' ,

224 , '02-APR-1991' , 1700 );

INSERT INTO sales_order VALUES(

525

, '28-FEB-1990' ,

225

, '03-MAR-1990' ,

377 );

INSERT INTO sales_order VALUES(

552

, '02-FEB-1991' ,

223

, '07-FEB-1991' , 555.8 );

INSERT INTO sales_order VALUES(

556

, '10-MAR-1991' ,

223 , '12-MAR-1991' ,

85 );

INSERT INTO sales_order VALUES(

560

, '25-APR-1991' ,

223 , '25-APR-1991' ,

72 );

INSERT INTO sales_order VALUES(

565

, '01-JUN-1991' ,

227 , '03-JUN-1991' , 4900 );

INSERT INTO sales_order VALUES(

574

, '10-OCT-1991' ,

201 , '12-OCT-1991' , 1685 );

INSERT INTO sales_order VALUES(

576

, '13-OCT-1991' ,

201 , '18-OCT-1991' , 2058.9 );

INSERT INTO sales_order VALUES(

503

, '25-MAR-1989' ,

201 , '06-APR-1989' , 1876 );

INSERT INTO sales_order VALUES(

518

, '20-OCT-1989' ,

201 , '05-NOV-1989' , 2932.5 );

INSERT INTO sales_order VALUES(

517

, '23-OCT-1989' ,

201 , '07-NOV-1989' , 784 );

INSERT INTO sales_order VALUES(

544

, '11-SEP-1990' ,

202 , '15-SEP-1990' , 2358 );

INSERT INTO sales_order VALUES(

524

, '22-FEB-1990' ,

202

, '04-MAR-1990' ,

1979 );

INSERT INTO sales_order VALUES(

502

, '10-FEB-1989' ,

202

, '23-FEB-1989' ,

500 );

INSERT INTO sales_order VALUES(

539

, '26-JUN-1990' ,

202

, '03-JUL-1990' , 1300 );

INSERT INTO sales_order VALUES(

511

, '17-AUG-1989' ,

202 , '21-AUG-1989' , 647 );

INSERT INTO sales_order VALUES(

512

, '28-AUG-1989' ,

203 , '13-SEP-1989' , 428 );

INSERT INTO sales_order VALUES(

562

, '04-MAY-1991' ,

203

, '19-MAY-1991' , 2044.5 );

INSERT INTO sales_order VALUES(

529

, '02-APR-1990' ,

203 , '05-APR-1990' , 1264.7 );

INSERT INTO sales_order VALUES(

563

, '25-MAY-1991' ,

204

, '26-MAY-1991' , 889 );

INSERT INTO sales_order VALUES(

568

, '13-JUL-1991' ,

204 , '21-JUL-1991' , 1217.4 );

INSERT INTO sales_order VALUES(

504

, '11-APR-1989' ,

204 , '12-APR-1989' , 1434.7 );

INSERT INTO sales_order VALUES(

538

, '23-JUN-1990' ,

204

, '26-JUN-1990' , 741 );

INSERT INTO sales_order VALUES(

535

, '28-MAY-1990' ,

204

, '09-JUN-1990' , 810 );

INSERT INTO sales_order VALUES(

578

, '19-NOV-1991' ,

204 , '04-DEC-1991' , 2275.6 );

INSERT INTO sales_order VALUES(

534

, '11-MAY-1990' ,

206

, '15-MAY-1990' ,

420 );

INSERT INTO sales_order VALUES(

536

, '21-MAY-1990' ,

206

, '06-JUN-1990' , 2135.6 );

INSERT INTO sales_order VALUES(

572

, '19-AUG-1991' ,

206 , '24-AUG-1991' , 1200.5 );

INSERT INTO sales_order VALUES(

514

, '05-SEP-1989' ,

207 , '16-SEP-1989' , 1140 );

INSERT INTO sales_order VALUES(

521

, '20-NOV-1989' ,

207 , '23-NOV-1989' , 896.9 );

INSERT INTO sales_order VALUES(

551

, '22-JAN-1991' ,

208

, '06-FEB-1991' , 1142 );

INSERT INTO sales_order VALUES(

513

, '06-SEP-1989' ,

208 , '14-SEP-1989' , 1497 );

INSERT INTO sales_order VALUES(

508

, '26-MAY-1989' ,

208

, '08-JUN-1989' , 1080 );

INSERT INTO sales_order VALUES(

515

, '19-SEP-1989' ,

208 , '26-SEP-1989' , 1428.5 );

INSERT INTO sales_order VALUES(

542

, '11-AUG-1990' ,

208 , '23-AUG-1990' , 2409 );

INSERT INTO sales_order VALUES(

573

, '10-OCT-1991' ,

201 , '12-OCT-1991' , 1627 );

INSERT INTO sales_order VALUES(

566

, '09-JUN-1991' ,

201

, '12-JUN-1991' , 3389.2 );

INSERT INTO sales_order VALUES(

520

, '16-NOV-1989' ,

201 , '19-NOV-1989' , 341.6 );

INSERT INTO sales_order VALUES(

519

, '20-OCT-1989' ,

201 , '05-NOV-1989' , 955 );

INSERT INTO sales_order VALUES(

575

, '04-OCT-1991' ,

201 , '17-OCT-1991' , 684 );

INSERT INTO sales_order VALUES(

547

, '16-OCT-1990' ,

202 , '27-OCT-1990' , 984.4 );

INSERT INTO sales_order VALUES(

540

, '15-JUL-1990' ,

202 , '17-JUL-1990' ,

861.2 );