lunes, 30 de julio de 2007

Cadenas de Caracteres Literales

Un literal es un carácter, un número o una fecha que está incluido en la lista SELECT y que no es un nombre de columna o un alias de columna. Un literal está impreso para cada fila devuelta. Las cadenas literales de texto de formato libre se pueden incluir en el resultado de la consulta y son tratados de la misma manera que una columna en la lista SELECT.
Mientras que los literales de caracteres y fecha se deben escribir entre comillas simples (' '), los literales numéricos no.

Ejemplo:

  • Mostrar los cargos y los apellidos de todos los empleados. La columna tiene la cabecera Detalle de Empleado.

SELECT ename ' es un ' job AS "Detalle de Empleado"
FROM emp;

http://liang.armstrong.edu:5560/isqlplus/

Debe recordar que:
Los espacios entre las comillas simples en la sentencia SELECT, mejoran la legibilidad del resultado.

Ejemplo:

  • Mostrar el apellido y el salario de cada empleado, concatenados con un literal para dotar de más significado al resultado.

SELECT ename ': 1 Mes de salario = ' sal Mensualmente
FROM emp;

Operador de Concatenación

Enlaza columnas a otras columnas, expresiones aritméticas o valores constantes para crear una expresión de caracteres mediante el operador de concatenación (alt 124). Las columnas a cada lado del operador se combinan para hacer una única columna de resultados.

Ejemplo:

  • Concatene ENAME y JOB, y asígnele el alias Empleados
SELECT ename ' es un ' job AS "Empleados"
FROM emp;

http://liang.armstrong.edu:5560/isqlplus

Debe recordar que:
El cargo y el apellido del empleado están combinados para formar una única columna de resultados.
La palabra clave AS delante del alias hace que la cláusula SELECT sea más fácil de leer.

Modificar tablas

Cláusula ALTER TABLE

Se utiliza para alterar la definición de una tabla:

  • Añadiendo o eliminando columnas o restricciones.
  • Modificando definiciones de columnas(tipo de datos, Not Null, etc)

Sintaxis:
Para agregar columnas

ALTER TABLE nombre_tabla
ADD ( {colum1 tipo_dato [DEFAULT exp][constraint_colum]}
[, {Colum2 tipo_dato [DEFAULT exp][constraint_colum]}]…);

Ejemplo:

  • Agregue la columna telefono a la tabla emp1 con el tipo Char(8).

ALTER TABLE emp1
ADD (telefono CHAR(8));

http://liang.armstrong.edu:5560/isqlplus

Ejemplo:

  • Agregue la columna pais a la tabla dept; dicha columna deberá ser del tipo de datos Varchar2, longitud 20 y Not null.

ALTER TABLE dept
ADD (pais varchar2(20) NOT NULL);

alter table dept
*
ERROR at line 1: ORA-01758: table must be empty to add mandatory (NOT NULL) column

Debe recordar que:
No es posible añadir una columna nueva que tenga un constraint Not Null a una tabla que tenga datos.

Ejemplo:

  • La comision debe ser menor o igual que el salario.

ALTER TABLE emp1
ADD CHECK(comision <= salario);

Ejemplo:

  • Cree un Foreign Key entre las tablas empx(copia de la tabla emp) y la tabla deptx(copia de la tabla dept).

1. Primero crearemos la copia de las 2 tablas

Copia de la tabla emp

Create Table empx As
Select * from emp;

Copia de la tabla dept

Create table deptx As
Select * from dept;

2. Crearemos ahora el constraint Primary Key en la tabla deptx sobre el campo deptno. (Obligatorio porque al crearse la copia se pierden todos los constraints, excepto los Not Null)

Alter Table deptx
Add constraint pk_deptx Primary Key (deptno);

3. Ahora crearemos el constraint Foreign Key en el campo deptno de la tabla empx. (Recuerde que un departamento tiene varios empleados)

Alter table empx
Add constraint fk_empx_deptx Foreign Key (deptno)
References deptx

4. Verifiquemos la creación del Foreign Key: fk_empx_deptx en la tabla empx.

Select Constraint_name Nombre, Column_name Columna
From User_cons_columns
Where Table_name='EMPX' and Column_name='DEPTNO';