Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Labs / Russian / Russian / Lab1R-Table creation altering and deletion.doc
Скачиваний:
18
Добавлен:
20.02.2016
Размер:
227.84 Кб
Скачать

Date 'yyyy-mm-dd' Где:

DATE – ключевое слово

YYYY-MM-DD – дата в формате:

YYYY – четыре цифры года

ММ – две цифры месяца

DD – две цифры дня

- – символ «минус»

Примеры: DATE '1968-01-17', DATE '2005-07-23'

Арифметические действия с датами

Вы можете прибавлять и вычитать числа к/из даты и отнимать даты от дат. Oracle интепретирует числа в арифметических выражения с датой как количество дней. Например, SYSDATE + 1 дает завтрашнюю дату, а SYSDATE - 7 – дату неделю раньше. Выражение SYSDATE + (10/1440) дает дату и время спустя 10 минут от текущей датф и времени. Вычитание из столбцаHIREDATE таблицы TEACHER значения функции SYSDATE дает количество дней, прошедших с момента поступления преподавателя на работу. Значения типа DATE нельзя умножать и делить.

Oracle предоставляет ряд функций для оперирования с датами, например, функция ADD_MONTHS позволяет добавлять итли вычитать месяцы из даты. Дополнительную информацию о функция манипулирования с датами вы можете найти вЛаб. 5.

Так как дата содержит также и время, результаты вычисления операций над датами дают дробные значения. Дробь означает часть дня, например, 1.5 дней – это 36 часов.

        1. Типы данных ansi/iso

Вы можете определять столбцы с типами данных ANSI/ISO datatypes. В этом случае Oracle конвертирует эти типы в типы данных Oracle datatypes

Преобразование типов данных ANSI в типы данных Oracle приведено в таблице ниже. Типы данных ANSI/ISO NUMERIC, DECIMAL и DEC могут специфицировать только числа с фиксированной запятой. Для этих типов по умолчанию маштаб (s) принимается равным 0.

Типы данных ANSI SQL

Типы данных Oracle

CHARACTER(n), CHAR(n)

CHAR(n)

NUMERIC(p,s), DECIMAL(p,s), DEC(p,s)

NUMBER(p,s)

INTEGER, INT, SMALLINT

NUMBER(38)

FLOAT (p)

FLOAT(p)

REAL

FLOAT(63)

DOUBLE PRECISION

FLOAT(126)

CHARACTER VARYING(n), CHAR VARYING(n)

VARCHAR2(n)

    1. Изменение таблиц

      1. Синтаксис

      1. Назначение

Изменить определение таблицы. Таблицы изменяются в Oracle в следующих случаях:

  • Чтобы добавить один или более столбцов к таблице.

  • Чтобы добавить одно или более ограничений целостности к таблице.

  • Для изменения определения существующего столбца (тип данных, дина, значение по умолчанию, ограничение целостности NOT NULL) .

  • Для удаления ограничения целостности, связанного с таблицей.

  • Для удаления столбца.

      1. Предварительные требования

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

Для создания ограничений целостности UNIQUE или PRIMARY KEY вы должны иметь привилегии, необходимые для создания индекса таблицы. Эти привилегии необходимы в связи с тем, что Oracle создает индекс индексы по столбцам, которые имеют ограничения unique или primary key в той схеме, где расположена таблица.

      1. Ключевые слова и параметры

В таблице ниже описываются фразы, которые имеют специальный смысл для предложения ALTER TABLE. Для ознакомления с описанием других фраз см. раздел «Создание таблицы».

schema

Схема, содержащая таблицу. Если schema опускается, Oracle предполагает, что таблица располагается в вашей схеме.

table

Имя изменяемой таблицы.

ADD

relational _properties

Добавляет столбец или ограничение целостности. Если добавляется столбец, то для него устанавливается значение NULL для всех строк таблицы. Для описание ключевых слов и параметров см. раздел «Создание таблицы».

Если вы ранее создали виртуальную таблицу (о виртуальных таблицах см. лабораторную работу 8) с запросом вида "SELECT *" для выбора всех столбцов из таблицы table, то после добавления нового столбца, Oracle не добавит автоматически столбец в такую виртуальную таблицу. Для добавления нового столбца в эту виртуальную таблицу повторно создайте ее с помощью предложения CREATE VIEW с использованием фразы OR REPLACE .

Нельзя добавить столбец с ограничением NOT NULL, если таблица table имеет строки.

column_constraint

Добавляет или удаляет ограничение NOT NULL в/из существующего столбца. Эту фразу нельзя использовать для изменения других ограничений целостности с помощью ALTER TABLE. См. Лаб2 для ознакомления с ограничениями целостности.

table_constraint

Добавляет или изменяет ограничения целостности таблицы.

MODIFY

modify_column_options

Модифицирует определение существующего столбца. Если вы опускаете любую из составляющих определения столбца (тип данных, значение по умолчанию, ограничение столбца), то она остается без изменения.

  • Вы можете изменить CHAR на VARCHAR2 (или VARCHAR) и VARCHAR2 (или VARCHAR) на CHAR только если столбец содержит NULL во всех строках или если при такой модификации не происходит изменение размера столбца.

  • Вы можете изменить тип любого столбца или уменьшить размер столбца, если столбец содержит значения NULL для всех строк.

  • Вы всегда можете увеличить размер строковых столбцов или точность числовых столбцов не зависимо от того, имеются ли значения такого столбца в строках таблицы.

column

Имя добавляемого или модифицируемого столбца.

