manejador de base datos

35
UNIVERSIDAD JUAREZ AUTONOMA DE TABASCO Materia: Programación en base de Datos Investigación de Base de Datos Profesor Gilberto Murillo González

Upload: kdan128

Post on 23-Oct-2015

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Manejador de Base Datos

UNIVERSIDAD JUAREZ AUTONOMA DE TABASCO

Materia:

Programación en base de Datos

Investigación de Base de Datos

Profesor Gilberto Murillo González

Alumna: Yesenia Janett Pech Canto

Cunduacán, Tabasco 30 de septiembre del 2013

Page 2: Manejador de Base Datos

Que es un manejador de base de datos.

El sistema  manejador   de bases de datos es la porción más importante del software de un sistema de base de datos. Un DBMS es una colección de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea específica.

Caracteristicas.

Un sistema de base de datos tiene naturaleza auto descriptiva (meta datos). Aislamiento entre programas y datos (Abstracción de datos). Soporte de múltiples vistas de los datos. Capacidad para compartir los datos Procesamiento de las transacciones multiusuario

Ventajas y desventajas.

Ventajas:

Independencia de datos y tratamiento. Coherencia de resultados. Mejora en la disponibilidad de datos Cumplimiento de ciertas normas. Restricciones de seguridad. Accesos (Usuarios a datos). Operaciones (Operaciones sobre datos).

Desventajas:

El mal uso. Manejabilidad de la consola. Tiempo de respuesta relativamente largo. Poco eficaz, es limitado.

Cuál es el motor de entorno de SMDB

El Motor de entorno de SMDB - Realiza las operaciones requeridas sobre la base de datos, típicamente representándolo a alto nivel.

Mecanismo de almacenamiento - Traduce las operaciones a lenguaje de bajo nivel para acceder a los datos. En algunas arquitecturas el mecanismo de almacenamiento está integrado en el motor de la base de datos.

Page 3: Manejador de Base Datos

Motor de transacciones - Para conseguir corrección y fiabilidad la mayoría de las operaciones internas del SMBD se realizan encapsuladas dentro de transacciones. Las transacciones pueden ser especificadas externamente al SMBD para encapsular un grupo de operaciones. El motor de transacciones sigue la ejecución de las transacciones y gestiona su ejecución de acuerdo con las reglas que tiene establecidas (p.e. control de concurrencia y su ejecución o cancelación).

Gestión y operación de SMBD - Comprende muchos otros componentes que tratan de aspectos de gestión y operativos del SGBD como monitoreo de prestaciones, gestión del almacenamiento, mapas de almacenamiento

Que es DDL y DML

DDL y DML

 Lenguaje de definición de datos (DDL: Data Definition Language)

Sencillo lenguaje artificial para definir y describir los objetos de la base de datos, su estructura, relaciones y restricciones. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Aparte suele poseer dos subconjuntos de instrucciones:

 Lenguaje de definición del almacenamiento de los datos (DSDL: Data Storage Definition Language): permite especificar características físicas de la base de datos (volúmenes y archivos donde van a ser almacenados los datos, etc).

 Lenguaje de control de datos (DCL: Data Control Language): encargado del control y seguridad de los datos (privilegios y modos de acceso, etc).

  Lenguaje de manipulación de datos (DML: Data Manipulation Language): Lenguaje artificial de cierta complejidad que permite el manejo y procesamiento del contenido de la base de datos. En la práctica puede consistir en un subconjunto de instrucciones de otro lenguaje informático. Las aplicaciones que trabajan sobre la base de datos se programan en un lenguaje de programación (C, Cobol) insertando en el código fuente sentencias del DML. Al utilizar un DML se deben especificar los datos que serán afectados por las sentencias del lenguaje. Un DML puede tener o no procedimientos, según sea necesario especificar además cómo deben obtenerse esos datos. Los DML con procedimientos tienen sentencias de control de flujo como bucles o condicionales. Los DML sin procedimientos son conocidos también como declarativos.

Page 4: Manejador de Base Datos

