Здравствуйте, Mika Soukhov, Вы писали:
MS>1) Как можно удалить целиком таблицу, не удаляя каждую ее строки? Есть ли какой нить механизм?
drop table
MS>3) alter меняют структуру уже существующих обектов. Где может понадобиться такой подход? Пока мне кажеться, что это всего лишь заплатка в проектировании.
Это часто бывает необходимо при развитии программы (базы), когда уже в существующую таблицу мы хотим добавить новые колонки. И при этом не хотим прерывать работу базы.
MS>4) Primary key. Что физически несет под собой ключевое слово? Будет ли иметь существенную разницу, если я буду использовать просто MS>unique? Создаеться ли автоматом для этой колонки индекс?
Именно по Primary Key идентифицируются отдельные записи. Индекс создается автоматом.
Primary key может быть построен по нескольким записям в отличии от unique.
MS>5) (соот к 4 п.) Для работы с индексированной таблицей мне достаточно создать индекс для нужной колонки и уже прозрачно работать с запросами (не заботясь о индексах, как будто их не существует). Почему же я не могу (вернее даже СУБД) автоматом на создавать для каждого поля по индексу? Все будет работать очень быстро и все будут счастливы. НО. Здравый смысл мне подсказывает, что бесплатный сыр бывает только в мышелвке. Где же подвох? Для каких размерностей таблиц лучше вводить индексы, а для каких нет?
Подвох в том, что при вставке новых или изменении существующих записей, необходимо перестраивать индексы, что приводит к довольно ощутимым тормозам.
При кол-ве записей больше 1000 индексы очень желательны.
MS>6) при создании таблицы, если поле указать как DEFAULT, гарантирует ли он NOT NULL? Или я же смогу проделать такой запрос "insert into ObsoleteTable VALUES(NULL, bla-bla-bla)"?
на первый взгляд (лень лезть в документацию), я не вижу взаимосвязи между default и not null.
MS>7) можно ли исполльзовать операцию INSERT более одного раза? И если нет, то почему?