Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los sistemas de gestin de bases de datos (en ingls database management system, abreviado DBMS) son un tipo de software muy especfico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan 2. Para que sirven los disparadores en las BD? Un trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condicin establecida al realizar una operacin. Dependiendo de la base de datos, los triggers pueden ser de insercin (INSERT), actualizacin (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos. 3. Que es informtica? Procesamiento automtico de la informacin 4. Menciona el ciclo de vida de un proyecto (SW)?
6. Que es un algoritmo? es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad 7. Que es un sistema operativo y menciona algunos?
Un Sistema Operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicacin y los diferentes usuarios. Es un administrador de los recursos de hardware del sistema.
8. Menciona cuales son los operadores lgicos y aritmticos en las BD? And, Or + - * / 9. Describe los acrnimos DML y UML? Lenguaje de Manipulacin de Datos Lenguaje Unificado de Modelado 10. Genera un cdigo con estructuras MySQL para crear una base de nombre Conalep que contenga 2 tablas con cuatro campos cada una de ellas?
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Que es informtica? Menciona 3 dispositivos de entrada y 3 de salida? Que es un procesador de texto y un editor de texto? Que es un lenguaje de programacin? Menciona los tipos de mantenimiento para un equipo de cmputo? Cual es la unidad mnima de medida dentro de la informtica? Que es un compilador? Que es un virus y menciona 5 tipos? Que es el CPU? Crea un algoritmo de un da de clases?
SQL> select nombre "Departamento", loc "Est en" from dep; Departamento Esta en --------------- ---------Administracion Valladolid I+D Boecillo Produccion Cigales
Tambin se puede asociar un alias a las tablas para abreviar los nombres de las tablas. Un ejemplo se puede ver en la sentencia SQL siguiente:
!=, <>, ^= Desigualdad < > <= >= in not in between not between like '_abc%' Menor que Mayor que Menor o igual que Mayor o igual que Igual a cualquiera de los miembros entre parntesis Distinto a cualquiera de los miembros entre parntesis Contenido en el rango Fuera del rango Contiene la cadena 'abc' a partir del segundo carcter y luego cualquier cadena de caracteres
BY
Se utiliza para especificar el criterio de ordenacin de la respuesta a la consulta. Por defecto la ordenacin es ascendente, aunque se puede especificar un orden descendente. La ordenacin se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. A continuacin se puede ver un ejemplo de uso de la clusula ORDER BY en la que quiere obtener un listado de los empleados ordenado de manera descendente por su salario y en caso de igualdad de salario, ordenado ascendentemente por su nombre.
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 235000 Garcia 225000 Garcia 210000 Mateo 200000 Santana 200000 Rueda 175000 Lopez 150000
Sanz
150000
14 rows selected.
OFICIO ----------Presidente Director Secretario Contable Comercial Comercial Director Analista Programador Programador Director Analista Programador Programador 14 rows selected.
Pero si incluimos la clusula DISTINCT la respuesta vara para adecuarse ms a nuestras espectativas.
SQL> select distinct oficio from emp; OFICIO ----------Analista Comercial Contable Director Presidente Programador Secretario 7 rows selected.
7.6 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:
Resultado 15 16 15
Calcula el valor absoluto de n. from dual; Calcula el valor entero inmediatamente superior o igual a n. Calcula el valor entero inmediatamante inferior o
3 9
Calcula el redondeo de m a n decimales. Si n<0 el redondeo select round(123.456,1) ROUND(m,n) se efectua a por la izquierda from dual; del punto decimal. SQRT(n) Calcula la raz cuadrada de n.
select sqrt(4) from dual; select trunc(123.456,1) from dual;
123.5
2 123.4
Calcula el signo de n, select sign(-12) devolviendo -1 si n<0, 0 si n=0 from dual; y 1 si n>0.
-1
Funciones de Cadenas de Caracteres Funcin Cometido Ejemplo Devuelve el carcter select chr(65) from cuyo valor dual; codificado es n. Devuelve el select ascii('A') from valor ascii dual; de cad. Resultado
CHR(n)
ASCII(cad)
65
CONCAT(cad1,cad2)
Devuelve cad1 concatenada con cad2. select Cano es concat(concat(nombre,' Esta Presidente, etc. funcin es es '),oficio) from emp; esquivalente al operador ||. Devuelve la cadena cad select lower('MinUsCulAs') from minusculas con todas dual; sus letras convertidas
LOWER(cad)
a minsculas. Devuelve la cadena cad con todas select upper('maYuSCulAs') from MAYUSCULAS sus letras convertidas dual; a maysculas. Devuelve cad con el select initcap('isabel') primer Isabel from dual; caracter en maysculas. Devuelve cad1 con longitud n, y ajustada a select lpad('P',5,'*') la derecha, from dual; rellenando por la izquierda con cad2. Devuelve cad1 con longitud n, y ajustada a select rpad('P',5,'*') la izquierda, from dual; rellenando por la derecha con cad2.
UPPER(cad)
INITCAP(cad)
LPAD(cad1,n,cad2)
****P
RPAD(cad1,n,cad2)
P****
Devuelve cad en la que cada ocurrencia select REPLACE(cad,ant,nue) de la cadena replace('digo','i','ie') diego ant ha sido from dual; sustituida por la cadena nue. SUBSTR(cad,m,n) Devuelve la select sudcadena substr('ABCDEFG',3,2) from dual; de cad CD
compuesta por n caracteres a partir de la posicion m. LENGTH(cad) Devuelve la select length('cadena') longitud de from dual; 6 cad.
ADD_MONTHS(d,n)
Devuelve la select fecha d add_months(sysdate,4) from 14-JUL-97 incrementada dual; en n meses. Devuelve la fecha del select last_day(sysdate) from dual; ltimo da del mes de d. 31-MAR97
LAST_DAY(d)
Devuelve la diferencia en select MONTHS_BETWEEN(d1, meses entre months_between(sysdate,'01- 2.43409424 d2) las fechas d1 JAN-97') from dual; y d2. Devuelve la fecha del primer da de select next_day(sysdate, 'sunday') from dual; la semana cad despus de la fecha d.
NEXT_DAY(d,cad)
16-MAR97
Funciones de Conversin de Tipos Funcin Cometido Convierte la cadena cad a un TO_NUMBER(cad,fmto) nmero, opcionalmente de acuerdo con el Ejemplo
select to_number('12345') from dual;
Resultado
124345
formato fmto. Convierte la fecha d a una cadena de select caracteres, to_char(sysdate) opcionalmente de from dual; acuerdo con el formato fmto.
TO_CHAR(d, fmto)
'14-MAR97'
TO_DATE(cad,fmto)
Convierte la cadena cad de tipo varchar2 a fecha, select to_date('1- 01-JANopcionalmente de JAN-97') from dual; 97 acuerdo con el formato fmto.
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. Mscaras de Formato Numricas Formato cc scc y,yyy sy,yyy Cometido Valor del siglo. Ejemplo
select to_char(sysdate,'cc') from dual;
Resultado 20 1,997
Ao sin signo con select yyyy yyy cuatro, tres, dos o un to_char(sysdate,'yyyy') from 1997 yy y dual; dgitos. q ww w mm Trimestre.
select to_char(sysdate,'q') from dual;
Nmero de la select to_char(sysdate,'ww') semana del ao o del from dual; 11 mes. Nmero del mes.
select to_char(sysdate,'mm') from dual; select to_char(sysdate,'ddd') from dual; select to_char(sysdate,'hh') from dual; select to_char(sysdate,'mi') from dual;
03 073 12 15
Nmero del da del ddd dd ao, del mes o de la d semana. hh hh12 La hora en formato hh24 12h. o 24h. mi Los minutos de la hora.
ss sssss
Los segundos dentro select del minuto, o desde to_char(sysdate,'sssss') from dual; las 0 horas.
44159
Mscaras de Formato de Caracteres Formato Cometido syear year month o mon Ao en Ingls Ejemplo
select to_char(sysdate,'syear) from dual;
Nombre del mes o su select to_char(sysdate,'month') abreviatura de tres from dual; letras.
Nombre del da de la select semana o su to_char(sysdate,'day') from friday day dy abreviatura de tres dual; letras. a.m. p.m. El espacio del da.
select to_char(sysdate,'a.m.') from dual;
p.m.
Indicador del ao select to_char(sysdate,'b.c.') from a.d. b.c. a.d. respecto al del nacimiento de Cristo. dual; Otras Funciones Funcin Cometido Convierte el DECODE(var, val1, valor de var, de cod1, val2, cod2, ..., acuerdo con la defecto) codificacin. GREATEST(exp1, exp2, ...) LEAST(cad,fmto) Ejemplo
select decode(oficio, 'Presidente', 'P', 'Director', 'D', 'X') from emp;
Resultado P, D, X, ...
Devuelve el mayor valor de sin ejemplo. una lista. Devuelve el menor valor de sin ejemplo. una lista. Devuelve la expresin exp select salario+nvl(comision,0) si val es NULL, y val si from emp; en otro caso.
NVL(val, exp)
BY
SQL nos 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 HAVING filtra los grupos ORDER BY clasifica la salida
nueva
Un ejemplo de utilizacin de la seleccin de grupos puede ser seleccionar los empleados agrupados por su oficio. Un primer intento de consulta es el siguiente:
SQL> select nombre, oficio from emp group by oficio; select nombre, oficio from emp * ERROR at line 1: ORA-00979: not a GROUP BY expression
Se presenta un error debido a que cuando se utiliza GROUP BY, las columnas implicadas en el SELECT y que no aparezcan en la clusula GROUP BY deben tener una funcin de agrupamiento. En otras palabras, la columna nombre debe tener una funcin de agrupamiento que actue sobre ella (max, min, sum, count, avg). Si no puede ser as, deber llevar dicha columna a la clusula GROUP BY.
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 COUNT(col) AVG(col) Cometido Cuenta el nmero de filas agrupadas. Calcula el valor medio de todos los valores de la columna col. Ejemplo
select count(nombre),oficio from emp group by oficio; select avg(salario),oficio from emp group by oficio;
MAX(col)
Calcula el valor mximo de select max(salario),oficio todos los valores de la from emp group by oficio; columna col. Calcula el valor mnimo de select min(salario),oficio todos los valores de la from emp group by oficio; columna col. Calcula la suma de los valores de la columna col.
select sum(salario), oficio from emp group by oficio;
MIN(col) SUM(col)
STDDEV(col)
Calcula la desviacin tpica stddev(salario), de los valores de la columna select oficio from emp group by col sin tener en cuenta los oficio; valores nulos.
select variance(salario), oficio from emp group by oficio;
Calcula la varianza de los VARIANCE(col) valores de la columna col sin tener en cuenta los
valores nulos. Hay que tener en cuenta que los valores nulos no participan en el clculo de las funciones de conjuntos. Estas funciones se pueden utilizar con las clusulas DISTINCT y ALL. Tambin se pueden utilizar aunque no realicemos agrupacin alguna en la consulta, considerando a toda la tabla como un grupo.
Pueden ser encadenados en cualquier combinacin, siendo evaluados de izquierda a derecha. No existe jerarqua de precedencia en el uso de estos operadores, pero puede ser forzada mediante parntesis. 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.
Como ejemplo podemos consultar sobre todos los nombres de empleado que trabajan para los departamentos 100 o 300. Esto se consigue restando a todos los nombres de empleados, aquellos que estn en el departamento 200.
SQL> select nombre from emp 2 minus 3 select nombre from emp where cod_dep=200; NOMBRE ---------Cano Lopez Martin Recio Roncal Rueda Santana Sanz Yuste 9 rows selected.
7.9 Combinaciones
Hasta ahora hemos construido consultas con una nica tabla, pero esto no debe ser siempre as. De hecho, slo se alcanza la verdadera potencia del SQL cuando combinamos el contenido de ms de una tabla. Supongamos que queremos conseguir una lista con los empleados y los departamentos para los que trabajan. Esta informacin est repartida en las dos tablas que tenemos, emp y dep. As, podramos intentar una consulta que seleccionara el campo nombre de la tabla emp y el nombre del departamento. Y aqu surge el primer problema, cmo distinguimos entre dos columnas que llamndose igual, pertenecen a tablas distintas? Para eso se utiliza como prefijo o el nombre de la tabla (dep.nombre) o un alias de tabla, un nombre que se asocia a cada tabla y se coloca como prefijo a la columna (d.nombre). Realicemos la consulta ...
---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez Administracion Sastre Administracion Garcia Administracion Mateo Administracion Yuste Administracion Recio Administracion Garcia Administracion Santana Administracion Cano I+D Roncal I+D Rueda I+D ... 42 rows selected.
El resultado puede sorprender un poco. Lo que obtenemos es el producto cartesiano de todos los empleados por todos los departamentos. SQL ha cogido cada fila de la tabla emp y le ha asociado todos los cod_dep de la tabla dep. Para conseguir lo que queremos tenemos que forzar que se asocie a un empleado con el nombre del departamento para el que trabaja. Y esto se puede hacer si aadimos la condicin de que el cod_dep tenga el mismo valor en la fila de la tabla emp que en la fila escogida de la tabla dep:
SQL> select e.nombre, d.nombre from emp e, dep d 2> where e.cod_dep = d.cod_dep; NOMBRE NOMBRE ---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez I+D
14 rows selected.
De la misma manera se pueden combinar ms de dos tablas. Lo importante es emparejar los campos que han de tener valores iguales. Reglas de Combinacin:
Pueden combinarse tantas tablas como se desee. El criterio de combinacin puede estar formado por ms de una pareja de columnas. En la clusula SELECT pueden citarse columnas de ambas tablas, condicionen o no la combinacin. Si hay columnas con el mismo nombre en las distintas tablas, deben identificarse especificando la tabla de procedencia o utilizando un alias de tabla.
Existe un tipo especial de combinacin llamada Combinacin Externa. Suponga que se crea un nuevo departamento, (insert into dep values (400,'Distribucion','Valladolid');) pero todava no hemos asignado personal al mismo. Si realizamos la consulta anterior, el nuevo departamento no aparecer en la respuesta. Pero esto se puede evitar si sealamos en la clusula WHERE la posibilidad de que en la tabla de empleados no exista alguno de los cdigos de departamento que si exista en la tabla de departamentos. Esto se hace colocando un (+) de la siguiente manera:
SQL> select e.nombre, d.nombre 2 from emp e, dep d 3 where e.cod_dep(+)=d.cod_dep; NOMBRE NOMBRE ---------- --------------Cano Administracion Roncal Administracion Rueda Administracion Martin Administracion Sanz Administracion Lopez Administracion Perez I+D
Sastre I+D Garcia I+D Mateo I+D Yuste Produccion Recio Produccion Garcia Produccion Santana Produccion Distribucion 15 rows selected.
7.10 Subconsultas
A veces se han de utilizar en una consulta los resultados de otra consulta, llamada subconsulta. Un ejemplo de esto ocurre cuando queremos conocer los nombres de los empleados cuyo salario est por encima de la media:
SQL> select nombre from emp 2 where salario > (select avg(salario) from emp); NOMBRE ---------Cano Roncal Perez Sastre Yuste Recio 6 rows selected.
La consulta ms interna calcula el salario medio, y la consulta ms externa lo utiliza para seleccionar los nombres que ganan ms que la media. El valor de comparacin puede ser un valor simple, como en el ejemplo anterior, o un conjunto de valores. Hay que tener en cuenta este detalle ya que el tipo de operador a utilizar vara. En el primer caso se puede utilizar un operador de comparacin de carcter aritmtico (<, >, etc.). Y en el segundo uno de tipo lgico (IN).
Las subconsultas pueden devolver ms de una columna, y se habrn de comparar de manera consecuente:
Las columnas de la clausula WHERE de la consulta principal deben estr agrupadas por parentesis. Las columnas encerradas entre parntesis deben coincidir en nmero y tipo de datos con los datos que devuelve la subconsulta.
El nivel de anidamiento de subconsultas es ilimitado. Se puede utilizar una subconsulta para insertar valores en una tabla en el momento de la creacin de la misma con la clusula AS. Si quisieramos crear una tabla con los datos de los empleados del departamento 200 lo podramos hacer de la siguiente manera:
SQL> create table dep200 (nombre, oficio) 2 as select nombre,oficio from emp 3 where cod_dep=200; Table created.
No es necesario especificar tipos ni tamaos de las columnas, ya que vienen determinados por los tipos y tamaos de las columnas recuperadas en la subconsulta.