Единственным типом ограничения целостности, которое вы можете добавить к существующему столбцу с помощью фразы MODIFYс использованием синтаксисаограничения целостности столбца, является ограничение NOT NULL, и только если столбец содержит значенияNULL. Для определения ограничений целостности других типов (UNIQUE,PRIMARYKEY, референциальная целостность иCHECK) к существующим столбцам, используйте фразуADDв синтаксисеограничения целостности таблицы.

datatype

Указывает новый тип данных существующего столбца.

Вы можете опустить тип данного только если в предложении указывается, что столбец входит в состав внешнего ключа референциального ограничения целостности. Oracle автоматически присвоит столбцу тип, имеющийся у столбца, на который делается ссылка в референциальном ограничении целостности.

DEFAULT

Указывается новое значение по умолчанию для существующего столбца. Oracle будет присваивать это значение столбцу, если последующие предложения INSERTне будут содержать значения для указанного столбца. Если вы добавили новый столбец в таблицу с указанием значения по умолчанию, Oracle вставит указанное значение по умолчанию во все строки таблицы.

Тип данных значения по умолчанию должен соответствовать типу данных столбца. Столбец также должен иметь достаточный размер, чтобы содержать значение по умолчанию. Выражение при фразе DEFAULTне может ссылаться на другие столбцы.

drop_constraint_clause

Удаляет ограничение целостности из базы данных. Oracle деактивирует такое ограничение и удаляет его из каталога данных. В одной фразе drop_constraint_clauseвы можете указать одно ограничение, однако в одном предложении обновления можно воспользоваться многими фразамиdrop_constraint_clauses.

PRIMARY KEYудаляет ограничение PRIMARY KEY таблицы

UNIQUEудаляет ограничение UNIQUE для указанных столбцов

CONSTRAINTудаляет ограничение целостности с указанным именем

CASCADEудаляет все другие ограничения целостности, которые зависят

от удаляемого ограничения

Вы не можете удалить ограничения UNIQUEилиPRIMARY KEY, которые являются частью референциального ограничения целостности без удаления внешнего ключа. Для удаления ключа, на который делается ссылка, и внешнего ключа используйте фразуCASCADE. Если вы не воспользуйтесь фразойCASCADE, Oracle не удалит ограничениеPRIMARY KEYилиUNIQUEдля того столбца, на который делается ссылка из внешнего ключа.

drop_column_clause

Позволяет освободить память базы данных путем удаления ненужных столбцов или путем отметки их как не используемые с последующим удалением, когда буде не хватать памяти.

SET UNUSED

Отмечает один или несколько столбцов как не используемые. При этом столбцы реально не удаляются и команда выполняется намного быстрее по сравнению с использованием фразы DROP.

Не используемые столбцы трактуются как удаленные, хотя их данные остаются в строках таблицы. После отметки столбцов в качестве не используемых к ним нельзя будет получить доступ. Запросы типа "SELECT *" не будут отыскивать данных из не используемых столбцов. Кроме того, имена и типы столбцов, отмеченных как не используемые, не будут воспроизводиться по команде DESCRIBE, и вы можете добавлять к таблице столбцы с именами не используемых столбцов.

DROP

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

Когда удаляются данные столбца:

  • Удаляются все индексы, определенные на нем.

  • Удаляются все ограничения целостности, ссылающиеся на этот столбец.

Примечание:Если ограничение целостности также ссылается на столбец, который не удаляется, Oracle возвращает ошибку и не удаляет указанный столбец, если не указана фразаCASCADE CONSTRAINTS. Если эта фраза указана, Oracle удаляет все ограничения, ссылающиеся на удаляемый столбец.

DROP UNUSED COLUMNS

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

column

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

CASCADE CONSTRAINTS

Удаляет все референциальные ограничения целостности, которые ссылаются удаляемые столбцы, а также все те ограничения, которые охватывают удаляемые столбцы. Если любое из ограничений ссылается на удаляемый столбец из другого столбца той же таблицы или другой, то необходимо указать CASCADE CONSTRAINTS. В противном случае предложение не будет выполнено и будет выдано соответствующее сообщение.

INVALIDATE

Примечание:В текущей версии Oracle выполняет эту фразу не зависимо от того, указано ли ключевое слово INVALIDATE.

Oracle делает не действительными все зависимые объекты, такие как виртуальные таблицы, триггеры, хранимые процедуры и функции. Эта процедура является рекурсивной. Поэтому становятся не действительными все зависимые непосредственно и опосредственно объекты.

Объект, который стал не действительным в результате этого предложения, автоматически становится действительным при следующем обращении к нему. В этот момент вы должны будете исправить все возникшие в нем ошибки, чтобы иметь возможность последующей работы с ним..

DROP COLUMNSCONTINUE

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

При изменении определения столбца вы можете только увеличить размер существующего столбца, если таблица не содержит строк. Вы также можете уменьшить размер столбца, если таблица пустая. Для столбцов типа CHAR, увеличение размера столбца может потребовать слишком много времени, особенно если таблица содержит много строк. Это обусловлено тем, что значения типа CHAR должны быть расширены пробелами в конце, чтобы удовлетворить требования нового размера..

Если вы изменяете тип данных (например, с VARCHAR2 на CHAR), то данные в столбце не изменяются. Однако, длина значений новых столбцов CHAR может быть изменена в связи с добавлением пробелов в конце.

Изменение таблицы имеет следующие последствия:

Если новый столбец добавляется, то его значения первоначально становятся NULL. Вы можете добавить столбец с ограничением NOT NULL, если таблица еще не содержит сток.

Если виртуальная таблица или программа PL/SQL зависит от базовой таблицы, то изменения в базовой таблице могут привести к тому, что зависимый от нее объект становится не действительным.

Соседние файлы в папке Russian