Referencia SQL de geodatabases de archivos

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:

NombreBusiness_PhoneCell_PhoneHome_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:

NombreContact_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ónVentasPrevisió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ónResultados

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.