Выбрать главу

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 можно указать следующую информацию: