Программирование >>  Создание клиентов mysql 

1 ... 64 65 66 [ 67 ] 68 69 70 ... 201


CREATE DATABASE

Инструкция CREATE DATABASE создает базуданнтх (листинг 13.19). Синтаксис инструкции таков:

CREATE DATABASE [IF NOT EXISTS] имя

Если база данных с таким именем существует, а спецификатор IF NOT EXISTS не указан, будет выдано сообщение об ошибке. В MySQL каждая база данных хранится в отдельном подкаталоге, поэтому инструкция создаст пустой каталог. Просмотреть список существующих баз данных можно с помощью инструкции SHOW DATABASE.

CREATE DATABASE IF NOT EXISTS freetrade;

CREATE FUNCTION

Инструкция CREATE FUNCTION загружает код функции, хранящийся в совместно используемой объектной библиотеке. Эта функция работает так же, как и любая встроенная функция. Синтаксис инструкции таков:

CREATE [AGGREGATE] FUNCTION имя RETURNS тип SONAME библиотека

Флаг AGGREGATE разрешает использовать функцию в предложении GROUP BY. Тип возвращаемого значения может быть STRING, REAL или INTEGER. Последний аргумент инструкции - это путевое имя библиотеки.

Будучи загруженной, функция остается доступной, пока не будет удалена с помощью инструкции DROP FUNCTION. Информация о функции сохраняется в файле mysql. func, поэтому необходимо иметь право записи в него. Обычно таким правом обладает только администратор.

В главе 31, Расширение возможностей MySQL , будет рассказываться о написании собственных функций для MySQL.

CREATE INDEX

Инструкция CREATE INDEX добавляет индекс к заданной таблице:

CREATE [UNIQUE FULLTEXT] INDEX имя

ON таблица {столбец [{длина)], ...)

То же самое можно сделать с помощью инструкции ALTER TABLE.

CREATE TABLE

Инструкция CREATE TABLE предназначена для создания таблиц. Это, наверное, одна из наиболее сложных SQL-инструкций. Общий ее формат таков:



Полный список инструкций 215

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] имя [(спецификация, . . .) ] [опция...]

[ [ IGNORE I REPLACE] запрос]

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

Спецификатор IF NOT EXIST:Sодавляет вывод сообщений об ошибках в случае, если таблица с указанным именем уже существует. Имени таблицы может предшест вовать имя базы данных, отделенное точкой. Если это не сделано, таблица будет создана в базе данных, которая установлена по умолчанию.

Чтобы задать имя таблицы с пробелами, необходимо заключить его в обратные кавычки, например list. То же самое нужно будет делать во всех сс1лках на таблицу, поскольку пробелы используются для разделения идентификаторов.

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

имя тип [NOT NULL I NULL] [ ОЕЕАиЬТзнач-ение ] [AUTO INCREMENT] [PRIMARY KEY] [ссылка]

Типы столбцов рассматривались в глав 11, Типы столбцов и индексов . Спецификация типа включает название типа и его размерность.

По умолчанию столбцы принимают значения NULL. Спецификатор NOT NULL запрещает подобное поведение.

У любого столбца есть значение по умолчанию. Если оно не указано, программа MySQL выберет его самостоятельно. Для столбцов, принимающих значения NULL, значением по умолчанию будет NULL, для строковхх столбцов - пустая строка, для целочисленных столбцов - нуль. Изменить эту установку позволяет предложение DEFAULT.

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

В листинге 13.20 показан пример создания таблицы.

CREATE TABLE IF NOT EXISTS player ( /* Столбцы */

ID INT (11) UNSIGNED NOT NULL AUTO INCREMENT,

Nickname CHAR(8) NOT NULL,

Password CHAR (8) NOT NULL,

Rank FLOAT (4,2) NOT NULL DEFAULT 50.0,

Region ENUM (North,South,East,West) NOT NULL,

Team TINYINT(3) UNSIGNED NOT NULL,



/* Индексы PRIMARY KEY (ID) ,

INDEX (Region, Rank),

FOREIGN KEY (Team) REFERENCES team (ID)

Таблицы тип SAM oDB следят за тем, какие значения генерируются счетчиком, поэтому в случае удаления какой-либо записи ее порядковый номер не будет использован повторно. В таблицах других типов порядковый номер вычисляется путем прибавления единицы к максимальному значению столбца. Если из таблицы удалить все записи, нумерация начнется с единицы.

Чтобы активизировать работу етчика, необходимо вставить в таблицу строку, в которой соответствующее поле равно 0 или NULL. Функция LAST INSERT I ), описанная в главе 12, Встроенные функции , позволяет узнать последнее значение, сгенерированное счетчиком.

Спецификация PRIMARY KEY позволяет назначить столбец первичным ключом. При этом для столбца будет создан индекс.

В конце определения столбца может стоять предложение REFERENCES, синтаксис которого такой же, как и в описанном ниже предложении FOREIGN KEY, но подобный тип ограничений не поддерживается в MySQL. В версии 3.23 это предложение анализируется синтаксически и отбрасывается. Предполагается, что определения внешних ключей будут сохраняться в версии 4.0.

В круглых скобках задаются спецификации не только столбцов, но также ограничений и индексов. Об индексах рассказывалось в главе 11, Типы столбцов и индексов , а возможные ограничения описаны ниже.

CHECK (выражение)

Эта спецификация поддерживается для совместимости с другими СУБД, но не несет никакой смысловой нагрузки в MySQL.

[CONSTRAINT имя] FOREIGN EY имя (столбец..) [ссылка]

Эта спецификация тоже не играет никакой роли в MySQL, существуя лишь в целях внешней совместимости. Имеет смысл включать ее в инструкцию CREATE TABLE в качестве документации к схеме базы данн1х. гаципе, предложение FOREIGN KEY помечает группу столбцов как зависящую от набора столбцов другой таблицы, формируя связь между но в MySQL правильность этой связи не контролируется.

Спецификация ссылки имеет следующий вид:

REFERENCES таблица ец,...) ] [MATCH FULL MATCH PARTIAL] [ON DELETE правило] [ON UPDATE правило]

Синтаксис правил удаления и обновления таков:

{RESTRICT CASCADEI SET NULL NO ACTION I SET DEFAULT}



1 ... 64 65 66 [ 67 ] 68 69 70 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика