Иллюстрированный самоучитель по SQL для начинающих

Создание и поддержка простой базы данных

Создание индекса

Индексы – очень важная часть любой реляционной базы данных. Они служат указателями в тех таблицах, в которых содержатся нужные данные. С помощью индекса можно прямо перейти к определенной записи, не выполняя для ее поиска последовательного, запись за записью, просмотра таблицы. Для больших таблиц индексы просто необходимы. Без индексов результат из действительно очень большой таблицы придется, возможно, ждать не секунды, а годы. (Ладно, предположим, что вам не придется ждать годами. Однако некоторые операции выборки данных, если их запустить на выполнение, могут действительно продолжаться достаточно долго. И если у вас в запасе нет ничего лучшего, что могло бы ускорить работу, то вы, вероятно, прервете операцию, не получив никаких результатов. Ведь жизнь все равно продолжается.)

Удивительно, но в спецификации SQL:2003 нет средств для создания индекса. У поставщиков СУБД должны быть собственные реализации индексов. А так как эти реализации не стандартизированы, то вполне могут отличаться друг от друга. Большинство поставщиков реализует средство создания индекса, расширяя SQL оператором CREATE INDEX (создать индекс). Но даже если в двух реализациях используются одни и те же операторы, то способы их выполнения могут быть разными. В различных реализациях используются разные варианты синтаксиса этой команды. Необходимо внимательно изучать документацию по имеющимся у вас СУБД, чтобы знать, как можно создавать индексы с помощью этих систем.

Изменение структуры таблицы

Для изменения структуры существующей таблицы можно использовать команду SQL ALTER TABLE (изменить таблицу). Интерактивные средства SQL, находящиеся на вашей клиентской станции, не такие удобные, как RAD-инструмент. Этот инструмент показывает табличную структуру, которую затем можно изменить. А используя SQL, необходимо заранее знать и структуру таблицы, и то, каким образом эту структуру следует изменять. В том месте экрана, где находится приглашение, необходимо для внесения изменения ввести соответствующую команду. Впрочем, если в прикладной программе нужно поместить операторы изменения таблицы, то обычно самый легкий способ это сделать – все-таки использовать SQL.

Чтобы добавить в таблицу PowerSQL второе поле для адреса, используйте следующую команду DDL:

ALTER TABLE PowerSQL
ADD COLUMN Address__2 CHAR (30);

Чтобы расшифровать этот код, не нужно быть гуру SQL. В действительности это может сделать даже профан со слабыми познаниями в английском. Эта команда изменяет таблицу с названием PowerSQL, добавляя в нее новый столбец, который называется Address2, имеет тип данных CHAR и длину 30 символов. Приведенный пример показывает, насколько легко менять структуру таблиц в базе данных, используя для этого команды DDL из SQL.

Стандарт SQL:2003 разрешает использовать этот оператор для добавления в таблицу столбца, а также удаления имеющегося столбца, как показано в следующем примере:

ALTER TABLE PowerSQL
DROP COLUMN Address2;

Удаление таблицы

Таблицу, которая вам не нужна и только зря занимает место на диске, удалить достаточно легко. Всего лишь воспользуйтесь командой DROP TABLE (удалить таблицу), такой, например, как следующая:

DROP TABLE PowerSQL;

Что может быть проще? Если такой командой удалить таблицу, то будут удалены все ее данные и метаданные. От таблицы не останется и следа.

Удаление индекса

Внимание:
Удаляя таблицу с помощью команды DROP TABLE, вы одновременно удаляете и все относящиеся к ней индексы. Впрочем, иногда требуется оставить таблицу, но удалить один из ее индексов. Стандарт SQL:2003 не определяет команду DROP INDEX (удалить индекс), но в большинстве реализаций она все-таки есть. Эта команда пригодится тогда, когда ваша система замедлит свою работу до черепашьей скорости и обнаружится, что таблицы в ней индексированы не лучшим образом. Исправление индексов должно привести к резкому увеличению производительности системы. Это, правда, может опечалить пользователей, привыкших в ожидании своих результатов устраивать перекур
.

Переносимость

В любой из реализаций SQL, которую вы используете, могут быть расширения, дающие ей возможности, не предусмотренные стандартом SQL:2OO3. Одни из этих возможностей, скорее всего, появятся в следующем выпуске спецификации SQL. Другие же характерны только для конкретной реализации и, вероятно, никогда не войдут в стандарт.

Часто эти расширения могут упростить создание нужного вам приложения, и у вас возникнет искушение ими воспользоваться. Это тоже вариант, но учтите – не исключено, что в таком случае придется чем-то пожертвовать. Если когда-нибудь потребуется перенести ваше приложение на другую реализацию SQL, то вам, возможно, придется переписывать те части этого приложения, в которых используются расширения, не поддерживаемые в новой среде. Подумайте о возможности такого переноса, который может произойти когда-нибудь в будущем, а также о том, является ли используемое вами расширение уникальным или все-таки достаточно распространенным.

При долгосрочном использовании приложения, наверное, будет лучше не пользоваться нестандартным расширением, даже если в результате получается некоторая экономия времени. С другой стороны, подобное решение может быть излишней перестраховкой. Тщательно обдумайте каждую из этих возможностей. Чем больше вам известно об имеющихся реализациях и о тенденциях, связанных с их разработкой, тем лучшими могут быть ваши решения.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.