SlideShare uma empresa Scribd logo
1 de 11
/*
Sesión03 – Creación de Objetos
Estudiante: José Luis Toro Alcarraz
Curso: Base de Datos Avanzado II
Correo:i201010865@cibertec.edu.pe
*/
Objetivo de la sesión.
Describir algunos objetos de la base de datos y sus usos.
Crear, mantener y usar tablas, índices, constraints, secuencias y sinónimos.
1) Manejo de tablas. (Ver sesión anterior)
2) Manejo de constraints.
3) Manejo de secuencias.
4) Manejo de índices.
5) Manejo de sinónimos.
2) Manejo de constraints.







Fuerzan las reglas a nivel de tabla.
Evitan la eliminación de una tabla o de sus registros si hay dependencias.
Si no se asigna un nombre a un constraints Oracle Server genera un nombre con el
formato SYS_Cn.
Un constraint se puede crear al mismo tiempo que se crea la tabla o bien una vez creada la
tabla.
Se pueden definir a nivel de columna o de tabla.
Los constrtaints se pueden visualizar en el diccionario de datos.

Sentencias
CREATE TABLE [schema.] table
(column datatype [DEFAULT expr]
[column_constraint],

Utilice la sentence ALTER TABLE para:
 Agregar o borrar una restricción, sin
modificar su estructura.
 Activar o desactivar restricciones.
 Agregar una restricción NOT NULL
agregando la cláusula MODIFY.

Desactivar un constraint
ALTER TABLE table
DISABLE CONSTRAINT nom_constraint

Tipos de constraints
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK

ALTER TABLE table
ADD CONSTRAINT nom_constraint
FOREING KEY(column)
REFERENCES table_dest (column);
ALTER TABLE emp
DROP CONSTRAINT emp_manager_fk;
ALTER TABLE departamento
DROP PRIMARY KEY CASCADE;
Activar un constraint
ALTER TABLE table
ENABLE CONSTRAINT nom_constraint
Ejemplo1: Cree la tabla CINE y verifique que los campos NOMBRE y DIRECCION no sean nulos.
SQL> CREATE TABLE CINE
(
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (50) CONSTRAINT NN_CINE_NOMBRE NOT NULL,
DIRECCION VARCHAR2 (100) NOT NULL,
CAPACIDAD NUMBER (4),
FECHAINAUG DATE
);
Tabla creada.
Muestra la estructura de tabla CINE
SQL> DESC CINE;
Nombre
┐Nulo? Tipo
----------------------------------------- -------- ---------------------------CODCINE
NOMBRE
DIRECCION
CAPACIDAD
FECHAINAUG

NOT NULL
NOT NULL

NUMBER(4)
VARCHAR2(50)
VARCHAR2(100)
NUMBER(4)
DATE

Muestra los CONSTRAINTS de la tabla CINE.
SQL> SELECT CONSTRAINT_NAME, TABLE_NAME FROM USER_CONSTRAINTS
WHERE TABLE_NAME = 'CINE';
CONSTRAINT_NAME
TABLE_NAME
------------------------------ -----------------------------NN_CINE_NOMBRE
CINE
SYS_C0011190
CINE
Muestra los CONSTRAINTS de la tabla CINE y en que columna.
SQL> SELECT CONSTRAINT_NAME NOMBRE,TABLE_NAME TABLA,
SUBSTR(COLUMN_NAME,1,255)COLUMNA FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME = 'CINE';
NOMBRE
TABLA
COLUMNA
------------------------------ ------------------------------ ---------------------------------SYS_C0011190
CINE
DIRECCION
NN_CINE_NOMBRE
CINE
NOMBRE
Eliminar la tabla CINE.
SQL> DROP TABLE CINE;
Tabla borrada.
Ejemplo2: Creamos nuevamente la tabla CINE y verificamos que los campos NOMBRE Y
DIRECCION sean únicos.
SQL> CREATE TABLE CINE
(
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (50) CONSTRAINT UK_NOMBRE UNIQUE,
DIRECCION VARCHAR2 (100) UNIQUE,
CAPACIDAD NUMBER (6),
FECHAINAUG DATE
);
Tabla creada.
Eliminar la tabla CINE.
SQL> DROP TABLE CINE;
Tabla borrada.
Creamos la tabla CINE con su llave primaria y verifique que el valor de la columna NOMBRE sea
único.
SQL> CREATE TABLE CINE
(
CODCINE NUMBER (4) CONSTRAINT PK_CINE PRIMARY KEY,
NOMBRE VARCHAR2 (50) CONSTRAINT UK_NOMBRE UNIQUE,
DIRECCION VARCHAR2 (100),
CAPACIDAD NUMBER (6),
FECHAINAUG DATE
);
Tabla creada.
Creamos la tabla SALA con su llave primaria y referenciamos a la tabla CINE.
SQL> CREATE TABLE SALA
(
CODSALA NUMBER (4),
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (20),
CAPACIDAD NUMBER (6),
CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA),
CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE) REFERENCES CINE(CODCINE)
);
Tabla creada.
Muestra los CONSTRAINTS de la tabla SALA y en que columna.
SQL> SELECT CONSTRAINT_NAME NOMBRE,TABLE_NAME TABLA,
SUBSTR(COLUMN_NAME,1,255)COLUMNA FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME = 'SALA';
NOMBRE
TABLA
COLUMNA
------------------------------ ------------------------------ ---------------------------------FK_CODCINE

SALA

CODCINE

PK_CODSALA
SALA
Elimin
Eliminamos la tabla SALA
ar la tabla SALA.
SQL> DROP TABLE SALA;

CODSALA

Tabla borrada.
Ejemplo3: Creamos la tabla SALA aplicando el CONSTRAINT CHECK en el campo capacidad, el
CONSTRAINT PRIMARY KEY al campo CODSALA y el CONSTRAINT FOREIGN KEY al campo
CODCINE.
SQL> CREATE TABLE SALA
(
CODSALA NUMBER (4),
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (20),
CAPACIDAD NUMBER (6) CONSTRAINT CK_CAPACIDAD CHECK (CAPACIDAD>0),
CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA),
CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE) REFERENCES CINE(CODCINE)
);
Tabla creada.
Eliminamos la tabla CINE y SALA.
SQL> DROP TABLE SALA;
Tabla borrada.
SQL> DROP TABLE CINE;
Tabla borrada.
Ejemplo4: Creamos la tabla CINE para luego alterar la tabla agregando restricciones.
SQL> CREATE TABLE CINE
(
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (50),
DIRECCION VARCHAR2 (100),
CAPACIDAD NUMBER (6),
FECHAINAUG DATE
);
Tabla creada.
Modificamos la tabla CINE agregándole un PRIMARY KEY al campo CODCINE y un UNIQUE al
campo nombre.
SQL> ALTER TABLE CINE
ADD CONSTRAINT PK_CODCINE PRIMARY KEY (CODCINE);
Tabla modificada.
SQL> ALTER TABLE CINE
ADD CONSTRAINT UK_NOMBRE UNIQUE (NOMBRE);
Tabla modificada.
Ejemplo5: Creamos la tabla SALA para luego alterar la tabla agregando restricciones.
SQL> CREATE TABLE SALA
(
CODSALA NUMBER (4),
CODCINE NUMBER (4),
NOMBRE VARCHAR2 (20),
CAPACIDAD NUMBER (6)
);
Tabla creada
Modificamos la tabla SALA agregando un PRIMARY KEY a CODSALA, un FOREIGN KEY a
CODCINE, un CHECK a CAPACIDAD y un NOT NULL a NOMBRE.
SQL> ALTER TABLE SALA
ADD CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA);
Tabla modificada.
SQL> ALTER TABLE SALA
ADD CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE)
REFERENCES CINE (CODCINE);
Tabla modificada.
SQL> ALTER TABLE SALA
ADD CONSTRAINT CK_CAPACIDAD CHECK (CAPACIDAD>0);
Tabla modificada
SQL> ALTER TABLE SALA
MODIFY (NOMBRE VARCHAR2 (20) CONSTRAINT NN_NOMBRE NOT NULL);
Tabla modificada
3) Manejo de secuencias
Primero estar seguros que estamos conectado con el usuario scott/tiger.
SQL> connect scott/tiger
Conectado.
NEXTVAL: Genera una nueva secuencia.
CURRVAL: Obtiene el ultimo valor de la secuencia.
DUAL: Tabla auxiliar de Oracle que permite ejecutar este tipo de secuencias sin necesidad de
usar la base de datos.
Ejemplo1: Creamos una secuencia cuyo valor con que inicia sea 1 y el incremento sea 2.
SQL> CREATE SEQUENCE MISECUENCIA
START WITH 1
INCREMENT BY 2;
Secuencia creada.
Luego comprobamos generando una nueva secuencia una y otra vez.
SQL> SELECT MISECUENCIA.NEXTVAL FROM DUAL;
NEXTVAL
---------1
SQL> SELECT MISECUECNIA.NEXTVAL FROM DUAL;
NEXTVAL
---------3
Ahora comprobamos cual fue el último valor de la secuencia.
SQL> SELECT MISECUENCIA.CURRVAL FROM DUAL;
CURRVAL
---------3
Ejemplo2: Insertar un registro a la tabla departamento del esquema Scott generando el código de
departamento mediante una secuencia.
Muestra la información de la tabla DEPARTAMENTO del esquema SCOTT
SQL> SELECT * FROM DEPT;
DEPTNO
--------------10
20
30
40

DNAME
--------------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

