КАТЕГОРИИ: Архитектура-(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; Просмотров: 976; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |