Puede utilizar consultas SQL para acceder a datos de una geodatabase de archivos y analizarlos.
En las secciones siguientes se proporcionan descripciones y ejemplos de expresiones SQL, funciones, operadores, palabras clave y cláusulas que pueden utilizarse para consultar tablas, clases de entidad y vistas de las geodatabases de archivos.
Alias
Puede utilizar la palabra clave AS para especificar un alias para un nombre de campo, un nombre de tabla o los valores que devuelve la consulta SQL. Esto proporciona una salida más comprensible.
En el siguiente ejemplo de uso de la palabra clave AS, el resultado de restar los valores de la columna POP1990 de los valores de la columna POP1997 se devuelven con el alias PopChange.
SELECT COUNTY_NAME, POP1997 - POP1990 AS PopChange
FROM counties
ORDER BY COUNTY_NAME
Expresiones CASE
La expresión CASE evalúa una lista de expresiones condicionales especificada y devuelve resultados basados en esas expresiones.
La sentencia siguiente incluye un conjunto de condiciones de una expresión CASE que devuelve las palabras bajo, promedio o alto, dependiendo de los valores salariales.
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
Funciones
A continuación se muestra la lista de funciones admitidas por las geodatabases de archivos.
Funciones de fecha
Las funciones de fecha devuelven valores de fecha y hora.
CURRENT_DATE | Devuelve la fecha actual proporcionada por el sistema operativo del equipo en el que se ejecuta la consulta SQL. |
EXTRACT (extract_field FROM extract_source) | Devuelve la parte de la expresión de fecha y hora (expresada como extract_source) basada en la palabra clave especificada para el argumento extract_field. El argumento extract_field puede ser una de las siguientes palabras clave: YEAR, MONTH, DAY, HOUR, MINUTE o SECOND. |
CURRENT TIME | Devuelve la hora actual proporcionada por el sistema operativo del equipo en el que se ejecuta la consulta SQL. |
CURRENT_TIMESTAMP | Devuelve la fecha y la hora actuales proporcionadas por el sistema operativo del equipo en el que se ejecuta la consulta SQL. |
Funciones numéricas
Las funciones numéricas realizan operaciones en valores numéricos. Todas las funciones numéricas devuelven un valor numérico.
Los argumentos expresados como numeric_exp, float_exp o integer_exp pueden ser el nombre de una columna, el resultado de otra función escalar o un literal numérico, donde los tipos de datos subyacentes pueden representarse como un tipo numérico.
ABS (numeric_exp) | Devuelve el valor absoluto del número expresado en el argumento numeric_exp. |
ACOS (float_exp) | Devuelve el valor de arcocoseno del número expresado en el argumento float_exp. El valor devuelto es un ángulo expresado en radianes. |
ASIN (float_exp) | Devuelve el valor de arcoseno del número expresado en el argumento float_exp. El valor devuelto es un ángulo expresado en radianes. |
ATAN (float_exp) | Devuelve el valor de arcotangente del número expresado en el argumento float_exp. El valor devuelto es un ángulo expresado en radianes. |
CEILING (numeric_exp) | Devuelve el entero más pequeño mayor o igual que el valor expresado en el argumento numeric_exp. |
COS (float_exp) | Devuelve el valor de coseno del ángulo (en radianes) expresado en el argumento float_exp. |
FLOOR (numeric_exp) | Devuelve el entero más grande menor o igual que el valor expresado en el argumento numeric_exp. |
LOG (float_exp) | Devuelve el logaritmo natural del valor expresado en el argumento float_exp. |
LOG10 (float_exp) | Devuelve el logaritmo de base 10 del valor expresado en el argumento float_exp. |
MOD (integer_exp1, integer_exp2) | Divide el valor de integer_exp1 entre el valor de integer_exp2 y devuelve el resto. |
POWER (numeric_exp, integer_exp) | Devuelve el valor de numeric_exp a la potencia de integer_exp. |
ROUND (numeric_exp, integer_exp) | Devuelve el valor de numeric_exp redondeado al número de posiciones a la derecha del punto decimal que se expresa en el argumento integer_exp. Si el valor expresado como integer_exp es negativo, el valor de numeric_exp se redondea a |integer_exp| posiciones a la izquierda del punto decimal. |
SIGN (numeric_exp) | Devuelve un indicador del signo (positivo, negativo o cero) del valor expresado en el argumento numeric_exp. Si el valor de numeric_exp es menor que cero, se devuelve -1. Si el valor de numeric_exp es igual a cero, se devuelve 0. Si el valor de numeric_exp es mayor que cero, se devuelve 1. |
SIN (float_exp) | Devuelve el seno del valor de float_exp, donde float_exp es un ángulo expresado en radianes. |
TAN (float_exp) | Devuelve la tangente del valor de float_exp, donde float_exp es un ángulo expresado en radianes. |
TRUNCATE (numeric_exp, integer_exp) | Devuelve el valor de numeric_exp truncado al número de posiciones a la derecha del punto decimal que se expresa en el argumento integer_exp. Si el valor de integer_exp es negativo, el valor de numeric_exp se trunca a |integer_exp| posiciones a la izquierda del punto decimal. |
Funciones de cadena
Las funciones de cadena de caracteres realizan operaciones en valores de cadena de caracteres (caracteres de texto).
Los argumentos expresados como string_exp pueden ser el nombre de una columna, una cadena de caracteres literal o el resultado de otra función escalar, donde el tipo de datos subyacente se puede representar como un tipo de carácter.
Los argumentos expresados como character_exp son cadenas de caracteres de longitud variable.
Los argumentos expresados como start o length pueden ser literales numéricos o el resultado de otra función escalar, donde el tipo de datos subyacentes se puede representar como un tipo numérico.
Estas funciones de cadena están basadas en 1; es decir, el primer carácter de la cadena es el número 1.
CHAR_LENGTH (string_exp) | Devuelve la longitud en caracteres de la expresión de cadena. |
CONCAT (string_exp1, string_exp2) | Devuelve una cadena de caracteres que es el resultado de la concatenación del texto de string_exp2 con el texto de string_exp1. |
LOWER (string_exp) | Devuelve una cadena de caracteres equivalente a la del argumento string_exp, con todos los caracteres en mayúsculas convertidos en minúsculas. |
POSITION (character_exp IN character_exp) | Devuelve la posición de la primera expresión de carácter en la segunda expresión de carácter. El resultado es un número exacto con una precisión definida por implementación y una escala de cero. |
SUBSTRING (string_exp FROM start FOR length) | Devuelve una cadena de caracteres derivada del texto representado por el argumento string_exp, que comienza en la posición de carácter especificada por el argumento start y continúa con el número de caracteres especificado por el argumento length. |
TRIM (BOTH | LEADING | TRAILING trim_character FROM string_exp) | Devuelve el texto especificado para el argumento string_exp con el carácter especificado por el argumento trim_character quitado del extremo inicial, del extremo final o de ambos extremos de la cadena. |
UPPER (string_exp) | Devuelve una cadena de caracteres equivalente a la del argumento string_exp, con todos los caracteres en minúsculas convertidos en mayúsculas. |
Funciones de agregación
Utilice una función de agregación para realizar un cálculo en un conjunto específico de valores con el fin de que se devuelva un solo valor que sea resultado de ese cálculo.
AVG | Calcula el promedio de todos los valores del conjunto. Se ignoran los valores nulos. |
COUNT(*), COUNT(expression) | COUNT(*) devuelve el número de registros en una tabla. Se incluyen valores nulos. COUNT(expression) devuelve el número de valores en la expresión especificada. Se ignoran los nulos. |
MAX | Devuelve el valor máximo del conjunto. Se ignoran los valores nulos. |
MIN | Devuelve el valor mínimo del conjunto. Se ignoran los valores nulos. |
STDDEV, STDDEV_SAMP | Devuelve la muestra la desviación estándar de la expresión. |
STDDEV_POP | Devuelve la desviación de población estándar de la expresión. |
SUM | Agrega los valores del conjunto y devuelve la suma resultante. Se ignoran los valores nulos. |
VAR, VAR_SAMP | Devuelve la varianza de muestra de la expresión. |
VAR_POP | Devuelve la varianza de población de la expresión. |
FUSIÓN
La función COALESCE devuelve el primer valor de campo no nulo entre sus argumentos.
SELECT Name, COALESCE(Business_Phone, Cell_Phone, Home_Phone)
Contact_Phone
FROM Contact_Info
El siguiente es un ejemplo de registros de la tabla Contact_Phone table de la geodatabase:
Nombre | Business_Phone | Cell_Phone | Home_Phone |
---|---|---|---|
Jeff | 531-2531 | 622-7813 | 565-9901 |
Laura | NULL | 772-5588 | 312-4088 |
Peter | NULL | NULL | 594-7477 |
La inclusión de la función COALESCE en la expresión genera la salida siguiente:
Nombre | Contact_Phone |
---|---|
Jeff | 531-2531 |
Laura | 772-5588 |
Peter | 594-7477 |
NULLIF
La función NULLIF devuelve NULO si los dos parámetros proporcionados son iguales; de lo contrario, se devuelve el valor del primer parámetro.
SELECT Location, NULLIF(Sales, Forecast) AS Results
FROM StoreSales
El siguiente es un ejemplo de los valores de los campos de ubicación, ventas y previsión de la tabla StoreSales:
Ubicación | Ventas | Previsión |
---|---|---|
Redlands | 39000 | 55000 |
Palm Springs | 60000 | 61000 |
Riverside | 40000 | 40000 |
La ejecución de la expresión con una función NULLIF de la tabla StoreSales devuelve los resultados siguientes:
Ubicación | Resultados |
---|---|
Redlands | 39000 |
Palm Springs | 60000 |
Riverside | NULO |
Cláusulas
Las cláusulas funcionan como filtros que restringen, ordenan o modifican los resultados de una expresión de consulta.
AGRUPAR POR
La cláusula GROUP BY se utiliza para capturar datos en varios registros y agrupar los resultados por una o más columnas
La sentencia siguiente resume (agrega) todos los valores del campo POP1990 de la tabla de condados y agrupa los valores por estado. Los valores también se devuelven en orden alfabético ascendente por nombre de estado.
SELECT state_name, SUM(POP1990) AS TotalPopulation
FROM counties
GROUP BY STATE_NAME
ORDER BY STATE_NAME
Las cláusulas GROUP BY pueden incluir funciones de agregación como MIN, MAX y SUM.
TENER
Use la cláusula HAVING con funciones de agregación en lugar de una cláusula WHERE.
En el ejemplo siguiente, la función de agregación MAX se utiliza para devolver el salario más alto almacenado en la tabla de empleados. La cláusula HAVING restringe el valor al valor máximo por debajo de 50000.
SELECT department, MAX(salary) AS Highest_salary
FROM employees
GROUP BY department HAVING MAX(salary) < 50000
Cláusulas UNIÓN
Las cláusulas JOIN devuelven los registros combinados de dos o más tablas.
UNIÓN DE CRUCE
En el ejemplo siguiente se devuelve todas las filas de la tabla 1 asociadas a cada fila de la tabla 2 y cada fila de la tabla 2 asociada a cada fila de la tabla 1. Si la tabla 1 contiene 100 filas y la tabla 2 contiene 1000 filas, se devuelven 100.000 filas. Este tipo de unión debería utilizarse con precaución, ya que el número de filas que se devuelve aumentará con rapidez.
SELECT Table1.name, Table1.Address, Table2.name, Table2.Salary
FROM Table1
CROSS JOIN Table2
UNIÓN INTERNA
La sentencia siguiente devuelve las filas de ambas tablas cuando los valores clave (Tabla 1.C1, Tabla 2.C3) coinciden. No se devolverán filas de ninguna otra tabla.
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
INNER JOIN Table2 ON Table1.C1 = Table2.C3
UNIÓN EXTERNA IZQUIERDA
La sentencia siguiente devuelve todas las filas de la tabla izquierda (Tabla 1) y solo las filas de la tabla derecha (Tabla 2) cuando los valores clave coinciden (Tabla 1.C1, Tabla 2.C3).
SELECT Table1.C1, Table1.C2, Table2.C3, Table2.C4
FROM Table1
LEFT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
UNIÓN EXTERNA DERECHA
Esta sentencia devuelve todas las filas de la tabla derecha (Tabla 2) y solamente las filas de la tabla izquierda (Tabla 1) cuando los valores clave coinciden (Tabla 1.C1, Tabla 2.C3).
SELECT * FROM Table1
RIGHT OUTER JOIN Table2 ON Table1.C1 = Table2.C3
ORDENAR POR
La cláusula ORDER BY especifica el orden de clasificación. El orden puede ser ascendente (ASC) o descendente (DESC). Los valores se clasifican en orden ascendente de forma predeterminada.
También puede especificar una intercalación cuando se utiliza la cláusula ORDER BY. En los argumentos de tipo de intercalación se incluye lo siguiente:
- BINARY(BIN): la intercalación binaria es sensible tanto al caso como al acento. Cuando se utiliza este argumento de intercalación, las letras en minúscula se ordenan antes que su versión en mayúscula al clasificar en orden ascendente, y los acentos se ordenan antes que las letras al clasificar en orden ascendente. En la consulta puede especificar BINARY o BIN.
- CASESENSITIVE(CASE): la intercalación sensible al caso distingue entre letras mayúsculas y minúsculas. Cuando utiliza el argumento de intercalación, las letras minúsculas se ordenan antes que sus versiones en mayúscula. En la consulta puede especificar CASESENSITIVE o CASE.
- NOCASESENSITIVE(NOCASE): el argumento NOCASE no distingue entre letras mayúsculas y minúsculas, lo que significa que ese caso se ignora en el orden de clasificación. En la consulta puede especificar NOCASESENSITIVE o NOCASE.
Nota:
No puede utilizar una cláusula ORDER BY al definir una vista.
A continuación, se muestran ejemplos de la cláusula ORDER BY:
Los valores se devolverán en orden alfabético ascendente por nombre de estado.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
Los valores se devolverán en orden alfabético descendente por nombre de estado, con los nombres en mayúscula delante.
SELECT STATE_NAME, POP1990
FROM counties
ORDER BY STATE_NAME
COLLATE CASE DESC
Operadores
Las geodatabases de archivos son compatibles con los siguientes operadores.
Operadores aritméticos
Utilice un operador aritmético para sumar, restar, multiplicar y dividir valores numéricos.
* | Operador aritmético para la multiplicación |
/ | Operador aritmético para la división |
+ | Operador aritmético para la suma |
- | Operador aritmético para la resta |
SIMILAR A
SIMILAR TO es un operador de comparación que evalúa los valores de cadena de caracteres y devuelve verdadero o falso.
En el ejemplo siguiente, la consulta evalúa los valores del campo state_name y devuelve true si la palabra Norte aparece al principio de cualquier valor del campo, o devuelve false si ningún valor del campo state_name comienza con la palabra Norte.
SELECT state_name
FROM counties
WHERE state_name SIMILAR TO 'North%'
Nota:
Los valores que empiezan con la palabra norte (con n en minúscula) devolverán false en el ejemplo anterior porque la comparación de cadena de caracteres es sensible al caso.