Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет123/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   119   120   121   122   123   124   125   126   ...   177
Удаление  таблицы 
можно  выполнить  с  помощью  следующего  опе-
ратора: 
DROP TABLE имя_таблицы [CASCADE CONSTRAINTS]; 
При  наличии  конструкции CASCADE CONSTRAINTS вместе  с  уда-
лением  таблицы  уничтожаются  ограничения  внешнего  ключа  в  других 
таблицах. 
П р и м е р ы 
Постоянно работающий магазин напрямую контактирует с издатель-
ствами и имеет постоянный штат продавцов. Директор магазина должен 
иметь сведения:  
1)  о поступивших книгах: название книги, фамилия автора, цена, из-
дательство, жанр; 
2)  о  распределении  книг  среди  продавцов:  название  книги,  фамилия 
продавца, количество экземпляров, дата поступления. 
 
136


 
1
.  Необходимо  создать  таблицы: BOOKS, BOOKS_DELIVERY, ука-
зав все необходимые ограничения целостности данных. 
Перечень, названия и тип данных столбцов таблицы BOOKS:  
-------------------------------------------------------------------------- 
Код книги CODE_BOOK Number(5) 
Название книги TITLE 
Varchar2(25) 
ФИО автора AUTHOR 
Varchar2(20) 
Цена книги PRICE 
Number(7) 
Издательство PUBLISH_HOUSE 
Varchar2(15) 
Жанр GENRE  Varchar2(15) 
-------------------------------------------------------------------------- 
Информация таблицы BOOKS: 
Код кн.  Назв. книги 
ФИО автора  Цена   Изд-во 
Жанр 
---------------------------------------------------------------------------------------------- 
 1 
Гибель Богов 
Перумов Н. 345  Аст 
Фантастика 
 2 
Казаки 
Толстой Л. 5568  Нова 
Роман 
 3 
Ярость 
Перумов Н. 1385 
Аст 
Детектив 
 4 
Дюна 
Герберт Ф. 2668  Нова 
Фантастика 
 5 
Гибель Титана 
Кристи А. 2345  Аст 
Роман 
 6 
Дети Дюны 
Герберт Ф. 2500  Аст 
Фантастика 
---------------------------------------------------------------------------------------------- 
Перечень, 
названия 
и 
тип 
данных 
столбцов 
таблицы 
BOOKS_DELIVERY: 
------------------------------------------------------------------------------------ 
Код операции CODE_OPERATION Number(10) 
Код книги CODE_BOOK  Number(5) 
ФИО продавца SALESMAN 
Varchar2(20) 
Количество единиц QUANTITY 
Number(4) 
Дата поставки DATE_DELIVERY 
 
Date 
------------------------------------------------------------------------------------ 
Информация таблицы BOOKS_DELIVERY: 
Код опер.  Код книги 
ФИО Продавца  Кол-во ед.  Дата поставки 
----------------------------------------------------------------------------------------- 
 1  

Иванов И. И. 5 
20-01-2006 
 2 

Иванов И. И. 5 
10-02-2006 
 3 

Петров П. П. 4 
25-01-2006 
 4 

Петров П. П. 4 
20-02-2006 
 
137


 
 5 

Иванов И. И. 4 
20-02-2006 
----------------------------------------------------------------------------------------- 
Для  создания  таблицы BOOKS воспользуемся  оператором CREATE  
TABLE. Столбец CODE_BOOK, содержащий уникальный код книги, яв-
ляется ключевым, и по отношению к его значениям устанавливаем огра-
ничение PRIMARY KEY. За значениями для этого столбца пользователь 
должен следить сам. Ограничение именуется как PK_BOOKS. Поскольку 
столбец TITLE не  может  иметь  пустые  значения,  на  него  накладываем 
ограничение NOT NULL. На значения столбца PRICE накладываем огра-
ничение, связанное со стоимостью книги, она должна быть не менее 100 
руб.  Ограничение  получает  имя PRICE_BOOKS. Если  таблица BOOKS 
была уже создана ранее, то перед повторным созданием ее следует уда-
лить следующим оператором: 
DROP  TABLE  BOOKS; 
Следующий оператор CREATE языка SQL создает таблицу BOOKS с 
необходимыми ограничениями целостности данных:   
CREATE  TABLE  BOOKS (CODE_BOOK  NUMBER(5)  
CONSTRAINT PK_BOOKS  PRIMARY  KEY
TITLE VARCHAR2(25)  CONSTRAINT  TITLE_BOOKS  NOT  NULL, 
AUTHOR  VARCHAR2(20), 
PRICE  NUMBER(7)  CONSTRAINT  PRICE_BOOKS   
CHECK(PRICE >100),  
PUBLISH_HOUSE  VARCHAR2(15),  GENRE  VARCHAR2(15));  
Вставка строк в таблицу BOOKS осуществляется следующей сово-
купностью операторов: 
INSERT INTO BOOKS VALUES(1,'Гибель Богов','Перумов Н.', 345, 
'Аст', 'Фантастика'); 
INSERT INTO BOOKS VALUES(2,'Казаки','Толстой Л.', 5568, 'Нова', 
'Роман'); 
INSERT INTO BOOKS VALUES(3,'Ярость','Перумов Н.',1385,'Аст', 
'Детектив'); 
INSERT INTO BOOKS VALUES(4,'Дюна', 'Герберт Ф.', 2668, 'Нова', 
'Фантастика'); 
INSERT INTO BOOKS VALUES(5,'Гибель Титана', 'Кристи А.', 2345, 
'Аст', 'Роман'); 
INSERT INTO BOOKS VALUES(6,'Дети Дюны', 'Герберт Ф.', 2500, 
'Аст', 'Фантастика'); 
 
138


 
Просмотр введенных значений можно выполнить с помощью сле-
дующего оператора SQL: 
SELECT * FROM BOOKS
Для  создания  таблицы BOOKS_DELIVERY также  воспользуемся 
оператором CREATE  TABLE. Столбец CODE_OPERATION, содержа-
щий  уникальный  код  операции,  является  ключевым,  и  по  отношению  к 
его значениям устанавливаем ограничение PRIMARY KEY. Это ограни-
чение  получает  имя DELIVERY_PR. Для  генерации  уникальных  значе-
ний  этого  столбца  используем  предварительно  созданную  с  помощью 
оператора CREATE SEQUENCE последовательность CODE_OP: 
CREATE  SEQUENCE  CODE_OP; 
Поскольку  столбец CODE_BOOK должен  содержать  только  те  зна-
чения,  которые  присутствуют  в  соответствующем  столбце  таблицы 
BOOKS,  необходимо  задать  соответствующее  ограничение  на  значения 
столбца CODE_BOOK. Это ограничение можно сделать как ограничени-
ем столбца, так и ограничением таблицы, задав ему имя DELIVERY_FK. 
Конструкция ON DELETE CASCADE обеспечит при удалении из табли-
цы BOOKS строк,  содержащих  значения  внешнего  ключа,  автоматиче-
ское  удаление  строк  и  из  таблицы BOOKS_DELIVERY. Для  столбца 
DATE_DELIVERY  значением  по  умолчанию  устанавливаем  текущую 
дату (SYSDATE). Если  таблица BOOKS_DELIVERY была  уже  создана 
ранее,  то  перед  повторным  созданием  ее  следует  удалить  следующим 
оператором: 
DROP  TABLE  BOOKS_DELIVERY; 
Следующий оператор создает таблицу BOOKS_DELIVERY с необхо-
димыми ограничениями целостности данных: 
CREATE  TABLE  BOOKS_DELIVERY ( 
CODE_OPERATION  NUMBER(10)   
CONSTRAINT  DELIVERY_PR PRIMARY  KEY, 
CODE_BOOK  NUMBER(5), SALESMAN  VARCHAR2(20), 
QUANTITY  NUMBER(4),   
DATE_DELIVERY  DATE  DEFAULT  SYSDATE
CONSTRAINT  DELIVERY_FK  FOREIGN  KEY(CODE_BOOK) 
REFERENCES  BOOKS(CODE_BOOK)  ON  DELETE  CASCADE); 
Вставка строк в таблицу BOOKS_DELIVERY осуществляется ис-
пользованием следующей совокупности операторов INSERT:  
 
139


 
INSERT INTO BOOKS_DELIVERY VALUES(CODE_OP.NEXTVAL, 
1, 'Иванов И. И.', 5, '20-01-2006'); 
INSERT INTO BOOKS_DELIVERY VALUES(CODE_OP.NEXTVAL, 
3, 'Иванов И. И.', 5, '10-02-2006'); 
INSERT INTO BOOKS_DELIVERY VALUES(CODE_OP.NEXTVAL, 
2, 'Петров П. П.', 4, '25-01-06'); 
INSERT INTO BOOKS_DELIVERY VALUES(CODE_OP.NEXTVAL, 
4, 'Петров П. П.', 4, '20-02-06'); 
INSERT INTO BOOKS_DELIVERY VALUES(CODE_OP.NEXTVAL, 
4, 'Иванов И. И.', 4, '20-02-06'); 
Просмотр  введенных  значений  можно  выполнить  с  помощью  сле-
дующего оператора SQL: 
SELECT * FROM  BOOKS_DELIVERY; 
2.
 Создать таблицу BOOKS1, структура которой идентична структуре 