Tipos de datos existentes en orale

Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.Alfanuméricos      Numéricos       Fecha     Binarios               OtrosCHAR                 NUMBER         DATE      RAW                   ROWIDVARCHAR2         FLOAT                           LONGRAW VARCHAR                                                BLOB NCHAR                                                     CLOBNVARCHAR2                                            NLOBLONG (Obs.)                                             BFILE

Los valores alfanuméricos van encerrados entre comilla simple: 'Alfanumérico' Los valores numéricos son número simples: 123 Las fechas van encerradas entre comillas simples: '11/11/2011' Los valores binarios no pueden ser representados (son fotos, vídeos)

Tipo de dato CHAR(b)Almacena cadenas de caracteres de longitud fija, desde 1 a 2.000 bytes de ocupación. El número de caracteres que se pueden almacenar se rige según la siguiente fórmula.nº caracteres = bytes / character setPara ASCII, el conjunto de caracteres ocupa un byte, por lo que coincide el número de caracteres máximos con la ocupación del tipo de dato. Si se introduce un valor de 10 caracteres en un campo de CHAR(100), se tendrá que rellenar con 90 posiciones restantes.Así la siguiente expresión es cierta: 'Hola Andrea' = 'Hola Andrea 'Si se intenta introducir un valor demasiado grande para el campo, se intentará eliminar los espacios finales, y si cabe sin espacios, se introduce. Si aún así no cabe, se retorna un error.

Tipo de dato VARCHAR2(b)Almacena cadenas de caracteres de longitud variable. Si se define una columna de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna ocupará 10 y no 100 como hacía con el tipo de dato CHAR.

Tipo de dato VARCHAR(b)En Oracle es equivalente a VARCHAR2, en futuras versiones permitirá distintos criterios de comparación.

Tipo de dato NCHAR(b)Almacena un valor alfanumérico de longitud fija con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE.

Tipo de dato NVARCHAR2(b)

Page 5: Manejador de Base Datos

Almacena un valor alfanumérico de longitud variable con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE.

Tipo de dato NUMBER(p,s)Almacena valores numéricos en punto flotante que pueden ir desde 1.0 x 10-130 hasta 9.9…(38 nueves)… 9 x 10125 . El almacenamiento interno de los valores numéricos en notación científica:Mantisa x 10exponenteLa mantisa puede contener cualquier número, entero o decimal, positivo o negativo. El exponente podrá contener cualquier número entero, positivo o negativo. El parámetro p indica la precisión (número de dígitos contando los decimales) que contendrá el número como máximo. Oracle garantiza los datos con precisiones de 1 a 38. El parámetro s indica la escala, esto es, el máximo de dígitos decimales. Hay que tener en cuenta que una columna definida 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). La escala puede ir de -84 a 127. Para definir número enteros, se puede omitir el parámetro s o bien poner un 0 en su lugar. Se puede especificar una escala negativa, esto lo que hace es redondear el número indicado a las posiciones indicadas en la escala. Por ejemplo un número definido como NUMBER(5,-2), redondeará siempre a centenas. Así si intentamos introducir el valor 1355, en realidad se almacenará 1400.

Tipo de dato FLOAT(b)Almacena un número en punto decimal sin restricción de dígitos decimales.El parámetro b indica la precisión binaria máxima que puede moverse en el rango 1 a 126. Si se omite el defecto será 126. Una columna FLOAT(126) es equivalente a una columna NUMBER(38), aunque la diferencia está en que la columna NUMBER no podrá contener decimales y la columna FLOAT si y con cualquier escala.

Tipo de dato DATEAlmacena un valor de fecha y hora.Para un tipo de dato DATE, Oracle almacena internamente los siguiente datos:

Siglo Año Mes Día Hora Minuto Segundo

El formato por defecto de las fechas es: 'DD-MON-YYYY' Esto es:Dos dígitos para el día Las tres primeras siglas del mes (depende del idioma instalado). Cuatro dígitos para el año.

Page 6: Manejador de Base Datos

Por ejemplo:'11-NOV-2011' '12-APR-1999'Este formato puede ser alterado en cualquier momento.Internamente una fecha se almacena como el número de días desde cierto punto de inicio (por ejemplo el año 0).Esto permite que las fechas puedan ser tratadas en operaciones aritméticas normales:

'11-NOV-2011' + 10 = '21-NOV-2011' '12-APR-1999' - 1 = '11-APR-1999' '24-APR-1992' - '1-APR-1992' = 23

Tipos de datos binariosPermiten almacenar información en formato “crudo”, valores binarios tal y como se almacenan en el disco duro o como residen en memoria. Estas columnas se pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.), como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos, vídeos, fotos, documentos Word, DLLs…) o para transportar datos de una base de datos a otra, ya que el formato binario es el único formato común entre cualquier sistema informático.

Tipo de dato LONG (Obsoleto)Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta para compatibilidad con versiones anteriores. En Oracle y siguientes versiones se debe usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.

Tipo de dato ROWIDRepresenta 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.

Page 7: Manejador de Base Datos

Que es un tablespace y su sintaxis

Tablespaces

Los TABLESPACES en oracle son las bases de datos propiamente dichas, dentro de ellas, se alojaran las tablas con sus datos, vistas, etc..La expresión para Crear un nuevo “Tablespace” o Base de datos es la siguiente:

CREATE TABLESPACE nombredbDATAFILE ‘G:\ORACLEXE\ORADATA\ nombredb.mdf’SIZE xxMAUTOEXTEND ON NEXT xxK o xxM

Sintaxis:CREATE TABLESPACE ordena la creación de un nuevo Tablespace que tendrá como nombre “nombredb ”.DATAFILE  indica la ruta donde se ubicara físicamente el archivo dentro del disco duro “G:\ORACLEXE\ORADATA\”y el nombre del mismo con su extensión “nombredb.mdf”. Atención con las comillas simples que enmarcan la ruta “ ‘G:\ORA... ” y no se nos pueden olvidar.SIZE indica el tamaño inicial que tendrá el archivo en el disco duro y puede estar expresado en “M” para Mb o en “ K “ para Kb Sobra decir que “ xx “ seria el tamaño que le indicamosAUTOEXTEND ON NEXT xxK o xxM  indica que queremos que el archivo de la base de datos se vaya ampliando en ” xxK o xxM “ cada ves que haga falta, si no lo indicamos, nuestra tabla quedara limitada al tamaño del archivo definido con “ SIZE xxM “.

Ahora vamos a crear un TABLESPACE nuevo en ORACLE utilizando los comandos SQL, lo llamaremos borramedb, tendrá un tamaño inicial de 10 Megas y debe ser autoextensible.También tendremos que poder borrarla, para esto esta

DROP TABLESPACE nuevadb

Sintaxis:DROP TABLESPACE nuevadb nos indica que eliminaremos la base de datos “ nuevadb “. si el TABLESPACE tuviera tablas dentro, deberiamos agregar algo mas de tal modo que ..DROP TABLESPACE nuevadb INCLUDING CONTENTS

Bien, ahora, un tablespace necesitará de algún usuario que se encargue de el.Para crear un nuevo usuario se usa la siguiente sentencia:

CREATE USER nvo

Page 8: Manejador de Base Datos

IDENTIFIED BY nvoDEFAULT TABLESPACE nuevadbTEMPORARY TABLESPACE temp

Sintaxis:CREATE USER nvo indica que se cree un nuevo usuario y su nombre “ nvo ”.IDENTIFIED BY nvo asigna al nuevo usuario una contraseña “ nvo ” <<que NUNCA debe ser como la del ejemplo !!!, solo usamos contraseñas así para los ejemplos.DEFAULT TABLESPACE nuevadb indica que su TABLESPACE será “ nuevadb “.TEMPORARY TABLESPACE temp y aqui le designamos el espacio temporal, si no incluimos esta parte en la sentencia, Oracle le asignará el TEMP por defecto

Permisos de usuario

