■ повторно подключается к базе данных как 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