- •1. Основные сведения о языке sql
- •2. Определение данных
- •2.1. Создание и удаление таблицы
- •2.2. Изменение состава полей таблицы
- •2.3. Создание и удаление индекса
- •IndName on Personnel.Db (Name)
- •IndNamePosition on Personnel.Db (Name, Position)
- •3. Отбор данных из таблиц
- •3.1. Описание оператора select
- •3.2. Управление полями
- •3.3. Простое условие отбора записей
- •3.4. Сложные критерии отбора записей
- •3.5 Группирование записей
- •3.6. Сортировка записей
- •Var s: string;
- •3.7. Соединение таблиц
- •4. Модификация записей
- •4.1. Редактирование записей
- •4.2. Вставка записей
- •Insert into Store
- •Values ("Торшер", 499.9, 10);
- •Insert into CardsArchives
- •4.3. Удаление записей
- •5. Статический и динамический запросы
- •Var str: string;
2. Определение данных
Определение данных — это манипулирование целыми таблицами. Сюда включаются операции:
создания новой таблицы;
удаления таблицы:
изменения состава полей таблицы;
создания и удаления индекса.
Эти действия выполняются с помощью подмножества операторов определения данных языка SQL.
2.1. Создание и удаление таблицы
Для создания таблицы служит оператор create table, который имеет следующий формат:
CREATE TABLE <Имя таблицы>
(<Имя поля> <Тип данных>,
. . .
<Имя поля> <Тип данньк>);
Обязательными операндами являются имя создаваемой таблицы и имя как минимум одного поля с соответствующим типом данных.
Замечание
В действительности вместо имени таблицы указывается имя главного файла таблицы.
Для локальной таблицы ее формат автоматически определяется по расширению файла: DB для таблицы Paradox и DBF для таблицы dBASE. Если расширение файла не указано, то тип таблицы определяется драйвером, заданным в BDE для локальных БД (см. главу 22, посвященную инструментальным средствам). По умолчанию установлен драйвер Paradox.
Файлы таблицы размещаются в каталоге БД, на который указывает псевдоним БД. Для компонента Query псевдоним задается свойством DatabaseName.
Порядок следования строк с описаниями полей определяет порядок расположения полей создаваемой таблицы. Отметим, что описания полей могут располагаться подряд, а не занимать отдельные строки оператора.
Типы данных языка SQL и соответствующие им типы данных для таблиц dBASE и Paradox приведены в табл. 8.1.
В приведенной таблице N обозначает длину поля в байтах, х — число цифр, y — число цифр после десятичной точки. Для типа character допускается сокращение char. Отметим, что в стандарте SQL-92 число допустимых для полей типов данных намного меньше, например, нет автоинкрементного типа.
Таблица 8.1
Типы данных для таблиц БД
-
SQL
dBASE
Paradox
SMALLINT
Number (6,10)
Short
INTEGER
Number (20,4)
Long Integer
DECIMAL(X,Y)
—
BCD
NUMERIC(X,Y)
Number (X,Y)
Number
FLOAT(X,Y)
Number
Float (X,Y)
CHARACTER(N)
Character
Alpha
VARCHAR(N)
Character
Alpha
DATE
Date
Date
BOOLEAN
Logical
Logical
BLOB(N, 1)
Memo
Memo
BLOB (N,2)
Binary
Binary
BLOB(N,3)
—
Formatted memo
BLOB (N,4)
OLE
OLE
BLOB (N,5)
—
Graphic
TIME
—
Time
TIMESTAMP
—
Timestamp
MONEY
Number (20,4)
Money
AUTOINC
—
Autoincrement
BYTES(N)
Bytes
Пример создания таблицы средствами языка SQL:
CREATE TABLE NewTable.dbf
(Number INTEGER,
Name CHAR(20),
BirthDay DATE);
В каталоге БД создается новая таблица NewTable формата dBase, для которой определены целочисленное поле Number, символьное поле Name и поле даты BirthDay.
Если таблица с заданным именем уже существует, то при выполнении оператора создания таблицы генерируется исключительная ситуация.
Для таблицы Paradox можно определить ключ (главный, или первичный), указав описатель primary key и перечислив в скобках после него поля, образующие этот ключ. Ключевые поля должны быть в списке полей первыми. Вот пример создания таблицы с построением главного ключа:
CREATE TABLE Personnel.db
(Code AUTOINC,
Name CHAR(20),
Position CHAR(15),
Salary NUMERIC(10,2),
PRIMARY KEY(Code));
Новая таблица Personnel имеет формат Paradox, и для нее определены автоинкрементное поле кода Code, символьные поля фамилии Name, должности Position и числовое поле оклада Salary. По полю кода построен главный ключ.
Для удаления таблицы предназначен оператор:
DROP TABLE <Имя таблица >;
Например:
DROP TABLE NewTable.dbf;
В результате выполнения этого оператора с диска удаляются все файлы, относящиеся к таблице с именем NewTable. Если таблица не существует или с ней работает другое приложение, то генерируется исключительная ситуация.
