- •Лабораторная робота 1
- •Ключевые слова и параметры
- •Типы данных Oracle
- •Семантика сравнения строковых данных
- •Использование типа данных number
- •Использование типа данных date
- •Date 'yyyy-mm-dd' Где:
- •Арифметические действия с датами
- •Типы данных ansi/iso
- •Изменение таблиц
- •Удаление таблиц
- •Задание
- •Создание таблицы
- •Изменение таблицы
- •Удаление таблицы
- •Контрольные вопросы
- •Приложение а. Правила именования объектов базы данных
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 часов.
Типы данных 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) |
Изменение таблиц
Синтаксис
Назначение
Изменить определение таблицы. Таблицы изменяются в Oracle в следующих случаях:
Чтобы добавить один или более столбцов к таблице.
Чтобы добавить одно или более ограничений целостности к таблице.
Для изменения определения существующего столбца (тип данных, дина, значение по умолчанию, ограничение целостности NOT NULL) .
Для удаления ограничения целостности, связанного с таблицей.
Для удаления столбца.
Предварительные требования
Таблица должна размещаться в вашей собственной схеме, иначе вы должны иметь системную привилегию ALTER ANY TABLE. Для некоторых операций также нужна привилегия CREATE ANY INDEX.
Для создания ограничений целостности UNIQUE или PRIMARY KEY вы должны иметь привилегии, необходимые для создания индекса таблицы. Эти привилегии необходимы в связи с тем, что Oracle создает индекс индексы по столбцам, которые имеют ограничения unique или primary key в той схеме, где расположена таблица.
Ключевые слова и параметры
В таблице ниже описываются фразы, которые имеют специальный смысл для предложения 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 |
Модифицирует определение существующего столбца. Если вы опускаете любую из составляющих определения столбца (тип данных, значение по умолчанию, ограничение столбца), то она остается без изменения.
| |||
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 зависит от базовой таблицы, то изменения в базовой таблице могут привести к тому, что зависимый от нее объект становится не действительным.