You are on page 1of 13

GUIA DE PROGRAMACIN DE SISTEMAS GESTORES DE BASES DE DATOS A. ELABORACIN DE CONSULTAS MEDIANTE LENGUAJE SQL.

OPERACIN SELECCIN: consiste en recuperar un conjunto de registros de una tabla o de una relacin indicando las condiciones que deben cumplir los registros recuperados. CONSULTA: Es cuando los registros devueltos por la seleccin satisfacen todas las condiciones que se hayan establecido. EN LAS CONSULTAS SE EMPLEAN: los diferentes operadores de comparacin (=,>, <, >=, <=, <>), los operadores lgicos (and, or, xor) o la negacin lgica (not). LAS COLUMNAS: se pueden especificar mediante su nombre simple (nbcol) o su nombre cualificado (nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene la columna y separados por un punto). COLUMNAS CALCULADAS: Son las que se calculan a partir de datos almacenados. PARA SOLICITAR UNA COLUMNA CALCULADA: Se especifica en la lista de seleccin una expresin en vez de un nombre de columna. La expresin puede contener sumas, restas, multiplicaciones y divisiones, concatenacin & , parntesis y tambin funciones predefinidas). ORDER BY: Se utiliza para ordenar las filas del resultado de una consulta ASC: Se utiliza para ordenar las filas del resultado de una consulta en orden ascendente. DESC: Se utiliza para ordenar las filas del resultado de una consulta en orden descedente. COLUMNAS: cada columna puede albergar una informacin de naturaleza distinta. TIPOS DE DATOS MS COMUNES EN UNA TABLA: Tipo de Dato VARCHAR2(tamao) Descripcin Almacena datos de tipo carcter alfanumrico de longitud variable, con un tamao mximo de 2.000. Almacena datos de tipo carcter alfanumrico de longitud fija, con un tamao mximo de 255. Almacena datos de tipo carcter alfanumrico de longitud variable con un tamao mximo de hasta 2 Gb. Almacena datos numricos de dig dgitos, de los cuales dec son decimales. El tamao mximo es de

CHAR(tamao)

LONG

NUMBER(dig,dec)

38 dgitos. Almacena fechas desde el 1-Ene-4712 AC hasta el 31-Dic-4712 DC.

DATE

SELECT:Especifica los campos, constantes y expresiones que se mostrarn en el resultado de la consulta, nos permite consultar los datos almacenados en una tabla de la base de datos. SINTAXIS DE SELECT: SELECT "nombre_columna" FROM "nombre_tabla"; WHERE: Se utiliza para escribir una expresin que indica la condicin o condiciones que las filas deben satisfacer para ser seleccionadas. FROM: Se utiliza para seleccionar campos en una tabla, en donde se especifica el nombre de donde se obtienen los datos de la tabla. *.FROM: Se utiliza para seleccionar todos los campos de una tabla. SELECT INTO: Se utiliza para seleccionar datos de una tabla y copiarlos en otra tabla diferente. Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla. SINTAXIS DE SELECT INTO: SELECT * INTO nuevatabla FROM tablaactual; EJEMPLOS DE CLAUSULAS DEL SELECT:

SELECT * FROM `ALUMNO`

Muestra todos los registros de la tabla alumnos. SELECT * FROM alumnos WHERE `id`="11" Muestra los registros de la tabla Alumnos and `grupo`="409" donde el id es 11 y pertenece al grupo 409 SELECT * FROM Alumnos WHERE `sexo`="femenino" or `edad`="15" SELECT * FROM alumno WHERE `nombre` = "adrian"; SELECT * FROM alumno WHERE `edad` >= Muestra los registros de la tabla Alumnos "14"; donde edad es >= a 14 SELECT `nombre_usuario` , `ap_usuario` FROM cat_usuario WHERE `id_usuario` >= "4"; Muestra los campos nombre_usuario y ap_usuario de la tabla cat_usuario donde id_usuario es >= a 4

SELECT DISTINCT `nombre_usuario` FROM cat_usuario; SELECT `nombre_usuario` FROM cat_usuario; SELECT * FROM cat_usuario ORDER BY `nombre_usuario`; RADORES ARITMTICOS Operadores aritmticos Suma + Resta Multiplicacin * Divisin /

Muestra los campos nombre_usuario de la tabla cat_usuario (sin repeticiones) Muestra los campos nombre_usuario de la tabla cat_usuario (con repeticiones) para que el resultado se ordene por nombre_usuario OPE

OPERADORES DE COMPARACIN = <> < > <= <= between Igual Distinto Menor Mayor Menor Igual Mayor Igual Utilizado para especificar un intervalo de valores. Utilizado en la comparacin de un campo contra un patrn Utilizado para verificar la existencia de un valor dentro de un conjunto de valores

like

in

OPERADORES LGICOS

Operador

Uso

Descripcin (AND lgico) Devuelve expr1 si la expresin puede convertirse a falso; de otro modo, devuelve expr2. Cuando se emplea con valores booleanos, && devuelve true cuando ambos operando son verdaderos; si no, devuelve false. (OR lgico) Devuelve expr1 si puede convertirse a verdadero; de otro modo devuelve expr2. Cuando se emplea con valores booleanos, el operador || devuelve true si alguno de los operandos es verdadero; si ambos operandos son falsos devuelve false. (NOT lgico) Devuelve falso si su nico operando puede convertirse a verdadero; de otro modo, devuelve verdadero.

&&

expr1 && expr2

||

expr1 || expr2

!expr

PRACTICAS a) Escribe una consulta de seleccin para obtener los datos de todos los alumnos SELECT * FROM `alumnos` b) Escribe una consulta de seleccin para obtener los sig. Datos del alumno Matricula Nombre Apellidos Curso Nivel Clase SELECT `Matricula`,`Nombre`,`Apellidos`,`Curso`,`Nivel`,`Clase` FROM `alumnos`

c) Escribe una consulta de seleccin para obtener todos los datos de los alumnos cuya ciudad sea Guadalajara. SELECT * FROM `alumnos` WHERE Ciudad="Guadalajara" d) Escribe una consulta se seleccin para obtener el nombre y apellido de los alumnos cuya ciudad sea Guadalajara. SELECT Nombre,Apellidos FROM `alumnos` WHERE Ciudad="Guadalajara"

e) Escribe una consulta de seleccin para obtener los siguientes datos de todos los alumnos Matricula Nombre Apellidos Curso Nivel Clase Ordenados por apellidos y nombre ascendentemente.

SELECT `Matricula`,`Nombre`,`Apellidos`,`Curso`,`Nivel`,`Clase` FROM `alumnos` order by Nombre,Apellidos ASC

PRACTICA 2: a) Escribe una consulta de seleccin para obtener la calificacin promedio de todos los alumnos y que muestre las siguientes columnas Nombre Alumno y Calificacin Promedio. SELECT avg(`Promedio General`) from calificaciones_alumnos

LIKE: Se utiliza para comparar una expresin de cadena con un modelo en una expresin SQL. USOS DEL LIKE:S puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado.Se puede utilizar en una expresin para comparar un valor de un campo con una expresin de cadena. EJEMPLO DE LIKE: En una consulta SQL, la consulta devuelve todos los valores de campo que comiencen por la letra C. En una consulta con parmetros, puede hacer que el usuario escriba el modelo que se va a utilizar. SINTAXIS DE LIKE: expresin Like modelo EXPRESIN DE LIKE: es una cadena modelo o campo contra el que se compara expresin.

EJEMPLOS DE SUBCONSULTAS UTILIZANDO OPERADORES DE COMPARACIN

Operador Ejemplo relacional El operador igual select *from libros ("=") nos permite where autor='Borges'; comparar cadenas de caracteres, pero al realizar la comparacin, busca coincidencias de cadenas completas, realiza una bsqueda exacta. El smbolo "%" select *from libros (porcentaje) where titulo like 'M%'; reemplaza cualquier cantidad de caracteres (incluyendo ningn caracter). Es un caracter comodn. "like" y "not like" son operadores de comparacin que sealan igualdad o diferencia.

Explicacin Si queremos recuperar todos los libros de "Borges"

Para seleccionar todos los libros que comiencen con "M":

COMBINACIN DE TABLAS: Cuando se incluyen varias tablas en una consulta, se usan combinaciones , una combinacin ayuda a que la consulta devuelva nicamente los registros deseados de cada tabla, basndose en cmo esas tablas estn relacionadas con otras tablas en la consulta.

