Опубликован: 01.03.2005 | Доступ: свободный | Студентов: 33896 / 4520 | Оценка: 4.31 / 4.06 | Длительность: 16:41:00
ISBN: 978-5-9556-0026-0
Лекция 10:

Базы данных и СУБД. Введение в SQL

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Оператор DROP TABLE

Оператор DROP TABLE удаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что при работе с этой командой следует соблюдать осторожность.

Синтаксис:

DROP TABLE [IF EXISTS] имя_таблицы 
    [, имя_таблицы,...] 
    [RESTRICT | CASCADE]

В версии MySQL 3.22 и более поздних можно использовать ключевые слова IF EXISTS, чтобы предупредить ошибку, если указанные таблицы не существуют.

Опции RESTRICT и CASCADE позволяют упростить перенос программы с других СУБД. В данный момент они не задействованы.

mysql> DROP TABLE IF EXISTS Persons,
       Artifacts, test;
Пример 10.2. Использование оператора DROP TABLE
Оператор ALTER TABLE

Оператор ALTER TABLE обеспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип.

Синтаксис:

ALTER [IGNORE] TABLE имя_таблицы 
    alter_specification 
    [, alter_specification ...]

Можно производить следующие изменения в таблице (все они записываются в alter_specification ):

  • добавление поля:
    ADD [COLUMN] определение_столбца 
    [FIRST | AFTER имя_столбца ]

    или

    ADD [COLUMN] (определение_столбца, 
        определение_столбца,...)

Здесь, как и далее, определение_столбца записывается так же, как при создании таблицы.

  • добавление индексов:

    ADD INDEX [имя_индекса] (имя_индексируемого_столбца,...) или ADD PRIMARY KEY (имя_индексируемого_столбца,...) или ADD UNIQUE [имя_индекса] (имя_индексируемого_столбца,...) или ADD FULLTEXT [имя_индекса] (имя_индексируемого_столбца,...)

  • изменение поля:

    ALTER [COLUMN] имя_столбца {SET DEFAULT literal | DROP DEFAULT} или CHANGE [COLUMN] старое_имя_столбца определение_столбца или MODIFY [COLUMN] определение_столбца

  • удаление поля, индекса, ключа:
    DROP [COLUMN] имя_столбца
        DROP PRIMARY KEY
        DROP INDEX имя_индекса
  • переименование таблицы:

    RENAME [TO] новое_имя_таблицы

  • переупорядочение полей таблицы:
    ORDER BY поле

    или

    опции_таблицы

Если оператор ALTER TABLE используется для изменения определения типа столбца, но DESCRIBE имя_таблицы показывает, что столбец не изменился, то, возможно, MySQL игнорирует данную модификацию по одной из причин, описанных в специальном разделе документации. Например, при попытке изменить столбец VARCHAR на CHAR MySQL будет продолжать использовать VARCHAR, если данная таблица содержит другие столбцы с переменной длиной.

Оператор ALTER TABLE во время работы создает временную копию исходной таблицы. Требуемое изменение выполняется на копии, затем исходная таблица удаляется, а новая переименовывается. Это делается для того, чтобы в новую таблицу автоматически попадали все обновления, кроме неудавшихся. Во время выполнения ALTER TABLE исходная таблица доступна для чтения другими клиентами. Операции обновления и записи в этой таблице приостанавливаются, пока не будет готова новая таблица. Следует отметить, что при использовании любой другой опции для ALTER TABLE, кроме RENAME, MySQL всегда будет создавать временную таблицу, даже если данные, строго говоря, и не нуждаются в копировании (например, при изменении имени столбца).

Пример10.3. Добавим в созданную таблицу Persons поле для записи года рождения человека:

mysql> ALTER TABLE Persons 
    ADD bday INTEGER AFTER last_name;
Пример 10.3. Добавление в таблицу Persons поля для записи года рождения человека

Итак, мы научились работать с таблицами: создавать, удалять и изменять их. Теперь разберемся, как делать то же самое с данными, которые в этих таблицах хранятся.

< Лекция 9 || Лекция 10: 123456 || Лекция 11 >
Дарья Федотова
Дарья Федотова
Сергей Березовский
Сергей Березовский

В рамках проф. переподготовки по программе "Программирование"

Есть курсы, которые я уже прошел. Но войдя в курс я вижу, что они не зачтены (Язык Ассемблера и архитектура ЭВМ, Программирование на С++ для профессионалов). Это как?