Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по ИРдля заочников оконч...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
8.81 Mб
Скачать
      1. Ключи и индексы

MySQL таблица может иметь до 32 ключей и индексов, каждый из которых может иметь до 15 полей. Максимальная поддерживаемая длина ключа 120 байт. Обратите внимание, что длинные ключи могут привести к низкой эффективности.

Ключи могут иметь имена. В случае первичного ключа имя будет всегда PRIMARY KEY. Если имя ключа не задано в процессе создания таблицы, то заданное по умолчанию имя ключа – первое имя столбца с факультативным суффиксом (_2, _3 и т. д.), чтобы сделать это имя уникальным.

      1. Примеры создания таблиц

Пример 4.

Создадим в базе данных postavka таблицу product, c четырьмя столбцами: kod (код продукта), name (наименование продукта), stoim (цена продукта), post (наименование поставщика). Столбец kod должен быть объявлен как первичный ключ (PRIMARY KEY), а столбцы name и post должны иметь индексы.

Можно воспользоваться командой CREATE TABLE , представленной в листинге 4:

Листинг 4. Команда создания таблицы product

USE postavka;

CREATE TABLE product

(kod INT NOT NULL AUTO_INCREMENT,

name CHAR(20) NOT NULL,

stoim FLOAT(5,1) NOT NULL,

post CHAR(25) NOT NULL,

PRIMARY KEY (kod),

INDEX (name),

INDEX (post))

TYPE=MyISAM DEFAULT CHARSET=cp1251;

Примечание. Таблица product создается в базе данных postavka. Если база с таким именем еще не создана, то перед командой USE придется написать команду создания базы данных: CREATE DATABASE postavka;

При создании ключа или индекса можно факультативно определить, что только первые N символов поля для использования под ключ или для создания индекса.

Пример 5. Для таблицы из предыдущего примера создадим индекс для поля name, в котором только первые пять символов из двадцати являются уникальными.

Напишем команду CREATE TABLE:

CREATE TABLE product

(kod INT NOT NULL AUTO_INCREMENT,

name CHAR(20),

stoim FLOAT(5,1),

post CHAR(25),

PRIMARY KEY(kod),

INDEX name_idx(name(5)))

TYPE=MyISAM DEFAULT CHARSET=cp1251;

Пример 6.

Создадим таблицу studyFAM (где FAM – фамилия студента, набранная по-английски; например studyIvanov) в базе данных studentzaot.

Таблица должна содержать следующие данные о студентах:

код студента kod, (целое число, беззнаковое, пустые значения недопустимы, значения вводятся автоматически. Является первичным ключом);

фамилия студента fam, (символьное, постоянной длины в 15 символов, пустые значения недопустимы; по полю создается индекс);

имя студента im, (символьное, постоянной длины в 15 символов, пустые значения недопустимы);

пол pol (принимает одно из двух значений списка: «Ж»-женский, «М» - мужской);

дата рождения data (тип ДАТА, пустые значения недопустимы);

средний балл аттестата srbal (вещественное, с одной цифрой до запятой и одной цифрой после запятой).

Напишем команду CREATE TABLE:

USE studentzaot;

CREATE TABLE studyFAM

(kod INT UNSIGNED NOT NULL AUTO_INCREMENT,

fam CHAR(15),

im CHAR(15),

pol ENUM('М','Ж')NOT NULL,

data DATE NOT NULL,

srbal FLOAT(3,1),

PRIMARY KEY(kod),

INDEX(fam))

TYPE=MyISAM;