Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД 1.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1.18 Mб
Скачать

Команды изменения данных

REPLACE

Изменяет значения в полях таблицы.

Синтаксис

REPLACE FieldName1 WITH eExpression1 [ADDITIVE]

[, FieldName2 WITH eExpression2 [ADDITIVE]] ...

[Scope] [FOR lExpression1] [WHILE lExpression2]

[IN nWorkArea | cTableAlias]

[NOOPTIMIZE]

Аргументы

FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ] Указывает что данные в FieldName1 заменяются значением Expression1; данные в FieldName2 заменяются значением eExpression2; и т.д.

В случае если значение выражения превышает разрядность числового(numeric) поля, REPLACE выполняет следующие шаги:

1. REPLACE округляет значение выражения до количества десятичных знаков в поле таблицы.

2. Если значение не размещается, REPLACE сохраняет значение используя представление вида мммЕ пп.

3. Если значение не размещается, REPLACE заменяет содержимое поля звездочками.

Scope Указывает диапазон изменяемых записей. Могут использоваться: ALL, NEXT N, RECORD N, и REST.

По умолчанию REPLACE изменяет текущую запись (NEXT 1).

IN nWorkArea Указывает номер рабочей области в которой будут модифицированы записи.

IN cTableAlias Указывает алиас таблицы в которой будут модифицированы записи.

Если nWorkArea и cTableAlias не указаны, обновляются записи в текущей рабочей области.

Функции vfp

Математические

ABS(num) – Возвращает абсолютное значение аргумента(модуль)

ACOS(num ) Возвращает значение arccos(num)

ASIN(num ) Возвращает значение arcsin(num)

ATAN(num ) Возвращает значение arctg(num)

ATN2(num1, num2 ) Возвращает значение arctg(num1/num2); num2 мб =0

BETWEEN(num1, num2, num3 )

BITAND(num1, num2)

BITCLEAR(num1, num2) Устанавливает в 0 указанный бит (num2-от 0 до 31) в выражении num1

BITLSHIFT(num1, num2) Сдвиг влево выражения num1 на num2 позиций

BITNOT(num1) Побитная операция NOT над num1

BITOR(num1, num2)

BITRSHIFT(num1, num2) Сдвиг вправо выражения num1 на num2 позиций

BITSET(num1, num2) Устанавливает в 1 указанный бит (num2-от 0 до 31) в выражении num1

BITTEST(num1, num2) Возвращает .T. если указанный бит в num1 установлен в 1; иначе возвращает (.F.).

BITXOR(num1, num2)

CEILING(num1) - округляет число до большего целого.

COS(num1)

DTOR(num1) преобразует угол из градусов в радианы

EXP(num1)

FLOOR(num1) - возвращает целое число, меньшее или равное num1.

INT(num1)

LOG(num1) Возвращает значение натурального логарифма

LOG10(num1) Возвращает значение десятичного логарифма

MAX( )

MIN( )

MOD(nDividend, nDivisor) Делит одно числовое на другое и возвращает остаток.

nDividend Определяет делимое. nDivisor Определяет делитель.

PI( ) – значение 3.14159

RAND( ) Возвращает случайное число между 0 и 1

ROUND(nExpression, nDecimalPlaces) Округляет выражение до указанного количества десятичных знаков.

RTOD( ) преобразует угол из радиан в градусов

SIGN( )

SIN( )

SQRT( )

TAN( )

Строковые

ALLTRIM(ВырС ) Удаляет пробелы вначале и в конце символьного выражения

ASC(ВырС ) Возвращает код первого символа из символьного выражения

AT(ВырС1, ВырС2 [, ВырN])

Возвращает позицию(отсчет позиций слева-направо) первого вхождения одного символьного выражения (ВырС1) в другое символьное выражение(ВырС2); ВырN-номер вхождения;

AT_C() тоже что и AT() но для двухбайтовых символов.

ATC( ) тоже что и AT() но не различает строчные и заглавные буквы.

ATCC() – ATC() – для двухбайтовых символов.

ATLINE(ВырС1, ВырС2) возвращает номер строки из ВырС2, в которой встретилось выражение ВырС1

ATCLINE( )тоже, что ATLINE но не различает строчные и заглавные буквы.

BETWEEN(ВырС1, ВырС2, ВырС3)

CHR(ВырN) – возвращает символ заданный кодом ВырN

CHRTRAN( )

CPCONVERT( ) - Преобразует символьные выражения в другую кодовую таблицу

CPCONVERT(nCurrentCodePage, nNewCodePage, cExpression)

INLIST (eExpression1, eExpression2 [, eExpression3 ...])

Определяет, соответствует ли выражение одному из выражений в множестве.

Возвращает логическое или NULL значение.

eExpression1 Определяет выражение для поиска.

eExpression2 [, eExpression3 ...] Определяет множество выражений, среди которых производиться поиск. (не более 24 выражений )

Все выражения должны иметь одинаковый тип данных.

ISALPHA( )

ISDIGIT( )

ISLOWER( )

ISUPPER( )

LEFT(ВырС, ВырN) – Возвращает ВырN символов из ВырС считая слева – направо.

LEN(ВырС) Возвращает количество символов в ВырN

LIKE(ВырС1, ВырС2) Определяет есть ли в ВырС2 подстрока соответствующая образцу ВырС1.

LIKE(ВырС1, ВырС2)

В выражении ВырС1 допустимо использование любой комбинации символов обобщения

? и *.

LOWER( )

LTRIM( )

MAX( )

MIN( )

OCCURS(cSearchExpression, cExpressionSearched)

Возвращает количество вхождений, одного выражения в другое.

Аргументы

cSearchExpression Определяет выражение, которое разыскивается внутри cExpressionSearched.

Функция возвращает 0 если cSearchExpression не найдено внутри cExpressionSearched.

PADC(eExpression, nResultSize [, cPadCharacter] ); PADL( ); PADR( )

Возвращает строку из выражения, дополненного пробелами или указанными символами

cPadCharacter до указанной длины слева (PADL), справа (PADR), или с двух сторон(PADC).

RAT( ) Тоже, что AT(), но символы считаются справа налево.

RATLINE( )

REPLICATE( )

RIGHT( )

RTRIM( )

SPACE( )

STR (nExpression [, nLength [, nDecimalPlaces]])

Преобразует числовое выражение в симвльное.

Синтаксис

STR (nExpression [, nLength [, nDecimalPlaces]])

nExpression - числовое выражение.

nLength Определяет длину возвращаемой строки.

nDecimalPlaces Определяет число десятичных знаков в результирующей строке.

STRCONV( )

STRTRAN( )

STUFF(cExpression, nStartReplacement, nCharactersReplaced, cReplacement)

Возвращает строку, полученную, путем замены указанного числа символов в cExpression, другим выражением cReplacement.

CExpression - строка в которой происходит замена.

nStartReplacement определяет позицию в cExpression, с которой начинается замена.

nCharactersReplaced Определяет количество символов, которое будет заменено. Если nCharactersReplaced - 0, строка cReplacement будет вставлена в cExpression

.CReplacement строка замены. Если cReplacement – пустая строка, то число символов, указанное nCharactersReplaced будет удалено из cExpression.

SUBSTR( )

SYS(10) -

SYS(15)

SYS(2007) – Возвращает значение CRC для строки аргумента

TRANSFORM( )

TRIM( )

TXTWIDTH( )

UPPER( )

Работа с датами

BETWEEN( )

CDOW(dExpression | tExpression) Возвращает день недели из Date или DateTime выражения. (По английски)

CMONTH(dExpression | tExpression ) Возвращает название месяца из Date или DateTime выражения. (По английски)

CTOD(cExpression ) Преобразует символьное выражение в выражение типа Date

CTOT(cExpression ) Преобразует символьное выражение в выражение типа DateTime

DATE( ) Возвращает текущую системную дату.

DATETIME( ) Возвращает текущую системную дату и время.

DAY(dExpression | tExpression ) Возвращает номер дня в месяце(число от 1 до 31)

DMY(dExpression | tExpression) Возвращает символьную строку содержащую дата например, 31 May 1996.

DOW(dExpression | tExpression [, nFirstDayOfWeek]) Возвращает номер дня недели.

EMPTY(dExpression | tExpression)

FDATE(cFileName) Возвращает дату последней модификации файла.

GOMONTH(dExpression | tExpression, nNumberOfMonths)

Возвращает дату, отстоящую от указанной на заданное число месяцев.

nNumberOfMonths - число месяцев.

INLIST( ) см. выше

MAX( ) ------”-----

MDY(dExpression | tExpression) Возвращает символьную строку в формате месяц-день-год для указанной даты.

MIN( ) см. выше

MONTH(dExpression | tExpression) Возвращает номер месяца в году.(от 1 до 12)

SYS(1) - возвращает системную дату

SYS(2) возвращает текущее время в секундах

SYS(10) возвращает системную дату в виде символьной строки.

SYS(11)

WEEK(dExpression | tExpression [, nFirstWeek] [, nFirstDayOfWeek]) Возвращает номер недели в году.

dExpression | tExpression выражение типа Date или DateTime.

YEAR(dExpression | tExpression) Возвращает год для указанной даты.

Преобразование типов

CHR(nANSICode) Возвращает символ соответствующий заданному коду

CTOD(cExpression) Преобразует символьное выражение в выражение типа date

DTOC( ) Преобразует выражение типа date в символьное выражение

MTON( ) Преобразует выражение типа Currency в выражение типа Numeric

NTOM( ) Преобразует выражение типа Numeric в выражение типа Currency

NVL (eExpression1, eExpression2)

Возвращает отличное от NULL значение из двух выражений.

eExpression1, eExpression2 NVL() возвращает eExpression2, если eExpression1 содержит NULL значение. NVL() возвращает eExpression1, если eExpression1 – отличное от NULL значение. eExpression1 и eExpression2 могут быть любого типа. NVL() возвращает .NULL. если и eExpression1 и eExpression2 оба содержат NULL значение.

STR( ) см. выше

SYS(10) см. выше

TRANSFORM(eExpression, cFormatCodes) Возвращает символьную строку содержащую результат преобразования выражения eExpression с использованием шаблона cFormatCodes.

TTOC(tExpression [, 1 | 2] ) Преобразует выражение типа DateTime в символьную строку.

TTOD(tExpression) Преобразует выражение типа DateTime в тип Date.

VAL(cExpression) Возвращает числовое значение, полученное из символьного выражения.

Проверка файлов и дисков

FCHSIZE (nFileHandle, nNewFileSize)

Изменяет размер файла, открытого на низком уровне.

NFileHandle указатель на файл, возвращается функцией FOPEN() или FCREATE().

NNewFileSize Определяет новый размер файла в байтах.

FCLOSE(nFileHandle) Закрывает файл, открытый на низком уровне.

FCREATE (cFileName [, nFileAttribute])

Создает и открывает файл на низком уровне.

CFileName Определяет имя создаваемого файла.

NFileAttribute Определяет атрибуты создаваемого файла.

0 (по умолчанию) Чтение -запись

1 Только для чтения

2 Скрытый

3 только для чтения, скрытый

4 cистемный

5 только для чтения / системный

6 Системный / скрытый

7 только для чтения /скрытый/системный

FEOF(nFileHandle) Проверяет достигнут или нет конец файла

FFLUSH(nFileHandle) Записывает на диск файловый буфер для файла открытого на низком уровне.

FGETS(nFileHandle [,nBytes]) Возвращает строку считанную из файла

FOPEN(cFileName [, nAttribute]) Открывает файл на низком уровне

FPUTS(nFileHandle, cExpression [, nCharactersWritten]) Записывает строку символов в файл

FREAD(nFileHandle, nBytes) Считывает указанное число байт из файла

FSEEK (nFileHandle, nBytesMoved [, nRelativePosition])

Перемещает указатель в файле, открытом на низком уровне.

NFileHandle указатель файла