Creamos una secuencia para la tabla DEPT.
SQL> CREATE SEQUENCE SEQ_DEPT
START WITH 50
INCREMENT BY 10;
Secuencia creada.
Insertamos un registro a la tabla DEPT.
SQL> INSERT INTO DEPT (DEPTNO, DNAME, LOC)
VALUES (SEQ_DEPT.NEXTVAL, 'SISTEMA','LIMA');
1 fila creada.
Selecciona todos los campos de la tabla DEPT. Y podremos observar que hemos generado una
secuencia.
SQL> SELECT * FROM DEPT;
DEPTNO DNAME
LOC
---------- -------------- ------------10 ACCOUNTING
NEW YORK
20 RESEARCH
DALLAS
30 SALES
CHICAGO
40 OPERATIONS
BOSTON
50 SISTEMA
LIMA
Ahora ejecuta la siguiente sentencia ¿qué ocurrirá?
SQL> SELECT SEQ_DEPT.NEXTVAL FROM DUAL;
NEXTVAL
---------60
SQL> INSERT INTO DEPT (DEPTNO, DNAME, LOC)
VALUES (SEQ_DEPT.NEXTVAL, 'RRHH','LINCE');
1 fila creada.
Nuevamente seleccionamos la tabla DEPT.
SQL> SELECT * FROM DEPT;
DEPTNO DNAME
LOC
---------- -------------- ------------10 ACCOUNTING NEW YORK
20 RESEARCH
DALLAS
30 SALES
CHICAGO
40 OPERATIONS
BOSTON
50 SISTEMA
LIMA
70 RRHH
LINCE
6 filas seleccionadas.
Eliminar una secuencia..
SQL> DROP SEQUENCE SEQ_DEPT;
Secuencia borrada.
4) Manejo de índices
Cuando se debe crear un índice.






Debe crear un índice si:
Una columna contiene un amplio rango de valores.
Una columna contiene un gran número de valores nulos.
Una o más columnas se utilizan juntas frecuentemente en una clausula WHERE o en una
condición de unión.
La tabla es grande y se espera que la mayoría de las consultas recuperen del 10 por ciento
de las filas.

Cuando no se debe crear un índice.




La tabla es pequeña.
Las columnas no se suelen utilizar como condición en la consulta.
Se espera que la mayoría de las consultas recuperen más del 10 por ciento de las filas de
la tabla.



La tabla se actualiza frecuentemente.
Se hace referencia a las columnas indexadas como parte de una expresión.

Índices basados en funciones.
 Un índice basado en función es un índice basado en expresiones.
 La expresión de índice se crea desde columnas de tabla, constantes, funciones SQL y
funciones definidas por el usuario
Ejemplo: CREATE INDEX upper_dept_name_idx ON departamento (UPPER(department_name));
Sintaxis
CREATE INDEX index
ON table (column[, column] …);
Ejemplo1: Estamos indicando a Oracle que cree la tabla "FACTURACION", con el campo
"CODIGO" y que éste sea clave primaria, por lo que creará un índice automáticamente para este
campo. Esta es una forma de crear índices, en la creación de la tabla:
SQL> CREATE TABLE FACTURACION
(
CODIGO NUMBER (10) NOT NULL,
FECHA DATE DEFAULT SYSDATE,
CODIGOCLIENTE NUMBER (10),
NOMBRECLIENTE VARCHAR2 (100),
OBSERVACION VARCHAR2 (2000),
CONSTRAINT PK_FACTURACION_CODIGO PRIMARY KEY (CODIGO)
) TABLESPACE USERS;
Tabla creada.
Tras crear la tabla insertaremos algunos registros
SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, NOMBRECLIENTE)
VALUES (1, 50, 'AJPDSOFT');
1 fila creada.
Ejemplo2: Crear un índice al campo NOMBRECLIENTE de la tabla FACTURACION.
SQL> CREATE INDEX IN_FACTURACION_NOMBRECLIENTE
ON FACTURACION (NOMBRECLIENTE);
═ndice creado.
Para ver el índice creado podemos ejecutar la siguiente consulta
SQL> SELECT INDEX_NAME, TABLE_NAME FROM USER_INDEXES
WHERE TABLE_NAME = 'FACTURACION';
INDEX_NAME
TABLE_NAME
------------------------------ -----------------------------PK_FACTURACION_CODIGO
FACTURACION
IN_FACTURACION_NOMBRECLIENTE FACTURACION
Para ver el índice creado podemos ejecutar también una consulta mas especifica.
SQL> SELECT INDEX_NAME NOMBRE, INDEX_TYPE TIPO, TABLE_NAME TABLA,
TABLESPACE_NAME TABLESPACE, SECONDARY SECUNDARIO
FROM ALL_INDEXES WHERE TABLE_NAME = 'FACTURACION';
NOMBRE
TIPO
TABLA
TABLESPACE
S
------------------------------ --------------------------- ------------------------------ ------------------------------ -PK_FACTURACION_CODIGO
NORMAL FACTURACION
USERS
N
IN_FACTURACION_NOMBRECLIENTE NORMAL FACTURACION

SYSTEM

N

Ejemplo3: Para añadir un índice de tipo UNIQUE, obligando a que los valores del campo indexado
sean unívocos, es decir no se puedan repetir en el campo de la tabla.
SQL> CREATE UNIQUE INDEX IN_FACTURACION_CODCLI_FE
ON FACTURACION (CODIGOCLIENTE, FECHA);
═ndice creado.
De esta forma Oracle no permitirá que haya dos registros en la tabla "FACTURACION" con el
mismo valor en los campos "CODIGOCLIENTE" y "FECHA", es decir, sólo podrá añadirse una
factura por cliente y por día, un cliente no podrá tener dos facturas en un mismo día. Por ejemplo,
si insertamos este registró:
SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA)
VALUES (6900, 500, TO_DATE ('09/12/2013', 'DD-MM-YYYY'));
1 fila creada.
Intentaremos insertar un segundo registro con el mismo valor en CODIGOCLIENTE y en FECHA:
SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA)
VALUES (6910, 500, TO_DATE ('09/12/2013', 'DD-MM-YYYY'));
INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA)
*
ERROR en lÝnea 1:
ORA-00001: restricci¾n ·nica (SYS.IN_FACTURACION_CODCLI_FE) violada
Eliminar un índice.
SQL> DROP INDEX IN_FACTURACION_NOMBRECLIENTE;
═ndice borrado.
SQL> DROP INDEX IN_FACTURACION_CODCLI_FE;
═ndice borrado.
5) Manejo de sinónimos
 Proporciona nombre alternativos a objetos.
 Se facilita la referencia a objetos pertenecientes a otros usuarios.
 Reduce nombres largos de objetos.
 Nombre de sinónimo.
 Nombre de objeto al que lo asociamos.
 Usuario creador debe tener privilegio CREATE SYNONYM.
Sintaxs
CREATE [PUBLIC] SYNONYM synonym
FOR object;
Primero conectémonos con el usuario SYS.
SQL> connect sys/cibertec as sysdba
Conectado.
Seleccionamos la tabla CINE del esquema SCOTT desde el usuario SYS.
SQL> SELECT * FROM SCOTT.CINE;
ninguna fila seleccionada
Ahora creamos un sinónimo para la tabla CINE del esquema SCOTT.Y comprobamos haciendo un
SELECT a la tabla CINE
SQL> CREATE PUBLIC SYNONYM CINE FOR SCOTT.CINE;
Sin¾nimo creado.
SQL> SELECT * FROM CINE;
ninguna fila seleccionada
Eliminar un sinónimo.
SQL> DROP PUBLIC SYNONYM CINE;
Sin¾nimo borrado.

Mais conteúdo relacionado

Mais procurados

Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
guesta403644
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
Byron Eras
 
Sentencias dml y ddl
Sentencias dml y ddlSentencias dml y ddl
Sentencias dml y ddl
kleberyauti
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 

Mais procurados (20)

Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
Breve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQLBreve resumen sobre consultas básicas en MySQL
Breve resumen sobre consultas básicas en MySQL
 
Curso Básico de Pl Sql Oracle
Curso Básico de Pl Sql OracleCurso Básico de Pl Sql Oracle
Curso Básico de Pl Sql Oracle
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
Vistas
VistasVistas
Vistas
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
SQL
SQLSQL
SQL
 
Procedimientos Almacenados
Procedimientos AlmacenadosProcedimientos Almacenados
Procedimientos Almacenados
 
Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11Utilizando DDL SQL oracle Z051 Cap 11
Utilizando DDL SQL oracle Z051 Cap 11
 
Parte 08 my sql
Parte 08 my sqlParte 08 my sql
Parte 08 my sql
 
Cap I Plsql
Cap I PlsqlCap I Plsql
Cap I Plsql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
7.1. procedimientos almacenados
7.1.  procedimientos almacenados7.1.  procedimientos almacenados
7.1. procedimientos almacenados
 
Comandos utilizados en sql
Comandos utilizados en sqlComandos utilizados en sql
Comandos utilizados en sql
 
Sentencias dml y ddl
Sentencias dml y ddlSentencias dml y ddl
Sentencias dml y ddl
 
Plsql y paquetes
Plsql y paquetesPlsql y paquetes
Plsql y paquetes
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 

Destaque

Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
mtemarialuisa
 
NATURA SOCIETAT: HARMONIES, CRISIS I IMPACTES
NATURA  SOCIETAT: HARMONIES, CRISIS I IMPACTESNATURA  SOCIETAT: HARMONIES, CRISIS I IMPACTES
NATURA SOCIETAT: HARMONIES, CRISIS I IMPACTES
locoserrallo
 
Imperialisme Colonialisme
Imperialisme ColonialismeImperialisme Colonialisme
Imperialisme Colonialisme
jestiarte
 
Disruptor tools in action
Disruptor   tools in actionDisruptor   tools in action
Disruptor tools in action
Michael Barker
 
The 8051 assembly language
The 8051 assembly languageThe 8051 assembly language
The 8051 assembly language
hemant meena
 

Destaque (20)

Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)
 
CiU denuncia l’increment desmesurat de personal del Govern Tripartit
CiU denuncia l’increment desmesurat de personal del Govern TripartitCiU denuncia l’increment desmesurat de personal del Govern Tripartit
CiU denuncia l’increment desmesurat de personal del Govern Tripartit
 
Presentació 22@Barcelona, El districte de la Innovació
Presentació 22@Barcelona, El districte de la InnovacióPresentació 22@Barcelona, El districte de la Innovació
Presentació 22@Barcelona, El districte de la Innovació
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
la embrilogia
la embrilogiala embrilogia
la embrilogia
 
Unitat 6.- Tipus de Mercat
Unitat 6.- Tipus de MercatUnitat 6.- Tipus de Mercat
Unitat 6.- Tipus de Mercat
 
Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2Manual Netbeans Bases Datos2
Manual Netbeans Bases Datos2
 
