Escolar Documentos
Profissional Documentos
Cultura Documentos
Lenguaje SQL
Lenguaje SQL
Pgina 1/43
ndice
1
2
Introduccin
1.1
Caractersticas y Beneficios de SQL
El Lenguaje SQL
2.1
DML (Data Manipulation Language)
2.2
DDL (Data Definition Language)
2.3
DCL (Data Control Language)
2.4
Elementos de SQL
2.5
Objetos de un Esquema
2.6
Reglas para Nombrar Objetos
2.7
Reglas para Referenciar Objetos
2.8
Alias de Nombre de Tabla
2.9
Alias de Columnas
2.10 Tipos de Datos
El Lenguaje de Manipulacin de Datos
3.1
La Sentencia SELECT
3.2
Operadores. Funciones y Condiciones
3.3
Combinaciones de Tabla JOINS
3.4
Subconsultas o Subselects
3.5
La Sentencia INSERT
3.6
La Sentencia UPDATE
3.7
La Sentencia DELETE
El Lenguaje de Definicin de Datos
4.1
Sentencias DDL
4.2
CREATE TABLE
4.3
CREATE INDEX
4.4
CREATE SYNONYM
4.5
CREATE VIEW
4.6
ALTER TABLE
4.7
DROP TABLE
4.8
DROP INDEX
4.9
DROP SYNONYM
4.10 RENAME
4.11 TRUNCATE
El Lenguaje de Control de Datos
5.1
Privilegios y Roles
5.2
CREATE ROLE
5.3
GRANT
5.4
REVOKE
Lenguaje SQL
Pgina 2/43
Introduccin
El lenguaje SQL consiste en un grupo de comandos que todos los programas y
usuarios pueden utilizar para acceder a los datos dentro de una base de datos.
Normalmente, se accede a los datos a travs de aplicaciones o herramientas sin
tener que utilizar directamente SQL, pero las aplicaciones estn realizadas con dicho
lenguaje.
El modelo de base de datos relacional fue originalmente desarrollado por E. F.
Codd hacia los aos 70. El lenguaje SQL fue desarrollado por IBM en un prototipo de
base de datos relacional llamada SYSTEM R a mediados de los 70.
El lenguaje SQL original (SEQUEL2) se defini en Noviembre de 1976 por la
revista de IBM llamada IBM Journal of R&D. En 1979 Oracle Corporacin introduce la
primera implementacin comercial disponible de este lenguaje.
SQL tambin ha sido implementado como lenguaje para los sistemas de base de
datos de IBM DB2 y SQL/DS.
SQL est implementado y aceptado estndar de la industria como lenguaje de
acceso a bases de datos. Cumple los estndares ANSI/ISO/FIPS (American National
Standard Institute, International Standars Organization, Federal Information Processing
Standard respectivamente).
Lenguaje SQL
Pgina 3/43
El Lenguaje SQL
Normalmente una base de datos relacional almacena informacin en estructuras
bsicas denominadas tablas.
Una tabla es una estructura sobre la que se almacena informacin que interesa a
nuestro sistema. Una tabla est compuesta por columnas y filas.
Una columna es la representacin de un atributo, propiedad o caracterstica
de una tabla.
Una fila es una ocurrencia en la tabla.
Se pueden establecer reglas a las que queremos que se ajusten nuestros datos, o
qu tipos de datos se almacenen.
Se pueden establecer tambin relaciones entre las tablas de nuestras
aplicaciones.
La implementacin de estas reglas se detallar en los prximos captulos.
El lenguaje sql se subdivide a su vez en tres tipos de lenguaje dependiendo del
tipo de operacin que deseemos realizar sobre la base de datos. Estos tipos son:
DML (Data Manipulation Language)
DDL (Data Definition Language)
DCL (Data Control Language)
Lenguaje SQL
Pgina 4/43
Elementos de SQL
Antes de comenzar a trabajar con sql se debe estar familiarizado con los
siguientes conceptos:
Objetos de un Esquema
Reglas para Nombrar Objetos
Reglas para Referenciar Objetos
Tipos de Datos
Objetos de un Esquema
Un esquema es un conjunto de objetos o estructuras de datos propiedad de un
usuario. Cada usuario tiene su propio esquema, que coincide con el nombre del usuario
que crea el objeto. Los objetos se crean, y se puede modificar su estructura, con el
lenguaje DDL. Los objetos son de los siguientes tipos:
Tablas (Estructura Bsica)
ndices
Secuencias
Vistas
Sinnimos
Agrupaciones
Procedimientos y Funciones almacenados
Paquetes
Lenguaje SQL
Pgina 5/43
Lenguaje SQL
Pgina 6/43
donde:
esquema
nombre_objeto
parte_objeto
donde:
nombre_objeto
alias
Alias de Columnas
En el resultado de una consulta aparecen en las cabeceras de las columnas el
nombre que dicha columna tenga en la tabla. Si deseamos cambiarlo para modificar la
visualizacin del resultado, podemos utilizar alias de columna. Tambin se pueden
utilizar para referenciar dichas columnas desde comandos sqlplus. Cuando el alias de
una columna est compuesto por mas de una palabra, y existen espacios en blanco, o
algn carcter especial en medio, debe acotarse el literal con dobles comillas.
Tipos de Datos
Cada literal o valor de columna que se manipula esta englobado en un tipo de
dato. Cada tipo de dato contiene una serie de caractersticas asociadas, por ejemplo un
limite en la longitud del valor que pueden tener.
Lenguaje SQL
Pgina 7/43
Cuando se crea una tabla se especifica a que tipo de datos asociamos cada
columna. Luego, dependiendo del tipo de dato podremos insertar ciertos valores o
establecer ciertas comparaciones. Los tipos de datos son:
Cdigo Tipo Dato
VARCHAR2(tamao)
1
NUMBER(n[, d])
LONG
13
23
DATE
RAW(tamao)
24
LONG RAW
69
ROWID
96
CHAR(tamao)
Descripcin
Cadena de caracteres de longitud variable. La
mxima longitud se indica en tamao. El tamao
mximo es 2000 caracteres en la versin 7 y 255 en
la versin 6.
Nmero de tamao n dgitos (hasta 38) de los cuales
d dgitos son dedicados a la parte decimal.
Cadena de caracteres de longitud variable. Tamao
hasta 2 Giga bytes.
Fecha.
Dato binario de longitud variable. Tamao mximo
de 255 bytes.
Cadena binaria de longitud variable de hasta 2 Giga
bytes.
Pseudocolumna en notacin hexadecimal que indica
la posicin fsica de una fila en la base de datos.
Cadena alfanumrica de longitud fija. Tamao
mximo 255 bytes. Si no se indica precisin ocupa
un carcter.
Los cdigos de los tipos de datos son los utilizados internamente por Oracle en
el diccionario.
select
insert
update
delete
La Sentencia SELECT
Todas las consultas se realizan con una sola sentencia: select
Las consultas se realizan por asociacin de valores, y no por la situacin fsica
donde se encuentren los datos.
Se puede recuperar toda la informacin o tambin subconjuntos de filas o de
columnas.
La representacin de los datos se puede ordenar.
Lenguaje SQL
Pgina 8/43
La sintaxis es:
Lenguaje SQL
Pgina 9/43
hara que el resultado saliese ordenado por apellido1, apellido2, edad y nombre. La
utilizacin del mtodo de posicin en la clusula order by se lleva a cabo cuando la
cantidad de columnas por las que se desea ordenar es muy grande, aunque se puede usar
en cualquier situacin, pero es menos clarificadora en sentencias select pequeas.
Lenguaje SQL
Pgina 10/43
Operadores aritmticos
Operadores de caracteres
Operadores condicionales
Operadores lgicos
Operadores aritmticos
A continuacin veamos una lista de los operadores aritmticos:
Operador
Propsito
Ejemplo
select salario+comision
+, Suma y resta.
*, /
from empleados;
select salario * 12 salario anual
from empleados;
Multiplicar y dividir
Operadores de caracteres
El operador de caracteres es:
Operador
Propsito
Concatenar
caracteres
cadenas
Ejemplo
de select Estimado seor nombre
from empleados;
No igualdad.
>
Mayor que.
<
Menor que.
>=
Lenguaje SQL
Pgina 11/43
<=
IN
NOT IN
El valor no se encuentra
en la lista.
BETWEEN n
AND m
NOT
BETWEEN n
AND m
IS NULL
IS NOT
NULL
LIKE
NOT LIKE
Comprueba
si
hay
ausencia de contenido
(valor) en una columna.
Es el nico operador que
puede comprobarlo.
Comprueba
si
hay
contenido (valor) en una
columna.
Comprueba cadenas de
caracteres con un patrn
de bsqueda.
Comprueba cadenas de
caracteres
que
no
coincidan con un patrn
de bsqueda.
from empleados
where salario >= 3000;
select *
from empleados
where salario <= 2000;
select *
from departamento
where ndepartamento in (10,30,50);
select *
from departamento
where ndepartamento not in
(10,20,50);
select *
from empleados
where salario between 2000 and 3000;
select *
from empleados
where salario not between 2000 and
3000;
select *
from empleados
where comision is null;
select *
from empleados
where comision is not null;
select *
from empleados
where apellido1 like MARTI%
select *
from empleados
where apellido1 not like MARTI%
Operador like
Veamos a continuacin con mas detalle el operador like.
El operador like busca cadenas de caracteres que contengan la porcin de
cadena indicada, mientras que el operador igual (=) buscara cadenas de caracteres
idnticas a la proporcionada. Para realizar bsquedas con like se utilizan los caracteres
comodines % y _. El smbolo % indica cualquier cadena de caracteres de longitud
variable. En el ejemplo anterior buscara todos los empleados cuyo primer apellido
comenzase con la cadena MARTI, sin importar la continuacin (MARTIN,
MARTINEZ, etc.). El smbolo _ (underscore) indica cualquier carcter en la
posicin donde se encuentre, pero uno solo.
Lenguaje SQL
Pgina 12/43
Operadores lgicos
Los operadores lgicos se utilizan para combinar los resultados de dos
condiciones de comparacin y producir un nico resultado.
Los operadores lgicos son:
Operador
NOT
AND
OR
Propsito
Devuelve TRUE si la
condicin evaluada es
falsa, de otra manera
devuelve FALSE.
Devuelve TRUE si las dos
condiciones se cumplen.
Devuelve TRUE si alguna
de las condiciones se
cumple
Ejemplo
select *
from
empleados
where not (apellido1=MARTIN)
select
from
where
and
select
from
where
or
*
empleados
puesto=ANALISTA
ndepartamento=10
*
empleados
puesto=ANALISTA
ndepartamento=10
Que devuelve?
Suma de todas las filas distintas seleccionadas por ambas consultas.
Suma todas las filas seleccionadas por ambas consultas incluyendo
duplicados.
Devuelve todas las filas comunes de ambas consultas eliminando
duplicados.
Devuelve todas las filas seleccionadas por la primera consulta que
no sean recuperadas por la segunda consulta.
Funciones
Una funcin es similar a un operador puesto que manipula datos y devuelve un
resultado. Difiere de los operadores, puesto que admite argumentos.
Si se llama a una funcin con un argumento en el que el tipo de dato es distinto
al que espera la funcin, se convierte automticamente y de forma implcita al tipo que
la funcin espera.
Lenguaje SQL
Pgina 13/43
Sintaxis
cos
cosh
exp
floor
cos(n)
cosh(n)
exp(n)
floor(n)
ln
log
ln(n)
log(m, n)
mod
mod(m, n)
Lenguaje SQL
abs(n)
ceil(n)
Propsito
Devolver el valor absoluto de n.
Devuelve el entero inmediatamente superior o
igual a n.
Devuelve el coseno de n (n est en radianes).
Devuelve el coseno hiperblico de n.
Devuelve el nmero e elevado a n.
Devuelve el entero inmediatamente inferior o
igual a n.
Devuelve el logaritmo neperiano de n (n>0).
Devuelve el logaritmo en base m de n. La base m
debe ser un nmero positivo distinto de 0 o 1. n
tambin debe ser un valor positivo.
Devuelve el resto resultante de dividir m entre n.
Pgina 14/43
Funcin
power
Sintaxis
round
round(n[,m])
sign
sign(n)
sin
sinh
sqrt
sin(n)
sinh(n)
sqrt(n)
tan
tanh
trunc
tan(n)
tanh(n)
trunc(n[,m])
power(m, n)
Propsito
Devuelve m elevado a la potencia n. La base m y
el exponente n pueden ser cualquier tipo de
nmero, pero si m es negativo, n debe ser un
entero.
Devuelve n redondeado a m dgitos. Si se omite
m el valor por defecto es cero. m puede ser
negativo.
Si n<0 retorna -1, si n=0 devuelve 0 y si n>0
retorna 1.
Devuelve el seno de n.
Devuelve el seno hiperblico de n.
Devuelve la raz cuadrada de n. El valor de n
no puede ser negativo.
Devuelve la tangente de n.
Devuelve la tangente hiperblica de n.
Devuelve n truncado a m decimales. Si se omite
m el valor por defecto es cero.
Funciones de caracteres
Funciones de manejo de caracteres que devuelven caracteres. Funciones de fila
simple que aceptan como argumento de entrada un carcter y devuelven valores tipo
carcter.
Funcin
chr
concat
initcap
lower
lpad
ltrim
replace
Lenguaje SQL
Sintaxis
Propsito
Devuelve el carcter cuyo nmero ascii
correspondiente es n.
concat(char1, char2) Devuelve char1 concatenado con char2. Es
equivalente al operador .
initcap(char)
Devuelve la cadena con la primera letra de
cada palabra en maysculas, y el resto en
minsculas.
lower(char)
Devuelve la cadena con todas las letras en
minsculas.
lpad(char1,n[,char2]) Devuelve char1 rellenado a la izquierda,
hasta completar la longitud indicada en n, con
el carcter indicado en char2. Si char2 se
omite rellena con blancos.
ltrim(char[,muestra]) Borra los caracteres a la izquierda de char,
hasta encontrar el primer carcter que no este
en muestra. Por defecto el valor de muestra
es el carcter blanco.
replace(char,
Para la cadena elegida, char, reemplaza
car_bus[, car_rep])
car_bus por car_rep.
chr(n)
Pgina 15/43
Funcin
rpad
rtrim
substr
translate
upper
Sintaxis
Propsito
Devuelve char1 rellenado a la derecha hasta
la longitud indicada en n con la cadena
indicada en char2. Si char2 se omite rellena
con blancos.
rtrim(char[,muestra]) Borra los caracteres a la derecha de char
hasta encontrar el primer carcter que no este
en muestra. Por defecto muestra es un
blanco.
substr(char, m[, n]) Devuelve una parte de char empezando en la
posicin indicada en m, y tomando el nmero
de caracteres indicado en n.
translate(char,
Devuelve char con todas las caracteres que
muestra1, muestra2)
aparecen en muestra1 sustituidos por el
correspondiente en muestra2.
upper(char)
Devuelve la cadena char con todos los
caracteres en maysculas.
rpad(char1,n[,char2])
Sintaxis
instr
instr(char1,char2
[,n[,m]])
length
length(char)
Lenguaje SQL
ascii(char)
Propsito
Devuelve la representacin numrica en el
juego de caracteres que se utiliza en la base de
datos de la cadena char. Si se utiliza ascii, en
ascii, y si se utiliza ebcdic devolver el valor
ebcdic.
Busca en char1 la cadena indicada en char2,
empezando a partir del carcter cuya posicin
es n, y nos devolver la posicin de la m-sima
aparicin. Por defecto m y n valen 1.
Devuelve la longitud de char en caracteres,
incluyendo los blancos.
Pgina 16/43
Funciones de fechas
Todas las funciones que operan con valores de tipo date devuelven valores de
tipo fecha, a excepcin de MONTHS_BETWEEN , que devuelve un nmero.
Funcin
add_months
last_day
Sintaxis
add_months(f, n)
last_day(f)
months_between months_between(f1,
f2)
next_day
next_day(f, char)
Propsito
Devuelve la fecha f mas n meses.
Devuelve la fecha del ltimo da del mes
que contenga la fecha f. Se puede utilizar
para determinar cuantos das quedan del
mes.
Devuelve
el
nmero
de
meses
transcurridos entre f1 y f2.
Devuelve la fecha del primer da de la
semana indicado en char, a partir de la
fecha indicada en f.
Funciones de conversin
Sirven para convertir un tipo de dato en otro.
Funcin
chartorowid
convert
hextoraw
rawtohex
rowidtochar
to_char
to_date
Lenguaje SQL
Sintaxis
Propsito
Convierte una variable char de tipo de
dato char o varchar2 a tipo rowid. Para ello
char debe respetar la representacin
rowid.
convert(char,des
Convierte char de un juego de caracteres
[,fuen])
fuen a un juego de caracteres des. Si se
omite el juego de caracteres fuente, toma
por defecto el de la base de datos.
hextoraw(char)
Convierte una cadena char que contiene
un valor en hexadecimal a formato raw.
rawtohex(raw)
Convierte el valor raw a su equivalente
hexadecimal.
rowidtochar(rowid)
Convierte un tipo de datos rowid contenido
en la variable rowid a tipo de datos
varchar2. De la conversin resulta siempre
una cadena de 18 caracteres de longitud.
to_char(f[,formato]) Convierte una fecha f de tipo date, o un
nmero f de tipo number, en un varchar2,
utilizando la mscara indicada en formato.
to_date(char
Convierte una cadena char de tipo char o
[, formato])
varchar2 en un valor tipo date. El formato
es la mscara de la fecha. Si se omite toma
el formato por defecto.
chartorowid(char)
Pgina 17/43
Funcin
to_number
Sintaxis
to_number(char
[, formato])
Propsito
Convierte char, de tipo de dato char o
varchar2, a un tipo number. to_number
utiliza la mascara especificada en formato
para conocer como ser la entrada de
datos.
Mscaras de formatos.
Formatos numricos.
Deben proporcionarse las mascaras de conversin, en formato numrico,
adecuadas cuando:
En una funcin to_char se cambia un tipo de dato number a un tipo de dato
varchar2.
En una funcin to_number se cambia un tipo de dato varchar2 o char a
number.
Los formatos numricos estn compuestos de uno o mas elementos de formatos.
Dichos elementos son:
Elemento
Ejemplo
9999999
099999 999990
$
B
$99999
B99999
MI
99999MI
S99999
PR
99999PR
99999D999
9G999
C9999
Lenguaje SQL
Descripcin
El nmero de nueves especifica la cantidad de
dgitos que se visualizan. Se visualizan blancos para
los ceros a la izquierda.
Visualiza los ceros a la izquierda en esa posicin
como ceros en vez de como blancos, o visualiza el
valor 0, en lugar de blancos.
Antepone como prefijo el smbolo $.
Devuelve los ceros como blancos a menos que se
indique cero en la mscara de formato.
Visualiza el signo menos despus de los valores
negativos. Para los valores positivos muestra un
espacio en blanco.
Muestra un mas (+) para los valores positivos y un
menos (-) para los negativos en la posicin
indicada.
Muestra los valores negativos entre los signos < y
>.
Muestra el carcter decimal en la posicin indicada.
Separa la parte entera y fraccionaria de un nmero.
Muestra el separador de grupo en la posicin
indicada.
Muestra el smbolo ISO de la moneda en la posicin
indicada.
Pgina 18/43
Elemento
Ejemplo
L9999
, (coma)
. (punto)
9,999
999.9
EEEE
RN
9.999EEEE
RN
Descripcin
Muestra el smbolo de la moneda local en la
posicin indicada.
Muestra una coma en la posicin indicada.
Muestra un punto en la posicin indicada,
separando la parte entera de la decimal.
Muestra el valor en notacin cientfica.
Devuelve en maysculas o minsculas (rn) el valor
del nmero en notacin romana. El nmero debe ser
un entero entre 1 y 3999.
Los caracteres que devuelven los formatos D, G, C, L son especificados por los
siguientes parmetros de inicializacin de la base de datos.
D
G
C
L
Carcter Decimal
Separador Grupo
Smbolo Moneda ISO
Smbolo Moneda
NLS_NUMERIC_CHARACTERS
NLS_NUMERIC_CHARACTERS
NLS_ISO_CURRENCY
NLS_CURRENCY
Lenguaje SQL
Significado
Indica el siglo. Si se indica S, en las fechas de antes de Cristo
aparece el prefijo -.
Visualiza los cuatro dgitos del ao. S antepone el prefijo - para
las fechas anteriores a Cristo.
Los cuatro dgitos del ao en formato ISO estndar.
Los ltimos 3, 2, o 1 dgito/s del ao.
Los ltimos 3, 2, o 1 dgito/s del ao en formato ISO estndar.
El ao con una coma (,) en la posicin indicada.
El nmero del ao en letras. S antepone el prefijo - para las
fechas anteriores a Cristo.
Los ltimos dos dgitos del ao. Se utiliza para aos de otros
siglos.
Indicador antes/despus de Cristo.
Indicador antes/despus de Cristo separado por puntos.
Trimestre del ao (Enero-Marzo = 1).
Nmero de mes (Enero = 1).
Nmero de mes en notacin romana (Julio=VII).
Nombre del mes alineado con blancos hasta nueve caracteres de
longitud.
Nombre del mes abreviado a tres letras.
Pgina 19/43
Elemento
ww
IW
w
ddd
dd
d
day
dy
j
am pm
a.m. p.m.
hh hh12
hh24
mi
ss
sssss
Significado
Nmero de la semana del ao.
Nmero de la semana del ao en ISO estndar.
Nmero de semana dentro del mes.
Nmero de da del ao (1 a 366).
Nmero de da del mes (1 a 31).
Nmero de da de la semana (1 a 7).
Nombre del da de la semana hasta nueve caracteres.
Nombre del da de la semana abreviado.
Fecha en juliano. Los nmeros especificados deben ser enteros.
Indicador del meridiano.
Indicador del meridiano separado por puntos.
Hora del da (1 a 12).
Hora del da (0 a 23).
Minutos (0 a 59).
Segundos (0 a 59).
Segundos transcurridos desde medianoche (0 a 86399)
Lenguaje SQL
Sintaxis
dump(expr
[, formato])
Propsito
Devuelve un varchar2 conteniendo el cdigo del
tipo de dato al que corresponde expr, la longitud
en bytes y la representacin interna del dato. El
argumento formato indica la notacin en la que
se visualiza el resultado. Formato puede tener
los siguientes valores:
8 Devuelve el resultado en notacin octal.
10 Devuelve el resultado en notacin
decimal.
16 Devuelve el resultado en notacin
hexadecimal.
17 Devuelve el resultado en formato
carcter.
Pgina 20/43
Funcin
greatest
least
nvl
vsize
decode
Sintaxis
Propsito
Devuelve el mayor valor de una lista de
expresiones. Compara carcter a carcter. El tipo
de datos siempre es varchar2.
least(expr
Devuelve el menor valor de una lista de
[, expr2]...)
expresiones. Compara carcter a carcter. El tipo
de dato es siempre varchar2.
nvl(expr1, expr2)
Indica el valor que ha de tener expr1 cuando en
su contenido aparezcan nulos. El tipo de dato
que retorna expr2 es siempre el mismo que
tenga expr1.
vsize(expr)
Devuelve el nmero de bytes que ocupa la
representacin interna de expr.
decode(expr, val1, Dentro de una expr evala los valores de la lista,
cod1, ..., valn, val1 ... valn, y los cambia por el cdigo
codn[, default])
correspondiente, cod1 ... codn. Si no se cumple
ninguno podemos asignarle uno por defecto
indicado en la expresin default.
greatest(expr
[, expr2]...)
Variables de entorno
Existe un grupo de variables, que aunque no forman parte de la sintaxis propia
de sql en Oracle, forman parte del entorno de trabajo, y son frecuentemente utilizadas.
Contienen normalmente datos acerca de la sesin actual.
Variable
uid
Sintaxis
user
user
userenv
userenv(opcin)
sysdate
sysdate
Lenguaje SQL
uid
Propsito
Devuelve un entero que es el identificador nico
de el usuario conectado.
Devuelve un varchar2 que contiene el nombre
del usuario conectado en la base de datos local.
Devuelve informacin en un tipo de datos
varchar2 acerca de la sesin actual. El argumento
opcin puede tener los valores: LANGUAGE,
devuelve el lenguaje y el territorio utilizado
durante la sesin; SESSION, devuelve un
identificativo de la sesin; TERMINAL, que
devuelve el identificador del terminal utilizado.
Contiene la fecha del sistema.
Pgina 21/43
Funciones de grupo
Las funciones de grupo devuelven un resultado basado en un grupo de filas,
mejor que sobre una fila solamente. Algunas funciones de grupo aceptan las siguientes
opciones.
distinct
all
Todas las funciones de grupo, excepto count(*) ignoran los valores nulos.
Veamos a continuacin las principales funciones de grupo.
Funcin
avg
count
max
min
stddev
sum
variance
Sintaxis
Propsito
Devuelve la media de n.
Devuelve el nmero de filas en la
consulta.
max([distinctall] expr)
Devuelve el valor mximo de expr.
min([distinctall] expr)
Devuelve el valor mnimo de expr.
stddev([distinctall] n)
Devuelve la desviacin estndar de n.
sum([distinctall] n)
Devuelve la suma de los valores de n.
variance([distinctall] n) Devuelve la varianza de n.
avg([distinctall] n)
count({*[distinctall]
expr})
La clusula group by
Se puede utilizar la clusula group by para agrupar las filas seleccionadas y
devolver una sola fila resumiendo la informacin solicitada. La seleccin de los
conjuntos de filas se realizan para calcular propiedades de los conjuntos, basndose en
los valores de las expresiones especificados en la clusula group by.
Si la sentencia select contiene la clusula group by, la lista de la select solo
puede contener los siguientes tipos de expresiones:
constantes
funciones de grupo
expresiones idnticas a las que estarn en la clusula group by.
expresiones implcitas en las expresiones mencionadas en la select que
evalen el mismo valor para todas las filas de un grupo.
Lenguaje SQL
Pgina 22/43
Lenguaje SQL
Pgina 23/43
Lenguaje SQL
Pgina 24/43
La Sentencia INSERT
El propsito de la sentencia insert es aadir filas a una tabla o vista.
Como requisitos para aadir filas en una tabla, la tabla debe ser propiedad del
usuario que intenta realizar la insercin o bien tener privilegio de insert sobre ella.
La sintaxis es:
esquema
tabla o vista
columna
VALUES
subconsulta
La Sentencia UPDATE
El propsito de la sentencia update es cambiar los valores existentes en una
tabla o vista.
Como requisitos para actualizar filas de una tabla, la tabla debe ser propiedad
del usuario que intenta realizar la actualizacin, o bien tener privilegio de UPDATE
sobre ella.
Lenguaje SQL
Pgina 25/43
La sintaxis es:
esquema
tabla o vista
columna
subconsulta
WHERE
La Sentencia DELETE
El propsito de esta sentencia es borrar filas de una tabla o vista. Ms adelante
hablaremos de las sentencias DROP y TRUNCATE.
Como requisitos para borrar filas de una tabla, la tabla debe ser propiedad del
usuario que intenta realizar el borrado o bien tener privilegio de DELETE sobre ella.
La sintaxis es:
esquema
Lenguaje SQL
Pgina 26/43
tabla o vista
WHERE
Sentencias DDL
Las sentencias de lenguaje de definicin de datos mas importantes son:
CREATE
La sentencia CREATE permite al usuario que la ejecuta crear
un objeto (tabla, vista, sinnimo procedimiento, paquete,
disparador, usuario, rol, perfil, etc.). (*)
ALTER
La sentencia ALTER permite al usuario que la ejecuta
modificar la estructura de un objeto previamente creado.
DROP
La sentencia DROP permite al usuario que la ejecuta eliminar
un objeto (no slo las filas) de la base de datos.
RENAME
Permite al usuario que la ejecuta modificar el nombre de un
objeto.
TRUNCATE
Permite al usuario que la ejecuta borrar todas las filas de una
tabla o ndice. Tiene ciertas diferencias con DELETE o DROP
que veremos prximamente.
Veamos a continuacin con mas detalle algunas de ellas aplicadas a los objetos
bsicos.
(*) Nota Importante: Previamente se ha indicado que estos comandos pueden
afectar a numerosos objetos. En este manual nos centraremos en la definicin de tablas,
ndices, vistas y sinnimos.
Lenguaje SQL
Pgina 27/43
Integridad de datos
Antes de definir una tabla debemos tener en cuenta ciertos aspectos acerca de la
informacin a almacenar, que nos evita tener que programar de forma redundante
ciertas comprobaciones.
Lenguaje SQL
Pgina 28/43
Lenguaje SQL
Pgina 29/43
Not null.
Unique.
Check.
Integridad referencial
Es la que determina las relaciones existentes entre los objetos. Por ejemplo
existe una relacin entre las tablas cabecera de facturas y lneas de factura.
Primary Key
Identificador nico de una fila en una tabla. Hemos visto
anteriormente que este concepto pertenece a la integridad de
entidades.
Foreign Key
Columna normalmente asociada a una clave primaria o nica
de otra tabla, o de la misma tabla (denominado
autoreferencia). Puede haber tantas como se desee por tabla.
Su valor puede ser nulo o el valor de la clave referenciada.
Garantiza consistencia de relaciones entre los datos. Por
ejemplo toda lnea de factura debe pertenecer a una cabecera
de factura.
Estableciendo estas relaciones entre claves ajenas (foreign key) y primarias
(primary key) logramos:
Evitar borrados, inserciones o actualizaciones no deseados. Por ejemplo no se
puede borrar una factura (cabecera de factura) que tenga lneas de factura. No
se puede dar de alta una lnea de factura sin su correspondiente cabecera. No
se puede actualizar el identificativo de una lnea de factura.
Propagar modificaciones. Lo contrario a lo anterior. Se pueden definir
acciones de borrado en cascada. Por ejemplo si se borra una cabecera de
factura que se borren las correspondientes lneas.
Lenguaje SQL
Pgina 30/43
user_constraints
user_cons_columns
Lenguaje SQL
Pgina 31/43
Lenguaje SQL
Pgina 32/43
Lenguaje SQL
Pgina 33/43
Lenguaje SQL
Pgina 34/43
Lenguaje SQL
Pgina 35/43
Lenguaje SQL
Pgina 36/43
Aadir restricciones
Se pueden aadir restricciones de integridad referencial a posteriori. En el
momento que se aade, se bloquea toda la tabla y se produce la comprobacin de la
restriccin que se desea incorporar. Si alguna fila no la cumple, la restriccin no se
aade.
La sintaxis para aadir restricciones una vez creada la tabla es similar a la de las
restricciones asociada a tabla. Esto significa que se debe indicar tras el comando alter
table la palabra clave constraint, seguida del nombre del constraint, y luego el
tipo de restriccin a aplicar y por ltimo sobre que columna de la tabla se desea aplicar
dicha restriccin.
Desactivar restricciones
El desactivar una restriccin permite que dicha restriccin no se compruebe
temporalmente. No es igual que borrar la restriccin.
Es la forma de incrementar la velocidad en cargas de datos masivas.
La herramienta de carga masiva de Oracle (loader) deshabilita automticamente,
con su mtodo directo DIRECT PATH, las restricciones.
Cuando se intenta desactivar una clave primaria (primary key) o clave nica
(unique key), que pueden ser referenciadas, hay que desactivar en primer lugar las
claves ajenas (foreign key) que le referencian o utilizar la clusula disable
cascade.
Al desactivar una clave primaria o nica tambin se destruyen los ndices asociados.
Activar restricciones
Activa la comprobacin de la restriccin. En el momento de la creacin de una
restriccin se activa, a no ser que se indique la clusula disable.
Cuando se activa posteriormente:
Bloquea la tabla completa, hasta que se termine la comprobacin.
Comprueba una a una las filas.
Si alguna de las filas no cumple la restriccin, no podr llegar a activarse.
Al habilitar una clave primaria o nica se vuelven a construir los ndices
asociados.
Lenguaje SQL
Pgina 37/43
Lenguaje SQL
Pgina 38/43
user_indexes
user_ind_columns
Para borrar un ndice se debe ser propietario de la tabla en la que estn asociados
los ndices, o tener el privilegio DROP ANY INDEX.
user_synonyms
all_synonyms
Para borrar un sinnimo basta con ser el propietario, es decir, haber creado
dicho sinnimo. En el caso de que el sinnimo que se desea borrar sea publico, es
necesario tener el privilegio DROP PUBLIC SYNONYM.
Lenguaje SQL
Pgina 39/43
La sentencia RENAME
La sentencia rename cambia el nombre de un objeto (tabla, procedimiento, vista,
etc.) por otro de forma permanente.
La sintaxis es:
user_objects
La sentencia TRUNCATE
La sentencia truncate borra filas de una tabla o ndice, sin eliminar la
estructura del objeto. Es similar a delete, pero no hay posibilidad de deshacer la
transaccin (rollback), ni de hacer un borrado restrictivo (clusula where).
La sintaxis es:
Para truncar un objeto se debe ser propietario del mismo, o tener el privilegio
DELETE ANY TABLE.
La opcin drop storage libera el espacio que el objeto ha tomado a la base de
datos.
La opcin reuse storage
adquirido para dicho objeto.
Al truncar una tabla se truncan de forma implcita los ndices de dicha tabla.
Lenguaje SQL
Pgina 40/43
role
not identified
identified
Lenguaje SQL
Pgina 41/43
La sentencia GRANT
Esta sentencia nos permite asignar privilegios a roles o a usuarios, y tambin
roles a usuarios. Veamos a continuacin la sintaxis para cada uno de estos dos casos.
Asignacin de privilegios a roles y usuarios. La sintaxis es:
donde:
system_priv
role
with admin option
donde:
Indica cualquier privilegio de objetos.
Indica las columnas sobre las que queremos dar
privilegios.
with grant option Indica que el usuario que recibe el permiso puede darlo a
otros usuarios.
object_priv
column
Lenguaje SQL
Pgina 42/43
La sentencia REVOKE
Esta sentencia permite quitar privilegios o roles a usuarios y roles, de forma que
ya no dispongan o puedan hacer uso de dichos privilegios.
La sintaxis para privilegios de sistema y roles es:
donde:
Indica el objeto sobre el que queremos quitar
privilegios.
from
Es la clusula que nos indica a quien queremos quitar
dichos privilegios.
cascade constraints Especifica que los privilegios que haya utilizado el
usuario o role para referenciar nuestro objeto tambin
sean revocados (por ejemplo cuando se activa una
foreign key sobre una tabla de otro usuario).
object
Lenguaje SQL
Pgina 43/43