INTRODUCCION
Un de las funciones es manejar la base de datos relacional que hace uso de los recursos del sistema informático en todas las arquitecturas de hardware, para garantizar su aprovechamiento al máximo en ambientes cargados de información.
Modificar las estructuras creadas, si es necesario, partiendo de la información que
proporcionan los desarrolladores.
Mejorar los tiempos de respuesta y controlar el rendimiento como creación y mantenimiento de usuarios. Seguridad del sistema y monitorizar el acceso de usuarios a la base de datos, planificar la estrategia de recuperación y realizar las recuperaciones, contactar con el distribuidor para problemas técnicos que no pueda resolver.
OBJETIVOS
Este nos permite Generar lo siguiente como Nombre, atributos y sus propiedades Estadísticas De ejecución: bloques libres, espacio ocupado, número de filas, tamaños. Almacenar bloques de rehacer (redo) también Almacenamiento: Tamaño inicial y de incremento, % espacio libre, restricciones de las tablas: clave primaria y ajena cada instancia tiene parámetros : sobre que datos se trabaja, en que disco, memoria utilizada, etc.
Almacena el concepto de vista del SQL: agrupar el resultado de una consulta como una tabla nueva se puede usar luego como una tabla en sí.
FUNCIONES PROPIAS DE ORACLE
Estas instrucciones suponen la ejecución automática por parte del «gateway» de los siguientes pasos:
- CREATE DATABASE -> CONNECT + CREATE MULTIBASE CATALOGS
- DROP DATABASE -> DISCONNECT + DROP MULTIBASE CATALOGS
- START DATABASE -> CONNECT
- DATABASE -> CONNECT
Siendo CREATE MULTIBASE CATALOGS y DROP MULTIBASE CATALOGS instrucciones nuevas de MultiWay (disponibles para el programador), y CONNECT y DISCONNECT instrucciones internas para el gestor de Oracle.
close database
call putenv ("ORACLE_UID",,1)
database ;
CREATE TABLE.
El atributo NOT NULL se mantiene directamente por el SQL de Oracle.
El atributo DEFAULT es simulado también por el «gateway» en las operaciones de INSERT cuyos valores en «VALUES» se introduzcan a través de constantes o variables «hosts» (esto se hace extensivo al FORM).
Restricciones de funcionalidad:
Respecto al atributo DEFAULT, la simulación no funciona cuando los valores se introducen a través de una instrucción SELECT, ya que no puede controlarse su resultado («INSERT… SELECT…»).
El resto de atributos (entre ellos CHECK (RIGHT, ZEROFILL,) y la clave referencial se aceptan gramaticalmente, pero no funcionan a nivel de SQL.
CREATE TEMP TABLE.
Lo mismo sucede con la tabla temporal de la instrucción «SELECT… INTO TEMP…».CREATE INDEX.
Restricción de funcionalidad: El atributo «DESC» no es efectivo, ya que los índices son siempre ascendentes.
ALTER TABLE.
Dado que esta instrucción es desconocida por el SQL de Oracle, el «gateway» la simula para que, de forma transparente, el programador pueda seguir usándola.
CREATE TEMP TABLE (instrucción simulada a su vez)
INSERT INTO SELECT FROM
DROP TABLE
RENAME TABLE TO
CREATE INDEX ON… (los índices que tuviera la tabla)
GRANT CONNECT.
Para evitar esta incompatibilidad, el «gateway» añade al final de la misma la cláusula «IDENTIFIED BY», y como «password» sigue el criterio de utilizar el mismo identificador empleado en el nombre de usuario.
GRANT SELECT
No funciona la opción «GRANT SELECT (... )…», sino únicamente «GRANT SELECT…», sin especificación de columnas.
INSERT.
La inserción automática para el tipo de dato SERIAL (inexistente en Oracle) se simula en parte gracias a una tabla creada a tal efecto («MBSERIAL»), de donde el «gateway» lee el último valor que asignó de esta forma (por cada tabla con una columna de este tipo, existe una fila con dicho valor).
FETCH CURSOR.
Restricciones de funcionalidad:
En MultiBase, todos los «cursores» permiten el acceso a las filas siguiente, anterior, primera y última (NEXT, PREVIOUS, FIRST, LAST).
LOCK TABLE.
La instrucción LOCK TABLE será capaz de bloquear una tabla si la variable de configuración MBCOMMIT tiene el valor «OFF» (en el fichero «gworacle.env»), ya que este «COMMIT» automático después de cada instrucción SQL desbloquea las tablas cuando MultiBase funciona frente al SQL de Oracle.
OPEN CURSOR.
Los identificadores de CURSOR tendrán como máximo 15 caracteres en lugar de 18 (máximo permitido por CTSQL para cualquier identificador de la base de datos frente a cualquier SQL). Esta restricción permite distinguir «cursores» con igual nombre en diferentes módulos CTL, aspecto éste que sólo sabe manejar el CTSQL.
SELECT… FROM
NOTA al programador: El «gateway» está simulando el comportamiento de CTSQL en un «SELECT {MIN,MAX,AVG,SUM}» sin «GROUP BY» (ya que Oracle devuelve una fila con valor «NULL» si el número de filas seleccionadas es cero, mientras que CTSQL no devuelve nada), con la salvedad de que el programador no puede distinguir el caso de una selección de filas con valores nulos (aunque esto no es habitual).
ROLLFORWARD DATABASE y UPDATE STATISTICS.
Al no tener equivalencia en Oracle, estas instrucciones no son enviadas a su SQL por el «gateway», con lo que sus efectos son nulos aunque se utilicen en programas CTL, favoreciendo de esta manera la compatibilidad de fuentes frente a distintos servidores de bases de datos.
UNLOCK TABLE.
Esta instrucción es ignorada por el «gateway», ya que Oracle no la contempla. Para conseguir el desbloqueo de una tabla ha de realizarse un «COMMIT» de la transacción dentro de la cual se hizo el bloqueo (para más información vea lo comentado anteriormente para la instrucción LOCK TABLE).
Catálogo de MultiBase: Es posible romper la relación «biunívoca» existente entre bases de datos MultiBase y usuarios Oracle.
EXECSQL GRANT ALL PRIVILEGES ON MBSERIAL TO PUBLIC
cada uno de los usuarios, excepto el creador del catálogo, necesita el siguiente sinónimo:
EXECSQL CREATE SYNONYM mbserial
FOR usuario_creador.mbserial
Este procedimiento podría seguirse también con las tablas del entorno de programación (tablas «ep*»).
Las funciones de una sola fila:
function_name[(arg1, arg2,...)]
Funciones de Caracteres LOWER
Funciones de manipulación de mayúsculas/minúsculas de caracteres
LOWER – UPPER - INITCAP
CONCAT – SUBSTR – LENGTH – INSTR - LPAD
RPAD – TRIM - REPLACE
Estas funciones convierten las mayúsculas/minúsculas para cadenas de caracteres.
Funcion Result
LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL Course') Sql Course
Uso de Funciones de Manipulación de Mayúsculas/Minúsculas
Muestre el número de empleado, el nombre y el número de departamento para el empleado Higgins
SELECT employee_id, last_name, department_id
FROM
employees
WHERE last_name = 'higgins';
no rows selected
SELECT employee_id, last_name, department_id
FROM
employees
WHERE LOWER(last_name) = 'higgins';
Funciones de Manipulación de Caracteres
CONCAT('Hello', 'World')
SUBSTR('HelloWorld',1,5)
LENGTH('HelloWorld')
INSTR('HelloWorld', 'W')
LPAD(salary,10,'*') RPAD(salary, 10, '*')
TRIM('H' FROM 'HelloWorld')
Uso de Funciones de Manipulación de Caracteres
Employee id , concat(first name, last_name)NAME,
Job_id,length(lest name),
Instr (lest_name, `a`) “contains ´a`?”
From employees
Were substr (job_id, 4) = `rep`;
Funciones Numéricas
ROUND: Redondea el valor a los decimales especificados.
ROUND(45.926, 2) 45.93
TRUNC: Trunca el valor a los decimales especificados.
TRUNC(45.926, 2) 45.92
MOD: Devuelve el resto de la división.
MOD(1600, 300) 100
Uso de la Función ROUND
Es una tabla ficticia que puede utilizar para ver los resultados de funciones y cálculos
SELECT ROUND(45.923,2), ROUND(45.923,0),
ROUND(45.923,-1)
FROM
DUAL;
Uso de la Función TRUNC
SELECT TRUNC(45.923,2) TRUNC(45.923),
TRUNC(45.923,-2)
FROM DUAL;
Uso de la Función MOD
SELECT last_name, salary, MOD(salary, 5000)
FROM
employees
WHERE job_id = 'SA_REP';
Trabajo con Fechas
Le permite almacenar fechas del siglo XX en el siglo XXI de la misma forma.
SELECT last_name, hire_date
FROM employees
WHERE last_name like 'G%';
Trabajo con Fechas
SYSDATE es una función que devuelve:
Fecha
Hora
Uso de Operadores Aritméticos con Fechas
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
Funciones de Fecha
MONTHS_BETWEEN ADD
MONTHS NEXT
DAY LAST
DAY
ROUND
TRUNC
Uso de Funciones de Fecha
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
ADD_MONTHS ('11-JAN-94',6)
NEXT_DAY ('01-SEP-95','FRIDAY')
LAST_DAY('01-FEB-95') 19.6774194 '11-JUL-94' '08-SEP-95' '28-FEB-95'
Uso de Funciones de Fecha
Asuma SYSDATE = '25-JUL-95':
ROUND (SYSDATE,'MONTH') 01-AUG-95
ROUND (SYSDATE,'YEAR') 01-JAN-96
TRUNC (SYSDATE,'MONTH') 01-JUL-95
TRUNC (SYSDATE,'YEAR') 01-JAN-95
Funciones de Conversión
Conversión implícita de tipos de dato
Conversión explícita de tipos de dato
Conversión de tipos de dato
Conversión Implícita de Tipos de Dato
Para las asignaciones, Oracle Server puede convertir automáticamente lo siguiente:
VARCHAR2 or CHAR De NUMBER
A VARCHAR2 or CHAR DATE
NUMBER VARCHAR2
DATE VARCHAR2
Conversión Implícita de Tipos de Dato
TO_number
TO_date
NUMBER CHARACTER DATE
TO CHAR
TO CHAR
Uso de la Función TO_CHAR con Fechas
TO_CHAR (date, 'format_model')
Elementos del Modelo de Formato de Fecha
YYYY Año completo en números
YEAR Años en letra
MM Valor de dos dígitos para el mes
MONTH Abreviatura de tres letras del día dela semana
DY Nombre completo del día de la semana
DAY Nombre completo del mes
DD Día del mes en número
Uso de función to_char con letras
last_name,
TO_CHAR (hire_date, 'fmDD MonthYYYY')
AS HIREDATE
FROM employees;
Uso de la FunciónTO_CHAR con Números
TO_CHAR(number, 'format_model')
Estos son algunos de los elementos de formato que puede utilizar con la funciónTO_CHAR para mostrar un valor numérico como carácter:
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM
employees
WHERE last_name = 'Ernst';
Uso de las Funciones TO_NUMBER y TO_DATE
Convierta una cadena de caracteres en formato numérico utilizando la funciónTO_NUMBER:
TO_NUMBER(char[, 'format_model'])
Convierta una cadena de caracteres en formato de fecha utilizando la funciónTO_DATE:
TO_DATE(char[, 'format_model'])
Estas funciones tienen un modificadorfx que especifica la coincidencia exacta para el argumento de caracteres y un modelo de formato de fecha de una funciónTO_DATE.
Uso de las FuncionesTO_NUMBER y TO_DATE
Convierta una cadena de caracteres en formato numérico utilizando la funciónTO_NUMBER:
TO_NUMBER(char[, 'format_model'])
Convierta una cadena de caracteres en formato de fecha utilizando la funciónTO_DATE:
TO_DATE(char[, 'format_model'])
Formato de FechaRR
Utilice el formatoRR, que produce los mismos resultados tanto si se ejecuta el comando en 1999 o ahora:
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');
Funciones de Anidamiento
F3(F2(F1(col,arg1),arg2),arg3)
Paso 1 = Resultado 1 Paso 2 = Resultado 2 Paso 3 = Resultado 3
Funciones de Anidamiento
SELECT last_name,
NVL(TO_CHAR(manager_id), 'No Manager')
FROM employees
WHERE manager_id IS NULL;
Funciones Generales
Estas funciones trabajan con cualquier tipo de dato y están relacionadas con el uso de valores nulos.
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, ..., exprn)
Función NVL
Convierte un valor nulo en un valor real ye pueden utilizar son fechas, caracteres y numéricos, tipos de dato deben coincidir:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet'
Uso de la Función NVL
SELECT last_name, salary, NVL(commission_pct, 0)
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM employees;
Uso de la FunciónNVL2
ELECT last_name, salary, commission_pct
NVL2(commission_pct
'SAL+COMM', 'SAL') income
FROM employees
WHERE department_id IN (50, 80);
Uso de la Función NULLIF
SELECT first_name, LENGTH(first_name) "expr1"
last_name, LENGTH(last_name) "expr2"
NULLIF(LENGTH(first_name)
LENGTH(last_name)) result
FROM employees;
Uso de la Función COALESCE
SELECT last_name
COALESCE(commission_pct, salary, 10) comm
FROM employees
ORDER BY commission_pct;
Exprecines Condicionales
ExpresiónCASE
FunciónDECODE
La Expresión CASE
Facilita las consultas condicionales realizando el trabajo de una sentencia IF-THEN-ELSE:
CASEexpr WHENcomparison_expr1 THENreturn_expr1
[WHENcomparison_expr2 THENreturn_expr2
WHENcomparison_exprn THENreturn_exprn
ELSEelse_expr]
END
Uso de la Expresión CASE
Facilita las consultas condicionales realizando una sentencia IF-THEN-ELSE: … …
SELECT last_name, job_id, salary
WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
ELSE salary END "REVISED_SALARY"
FROM employees;
La Función DECODE
Facilita las consultas condicionales de una sentencia CASE o IF-THEN-ELSE:
Col
expression, search1, result1
[, search2, result2,...,]
[, default])
Uso de la Función DECODE
SELECT last_name, job_id, salary
IT_PROG', 1.10*salary, '
ST_CLERK', 1.15*salary, '
SA_REP', 1.20*salary
Salary
REVISED_SALARY
FROM employees;
Uso de la Función DECODE
Muestre el tipo impositivo aplicable para cada empleado del departamento 80.
SELECT last_name, salary,
FROM employees
WHERE department_id = 80;
COMCEPTO
El Sistema de Gestión de Bases de Datos (SGBD) Consiste en un conjunto de programas, procedimientos y lenguajes que nos proporcionan las herramientas necesarias para trabajar con una base de datos. Incorporar una serie de funciones que nos permita definir los registros, sus campos, sus relaciones, insertar, suprimir, modificar y consultar los datos.