PRACTICA a) Escribe una consulta de seleccin para obtener aquellos apellidos que empiecen con la letra J SELECT * FROM `empleados` WHERE `APELLIDO` LIKE "J%" b) Escribe una consulta de seleccin para obtener aquellos apellidos que tengan una R en la segunda posicin.

SELECT * FROM `empleados` WHERE `APELLIDO` LIKE "_R%" c) Escribe una consulta de seleccin para obtener aquellos apellidos que empiecen con la letra A y que tengan una O en su interior. SELECT `APELLIDO` FROM `empleados` WHERE `APELLIDO` LIKE "A%" OR "%O%" B) OPERACIONES CON FUNCIONES EN BASES DE DATOS. FUNCIONES: Se usan dentro de expresiones y actan con los valores de las columnas, variables o constantes. LAS FUNCIONES producen dos tipos diferentes de resultados. Unas producen una modificacin de la informacin original (por ejemplo, poner en minsculas una cadena que est en maysculas). El resultado de otras indica alguna cosa sobre la informacin (por ejemplo, el nmero de caracteres que tiene una cadena).

EN UN ANIDAMIENTO DE FUNCIONES: Se utilizan en clusulas SELECT, clusulas WHERE y clusulas ORDER BY, es posible el anidamiento de funciones, existen varios tipos de funciones: aritmticas, de cadenas de caracteres, de manejo de fechas, de conversin y otras funciones. FUNCIONES ARITMETICAS. Trabajan con datos de tipo numrico NUMBER. Este tipo incluye los dgitos de 0 a 9, el punto decimal y el signo menos, si es necesario. LAS FUNCIONES TRABAJAN: con tres clases de nmeros: valores simples, grupos de valores y listas de valores. Algunas modifican los valores sobre los que actan; otras informan de lago sobre los valores. Al describir los formatos de las funciones se utilizan los corchetes ([]) para indicar que lo que va encerrado es opcional. FUNCIONES:Las funciones se pueden ver como cajas negras a las que les pasamos unos parmetros de entrada y tras procesarlos devuelven un nico resultado o dato de salida. Las funciones son habilidades poderosas de SQL. Pueden ser usadas par lo siguiente: Desarrollar clculos en los datos Modificar datos individuales. Manipular la salida de grupos de filas Dar formato a fechas y nmeros Convertir tipos de datos de columnas

LAS FUNCIONES SQL algunas veces reciben argumentos pero siempre retornan un valor. FUNCIONES ARITMTICAS:SQL nos permitir resolver operaciones de forma muy sencilla, ya que posee una serie de funciones de carcter aritmtico: SUMAS O TOTALES: Para sumar las cantidades numricas contenidas en un determinado campo, hemos de utilizar la funcin SUM, cuya sintaxis es la siguiente: SUM(expresin) Donde 'expresin' puede representar un campo o una operacin con algn campo. La funcin SUM retorna el resultado de la suma de la expresin indicada en todos los registros que son afectados por la consulta. ejemplos: SELECT SUM(unidades) FROM pedidos; Retorna el total de unidades pedidas (la suma de todos los valores almacenados en el campo 'unidades' de la tabla 'pedidos'). Este resultado se toma como un nuevo campo en el RecordSet. SELECT SUM(ingresos-gastos) AS saldo FROM diario; Retorna el saldo final de una tabla llamada 'diario'. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'saldo'. SELECT SUM(unidades) AS total FROM pedidos WHERE fecha=Now(); Retorna el total de unidades pedidas hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'total'. CONTAR REGISTROS Otra operacin muy comn es realizar un recuento de registros. Cmo por ejemplo cuando queremos conocer cuntos pedios se han realizado en un da, cuantos pagos se han realizado, cuantos clientes cumplen aos, cuntos son mayores de edad, para estas situaciones se utiliza la funcin COUNT. COUNT(expresin): La funcin COUNT retorna el nmero de registros indicados en la expresin. Ejemplos: SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now(); Retorna el nmero de pedidos realizados hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'num_pedidos'.

DE VALORES SIMPLES. Funcin Propsito ABS(n) Nos devuelve el valor absoluto de n CEIL(n) Nos devuelve el valor entero igual o inmediatamente superior a n FLOOR(n) Nos devuelve el valor entero igual o inmediatamente inferior a n MOD(m,n) Nos devuelve el resto de la divisin de m entre n POWER(m, exponente) Calcula la potencia de m elevado a exponente SIGN(valor) Nos devuelve el signo de valor

