Documente Academic
Documente Profesional
Documente Cultură
Sugerencias didácticas
Mostrar al alumno programas completos desarrollados en SQL de menor a mayor grado de
dificultad y con base en cada una de las instrucciones que los componen, enseñar la sintaxis
del lenguaje y la finalidad de cada una de ellas.
Solicitar que corrobore la validez del mismo, ejecutándolo en la computadora.
Solicitarle la elaboración de programas similares, agregándoles algunas variantes.
Solicitarle al alumno propuestas de problemas a resolver y que sean significativas para él.
Sugerencias de evaluación
El docente deberá considerar la evaluación, no solo como un medio de medir el
aprendizaje, sino como un indicador para enriquecer el proceso enseñanza-aprendizaje,
además de los exámenes tradicionales se recomienda se tome en cuenta: participación en
clases, elaboración de prácticas en el laboratorio y proyectos.
Bibliografía
Manual de introducción a SQL y PL-SQL Oracle, ORACLE UNIVERSITY.
Práctica 6: Escribir sub-consultas
1. Write a query lo display the employee name and hire date for all employees in the
same department as Blake. Exclude Blake.
ENAME HIREDATE
---------- ---------
ALLEN 20-FEB-81
WARD 22-FEB-81
MARTIN 28-SEP-81
TURNER 08-SEP-81
JAMES 03-DIC-81
2. Create a query to display the employee number and name for all employees who
earn more than the average salary. Son the results in descending order of salary.
EMPNO ENAME
--------- ----------
7839 KING
7788 SCOTT
7902 FORD
7566 JONES
7698 BLAKE
7782 CLARK
6 rows selected.
3. Write a query that will display the employee number and name for all employees
who work in a department with any employee chose name contains a T. Save your
SQL statement in a file called p6q3. sql.
EMPNO ENAME
--------- ----------
7369 SMITH
7876 ADAMS
7902 FORD
7788 SCOTT
7566 JONES
7499 ALLEN
7698 BLAKE
7654 MARTIN
7900 JAMES
7844 TURNER
7521 WARD
11 rows selected.
4. Display the employee name, department number, and job title for all employees
whose department location is Dallas.
5. Display the employee name and salary of all employees who report to King.
ENAME SAL
---------- ---------
JONES 2975
BLAKE 2850
CLARK 2450
6. Display the department number, name, and job for all employees in the Sales
department.
6 rows selected.
7. Modify p6q3.sql to display the employee number, name. and salary for all
employees who earn more than the average salary and who work in a department
with any employee with a T in their name. Resave as p6q7.sql. Rerun your query.
Sugerencias didácticas
Mostrar al alumno programas completos desarrollados en SQL de menor a mayor grado de
dificultad y con base en cada una de las instrucciones que los componen, enseñar la sintaxis
del lenguaje y la finalidad de cada una de ellas.
Solicitar que corrobore la validez del mismo, ejecutándolo en la computadora.
Solicitarle la elaboración de programas similares, agregándoles algunas variantes.
Solicitarle al alumno propuestas de problemas a resolver y que sean significativas para él.
Sugerencias de evaluación
El docente deberá considerar la evaluación, no solo como un medio de medir el
aprendizaje, sino como un indicador para enriquecer el proceso enseñanza-aprendizaje,
además de los exámenes tradicionales se recomienda se tome en cuenta: participación en
clases, elaboración de prácticas en el laboratorio y proyectos.
Bibliografía
Manual de introducción a SQL y PL-SQL Oracle, ORACLE UNIVERSITY.
Práctica 7: Sub-consultas en múltiples columnas
1. Write a query to display the name, department number, and salary of any employee
whose department number and salary match the department number and salary of
any employee who earns a commission.
2. Display the name, department name, and salary of any employee whose salary and
commission match the salary and commission of any employee located in Dallas.
3. Create a query to display the name, hire date, and salary for all employees who
have both the same salary and commission as Scott. Note : Do not display SCOTT
in the result set.
4. Create a query to display the employees that earn a salary that is higher than the
salary of all of the clerks. Sort the results on salary from highest to lowest.
8 rows selected.
Unidad 8 Producir impresiones legibles con SQL *PLUS
Objetivo: El alumno será capaz de personalizar el ambiente
de trabajo SQL *PLUS produciendo reportes legibles,
almacenar la configuración de configuración.
Sugerencias didácticas
Mostrar al alumno programas completos desarrollados en SQL de menor a mayor grado de
dificultad y con base en cada una de las instrucciones que los componen, enseñar la sintaxis
del lenguaje y la finalidad de cada una de ellas.
Solicitar que corrobore la validez del mismo, ejecutándolo en la computadora.
Solicitarle la elaboración de programas similares, agregándoles algunas variantes.
Solicitarle al alumno propuestas de problemas a resolver y que sean significativas para él.
Sugerencias de evaluación
El docente deberá considerar la evaluación, no solo como un medio de medir el
aprendizaje, sino como un indicador para enriquecer el proceso enseñanza-aprendizaje,
además de los exámenes tradicionales se recomienda se tome en cuenta: participación en
clases, elaboración de prácticas en el laboratorio y proyectos.
Introducción
SQL*PLUS es una herramienta de Oracle que permite unir comandos SQL a través de
procedimientos lógicos. Además es una de las tantas maneras de trabajar directamente con
la base de datos. Usualmente se utiliza para manipular y desplegar los datos en la pantalla.
Con SQL *PLUS se puede fácilmente comenzar a usar la base de datos, recuperar y ajustar
el formato de los datos. Además, SQL*PLUS permite asegurar el acceso a la base de
datos permitiendo que se restringa con un comando, es utilizado con frecuencia por DBAs
y desarrolladores e interactúan recíprocamente con la base de datos de Oracle.
El predecesor de SQL *PLUS fue llamado UFI (Interfaz de Uso Fácil) y fue incluido en los
primeros lanzamientos de Oracle hasta la versión 4, la interfaz de UFI era extremadamente
primitivo.
Sus principales características son:
o Ingresar, editar, almacenar, mostrar y ejecutar comandos SQL y bloques de PL-
SQL. Descripción de objetos y muchas otras sofisticadas características, el editor
impresiona a los mas exigentes usuarios.
o Mostrar resultados, hacer cálculos en queries (incluso como página web). Le
permite usar fácilmente reportes estándar o reportes creados por usted mismo.
o Mostrar el contenido de las tablas.
o Ingresar y copiar entre bases de datos.
o Administrar la base de datos.
o Desarrollar y ejecutar scripts sin tener que dejar el confortable SQL *PLUS
Se puede utilizar SQL *PLUS conjuntamente con el lenguaje PL-SQL, SQL *PLUS
permite que se almacenen y recuperen datos de Oracle, permite manipular comandos de
SQL y bloques de PL-SQL
La herramienta que nos proporciona ORACLE para interactuar con la base de datos se
llama SQL *PLUS. Básicamente, es un intérprete SQL con algunas opciones de edición y
formateo de resultados.
Antes de ver la manera de conectarse a SQL *PLUS, conviene tener claros algunos
conceptos:
o Usuario - Clave
Para poder acceder a una base de datos gestionada por ORACLE debemos ser un
usuario autorizado de la misma y conocer la palabra clave, contraseña , asociada al
usuario.
o Variable de ambiente ORACLE_SID
Indica la base de datos con la que vamos a trabajar.
Conexión
Para ingresar a SQL*Plus debe ejecutar el comando
$ sqlplus usuario/contraseña
Otra circunstancia que hay que tener en cuenta al momento de conectarse es el modo
establecido por el DBA para la autentificación del usuario de la base de datos. La primera
posibilidad es que la autentificación de los usuarios recaiga sobre el SGBD Oracle, por lo
que tendremos que darle nuestro nombre de usuario y contraseña. Pero existe la posibilidad
de que el SGBD Oracle deje en manos del Sistema Operativo esta responsabilidad. Así, no
SQL
*PLUS
será necesario demostrarle al SGBD Oracle quién somos ya que el sistema operativo se ha
encargado previamente de comprobar que todo es correcto. En este segundo caso, el
comando de conexión con SQL*Plus debe omitir el nombre de usuario y la palabra clave,
pero manteniendo el resto de esta manera:
$ sqlplus /@servicio
Una vez que hemos conseguido entrar en SQL*Plus nos presenta el prompt y espera la
inserción de sentencias SQL. Todas las sentencias deben acabar con un ';'. Una sentencia
puede continuar en varias líneas, que SQL*Plus va numerando. Si queremos anular la
sentencia actual podemos hacerlo colocando un '.' como único carácter en una línea. Si
queremos volver a ejecutar la última sentencia se puede hacer con el comando '/'. Si
queremos ejecutar las sentencias que almacena un archivo con extensión .sql podemos
hacerlo anteponiendo el símbolo '@' al nombre del archivo.
Para cerrar la sesión teclear 'exit'.
Posibilidades de edición
SQL*Plus almacena en un buffer la última sentencia SQL introducida. El buffer mantiene
sólo una sentencia cada vez, y si se introduce una nueva sentencia que se sobre-escribe
sobre la anterior.
La sentencia en el buffer puede ser recuperada para ejecutarla de nuevo con los comandos:
o RUN que visualiza la sentencia en el buffer antes de ejecutarla;
o / que ejecuta la sentencia sin visualizarla.
SQL*Plus también nos permite editar la sentencia SQL almacenada en el buffer mediante
un sencillo (y limitado) editor en línea, cuyos comandos se enumeran a continuación:
Ejemplo:
SQL> SELECT empno, ename, sal, depto
FROM emp
WHERE empno = &employee_num;
El ejemplo despliega el valor anterior y el valor nuevo de la columna EMPNO. En los casos
de valores de fecha y Carácter con variables de substitución. En la cláusula WHERE, los
valores de fecha y carácter deben se ser agrupadas entre ‘ ‘ , la misma regla se aplica para la
substitución de datos. También se pueden especificar nombres de columnas, expresiones, y
texto en tiempo de ejecución, no solo puede utilizar variables de substitución en la clausula
WHERE, sino también en nombres de columnas, expresiones o texto.
Ejemplo
SQL> SELECT ename, &column_name
2 FROM emp
3 WHERE &condition
En el ejemplo el usuario introduce el valor para colum_name, solo una vez y este valor
sustituye a la columna y el orden de los datos.
Definiendo las variables de usuario
Se pueden predefinir variables de usuario antes de ejecutar una sentencia SELECT . SQL
*PLUS provee dos comandos para definir y agregar variables de usuario DEFINE y
ACCEPT.
Comando Descripción
DEFINE variable=value Crea una variable tipo CHAR y le asigna un valor
DEFINE variable Despliega una variable, su valor y el tipo de dato
DEFINE Despliega a todas las variables de usuario su valor y tipo de dato
ACCEPT Lee a una línea la entrada del usuario y la almacena en una variable
Comando ACCEPT.
o Permite personalizar para el usuario la entrada de algún valor
o Explícitamente define una variable de tipo NUMBER o DATE.
o Oculta la entrada del usuario por razones de seguridad.
ACCEPT variable [datatype] [FORMAT format] [PROMPT text] [HIDE]
Sintaxis:
Variable en el nombre de la variable que almacena el valor (si no existe, SQL *PLUS
la crea)
Datatype puede ser NUMBER, CHAR, o DATE
FORMAT especifica el formato, por ejemplo A10, 9.999
PROMPT text es el texto que se despliega antes de que el usuario introduzca el
valor.
HIDE oculta el valor que introduce el usuario, (como un password).
Ejemplo
ACCEPT dept PROMPT ‘Provide the department name:’
SELECT *
FROM dept
WHERE dname = UPPER(‘&dept’)
Crea una variable para almacenar el nombre del departamento y esta se puede utilizar como
cualquier otra.
SQL> SELECT *
FROM dept
WHERE dname = UPPER(‘&deptname’);
El ejemplo crea la variable deptname, que contiene el nombre del departamento SALES, la
sentencia de SQL despliega la número de departamento, el nombre y la localidad.
DEPTNO DNAME LOC
------ ------ -------
30 SALES CHICAGO
Comando Descripción
COL[UMN] {column option} Controla el formatos de las columnas
TTI[TLE] {text OFF ON} Especifica un título para cada página del reporte
BTI[TLE] {text OFF ON} Especifica un pie de página para el reporte
BRE[AK] {ON report_element} Auprime valores duplicados y secciona filas de datos con avances de
línea
Sugerencias:
o Todos los comandos de formatos siguen teniendo efecto hasta al final de sesión de
SQL *PLUS.
o Recuerde configurar sus valores predefinidos de SQL *PLUS después de cada
informe.
o Se debe saber el valor especifico y registrarlo cada vez que entra a una sesión ya
que no existe un comando que predefina valores a una variable.
o Si usted da un alias a su columna usted debe referirse al nombre del alias no al
nombre de la columna.
Con SQL*Plus podemos dar forma a los resultados de las consultas para producir un
informe. Podremos:
o Cambiar las cabeceras de las columnas.
o Dar forma a las columnas de tipo number, varchar2, date y long.
o Copiar y listar atributos de presentación de las columnas.
o Suprimir valores duplicados e introducir espacios para mejorar la presentación.
o Realizar y mostrar cálculos (totales, medias, mínimos, máximos, etc.).
o Definir las dimensiones de las páginas.
o Ubicar títulos en la cabecera y pie de las páginas.
o Introducir la fecha o el número de página en los títulos.
Pero de todo esto sólo vamos a ver el modo de realizar las operaciones más comunes y
sencillas.
Básicamente, el formato con el que se van a presentar los resultados de las cosultas
dependen de unos parámetros y de unos comandos.
El comando COLUMN
Opción Descripción
CLE[AR] Borra el formato de cualquier columna
FOR[MAT] format
HEA[DING] text Fija el título en la columna (Si no se utiliza la justificación una línea vertical
forzará que el título avance una línea)
JUS[TIFY] {align} Justifica el titulo de la columna ya sea izquierda, centro o derecha
NOPRI[INT] Oculta la columna
NUL[L] text Especifíca el texto que se desplegará para los valores NULL
PRI[NT] Muestra la columna
TRU[NCATED] Trunca la secuencia en el extremo de la primera línea del informe
WRA[PED] Cambia el final de la palabra a la siguiente línea
Para realizar ajustes actuales para las columnas, utilice los siguientes comandos:
Comando Descripción
COL[UMN] column Despliega el valor de la columna especificada
COL[UMN] Despliega el valor de todas las columnas
COL[UMN] column CLEAR Quita ajustes para la columna especifica
CLE[AR] COL[UMN] Quita ajustes para todas las columnas
Comandos TITLE Y BTITLE
o Formato par Títulos y Pie de Página
TTI[TLE] [text|OFF|ON]
Utilice el comando TITLE para dar formato a los títulos de la página y el comando
BTITLE para los pies de pagina. Los pies de página aparecen al final de la página de
acuerdo al valor del PAGESIZE.
La sintaxis para TITLE y BTITLE son idénticas, en la sintaxis se puede utilizar la | (barra
vertical) para separar el título en varias líneas.
En la sintaxis:
text representa el texto del títtulo.
El ejemplo anterior establece el título de Salary centrado en una línea y Report en la
siguiente. En el ejemplo de BTITLE en el pie de página del reporte se muestra
Confidential. El comando TTITLE muestra automáticamente la fecha y el número de
página en el reporte.
Comando BREAK
Elimina las filas duplicadas
o Para suprimir los duplicados
SQL> BREAK ON ename ON job
Si usted no sigue el nombre de fichero y una extensión, el SPOOL agrega una extensión de
archivo por defecto al nombre de fichero para identificarlo como archivo de salida. El
defecto varía con el sistema operativo del anfitrión; en la mayoría de los anfitriones es LST
o LIS. El SQL*Plus continúa guardando la información al archivo hasta que se marca
como apagado, usando la forma siguiente de SPOOL:
SPOOL OFF
Crear un fichero flat (plano)
Al mover datos entre diversos productos de software, es a veces necesario utilizar un
archivo FLAT (un archivo del sistema operativo sin caracteres del escape, títulos, o
caracteres adicionales ). Por ejemplo, si no se tiene SQL*Net, se necesita crear un fichero
FLAT. Para crear un fichero FLAT con SQL*Plus, primero se debe incorporar los
comandos SET siguientes:
SET NEWPAGE 0
SET SPACE 0
SET LINESIZE 80
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
Líneas de ejecución
Constan de una única barra inclinada, "/", y se introducen a continuación de cada sentencia
SQL indicando su ejecución.
Sustituyen al punto y coma, ";" al final de las sentencias SQL.
Líneas de comandos sql*plus
SQL*Plus aporta una serie de posibilidades al lenguaje SQL que le acerca un poco mas a lo
que entendemos como un lenguaje de programación.
Se pueden definir constantes y variables, capturar datos del teclado, introducir parámetros
en la llamada de un archivo de comandos, y alguna cosa más.
Se pueden introducir comentarios en una archivo de comandos de tres maneras:
o Utilizando del comando REM del SQL*Plus.
o Utilizando los delimitadores de comentario de SQL /* y */.
o Utilizando los símbolos de comentario PL/SQL "__".
Resumen de comandos
@@ Ejecuta un commando.
Límites SQL*PLUS
Concepto Limite
Longitud de filename Depende del sistema
Longitud de username 30 bytes
Longitud del nombre de una variable de usuario. 30 bytes
Longitud del valor de una variable de usuario 240 characters
Longitud de una línea de comando 2500 characters
Longitud de un valor LONG SQL*Plus LINESIZE value
LINESIZE Depende del sistema
LONGCHUNKSIZE value (requires Oracle7) MAXDATA value
MAXDATA value Depende del sistema
Tamaño de una línea de salida Depende del sistema
Tamaño de una línea después de una variable de
3,000 characters (solo interno)
sustitución
Número de caracteres en una etiqueta del comando
500 characters
COMPUTE
Número de líneas para un comandos de SQL 500 (asumiendo 80 characters por líena)
Máximo de PAGESIZE 50,000 líneas
Total de una fila 60,000 caractéres para VMS; o, 32,767 characters
Máximo de ARRAYSIZE 5000 filas
Máximo número de filas de comandos. 20 for VMS, CMS, Unix; otherwise, 5
Máximo número de páginas 99,999
Máximo tamaño de mensajes de error PL/SQL 2K (Oracle7) 512 Bytes (Oracle Version 6)
Longitud Máxima de Caracteres en el comando 240 Bytes
Bibliografía
Manual de introducción a SQL y PL-SQL Oracle, ORACLE UNIVERSITY.
Práctica 8: Producir impresiones legibles con SQL *PLUS
3. Write a script file to display the employee name, job, and hire date for all employees
who started between a give range. Concatenate the name job together, separated by
a space and comma, and label the column Employees. Prompt the user for the two
ranges using the ACCEPT command. Use the format MM/DD/YYYY. Save the
script file as p8q3.sql.
EMPLOYEES HIREDATE
--------------------- ---------
ALLEN, SALESMAN 20-FEB-81
WARD, SALESMAN 22-FEB-81
JONES, MANAGER 02-ABR-81
MARTIN, SALESMAN 28-SEP-81
BLAKE, MANAGER 01-MAY-81
CLARK, MANAGER 09-JUN-81
KING, PRESIDENT 17-NOV-81
TURNER, SALESMAN 08-SEP-81
JAMES, CLERK 03-DIC-81
FORD, ANALYST 03-DIC-81
10 rows selected.
4. Write a script to display the employee name, job, and department name for a given
location. The search condition should allow for case-insensitive searches of the
department location. Save the script file as p8q4.sql.
Sugerencias didácticas
Mostrar al alumno programas completos desarrollados en SQL de menor a mayor grado de
dificultad y con base en cada una de las instrucciones que los componen, enseñar la sintaxis
del lenguaje y la finalidad de cada una de ellas.
Solicitar que corrobore la validez del mismo, ejecutándolo en la computadora.
Solicitarle la elaboración de programas similares, agregándoles algunas variantes.
Solicitarle al alumno propuestas de problemas a resolver y que sean significativas para él.
Sugerencias de evaluación
El docente deberá considerar la evaluación, no solo como un medio de medir el
aprendizaje, sino como un indicador para enriquecer el proceso enseñanza-aprendizaje,
además de los exámenes tradicionales se recomienda se tome en cuenta: participación en
clases, elaboración de prácticas en el laboratorio y proyectos.
1 row created
1 row created
1 row created.
1 row created.
SQL> SELECT ename, hiredate
2 FROM emp
3 WHERE empno=7999;
RENAME HIREDATE
---------- ---------
SAMS 03-JUL-91
Modificación de datos
Cambia datos de una tabla especificada con la sentencia UPDATE
Sintaxis
UPDATE nombre_tabla
SET colum1=valor,colum2=valor.....
[WHERE condición]
Ejemplo:
Cambiar en la tabla PAIS_LIMITE , todos los registros , que tengan el campo NORTE = *
por NORTE = X
SQL> update pais_limite
2 set norte='X'
3 where norte='*';
Eliminación de filas
Se pueden eliminar filas de una tabla especificada usando la sentencia DELETE
Sintaxis
DELETE FROM nombre_tabla
WHERE condición
Ejemplo: De aquí eliminamos el registro cuyo código es 250
SQL> delete from paises
2 where codigo=250;
1 row deleted.
SQL> DELETE FROM emp
2 WHERE empno=7999;
1 row deleted.
Transacciones
Una transacción es definida como todos los cambios hechos en una base de datos entre
sucesivos “COMMIT”
COMMIT
INSERT
INSERT
DELETE
INSERT
UPDATE
UPDATE
COMMIT
Proceso de transacciones
La sentencia COMMIT hace permanente todos los cambios desarrollados durante una
transacción.
Tipos de COMMIT
o EXPLICITO
o IMPLICITO
Ejemplo
SQL> delete from paises
2 where codigo=250;
1 row deleted.
SQL> COMMIT ;
Commit complete.
Una transacción puede ser interrumpida y deshecha hasta el anterior Commit a través de la
sentencia Rollback.
COMMIT
INSERT
INSERT
DELETE
ROLLBACK
INSERT
UPDATE
UPDATE
COMMIT
La sentencia ROLLBACK hace que el trabajo realizado en la actual transacción sea
deshecho
Ejemplo
Transferir al empleado ‘JONES’ al grupo de vendedores
SQL> UPDATE empleados
2 set trabajo=’VENDEDOR’, depno=30
3 where nombre=’JONES’ ;
1 row updated
Todos los empleados cuyo apellidos sea Jones ha sido transferido. Con la sentencia
ROLLBACK podemos deshacer la transferencia y corregirla.
SQL> ROLLBACK ;
Rollback complete.
1 row updated
SQL> SAVEPOINT A ;
savepoint created.
1 row created.
SQL> SAVEPOINT B;
savepoint created.
1 row updated.
Deshacer la transacción
SQL> ROLLBACK to B ;
Rollback complete.
Bibliografía
Manual de introducción a SQL y PL-SQL Oracle, ORACLE UNIVERSITY.
Práctica 9: Manipular datos
1. Run the lab9_1.sql to build the MY_EMPLOYEE table that will be used for the
lab.
2. Describe the structure of the MY_EMPLOYEE table to identify the column names.
3. Add the first row of data to the MY_EMPLOYEE table from the following sample
data. Do not list the column in the INSERT clause.
4. Populate the MY_EMPLOYEE table with the second row of the sample data from
the preceding list. This time, list the columns explicitly in the INSERT clause.
5. Create a script named loademp.sql to load rows into the MY_EMPLOYEE table
interactively. Prompt the user for the employee’s id, first name, last name and
salary. Concatenate the first letter of the first name and the first seven characters of
the last name to produce the user id.
6. Populate the table with the next two rows of the sample data by running the script
that you created.
8. Make the data additions permanent. Update and delete data in the
MY_EMPLOYEE table.
10. Change the salary to 1000 for all employees with a salary less than 900.
LAST_NAME SALARY
--------------- ---------
Patel 1000
Dancs 1000
Drexler 1100
Newman 1000
14. Commit all pending changes. Control data transaction to the MY_EMPLOYEE
table.
15. Populate the table with the last row of sample data by running the script that you
created in step 6.
20. Discard the most recent DELETE operation without discarding the earlier INSERT
operation.
Sugerencias didácticas
Mostrar al alumno programas completos desarrollados en SQL de menor a mayor grado de
dificultad y con base en cada una de las instrucciones que los componen, enseñar la sintaxis
del lenguaje y la finalidad de cada una de ellas.
Solicitar que corrobore la validez del mismo, ejecutándolo en la computadora.
Solicitarle la elaboración de programas similares, agregándoles algunas variantes.
Solicitarle al alumno propuestas de problemas a resolver y que sean significativas para él.
Sugerencias de evaluación
El docente deberá considerar la evaluación, no solo como un medio de medir el
aprendizaje, sino como un indicador para enriquecer el proceso enseñanza-aprendizaje,
además de los exámenes tradicionales se recomienda se tome en cuenta: participación en
clases, elaboración de prácticas en el laboratorio y proyectos.
Tablas
Las tablas pueden ser creadas en cualquier momento siempre que los usuarios estén
conectados a la base de datos.
No es necesario especificar el tamaño de un a tabla, el tamaño es definido en última
estancia por el total de espacio de la de base de datos como un todo.
Las tablas pueden ser modificadas en línea.
Reglas de definición de nombres de tablas
Es necesario nombrar las tablas de la base de datos de acuerdo con el estándar para nombrar
objetos de la base de datos:
Los nombres de tablas y columnas, deberán de empezar con una letra y pueden tener 30
caracteres de longitud, aunque no es recomendable llegar hasta el límite.
Los nombres deben de contener solo los caracteres A-Z, a-z, 0-9, _, $ y #.
Los nombres no deben tener el nombre de otro objeto del cuál sea propietario el mismo
usuario del servidor de Oracle, cualesquiera que este sea.
Los nombres no deben de ser una palabra reservada del servidor de Oracle.
Se deben de usar nombres descriptivos para las tablas y otros objetos.
Nombre la misma entidad consistentemente en diferentes tablas, por ejemplo, la columna
de número de departamento es llamada DEPTNO en ambas tablas, EMP y DEPT.
Los nombres son case-sensitive.
Sentencia CREATE TABLE
Esta es un a sentencia que perteneces a las sentencias de lenguaje de definición de datos
(DDL Data Definition Language), este grupo de sentencias, se usan para crear, modificar o
remover objetos de la base de datos de Oracle. Estas sentencias tienen un efecto inmediato
en la base de datos y también puede guardar información en el, diccionario de datos
Para crear una tabla, el usuario deberá de poseer el privilegio de CREATE TABLE y un
área de almacenamiento en la cuál pueda crear objetos. El administrador de la base de datos
(DBA) usa sentencias de lenguaje de control de datos (DCL Data Control Language) para
otorgar privilegios a los usuarios.
La sintaxis de la sentencia es la siguiente:
CREATE [GLOBAL TEMPORARY] TABLE [schema. ] table
( column datatype [DEFAULT expr ][,….]);
En dónde:
GLOBAL TEMPORARY. Especifica que se trata de una tabla temporal y esta es una
definición visible para todas las sesiones, el dato en una tabla
temporal es visible solo en la sesión que inserta el dato en la
tabla.
schema. Es lo mismo que el nombre del dueño o propietario de la
tabla.
DEFAULT expr. Especifica un valor por default si el valor es omitido en la
sentencia de INSERT.
column. Es el nombre de la columna
datatype. Es el tipo de dato y longitud de la columna .
Haciendo referencia a otros usuarios de tablas
Un esquema es una colección de objetos, los objetos de un esquema son las estructuras
lógicas que refieren directamente a los datos en la base de datos. Los objetos del esquema,
incluyen a las tablas, vistas, sinónimos, secuencias, procedimientos almacenados, índices,
clusters y links de la base de datos.
Si la tabla no corresponde al usuario, el nombre del usuario, puede estar prefijado para la
tabla.
DEFAULT OPTION
Se le puede dar a una columna un valor por default usando la opción DEFAULT , la cuál
previene valores nulos en una columna de una tabla si el registro es insertado sin un valor
para esa columna. El valor por default puede ser una literal, una expresión o una función
SQL como SYSDATE o USER, pero el valor no puede ser el nombre de otra columna o
una pseudo columna, como NEXTVAL o CURVAL, la expresión de default, debe
corresponder al tipo de dato de la columna.
CREATE TABLE
El siguiente ejemplo crea la tabla CLIENTES con cinco columnas, llamadas: Código,
Fecha, Nombre, Teléfono y Dirección,
CREATE TABLE CLIENTES
(
CODIGO INTEGER,
FECHA DATE,
NOMBRE VARCHAR2(30),
TELEFONO VARCHAR2(20) NOT NULL,
DIRECCION VARCHAR2(100
);
Tipos de datos
Existen los siguientes tipos de datos en Oracle :
Tipo de Dato Descripción
VARCHAR2 (size) Caracter de longitud variable (Un tamaño de valor máximo debe de ser
especificado en size, El valor por default de size y mínimo es 1, y el
máximo es 4000)
CHAR (size) Caracter de longitud fija de tamaño en bytes (El valor por default de
size y mínimo es 1, y el máximo es 4000)
NUMBER (p,s) Numero con precisión y escala, dónde la precisión esta dada por el
número total de dígitos decimales y la escala es el número de dígitos a
la derecha del punto decimal, la precisión puede tener un rango de 1 a
38 y la escala puede tener un rango de -84 a 127
DATE Valores de hora y fecha entre el primero de enero del año 4712 antes de
cristo y el 31 de diciembre del año 9999 después de cristo
LONG Caracter de longitud variable de arriba de 2 gigabytes
CLOB Caracter single-byte de arriba de 4 gigabytes
RAW (size) Nuevo dato binario de tamaño size (Un máximo tamaño debe de ser
especificado, el tamaño máximo es 2000)
LONG RAW Nuevo dato binario de longitud variable arriba de 3 gigabytes
BLOB Dato binario de arriba de 4 gigabytes
BFILE Dato binario almacenado en un archivo externo arriba de 4 gigabytes
Observaciones
o La tabla será creada con los nombres de columna especificados y las columnas
obtenidas por la sentencia SELECT que serán insertadas en la nueva tabla.
o La definición de columna puede contener únicamente el nombre de columna y el
valor por default.
o Si hay especificaciones de columna dadas, el número de columnas, puede ser igual
al dado en la lista de la búsqueda del SELECT.
o Si no hay especificaciones de columna dadas, los nombres de columna de la tabla,
serán los mismos que los nombres de las columnas en el subquery.
El siguiente ejemplo crea la tabla DEPT30, que contiene detalles de todos los empleados
que trabajan en el departamento 30. Nótese que los datos para la tabla DEPT30 fueron
obtenidos de la tabla EMP.
CREATE TABLE DEPT30
AS
SELECT empno, ename, sal*12 ANNSAL, hiredate
FROM EMP
WHERE deptno = 30;
Bibliografía
Manual de introducción a SQL y PL-SQL Oracle, ORACLE UNIVERSITY.
Práctica 10: Crear Tablas
1. Create the DEPARMENT table based on the following table instance chart. Enter
the syntax in a script called p10ql.sql, then execute the script to create the table.
Confirm that the table is created.
2. Populate the DEPARTMENT tabled with data from the DEPT table. Include only
columns that you need.
3. Create the EMPLOYEE tabled based on the following table instance chart. Enter
the syntax in a script called p10q3.sql, and then execute the script to create the
table. Confirm that the table is created.
4. Modify the EMPLOYEE table to allow for longer employee last name. Confirm
your modification.
5. Confirm that both the DEPARTMENT and EMPLOYEE tables are stored in the
data dictionary.(Hint: USER_TABLES).
TABLE_NAME
-------------------------------------
DEPARTMENT
EMPLOYEE
6. Create the EMPLOYYEE2 table based on the structure of the EMP table. Include
only the EMPNO, ENAME, and DEPTNO columns. Name the columns in your
new table ID, LAST_NAME, and DEPT_ID, respectively.
10. Drop the LAST_NAME column from the EMPLOYEE table. Confirm your
modification by checking the description of the table.
11. Create the EMPLOYEE2 tabled based on the structure of the EMP table. Include
only the EMPNO, ENAME, and DEPTNO columns. Name the columns in your
new table ID, LAST_NAME, and DEPT_ID, respectively. Mark the DEPT_ID
column in the EMPLOYEE2 table as UNUSED. Confirm your modification by
checking the description of the table.
12. Drop all the UNUSED columns from he EMPLOYEE2 table. Confirm your
modification by checking the description of the table.