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.
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.
No hay comentarios:
Publicar un comentario