NBytesMoved число байтов, на которое необходимо переместить указатель файла. Указатель файла перемещается к концу файла, если nBytesMoved положителен. Указатель файла перемещается к началу файла, если nBytesMoved отрицателен.

NRelativePosition относительно чего перемещается указатель файла:

0 (Значение по умолчанию) начало файла.

1 Текущее положение указателя файла

2 Конец файла

FTIME(cFileName) Возвращает время последней модификации файла.

FWRITE(nFileHandle, cExpression [, nCharactersWritten]) Записывает последовательность байт в файл открытый на низком уровне.

HEADER([nWorkArea | cTableAlias]) Возвращает число байт в заголовке указанной таблицы.

DELETED([cTableAlias | nWorkArea]) Возвращает логическое значение показывающее удалена текущая запись или нет.

FCOUNT([cTableAlias | nWorkArea]) Возвращает число полей в указанной таблице.

FIELD(nFieldNumber [, nWorkArea | cTableAlias]) Возвращает имя поля заданного номером в указанной таблице

FSIZE(cFieldName [, nWorkArea | cTableAlias] | cFileName) Возвращает размер в байтах указанного поля

LUPDATE([nWorkArea | cTableAlias]) Возвращает дату последнего обновления таблицы.

Функции времени

CTOT(cCharacterExpression) Преобразует символьное выражение в тип DateTime

DATETIME( ) Возвращает системные дату и время в переменную типа DateTime

HOUR(tExpression) Возвращает количество часов из переменной типа DateTime

MINUTE(tExpression) Возвращает количество минут из переменной типа DateTime

SEC(tExpression) Возвращает количество секунд из переменной типа DateTime

SECONDS( ) Возвращает текущее время в секундах

TIME([nExpression]) Возвращает текущее время в виде символьной строки (hh:mm:ss)

Функция анализа условий

IIF(логВыраж, Выр1, Выр2)

Возвращает одно из двух значений в зависимости от значения логического выражения.

логВыраж Определяет логическое выражение, которое IIF() проверяет.

Выр1, Выр2, если логВыраж истинно, то возвращается Выр1. Если логВыраж ложно(.F)., то возвращается Выр2.

Функции анализа типа и наличия данных

TYPE(ВырC) –имя переменной должно быть заключено в апострофы(иначе возвращаемое значение - U)

Character C

Numeric (also float, double, and integer) N

Currency Y

Date D

DateTime T

Logical L

Memo M

Object O

General G

Undefined type of expression U

Empty(Выр)

Возвращает значение .T. если переданный аргумент:

Character Пустая строка, строка пробелов, табуляций, CR, LF, или любая комбинация из них.

Numeric 0

Currency 0

Float 0

Integer 0

Double 0

Date Empty (ò.å. CTOD(''))

DateTime Empty (ò.å. CTOT(''))

Logical False (.F.)

Memo Empty (no contents)

Функции подстановок

Оператор - &

EVALUATE(cExpression)

вычисляет выражение и возвращает результат.

Функции и команды для работы с массивами

ACOPY (SourceArrayName, DestinationArrayName

[, nFirstSourceElement [, nNumberElements [, nFirstDestElement]])]

Копирует элементы из одного массива в другой.

SourceArrayName – исходный массив

DestinationArrayName – результирующий массив.

Массивы могут быть одно - или двумерные. Если результирующий массив не существует, VFP автоматически создает его.

NFirstSourceElement - первый элемент в исходном массиве, который будет скопирован;

NNumberElements - число элементов для копирования. Если nNumberElements -1, все элементы исходного массива, начиная с элемента nFirstSourceElement будут скопированы.

NFirstDestElement Определяет первый элемент в результирующем массиве.

ADEL (ArrayName, nElementNumber [,] 2)

Удаляет элемент из одномерного массива, или строки или столбцы из двумерного массива.

ArrayName Определяет массив из которого удаляются элемент, строка, или столбец.

nElementNumber Определяет номер элемента, строки, или столбца для удаления.

ADIR (ArrayName [, cFileSkeleton [, cAttribute]])

Заносит информацию о файлах в массив и возвращает число файлов.

ArrayName – имя массива.

