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

■ повторно подключается к базе данных как store и делает запрос к

order_status_temp, чтобы показать, что в этой таблице нет строк.

□ INSERT INTO order_status_temp (

id, status

) VALUES (

1 , 'New'

);

1 row created.

DISCONNECT

CONNECT store/store_password

SELECT *

FROM order_status_temp;

no rows selected

314 Глава 10

Получение информации о таблицах

Для получения информации о таблицах можно:

■ выполнить для таблицы команду DESCRIBE. В предыдущих главах вы

уже видели примеры, которые используют команду DESCRIBE;

■ сделать запрос к user_tables, составляющей часть словаря данных.

В таблице 10.1 описаны некоторые столбцы представления user_

tables.

Примечание Чтобы получить информацию о всех таблицах, к которым вам разрешен доступ,

можно сделать запрос к представлению all_tables. _____________________________

Следующий пример выбирает из таблицы user_tables некоторые из

столбцов, где table_name равно order_status2 или order_status_temp:

□ SELECT table_name, tablespace_name, temporary

FROM user_tables

WHERE table_name IN (‘0RDER_STATUS2’, ‘ORDER_STATUS_TEMP’);

TABLE_NAME TABLESPACE_NAME T

0RDER_STATUS2 USERS N

ORDER_STATUS_TEMP Y

Обратите внимание, что таблица order_status_temp является временной,

на что указывает буква Y в последнем столбце.

Таблица 10.1. Некоторые столбцы представления userjables

Столбец________ Тип____________Описание_____________________________________

table_name VARCHAR2(30) Имя таблицы.

tablespace_name VARCHAR2(30) Имя табличного пространства, в котором хранится

таблица. Табличным пространством называется область,

используемая базой данных для хранения объектов,

например, таблиц.

temporary VARCHAR2(1) Указывает на то, является ли таблица временной. Устанавливается

на Y, если таблица временная, или на

N, если нет. _________________________

Получение информации о столбцах таблицы

Информацию о столбцах ваших таблиц можно получить из представления

user_tab_columns. В таблице 10.2 описаны некоторые из столбцов в user_

tab_columns.

Примечание Информацию о столбцах всех таблиц, к которым вы имеете доступ, можно получить,

сделав запрос к представлению all_tab_columns. _______________________

В следующем примере из таблицы use r_tab_columns выбираются некоторые

из столбцов для таблицы products:

Создание таблиц, последовательностей, индексов и представлений 315

□ COLUMN column_name FORMAT а15

COLUMN d a ta jty p e FORMAT a10

SELECT column_name, data_type, d a ta_leng th, d a ta _ p re c is io n , d a ta _ s cale

FROM user_tab_columns

WHERE ta b le name = 'PRODUCTS';

COLUMN_NAME DATA_TYPE DATA_LENGTH DATA_PRECISION DATA.

PRODUCT ID NUMBER 22 0

PRODUCT TYPE ID NUMBER 22 0

NAME VARCHAR2 30

DESCRIPTION VARCHAR2 50

PRICE NUMBER 22 5 2

Таблица 10.2. Некоторые столбцы в представлении user_tab_columns

Столбец Тип Описание

table_name VARCHAR2(30) Имя таблицы.

column_name VARCHAR2(30) Имя столбца.

data_type VARCHAR2(T06) Тип данных столбца.

data_length NUMBER Длина данных.

data_precision NUMBER Разрядность представления числового столбца, если

она была указана для столбца.

data_scale NUMBER Точность числового столбца.

Изменение таблицы

Для изменения структуры таблицы используется оператор ALTER TABLE.

Этот оператор можно использовать для выполнения таких задач, как

■ добавление, изменение или удаление столбца;

■ добавление или удаление ограничения;

■ активация или блокировка ограничения.

В следующих разделах вы увидите, как использовать ALTER TABLE для

выполнения каждой из этих задач.

Добавление столбца

В следующем примере ALTER TABLE используется для добавления в таблицу

order_status2 столбцаmodified_by:

□ ALTER TABLE order_status2

ADD modified_by INTEGER;

В следующем примере в ту же таблицу добавляется столбец in it ia l 1у_

created:

□ ALTER TABLE order_status2

ADD initially_created DATE DEFAULT SYSDATE NOT NULL;

Можно проверить, как прошло добавление нового столбца, выполнив

для order_status2 команду DESCRIBE:

316 Глава 10

□ DESCRIBE order_status2

Name Null? Type

ID STATUS

LAST_MODIFIED

NOT

NULL NUMBER(38)

VARCHAR2(10)

DATE

MODIFIED_BY

INITIALLY_CREATED

NUMBER(38)

NOT NULL DATE

Добавление виртуального столбца

В базе данных Oracle l l g вы можете добавить виртуальный столбец: это

такой столбец, который ссылается только на другие столбцы, которые уже

есть в таблице. Например, следующий оператор ALTER TABLE добавляет

виртуальный столбец по имени average_salary в таблицу salary_grades:

□ ALTER TABLE salary_grades

ADD (average_salary AS ((low_salary + high_salary)/2));

Обратите внимание: average_salary является средним значением для

low_salary и high_salaryv Следующая команда DESCRIBE подтверждает, что

в таблицу salary_grades был добавлен столбец average_salary:

□ DESCRIBE sa la ry_ g ra d e s

Name Null? Type

SALARY_GRADE_ID NOT NULL NUMBER(38)

L0W_SALARY NUMBER(6)

HIGH_SALARY NUMBER(6)

AVERAGE_SALARY NUMBER