Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Скалярные операторы




Язык SQL включает некоторое количество встроенных скалярных операторов и функций, которые могут использоваться для построения скалярных выражений, т.е. выражений, вычисление которых дает скалярный результат. Помимо обычных арифметических операторов (+, -, * и /) в языке определены и другие операторы, представленные в табл. 13.43.

BIT_LENGTH - Возвращает длину заданной строки в битах.

OCTETJLENGTH - Возвращает длину заданной строки в октетах (длина в битах, деленная на 8).

CHAR_LENGTH - Возвращает длину заданной строки в символах (или в октетах, если строка яв­ляется битовой строкой). Например, результат вычисления выражения CHAR_LENGTH('Beech') равен 5.

CAST - Преобразует значение выражения, построенного из данных одного типа, в зна­чение другого типа данных. Например, в результате вычисления выражения CAST(5E3 AS INTEGER) будет получено значение 5000.

| | - Оператор конкатенации. Соединенные этим оператором две символьные или битовые строки преобразуются в одну строку. Например, выражение fname || Iname по­зволяет объединить имя и фамилию работника в одну символьную строку.

CURRENT USER или USER - Функция возвращает символьную строку, представляющую собой идентификатор (или, как принято говорить, имя) текущего пользователя/

SESSION_USER - Функция возвращает символьную строку, представляющую собой идентификатор текущего сеанса SQL.

 

Оператор выбора SELECT. Формирование запросов из базы данных

Команда является мощным средством обработки запросов. С ее помощью из базы-источника выделяются нужные данные и пере­сылаются на экран или в файл-приемник. Данные могут быть из­влечены из ратных баз, а также сгруппированы и упорядочены же­лаемым образом.

Команда имеет массу опций-возможностей. Ввиду этого сначала приведем ее предварительный синтаксис, который позволит затем лучше осознать детали.

SELECT <что выводится>

FROM <откуда (источник)> INTO <куда (получатель)>

WHERE <каким условиям должно отвечать>

GROUP BY <колонки, по которым выполняется группирование>

HAVING <условие группирования записей в одну строку >

ORDER BY <в каком порядке выведать данные>

Команда SELECT и вообще команды SQL мало зависят от теку­щего состояния среды FoxPro. Они сами открывают нужные им базы данных и индексные файлы. Если необходимых для выполнения команды индексов нет, они будут созданы, а по завершении команды уничтожены. Однако, конечно, лучше, чтобы применялись готовые индексы - для этого они должны быть открыты (используются только компактные индексы). Исключение составляют структурные CDX. индексы. Открытие соответствующей базы данных (например, с по­мощью команды SELECT) открывает и индекс. Теперь рассмотрим ее более полный формат.

SELECT

[DISTINCT] [<псевдоним>.]<выражение> [AS <колонка>]

[,[<псевдоним>.]<выражение> [AS <колонка>]...]

FROM <БД> [,<БД>...]

[[INTO <получатель> ]/[ТО FILE <файл>

[ADDITIVE]/TO PRINTER]]

[NOCONSOLE] [PLAIN] [NOWAIT]

[WHERE <условие связи>

[AND <условие связи>...]

[AND/OR <условие отбора>

[AND/OR <условие отбора>...]]]

[GROUP BY <колонка> [, <колонка>...]]

[HAVING <условие отбора> ] [ORDER BY <колонка> [ASC/DESC]

[,<колонка> [ASC/DESC]...]]

Термин "колонка" здесь очень близок к понятию "поле базы" данных, но может быть и выражением. Кроме того, вследствие вы­борки мы можем получить как новую базу данных, так и текстовый файл или даже только отображение на экране, т.е. колонки.

Команда SELECT допускает включение в себя других внутренних команд SELECT (формирование подзапросов).

Все примеры использования команды SELECT сгруппированы в конце раздела. Сейчас рассмотрим опции команды.

 

Указание результатов выборки и источников данных

SELECT [DISTINCT] [<псевдоним>.]<выражение> [AS <колонка>]

FROM <БД> [<псевдоним>] [,<БД> [<псевдоним>]...]

Здесь указывается, что и откуда берется в выборку. Перед словом FROM перечисляются отбираемые <выражения>, а после - имена баз, из которых берутся данные.

<Выражение> может быть полем записи из БД, константой (выводимой в каждой строке выборки), функцией (в том числе и ПФ) от переменных, полей и т.п. Если <выражение> является именем поля, то оно может быть составным (с включением имени базы данных или псевдонима), в особенности если выборка делается из нескольких баз, где имена полей совпадают, например, поля TAB из баз KADR.DBF и BRIG1.DBF. Псевдонимом может быть не только "официальный" псевдоним (ALIAS) базы, но и любое другое имя, которое вы ей при­своите в команде SELECT. Это задаваемое временное имя указывается в опции <псевдоним> после слова FROM. Никаких последствий за пределами команды SELECT такое назначение не имеет.

Если необходимо построить выборку из всех полей базы, вместо их перечня можно указать символ “*”.

