Índice
Tipos de Datos
SQL admite una variada gama de tipos de datos para la información almacenada en las tablas, los tipos de datos pueden ser numéricos, alfanuméricos, de fecha o booleanos. Segun el gestor de base de datos que usemos, los tipos de datos varían. En la actualidad casi todos los gestores soportan un nuevo tipo de dato. BLOB, usado para almacenar archivos, imagenes etc.
En la siguiente tabla se muestran los tipos de datos.
Numérico | Alfanumérico | Fecha | Lógico | BLOB |
---|---|---|---|---|
Integer | char(n) | Date | Bit | Image |
Numeric(n,m) | varchar(n,m) | DateTime | Text | |
Decimal | ||||
Float |
Más detalladamente tenemos:
Nota: El tamaño del campo varía en función de cada base de datos, 255 es el valor estándar. Realmente el tamaño viene delimitado por el tamaño de las páginas de datos, para SQL server el límite está en 8000 bytes (8000 carácteres), siempre que el tamaño de página sea de 8Kb
Tipos de datos en ORACLE
- NUMBER(Numérico): Almacena números enteros o de punto flotante, virtualmente de cualquier longitud, aunque se puede especificar la precisión y la escala.
-- NUMBER [(precisión, escala)]
saldo NUMBER(16,2);
/*Indica que puede almacenar un valor numérico de 16 dígitos, 2 de ellas decimales. Es decir, 14 enteros y dos decimales o 16 enteros*/
La precisión indica el número de dígitos (contanto los decimales) que contendrá el número como máximo. La escala indica el máximo de dígitos decimales. Si declaramos un NUMBER(10,5), podrá contener como máximo cualquier número siempre y cuando el número de dígitos enteros más el número de dígitos decimales no supere 10 (y no 15).
Se puede especificar una escala negativa para redondear el número a las posiciones indicadas en la escala. Por ejemplo, NUMBER(5,-2) redondea a las centenas, por lo que si introducimos 1355, se almacenará 1400.
- VARCHAR2 (Carácter de longitud variable): Almacena datos de tipo carácter empleando sólo la cantidad necesaria aún cuando la longitud máxima sea mayor.
‐‐ VARCHAR2 (longitud_maxima)
nombre VARCHAR2(20);
/* Indica que puede almacenar valores alfanuméricos de hasta 20 posiciones */
/* Cuando la longitud de los datos sea menor de 20 no se rellena con blancos */
- CHAR (Caracter): Almacena datos de tipo carácter con una longitud máxima de 32767 y cuyo valor de longitud por defecto es 1.
‐‐ CHAR [(longitud_maxima)]
nombre CHAR(20);
/* Indica que puede almacenar valores alfanuméricos de 20 posiciones*/
- BOOLEAN (lógico): Se emplea para almacenar valores TRUE o FALSE.
hay_error BOOLEAN;
DATE (Fecha): Internamente se almacenan como números, se pueden realizar operaciones aritméticas con ellas. En oracle se almacenan con el formato: Siglo / año / mes / día / hora / minuto / segundo. Pero su formato por defecto es ‘SS-MM-YYYY’.
Tipos de datos binarios: Almacenan información tal y como se encuentra en el disco duro o memoria. Se usan para almacenar grandes cantidades de datos (4Gb max.), cualquier tipo de fichero (ejecutables, sonidos, fotos ect) o para transportar datos de una base de datos a otra. En oracle hay dos tipos, CLOB y NLOB.
Atributos de Tipo: Un atributo de tipo en PL/SQL permiter obtener información de un objeto de la base de datos. %TYPE permite conocer el tipo de una variable, constante o campo. %ROWTYPE obtiene los tipos de todos los campos de una tabla, vista o cursor.
DECLARE
‐‐ declare record variable that represents a row fetched from the employees table
emp_rec employees%ROWTYPE; ‐‐ declare variable with %ROWTYPE attribute
BEGIN
SELECT * INTO emp_rec FROM EMPLOYEES WHERE employee_id = 120; ‐‐ retrieve record
DBMS_OUTPUT.PUT_LINE('Employee name: ' || emp_rec.first_name || ' ' || emp_rec.last_name);
END;
- Registros: Un registro es una estructura de datos en PL/SQL, almacenados en campos, cada uno de los cuales tiene su propio nombre y tipo y que se tratan como una sola unidad lógica. Los campos de un registro pueden ser inicializados y pueden ser definidos como NOT NULL. Aquellos campos que no sean inicializados explícitamente, se inicializarán a NULL. La sintaxis general es la siguiente:
TYPE <nombre> IS RECORD
(
campo <tipo_datos> [NULL | NOT NULL]
[,<tipo_datos>...]
);
Los registros son un tipo de datos, se pueden declarar variables de dicho tipo de datos. (Son como los struct en C++)
DECLARE
TYPE PAIS IS RECORD
(
CO_PAIS NUMBER,
DESCRIPCION VARCHAR2(50),
CONTINENTE VARCHAR2(20)
);
/* Declara una variable miPAIS de tipo PAIS. Esto significa que la variable miPAIS tendrá los campos ID, DESCRIPCION y CONTINENTE. */
miPAIS PAIS;
BEGIN
/* Asignamos valores a los campos de la variable.*/
miPAIS.CO_PAIS := 27;
miPAIS.DESCRIPCION := 'ITALIA';
miPAIS.CONTINENTE := 'EUROPA';
END;
Los registros pueden estar anidados. Es decir, un campo de un registro puede ser de un tipo de dato de otro registro. Pueden asignarse todos los campos de un registro utilizando una sentencia SELECT.
SELECT CO_PAIS, DESCRIPCION, CONTINENTE INTO miPAIS FROM PAISES WHERE CO_PAIS = 27;
- Colecciones o Tablas de PL/SQL: Permite almacenar varios valores del mismo tipo de datos. Una tabla PL/SQL:
- Es similar a un array
- Tiene dos componentes: Un índice de tipo BINARY_INTEGER que permite acceder a los elementos en la tabla PL/SQL y una columna de escalares o registros que contiene los valores de la tabla PL/SQL
- Puede incrementar su tamaño dinámicamente.
La sintaxis general es la siguiente:
TYPE <nombre_tipo_tabla> IS TABLE OF
<tipo_datos> [NOT NULL]
INDEX BY BINARY_INTEGER;
Una vez definido el tipo, podemos declarar variables y asignarles valores.
DECLARE
/* Definimos el tipo PAISES como tabla PL/SQL */
TYPE PAISES IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
/* Declaramos una variable del tipo PAISES */
tPAISES PAISES;
BEGIN
tPAISES(1) := 1;
tPAISES(2) := 2;
tPAISES(3) := 3;
END;
Funciones para el manejo de tablas PL/SQL
Cuando trabajamos con tablas de PL/SQL podemos utilizar las siguientes funciones:
- a. FIRST. Devuelve el menor índice de la tabla. NULL si está vacía.
- b. LAST. Devuelve el mayor índice de la tabla. NULL si está vacía.
- c. EXISTS(i). Utilizada para saber si en un cierto índice hay almacenado un valor. Devolverá TRUE si en el índice i hay un valor.
- d. COUNT. Devuelve el número de elementos de la tabla PL/SQL.
- e. PRIOR (n). Devuelve el número del índice anterior a n en la tabla.
- f. NEXT (n). Devuelve el número del índice posterior a n en la tabla.
- g. TRIM. Borra un elemento del final de la tabla PL/SQL.
- h. TRIM(n) borra n elementos del final de la tabla PL/SQL.
- i. DELETE. Borra todos los elementos de la tabla PL/SQL.
- j. DELETE(n) borra el correspondiente al índice n.
- k. DELETE(m,n) borra los elementos entre m y n.
DECLARE
TYPE ARR_CIUDADES IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
misCiudades ARR_CIUDADES;
BEGIN
misCiudades(1) := 'MADRID';
misCiudades(2) := 'BILBAO';
misCiudades(3) := 'MALAGA';
FOR i IN misCiudades.FIRST..misCiudades.LAST LOOP
dbms_output.put_line(misCiudades(i));
END LOOP;
END;
ROWID
Representa una dirección de la base de datos, ocupada por una única fila. El ROWID de una fila es un identificador único para una fila dentro de una base de datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar punteros a filas concretas.
Operadores
Los operadores se pueden definir como combinaciones de caracteres que se utilizan tanto para realizar asignaciones como comparaciones entre datos. Se dividen en aritméticos, relacionales, lógicos y de concatenación y suelen ser los mismos para todos los SGBD.
Operadores en ORACLE
Los más comunes son:
Palabras clave
SQL dispone de muy pocas órdenes, pero de múltiples palabras clave, lo que le convierten en un lenguaje sencillo pero tremendamente potente para llevar a cabo su función.
ALL | AND | ANY | ASC |
---|---|---|---|
AVG | BEGIN | BY | CHAR |
CHECK | CLOSE | COUNT | COMMIT |
CREATE | CURSOR | DECIMAL | DECLARE |
DELETE | DESC | DISTINCT | DEFAULT |
EXISTS | FETCH | FLOAT | FOR |
FROM | GRANT | GROUP | HAVING |
IN | INDEX | INSERT | INTEGER |
INTO | LIKE | MAX | MIN |
NOT | NUMERIC | ON | OPEN |
OR | ORDER | REVOKE | ROLLBACK |
SELECT | SET | SUM | TABLE |
UNION | UNIQUE | UPDATE | USER |
VALUES | VIEW | WHERE | WITH |
Funciones Agregadas
Proporcionan a SQL utilidades de cálculo sobre los datos de las tablas. Estas funciones se incorporan en las consultas SELECT y retornan un único valor al operar sobre un grupo de registros.
FUNCION | Descripción |
---|---|
MAX() | Devuelve el valor máximo |
MIN() | Devuelve el valor mínimo |
SUM() | Devuelve el valor de la suma de los valores del campo |
COUNT() | Devuelve el número de filas que cumplen la condición |
AVG() | Devuelve el promedio de los valores del campo |
Predicados
Condiciones que se indican en clausula WHERE de una consulta SQL. La siguiente tabla ilustra los predicados de SQL.
COMANDO | Descripción |
---|---|
BETWEEN…AND | Comprueba que el valor esta dentro de un intervalo |
LIKE | Compara un campo con una cadena alfanumérica. LIKE admite el uso de caracteres comodines |
ALL | Señala a todos los elementos de la selección de la consulta |
ANY | Indica que la condición se cumplirá si la comparación es cierta para al menos un elemento del conjunto. |
EXISTS | Devuelve un valor verdadero si el resultado de una subconsulta devuelve resultados. |
IN | Comprueba si un campo se encuentra dentro de un determinado rango. El rango puede ser una sentencia SELECT. |
Bibliografia: www.devjoker.com
Siguiente tema: Lenguaje Definición de Datos(DDL) - CREATE.
¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo o comentando abajo.