NATURA SOCIETAT: HARMONIES, CRISIS I IMPACTES
NATURA  SOCIETAT: HARMONIES, CRISIS I IMPACTESNATURA  SOCIETAT: HARMONIES, CRISIS I IMPACTES
NATURA SOCIETAT: HARMONIES, CRISIS I IMPACTES
 
Pla ferroviari
Pla ferroviariPla ferroviari
Pla ferroviari
 
Imperialisme Colonialisme
Imperialisme ColonialismeImperialisme Colonialisme
Imperialisme Colonialisme
 
Java Concurrency Idioms
Java Concurrency IdiomsJava Concurrency Idioms
Java Concurrency Idioms
 
La gestion de projet Agile
La gestion de projet AgileLa gestion de projet Agile
La gestion de projet Agile
 
Disruptor tools in action
Disruptor   tools in actionDisruptor   tools in action
Disruptor tools in action
 
Trial set
Trial setTrial set
Trial set
 
Intro to scaling Databases
Intro to scaling DatabasesIntro to scaling Databases
Intro to scaling Databases
 
The 8051 assembly language
The 8051 assembly languageThe 8051 assembly language
The 8051 assembly language
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
 
Conflict Resolution In Kai
Conflict Resolution In KaiConflict Resolution In Kai
Conflict Resolution In Kai
 
Agile Development
Agile DevelopmentAgile Development
Agile Development
 
Downtown & Infill Tax Increment Districts: Strategies for Success
Downtown & Infill Tax Increment Districts: Strategies for SuccessDowntown & Infill Tax Increment Districts: Strategies for Success
Downtown & Infill Tax Increment Districts: Strategies for Success
 

Semelhante a Sesión03 - Creación de objetos (Oracle)

Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
usamn
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
Julio Pari
 

Semelhante a Sesión03 - Creación de objetos (Oracle) (20)

1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones1 lab-2 -tablas-y-restricciones
1 lab-2 -tablas-y-restricciones
 
Sql Lenguaje Estructurado de Consulta
Sql Lenguaje Estructurado de ConsultaSql Lenguaje Estructurado de Consulta
Sql Lenguaje Estructurado de Consulta
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
 
Comandos mysql
Comandos mysqlComandos mysql
Comandos mysql
 
Manual practico-sql
Manual practico-sqlManual practico-sql
Manual practico-sql
 
Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas  Manual practico para sql ingieneria de sistemas
Manual practico para sql ingieneria de sistemas
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Manual practicosql
Manual practicosqlManual practicosql
Manual practicosql
 
Manual practico SQL
Manual practico SQLManual practico SQL
Manual practico SQL
 
Sentencias Sql
Sentencias SqlSentencias Sql
Sentencias Sql
 
comandos-mysql.pdf
comandos-mysql.pdfcomandos-mysql.pdf
comandos-mysql.pdf
 
Comandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portalComandos en consola de mysql desde el portal
Comandos en consola de mysql desde el portal
 
Tutorial sql server
Tutorial sql serverTutorial sql server
Tutorial sql server
 
CONSULTA SQL ROMERO
CONSULTA SQL ROMEROCONSULTA SQL ROMERO
CONSULTA SQL ROMERO
 
210927124637-Manual MySQL.pdf
210927124637-Manual MySQL.pdf210927124637-Manual MySQL.pdf
210927124637-Manual MySQL.pdf
 
Manual MySQL.pdf
Manual MySQL.pdfManual MySQL.pdf
Manual MySQL.pdf
 
Introduccion ddl
Introduccion ddlIntroduccion ddl
Introduccion ddl
 
Tm13 introduccion al_sql
Tm13 introduccion al_sqlTm13 introduccion al_sql
Tm13 introduccion al_sql
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 
Tema 3.2 SQL.ppt
Tema 3.2 SQL.pptTema 3.2 SQL.ppt
Tema 3.2 SQL.ppt
 

Último

PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Último (20)

PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 

