FULLTEXT [INDEX] [имя_индекса]
(имя_индексируемого_столбца,...)
или
[CONSTRAINT symbol]
FOREIGN KEY [имя_индекса]
(имя_индексируемого_столбца,...)
[reference_definition]
или
CHECK (expr)
При задании всех этих элементов указывается список полей (столбцов), которые будут входить в индекс, ключ или ограничение, имя_индексируемого_столбца записывается следующим образом:
имя_столбца [(длина_индекса)]
FOREIGN KEY, CHECK и REFERENCES на самом деле ничего не делают в MySQL. Они добавлены только для совместимости с другими SQL-серверами. Поэтому на них мы останавливаться не будем.
Кроме всего перечисленного, при создании таблицы можно указать некоторые ее свойства (опции_таблицы), например такие:
- тип таблицы: TYPE = {BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM }
- начальное значение счетчика автоинкремента: AUTO_INCREMENT = число
- средняя длина строк в таблице: AVG_ROW_LENGTH = число
- комментарии к таблице (строка из 60 символов): COMMENT = 'строка'
- максимальное и минимальное предполагаемое число строк: MAX_ROWS = число и MIN_ROWS = число
И последний (опять же опциональный) элемент команды CREATE – это выражение SELECT (select_выражение). Синтаксис такой:
[IGNORE | REPLACE] SELECT ...
(любое корректное выражение SELECT)
Если при создании таблицы в команде CREATE указывается выражение SELECT, то все поля, полученные выборкой, добавляются в создаваемую таблицу.
Пример 10.1. Создадим таблицу Persons, структура которой была приведена на рисунке 10.1.
mysql>CREATE TABLE Persons
(id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50), last_name
VARCHAR(100), death_date INT,
description TEXT, photo INT,
citienship CHAR(50) DEFAULT 'Russia');
С помощью специфичной для MySql команды SHOW можно просмотреть существующие базы данных, таблицы в базе данных и поля в таблице.
Показать все базы данных:
mysql>SHOW databases;
Сделать текущей базу данных book и показать все таблицы в ней:
mysql>use book;
mysql>show tables;
Показать все столбцы в таблице Persons:
mysql> show columns from Persons;
Оператор DROP TABLE удаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что при работе с этой командой следует соблюдать осторожность.
Синтаксис:
DROP TABLE [IF EXISTS] имя_таблицы
[, имя_таблицы,...]
[RESTRICT | CASCADE]
В версии MySQL 3.22 и более поздних можно использовать ключевые слова IF EXISTS, чтобы предупредить ошибку, если указанные таблицы не существуют.
Опции RESTRICT и CASCADE позволяют упростить перенос программы с других СУБД. В данный момент они не задействованы.
mysql> DROP TABLE IF EXISTS Persons,
Artifacts, test;
Оператор ALTER TABLE обеспечивает возможность изменять структуру существующей таблицы. Например, можно добавлять или удалять столбцы, создавать или уничтожать индексы или переименовывать столбцы либо саму таблицу. Можно также изменять комментарий для таблицы и ее тип.
Синтаксис: