Лаврентев Освоение СQЛ 2009
.pdf71
Пользователь 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 ); |