
Оператор alter table
Для изменения структуры существующей таблицы можно использовать оператор ALTER TABLE. Применяя его, можно добавить или удалить поле или серверное ограничение. Существует четыре разновидности оператора ALTER TABLE.
Первая разновидность этого оператора используется для добавления колонки к таблице, и ее синтаксис имеет вид:
ALTER TABLE table ADD [COLUMN] column datatype [(size)] [CONSTRAINT sinlge-column-constraint]
В запросах такого вида определяется имя таблицы, имя нового поля, его тип данных и, если нужно, размер. Помимо этого можно указать серверное ограничение, связанное с данным полем. Например, для добавления поля Phone к таблице Simple, созданной ранее, можно выполнить следующий запрос:
ALTER TABLE Simple ADD Phone varchar(30)
Вторая разновидность оператора ALTER TABLE применяется для добавления серверных ограничений к таблице, а ее синтаксис имеет вид:
ALTER TABLE table ADD CONSTRAINT constraint
Такие запросы позволяют только добавлять индексы, позволяющие использовать соответствующие поля в качестве первичных или внешних ключей.
Третья разновидность предложения ALTER TABLE применяется для удаления поля из таблицы:
ALTER TABLE table DROP [COLUMN] column
Ключевое слово COLUMN использовать не обязательно. Например:
ALTER TABLE Simple DROP Phone
Обратите внимание на то, что для удаления проиндексированных полей следует сначала удалить индекс. Это можно сделать с помощью четвертой разновидности предложения ALTER TABLE:
ALTER TABLE table DROP CONSTRAINT index
Ниже приведен пример такого запроса:
ALTER TABLE Simple DROP CONSTRAINT PrimaryKey
Оператор DROP
Для удаления таблиц или индексов можно использовать оператор DROP, имеющий две разновидности. Первая из них применяется для удаления таблицы из базы данных:
DROP TABLE table
Вторая разновидность используется для удаления индекса:
DROP INDEX index ON table
Команды изменения данных языка DML
Значения могут быть помещены и удалены из полей тремя командами языка DML (Язык Манипулирования Данными):
insert (вставить),
update (изменить),
delete (удалить).
Команда insert имеет свои особенности.
1) При указании значений конкретных полей вместо использования каких-либо значений можно применить ключевое слово DEFAULT.
2) Вставка пустой строки приводит к добавлению пробела, а не значения NULL.
3) Строки и даты задаются в апострофах.
4) Можно задавать NULL явно, а можно задавать DEFAULT.
Например:
insert into ClientInfo (FirstName, LastName, Address, Phone)
values('Petr','Petrov','Chehova 13','1234567');
Однократное выполнение этого запроса (нажатие клавиши F5 один раз) приводит к добавлению одной записи. Добавим еще несколько записей, изменяя значения values:
insert into ClientInfo (FirstName, LastName, Address, Phone)
values('Ivan','Ivanov','Naberejnaya 13','1234568');
insert into ClientInfo (FirstName, LastName, Address, Phone)
values(null,'Sidorov','Naberejnaya 25','1234569');
Извлечем все записи созданной таблицы (рис. 2):
select * from ClientInfo;
Рис. 2. Все записи таблицы ClientInfo
Отметим, что третья строка содержит значение null, а не текстовую строку «null».
Команда update позволяет изменять заданные значения записей:
update ClientInfo set FirstName = 'Andrey' where FirstName = 'Petr';
В этом случае в первой записи поля FirstName значение Petr изменится на Andrey (рис. 3).
Рис. 3. Изменение одной записи
Отметим, что если не указывать условие, определяющее значение, которое необходимо изменить, команда update затронет все записи.
Команда delete удаляет записи из таблицы.
delete from ClientInfo where LastName like 'Petrov';
Результатом этого запроса будет удаление первой записи из таблицы ClientInfo.
Если не задавать условие, определяющее данные, которые необходимо удалить, то будут удалены все данные таблицы.
Запросы с командами insert, update и delete могут содержать в себе все прочие конструкции языка SQL.