Los permisos generales que podemos asignarle a los usuarios son:

    CONECT: le permite conectarse a la base de datos    RESOURCE:    DBA: Administrador

Asignar permisos a usuario

GRANT CONECT o RESOURCE o DBA TO usuario

Quitar permisos a usuario

REVOKE permiso FROM usuario

Eliminar UsuarioCreo que esto eliminaría también su Tablespace (tengo que probar).

DROP USERS usuario

Que es un usuario y la sintaxis para crear usuarios

Create User

Esta sentencia sirve para crear un usuario oracle.

Page 9: Manejador de Base Datos

Un usuario es un nombre de acceso a la base de datos oracle. Normalmente va asociado a una clave (password).

Lo que puede hacer un usuario una vez ha accedido a la base de datos depende de los permisos que tenga asignados ya sea directamente (GRANT) como sobre algun rol que tenga asignado (CREATE ROLE).

El perfil que tenga asignado influye en los recursos del sistema de los que dispone un usuario a la hora de ejecutar oracle (CREATE PROFILE).

La sintaxis es:

CREATE USER username IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS 'external_name'} options;

Donde options: DEFAULT TABLESPACE tablespace TEMPORARY TABLESPACE tablespace QUOTA int {K | M} ON tablespace QUOTA UNLIMITED ON tablespace PROFILE profile_name PASSWORD EXPIRE ACCOUNT {LOCK|UNLOCK}Crea un usuario sin derecho a guardar datos o crear objetos:

CREATE USER usuariolimitado IDENTIFIED BY miclavesecreta;Crea un usuario con todos los derechos para guardar datos o crear objetos:

DROP USER miusuario CASCADE;

CREATE USER miusuario IDENTIFIED BY miclavesecreta DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON data;

CREATE ROLE programador;

GRANT CREATE session, CREATE table, CREATE view, CREATE procedure,CREATE synonym, ALTER table, ALTER view, ALTER procedure,ALTER synonym, DROP table, DROP view, DROP procedure,DROP synonym, TO conn;

GRANT programador TO miusuario;

Page 10: Manejador de Base Datos

Es necesario crear el usuario antes de asignar permisos con GRANT o un ROLE por defecto.

Sintaxis para crear base de datos

Sintaxis de CREATE DATABASE

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]

create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name

CREATE DATABASE crea una base de datos con el nombre dado. Para usar CREATE DATABASE, necesita el permiso CREATE en la base de datos.

Las reglas para nombres de bases de datos permitidos se dan en Sección   9.2, “Nombres de bases de datos, tablas, índices, columnas y alias”. Ocurre un error si la base de datos existe y no especifica IF NOT EXISTS.

En MySQL 5.0, las opciones create_specification pueden darse para especificar característica de la base de datos. Las características se almacenan en el fichero db.opt en el directorio de la base de datos. La cláusula CHARACTER SET especifica el conjunto de caracteres por defecto de la base de datos. La cláusula COLLATE especifica la colación por defecto de la base de datos. Los nombres de colación y de conjunto de caracteres se discuten en Capítulo   10, Soporte de conjuntos de caracteres.

Las bases de datos en MySQL se implementan como directorios que contienen ficheros que se corresponden a tablas en la base de datos. Como no hay tablas en la base de datos cuando se crean inicialmente, el comando CREATE DATABASE en MySQL 5.0 crea sólo un directorio bajo el directorio de datos de MySQL y el fichero db.opt file.

Si crea manualmente un directorio bajo el directorio de datos (por ejemplo, con mkdir), el servidor lo considera como un directorio de base de datos y muestra la salida de SHOW DATABASES.

CREATE SCHEMA puede usarse desde MySQL 5.0.2.

También puede usar el programa mysqladmin para crear bases de datos. Consulte Sección   8.4, “Administrar un servidor MySQL con mysqladmin ” .

Page 11: Manejador de Base Datos

Sintaxis para crear tablas

Create Table

