Справка по SQL файловых баз геоданных
Можно использовать SQL-запросы для доступа и анализа данных в файловой базе геоданных.
В следующих разделах представлены описания и примеры SQL-выражений, функций, операторов, ключевых слов и условий, которые можно использовать для запроса таблиц, классов пространственных объектов и представлений в файловых базах геоданных.
Псевдоним
Можно указать псевдоним для поля или значений, возвращаемых запросом SQL, используя ключевое слово AS. Это обеспечивает более понятный результат.
В следующем примере использования ключевого слова AS результаты вычитания значений в столбце POP1990 из значений в столбце POP1997 возвращаются под псевдонимом PopChange.
SELECT COUNTY_NAME, POP1997 - POP1990 AS PopChange
FROM counties
ORDER BY COUNTY_NAME
CASE-выражения
Выражение CASE анализирует список указанных условных выражений и возвращает результаты на основе этих выражений.
Следующее выражение включает в себя набор условий в CASE выражении, которое возвращает слова низкий, средний или высокий в зависимости от значений зарплаты.
SELECT name,salary,
CASE
WHEN salary <= 2000 THEN 'low'
WHEN salary > 2000 AND salary <= 3000 THEN 'average'
WHEN salary > 3000 THEN 'high'
END AS salary_level
FROM employees
Функции
Ниже приведен список функций, поддерживаемых файловыми базами геоданных.
Функции дат
Функции дат возвращают значения даты и времени.
|
|
Возвращает текущую дату, предоставленную операционной системой компьютера, на котором выполняется запрос SQL. |
|
|
Возвращает часть выражения даты и времени (обозначается как Значением аргумента |
|
|
Возвращает текущую дату, предоставленную операционной системой компьютера, на котором выполняется запрос SQL. |
|
|
Возвращает текущее время и дату, предоставленную операционной системой компьютера, на котором выполняется запрос SQL. |
Числовые функции
Числовые функции выполняют операции с числовыми значениями. Все числовые функции возвращают числовые значения.
Аргументы, обозначенные как numeric_exp, float_exp или integer_exp, могут быть именем столбца, результатом другой скалярной функции или числовой константой, для которой исходные данные могут быть представлены числовым типом.
|
|
Возвращает абсолютную величину числа, обозначенную аргументом |
|
|
Возвращает величину арккосинуса числа, обозначенную аргументом |
|
|
Возвращает величину арккосинуса числа, обозначенную аргументом |
|
|
Возвращает величину арктангенса числа, обозначенную аргументом |
|
|
Возвращает наименьшее целое значение, большее или равное значению, обозначенному аргументом |
|
|
Возвращает величину косинуса угла (в радианах), обозначенную аргументом |
|
|
Возвращает наибольшее целое значение, меньшее или равное числу, обозначенному аргументом |
|
|
Возвращает значение натурального логарифма числа, определенное аргументом |
|
|
Возвращает значение десятичного логарифма числа, определенное аргументом |
|
|
Делит значение |
|
|
Возвращает значение |
|
|
Возвращает значение Если значение, определенное аргументом |
|
|
Возвращает индикатор знака (отрицательный, положительный или нулевой) числа, определенного аргументом Если значение |
|
|
Возвращает синус значения |
|
|
Возвращает тангенс значения |
|
|
Возвращает значение |
Строковые функции
Строковые функции выполняют операции со строковыми значениями (текстовыми символами).
Аргументы, обозначаемые string_exp, могут быть названием столбца, строковой константой или результатом другой скалярной функции, где исходные данные могут быть представлены в виде символов.
Аргументы, обозначаемые character_exp, являются строками символов переменной длины.
Аргументы, определенные как start или length могут быть числовыми постоянными или результатами других скалярных функций, где исходный тип данных может быть представлен как числовой.
Строковые функции, перечисленные здесь, базируются на 1; то есть, первым символом в строке является символ 1.
|
|
Возвращает длину строкового выражения в символах. |
|
|
Возвращает символьную строку, являющуюся результатом присоединения текста из |
|
|
Возвращает строку, идентичную строке аргумента |
|
|
Возвращает место первого символьного выражения во втором символьном выражении. Результат – число с точностью, определяемой реализацией и коэффициентом кратности 0. |
|
|
Возвращает символьную строку, извлекаемую из текста, представленного аргументом |
|
|
Возвращает текст, определенный аргументом |
|
|
Возвращает строку, идентичную строке аргумента |
Функции агрегирования
Используйте функцию агрегирования для выполнения вычислений над указанным набором значений и возврата одного значения, являющегося результатом этого вычисления.
|
|
Вычисляет среднее всех значений в наборе. Пустые (null) значения не учитываются. |
|
|
|
|
|
Возвращает максимальное значение в наборе. Пустые (null) значения не учитываются. |
|
|
Возвращает минимальное значение в наборе. Пустые (null) значения не учитываются. |
|
|
Возвращает выборочное стандартное отклонение выражения. |
|
|
Возвращает стандартное отклонение совокупности выражения. |
|
|
Добавляет значения в набор и возвращает результирующую сумму. Пустые (null) значения не учитываются. |
|
|
Возвращает выборочный разброс выражения. |
|
|
Возвращает общий разброс выражения. |
COALESCE
Функция COALESCE возвращает в своих аргументах первое непустое значение поля.
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
Ниже приведен пример записей из таблицы Contact_Phone в базе геоданных:
|
Имя |
Business_Phone |
Cell_Phone |
Home_Phone |
|---|---|---|---|
|
Jeff |
531-2531 |
622-7813 |
565-9901 |
|
Laura |
|
772-5588 |
312-4088 |
|
Peter |
|
|
594-7477 |
Включение функции COALESCE в выражение приводит к следующему выводу:
|
Имя |
Contact_Phone |
|---|---|
|
Jeff |
531-2531 |
|
Laura |
772-5588 |
|
Peter |
594-7477 |
NULLIF
Функция NULLIF возвращает значение NULL в том случае, если два представленных параметра равны; иначе, возвращается значение первого параметра.
SELECT Location, NULLIF(Sales, Forecast) AS Results
FROM StoreSales
Ниже приведен пример значений полей Местоположение, Продажи и Прогноз таблицы StoreSales:
|
Местоположение |
Продажи |
Прогноз |
|---|---|---|
|
Редландс |
39000 |
55000 |
|
Палм-Спрингс |
60000 |
61000 |
|
Риверсайд |
40000 |
40000 |
Выполнение выражения с функцией NULLIF в таблице StoreSales возвращает следующие результаты:
|
Местоположение |
Результаты |
|---|---|
|
Редландс |
39000 |
|
Палм-Спрингс |
60000 |
|
Риверсайд |
NULL |
Условия
Условия работают как фильтры, которые ограничивают, упорядочивают или изменяют результаты выражения запроса.
GROUP BY
Условие GROUP BY используется для сбора данных из нескольких записей и группировки результатов по одному или нескольким столбцам.
Следующее выражение суммирует (добавляет) все значения в поле POP1990 в таблице округов и группирует значения по штату. Значения также возвращаются в возрастающем алфавитном порядке по названию штата.
SELECT state_name, SUM(POP1990) AS TotalPopulation
FROM counties
GROUP BY STATE_NAME
ORDER BY STATE_NAME
Условия GROUP BY могут включать в себя функции агрегирования такие, как MIN, MAX и SUM.
HAVING
Используйте условие HAVING с функцией агрегирования вместо условия WHERE.
В следующем примере функция агрегирования MAX используется для возврата самой высокой зарплаты, хранящейся в таблице сотрудников. Условие HAVING ограничивает значение до максимального значения ниже 50000.
SELECT department, MAX(salary) AS Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000
Условия JOIN
Условия JOIN возвращают объединенные записи из двух или более таблиц.
CROSS JOIN
В следующем примере возвращается каждая строка в таблице table1, совпадающая с каждой строкой в таблице table2, и каждая строка в таблице table2, совпадающая с каждой строкой в таблице table1. Если таблица table1 содержит 100 строк, а таблица table2 — 1000 строк, будет возвращено 100000 строк. Этот тип соединения следует использовать осторожно, так как количество возвращаемых строк быстро увеличивается.
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1
CROSS JOIN Table2
INNER JOIN
Следующее выражение возвращает строки из обеих таблиц, если значения ключей (Table1.C1, Table2.C3) совпадают. Никакие другие строки не будут возвращены ни из одной таблицы.
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3
LEFT OUTER JOIN
Следующее выражение возвращает все строки из левой таблицы (Table1) и только строки из правой таблицы (Table2), если значения ключей совпадают (Table1.C1, Table2.C3).
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
RIGHT OUTER JOIN
Следующее выражение возвращает все строки из правой таблицы (Table2) и только те строки из левой таблицы (Table1), для которых значения ключей совпадают (Table1.C1, Table2.C3).
SELECT * FROM Table1
RIGHT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
ORDER BY
Условие ORDER BY определяет порядок сортировки. Порядок может быть по возрастанию (ASC) или по убыванию (DESC). По умолчанию значения сортируются по возрастанию.
Вы также можете указать параметры сортировки при использовании условия ORDER BY. Аргументы типа сопоставления включают следующее:
BINARY(BIN)- Двоичная сортировка учитывает регистр и диакритические знаки. При использовании этого аргумента сопоставления, строчные буквы сортируются раньше своих версий в верхнем регистре при сортировке в возрастающем алфавитном порядке, а диакритические знаки сортируются раньше букв при сортировке в возрастающем алфавитном порядке. Вы можете задать либоBINARY, либоBINв запросе.CASESENSITIVE(CASE)- сортировка с учетом регистра различает буквы верхнего и нижнего регистров. Когда вы используете этот аргумент сопоставления, строчные буквы сортируются раньше своих версий в верхнем регистре. Вы можете задать либоCASESENSITIVE, либоCASEв запросе.NOCASESENSITIVE(NOCASE)- аргументNOCASEне различает буквы верхнего и нижнего регистра, что обозначает факт игнорирования регистра при порядке сортировки. Вы можете задать либоNOCASESENSITIVE, либоNOCASEв запросе.
Примечание:
Вы не можете использовать условие ORDER BY при определении представления.
Ниже приведены примеры использования условия ORDER BY:
Значения будут возвращены в возрастающем алфавитном порядке по названию штата.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
Значения будут возвращены в возрастающем алфавитном порядке по названию штата, причем сначала будут возвращены имена в верхнем регистре.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
COLLATE CASE DESC
Операторы
Приведенные ниже операторы поддерживаются файловыми базами геоданных
Арифметические операторы
Используйте арифметический оператор для сложения, вычитания, умножения и деления числовых значений.
|
* |
Арифметический оператор умножения |
|
/ |
Арифметический оператор деления |
|
+ |
Арифметический оператор сложения |
|
|
Арифметический оператор вычитания |
SIMILAR TO
SIMILAR TO оператор сравнения, который оценивает строковые значения и возвращает true или false.
Следующий пример запроса оценивает значения в поле state_name и возвращает true, если слово North появляется в начале любого значения в этом поле, или возвращает false, если ни одно значение в поле state_name не начинается со слова North.
SELECT state_name
FROM counties
WHERE state_name SIMILAR TO 'North%'
Примечание:
Значения, начинающиеся со слова north (с маленькой буквы n), будут возвращены false для приведенного выше примера, поскольку сравнение строк чувствительно к регистру.