таблицы BOOKS, и перенести в нее строки с информацией о книгах жан-
ра «Фантастика» и «Роман» из таблицы BOOKS. 
Следующий набор операторов SQL создает таблицу BOOKS1 и пере-
носит в нее строки из таблицы BOOKS:  
CREATE  TABLE  BOOKS1 (CODE_BOOK  NUMBER(5)  
CONSTRAINT  PK_BOOKS1  PRIMARY  KEY, 
TITLE  VARCHAR2(25)  CONSTRAINT  TITLE_BOOKS1   
NOT  NULL, AUTHOR  VARCHAR2(15), 
PRICE  NUMBER(7)  CONSTRAINT PRICE_BOOKS1  
CHECK(PRICE >100), PUBLISH_HOUSE  VARCHAR2(15),  
GENRE  VARCHAR2(15));  
INSERT  INTO  BOOKS1  SELECT  CODE_BOOK, TITLE, AUTHOR, 
PRICE, PUBLISH_HOUSE, GENRE  FROM  BOOKS  WHERE   
GENRE = 'Фантастика'  OR  GENRE = 'Роман'; 
Аналогичные действия выполняются следующим оператором: 
CREATE  TABLE  BOOKS1 AS  
SELECT  CODE_BOOK, TITLE, AUTHOR, PRICE,  
PUBLISH_HOUSE, GENRE  FROM  BOOKS  WHERE  
GENRE = 'Фантастика'  OR  GENRE = 'Роман'; 
Просмотр введенных значений можно выполнить с помощью сле-
дующего оператора SQL: 
SELECT * FROM  BOOKS1; 
 
140


 
3.
 Выполнить с помощью оператора UPDATE следующие изменения 
в таблице BOOKS: 
а)  заменить  в  таблице BOOKS в  строке  с  фамилией  автора  «Кристи 
А.» в столбце AUTHOR фамилию «Кристи А.» на «Агата Кристи» и в 
столбце GENRE жанр «Роман» на жанр «Детектив»; 
б)  заменить  в  таблице BOOKS цену  книги  «Гибель  Титана»  на  цену 
книги «Казаки». 
Следующий набор операторов выполнит указанные действия: 
UPDATE  BOOKS  SET  GENRE='Детектив', AUTHOR='Агата 
Кристи' 
WHERE  AUTHOR='Кристи А.'; 
UPDATE  BOOKS  SET  PRICE= 
(SELECT  PRICE  FROM  BOOKS  WHERE  TITLE='Казаки') 
WHERE  TITLE='Гибель Титана'; 
4.
 Удалить из таблицы BOOKS все строки, содержащие информацию 
о книгах в жанре «Роман». Используем следующий оператор: 
DELETE  BOOKS  WHERE  GENRE = 'Роман'; 
5.
  Добавить  в  таблицу BOOKS новый  столбец PRICE_У_Е  с  типом 
данных NUMBER(7,2) и  пересчитать  цену  книг  в  условных  единицах. 
Следующие  операторы  выполнят  сначала  добавление  нового  столбца  в 
таблицу, а затем заполнят его соответствующими значениями: 
ALTER  TABLE  BOOKS  ADD  PRICE_У_Е  NUMBER(7,2); 
UPDATE  BOOKS  SET  PRICE_У_Е=PRICE/2155; 
Отметим,  что  при добавлении  нескольких  новых  столбцов  в таблицу 
они заключаются в скобки: 
ALTER  TABLE  BOOKS  ADD  (YEAR_PUBLISH CHAR(4),  
TOWN_PUBLISH CHAR(15)); 
Для  изменения  характеристик  столбца  указывается  ключевое  слово 
MODIFY, имя столбца и новые характеристики:  
ALTER  TABLE  BOOKS  MODIFY (YEAR_PUBLISH NUMBER(4),  
TOWN_PUBLISH CHAR(25)); 
Для  добавления  ограничения  целостности  данных  необходимо  ука-
зать ключевое слово CONSTRAINT,  имя ограничения и само ограниче-
ние. При этом необходимо помнить, что добавляемое ограничение цело-
стности  данных  не  должно  противоречить  данным,  находящимся  в  таб-
лице. 
 
141


 
ALTER  TABLE  BOOKS  ADD CONSTRAINT ZZ CHECK(PRICE>200); 
Для  временного  отключения  проверки  ограничения  целостности  с 
именем  ZZ  необходимо использовать команду  
ALTER TABLE BOOKS DISABLE CONSTRAINT ZZ
Для  включения  проверки  этого  ограничения  целостности  можно  ис-
пользовать команду 
ALTER TABLE BOOKS ENABLE CONSTRAINT ZZ; 
Для удаления ограничения целостности с именем ZZ необходимо ука-
зать  ключевые  слова DROP и CONSTRAINT и  имя  удаляемого  ограни-
чения 
ALTER  TABLE  BOOKS  DROP CONSTRAINT ZZ


Достарыңызбен бөлісу:
1   ...   119   120   121   122   123   124   125   126   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет