CREATE TABLE
Инструкция CREATE TABLE поддерживается с следующими ограничениями:
- Не поддерживаются определения столбцов, основанные на доменах.
- Из ограничений для Paradox поддерживается только PRIMARY KEY. dBase не поддерживает ограничения вообще.
Например, следующая инструкция создает таблицу Paradox с ограничением PRIMARY KEY на столбцы LAST_NAME и FIRST_NAME:
CREATE TABLE "employee.db"(
LAST_NAME CHAR(20),
FIRST_NAME CHAR(15),
SALARY NUMERIC(10,2),
DEPT_NO SMALLINT,
PRIMARY KEY(LAST_NAME, FIRST_NAME)
)
В таком же предложении для dBase определение PRIMARY KEY должно быть опущено:
CREATE TABLE "employee.dbf"(
LAST_NAME CHAR(20),
FIRST_NAME CHAR(15),
SALARY NUMERIC(10,2),
DEPT_NO SMALLINT
)
Создание таблиц Paradox и dBase
Выбор между созданием таблицы Paradox или таблицы dBase осуществляется посредством расширения файла в имени таблицы:
- ".DB" для таблицы Paradox
- ".DBF" для таблицы dBASE
Если расширение не указать, то создается таблица типа, указанного в настройке "Default Driver" в настройках BDE в разделе "System".
Соответствие типов данных для CREATE TABLE
В следующей таблице указано, каким типам Paradox и dBase соответствуют разные типы SQL:
| тип SQL | тип BDE | Paradox | dBASE |
|---|---|---|---|
| SMALLINT | fldINT16 | Short | Number (6,10) |
| INTEGER | fldINT32 | Long Integer | Number (20,4) |
| DECIMAL(x,y) | fldBCD | BCD | (нет) |
| NUMERIC(x,y) | fldFLOAT | Number | Number (x,y) |
| FLOAT(x,y) | fldFLOAT | Number | Float (x,y) |
| CHARACTER(n) | fldZSTRING | Alpha | Character |
| VARCHAR(n) | fldZSTRING | Alpha | Character |
| DATE | fldDATE | Date | Date |
| BOOLEAN | fldBOOL | Logical | Logical |
| BLOB(n,1) | fldstMEMO | Memo | Memo |
| BLOB(n,2) | fldstBINARY | Binary | Binary |
| BLOB(n,3) | fldstFMTMEMO | Formatted memo | (нет) |
| BLOB(n,4) | fldstOLEOBJ | OLE | OLE |
| BLOB(n,5) | fldstGRAPHIC | Graphic | (нет) |
| TIME | fldTIME | Time | (нет) |
| TIMESTAMP | fldTIMESTAMP | Timestamp | (нет) |
| MONEY | fldFLOAT, fldstMONEY | Money | Number (20,4) |
| AUTOINC | fldINT32, fldstAUTOINC | Autoincrement | (нет) |
| BYTES(n) | fldBYTES(n) | Bytes | (нет) |
- x = точность (по умолчанию: зависит от драйвера)
- y = масштаб (по умолчанию 0)
- n = длина в байтах (по умолчанию 0)
- 1-5 = подтип BLOB (по умолчанию 1)