Download Terminologia DML DDL DBA SQL OPERADORES Y

Document related concepts

SQL wikipedia , lookup

Tabla DUAL wikipedia , lookup

Expresiones multidimensionales wikipedia , lookup

Null (SQL) wikipedia , lookup

Lenguaje de manipulación de datos wikipedia , lookup

Transcript
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
1
GUIA BASICA DE SQL
SQL (Structured Query Language): Aspectos básicos
1 Terminología
SQL
Structured Query Language o Lenguaje de Consultas Estructurado. Es el lenguaje que permite
la comunicación con el Sistema Gestor de Bases de Datos (Oracle en nuestro caso).
El SQL es un lenguaje unificado.
Lo utilizan todo tipo de usuarios, desde el administrador de la base de datos, DBA, hasta el
usuario final.
El SQL es un lenguaje no procedimental.
El usuario especifica Qué quiere, no Cómo ni Dónde conseguirlo.
El SQL es relacionalmente completo.
Permite la realización de cualquier consulta de datos.
SQL= DDL + DML
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
Existen dos tipos de comandos SQL:


Los DDL que permiten crear y definir nuevas bases de datos, campos e índices.
Los DML que permiten generar consultas para ordenar, filtrar y extraer datos
de la base de datos.
Las sentencias del SQL se clasifican como parte del DDL o del DML.
Lenguaje de Definición de Datos, DDL (Data Definition Language)
sentencias del SQL que permiten definir los objetos de la Base de Datos (create, revoke, grant,
alter, etc.). Cuando se definen dichos objetos se almacenan en el diccionario de datos.
Lenguaje de Manipulación de Datos, DML (Data Manipulation Language)
sentencias del SQL que se utilizan para manejar los datos de la base de datos y se refiere a los
comandos que permiten a un usuario manipular los datos es decir, añadir, consultar, borrar o actualizar
(select, insert, update, delete, etc).
Otras órdenes como COMMIT, START TRANSACTION o ROLLBACK están en el límite de lo que
podemos considerar órdenes DML de SQL puesto que no inciden en la manipulación o consulta de
datos pero sí en el proceso en que esto se realiza. Por cierto que lo de "START TRANSACTION" no es
estándar y depende de la implementación de SQL.
commit/rollback
Cada vez que se realiza alguna operación en la base de datos se realiza no sobre la tabla en sí,
sino sobre una copia local de la misma. Así, si queremos que los resultados de la modificación
se trasladen a la base de datos y perduren en el tiempo hay que confirmar dicha operación con el
comando commit. También se puede impedir que los últimos cambios lleguen a efectuarse con
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
rollback,
2
aunque existen algunas sentencias SQL que se 'autoconfirman' y no se pueden volver
atrás.
Diccionario de la Base de Datos
Guarda la definición de todos los objetos almacenados en la base de datos; sus características,
restricciones, privilegios, relaciones entre ellos, etc.
2 Tipos de Sentencias
Las sentencias SQL pertenecen a dos categorías principales: Lenguaje de Definición de Datos, DDL y
Lenguaje de Manipulación de Datos, DML. Estos dos lenguajes no son lenguajes en sí mismos, sino
que es una forma de clasificar las sentencias de lenguaje SQL en función de su cometido. La diferencia
principal reside en que el DDL crea objetos en la base de datos y sus efectos se pueden ver en el
diccionario de la base de datos; mientras que el DML es el que permite consultar, insertar, modificar y
eliminar la información almacenada en los objetos de la base de datos.
Cuando se ejecutan las sentencias DDL de SQL, el SGBD confirma la transacción actual antes y
después de cada una de las sentencias DDL. En cambio, las sentencias DML no llevan implícito el
commit y se pueden deshacer. Existe pues un problema al mezclar sentencias DML con DDL, ya que
estas últimas pueden confirmar las primeras de manera involuntaria e implicita, lo que en ocasiones
puede ser un problema.
A continuación se presenta una tabla con las sentencias SQL más comunes, clasificadas según el
lenguaje al que pertenecen.
Sentencia
DDL
Alter
procedure
Alter Table
Objetivo
Recompilar un procedimiento almacenado.
Utilizado para modificar las tablas agregando
campos o cambiando la definición de los campos.
Recoger estadísticas de rendimiento sobre los objetos de la BD para utilizarlas
en el optimizador basado en costes.
Create Table Crear una tabla.
Create Index Crear un índice.
Drop Table Eliminar una tabla.
Drop Index Eliminar un índice.
Grant
Conceder privilegios o papeles, roles, a un usuario o a otro rol.
Truncate
Eliminar todas las filas de una tabla.
Revoke
Retirar los privilegios de un usuario o rol de la base de datos.
Analyze
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
Sentencia
DML
Insert
Delete
Update
Select
Commit
Rollback
3
Objetivo
Añadir filas de datos a una tabla.
Eliminar filas de datos de una tabla (eliminar registros de una tabla).
Modificar los datos de una tabla (modificar los valores de los campos y registros
especificados)
Recuperar datos de una tabla. Consultar registros de la base de datos que
satisfagan un criterio determinado
Confirmar como permanentes las modificaciones realizadas.
Deshacer todas las modificaciones realizadas desde la última confirmación.
Cláusulas
Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o
manipular.
Comando
FROM
WHERE
GROUP BY
HAVING
ORDER BY
DISTINCT
Descripción
Utilizada para especificar la tabla de la cual se van a seleccionar los registros
Utilizada para especificar las condiciones que deben reunir los registros que
se van a seleccionar
Utilizada para separar los registros seleccionados en grupos específicos. Permite
especificar el criterio de ordenación de la respuesta a la consulta. Por defecto la
ordenación es ascendente, aunque se puede especificar un orden descendente
Utilizada para expresar la condición que debe satisfacer cada grupo
Utilizada para ordenar los registros seleccionados de acuerdo con un orden específico
Utilizada para eliminar las filas duplicadas obtenidas como respuesta a una consulta
En la cláusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la cláusula
HAVING se especifica la condición que han de cumplir los grupos para pasar al resultado.
La evaluación de las diferentes cláusulas en tiempo de ejecución se efectúa en el siguiente orden:




WHERE filtra las filas
GROUP BY crea una tabla de grupo
HAVING filtra los grupos
ORDER BY clasifica la salida
nueva
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
4
Operadores Lógicos
Operador Descripción, uso
Ejemplo
AND
Es el “y” lógico. Evalúa dos condiciones y devuelve
un valor de verdad sólo si ambas son ciertas.
select * from emp where
(cod_dep >=100) AND
(cod_dep <=300);
OR
Es el “o” lógico. Evalúa dos condiciones y devuelve
un valor de verdad si alguna de las dos es cierta.
select * from emp where
(cod_dep >=100) OR
(cod_dep <=300);
Negación lógica. Devuelve el valor contrario de la
expresión.
select * from emp where NOT
cod_dep<=300;
NOT
in
not in
Utilizado para especificar registros de una base de
datos. Igual a cualquiera de los miembros entre
paréntesis.
Distinto a cualquiera de los miembros entre
paréntesis.
select * from emp where
cod_dep in (100, 300);
select * from emp where
cod_dep not in (200);
between
Utilizado para especificar un intervalo de valores.
Contenido en el rango.
select * from emp where
cod_emp between 100 and
199;
not
between
Fuera del rango
select * from emp where
cod_emp not between 100 and
199;
like
Utilizado en la comparación de un modelo. Ej:
select * from emp where
'_abc%' Contiene la cadena 'abc' a partir del segundo nombre like 'Ma%';
carácter y luego cualquier cadena de caracteres.
Operadores de Comparación
Operador Operación, Uso
Ejemplo
=
Igualdad, igual a
select * from emp where cod_dep =
100;
!=, <>,
^=
Desigualdad, Distinto de ó no es
igual a
select * from emp where cod_dep !=
100;
<
Menor que
select * from emp where cod_dep <
200;
>
Mayor que
select * from emp where cod_dep >
200;
<=
Menor o igual que
select * from emp where cod_dep
<= 200;
>=
Mayor o igual que
select * from emp where cod_dep
>= 200;
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
5
Operadores Aritméticos
Operador Operación Ejemplo
select nombre, salario+comision from emp where oficio='VENDEDOR';
+
Suma
-
Resta
select nombre from emp where sysdate-fecha_alta > 365;
*
Producto
select nombre, salario*12 from emp;
/
División
select nombre, salario/31 from emp;
Operadores de Cadenas de Caracteres
Operador
||
Operación
Concatenación
Ejemplo
select nombre||oficio from emp;
Funciones de Agregado o agrupamiento
Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para
devolver un único valor que se aplica a un grupo de registros.
Función
Descripción
Ejemplo
COUNT(col)
Utilizada para devolver el número de registros select count (*) from emp;
select count(nombre),oficio
de la selección.
from emp group by oficio;
Cuenta el número de filas agrupadas.
AVG(col)
Utilizada para calcular el promedio de los
valores de un campo determinado. Calcula el
select avg(salario),oficio from
valor medio de todos los valores de la columna emp group by oficio;
col.
MAX(col)
Utilizada para devolver el valor más alto de un
select max(salario),oficio from
campo especificado. Calcula el valor máximo emp group by oficio;
de todos los valores de la columna col.
MIN(col)
Utilizada para devolver el valor más bajo de un
select min(salario),oficio from
campo especificado. Calcula el valor mínimo emp group by oficio;
de todos los valores de la columna col.
SUM(col)
Calcula la suma de los valores de la columna
col.
STDDEV(col)
Calcula la desviación típica de los valores de la
select stddev(salario), oficio
columna col sin tener en cuenta los valores
from emp group by oficio;
nulos.
Calcula la varianza de los valores de la
VARIANCE(col) columna col sin tener en cuenta los valores
nulos.
select sum(salario), oficio
from emp group by oficio;
select variance(salario), oficio
from emp group by oficio;
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
6
Hay que tener en cuenta que los valores nulos no participan en el cálculo de las funciones de conjuntos.
Estas funciones se pueden utilizar con las cláusulas DISTINCT y ALL. También se pueden utilizar
aunque no realicemos agrupación alguna en la consulta, considerando a toda la tabla como un grupo.
Funciones
Existen en SQL muchas funciones que pueden complementar el manejo de los datos en las consultas.
Se utilizan dentro de las expresiones y actúan con los valores de las columnas, variables o constantes.
Se pueden incluir en las cláusulas SELECT, WHERE y ORDER BY.
Pueden anidarse funciones dentro de funciones. Y existe una gran variedad de funciones para cada tipo
de datos:






