jueves, 15 de abril de 2010

BIENVENIDOS TODOS A ESTE CAPITULO DE POSTGREES

REPUBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DE EDUCACION Y DEPORTE
ALDEA GRAN MARISCAL DE AYACUCHO
CAGUA ESTADO ARAGUA













Integrantes:
ANA BRITO
DANIELA PAEZ
ALEIDI GONZALEZ
GUSTAVO LAREZ
SECCION 1 DE INGENIERIA E INFORMATICA
PROF. ING. SONAYA COLINA


Cagua, 15 de Abril del 2010

EXPRESIONES POSTGREESSQL

Expresiones
SQL92 permite expresiones para transformar datos en tablas.Las expresiones pueden contener operadores (ver Operadores para más detalles) y funciones (Funciones tiene más información).
Una expresión es una de las siguientes:
( a_expr )
constantes
atributos
a_expr binary_operator a_expr
a_expr right_unary_operator
left_unary_operator a_expr
parametros
expresiones funcionales
expresiones de agregación
Nosotros ya hemos hablado de las constantes y atributos. Las tres clases de expresiones de operadores son respectivamente operadores binarios (infijo), unarios por la derecha (sufijo) y unarios por la izquierda (prefijo). Las siguientes secciones hablan de la distintas opciones.
Parámetros
Un Parámetro se usa para indicar un parámetro en una función SQL. Típicamente este es el uso de la definición de la declaración de la función SQL. La forma con paréntesis es:
$number

Por ejemplo, consideramos la definición de la función, dept, como
CREATE FUNCTION dept (name)
RETURNS dept
AS 'select * from
dept where name=$1'
LANGUAGE 'sql';

Expresiones Funcionales
Una Expresión Funcional es el nombre de una función legal SQL, seguida por sus lista de argumentos entre paréntesis:
function (a_expr [, a_expr ... ] )

Por ejemplo, el siguiente calcula la raíz cuadrada del salario de un empleado:
sqrt(emp.salary)

Expresiones de Agregación
Una expresión de agregación representa la aplicación de una función de agregación a través de las filas seleccionadas por la consulta. Una función de agregación reduce múltiples entradas a un solo valor de salida, como la suma o la media de la entrada. La sintaxis de la expresión de agregación es la siguiente:
aggregate_name (expression)
aggregate_name (ALL expression)
aggregate_name (DISTINCT expression)
aggregate_name ( * )
Donde aggregate_name es la agregación previamente definida, y expressiones cualquier expresión que no contenga a su vez ninguna expresión de agregación.
La primera forma de expresión de agregación llama a la agregación a través de todas las filas de entrada la expresión devuelve un valor no nulo. La segunda forma es similar a la primera, pero ALL es por defecto. La tercera forma llama a la agregación para todas las filas de entrada con valores distintos entre si y no nulo. La última forma llama a la agregación para cada una de las filas de entrada sean con valor nulo o no; si no se especifica un valor específico de entrada, generalmente sólo es útil para la agregación count().
Por ejemplo, count(*) devuelve el número total de filas de entrada; count(f1) devuelve el número de filas de entrada donde f1 no es nulo; count(distinct f1) devuelve el número de distintos valores no nulos de f1.
Lista Objetivo
Una Lista Objetivo es una lista de uno o más elementos separados por comas y entre paréntesis, cada una debe ser de la forma:
a_expr [ AS result_attname ]

Donde result_attname es el nombre del atributo que ha sido creado (o el nombre del atributo que ya existía en el caso de una sentencia de actualización.) Si result_attname no está presente, entonces a_expr debe contener sólo un nombre de atributo el cual se asumirá como el nombre del campo resultado. Sólo se usa el nombrado por defecto en Postgres si a_expr es un atributo.
Calificadores
Un calificador consiste en cualquier número de cláusulas conectadas por operadores lógicos:
NOT
AND
OR
Una cláusula es un a_expr que se evalúa como un boolean sobre el conjunto de instancias.
Lista From
La Lista From es una lista de expresiones from. separadas por comas. Cada "expresión from " es de esta forma:
[ class_reference ] instance_variable
{, [ class_ref ] instance_variable... }

Donde class_reference es de la forma
class_name [ * ]

La "expresión from" define una o más variables instancia sobre el rango que la clase indica en class_reference. Uno también puede requerir la variable instancia sobre el rango de todas la clases que están por debajo de las clases indicadas en la jerarquía de herencia especificando el designador asterisco ("*").
Next: INSERT Up: Crear Previous: VACUUM Índice General Índice de Materias
Tipos de datos relevantes en PostgreSQL
Como todos los manejadores de bases de datos, PostgreSQL implementa los tipos de datos definidos para el estándar SQL3 y aumenta algunos otros. Los definidos por el estándar SQL3 se muestran en la tabla 8.1, mientras que las extensiones se encuentran en la tabla 8.2.

Tabla: Tipos de datos del estándar SQL3 en PostgreSQL
Tipos de datos del estándar SQL3 en PostgreSQL
Tipo en Postgres
Correspondiente en SQL3
Descripción
bool
boolean
valor lógico o booleano (true/false)
char(n)
character(n)
cadena de carácteres de tamaño fijo
date
date
fecha (sin hora)
float4/8
float(86#86)
número de punto flotante con precisión 86#86
float8
real, double precision
número de punto flotante de doble precisión
int2
smallint
entero de dos bytes con signo
int4
int, integer
entero de cuatro bytes con signo
int4
decimal(87#87)
número exacto con 88#88
int4
numeric(87#87)
número exacto con 89#89
money
decimal(9,2)
cantidad monetaria
time
time
hora en horas, minutos, segundos y centésimas
timespan
interval
intervalo de tiempo
timestamp
timestamp with time zone
fecha y hora con zonificación
varchar(n)
character varying(n)
cadena de carácteres de tamaño variable


Tabla 8.2: Tipos de datos extendidos por PostgreSQL
Tipos de datos extendidos en PostgreSQL
Tipo
Descripción
box
caja rectangular en el plano
cidr
dirección de red o de host en IP versión 4
circle
círculo en el plano
inet
dirección de red o de host en IP versión 4
int8
entero de ocho bytes con signo
line
línea infinita en el plano
lseg
segmento de línea en el plano
path
trayectoria geométrica, abierta o cerrada, en el plano
point
punto geométrico en el plano
polygon
trayectoria geométrica cerrada en el plano
serial
identificador numerico único


Tabla 8.3: Tipos de datos de PostgreSQL
Tipo
Descripción
SET
conjunto de tuplas
abstime
fecha y hora absoluta de rango limitado (Unix system time)
aclitem
lista de control de acceso
bool
booleano 'true'/'false'
box
rectángulo geométrico '(izquierda abajo, derecha arriba)'
bpchar
carácteres rellenos con espacios, longitud especificada al momento de creación
bytea
arreglo de bytes de longitud variable
char
un sólo carácter
cid
command identifier type, identificador de secuencia en transacciones
cidr
dirección de red
circle
círculo geométrico '(centro, radio)'
date
fecha ANSI SQL 'aaaa-mm-dd'
datetime
fecha y hora 'aaaa-mm-dd hh:mm:ss'
filename
nombre de archivo usado en tablas del sistema
float4
número real de precisión simple de 4 bytes
float8
número real de precisión doble de 8 bytes
inet
dirección de red
int2
número entero de dos bytes, de -32k a 32k
int28
8 numeros enteros de 2 bytes, usado internamente
int4
número entero de 4 bytes, -2B to 2B
int8
número entero de 8 bytes, 90#9018 dígitos
line
línea geométrica '(pt1, pt2)'
lseg
segmento de línea geométrica '(pt1, pt2)'
macaddr
dirección MAC
money
unidad monetaria '$d,ddd.cc'
name
tipo de 31 carácteres para guardar identificadores del sistema
numeric
número de precisión múltiple
oid
tipo de identificación de objetos
oid8
arreglo de 8 oids, utilizado en tablas del sistema
path
trayectoria geométrica '(pt1, ...)'
point
punto geométrico '(x, y)'
polygon
polígono geométrico '(pt1, ...)'
regproc
procedimiento registrado
reltime
intervalo de tiempo de rango limitado y relativo (Unix delta time)
smgr
manejador de almacenamiento (storage manager)
text
cadena de carácteres nativa de longitud variable
tid
tipo de identificador de tupla, localización física de tupla
time
hora ANSI SQL 'hh:mm:ss'
timespan
intervalo de tiempo '@ '
timestamp
fecha y hora en formato ISO de rango limitado
tinterval
intervalo de tiempo '(abstime, abstime)'
unknown
tipo desconocido
varchar
cadena de carácteres sin espacios al final, longitud especificada al momento de creación
xid
identificador de transacción

Diferencia y similitudes entre
TIPOS DE DATOS
MySQL
PostgreSQL

bigint
bigint

double, decimal, float
numeric

int, mediumint
integer

smallint, tinyint
smallint

char
character

varchar, enum, set
character varying

longtext, mediumtext, text, tinytext
text

tinyblob, blob, mediumblob, longblob
bytea

datetime, timestamp
timestamp

time, date, year
date



















Tipos de datos.

Estos son los tipos de datos que soporta el SQL de Microsoft® Jet versión 4.0
Los sinónimos son palabras equivalentes al tipo de dato indicado.
El tamaño indica cuánto ocupará una columna del tipo indicado.

Tipo de dato
Sinónimos
Tamaño
Descripción
BINARY
VARBINARYBINARY VARYINGBIT VARYING
1 byte por carácter
Se puede almacenar cualquier tipo de datos en un campo de este tipo. Los datos no se traducen (por ejemplo, a texto). La forma en que se introducen los datos en un campo binario indica cómo aparecerán al mostrarlos.
BIT
BOOLEANLOGICALLOGICAL1YESNO
1 byte
Valores Sí y No, y campos que contienen solamente uno de dos valores.
TINYINT
INTEGER1BYTE
1 byte
Un número entero entre 0 y 255.
COUNTER
AUTOINCREMENT

Se utiliza para campos contadores cuyo valor se incrementa automáticamente al crear un nuevo registro.
MONEY
CURRENCY
8 bytes
Un número entero comprendido entre – 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME
DATETIME
8 bytes
Una valor de fecha u hora entre los años 100 y 9999
UNIQUEIDENTIFIER
GUID
128 bits
Un número de identificación único utilizado con llamadas a procedimientos remotos.
DECIMAL
NUMERICDEC
17 bytes
Un tipo de datos numérico exacto con valores comprendidos entre 1028 - 1 y - 1028 - 1. Puede definir la precisión (1 - 28) y la escala (0 - precisión definida). La precisión y la escala predeterminadas son 18 y 0, respectivamente.
REAL
SINGLEFLOAT4IEEESINGLE
4 bytes
Un valor de coma flotante de precisión simple con un intervalo comprendido entre – 3,402823E38 y – 1,401298E-45 para valores negativos, y desde 1,401298E-45 a 3,402823E38 para valores positivos, y 0.
FLOAT
DOUBLEFLOAT8IEEEDOUBLENUMBER
8 bytes
Un valor de coma flotante de precisión doble con un intervalo comprendido entre – 1,79769313486232E308 y – 4,94065645841247E-324 para valores negativos, y desde 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos, y 0.
SMALLINT
SHORTINTEGER2
2 bytes
Un entero corto entre – 32.768 y 32.767.
INTEGER
LONGINTINTEGER4
4 bytes
Un entero largo entre – 2.147.483.648 y 2.147.483.647.
IMAGE
LONGBINARYGENERALOLEOBJECT
Lo que se requiera
Desde cero hasta un máximo de 2.14 gigabytes.Se utiliza para objetos OLE.
TEXT
LONGTEXTLONGCHARMEMONOTENTEXT
2 bytes por carácter. (Consulte las notas).
Desde cero hasta un máximo de 2.14 gigabytes.
CHAR
TEXT(n)ALPHANUMERICCHARACTERSTRINGVARCHARCHARACTER VARYINGNCHARNATIONAL CHARACTERNATIONAL CHARNATIONAL CHARACTER VARYINGNATIONAL CHAR VARYING
2 bytes por carácter. (Consulte las notas).
Desde cero a 255 caracteres.

Notas:
Un campo LONGTEXT se almacena siempre en el formato de representación Unicode.
Si se utiliza el nombre del tipo de datos TEXT sin especificar la longitud opcional (TEXT(25), por ejemplo), se crea un campo LONGTEXT. Esto permite escribir instrucciones CREATE TABLE que producirán tipos de datos coherentes con Microsoft SQL Server.
Un campo CHAR se almacena siempre en el formato de representación Unicode, que es el equivalente del tipo de datos NATIONAL CHAR del SQL de ANSI.
Si se utiliza el nombre del tipo de datos TEXT y se especifica la longitud opcional (TEXT(25), por ejemplo), el tipo de datos del campo es equivalente al tipo de datos CHAR. De ese modo, se mantiene la compatibilidad con versiones anteriores para la mayoría de las aplicaciones de Microsoft Jet, a la vez que se habilita el tipo de datos TEXT (sin especificación de longitud) para la alineación con Microsoft SQL Server.
Los caracteres de los campos definidos como TEXT (también conocidos como MEMO) o CHAR (también conocidos como TEXT(n) con una longitud específica) se almacenan en el formato de representación Unicode. Los caracteres Unicode requieren siempre dos bytes para el almacenamiento de cada carácter. Para las bases de datos de Microsoft Jet ya existentes que contengan principalmente datos de tipo carácter, esto puede significar que el tamaño del archivo de base de datos sea casi el doble cuando se convierta al formato Microsoft Jet 4.0. Sin embargo, la representación Unicode de muchos juegos de caracteres, antes denominados juegos de caracteres de un solo byte (SBCS), puede comprimirse fácilmente a caracteres de un solo byte. Si define una columna CHAR con el atributo COMPRESSION, los datos se comprimirán automáticamente a medida que se almacenen y se descomprimirán cuando se recuperen de la columna.

CAMPOS/COLUMNAS/ TIPOS DE DATOS

Campos y Columnas
****Campos
Un Campo es cualquier atributo de una clase dada o uno de lo siguiente:
oid
el identificador único de la instancia que añade Postgres a todas las instancias automáticamente. Los Oids no son reutilizable y tienen una longitud de 32 bits.
xmin
El identificador de la transacción insertada.
xmax
El identificador de la transacción borrada.
cmin
El identificador del comando dentro de la transacción.
cmax
El identificador del comando borrado.
Para más información de estos campos consultar Stonebraker, Hanson, Hong, 1987. El tiempo está representado internamente como una instancia del tipo dato abstime. Los identificadores de las transacciones y comandos son de 32 bits. Las transacciones se asignan secuencialmente empezando por 512.
****Columnas
Una columna se construye de esta forma:
instance{.composite_field}.field `['number`]'

Unainstance identifica una clase concreta y podemos entenderla como un particularización de las instancias de esta clase. Cada nombre de variable es una variable instancia, un sustituto de la clase definida por el significado de la cláusula FROM, o la palabra clave NEW o CURRENT. NEW y CURRENT sólo pueden aparecer en una tramo de la acción de la regla, mientras otras variables de instancia pueden usarse en cualquier declaración SQL. composite_field un campo de uno de los tipos compuestos de Postgres, mientras que los sucesivos campos direccionan los atributos de la clase/es que evalúa los campo compuesto. Finalmente field es un campo normal (tipo base) de la última clase/s direccionada. Si field es de tipo array, entonces el designador opcional number indica el elemento especifico del array. Si no se indica el número, entonces se devolverán todos los elementos del array.
Tipos de datos
Tabla de Contenidos
Tipos numéricos
Tipo Monetario
Tipos de caracteres
Fecha / Hora Tipos
Tipo booleano
Tipos geométricos
IP versión 4 redes y direcciones de host
Describe los tipos integrados de datos disponibles en Postgres.
Postgres tiene un rico conjunto de tipos de datos nativos disponibles para los usuarios. Los usuarios pueden añadir nuevos tipos de Postgres utilizando el DEFINE TIPO Mando descrito en otra parte.
En el contexto de tipos de datos, las siguientes secciones discutiremos SQL Cumplimiento de los estándares, portando cuestiones, y su uso. Algunos Postgres tipos se corresponden directamente con SQL92tipos compatibles. En otros casos, los tipos de datos definidos por SQL92 la sintaxis se asignan directamente a nativos Postgres tipos. Muchos de los tipos integrados han obvio formatos externos. Sin embargo, varios tipos son únicas para Postgres, Tales como caminos abiertos y cerrados, o tienen varias posibilidades de formatos, tales como la fecha y hora.


Tabla 3-1. Postgres Tipos de datos
Postgres Tipo
SQL92 o SQL3 Tipo
Descripción
bool
booleano
booleano lógico (verdadero / falso)
caja

caja rectangular en el plano 2D
char (n)
carácter (n)
de longitud fija cadena de caracteres
cidr

IP versión 4 de red o dirección de host
círculo

círculo en el plano 2D
fecha
fecha
calendario de la fecha sin la hora del día
decimal
p decimal (, s)
numérico exacto de p <= 9, s = 0 float4 / 8 flotador (p) número de punto flotante de precisión con p float8 la precisión real, doble de doble precisión número de punto flotante inet IP versión 4 de red o dirección de host int2 smallint entero con signo de dos bytes int4 int, entero entero con signo de 4 bytes int8 entero con signo de 8-byte línea línea infinita en el plano 2D lseg segmento de línea en 2D plano dinero decimal (9,2) moneda al estilo estadounidense numérico p numérico (, s) numérico exacto de p == 9, s = 0 camino ruta geométricas abiertas y cerradas en 2D plano punto punto geométrico en el plano 2D polígono camino cerrado geométrica en 2D plano de serie ID exclusivo para la indexación y referencias cruzadas tiempo tiempo hora del día intervalo de tiempo intervalo de uso general lapso de tiempo fecha y hora fecha y hora con la zona horaria fecha / hora varchar (n) carácter variable (n) de longitud variable cadena de caracteres Tabla 3-1. Postgres Data Types Postgres Type SQL92 or SQL3 Type Description bool boolean logical boolean (true/false) box rectangular box in 2D plane char(n) character(n) fixed-length character string cidr IP version 4 network or host address circle circle in 2D plane date date calendar date without time of day decimal decimal(p,s) exact numeric for p <= 9, s = 0 float4/8 float(p) floating-point number with precision p float8 real, double precision double-precision floating-point number inet IP version 4 network or host address int2 smallint signed two-byte integer int4 int, integer signed 4-byte integer int8 signed 8-byte integer line infinite line in 2D plane lseg line segment in 2D plane money decimal(9,2) US-style currency numeric numeric(p,s) exact numeric for p == 9, s = 0 path open and closed geometric path in 2D plane point geometric point in 2D plane polygon closed geometric path in 2D plane serial unique id for indexing and cross-reference time time time of day timespan interval general-use time span timestamp timestamp with time zone date/time varchar(n) character varying(n) variable-length character string Nota: El cidr y inet tipos están diseñados para manejar cualquier tipo de propiedad intelectual, pero sólo IPv4 se maneja en la implementación actual. Todo aquí que habla de IPv4 a IPv6 se aplicará en una versión futura. Tabla 3-2. Postgres Función Constantes Postgres Función SQL92 Constante Descripción getpgusername () CURRENT_USER nombre de usuario en actual período de sesiones fecha ("ahora") CURRENT_DATE fecha de la transacción actual tiempo ("ahora") CURRENT_TIME momento de la transacción actual marca de tiempo ("ahora") CURRENT_TIMESTAMP fecha y hora de transacción actual Postgres tiene características en la vanguardia de ORDBMS el desarrollo. Además de SQL3 de conformidad, en partes importantes del SQL92 También se admiten. Aunque nos esforzamos por SQL92 el cumplimiento, hay algunos aspectos de la norma que son desproporcionados y que no deben vivir a través de normas posteriores. Postgres no se hacen grandes esfuerzos para cumplir con estas características, sin embargo, estos tienden a aplicar en los casos de poco uso o obsure, y un usuario típico no es probable que se ejecute en ellos. La mayoría de las funciones de entrada y de salida correspondientes a los tipos de base (por ejemplo, números enteros y números en coma flotante) Por qué algunos de comprobación de errores. Algunos de los operadores y las funciones (por ejemplo, la adición y multiplicación) no se realiza en tiempo de ejecución de comprobación de errores en aras de mejorar la velocidad de ejecución. En algunos sistemas, por ejemplo, los operadores numéricos para algunos tipos de datos en silencio puede refinado o desbordamiento. Tenga en cuenta que algunas de las funciones de entrada y salida no son invertibles. Es decir, el resultado de una función de salida puede retrasarse en comparación a la entrada original. Nota: El original Postgres v4.2 código recibido de Berkeley evadido todo flotante de doble precisión resultados apuntan a seis dígitos para la salida. A partir de v6.1, números de punto flotante pueden retener la mayor parte de la precisión intrínseca del tipo (normalmente de 15 dígitos en dobles, 6 dígitos de 4-byte flota). Otros tipos de campos se basa en coma flotante (por ejemplo, tipos geométricos) llevan precisión similar. Tipos numéricos
tipos numéricos constan de dos números enteros y cuatro bytes y de cuatro y números en coma flotante de ocho bytes de punto.
Tabla 3-3. Postgres Tipos numéricos
Tipo Numérico
Almacenamiento
Descripción
Intervalo
decimal
variable
la precisión especificada por el usuario
sin límite
float4
4 bytes
Variable de precisión
6 decimales
float8
8 bytes
Variable de precisión
15 decimales
int2
2 bytes
Fijo de precisión
-32768 Hasta 32767
int4
4 bytes
elección usual para fijos de precisión
-2147483648-2147483647
int8
8 bytes
Gama muy grandes fijos de precisión
+ / -> 18 decimales
numérico
variable
la precisión especificada por el usuario
sin límite
de serie
4 bytes
Identificador o referencias cruzadas
0 a 2147483647
Los tipos numéricos tienen un conjunto completo de operadores aritméticos y funciones correspondientes. Referirse a Operadores NUMERICOS y Funciones matemáticas para más información.
El int8 tipo no pueden estar disponibles en todas las plataformas, ya que cuenta con el apoyo del compilador para esto.
El tipo de serie
El de serie el tipo es un tipo especial de los casos construidos por Postgres de otros componentes existentes. Suele utilizarse para crear identificadores únicos para entradas de la tabla. En la implementación actual, especificando
CREATE TABLE nombretabla (COLNAME SERIE);

es equivalente a especificar:
CREATE SEQUENCE nombretabla_COLNAME_seq;
CREATE TABLE nombretabla
(COLNAME INT4 nextval DEFAULT ('nombretabla_COLNAME_seq ');
CREATE UNIQUE ÍNDICE nombretabla_COLNAME_key en nombretabla (COLNAME);

Tipo Monetario
Tipo obsoleto: El dinero ya está obsoleto. Uso numérico o decimal en su lugar.
El dinero Tipo de moneda apoya al estilo estadounidense con la representación de punto fijo de decimales. Si Postgres está compilado con USE_LOCALE luego el tipo de dinero deben utilizar las convenciones monetaria definida para locale (7).
Tabla 3-4. Postgres Tipos Monetario
Tipo Monetario
Almacenamiento
Descripción
Intervalo
dinero
4 bytes
Fijo de precisión
-21474836,48 A 21.474.836,47
numérico reemplazará el tipo de dinero, y deben preferirse.
Tipos de caracteres
SQL92 define dos tipos de personajes principales: char y varchar. Postgres apoya este tipo, además de la más general texto tipo, que a diferencia de varchar no requiere un límite superior que se declare en el tamaño del campo.
Tabla 3-5. Postgres Tipos de caracteres
Tipo de caracteres
Almacenamiento
Recomendación
Descripción
char
1 byte
SQL92Compatible con
carácter individual
char (n)
(4 + n) bytes
SQL92Compatible con
De longitud fija en blanco acolchada
texto
(4 + x) bytes
La mejor opción
De longitud variable
varchar (n)
(4 + n) bytes
SQL92Compatible con
De longitud variable con un límite
Hay otro tipo de carácter de longitud fija. El nombre tipo sólo tiene una finalidad, y que consiste en proporcionar Postgres con un tipo especial de usar para los nombres internos. No está diseñado para utilizarse por el usuario en general. Es la longitud se define actualmente como 32 caracteres, pero debe ser de referencia utilizando NAMEDATALEN. Esto se establece en tiempo de compilación y puede cambiar en una futura versión.
Tabla 3-6. Postgres Especialidad tipo de carácter
Tipo de caracteres
Almacenamiento
Descripción
nombre
32 bytes
Treinta y dos de tipo carácter interno
Fecha / Hora Tipos
PostgreSQL admite el conjunto completo de SQL fecha y hora.
Tabla 3-7. PostgreSQL Fecha / Hora Tipos
Tipo
Descripción
Almacenamiento
Primeras
Más reciente
Resolución
fecha y hora
para los datos que contienen tanto la fecha y hora
8 bytes
4713 a. C.
AD 1465001
los dígitos 1 microseg / 14
intervalo
de intervalos de tiempo
12 bytes
-178000000 Años
178000000 años
1 mircosecond
fecha
para los datos que contiene sólo las fechas
4 bytes
4713 a. C.
32767 AD
1 día
tiempo
para los datos que contiene sólo los tiempos de la jornada
4 bytes
00:00:00.00
23:59:59.99
1 microsegundo
Nota: Para garantizar la compatibilidad con versiones anteriores de PostgreSQL también continuará proporcionando fecha y hora (Equivalente a fecha y hora) Y intervalo de tiempo (Equivalente a intervalo). Los tipos abstime y reltime son más bajos tipos de precisión que se utilizan internamente. Usted está desaliente el uso de cualquiera de estos tipos en nuevas aplicaciones y mover más de los viejos cuando sea apropiado. Lo que sea de este tipo podría desaparecer en una versión futura.
Fecha / hora de entrada
Fecha y tiempo de entrada es aceptada en casi cualquier formato razonable, incluyendo ISO-Compatible, SQLCompatible, tradicional Postgres, Y otros. El orden de los meses y días en la entrada de la fecha puede ser ambigua, por lo tanto existe un entorno, para especificar cómo debe ser interpretado. El comando DateStyle SET "EE.UU." o AJUSTE AL DateStyle "no europeo" especifica la variante "El mes antes del día", El comando AJUSTE AL DateStyle "europeo" establece la variante "Días antes del mes". El primero es el valor predeterminado.
Ver Ayuda de Fecha / Hora para la reglas de análisis precisa de la fecha y hora de entrada y en las zonas horarias reconocidas.
Recuerde que cualquier fecha o la hora de entrada debe ser incluida dentro de comillas simples, como cadenas de texto.
fecha
Las siguientes son posibles aportes para la fecha tipo.
Tabla 3-8. PostgreSQL Fecha de entrada
Ejemplo
Descripción
8 de enero 1999
Inequívoca
1999-01-08
Formato ISO-8601, prefirió
1/8/1999
EE.UU.; el texto 1 de agosto en el modo Europea
8/1/1999
Europea; el texto 1 de agosto en el modo de EE.UU.
1/18/1999
EE.UU., debe decir 18 de enero como en cualquier modo
1999.008
Año y día del año
19990108
ISO-8601 año, mes, día
990108
ISO-8601 año, mes, día
1999.008
Año y día del año
99008
Año y día del año
8 de enero de 99 aC
Año 99 antes de nuestra era
Tabla 3-9. PostgreSQL Mes de las abreviaturas
Mes
Las abreviaturas
Abril
Abril
Agosto
Agosto
Diciembre
Diciembre
Febrero
Febrero
Enero
Jan
Julio
Julio
Junio
Junio
Marzo
Estropear
De noviembre
Noviembre
Octubre
Octubre
Septiembre
Septiembre, septiembre
Nota: El mes Mayo no tiene abreviatura explícita, por razones obvias.
Tabla 3-10. PostgreSQL Día de las abreviaturas Semana
Día
Abreviación
Domingo
Sol
Lunes
Lun
Martes
Mar, mar.
Miércoles
Miércoles, miércoles
Jueves
Jue, jue, jue.
Viernes
Vie
Sábado
Sáb
tiempo
Los siguientes son válidos tiempo insumos.
Tabla 3-11. PostgreSQL Tiempo de entrada
Ejemplo
Descripción
04:05:06.789
ISO-8601
04:05:06
ISO-8601
04:05
ISO-8601
040506
ISO-8601
04:05 AM
Igual 04:05; AM no afectar al valor de
04:05 PM
Igual que el 16:05, hora de entrada debe ser <= 12 z Igual 00:00:00 zulú Igual 00:00:00 allballs Igual 00:00:00 fecha y hora
Válido de entrada para el fecha y hora tipo consiste en una concatenación de una fecha y una hora, seguido por un facultativo AD o BC, Seguido por un huso horario opcional. (Ver más abajo.) Por lo tanto 1999-01-08 04:05:06 -8:00
es válido fecha y hora valor, que es ISOConforme. Además, el formato de gran difusión 8 de enero 1999 04:05:06 PST
es compatible.
Tabla 3-12. PostgreSQL Tiempo de entrada de la Zona
Zona horaria
Descripción
PST
Hora estándar del Pacífico
-8:00
ISO-8601 para compensar PST
-800
ISO-8601 para compensar PST
-8
ISO-8601 para compensar PST
intervalo
intervalos se puede especificar con la siguiente sintaxis: Dirección Unidad Cantidad [Unidad Cantidad ...] []@ Dirección Unidad Cantidad []
donde: Cantidad es ..., -1, 0, 1, 2, ...; Unidad es segundo, minuto, hora, día, semana, mes, año, década, siglo, milenio, O una abreviatura o plurales de estas unidades; Dirección puede ser hace o vacío.
Los valores especiales
Los siguientes SQLfunciones compatibles pueden utilizar como fecha o la hora de entrada para el tipo de datos correspondiente: CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP.
PostgreSQL también es compatible con varias constantes especiales para mayor comodidad.
Tabla 3-13. PostgresSQL Fecha Especial / constantes de tiempo
Constante
Descripción
corriente
tiempo de la transacción actual, en diferido
época
1970-01-01 00:00:00 00 (hora de Unix sistema de cero)
infinito
Más tarde que otras veces válida
-Infinito
Antes que en otros tiempos válida
inválido
Entrada ilegal
ahora
tiempo de la transacción actual
hoy
hoy medianoche
mañana
Medianoche de mañana
ayer
La medianoche de ayer
"Ahora" se resuelve cuando el valor se inserta, 'Actual' se resuelve cada vez que el valor se recupera. Así que probablemente desee utilizar "Ahora" en la mayoría de las aplicaciones. (Por supuesto que realmente desea utilizar CURRENT_TIMESTAMP, Lo que equivale a "Ahora".)
Fecha / hora de salida
Los formatos de salida se puede ajustar en uno de los cuatro estilos de la norma ISO-8601, SQL (Ingres), Postgres tradicionales, y alemán, utilizando el AJUSTE DateStyle. El valor por defecto es el ISO formato.
Tabla 3-14. PostgreSQL Fecha / Hora de salida Estilos
Estilo Especificación
Descripción
Ejemplo
«ISO»
norma ISO-8601
1997-12-17 07:37:16-08
'SQL'
Estilo tradicional
12/17/1997 07:37:16.00 PST
"Postgres"
Original estilo
Mié 17 de diciembre 1997 07:37:16 PST
«Alemán»
Regional de estilo
17/12/1997 07:37:16.00 PST
La producción de la fecha y tiempo estilos es, por supuesto, sólo la fecha o tiempo parcial de acuerdo con los ejemplos anteriores
El SQL estilo ha europeos y no europeos-(EE.UU.) variantes, que determina si el siguiente día o mes vica versa. (Ver también en: Fecha de Entrada / hora, ¿cómo afecta esta configuración de interpretación de los valores de entrada.)
Tabla 3-15. PostgreSQL Fecha de convenios de orden
Estilo Especificación
Ejemplo

Europeo
17/12/1997 15:37:16.00 MET

EE.UU.
12/17/1997 07:37:16.00 PST

intervalo de salida se parece al formato de entrada, se espera que las unidades como semana o siglo se convierten en años y días. En el modo de ISO que muestra la salida Unidades [Cantidad [... ]] [Días] Horario: [minutos]
Hay varias maneras de afectar la apariencia de la fecha y tipos de tiempo:
· El PGDATESTYLE variable de entorno utilizado por el servidor directamente al inicio del sistema administrador de correo.
· El PGDATESTYLE variable de entorno utilizado para la interfaz libpq el inicio de la sesión.
· AJUSTE DATESTYLE SQL de comandos.
Husos horarios
PostgreSQL se esfuerza por ser compatible con SQL92 definiciones de uso común. Sin embargo, el SQL92 estándar tiene una extraña mezcla de fecha y hora tipos y capacidades. Hay dos problemas evidentes son:
· Aunque el fecha tipo no tiene una zona horaria asociada, la tiempo tipo puede o no.
· La zona horaria predeterminada se especifica como un entero constante desplazamiento de GMT / UTC.
Las zonas horarias en el mundo real no puede tener sentido si no asociado a una fecha, así como un tiempo ya que el desplazamiento puede variar a través del año con los límites de horario de verano.
Para hacer frente a estas dificultades, PostgreSQL asociados zonas horarias sólo con tipos de fecha y tiempo, que contienen información de fecha y hora, y asume, hora local de cualquier tipo que sólo contiene la fecha o la hora. Además, el apoyo de zona horaria se deriva de las capacidades del sistema operativo subyacente zona horaria, y por lo tanto puede manejar el horario de verano y el comportamiento esperado de otros.
PostgreSQL obtiene el apoyo de la zona horaria del sistema operativo subyacente para las fechas entre 1902 y 2038 (cerca de los límites fecha típica para sistemas tipo Unix). Fuera de este rango, todas las fechas se supone que se especifica y se utiliza en Tiempo Universal Coordinado (UTC).
Todas las fechas y horas se almacenan internamente en universal UTC, alternativamente conocido como meridiano de Greenwich (GMT). Los tiempos son convertidos a la hora local en el servidor de base de datos antes de ser enviado a la interfaz de cliente, por lo que por defecto están en la zona horaria del servidor.
Hay varias maneras de influir en el comportamiento de zona horaria:
· La variable de entorno TZ utilizados por el servidor directamente al iniciar postmaster como la zona horaria predeterminada.
· La variable de entorno PGTZ fijado en el cliente utilizado por libpq para enviar información de zona horaria al backend al conectarse.
· El SQL comando Definir la zona horaria establece la zona horaria para la sesión.
Si una zona horaria válida se especifica, se convierte en la zona horaria GMT (en la mayoría de los sistemas de todos modos).
Nota: Si la opción del compilador USE_AUSTRALIAN_RULES se establece a continuación, CEST se refiere a Australia oriental Hora estándar, que tiene un desplazamiento de hora UTC +10:00.
El interior de
PostgreSQL utiliza fechas julianas fecha para todos los cálculos de tiempo. Ellos tienen la bonita propiedad de predecir correctamente / cálculo de cualquier otra fecha más reciente que 4713BC de lejos en el futuro, utilizando la hipótesis de que la duración del año es 365,2425 días.
Fecha convenios antes del siglo 19 una lectura interesante, pero no son lo suficientemente consistentes como para justificar la codificación en una fecha y controlador de tiempo.
Tipo booleano
Postgres apoya bool como el SQL3 tipo booleano. bool puede tener uno de sólo dos estados: «verdadero» o «falso». Un tercer estado, «desconocido», no se aplica y no se sugiere en SQL3; NULL es un sustituto eficaz. bool puede ser utilizado en cualquier expresión lógica, y las expresiones booleanas evaluar siempre a un resultado compatible con este tipo.
bool utiliza 1 byte de almacenamiento.
Tabla 3-16. Postgres Tipo booleano
Estado
Salida
Entrada
Verdadero
«T»
TRUE, 't', 'true', 'y', 'sí', '1 '
Falso
'F'
FALSO, 'f', 'false', 'n', 'no', '0 '

Tipos geométricos
tipos geométricos representan los objetos espaciales de dos dimensiones. El tipo más fundamental, el punto, constituye la base para todos los otros tipos.
Tabla 3-17. Postgres Tipos geométricos
Tipo Geométrico
Almacenamiento
Representación
Descripción
punto
16 bytes
(X, y)
El punto en el espacio
línea
32 bytes
((X1, y1), (x2, y2))
Infinito línea
lseg
32 bytes
((X1, y1), (x2, y2))
Finito segmento de línea
caja
32 bytes
((X1, y1), (x2, y2))
Caja rectangular
camino
4 bytes 32 n
((X1, y1 ),...)
camino cerrado (similar al polígono)
camino
4 bytes 32 n
[(X1, y1 ),...]
Abrir el camino
polígono
4 bytes 32 n
((X1, y1 ),...)
Polígono (similar a la trayectoria cerrada)
círculo
24 bytes
<(X, y), r>
Círculo (centro y radio)
Tabla en ingles
Geometric Type
Storage
Representation
Description
point
16 bytes
(x,y)
Point in space
line
32 bytes
((x1,y1),(x2,y2))
Infinite line
lseg
32 bytes
((x1,y1),(x2,y2))
Finite line segment
box
32 bytes
((x1,y1),(x2,y2))
Rectangular box
path
4+32n bytes
((x1,y1),...)
Closed path (similar to polygon)
path
4+32n bytes
[(x1,y1),...]
Open path
polygon
4+32n bytes
((x1,y1),...)
Polygon (similar to closed path)
circle
24 bytes
<(x,y),r>
Circle (center and radius)

Un rico conjunto de funciones y operadores se encuentra disponible para realizar diversas operaciones geométricas como el escalamiento, traslación, rotación, y la determinación de las intersecciones.
Punto
Los puntos son el componente fundamental de dos dimensiones para tipos geométricos.
punto se especifica mediante la siguiente sintaxis:
(X, y)
x, y
donde
x es la coordenada del eje x como un número de punto flotante
y es el eje de coordenadas como un número de punto flotante

Segmento de línea
Línea de segmentos (lseg) Se representan por pares de puntos.
lseg se especifica mediante la siguiente sintaxis:
((X1, y1), (x2, y2))
(X1, y1), (x2, y2)
x1, y1, x2, y2
donde
(X1, y1) y (x2, y2) son los extremos del segmento

Caja
Las cajas son representados por pares de puntos que son las esquinas opuestas de la caja.
caja se especifica mediante la siguiente sintaxis:
((X1, y1), (x2, y2))
(X1, y1), (x2, y2)
x1, y1, x2, y2
donde
(X1, y1) y (x2, y2) son las esquinas opuestas

Las cajas son de salida con la primera sintaxis. Las esquinas se reordenan en la entrada para almacenar la esquina inferior izquierda en la primera y la última esquina superior derecha. Otros rincones de la caja se pueden introducir, pero la parte inferior izquierda y superior derecha esquinas se determinan a partir de la entrada y se almacena.
Camino
Las rutas son representados por conjuntos de puntos conectados. Caminos puede ser "abierto", donde los puntos primero y el último en la serie no están conectados, y "cerrado", donde se conectan el punto inicial y final. Funciones popen (p) y pclose (p) son ofrecidos a la fuerza una ruta de acceso a ser abiertas o cerradas, y las funciones IsOpen (p) y isClosed (p) se suministran para seleccionar uno u otro tipo en una consulta.
camino se especifica mediante la siguiente sintaxis:
((X1, y1), ..., (xn, yn))
[(X1, y1), ... , (Xn, yn)]
(X1, y1), ... , (Xn, yn)
(X1, y1, ..., xn, yn)
x1, y1, ... , Xn, yn
donde
(X1, y1 ),...,( xn, yn) son puntos 1 a n
una de las principales "[" indica un camino abierto
una de las principales "(" indica un camino cerrado

Las rutas son de salida con la primera sintaxis. Tenga en cuenta que Postgres versiones anteriores a v6.1 utiliza un formato para las rutas que había un paréntesis de un solo líder, un "pabellón cerrado", según un recuento del número entero de puntos, entonces la lista de puntos, seguido de un paréntesis de cierre. La función integrada upgradepath se suministra para convertir los caminos objeto de dumping y vuelve a cargar desde la pre-v6.1 bases de datos.
Polígono
Los polígonos son representados por conjuntos de puntos. Polígonos probablemente deberían considerarse equivalente a caminos cerrados, pero se almacenan de forma diferente y tienen su propio conjunto de rutinas de soporte.
polígono se especifica mediante la siguiente sintaxis:
((X1, y1), ..., (xn, yn))
(X1, y1), ... , (Xn, yn)
(X1, y1, ..., xn, yn)
x1, y1, ... , Xn, yn
donde
(X1, y1 ),...,( xn, yn) son puntos 1 a n

Los polígonos son de salida con la primera sintaxis. Tenga en cuenta que Postgres versiones anteriores a v6.1 utiliza un formato para los polígonos que había un paréntesis líder único, la lista de coordenadas x-eje, la lista de eje y las coordenadas, seguido de un paréntesis de cierre. La función integrada upgradepoly se suministra para convertir polígonos objeto de dumping y vuelve a cargar desde la pre-v6.1 bases de datos.
Círculo
Círculos están representados por un punto central y un radio.
círculo se especifica mediante la siguiente sintaxis:
<(X, y), r>
((X, y), r)
(X, y), r
x, y, r
donde
(X, y) es el centro del círculo
r es el radio del círculo

Los círculos son de salida con la primera sintaxis.

IP versión 4 redes y direcciones de host
El cidr tiendas de redes de tipo especificado en CIDR (Classless Inter-Domain Routing) notación. El inet tiendas escriba hosts y redes en la notación CIDR con una simple variación en la representación para representar simples host TCP / IP.
Tabla 3-18. PostgresIP versión 4 Tipos
IPV4 Tipo
Almacenamiento
Descripción
Intervalo
cidr
variable
CIDR redes
Válido IPV4 bloques CIDR
inet
variable
redes y hosts
Válido IPV4 bloques CIDR
CIDR
El cidr tiene un tipo de red CIDR. El formato para especificar las redes sin clases es x.x.x.x / año donde x.x.x.x es la red y / Año es el número de bits en la máscara de red. Si / Año omite, se calculará utilizando hipótesis del sistema de nombres de classfull mayores, excepto que se amplía para incluir al menos todos los octetos en la entrada.