5.5. Дополнительные свойства полей
В SYBASE SQL Anywhere создание таблиц осуществляется оператором Create Table. Согласно синтаксиса этого оператора для каждой таблицы можно определить свойства для всей таблицы, а также основные и дополнительные свойства полей.
К основным свойствам полей относятся:
- название поля;
- тип поля;
- размер и точность поля;
- признак разрешения хранения значений NULL;
- значение, присваиваемое полю по умолчанию.
Дополнительные свойства полей включают:
- признак того, что поле является первичным ключом таблицы;
- признак уникальности значений поля;
- условие, накладываемое на значения поля;
- признак того, что поле является внешним ключом таблицы.
Некоторые свойства полей были рассмотрены в п.5.4, остальные - будут рассмотрены ниже. Свойства таблиц будут предметом рассмотрения п.5.6.
В утилите SQL Central разработчики вынесли в окна редактора структуры таблиц наиболее часто используемые свойства полей (см. рис. 42). Доступ к остальным свойствам осуществляется через меню или панель инструментов редактора. Другим способом установить вышеуказанные свойства можно, используя контекстные меню полей и таблиц. Эти меню появляются после щелчка правой кнопкой мыши по соответствующему полю или таблице. В утилите ISQL определение свойств таблиц и ее полей осуществляется при помощи SQL-операторов Create Table и Alter Table. Установим дополнительные свойства полей в таблице Books базы данных Dubl_Biblia.
Как было показано в п.5.4, эта таблица была создана путем копирования ее структуры из исходной таблицы базы данных Biblia. В создаваемую таким образом таблицу дополнительные свойства полей и свойства таблицы из исходной не переписываются. В связи с этим данные свойства необходимо установить принудительно. В таблице Books следует определить поле Code_book первичным ключом и показать как устанавливаются значения, присваиваемые этому полю по умолчанию. Для этого воспользуемся контекстным меню.
ПРИМЕЧАНИЕ
Изменять свойства полей таблицы имеют возможность ее владелец, пользователи с классом полномочий DBA и пользователи, для которых для работы с таблицей установлена привилегия ALTER (см. табл. 7).
Подключитесь к базе данных Dubl_Biblia в утилите SQL Central для установления дополнительных свойств полей таблицы Books. Отобразите в правой панели перечень ее полей. Последовательно раскройте содержимое папок Tables, Books и Columns. Выделите поле Code_book и щелкните по нему правой кнопкой мыши. В результате этого появится контекстное меню (рис. 45).
Рис. 45. Контекстное меню установки свойств поля таблицы данных
Последовательно рассмотрим пункты данного меню.
Выбор первого пункта этого меню Add Primary Key позволяет установить признак ключевого поля, т.е. признак вхождения поля в состав первичного ключа. Если для поля этот признак уже установлен, то данный пункт меню имеет название Remote from Primary Key. Выбор рассматриваемого меню в этом случае приводит к снятию признака первичного ключа.
В утилите ISQL для определения поля Code_book в качестве первичного ключа необходимо выполнить следующий оператор:
/* Изменение свойств таблицы */
ALTER TABLE Stepanov.Books
ADD PRIMARY KEY (Code_book)
Удаление из таблицы признака первичного ключа осуществляется оператором вида:
/* Удаление первичного ключа таблицы */
ALTER TABLE Stepanov.Books
DELETE PRIMARY KEY
Следующим пунктом контекстного меню свойств поля является пункт Advanced Properties. Посредством этого пункта осуществляется установка некоторых дополнительных свойств поля. В случае выбора данного пункта на экран выводится окно Advanced Column Properties (рис. 46).
Рис. 46. Окно дополнительных свойств поля таблицы данных
В этом окне можно определить значения, присваиваемое полю по умолчанию. Речь идет о значениях полей новых записей. Новые записи добавляются в таблицы при выполнении SQL-оператора INSERT. В этом операторе для каждой новой записи указывается перечень инициализируемых полей и их значений. Полям, отсутствующих в этом перечне, присваиваются значения, определенные по умолчанию. Если значение по умолчанию не установлено, то в поле записывается значение NULL.
В SYBASE SQL Anywhere пользователям предоставляется возможность устанавливать произвольные значения полей по умолчанию в виде :
- строки - только для полей символьных типов;
- числа - только для полей числовых типов;
- константного выражения - выражение, состоящего из строковых, числовых и других типов констант, формирующих значение.
Кроме произвольных значений по умолчанию, в качестве таковых могут использоваться служебные значения. К ним относятся:
- CURRENT DATABASE- текущая база данных для полей символьного типа;
- CURRENT DATE - текущая дата для полей типа DATE или полей символьного типа;
- CURRENT PUBLISHER - текущий издатель для полей символьного типа (используется только при организации репликации;
- CURRENT TIME - текущее время для полей типа TIME или полей символьного типа;
- CURRENT TIMESTAMP - текущий момент времени текущей даты для полей типа TIMESTAMP или полей символьного типа;
- USER - текущий пользователь для полей символьного типа;
- AUTOINCREMENT - уникальное число, генерируемое SQL Anywhere при создании каждой новой записи для полей числовых типов.
Рассмотрим AUTOINCREMENT подробнее. В поле A с таким значением по умолчанию всегда записывается число на единицу превышающее текущий максимум M. М содержит максимальное значение среди всех ранее введенных в поле A, в том числе и уже удаленных записей. Если для поля A в операторе INSERT (добавляет новую запись) указано конкретное значение N, то:
- при N > M изменяется значение текущий максимум - ему присваивается значение N;
- при N < M текущий максимум остается неизменным. Если в таблице уже имеется запись с полем A, значение которого равно N,то оператор завершается аварийно.
Динамика изменения значений поля A представлена на рис. 47.
Рис. 47. Динамика изменений значения поля А, для которого по умолчанию определена установка AUTOINCREMENT:
а)исходное состояние таблицы;
б)таблица после добавления новой записи, значение N не задано;
в)таблица после добавления новой записи, N =10;
г)таблица после удаления двух последних записей;
д)таблица после добавления новой записи, N =4;
е)таблица после добавления новой записи, значение N не задано.
В окне Advanced Column Properties (см.рис.46) задание значений, присваиваемых по умолчаний, осуществляется в области Default value. Состояние переключателя этой области в положении User-defined позволяет устанавливать в поле, находящемся справа от него, значения по умолчанию в виде строк, чисел или константных выражений. Если для этой цели требуется использовать служебные значения по умолчанию, то тогда следует установить переключатель в состояние Pre-defined. При этом станет доступным список, из которого можно сделать необходимый выбор.
В области Constraints можно установить такие свойства полей как:
признак уникальности значений поля - при помощи флажка Value are unique;
признак разрешения хранения значений NULL - посредством флажка Column allows NULL;
условие, накладываемое на значения поля. Оно задается в поле Check.
Реализация этих действий в утилите ISQL иллюстрируется следующими SQL-операторами, изменяющих свойства поля Books.Year_publish:
/* Установка признака
уникальности значений поля */
ALTER TABLE Stepanov.Books
ADD UNIQUE(Year_publish);
/* Снятие признака уникальности
значений поля */
ALTER TABLE Stepanov.Books
DELETE UNIQUE(Year_publish);
/* Установка признака разрешения
хранения значения NULL */
ALTER TABLE Stepanov.Books
MODIFY Year_publish NULL;
/* Снятие признака разрешения
хранения значения NULL */
ALTER TABLE Stepanov.Books
MODIFY Year_publish NOT NULL;
/* определение условия для
значений поля */
ALTER TABLE Stepanov.Books
MODIFY Year_publish
CHECK(Year_publish>1992);
/* Снятие условия для значений поля */
ALTER TABLE Stepanov.Books
MODIFY Year_publish CHECK NULL
Следующим пунктом контекстного меню свойств поля таблицы данных (см. рис. 45) является пункт Copy. Его выбор позволяет запомнить в буфере основные свойства поля для последующего копировать описания поля в другую таблицу. Для использования информации из буфера следует выделить необходимую таблицу в левой панели утилиты и вызвать правой кнопкой мыши контекстное меню. Выбор в нем пункта Paste позволяет добавить в эту таблицу новое поле с основными свойствами исходного. Например, таким образом можно переместить поле Books.Title_book в таблицу Copies.
В утилите ISQL это действие осуществляется выполнением следующего SQL-оператора:
//Введение нового поля в таблицу
ALTER TABLE Stepanov.Copies
ADD Title_book //имя нового поля
LONG VARCHAR NOT NULL
//свойства поля
Пункт меню контекстного меню свойств поля Delete позволяет удалить поле из таблицы данных.
В ISQL это действие реализуется следующим SQL-оператором:
/* Исключение поля Code_book
из таблицы Stepanov.Books */
ALTER TABLE Stepanov.Books
DELETE Code_book
Пункт Properties этого меню позволяет проанализировать и отредактировать все свойства поля таблицы данных. Реакцией на его выбор в нашем случае является появление окна Code_book Properties (рис. 48).
Рис. 48. Окно свойств поля Code_book - вкладка General
Вкладка General этого окна позволяет изменить название поля и при необходимости сделать краткий комментарий о назначении поля.
Для модификации названия поля в утилите ISQL необходимо выполнить следующий SQL-оператор:
/* Изменение в таблице Books названия
поля "Code_book" на "Code_b" */
ALTER TABLE Stepanov.Books
RENAME Code_book TO Code_b
Вкладка Data Type этого окна (рис. 49) предназначена для изменения типа данных поля.
Рис. 49. Окно свойств поля Code_book - вкладка Data Type
Для поля входящего в состав первичного или составного ключа изменить тип данных поля невозможно. Этот момент представлен на рис. 49, список Data type не доступен.
Другой функцией вкладки Data Type является анализ таких свойств поля как признак разрешения хранения значений NULL, значение, присваиваемое полю по умолчанию, признак уникальности значений поля и условие, накладываемое на значения поля. Для изменения этих свойств необходимо щелкнуть мышью по кнопке Edit. В этом случае на экране появляется окно Advanced Column Properties (см.рис.46), которое было рассмотрено выше.
В утилите ISQL также имеется возможность изменения типов полей и проанализировать свойства полей. Информация об этих свойствах может быть получена при помощи SQL-оператора SELECT из системного представления SYS.SYSCOLUMNS. Изменение типов данных полей реализуется оператором ALTER TABLE. Для изменения в поле Books.Number типа данных Smallint на Integer следует воспользоваться оператором вида:
/* Изменение типа данных поля /*
ALTER TABLE Stepanov.Books MODIFY
Number INTEGER
Таким образом, используя контекстное меню свойств поля можно проанализировать его свойства, а при необходимости и отредактировать их.
Назад |
Содержание |
Вперед