aritméticas,
de cadenas de caracteres,
de manejo de fechas,
de conversión,
otras,
de grupo.
Funciones Aritméticas
Función
Cometido
Ejemplo
Resultado
ABS(n)
Calcula el valor absoluto de n.
select abs(-15) from
dual;
15
CEIL(n)
Calcula el valor entero inmediatamente select ceil(15.7)
from dual;
superior o igual a n.
16
FLOOR(n)
Calcula el valor entero inmediatamente select floor(15.7)
from dual;
inferior o igual a n.
15
MOD(m,n)
Calcula el resto resultante de dividir m select mod(11,4)
from dual;
entre n.
3
POWER(m,n) Calcula la potencia n-esima de m.
select power(3,2)
from dual;
9
Calcula el redondeo de m a n
decimales. Si n<0 el redondeo se
ROUND(m,n)
efectúa a por la izquierda del punto
decimal.
select
round(123.456,1)
from dual;
123.5
SQRT(n)
select sqrt(4) from
dual;
2
select
trunc(123.456,1)
from dual;
123.4
Calcula la raíz cuadrada de n.
Calcula m truncado a n decimales (n
TRUNC(m,n)
puede ser negativo).
SIGN(n)
Calcula el signo de n, devolviendo -1 si select sign(-12)
from dual;
n<0, 0 si n=0 y 1 si n>0.
-1
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
7
Funciones de Cadenas de Caracteres
Función
CHR(n)
Cometido
Ejemplo
Devuelve el carácter cuyo select chr(65) from
dual;
valor codificado es n.
Resultado
A
ASCII(cad)
Devuelve el valor ascii de select ascii('A') from
dual;
cad.
65
CONCAT(cad1,cad2)
Devuelve cad1
select
concatenada con cad2.
concat(concat(nombre,'
Esta función es
es '),oficio) from emp;
equivalente al operador ||.
Cano es
Presidente, etc.
LOWER(cad)
Devuelve la cadena cad select
lower('MinUsCulAs') from minusculas
con todas sus letras
convertidas a minúsculas. dual;
UPPER(cad)
Devuelve la cadena cad select
upper('maYuSCulAs') from MAYUSCULAS
con todas sus letras
convertidas a mayúsculas. dual;
INITCAP(cad)
Devuelve cad con el
primer caracter en
mayúsculas.
LPAD(cad1,n,cad2)
Devuelve cad1 con
longitud n, y ajustada a la select lpad('P',5,'*')
derecha, rellenando por la from dual;
izquierda con cad2.
****P
RPAD(cad1,n,cad2)
Devuelve cad1 con
longitud n, y ajustada a la select rpad('P',5,'*')
izquierda, rellenando por from dual;
la derecha con cad2.
P****
Devuelve cad en la que
cada ocurrencia de la
REPLACE(cad,ant,nue) cadena ant ha sido
sustituida por la cadena
nue.
select initcap('isabel')
from dual;
select
replace('digo','i','ie')
from dual;
Isabel
diego
SUBSTR(cad,m,n)
Devuelve la subcadena de
select
cad compuesta por n
substr('ABCDEFG',3,2)
caracteres a partir de la
from dual;
posición m.
CD
LENGTH(cad)
Devuelve la longitud de
cad.
6
select length('cadena')
from dual;
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
8
Funciones de Manejo de Fechas
Función
SYSDATE
Cometido
Devuelve la fecha y
hora actuales.
Devuelve la fecha d
ADD_MONTHS(d,n) incrementada en n
meses.
LAST_DAY(d)
Ejemplo
Resultado
select sysdate from
dual;
14-MAR-97
select
add_months(sysdate,4)
from dual;
14-JUL-97
Devuelve la fecha del select
último día del mes de last_day(sysdate) from
dual;
d.
31-MAR-97
Devuelve la diferencia select
MONTHS_BETWEE
months_between(sysdate, 2.43409424
en meses entre las
N(d1, d2)
'01-JAN-97') from dual;
fechas d1 y d2.
NEXT_DAY(d,cad)
Devuelve la fecha del
select
primer día de la
next_day(sysdate,
semana cad después 'sunday') from dual;
de la fecha d.
16-MAR-97
Funciones de Conversión de Tipos
Función
Cometido
Ejemplo
Convierte la cadena cad a
un número, opcionalmente select
to_number('12345')
TO_NUMBER(cad,fmto)
de acuerdo con el formato from dual;
fmto.
Resultado
124345
TO_CHAR(d, fmto)
Convierte la fecha d a una
select
cadena de caracteres,
'14-MARto_char(sysdate) from
opcionalmente de acuerdo dual;
97'
con el formato fmto.
TO_DATE(cad,fmto)
Convierte la cadena cad de
tipo varchar2 a fecha,
select to_date('1opcionalmente de acuerdo JAN-97') from dual;
con el formato fmto.
01-JAN97
Con las fechas pueden utilizarse varios formatos. Estos formatos permiten modificar la presentación de
una fecha. En la siguiente tabla se presentan algunos formatos de fecha y el resultado que generan.
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
T.P. SISTEMAS E INFORMATICA
9
Máscaras de Formato Numéricas
Formato
Cometido
Ejemplo
Resultado
cc ó scc
Valor del siglo.
select to_char(sysdate,'cc')
from dual;
20
y,yyy ó sy,yyy
Año con coma, con o sin select to_char(sysdate,'y,yyy')
1,997
from dual;
signo.
yyyy ó yyy ó
yy ó y
Año sin signo con cuatro, select to_char(sysdate,'yyyy')
from dual;
tres, dos o un dígitos.
q
Trimestre.
ww ó w
Número de la semana del select to_char(sysdate,'ww')
from dual;
año o del mes.
11
mm
Número del mes.
select to_char(sysdate,'mm')
from dual;
03
ddd ó dd ó d
Número del día del año,
del mes o de la semana.
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
select to_char(sysdate,'sssss')
minuto, o desde las 0
44159
from dual;
horas.
select to_char(sysdate,'q')
from dual;
1997
1
Máscaras de Formato de Caracteres
Formato
syear ó
year
Cometido
month o
mon
Nombre del mes o su
abreviatura de tres letras.
select to_char(sysdate,'month')
from dual;
march
day ó dy
Nombre del día de la
semana o su abreviatura
de tres letras.
select to_char(sysdate,'day')
from dual;
friday
a.m. ó
p.m.
El espacio del día.
select to_char(sysdate,'a.m.')
from dual;
p.m.
Año en Inglés
Ejemplo
Resultado
select to_char(sysdate,'syear) nineteen
from dual;
ninety-seven
Indicador del año respecto
select to_char(sysdate,'b.c.')
b.c. ó a.d. al del nacimiento de
a.d.
from dual;
Cristo.
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
10
T.P. SISTEMAS E INFORMATICA
Otras Funciones
Función
DECODE(var, val1,
cod1, val2, cod2, ...,
defecto)
Cometido
Convierte el valor
de var, de acuerdo
con la
codificación.
Ejemplo
Resultado
select decode(oficio,
'Presidente', 'P',
'Director', 'D', 'X') from
emp;
P, D, X, ...
GREATEST(exp1,
exp2, ...)
Devuelve el mayor
sin ejemplo.
valor de una lista.
sin
ejemplo.
LEAST(cad,fmto)
Devuelve el menor
sin ejemplo.
valor de una lista.
sin
ejemplo.
NVL(val, exp)
Devuelve la
select
expresión exp si
salario+nvl(comision,0) from
val es NULL, y val emp;
si en otro caso.
450000,
350000, ...
Operadores Derivados: Expresiones con sentencias Select
El resultado de cada consulta es un conjunto de filas. Y con conjuntos se pueden realizar tres
operaciones típicas: la unión, la intersección y la diferencia.
Unión, UNION
Combina todas las filas del primer conjunto con todas las filas del segundo. Cualquier fila
duplicada se reducirá a una sóla.
Intersección, INTERSECT
Examinará las filas de los conjuntos de entrada y devolverá aquellas que aparezcan en ambos.
Todas las filas duplicadas serán eliminadas antes de la generación del conjunto resultante.
Diferencia, MINUS
Devuelve aquellas filas que están en el primer conjunto pero no en el segundo. Las filas
duplicadas del primer conjunto se reducirán a una fila única antes de empezar la comparación
con el segundo conjunto.
Reglas para el Manejo de los Operadores de Conjuntos:



Pueden ser encadenados en cualquier combinación, siendo evaluados de izquierda a derecha.
No existe jerarquía de precedencia en el uso de estos operadores, pero puede ser forzada
mediante paréntesis.
Pueden ser empleados con conjuntos de diferentes tablas siempre que se apliquen las siguientes
reglas:
o Las columnas son relacionadas en orden, de izquierda a derecha.
o Los nombres de las columnas son irrelevantes.
o Los tipos de datos deben coincidir.
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.
INSTITUTO DE EDUCACIÓN TÉCNICA PROFESIONAL – INTEP
11
T.P. SISTEMAS E INFORMATICA
Ejemplo: Ese comando es un operador lógico que sirve para reducir el resultado de una consulta. Se
hacen dos Select y el comando MINUS quita de la primera Select las filas que hay en la segunda.
Imagínate una tabla con todos los números del 1 al 10.
SELECT * FROM TABLA
MINUS
SELECT * FROM TABLA
WHERE NUMERO=5;
Esto es muy simple pero el resultado es que muestra todos los números menos el 5.
Asignatura: Bases de Datos. Docente: Ing. Ana Milena Bueno Henao.