В результате выполненной выборки получается совокупность коло­нок, заголовками которых могут быть имена полей. Если имена совпа­дают, то такие колонки получают совпадающие имена, к которым присоединяется одна из букв (по алфавиту), например ТАВ_А, TABJB и т.д. Аналогичным образом даются имена колонкам, полученным в результате вычисления выражений. Их имена состоят из слова ЕХР и последовательных чисел. Так, возможны имена ЕХР_1, ЕХР_2 и т.д. Исключения составляют выражения, использующие собственные функции SQL, например функции MINQ, MAXQ и др. Имена колонок в этом случае будут включать имена функций.

Если нас не устраивают имена, формируемые по умолчанию, можно назначить свои, указав их после слова AS в виде

<выражение> AS <новое имя колонки>

Такое переименование имеет смысл, если выборка помещается во вновь создаваемую базу данных. Имя дается по правилам, приня­тым в FoxPro, и должно быть задано латинскими символами.

В <выражении> могут быть использованы любые функции FoxPro. Кроме того, здесь есть еще собственные специальные арифметические функции, действующие "по вертикали". Это функ­ции вычисления среднего, минимального и максимального значе­ний, суммирования, а также количества записей:

AVG(<выр>), MIN(<выр>), МАХ(<выр>), SUM(<выр>), COUNT(<выр>).

Последняя функция может иметь в качестве аргумента звездочку (COUNT(*)), что означает подсчет всех записей, попав­ших в выборку.

Включение опции DISTINCT исключает возможность вывода одинаковых строк в выборке.

 

Указание объекта, куда пересылается выборка

Следующие опции задают "получатель" данных выборки. Им может быть база данных, массив, текстовый файл, экран и принтер.

Кроме того, информация может быть переслана в так называемый Курсор (будем писать с большой буквы). Курсор - это временный набор данных, который может быть областью памяти или временным файлом FoxPro (этот процесс от нас не зависит) и имеет режим "Только чтение". Данные Курсора могут быть, например, предъявлены в команде BROWSE, напечатаны, из них может быть образовано меню и т.д. Курсор может быть обработан другой командой SELECT. К колонкам Курсора надо обращаться по имени этих колонок, возможно, с префиксом - именем Курсора (через точку).

Итак:

INTO <получатель>

<Получатель> может быть одного из следующих типов:

ARRAY <массив> - задается вновь создаваемый двумерный <массив>.

CURSOR <курсор> - задается имя Курсора.

DBF/TABLE <БД> - новая база данных с указанным именем.

Слова DBF и TABLE здесь являются синонимами.

Кроме того, данные можно переслать в файл или на принтер.

ТО FILE <файл> [ADDITIVE]/TO PRINTER - выборка посы­лается в текстовый <файл> или на принтер. Если используется слово ADDITIVE, то выборка будет добавлена в конец су­ществующего файла без его перезаписи.

Следующие опции имеют смысл только при выдаче на экран (команда используется без слова INTO):

NOCONSOLE - выборка не выдается на экран.

PLAIN - заголовки колонок не выдаются.

NOWAIT - не делаются паузы при заполнении экрана.

 

Критерий отбора данных

WHERE <условие связи> [AND <условие связи>...]

[AND/OR <условие отбора> [AND/OR <условие отбора>...]]

Здесь:

<Условие связи> - применяется в случае, если выборка делается более, чем из одной базы данных, и указывает критерий, кото­рому должны отвечать поля из разных баз. В условии связи указываются поля из разных баз. Здесь разрешается использо­вать знаки отношения =, #, <, >, >=, <=, <>. Допускается за­дание нескольких критериев, соединенных знаком AND.

<Условие отбора> - строится аналогично, но из выражений только для одной базы, и допускается использование логических опе­раторов OR и NOT.

Условия, кроме любых функций FoxPro, могут содержать следую­щие операторы SQL:

LIKE - позволяет построить условие сравнения по шаблону, где символ "_" указывает единичный неопределенный символ в строке, "%" - любое их количество. Эти символы аналогичны символам маски "?" и "*" в MS DOS. Формат оператора:

<выражение> LIKE <шаблон>

BETWEEN - проверяет, находится ли выражение в указанном диа­пазоне. Формат оператора: <выражение> BETWEEN <нижнее знач.> AND <верхнее знач.>

IN - проверяет, находится ли выражение, стоящее слева от слова IN, среди перечисленных справа от него (аналогично функции INLIST). Формат оператора:

<выражение> IN (<выражение>,<выражение>,...)

Все указанные операторы можно комбинировать с помощью свя­зок OR, AND, NOT и скобок. Операторы LIKE и BETWEEN не следует путать с одноименными функциями FoxPro, которые, впрочем, тоже можно использовать.

 

 

Группированные данных

GROUP BY <колонка>[,<колонка>...] – задаются колонки, по кото­рым производится группирование выходных данных. Все записи базы, для которых значения колонок совпадают, отображаются в выборке единственной строкой. Группирование удобно для получе­ния некоторых сводных характеристик (сумм, количеств) группы.

HAVING <условие отбора > - опция задает критерий отбора дан­ных в каждую сформированную в процессе выборки группу.

 

Сортировка

ORDER BY <колонка> [ASC/DESC][,<Колонка> [ASC/DESC]...] -опция задает упорядочение по заданной колонке/колонкам. По умолчанию сортировка выполняется по возрастанию (ASC), но может быть задана и по убыванию (DESC).

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 933; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.