Professional Documents
Culture Documents
BASE DE DATOS
ORACLE
FUNDAMENTOS SQL
TABLA DE CONTENIDO
1. COMANDOS EDICION SQLPLUS ................................................................... 3
2. CREACIN TABLAS ....................................................................................... 3
3. TIPOS COLUMNAS ......................................................................................... 4
4. RESTRICCIONES ............................................................................................ 5
5. HABILITACIN/DESHABILITACIN DE RESTRICCIONES DE INTEGRIDAD
.......................................................................................................................... 6
6. ALTER TABLE ................................................................................................. 7
7. INSERT............................................................................................................. 7
8. UPDATE ........................................................................................................... 9
9. DELETE............................................................................................................ 9
10.
SELECT ........................................................................................................ 9
11.
12.
13.
14.
15.
16.
FUNCIONES ............................................................................................... 15
17.
GROUP BY ................................................................................................. 21
18.
Existen bsicamente dos formas de utilizar SQL para acceder a una base de datos:
a travs de un intrprete SQL conectado a la base de datos (como por ejemplo
SQL*Plus de Oracle), o bien insertando cdigo SQL dentro de programas escritos
en otros lenguajes como C o Java. A este ltimo SQL se le denomina SQL
empotrado y requiere de un preproceso que convierta los comandos SQL en
llamadas a libreras propias de ese lenguaje de programacin.
Abreviatura
Descripcin
APPEND texto
A texto
CHANGE/fuente/destino C/fuente/destino
CHANGE/texto
C/texto
CLEAR BUFFER
CL BUFF
Borra el buffer
DEL
DEL
INPUT
INPUT texto
I texto
LIST
LIST n
Lnn
LIST *
L*
LIST LAST
L LAST
LIST m n
Lmn
2. CREACIN TABLAS
Crear la tabla departamento con cdigo, nombre y localizacin. El cdigo es llave
primaria y la localizacin slo puede ser Cali, Yumbo y Tulu
create table dep (
cod_dep number(3),
nombre varchar2(15) not null,
loc varchar2(10),
constraint dep_pk primary key (cod_dep),
constraint dep_loc check (loc in ('Cali', 'Yumbo', 'Tulu'))
);
Crear la tabla empleado con un cdigo de empleado, un nombre, un oficio, un
jefe, una fecha de alta en la empresa, un salario mensual, una comisin y el
cdigo del departamento donde trabaja.
3. TIPOS COLUMNAS
Tipo de Dato
Descripcin
VARCHAR2(tamao)
CHAR(tamao)
LONG
NUMBER(dig,dec)
DATE
RAW(tamao)
LONG RAW
4. RESTRICCIONES
Las restricciones de los datos se usan para asegurar que los datos cumplen con
una serie de condiciones predefinidas para cada tabla. Estas restricciones
ayudan a conseguir la integridad de referencia: todas las referencias dentro de
una BD son vlidas.
Las restricciones se definen acompaadas por un nombre, lo que permite
activarlas o desactivarlas segn sea el caso; o tambin mezcladas en la
definiciones de las columnas de la tabla. A continuacin se describen cada una
de las restricciones.
NOT NULL
Establece la obligatoriedad de que la columna tenga un valor no nulo. Se
debe especificar junto a la columna a la que afecta. Los valores nulos no
ocupan espacio, y son distintos a 0 y al espacio en blanco. Hay que tener
cuidado con los valores nulos en las operaciones, ya que 1 * NULL es
igual a NULL.
UNIQUE
Evita valores repetidos en una columna, admitiendo valores nulos. Oracle
crea un ndice automticamente cuando se habilita esta restriccin y lo
borra al deshabilitarse.
DEFAULT
Establece un valor por defecto para esa columna.
CHECK
Comprueba que se cumpla una condicin determinada al rellenar esa
columna. Esta condicin slo debe estar construida con columnas de esta
misma tabla.
PRIMARY KEY
Establece el conjunto de columnas que forman la clave primaria de esa
tabla. Se comporta como nica y obligatoria sin necesidad de explicitarlo.
Slo puede existir una clave primaria por tabla. Puede ser referenciada
como clave ajena por otras tablas. Crea un ndice automticamente
cuando se habilita o se crea esta restriccin.
FOREIGN KEY
Establece que el contenido de esta columna ser uno de los valores
contenidos en una columna de otra tabla maestra. Esta columna marcada
como clave ajena puede ser NULL. No hay lmite en el nmero de claves
ajenas. La clave ajena puede ser otra columna de la misma tabla. Se
puede forzar que cuando una fila de la tabla maestra sea borrada, todas
las filas de la tabla detalle cuya clave ajena coincida con la clave borrada
se borren tambin. Esto se consigue aadiendo ON DELETE
CASCADE en la definicin de la clave ajena.
5. HABILITACIN/DESHABILITACIN
INTEGRIDAD
DE
RESTRICCIONES
DE
6. ALTER TABLE
Despus de crear una tabla se puede aadir una columna adicional o modificar
la definicin de una columna existente. Esta operacin se puede realizar con el
comando ALTER TABLE.
ALTER TABLE tabla {ADD | MODIFY} ({columna tipoColumna [NOT NULL],}+);
Hay que tener en cuenta varios puntos:
7. INSERT
El comando que permite insertar filas en las tablas es el siguiente.
INSERT INTO tabla [({columna,}*)] VALUES ({expresin,}+);
Slo es necesario especificar las columnas donde insertar y su orden cuando no
se insertan datos en todas ellas o no se hace en el mismo orden en que se define
la tabla. La asociacin columna-valor es posicional. Los valores deben cumplir
con los tipos de datos definidos. Los valores de tipo caracter y fecha deben ir
encerrados entre comillas simples, ('').
A continuacin se puede ver la insercin de filas en las tablas de ejemplo.
8. UPDATE
Otra de las operaciones ms comunes es la modificacin de la informacin
almacenada en las tablas. Para ello se utiliza el comando UPDATE cuya sintaxis
se muestra a continuacin.
UPDATE tabla SET {columna = expresin,}+ [WHERE condicin];
Se especificar en la clusula SET las columnas que se actualizarn y con qu
valores. La clusula WHERE indica las filas con las que se va a trabajar. Si se
omite la actualizacin afectar a todas las filas de la tabla.
9. DELETE
Con insertar y modificar, la otra operacin que completa el trio es la de borrado
de filas. La sintaxis es la que sigue:
DELETE FROM tabla [WHERE condicin];
Borrar todas las filas que cumplan la condicin especificada en la
clusula WHERE. Si esta clusula no se fija, se borrarn todas las filas de la
tabla. Aunque DELETE borra todas las filas de una tabla, no se borra la definicin
de la tabla del diccionario y se pueden insertar datos posteriormente en la tabla.
Esta es una diferencia con la sentencia DROP TABLE, que produce la
eliminacin tanto del contenido de la tabla como de la definicin de la misma.
10. SELECT
La recuperacin de los datos en el lenguaje SQL se realiza mediante la
sentencia SELECT, seleccionar. Esta sentencia permite indicar al SGBD la
informacin que se quiere recuperar. Esta es la sentencia SQL ms habitual. La
sentencia SELECT consta de cuatro partes bsicas:
Operadores de Comparacin
Operador Operacin
Ejemplo
Igualdad
<
Menor que
>
Mayor que
<=
>=
in
not in
Contenido en el rango
not
between
like
'_abc%'
between
Operadores de Aritmticos
Suma
Resta
Producto
Divisin
Operador
Operacin
Ejemplo
||
Concatenacin
SQL> select nombre, salario from emp order by salario desc, nombre;
NOMBRE
SALARIO
---------- ---------Cano
450000
Perez
350000
Roncal
350000
Yuste
350000
Recio
300000
Sastre
300000
Martin
Garcia
Garcia
Mateo
Santana
Rueda
Lopez
Sanz
235000
225000
210000
200000
200000
175000
150000
150000
14 rows selected.
Director
Analista
Programador
Programador
14 rows selected.
Pero si incluimos la clusula DISTINCT la respuesta vara:
SQL> select distinct oficio from emp;
OFICIO
----------Analista
Comercial
Contable
Director
Presidente
Programador
Secretario
7 rows selected.
16. FUNCIONES
Existen en SQL muchas funciones que pueden complementar el manejo de los
datos en las consultas. Se utilizan dentro de las expresiones y actuan con los
valores de las columnas, variables o constantes.
Se pueden incluir en las clsulas SELECT, WHERE y ORDER BY.
Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de
funciones para cada tipo de datos:
aritmticas,
de cadenas de caracteres,
de manejo de fechas,
de conversin,
otras,
de grupo.
Funciones Aritmticas
Funcin
Cometido
Ejemplo
Resultado
ABS(n)
15
CEIL(n)
16
FLOOR(n)
15
MOD(m,n)
Calcula
el
resultante
dividir m entre n.
POWER(m,n)
select
power(3,2)
from dual;
ROUND(m,n)
Calcula el redondeo
de m a n decimales.
Si n<0 el redondeo se
efectua a por la izquierda
del punto decimal.
select
round(123.456,1)
from dual;
123.5
SQRT(n)
select
dual;
TRUNC(m,n)
Calcula
m
truncado
a n decimales (n puede
ser negativo).
select
trunc(123.456,1) from
dual;
123.4
SIGN(n)
Calcula el signo de n,
devolviendo -1 si n<0, 0
si n=0 y 1 si n>0.
-1
resto
de
sqrt(4)
from
Cometido
Ejemplo
Resultado
CHR(n)
Devuelve el carcter
cuyo valor codificado
es n.
ASCII(cad)
65
CONCAT(cad1,cad
2)
select
concat(concat(nom
Cano
es
Presidente,
etc.
funcin es esquivalente
al operador ||.
bre,' es
from emp;
LOWER(cad)
Devuelve
la
cadena cad con todas
sus letras convertidas a
minsculas.
select
lower('MinUsCulAs')
from dual;
minusculas
UPPER(cad)
Devuelve
la
cadena cad con todas
sus letras convertidas a
maysculas.
select
upper('maYuSCulA
s') from dual;
MAYUSCUL
AS
INITCAP(cad)
select
initcap('isabel') from
dual;
Isabel
LPAD(cad1,n,cad2)
Devuelve
cad1
con
longitud n, y ajustada a
la derecha, rellenando
por
la
izquierda
con cad2.
select lpad('P',5,'*')
from dual;
****P
RPAD(cad1,n,cad2)
Devuelve
cad1
con
longitud n, y ajustada a
la izquierda, rellenando
por la derecha con cad2.
select rpad('P',5,'*')
from dual;
P****
REPLACE(cad,ant,n
ue)
select
replace('digo','i','ie')
from dual;
diego
SUBSTR(cad,m,n)
Devuelve la sudcadena
de
cad
compuesta
por n caracteres a partir
de la posicion m.
select
substr('ABCDEFG',
3,2) from dual;
CD
LENGTH(cad)
Devuelve
de cad.
select
length('cadena')
from dual;
la
longitud
'),oficio)
Funcin
Cometido
Ejemplo
SYSDATE
Devuelve la fecha y
hora actuales.
select
dual;
ADD_MONTHS(d,n)
Devuelve
la
fecha d incrementad
a en n meses.
select
add_months(sysdate,4)
from dual;
sysdate
from
14-MAR97
14-JUL-97
LAST_DAY(d)
Devuelve la fecha
del ltimo da del
mes de d.
select last_day(sysdate)
from dual;
31-MAR97
MONTHS_BETWEEN(
d1, d2)
Devuelve
la
diferencia en meses
entre
las
fechas d1 y d2.
select
months_between(sysda
te,'01-JAN-97')
from
dual;
2.434094
24
NEXT_DAY(d,cad)
Devuelve la fecha
del primer da de la
semana cad despu
s de la fecha d.
select
next_day(sysdate,
'sunday') from dual;
16-MAR97
Cometido
Ejemplo
Resultado
TO_NUMBER(cad,fmto)
Convierte
la
cadena cad a un
nmero,
opcionalmente de
acuerdo con el
formato fmto.
select
to_number('12345')
from dual;
124345
TO_CHAR(d, fmto)
Convierte
la
fecha d a una
cadena
de
caracteres,
opcionalmente de
acuerdo con el
formato fmto.
select to_char(sysdate)
from dual;
'14-MAR97'
TO_DATE(cad,fmto)
Convierte
la
cadena cad de tipo
varchar2 a fecha,
opcionalmente de
acuerdo con el
formato fmto.
01-JAN-97
Con las fechas pueden utilizarse varios formatos. Estos formatos permiten
modificar la presentacin de una fecha. En la siguiente tabla se presentan
algunos formatos de fecha y el resultado que generan.
Cometido
Ejemplo
Resultado
cc scc
select to_char(sysdate,'cc')
from dual;
21
select
to_char(sysdate,'y,yyy')
from dual;
2,014
yyyy yyy
yy y
select
to_char(sysdate,'yyyy')
from dual;
2014
Trimestre.
select to_char(sysdate,'q')
from dual;
ww w
Nmero
de
la
semana del ao o
del mes.
select
to_char(sysdate,'ww') from
dual;
27
mm
select
to_char(sysdate,'mm') from
dual;
06
ddd dd
d
select
to_char(sysdate,'ddd') from
dual;
073
hh hh12
hh24
La hora en formato
12h. o 24h.
select to_char(sysdate,'hh')
from dual;
12
mi
Los minutos de la
hora.
select to_char(sysdate,'mi')
from dual;
15
ss sssss
Los
segundos
dentro del minuto,
o desde las 0
horas.
select
to_char(sysdate,'sssss')
from dual;
44159
y,yyy
sy,yyy
Cometido
Ejemplo
Resultado
syear
year
Ao en Ingls
select
to_char(sysdate,'syear)
from dual;
nineteen
ninetyseven
month o
mon
select
to_char(sysdate,'month')
from dual;
march
day dy
Nombre del da de
la semana o su
abreviatura de tres
letras.
select
to_char(sysdate,'day') from
dual;
friday
select
to_char(sysdate,'a.m.')
from dual;
p.m.
Indicador del ao
respecto al del
nacimiento
de
Cristo.
select
to_char(sysdate,'b.c.') from
dual;
a.d.
a.m.
p.m.
b.c. a.d.
Otras Funciones
Funcin
Cometido
Ejemplo
Resultado
DECODE(var,
val1, cod1, val2,
cod2, ..., defecto)
Convierte el
valor de var,
de acuerdo
con
la
codificacin.
select
decode(oficio,
'Presidente',
'P',
'Director', 'D', 'X') from
emp;
P, D, X, ...
GREATEST(exp1,
exp2, ...)
Devuelve el
mayor valor
de una lista.
sin ejemplo.
sin
ejemplo.
LEAST(cad,fmto)
Devuelve el
menor valor
de una lista.
sin ejemplo.
sin
ejemplo.
NVL(val, exp)
Devuelve la
expresin exp
si
val
es
NULL, y val si
en otro caso.
select
salario+nvl(comision,0)
from emp;
450000,
350000, ...
17. GROUP BY
SQL permite agrupar las filas resultado de una consulta en conjuntos y aplicar
funciones sobre esos conjuntos de filas.
La sintaxis es la siguiente:
SELECT {* | {columna,}+}
FROM {tabla,}+
WHERE condicin
GROUP BY {columna ,}+
HAVING condicin
ORDER BY {expresinColumna [ASC | DESC],}+;
En la clusula GROUP BY se colocan las columnas por las que vamos a agrupar.
Y en la clusula HAVING se especifica la condicin que han de cumplir los
grupos para pasar al resultado.
La evaluacin de las diferentes clusulas en tiempo de ejecucin se efecta en
el siguiente orden:
WHERE filtra las filas
GROUP BY crea una tabla de grupo nueva
HAVING filtra los grupos
ORDER BY clasifica la salida
De nuevo, el ejemplo quedar as:
SQL> select count(nombre), oficio from emp group by oficio;
COUNT(NOMBRE) OFICIO
------------- ----------2 Analista
2 Comercial
1 Contable
3 Director
1 Presidente
4 Programador
1 Secretario
7 rows selected.
Las funciones de agrupamiento que se pueden utilizar son las siguientes.
Funciones de Agrupamiento
Funcin
Cometido
Ejemplo
COUNT(col)
select
count(nombre),oficio from
emp group by oficio;
AVG(col)
select avg(salario),oficio
from emp group by oficio;
MAX(col)
MIN(col)
select min(salario),oficio
from emp group by oficio;
SUM(col)
select sum(salario),
oficio from emp group by
oficio;
STDDEV(col)
select stddev(salario),
oficio from emp group by
oficio;
C.COLUMN_NAME,