Следующая таблица описывает содержание и тип данных каждого столбца в массиве:

Столбец

Информация

Тип данных

1

Имена файла

Строка символов

2

Размер файла

Числовой

3

Дата последней модификации

Дата

4

Время последней модификации

Строка символов

5

Атрибуты файла

Строка символов

CFileSkeleton – шаблон имени файла. Разрешается использовать символы обощения * и ?.

CAttribute может содержать любую комбинацию символов D, H, и S.

AELEMENT( )

AFIELDS(ArrayName [, nWorkArea | cTableAlias]) Размещает информацию о структуре таблицы в массиве и возвращает число полей.

AINS(ArrayName, nElementNumber [, 2]) Добавляет элемент в одномерный массив, или строку или столбец в двумерный массив.

ALEN (ArrayName [, nArrayAttribute])

Возвращает число элементов, строк, или столбцов в массиве.

ArrayName – имя массива.

NArrayAttribute Определяет что возвращает ALEN () число элементов, строк или столбцов в массиве.

0 Возвращает число элементов в массиве.

1 Возвращает число строк в массиве.

2 Возвращает число столбцов в массиве.

ASCAN(ArrayName, eExpression [, nStartElement [, nElementsSearched]])

Просматривает массив в поисках элемента содержащего значение заданное выражением eExpression. Если элемент найден возвращается его номер или 0 в противном случае.

ASORT(ArrayName [, nStartElement [, nNumberSorted [, nSortOrder]]])

Упорядочивает элементы в массиве в возрастающем или убывающем порядке.

ASUBSCRIPT( )

Команды для работы с массивами

DECLARE /DIMENSION

См. выше

COPY TO ARRAY

Копирует данные из таблицы в массив.

Синтаксис

COPY TO ARRAY ArrayName

[FIELDS FieldList]

[Scope] [FOR lExpression1] [WHILE lExpression2]

[NOOPTIMIZE]

Аргументы

ArrayName Определяет массив, в который копируются данные.

FieldList указывает поля таблицы которые будут копироваться в массив. Если FieldList, не указан, копируются все поля.

APPEND FROM ARRAY

Добавляет одну запись в таблицу для каждой строки в массиве и заполняет каждую запись данными из соответствующей строки массива.

Синтаксис

APPEND FROM ARRAY ArrayName

[FOR lExpression]

[FIELDS FieldList]

Аргументы

ArrayName Определяет имя массива, который содержит данные для добавления в таблицу.

Если присутствует список FieldList, то только указанные поля переносятся из массива в таблицу.

Пара команд SCATTER - GATHER

SCATTER

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

Синтаксис

SCATTER

[FIELDS FieldNameList

| FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] [MEMO]

TO ArrayName | TO ArrayName BLANK | MEMVAR | MEMVAR BLANK

| NAME ObjectName

Аргументы

FIELDS FieldNameList Определяет поля, которые будут переданы в переменные или массив.

FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton] можно избирательно переносить поля в переменные или массив включением предложения LIKE ИЛИ EXCEPT или обоих.

Шаблон имени поля поддерживает символы обобщения.

Предложение LIKE может быть объединено с предложением EXCEPT:

MEMVAR переносит данные в множество переменных вместо массива. SCATTER создает одну переменную для каждого поля в таблице и заполняет каждую переменную данными из соответствующего поля в текущей записи, присваивая переменной то же самое название, размер, и тип.

GATHER

Заменяет данные в текущей записи таблицы с данными из массива, множества переменных, или объекта.

Синтаксис

GATHER FROM ArrayName | MEMVAR | NAME ObjectName

[FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]

[MEMO]

Аргументы

FROM ArrayName Определяет массив, данные из которого заменяют данные в текущей записи таблицы. Значение первого элемента массива заменяет первое поле в текущей записи; значение второго элемента массива заменяет второе поле, и так далее.

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

Контрольные вопросы.

  1. Перечислите операторы управления ходом выполнения программы.

  2. Какие команды используются для удаления данных?

  3. Оператор Replace – его назначение и синтаксис.

  4. Сформулируйте классификацию функций Visual Foxpro.