Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пр 13.doc
Скачиваний:
6
Добавлен:
30.08.2019
Размер:
140.8 Кб
Скачать

3 Описание таблиц

Объекты SQL создаются с помощью языка определения данных (Data Definition Language — DDL), который применяется для описания атрибутов базы данных, таблиц, полей, индексов и способов сохранения данных.

Для создания таблицы, описания ее структуры предназначена команда CREATE TABLE. По этой команде:

· создается пустая таблица;

· присваивается имя пустой таблице;

· присваивается имя столбцам (полям) и определяется порядок их следования;

· устанавливается тип и размер каждого поля.

Минимальное число столбцов в таблице — один.

Формат команды CREATE TABLE:

CREATE TABLE <имя таблицы >

(<имя столбца> <тип данных> [(<размер>)],

<имя столбца> <тип данных> [(<размер >)]...);

Для данных символьного типа «размер» указывать обязательно, так как по умолчанию это 1 (один символ).

Пример команды CREATE TABLE для создания таблицы Spisok следующей структуры:

Факультет

Курс

Группа

ФИО

Стипендия (сумма)

Удержания

Перед созданием таблицы базы данных необходимо:

1) создать структуру таблицы, т. е. определить необходимый перечень полей и отношений между ними;

2) присвоить имена выбранным полям;

3) определить тип каждого поля (символьное, числовое, логическое и т.д.);

4) задать размер полей.

После этого приступаем к созданию таблицы. Для каждого поля структуры файла следует указать имя поля, его тип, длину, а для числовых данных — и количество цифр после десятичной точки, если это необходимо:

CREATE TABLE Spisok

fakultet char (4),

kurs char(l),

grupa char (5),

fio char (15),

stip decimal (7,2),

uderzano decimal (6,2);

Поля Stip и Uderzano описаны как десятичные, соответственно длинаполя (field width) 7 и 6 десятичных цифр и точность (количество знаков после запятой в цифровых полях) — 2.

Эту команду можно записать и в строку:

CREATE TABLE Spisok (fakultet char (4), kurs char (1), grupa char (4), fio char (15), slip decimal (7,2), uderzano decimal (6,2);

Контрольный пример таблицы Spisok приведен на рисунке 1.1.

Рисунок 1.1 - Контрольный пример таблицы Spisok

Индексирование

Записи в файлах базы данных размещены по ключам упорядочения. Возможны два вида упорядочения записей в таблице: а) логическое (CREATE INDEX — индексирование); б) физическое (SORT — сортирование).

Ключи сортирования должны быть сравнимыми, т. е. любые два ключа сортирования К1 и К2 должны удовлетворять одному из трех отношений:

К1 < К2, К1 = К2, К1 >К2.

Ключ, на который имеется ссылка в другой таблице, называется внешним.

Для манипулирования со значением строк таблицы предназначены индексы. Индексирование — это упорядочение записей по ключу (алфавиту, хронологии, в порядке возрастания или убывания). Для индексного поля создается упорядоченный список значений для этого поля. В таблице данных строки не упорядочены. Для поиска строки с заданным значением поля-ключа программа последовательно просматривает все записи таблицы, строка за строкой, пока не встретит строку с заданным значением поля. Это долгий путь. Индекс же сразу находит запись по значению поля-ключа.

Индекс (индексный файл) создается по команде:

CREATE INDEX <имя индекса> ON <имя таблицы>

(<имя столбца>[,<имя столбца>]...);

Пример. Создать индекс по полю fio таблицы Spisok:

CREATE INDEX fio ON Spisok (fio);

Таблица индексов (индексный файл), созданная командой CREATE INDEX, для пользователя невидима. SQL сам автоматически обращается к таблице индексов по мере надобности.

Корректировка таблицы (добавление столбцов в таблицу, удаление столбцов, изменение их размера и др.) выполняется командой ALTER TABLE следующего формата:

ALTER TABLE <имя таблицы> ADD <имя столбца>

<тип данных>,<размер>;

Новый столбец по этой команде в таблице становится последним; в него заносятся NULL-значения. Пользоваться этой командой следует осмотрительно, чтобы не повредить базу данных.

Удаление таблицы. Удалить можно только пустую таблицу, поэтому предварительно следует удалить ее данные. Формат команды:

DROP TABLE <имя таблицы>;