- •Язык запросов sql
- •Общие сведения
- •Insert - запрос на добавление;
- •Инструкция select
- •Синтаксис select
- •Расширения инструкции select в access
- •Порядок выполнения выборки
- •Управление списком выбора
- •Указание источника данных
- •Применение реляционных операторов
- •Применение булевых операторов
- •Обработка неопределенных значений
- •Сортировка данных
- •Вычисление агрегатных функций
- •Группировка данных
- •Ограничение для групп данных
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Выборка из нескольких таблиц
- •Соединение отношений
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Запрос с соединением, использующий from и where
- •Запрос с соединением join
- •Операции с таблицами
- •Изменение структуры таблицы
- •Удаление таблицы
- •Действия со строками
- •Вставка строк в таблицу
- •Изменение данных в таблице
- •Удаление данных из таблицы
- •Инструкция transform
- •In ("Физика", "Математика");
- •Глава 5 Работа с формами
Изменение структуры таблицы
Нет гарантий, что после того как БД спроектирована и создана, в ней не обнаружатся какие-либо неточности, которые необходимо исправить. В этом может и не быть вины ее создателя. Например, могут измениться некоторые требования заказчика или произойти изменения в предметной области БД. В связи с этим понадобится внесение изменений в созданные отношения БД, для чего придется воспользоваться командами изменения.
Для изменения таблиц предназначена команда ALTER TABLE. С ее помощью можно производить изменение, добавление и удаление столбцов, изменять их имена, типы, длину, статус неопределенных значений и ограничения.
Команда изменения таблицы имеет следующий обобщенный синтаксис:
ALTER TABLE table_name {ADD new_column>
I {ALTER [COLUMN] column_name new_data_type>
I {ADD CONSTRAINT constraint_name>
-
{DROP CONSTRAINT constraint_name>
| {DROP [COLUMN] column_name RESTRICT | CASCADE);
где: table_name - имя изменяемой таблицы; new_column - описание нового добавляемого столбца; column_name - имя столбца;
new_data_type - описание нового типа данных, которые будут храниться в столбце;
constraint_name - наименование ограничения.
«•
Рассмотрим несколько примеров, иллюстрирующих возможные варианты по изменению таблицы в БД (добавление и удаление столбца, изменение типа данных столбца).
Для добавления нового столбца в существующую таблицу используется команда ADD COLUMN. Добавляемый столбец становится последним столбцом таблицы.
Синтаксис команды:
ALTER TABLE table_name ADD new_column;
Так как при добавлении нового столбца таблица, как правило, не пуста, то для каждой строки таблицы вставляемый столбец заполняется значениями по умолчанию. Следовательно, в команде должно существовать значение по умолчанию для добавляемого столбца. Если такое значение для столбца не описано, то значение принимается равным NULL.
Например, добавим в таблицу tbIStudents столбец, в котором будет храниться адрес студента (fAddress). Команда по изменению таблицы будет иметь такой вид:
ALTER TABLE tbIStudents ADD fAddress VARCHAR(50);
При добавлении столбца в него будут занесены данные со значением NULL.
Для изменения типа данных какого-либо столбца таблицы необходимо использовать команду ALTER COLUMN. С ее помощью можно внести коррективы в уже созданную таблицу, учитывая, что при изменении типа данных столбца следует действовать так, чтобы не возникло конфликта. Например, нежелательно уменьшать пространство, выделенное в столбце под данные, чтобы не затерлась уже внесенная информация.
Синтаксис команды изменения столбца:
ALTER TABLE table_name
ALTER [COLUMN] column_name new_data_type;
Например, увеличим размер поля fAddress с 50 до 100 символов:
ALTER TABLE tbIStudents
ALTER COLUMN fAddress VARCHAR(IOO);
Если требуется установить связь между полями с обеспечением целостности данных, нужно воспользоваться конструкцией ADD CONSTRAINT с указанием имени создаваемой связи, имени связываемого столбца указанной таблицы (внешний ключ, FOREIGN KEY) и имени первичного ключа, с которым устанавливается связь. Например, установим связь Group_Fac между таблицами tbIGroups и tbIFaculties по полю fIDFaculty (так называется и внешний ключ таблицы tbIGroups, и первичный ключ таблицы tbIFaculties):
ALTER TABLE tbIGroups
ADD CONSTRAINT Group_Fac FOREIGN KEY (fIDFaculty)
REFERENCES tbIFaculties (fIDFaculty);
Для того чтобы удалить установленную связь, необходимо воспользоваться конструкцией DROP CONSTRAINT с указанием имени связи. Например, удалим установленную в предыдущем примере связь Group_Fac:
ALTER TABLE tbIGroups
DROP CONSTRAINT Group_Fac;
При удалении столбца из таблицы БД необходимо помнить, что любые данные, которые в нем содержатся, будут уничтожены. При этом существует ограничение: удаляемый столбец не должен быть единственным столбцом в таблице.
Синтаксис команды удаления столбца:
ALTER TABLE table_name
DROP [COLUMN] column_name RESTRICT | CASCADE;
Ключевое слово COLUMN является необязательным и может быть опущено.
При удалении столбца, посредством которого осуществляется связь с другими таблицами, в команде также указываются параметры, управляющие ссылочной целостностью отношений. При использовании параметра RESTRICT команда удаления не будет выполнена, если на заданный столбец имеются ссылки в ограничениях или условиях. Исключение составляют ограничения, ко-
-
{ADD CONSTRAINT constraint_name> j {DROP CONSTRAINT constraint_name}
| {DROP [COLUMN] column_name RESTRICT | CASCADE);
где: table_name - имя изменяемой таблицы; new_column - описание нового добавляемого столбца; column_name - имя столбца;
new_data_type - описание нового типа данных, которые будут храниться в столбце;
constraint_name - наименование ограничения.
Рассмотрим несколько примеров, иллюстрирующих возможные варианты по изменению таблицы в БД (добавление и удаление столбца, изменение типа данных столбца).
Для добавления нового столбца в существующую таблицу используется команда ADD COLUMN. Добавляемый столбец становится последним столбцом таблицы.
Синтаксис команды:
ALTER TABLE table_name ADD new_column;
Так как при добавлении нового столбца таблица, как правило, не пуста, то для каждой строки таблицы вставляемый столбец заполняется значениями по умолчанию. Следовательно, в команде должно существовать значение по умолчанию для добавляемого столбца. Если такое значение для столбца не описано, то значение принимается равным NULL.
Например, добавим в таблицу tbIStudents столбец, в котором будет храниться адрес студента (fAddress). Команда по изменению таблицы будет иметь такой вид:
ALTER TABLE tbIStudents ADD fAddress VARCHAR(50);
При добавлении столбца в него будут занесены данные со значением NULL.
Для изменения типа данных какого-либо столбца таблицы необходимо использовать команду ALTER COLUMN. С ее помощью можно внести коррективы в уже созданную таблицу, учитывая, что при изменении типа данных столбца следует действовать так, чтобы не возникло конфликта. Например, нежелательно уменьшать пространство, выделенное в столбце под данные, чтобы не затерлась уже внесенная информация.
Синтаксис команды изменения столбца:
ALTER TABLE table_name
ALTER [COLUMN] column_name new_data_type;
Например, увеличим размер поля fAddress с 50 до 100 символов:
ALTER TABLE tbIStudents
ALTER COLUMN fAddress VARCHAR(IOO);
Если требуется установить связь между полями с обеспечением целостности данных, нужно воспользоваться конструкцией ADD CONSTRAINT с указанием имени создаваемой связи, имени связываемого столбца указанной таблицы (внешний ключ, FOREIGN KEY) и имени первичного ключа, с которым устанавливается связь. Например, установим связь Group_Fac между таблицами tbIGroups и tblFacultles по полю fIDFaculty (так называется и внешний ключ таблицы tbIGroups, и первичный ключ таблицы tbIFaculties):
ALTER TABLE tbIGroups
ADD CONSTRAINT Group_Fac FOREIGN KEY (fIDFaculty)
REFERENCES tbIFaculties (fIDFaculty);
Для того чтобы удалить установленную связь, необходимо воспользоваться конструкцией DROP CONSTRAINT с указанием имени связи. Например, удалим установленную в предыдущем примере связь Group_Fac:
ALTER TABLE tbIGroups
DROP CONSTRAINT Group_Fac;
При удалении столбца из таблицы БД необходимо помнить, что любые данные, которые в нем содержатся, будут уничтожены. При этом существует ограничение: удаляемый столбец не должен быть единственным столбцом в таблице.
Синтаксис команды удаления столбца:
ALTER TABLE table.name
DROP [COLUMN] column_name RESTRICT | CASCADE;
Ключевое слово COLUMN является необязательным и может быть опущено.
При удалении столбца, посредством которого осуществляется связь с другими таблицами, в команде также указываются параметры, управляющие ссылочной целостностью отношений. При использовании параметра RESTRICT команда удаления не будет выполнена, если на заданный столбец имеются ссылки в ограничениях или условиях. Исключение составляют ограничения, которые содержатся в самой таблице и ссылаются только на указанный в операторе столбец. Если задается параметр CASCADE, то все объекты, имеющие ссылки на удаляемый столбец, будут уничтожены.