NVL(valor, expresin) Funcin que nos sustituye valor por expresin siempre que valor sea NULL ROUND(nmero[, m]) Nos redondea nmero a m decimales SQRT(n) Nos devuelve la raz cuadrada de n TRUNC(nmero[,m ]) Trunca los nmeros para que tengan m decimales. DE GRUPOS DE VALORES. Este tipo de funciones se utilizan principalmente para realizar estadsticas, por lo que los valores nulos no se toman en cuenta. Dentro de este grupo se encuentran las siguientes funciones: Funcin Propsito AVG(n) Nos devuelve la media de n COUNT(*|expresin) Nos devuelve el nmero de veces que aparece expresin. MAX(expresin) Nos devuelve el valor mximo de expresin MIN (expresin) Nos devuelve el valor mnimo de expresin VARIANCE(expresin) Nos devuelve la varianza de expresin SUM(expresin) Nos devuelve la suma de valores de expresin. ejemplos: Select avg(salario) from empleado; (nos devolvera el salario medio de todos los empleados) Select count(*)from empleado; (nos devuelve el nmero de empleados que tenemos) Select min(salario) from empleado; (nos devuelve el menor salario encontrado en la tabla empleado) DE LISTAS. Estas funciones trabajan con grupos de columnas dentro de una misma fila. Dentro de este grupo de funciones se encuentran las siguientes; Funcin Propsito GREATEST(valor1, valor2, ) Obtiene el mayor valor de la lista LEAST(valor1, valor2,...) Obtiene el menor valor de la lista Ejemplo Queremos mostrar por cada alumno su mayor nota de todas las que tiene. Select alumno, greatest(nota1,nota2,nota2,nota4,nota5) "nota" from alumnos; FUNCIONES DE CADENAS DE CARACTERES. - substring(cadena,inicio,longitud): devuelve una parte de la cadena especificada como primer argumento, empezando desde la posicin especificada por el segundo argumento y de tantos caracteres de longitud como indica el tercer argumento. Ejemplo: select substring('Buenas tardes',8,6); Retorna "tardes". - str(numero,longitud,cantidaddecimales): convierte nmeros a caracteres; el primer parmetro indica el valor numrico a convertir, el segundo la longitud del resultado (debe ser

mayor o igual a la parte entera del nmero ms el signo si lo tuviese) y el tercero, la cantidad de decimales. El segundo y tercer argumento son opcionales y deben ser positivos. String significa cadena en ingls. - stuff(cadena1,inicio,cantidad,cadena2): inserta la cadena enviada como cuarto argumento, en la posicin indicada en el segundo argumento, reemplazando la cantidad de caracteres indicada por el tercer argumento en la cadena que es primer parmetro. Stuff significa rellenar en ingls. Ejemplo: select stuff('abcde',3,2,'opqrs'); retorna "abopqrse". Es decir, coloca en la posicin 2 la cadena "opqrs" y reemplaza 2 caracteres de la primer cadena. Los argumentos numricos deben ser positivos y menor o igual a la longitud de la primera cadena, caso contrario, retorna "null". Si el tercer argumento es mayor que la primera cadena, se elimina hasta el primer carcter. - len(cadena): retorna la longitud de la cadena enviada como argumento. "len" viene de length, que significa longitud en ingls. Ejemplo: select len('Hola'); devuelve 4. - char(x): retorna un caracter en cdigo ASCII del entero enviado como argumento. Ejemplo: select char(65); retorna "A". - left(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la izquierda, primer caracter. Ejemplo: select left('buenos dias',8); retorna "buenos d". - right(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la derecha, ltimo caracter. Ejemplo: select right('buenos dias',8); retorna "nos dias". -lower(cadena): retornan la cadena con todos los caracteres en minsculas. lower significa reducir en ingls. Ejemplo: select lower('HOLA ESTUDIAnte'); retorna "hola estudiante". -upper(cadena): retornan la cadena con todos los caracteres en maysculas. Ejemplo: select upper('HOLA ESTUDIAnte'); -ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa recortar. Ejemplo: select ltrim(' Hola ');

retorna "Hola ". - rtrim(cadena): retorna la cadena con los espacios de la derecha eliminados. Ejemplo: select rtrim(' Hola '); retorna " Hola". - replace(cadena,cadenareemplazo,cadenareemplazar): retorna la cadena con todas las ocurrencias de la subcadena reemplazo por la subcadena a reemplazar. Ejemplo: select replace('xxx.sqlserverya.com','x','w'); retorna "www.sqlserverya.com'.

- reverse(cadena): devuelve la cadena invirtiendo el order de los caracteres. Ejemplo: select reverse('Hola'); retorna "aloH". - patindex(patron,cadena): devuelve la posicin de comienzo (de la primera ocurrencia) del patrn especificado en la cadena enviada como segundo argumento. Si no la encuentra retorna 0. Ejemplos: select patindex('%Luis%', 'Jorge Luis Borges'); retorna 7. select patindex('%or%', 'Jorge Luis Borges'); retorna 2. select patindex('%ar%', 'Jorge Luis Borges'); retorna 0. - charindex(subcadena,cadena,inicio): devuelve la posicin donde comienza la subcadena en la cadena, comenzando la bsqueda desde la posicin indicada por "inicio". Si el tercer argumento no se coloca, la bsqueda se inicia desde 0. Si no la encuentra, retorna 0. Ejemplos: select charindex('or','Jorge Luis Borges',5); retorna 13. select charindex('or','Jorge Luis Borges'); retorna 2. select charindex('or','Jorge Luis Borges',14); retorna 0. select charindex('or', 'Jorge Luis Borges'); retorna 0. - replicate(cadena,cantidad): repite una cadena la cantidad de veces especificada. Ejemplo: select replicate ('Hola',3); retorna "HolaHolaHola"; - space(cantidad): retorna una cadena de espacios de longitud indicada por "cantidad", que debe ser un valor positivo. Ejemplo:

select 'Hola'+space(1)+'que tal'; retorna "Hola que tal". Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo carcter. CON FUNCIONES PARA EL MANEJO DE FECHAS. Microsoft SQL Server ofrece algunas funciones para trabajar con fechas y horas. Estas son algunas: - getdate(): retorna la fecha y hora actuales. Ejemplo: select getdate(); - datename(partedefecha,fecha): retorna el nombre de una parte especfica de una fecha. Los valores para "partedefecha" pueden ser los mismos que se explicaron anteriormente. Ejemplos: select datename(month,getdate()); retorna el nombre del mes actual; select datename(day,getdate()); - dateadd(partedelafecha,numero,fecha): agrega un intervalo a la fecha especificada, es decir, retorna una fecha adicionando a la fecha enviada como tercer argumento, el intervalo de tiempo indicado por el primer parmetro, tantas veces como lo indica el segundo parmetro. Los valores para el primer argumento pueden ser: year (ao), quarter (cuarto), month (mes), day (dia), week (semana), hour (hora), minute (minuto), second (segundo) y millisecond (milisegundo). Ejemplos: select dateadd(day,3,'1980/11/02'); retorna "1980/11/05", agrega 3 das. select dateadd(month,3,'1980/11/02'); retorna "1981/02/02", agrega 3 meses. select dateadd(hour,2,'1980/11/02'); retorna "1980/02/02 2:00:00", agrega 2 horas. select dateadd(minute,16,'1980/11/02'); retorna "1980/02/02 00:16:00", agrega 16 minutos. - datediff(partedelafecha,fecha1,fecha2): calcula el intervalo de tiempo (segn el primer argumento) entre las 2 fechas. El resultado es un valor entero que corresponde a fecha2-fecha1. Los valores de "partedelafecha) pueden ser los mismos que se especificaron anteriormente. Ejemplos: select datediff (day,'2005/10/28','2006/10/28'); retorna 365 (das). select datediff(month,'2005/10/28','2006/11/29'); retorna 13 (meses). - day(fecha): retorna el da de la fecha especificada. Ejemplo:

select day(getdate()); - month(fecha): retorna el mes de la fecha especificada. Ejemplo: select month(getdate()); - year(fecha): retorna el ao de la fecha especificada. Ejemplo: select year(getdate()); Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo datetime o smalldatetime. Con funciones de conversin.

TO_CHAR= Transforma un tipo DATE NUMBER es una cadena de caracteres. TO_DATE= Transforma un tipo NUMBER CHAR en DATE. TO_NUMBER = Transforma una cadena de caracteres en NUMBER.