Las tablas son la estructura básica donde se almacena la información en la base de datos. Dado que en la mayoría de los casos, no hay forma de que el proveedor de base de datos sepa con antelación cuáles son sus necesidades de almacenamiento de datos, es probable que necesite crear tablas en la base de datos usted mismo. Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL, pero debido a que las tablas son los contenedores de toda la información, es importante incluir la sintaxis CREATE TABLE en esta guía de referencia.

Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas. Cada fila representa una parte de los datos, y cada columna puede pensarse como la representación de un componente de aquella parte de los datos. Entonces, por ejemplo, si tenemos una tabla para registrar la información del cliente, las columnas pueden incluir información tal como Primer Nombre, Apellido, Dirección, Ciudad, País, Fecha de Nacimiento y demás. Como resultado, cuando especificamos una tabla, incluimos los títulos de columna y los tipos de datos para esta columna en particular.

Entonces ¿Qué son los tipos de datos? Generalmente, los datos se generan en formas variadas. Podría ser un entero (tal como 1), un número real (tal como 0,55), una línea (tal como 'sql'), una fecha/expresión de tiempo (tal como '25-ene-2000 03:22:22'), o incluso en formato binario. Cuando especificamos una tabla, necesitamos especificar el tipo de dato asociado con cada columna (es decir, especificaremos que ‘First_Name’ es de char(50) tipo – lo que significa que es una línea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar primero una referencia específica de base de datos.

La sintaxis SQL para CREATE TABLE es

CREATE TABLE "nombre_tabla"("columna 1" "tipo_de_datos_para_columna_1","columna 2" "tipo_de_datos_para_columna_2",... );

Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaríamos

CREATE TABLE Customer(First_Name char(50),

Page 12: Manejador de Base Datos

Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date datetime);

A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue “[valor] Predeterminado” luego de la instrucción de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna “Address” como “Desconocida” y Ciudad como “Barcelona”, ingresaríamos

CREATE TABLE Customer(First_Name char(50),Last_Name char(50),Address char(50) default 'Unknown',City char(50) default 'Barcelona',Country char(25),Birth_Date datetime);

También puede limitar el tipo de información que una tabla /columna puede mantener. Esto se realiza a través de la palabra clave CONSTRAINT, que se describe a continuación.

Roles y privilegios de usuarios

Usuarios roles y permisos

Un punto crítico en los gestores de contenidos es el de los permisos y es importante disponer de algun mecanismo que permita establecer que operaciones podrá realizar cada usuario. El objetivo es evitar que, por accidente o de forma intencionada, un usuario pueda realizar operaciones que comprometan la integridad y funcionamiento del sitio web. Para este fin, Drupal utiliza un sistema de roles, permisos y usuarios.

Entendemos por usuario a cualquier persona que accede al sitio web. Los usuarios se pueden agrupar en roles en función de las operaciones que se les permite realizar. Es decir, que cada rol se caracteriza por disponer de una serie concreta de permisos. Se entiende por permiso la posibilidad de ejecutar determinadas operaciones o no sobre los diferentes elementos del CMS.

En Drupal los roles se pueden gestionar  (crear, destruir o modificar) en "Administer>User managment>Roles". Para gestionar los permisos asociados a

Page 13: Manejador de Base Datos

cada Rol deberemos ir a "Administer>User managment>Permisions". Luego para especificar que tareas se permitirán a cada usuario, bastará con asignarle un Rol a cada uno de ellos.

Se pueden crear los roles que se quiera, con los permisos que se  crean convenientes, pero por lo general se suelen definir los siguientes:

- Visitante: usuario que simplemente podrá leer o buscar en los contenidos y no necesita autentificarse. Para este tipo de usuarios se puede usar el rol “anonymous user” que viene por defecto con Drupal.- Usuario autentificado: se le permite dejar comentarios u opinar sobre los productos o simplemente participar generando algún tipo de contenido. Para este tipo de usuario se puede utilizar el rol “authenticated user”.- Editor: gestiona a los usuarios y todos los contenidos y no tiene porque tener nociones técnicas del funcionamento del sistema. Puede ser p.ej. el propietario de una tienda virtual o de una comunidad virtual, el cual no tiene conociemientos técnicos de la plataforma pero debe disponer de control total sobre los contenidos del sitio.- Administrador: es el responsable técnico y puede acceder a cualquiera de los aspectos del sistema, configurando o modificando cualquier parámetro de éste. Este usuario tiene control total sobre el sitio web, por lo que puede realizar cualquier operación de configuración o mantenimiento sobre este.

Un punto que a los recién iniciados puede causar confusión es el del usuario de la base de datos y los usuarios del sitio web. Como se explica en el apartado de instalación, antes de poner en marcha un sitio web, debemos crear una base de datos y un usuario con todos los permisos sobre esta. Al iniciar la instalación de Drupal, este nos pedirá el usuario y password de la base de datos, es decir el nombre del usuario que tiene permisos totales sobre esa base de datos y su password. Este usuario y password únicamente serán utilizados por Drupal para acceder y guardar el valor de las diferentes variables en la base de datos.

Al prinicpio del todo de la instalación, una vez le hemos indicado a Drupal como acceder a la base de datos, nos pedirá que configuremos el usuario con permisos totales sobre el sitio web. Este usuario no tiene nada que ver con el de la base de datos, y puede ser el que queramos. De hecho el motor de Drupal guardará está información en la tabla “users” de la base de datos ( en el campo name guardará el nombre, y en pass el password encriptado con un hash MD5 ), mientras que el usuario y password de la bbdd lo guardará en unos ficheros de su instalación. Es importante que el acceso a las carpetas de estos ficheros tengan los permisos correctamente configurados. Así en resumen, ha de quedar claro que una cosa es el usuario de la base de datos y otra los usuarios del sitio web.

Page 14: Manejador de Base Datos

Bibliografía

Página web

http://www.tuinformaticafacil.com/oracle-11g/tipos-de-datos-en-oracle-11g http://www.techonthenet.com/oracle/datatypes.php

Libros

Introducción a las bases de Datos Relacionales - Mendelzon - Ale

Sistemas de Bases de Datos - Elmasri - Navathe

Page 15: Manejador de Base Datos

INSERT INTO CLIENTES (codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'CASA AUGE DEPORTES', '598768',TO_DATE('15/04/95','DD/MM/YY'));

Page 16: Manejador de Base Datos

INSERT INTO CLIENTES(codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL, 'EMPRESA D','598768',TO_DATE('15/04/95','DD/MM/YY') );

Page 17: Manejador de Base Datos

CREATE TABLE clientes( codigo integer NOT NULL PRIMARY KEY, fecha date NOT NULL, nombre char(30) NOT NULL, telefono char(20) NOT NULL, direccion char(100), anotacion LONG );

Page 18: Manejador de Base Datos

CREATE TABLE ventas( codigo INTEGER NOT NULL REFERENCES clientes(codigo), fecha DATE NOT NULL, articulo CHAR(20) NOT NULL, valor NUMBER(10,2) NOT NULL CHECK (valor>0));

Page 19: Manejador de Base Datos

CREATE TABLE clientes(codigo INTEGER NOT NULL,nombre CHAR(30) NOT NULL,direccion CHAR(100),anotacion LONG,PRIMARY KEY (codigo));

CREATE TABLE ventas(codigo INTEGER NOT NULL, fecha DATE NOT NULL, articulo CHAR(10), valor NUMBER(6,2) NOT NULL CHECK (valor>0),FOREIGN KEY (codigo) REFERENCES clientes(codigo));

Page 20: Manejador de Base Datos

CREATE SEQUENCE codigo_cliente INCREMENT BY 1 START WITH 1;

Page 21: Manejador de Base Datos

INSERT INTO CLIENTES (codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'CASA AUGE DEPORTES', '598768',TO_DATE('15/04/95','DD/MM/YY'));

Page 22: Manejador de Base Datos

INSERT INTO CLIENTES(codigo,nombre,telefono,fecha) VALUES (codigo_cliente.NEXTVAL,'pinturerias propios',

'456789',TO_DATE('10/04/95','DD/MM/YY'));

Page 23: Manejador de Base Datos

SELECT user,sysdate,CODIGO_CLIENTE.currval FROM DUAL;

Page 24: Manejador de Base Datos

create tablespace moda DATAFILE 'C:\PROGRAMACION DE BASE\moda_TAB.DAT' SIZE 1000M DEFAULT STORAGE(INITIAL 100K NEXT 100K)ONLINE PERMANENT;

Page 25: Manejador de Base Datos

CREATE OR REPLACE PROCEDURE change_emp_dept(emp_id IN NUMBER,dept_id IN NUMBER) ASemp_row employees%ROWTYPE;dept departments.department_name%TYPE;rec_count number := 0;BEGINSELECT count(*)INTO rec_countFROM employeesWHERE employee_id = emp_id;IF rec_count = 1 THENSELECT *INTO emp_rowFROM employeesWHERE employee_id = emp_id;IF emp_row.department_id != dept_id THENemp_row.department_id := dept_id;UPDATE employees SET ROW = emp_rowWHERE employee_id = emp_id;SELECT department_nameINTO deptfrom departmentsWHERE department_id = dept_id;DBMS_OUTPUT.PUT_LINE('The employee ' || emp_row.first_name || ' ' ||emp_row.last_name || ' is now in department: ' || dept);ELSEDBMS_OUTPUT.PUT_LINE('The employee is already in that department...no change');END IF;ELSIF rec_count > 1 THENDBMS_OUTPUT.PUT_LINE('The employee ID you entered is not unique');ELSEDBMS_OUTPUT.PUT_LINE('No employee records match the given employee ID');END IF;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('Invalid employee or department ID, try again');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('Unsuccessful change, please check ID numbers and try again');END;

Page 26: Manejador de Base Datos

DECLAREUSername varchar2(100);ip_address varchar2(100);BEGINSELECT SYS_CONTEXT('USERENV','SESSION_USER'), SYS_CONTEXT('USERENV','IP_ADDRESS')INTO username, ip_addressFROM DUAL;DBMS_OUTPUT.PUT_LINE('The connected user is: ' || username || ', and the IP address?is ' ||ip_address);END;

Page 27: Manejador de Base Datos

DECLAREdept_id_var NUMBER(4) := &department_id;dept_name VARCHAR2(30);DECLAREdept_id_var NUMBER(4) := &department_id;dept_name VARCHAR2(30);emp_count NUMBER;BEGINSELECT count(*)INTO emp_countFROM employeesWHERE department_id = dept_id_var;SELECT department_nameINTO dept_nameFROM departmentsWHERE department_id = dept_id_var;DBMS_OUTPUT.PUT_LINE('There are ' || emp_count || ' employees ' ||'in the ' || dept_name || ' department.');END;

Page 28: Manejador de Base Datos

DECLAREfirst varchar2(20);last varchar2(25);emp_last VARCHAR2(25) := '&last_name';emp_count NUMBER;BEGINSELECT count(*)INTO emp_countFROM employeesWHERE last_name = emp_last;IF emp_count > 1 THENDBMS_OUTPUT.PUT_LINE('More than 1 employee exists with that name.');ELSESELECT first_name, last_nameINTO first, lastFROM employeesWHERE last_name = emp_last;DBMS_OUTPUT.PUT_LINE('The matching employee is: ' ||first || ' ' || last);END IF;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('Please enter a different last name.');END;

Page 29: Manejador de Base Datos

DECLAREmgr_id NUMBER(6) := '&current_manager_id';dept_count number := 0;BEGINSELECT count(*)INTO dept_countDECLAREdept_name departments.department_name%TYPE;dept_id NUMBER(6) := &department_id;BEGINSELECT department_nameINTO dept_nameFROM departmentsWHERE department_id = dept_id;DBMS_OUTPUT.PUT_LINE('The department with the given ID is: ' || dept_name);EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('No department for the given ID');END;