Sesión03 - Creación de objetos (Oracle)

  • 1. /* Sesión03 – Creación de Objetos Estudiante: José Luis Toro Alcarraz Curso: Base de Datos Avanzado II Correo:i201010865@cibertec.edu.pe */ Objetivo de la sesión. Describir algunos objetos de la base de datos y sus usos. Crear, mantener y usar tablas, índices, constraints, secuencias y sinónimos. 1) Manejo de tablas. (Ver sesión anterior) 2) Manejo de constraints. 3) Manejo de secuencias. 4) Manejo de índices. 5) Manejo de sinónimos. 2) Manejo de constraints.       Fuerzan las reglas a nivel de tabla. Evitan la eliminación de una tabla o de sus registros si hay dependencias. Si no se asigna un nombre a un constraints Oracle Server genera un nombre con el formato SYS_Cn. Un constraint se puede crear al mismo tiempo que se crea la tabla o bien una vez creada la tabla. Se pueden definir a nivel de columna o de tabla. Los constrtaints se pueden visualizar en el diccionario de datos. Sentencias CREATE TABLE [schema.] table (column datatype [DEFAULT expr] [column_constraint], Utilice la sentence ALTER TABLE para:  Agregar o borrar una restricción, sin modificar su estructura.  Activar o desactivar restricciones.  Agregar una restricción NOT NULL agregando la cláusula MODIFY. Desactivar un constraint ALTER TABLE table DISABLE CONSTRAINT nom_constraint Tipos de constraints NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK ALTER TABLE table ADD CONSTRAINT nom_constraint FOREING KEY(column) REFERENCES table_dest (column); ALTER TABLE emp DROP CONSTRAINT emp_manager_fk; ALTER TABLE departamento DROP PRIMARY KEY CASCADE; Activar un constraint ALTER TABLE table ENABLE CONSTRAINT nom_constraint
  • 2. Ejemplo1: Cree la tabla CINE y verifique que los campos NOMBRE y DIRECCION no sean nulos. SQL> CREATE TABLE CINE ( CODCINE NUMBER (4), NOMBRE VARCHAR2 (50) CONSTRAINT NN_CINE_NOMBRE NOT NULL, DIRECCION VARCHAR2 (100) NOT NULL, CAPACIDAD NUMBER (4), FECHAINAUG DATE ); Tabla creada. Muestra la estructura de tabla CINE SQL> DESC CINE; Nombre ┐Nulo? Tipo ----------------------------------------- -------- ---------------------------CODCINE NOMBRE DIRECCION CAPACIDAD FECHAINAUG NOT NULL NOT NULL NUMBER(4) VARCHAR2(50) VARCHAR2(100) NUMBER(4) DATE Muestra los CONSTRAINTS de la tabla CINE. SQL> SELECT CONSTRAINT_NAME, TABLE_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'CINE'; CONSTRAINT_NAME TABLE_NAME ------------------------------ -----------------------------NN_CINE_NOMBRE CINE SYS_C0011190 CINE Muestra los CONSTRAINTS de la tabla CINE y en que columna. SQL> SELECT CONSTRAINT_NAME NOMBRE,TABLE_NAME TABLA, SUBSTR(COLUMN_NAME,1,255)COLUMNA FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = 'CINE'; NOMBRE TABLA COLUMNA ------------------------------ ------------------------------ ---------------------------------SYS_C0011190 CINE DIRECCION NN_CINE_NOMBRE CINE NOMBRE Eliminar la tabla CINE. SQL> DROP TABLE CINE;
  • 3. Tabla borrada. Ejemplo2: Creamos nuevamente la tabla CINE y verificamos que los campos NOMBRE Y DIRECCION sean únicos. SQL> CREATE TABLE CINE ( CODCINE NUMBER (4), NOMBRE VARCHAR2 (50) CONSTRAINT UK_NOMBRE UNIQUE, DIRECCION VARCHAR2 (100) UNIQUE, CAPACIDAD NUMBER (6), FECHAINAUG DATE ); Tabla creada. Eliminar la tabla CINE. SQL> DROP TABLE CINE; Tabla borrada. Creamos la tabla CINE con su llave primaria y verifique que el valor de la columna NOMBRE sea único. SQL> CREATE TABLE CINE ( CODCINE NUMBER (4) CONSTRAINT PK_CINE PRIMARY KEY, NOMBRE VARCHAR2 (50) CONSTRAINT UK_NOMBRE UNIQUE, DIRECCION VARCHAR2 (100), CAPACIDAD NUMBER (6), FECHAINAUG DATE ); Tabla creada. Creamos la tabla SALA con su llave primaria y referenciamos a la tabla CINE. SQL> CREATE TABLE SALA ( CODSALA NUMBER (4), CODCINE NUMBER (4), NOMBRE VARCHAR2 (20), CAPACIDAD NUMBER (6), CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA), CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE) REFERENCES CINE(CODCINE) );
  • 4. Tabla creada. Muestra los CONSTRAINTS de la tabla SALA y en que columna. SQL> SELECT CONSTRAINT_NAME NOMBRE,TABLE_NAME TABLA, SUBSTR(COLUMN_NAME,1,255)COLUMNA FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = 'SALA'; NOMBRE TABLA COLUMNA ------------------------------ ------------------------------ ---------------------------------FK_CODCINE SALA CODCINE PK_CODSALA SALA Elimin Eliminamos la tabla SALA ar la tabla SALA. SQL> DROP TABLE SALA; CODSALA Tabla borrada. Ejemplo3: Creamos la tabla SALA aplicando el CONSTRAINT CHECK en el campo capacidad, el CONSTRAINT PRIMARY KEY al campo CODSALA y el CONSTRAINT FOREIGN KEY al campo CODCINE. SQL> CREATE TABLE SALA ( CODSALA NUMBER (4), CODCINE NUMBER (4), NOMBRE VARCHAR2 (20), CAPACIDAD NUMBER (6) CONSTRAINT CK_CAPACIDAD CHECK (CAPACIDAD>0), CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA), CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE) REFERENCES CINE(CODCINE) ); Tabla creada. Eliminamos la tabla CINE y SALA. SQL> DROP TABLE SALA; Tabla borrada. SQL> DROP TABLE CINE; Tabla borrada. Ejemplo4: Creamos la tabla CINE para luego alterar la tabla agregando restricciones.
  • 5. SQL> CREATE TABLE CINE ( CODCINE NUMBER (4), NOMBRE VARCHAR2 (50), DIRECCION VARCHAR2 (100), CAPACIDAD NUMBER (6), FECHAINAUG DATE ); Tabla creada. Modificamos la tabla CINE agregándole un PRIMARY KEY al campo CODCINE y un UNIQUE al campo nombre. SQL> ALTER TABLE CINE ADD CONSTRAINT PK_CODCINE PRIMARY KEY (CODCINE); Tabla modificada. SQL> ALTER TABLE CINE ADD CONSTRAINT UK_NOMBRE UNIQUE (NOMBRE); Tabla modificada. Ejemplo5: Creamos la tabla SALA para luego alterar la tabla agregando restricciones. SQL> CREATE TABLE SALA ( CODSALA NUMBER (4), CODCINE NUMBER (4), NOMBRE VARCHAR2 (20), CAPACIDAD NUMBER (6) ); Tabla creada Modificamos la tabla SALA agregando un PRIMARY KEY a CODSALA, un FOREIGN KEY a CODCINE, un CHECK a CAPACIDAD y un NOT NULL a NOMBRE. SQL> ALTER TABLE SALA ADD CONSTRAINT PK_CODSALA PRIMARY KEY (CODSALA); Tabla modificada. SQL> ALTER TABLE SALA ADD CONSTRAINT FK_CODCINE FOREIGN KEY (CODCINE) REFERENCES CINE (CODCINE); Tabla modificada.
  • 6. SQL> ALTER TABLE SALA ADD CONSTRAINT CK_CAPACIDAD CHECK (CAPACIDAD>0); Tabla modificada SQL> ALTER TABLE SALA MODIFY (NOMBRE VARCHAR2 (20) CONSTRAINT NN_NOMBRE NOT NULL); Tabla modificada 3) Manejo de secuencias Primero estar seguros que estamos conectado con el usuario scott/tiger. SQL> connect scott/tiger Conectado. NEXTVAL: Genera una nueva secuencia. CURRVAL: Obtiene el ultimo valor de la secuencia. DUAL: Tabla auxiliar de Oracle que permite ejecutar este tipo de secuencias sin necesidad de usar la base de datos. Ejemplo1: Creamos una secuencia cuyo valor con que inicia sea 1 y el incremento sea 2. SQL> CREATE SEQUENCE MISECUENCIA START WITH 1 INCREMENT BY 2; Secuencia creada. Luego comprobamos generando una nueva secuencia una y otra vez. SQL> SELECT MISECUENCIA.NEXTVAL FROM DUAL; NEXTVAL ---------1 SQL> SELECT MISECUECNIA.NEXTVAL FROM DUAL; NEXTVAL ---------3 Ahora comprobamos cual fue el último valor de la secuencia. SQL> SELECT MISECUENCIA.CURRVAL FROM DUAL;
  • 7. CURRVAL ---------3 Ejemplo2: Insertar un registro a la tabla departamento del esquema Scott generando el código de departamento mediante una secuencia. Muestra la información de la tabla DEPARTAMENTO del esquema SCOTT SQL> SELECT * FROM DEPT; DEPTNO --------------10 20 30 40 DNAME --------------------ACCOUNTING RESEARCH SALES OPERATIONS LOC ------------NEW YORK DALLAS CHICAGO BOSTON Creamos una secuencia para la tabla DEPT. SQL> CREATE SEQUENCE SEQ_DEPT START WITH 50 INCREMENT BY 10; Secuencia creada. Insertamos un registro a la tabla DEPT. SQL> INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (SEQ_DEPT.NEXTVAL, 'SISTEMA','LIMA'); 1 fila creada. Selecciona todos los campos de la tabla DEPT. Y podremos observar que hemos generado una secuencia. SQL> SELECT * FROM DEPT; DEPTNO DNAME LOC ---------- -------------- ------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 SISTEMA LIMA Ahora ejecuta la siguiente sentencia ¿qué ocurrirá? SQL> SELECT SEQ_DEPT.NEXTVAL FROM DUAL;
  • 8. NEXTVAL ---------60 SQL> INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (SEQ_DEPT.NEXTVAL, 'RRHH','LINCE'); 1 fila creada. Nuevamente seleccionamos la tabla DEPT. SQL> SELECT * FROM DEPT; DEPTNO DNAME LOC ---------- -------------- ------------10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 SISTEMA LIMA 70 RRHH LINCE 6 filas seleccionadas. Eliminar una secuencia.. SQL> DROP SEQUENCE SEQ_DEPT; Secuencia borrada. 4) Manejo de índices Cuando se debe crear un índice.      Debe crear un índice si: Una columna contiene un amplio rango de valores. Una columna contiene un gran número de valores nulos. Una o más columnas se utilizan juntas frecuentemente en una clausula WHERE o en una condición de unión. La tabla es grande y se espera que la mayoría de las consultas recuperen del 10 por ciento de las filas. Cuando no se debe crear un índice.    La tabla es pequeña. Las columnas no se suelen utilizar como condición en la consulta. Se espera que la mayoría de las consultas recuperen más del 10 por ciento de las filas de la tabla.
  • 9.   La tabla se actualiza frecuentemente. Se hace referencia a las columnas indexadas como parte de una expresión. Índices basados en funciones.  Un índice basado en función es un índice basado en expresiones.  La expresión de índice se crea desde columnas de tabla, constantes, funciones SQL y funciones definidas por el usuario Ejemplo: CREATE INDEX upper_dept_name_idx ON departamento (UPPER(department_name)); Sintaxis CREATE INDEX index ON table (column[, column] …); Ejemplo1: Estamos indicando a Oracle que cree la tabla "FACTURACION", con el campo "CODIGO" y que éste sea clave primaria, por lo que creará un índice automáticamente para este campo. Esta es una forma de crear índices, en la creación de la tabla: SQL> CREATE TABLE FACTURACION ( CODIGO NUMBER (10) NOT NULL, FECHA DATE DEFAULT SYSDATE, CODIGOCLIENTE NUMBER (10), NOMBRECLIENTE VARCHAR2 (100), OBSERVACION VARCHAR2 (2000), CONSTRAINT PK_FACTURACION_CODIGO PRIMARY KEY (CODIGO) ) TABLESPACE USERS; Tabla creada. Tras crear la tabla insertaremos algunos registros SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, NOMBRECLIENTE) VALUES (1, 50, 'AJPDSOFT'); 1 fila creada. Ejemplo2: Crear un índice al campo NOMBRECLIENTE de la tabla FACTURACION. SQL> CREATE INDEX IN_FACTURACION_NOMBRECLIENTE ON FACTURACION (NOMBRECLIENTE); ═ndice creado. Para ver el índice creado podemos ejecutar la siguiente consulta SQL> SELECT INDEX_NAME, TABLE_NAME FROM USER_INDEXES WHERE TABLE_NAME = 'FACTURACION';
  • 10. INDEX_NAME TABLE_NAME ------------------------------ -----------------------------PK_FACTURACION_CODIGO FACTURACION IN_FACTURACION_NOMBRECLIENTE FACTURACION Para ver el índice creado podemos ejecutar también una consulta mas especifica. SQL> SELECT INDEX_NAME NOMBRE, INDEX_TYPE TIPO, TABLE_NAME TABLA, TABLESPACE_NAME TABLESPACE, SECONDARY SECUNDARIO FROM ALL_INDEXES WHERE TABLE_NAME = 'FACTURACION'; NOMBRE TIPO TABLA TABLESPACE S ------------------------------ --------------------------- ------------------------------ ------------------------------ -PK_FACTURACION_CODIGO NORMAL FACTURACION USERS N IN_FACTURACION_NOMBRECLIENTE NORMAL FACTURACION SYSTEM N Ejemplo3: Para añadir un índice de tipo UNIQUE, obligando a que los valores del campo indexado sean unívocos, es decir no se puedan repetir en el campo de la tabla. SQL> CREATE UNIQUE INDEX IN_FACTURACION_CODCLI_FE ON FACTURACION (CODIGOCLIENTE, FECHA); ═ndice creado. De esta forma Oracle no permitirá que haya dos registros en la tabla "FACTURACION" con el mismo valor en los campos "CODIGOCLIENTE" y "FECHA", es decir, sólo podrá añadirse una factura por cliente y por día, un cliente no podrá tener dos facturas en un mismo día. Por ejemplo, si insertamos este registró: SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA) VALUES (6900, 500, TO_DATE ('09/12/2013', 'DD-MM-YYYY')); 1 fila creada. Intentaremos insertar un segundo registro con el mismo valor en CODIGOCLIENTE y en FECHA: SQL> INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA) VALUES (6910, 500, TO_DATE ('09/12/2013', 'DD-MM-YYYY')); INSERT INTO FACTURACION (CODIGO, CODIGOCLIENTE, FECHA) * ERROR en lÝnea 1: ORA-00001: restricci¾n ·nica (SYS.IN_FACTURACION_CODCLI_FE) violada Eliminar un índice. SQL> DROP INDEX IN_FACTURACION_NOMBRECLIENTE;
  • 11. ═ndice borrado. SQL> DROP INDEX IN_FACTURACION_CODCLI_FE; ═ndice borrado. 5) Manejo de sinónimos  Proporciona nombre alternativos a objetos.  Se facilita la referencia a objetos pertenecientes a otros usuarios.  Reduce nombres largos de objetos.  Nombre de sinónimo.  Nombre de objeto al que lo asociamos.  Usuario creador debe tener privilegio CREATE SYNONYM. Sintaxs CREATE [PUBLIC] SYNONYM synonym FOR object; Primero conectémonos con el usuario SYS. SQL> connect sys/cibertec as sysdba Conectado. Seleccionamos la tabla CINE del esquema SCOTT desde el usuario SYS. SQL> SELECT * FROM SCOTT.CINE; ninguna fila seleccionada Ahora creamos un sinónimo para la tabla CINE del esquema SCOTT.Y comprobamos haciendo un SELECT a la tabla CINE SQL> CREATE PUBLIC SYNONYM CINE FOR SCOTT.CINE; Sin¾nimo creado. SQL> SELECT * FROM CINE; ninguna fila seleccionada Eliminar un sinónimo. SQL> DROP PUBLIC SYNONYM CINE; Sin¾nimo borrado.