to Chemistry 30
3 2 Supernova A s t a r explodes 25.99
4 2 Tank War A c tio n movie
about a fu tu re
war 13.95
В первой стоке таблицы products значение product_type равно 1, что
означает, что этот товар является книгой. Значение produ ct_type_id попадает
сюда из таблицы product_types, в которой значение 1 столбца product_
typ e_ id служит для представления книг. Вторая строка также представляет
книгу, а третья и четвертая - видео.
Чтобы самостоятельно увидеть все строки таблицы products, можно,
используя SQIfPlus, выполнить следующий оператор SELECT:
П SELECT * FROM products;
Таблица purchases В этой таблице хранятся все покупки, сделанные
покупателями. Для каждой покупки, совершенной конкретным покупателем,
хранится следующая информация:
■ идентификатор товара,
■ идентификатор покупателя,
■ количество единиц товара, купленное покупателем.
Для создания таблицы purchases сценарий store_schema. s q l использует
следующий оператор CREATE TABLE:
□ CREATE TABLE purchases (
p ro d u ct_ id INTEGER
CONSTRAINT purchases_fk_products
REFERENCES p ro d u c ts (p ro d u c t_ id ),
customer_id INTEGER
CONSTRAINT pu rchases_fk_customers
REFERENCES customer(custom er_ id ),
q u a n tity INTEGER NOT NULL,
CONSTRAINT purchases_pk PRIMARY_KEY (p ro d u c t_ id , customer_id)
);
Таблица содержит следующие столбцы.
■ product_id Хранит идентификатор проданного товара. Он должен
совпадать со значением в столбце pro d u ct_ id для соответствующего
товара в таблице products.
■ customer_id Хранит идентификатор покупателя, совершившего эту
покупку. Он должен совпадать со значением в столбце customer_id
для соответствующего товара в таблице customers.
■ quantity Хранит количество единиц проданного товара.
Введение 19
У таблицы purchases имеется ограничение purchases_pk, которое включает
несколько столбцов этой таблицы: produ ct_id и customer_id. Комбинация
этих двух значений должна быть уникальной для каждой строки. Когда
первичный ключ состоит из нескольких столбцов, он называется составным
первичным ключём.
Ниже приведено подмножество строк, хранящихся в таблице pu rchases,
которая была заполнена сценарием store_schema. sq class="underline"
□ p rodu ct_id customer_id q u a n tity
1 1 1
2 1 3
1 4 1
2 2 1
1 3 1
Как видно, комбинация значений столбцов produ ct_id и customer_id является
уникальной для каждой строки.
Вы можете посмотреть все строки таблицы purchases самостоятельно,
выполнив следующую команду SELECT в SQI?Plus:
□ SELECT * FROM purchases;
Таблица employees хранит информацию о сотрудниках магазина. Таблица
содержит следующие поля:
■ идентификатор сотрудника,
■ идентификатор менеджера этого сотрудника, если такой существует,
■ имя,
■ фамилия,
■ должность,
■ заработная плата.
Для создания таблицы employees сценарий store_schema. s q l использует
следующий оператор CREATE TABLE:
□ CREATE TABLE employees (
employee_id INTEGER CONSTRAINT employees_pk PRIMARY KEY,
manager_id INTEGER,
firs t_ n am e VARCHAR2(10) NOT NULL,
last_name VARCHAR2(10) NOT NULL,
t i t l e VARCHAR2(20),
s a la r y number(6, 0)
);
Сценарий store_schema. s q l заполняет таблицу employees следующими
строками:
□ employee_id manager_id first_n amela st_nam e t i t l e s a la r y
1 James Smith CEO 800000
2 1 Ron Johnson S a le s Manager 600000
20 Глава 1
3 2 Fred Hobbs Salesperson 150000
4 2 Susan Jones Salesperson 500000
Видно, что James Smith не имеет менеджера, потому что он сам является
старшим исполнительным директором (CEO) магазина.
Таблица salary_grades хранит различные разряды сетки заработной
платы, действующие для сотрудников. В ней хранится следующая информация:
■ идентификатор разряда заработной платы,
■ нижняя граница заработной платы для этого разряда,
■ верхняя граница заработной платы для этого разряда.
Для создания таблицы sa la ry_ g ra d e s сценарий store_schema. s q l использует
следующий оператор CREATE TABLE:
□ CREATE TABLE sa la ry_ g rad e s (
sa la ry_ g ra d e _ id INTEGER CONSTRAINT salary_grade_pk PRIMARY KEY,
low _ sa la ry NUMBER(6, 0),
h ig h _ sa la ry NUMBER(6, 0)
);
Сценарий store_schema. sq l заполняет эту таблицу следующими строками:
□ sa la ry_ g ra d e _ id low _ sa la ry h ig h _ sa la ry
1 1 250000
2 250001 500000
3 500001 750000
4 750001 999999
Добавление, модификация и удаление строк
В этом разделе вы узнаете, как добавлять, изменять и удалять строки в таблицах
базы данных при помощи SQL выражений INSERT, UPDATE и DELETE.
Можно зафиксировать изменения в строках, используя оператор COMMIT,
или отменить эти изменения, используя оператор ROLLBACK. В данном разделе
последние два оператора детально не рассматриваются; подробнее
см. главу 8.
Добавление строки в таблицу
Для добавления строки в таблицу можно воспользоваться оператором
INSERT. В операторе INSERT можно указать следующую информацию: