double arrow

Изменение столбцов

При изменении столбцов таблиц нужно учитывать целый ряд моментов. Общие правила следующие.

  • Ширина столбца может быть увеличена до максимальной длины, разрешенной для соответствующего типа данных.
  • Ширину столбца можно уменьшить только до наибольшей длины имеющихся в этом столбце значений.
  • Для столбцов с числовыми данными ширину всегда можно увеличить.
  • Для столбцов с числовыми данными ширину можно уменьшить только тогда, когда нового числа знаков будет достаточно для размещения любого из имеющихся в столбце значений.
  • Для числовых данных можно увеличивать или уменьшать число десятичных знаков.
  • Тип данных в столбце обычно можно изменить.

В некоторых реализациях использование определенных опций оператора ALTER TABLE может быть запрещено. Например, вам могут не позволить удалять столбцы из таблиц. Вместо этого вам нужно будет удалить таблицу и создать новую с нужным числом столбцов. Могут возникнуть проблемы с удалением столбцов из таблицы, зависящей от столбца из другой таблицы, или с удалением столбца, на который ссылается другая таблица. По этому поводу внимательно просмотрите документацию, предлагаемую той реализацией SQL, с которой вы работаете.

Создание таблицы на основе уже существующей

С помощью комбинации операторов CREATE TABLE и SELECT можно создать копию уже существующей таблицы. Столбцы новой таблицы будут иметь те же определения. При этом для копирования можно выбрать как все столбцы, так и только некоторые.

Новые столбцы, создаваемые как функции или комбинации столбцов, автоматически учитывают размеры, необходимые для хранения имеющихся данных. Базовый синтаксис оператора создания таблицы из уже существующей будет следующим:

CREATE TABLE ИМЯ_НОВОЙ_ТАБЛИЦЫ AS SELECT [ *|СТОЛБЕЦ1, СТОЛБЕЦ2 ]

FROM ИМЯ_ТАБЛИЦЫ [ WHERE ].

Обратите здесь внимание на новые ключевые слова, в частности, на ключевое слово SELECT, которое представляет запрос к базе данных и будет обсуждаться подробно позже. Но сейчас важно знать, что вы можете создавать таблицы, основываясь на результатах запроса.

Сначала выполним запрос, чтобы увидеть данные в таблице PRODUCTS_TBL.

SELECT * FROM PRODUCTS_TBL;

PROD_ID PROD_DESC COST

11235 КОСТЮМ ВЕДЬМЫ 29.99

222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75

13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1

90 ФОНАРИ 14.5

15 КОСТЮМЫ В АССОРТИМЕНТЕ 10

9 СЛАДКАЯ КУКУРУЗА 1.35

6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45

87 ПЛАСТИКОВЫЕ ПАУКИ 1.05

119 МАСКИ В АССОРТИМЕНТЕ 4.95

SELECT * выбирает данные из всех полей данной таблицы Символ * представляет целую сроку данных (т. е. запись) в таблице.

Затем на основе результатов этого запроса создадим таблицу с именем PRODUCTS_TMP.

CREATE TABLE PRODUCTS_TMP AS SELECT * FROM PRODUCTS_TBL;

Если теперь выполнить запрос к таблице PRODUCTS_TMP, результат будет выглядеть так же, как результат запроса к оригинальной таблице.

При создании таблицы из уже имеющейся, новая таблица получит те же атрибуты STORAGE, что и исходная.

Удаление таблиц

Удаление таблиц является, пожалуй, самым простым делом. Если используется опция RESTRICT либо на таблицу ссылается представление или ограничение, используемый для удаления оператор DROP возвратит ошибку. При использовании опции CASCADE будет выполнено удаление не только самой таблицы, но и всех ссылающиеся на таблицу представлений и ограничений. Синтаксис оператора, используемого для удаления таблиц, следующий:

DROP TABLE ИМЯ_ТАБЛЙЦЫ [ RESTRICT|CASCADE ].

В следующем примере удаляется только что созданная нами таблица.

DROP TABLE USER1.PRODUCTS_TMP;

При удалении таблицы всегда указывайте имя схемы или владельца таблицы. Иначе вы рискуете удалить не ту таблицу. Если вы имеете несколько имен пользователей, под которыми вам разрешен доступ к базе данных, убедитесь, что вы вошли в базу данных под нужным именем


Сейчас читают про: