
- •Лабораторная работа №2 Создание таблиц, представлений.
- •Вычисляемые столбцы
- •Значения по умолчанию
- •Параметр not null
- •Ограничения столбцов
- •Ограничения check в доменах
- •Порядок сортировки collate
- •Удаление таблиц
- •Модификация таблицы
- •Представления
- •Изменяемые представления
- •Модификация представления
Лабораторная работа №2 Создание таблиц, представлений.
Перед созданием таблиц программисту приходится выполнить ряд действий: спроектировать на бумаге саму базу данных, определить, какие таблицы в ней должны быть, нормализовать их, решить, как они будут называться, и какие столбцы в ней будут. Следует определиться со списком доменов и генераторов. Только после этого можно приступать к физическому созданию базы данных и доменов, после чего можно создавать таблицы, генераторы, индексы и т.д.
CREATE TABLE
Как мы уже знаем из прошлой лекции, создание таблиц осуществляется запросом CREATE TABLE, который можно выполнить с помощью утилиты IBConsole. Полный синтаксис запроса такой:
CREATE TABLE Имя_таблицы [EXTERNAL [FILE] Имя_файла]
(<описание_столбца_1> [, …, <описание_столбца_n>] |
<ограничение_таблицы> …);
Имя_таблицы - уникальный внутри базы данных идентификатор (имя) таблицы. Является обязательным. Нельзя допускать, чтобы такой же идентификатор был у других таблиц, представлений или процедур текущей базы данных.
EXTERNAL [FILE] Имя_файла - необязательное определение того, что создается внешняя по отношению к базе данных таблица. "Имя_файла" при этом указывает адрес и имя файла создаваемой таблицы. Файла с таким именем не должно существовать на момент создания таблицы. В результате применения этого оператора будет создана внешняя по отношению к базе данных таблица, в текстовом формате ASCII. Обычно поля в таких файлах разделяются символом табуляции, а в конце записи ставится символ перевода строки. При этом созданная во внешнем файле таблица будет доступна в списке таблиц базы данных в утилите IBConsole. В основном, такие таблицы могут использоваться для обмена данными между разными БД, для сбора и обработки статистических данных, для сложной сортировки и т.п. Пример создания таблицы во внешнем файле (не забывайте, что служба InterBase должна быть запущена, утилита IBConsole загружена, и база данных First открыта):
CREATE TABLE VneshTable EXTERNAL FILE 'C:\DataBases\VneshFile.tbl'(
ID INTEGER,
NAME VARCHAR(30))
<описание_столбца> - Описание столбца таблицы, которое может иметь как простой, так и достаточно сложный формат. Описание столбца имеет свой синтаксис:
<описание_столбца> = имя_столбца {<тип_данных> | COMPUTED [BY] <выражение> | <домен>}
[DEFAULT {<литерал> | NULL | USER}]
[NOT NULL] [<ограничение_столбца>]
[COLLATE collation]
Давайте по порядку разберемся со всеми этими определениями. Как вы, вероятно, знаете, в синтаксисе различных языков программирования в фигурные скобки принято помещать список возможных параметров, из которого нужно выбрать. То есть, мы должны выбрать либо <тип_данных>, либо COMPUTED [BY], либо заранее созданный домен. О типах данных и их описаниях, равно как и о доменах, мы говорили на прошлой лекции. Теперь рассмотрим создание вычисляемого столбца.
Вычисляемые столбцы
Вычисляемые столбцы в InterBase мало отличаются от вычисляемых столбцов в других базах данных, разве что вычисления производятся не на машине клиента, а на стороне сервера. Предположим, у нас имеется таблица сделок с названием товара, его стоимостью и количеством единиц этого товара, купленных каким то клиентом:
Таблица 17.1. Описание таблицы сделок |
|
ID |
Идентификатор сделки (длинное целое) |
TOVAR |
Наименование товара (текст длиной 20 символов) |
ED_IZM |
Единица измерения (кг, штука, банка и т.п. - текст длиной 7 символов) |
STOIMOST |
Стоимость товара (вещественное число) |
KOLVO |
Количество проданных единиц товара (короткое целое) |
В данном случае хорошо бы также иметь сумму сделки, то есть умножить поле STOIMOST на KOLVO. В этом нам поможет вычисляемый столбец. Вот как можно реализовать данную таблицу:
CREATE TABLE Sdelki (
ID INTEGER,
TOVAR VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL,
ED_IZM VARCHAR(7) CHARACTER SET WIN1251,
STOIMOST DOUBLE PRECISION,
KOLVO SMALLINT,
SUMMA COMPUTED BY (STOIMOST * KOLVO))