Está en la página 1de 17

Colegio De Educacin Profesional Tcnica Bachiller Del Estado

CONALEP PLANTEL 068

Programacin con sistemas gestores de bases de


datos

Lic. Lucia Gonzales Vsquez

Estalin Hediberto Tovar Rodrguez

P.T.B. en Informtica
Grupo: 5104

Tuxtla chico, Chiapas a 26 de agosto del 2016.

A) ELABORACIN DE CONSULTAS MEDIANTE LENGUAJE SQL.


Seleccin
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, con diferencia,
ms habitual. La sentencia SELECT consta de cuatro partes bsicas:

La clusula SELECT seguida de la descripcin de lo que se desea ver, los


nombres de las columnas a seleccionar. Esta parte es obligatoria.

La clusula FROM seguida de la especificacin de las tablas de las que se


han de obtener los datos. Esta parte es obligatoria.

La clusula WHERE seguida por un criterio de seleccin, una condicin.


Esta parte es opcional.

La clusula ORDER BY seguida por el criterio de ordenacin. Esta parte es


opcional.

Una primera aproximacin a la sintaxis de la sentencia SELECT puede mostrarnos


la siguiente expresin:

SELECT {* | {columna,}+}
FROM {tabla,}+
[WHERE condicin]
[ORDER BY {expresinColumna [ASC | DESC],}+];
Como una primera utilizacin de la sentencia SELECT podemos utilizarla para ver
todas las tablas que tenemos en la base de datos.

SQL> select table_name from user_tables;


TABLE_NAME
-----------------------------DEP
EMP

Un breve anlisis de la sentencia anterior nos permite observar que hemos


consultado sobre la columna llamada table_name almacenada en la
tablauser_tables, que es la tabla que guarda la informacin sobre todas las tablas
de cada usuario.

Tipos de Columnas
Existen varios tipos de datos en SQL. De esta manera, cada columna puede
albergar una informacin de naturaleza distinta. Los tipos de datos ms comunes y
sus caractersticas se resumen en la siguiente tabla.
Tipo de Dato
Descripcin
VARCHAR2(tamao)

Almacena datos de tipo carcter alfanumrico de longitud variable,


con un tamao mximo de 2.000.

CHAR(tamao)

Almacena datos de tipo carcter alfanumrico de longitud fija, con un


tamao mximo de 255.

LONG

Almacena datos de tipo carcter alfanumrico de longitud variable


con un tamao mximo de hasta 2 Gb.

NUMBER(dig,dec)

Almacena datos numricos de dig dgitos, de los cuales dec son


decimales. El tamao mximo es de 38 dgitos.

DATE

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

RAW(tamao)

Almacena datos de longitud variable, con un tamao mximo de 255


bytes.

LONG RAW

Almacena datos de longitud variable, con un tamao mximo de 2


Gb.

Seleccin de Columnas
Las columnas a seleccionar se enumeran sin ms en la clusula SELECT. Si se
desea seleccionar todas las columnas de una tabla se puede hacer enumerando a
todas las columnas o colocando un asterisco, *, en su lugar.
Cuando se consulta una base de datos, los nombres de las columnas se usan
como cabeceras de presentacin. Si ste resulta demasiado largo, corto o crptico,
puede cambiarse con la misma sentencia SQL de consulta, creando un alias de
columna.

SQL> select nombre "Departamento", loc "Est en" from dep;


Departamento
---------------

Esta en
----------

Administracion
I+D
Produccion

Valladolid
Boecillo
Cigales

Clusula FROM
La clusula FROM define las tablas de las que se van a seleccionar las columnas.
Se puede aadir al nombre de las tablas el usuario propietario de las mismas de la
forma usuario.tabla. De esta manera podemos distinguir entre las tablas de un
usuario y otro. Oracle siempre considera como prefijo el nombre del propietario de
las tablas, aunque no se lo indiquemos. De esta forma dos o ms usuarios pueden
tener tablas que se llamen igual sin que surjan conflictos. Si quisiramos acceder
a las filas de la tabla dep del usuario jperez, (ademas de tener privilegios de
lectura sobre esa tabla) deberamos escribir la siguiente sentencia SQL:

SQL> select * from jperez.dep;


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:

SQL> select d.nombre from dep d;


Clusula WHERE
Hasta ahora hemos visto como puede utilizarse la sentencia SELECT para
recuperar todas las columnas o un subconjunto de ellas de una tabla. Pero este
efecto afecta a todas las filas de la tabla, a menos que especifiquemos algo ms
en la clusula WHERE. Es aqu donde debemos proponer la condicin que han de
cumplir todas las filas para salir en el resultado de la consulta. La complejidad del
criterio de bsqueda es prcticamente ilimitada, y en l se pueden conjugar
operadores de diversos tipos con funciones de columnas, componiendo
expresiones ms o menos complejas.

Operadores de Comparacin
Operador

Operacin

Ejemplo

Igualdad

select * from emp where cod_dep = 100;

!=, <>, ^=

Desigualdad

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;

in

Igual a cualquiera de los miembros entre


parntesis

select * from emp where cod_dep in (100, 300);

not in

Distinto a cualquiera de los miembros


entre parntesis

select * from emp where cod_dep not in (200);

between

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 '_abc%'

Contiene la cadena 'abc' a partir del


segundo carcter y luego cualquier cadena select * from emp where nombre like 'Ma%';
de caracteres

Operadores de Aritmticos
Operador Operacin Ejemplo
+

Suma

select nombre, salario+comision from emp where


oficio='VENDEDOR';

Resta

select nombre from emp where sysdate-fecha_alta > 365;

Producto

select nombre, salario*12 from emp;

Divisin

select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres


Operador

Operacin

Ejemplo

||

Concatenacin

select nombre||oficio from emp;

Clusula ORDER 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
Yuste
Recio
Sastre
Martin
Garcia
Garcia
Mateo
Santana
Rueda
Lopez
Sanz

350000
350000
300000
300000
235000
225000
210000
200000
200000
175000
150000
150000

14 rows selected.

Clusula DISTINCT
Cuando se realiza una consulta sobre una tabla en la que se extrae informacin de
varias columnas, puede ocurrir que, si no incluimos la/s columna/s que forman la
clave principal, obtengamos filas repetidas en la respuesta.Si este comportamiento
no nos resulta satisfactorio podemos utilizar la clusula DISTINCT para eliminar
las filas duplicadas obtenidas como respuesta a una consulta.Podemos ver como
funciona en el siguiente ejemplo, en el que preguntamos por los distintos oficios de
nuestros empleados.
SQL> select oficio from emp;
Sin utilizar la clusula DISTINCT obtendremos la siguiente respuesta
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.

Clusula GROUP 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 nueva

HAVING filtra los grupos

ORDER BY clasifica la salida

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.
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)

Cuenta el nmero de filas select count(nombre),oficio


agrupadas.
emp group by oficio;

AVG(col)

Calcula el valor medio de


select avg(salario),oficio from emp
todos los valores de la
group by oficio;
columna col.

MAX(col)

Calcula el valor mximo de


select max(salario),oficio from emp
todos los valores de la
group by oficio;
columna col.

from

MIN(col)

Calcula el valor mnimo de


select min(salario),oficio from emp
todos los valores de la
group by oficio;
columna col.

SUM(col)

Calcula la suma de los valores select sum(salario),


de la columna col.
emp group by oficio;

STDDEV(col)

Calcula la desviacin tpica de


los
valores
de
la select stddev(salario), oficio from
columna col sin
tener
en emp group by oficio;
cuenta los valores nulos.

VARIANCE(col)

Calcula la varianza de los


valores de la columna col sin select variance(salario), oficio from
tener en cuenta los valores emp group by oficio;
nulos.

oficio

from

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.
SQL> select count(*) from emp;
COUNT(*)
---------14
Operaciones matemticas
Desde SQL podemos realizar operaciones a partir de los datos antes de
mostrarlos. Por ejemplo, podemos mostrar cual era la edad de una persona hace
un ao, con

SELECT edad-1 FROM personas;


Los operadores matemticos que podemos emplear son los habituales en
cualquier lenguaje de programacin, ligeramente ampliados: + (suma), - (resta y
negacin), * (multiplicacin), / (divisin) . La divisin calcula el resultado con
decimales; si queremos trabajar con nmeros enteros, tambin tenemos los
operadores DIV (divisin entera) y MOD (resto de la divisin):

SELECT 5/2, 5 div 2, 5 mod 2;


Dara como resultado

+--------+---------+---------+
| 5/2 | 5 div 2 | 5 mod 2 |
+--------+---------+---------+
| 2.5000 |
2|
1|
+--------+---------+---------+
Para que resulte ms legible, se puede aadir un "alias" a cada "nuevo campo"
que se genera al plantear las operaciones matemticas:

SELECT 5/2 divReal, 5 div 2 divEnt, 5 mod 2 resto;


+---------+--------+-------+
| divReal | divEnt | resto |
+---------+--------+-------+
| 2.5000 |
2| 1|
+---------+--------+-------+

Tambin podramos utilizar incluso operaciones a nivel de bits, como las del
lenguaje C (>> para desplazar los bits varias posiciones a la derecha, << para
desplazar a la izquierda, | para una suma lgica bit a bit, & para un producto lgico
bit a bit y ^ para una operacin XOR):

SELECT 25 >> 1, 25 << 1, 25 | 10, 25 & 10, 25 ^ 10;


que dara

+---------+---------+---------+---------+---------+
| 25 >> 1 | 25 << 1 | 25 | 10 | 25 & 10 | 25 ^ 10 |
+---------+---------+---------+---------+---------+
|
12 |
50 |
27 |
8|
19 |
+---------+---------+---------+---------+---------+
6.2 Funciones de agregacin

Tambin podemos aplicar ciertas funciones matemticas a todo un conjunto de


datos de una tabla. Por ejemplo, podemos saber cual es la edad ms baja de
entre las personas que tenemos en nuestra base de datos, haramos:

SELECT min(edad) FROM personas;


Las funciones de agregacin ms habituales son:

min = mnimo valor


max = mximo valor
sum = suma de los valores
avg = media de los valores
count = cantidad de valores

La forma ms habitual de usar "count" es pidiendo con "count(*)" que se nos


muestren todos los datos que cumplen una condicin. Por ejemplo, podramos
saber cuantas personas tienen una direccin que comience por la letra "s", as:

SELECT count(*) FROM personas WHERE direccion LIKE 's%';

OPERACIONES DE LOGICA EN SQL


Los operadores lgicos comprueban la veracidad de alguna condicin. stos,
como los operadores de comparacin, devuelven el tipo de datos Boolean con el
valor TRUE, FALSE o UNKNOWN.
operador

Significado

ALL

TRUE si el conjunto completo de comparaciones es TRUE.

AND

TRUE si ambas expresiones booleanas son TRUE.

ANY

TRUE si cualquier miembro del conjunto de comparaciones es


TRUE.

BETWEE
N

TRUE si el operando est dentro de un intervalo.

EXISTS

TRUE si una subconsulta contiene cualquiera de las filas.

IN

TRUE si el operando es igual a uno de la lista de expresiones.

LIKE

TRUE si el operando coincide con un patrn.

NOT

Invierte el valor de cualquier otro operador booleano.

OR

TRUE si cualquiera de las dos expresiones booleanas es TRUE.

SOME

TRUE si alguna de las comparaciones de un conjunto es TRUE.

OPERADORES DE COMPARACION EN SQL.


Los
operadores
de
comparacin
se
definen
para
los
tipos
siguientes: Byte, Int32, Int16, Int64, Double, Single, Decimal, String,DateTime,
Date, Time y DateTimeOffset. La promocin de tipos implcita se produce para
los operandos antes de que se aplique el operador de comparacin. Los
operadores de comparacin siempre dan como resultados valores booleanos.
Cuando al menos uno de los operandos es null, el resultado es null.
La igualdad y desigualdad se definen para cualquier tipo de objeto que tenga
identidad, como el tipo Boolean. Los objetos no primitivos con identidad se
consideran iguales si comparten la misma identidad.
En la siguiente tabla se presentan los operadores de comparacin de Entity SQL.

Operador

Descripcin

= (Igual a) (Entity
SQL)

Compara la igualdad de dos expresiones.

> (Mayor que)


(Entity SQL)

Compara dos expresiones para determinar si la expresin


de la izquierda tiene un valor mayor que el de la expresin
de la derecha.

>= (Mayor o igual


que) (Entity SQL)

Compara dos expresiones para determinar si la expresin


de la izquierda tiene un valor igual o mayor que el de la
expresin de la derecha.

IS [NOT] NULL
(Entity SQL)

Determina si una expresin de consulta es nula.

< (Menor que)

Compara dos expresiones para determinar si la expresin

(Entity SQL)

de la izquierda tiene un valor menor que el de la expresin


de la derecha.

<= (Menor o igual


que) (Entity SQL)

Compara dos expresiones para determinar si la expresin


de la izquierda tiene un valor igual o menor que el de la
derecha.

[NOT] BETWEEN
(Entity SQL)

Determina si el resultado de una expresin es un valor


incluido en un intervalo especificado.

= (No es igual a)
(Entity SQL)

Compara dos expresiones para determinar si la expresin


de la izquierda no es igual que la expresin de la derecha.

<> (No es igual a)


(Entity SQL)

Compara dos expresiones para determinar si la expresin


de la izquierda no es igual que la expresin de la derecha.

[NOT] LIKE (Entity


SQL)

Determina si una cadena de caracteres especfica


coincide con un patrn especificado.

Ms sobre comparaciones de cadenas


Las cadenas se comparan carcter por carcter (excepto en el caso de
bsquedas por palabras claves, ver a continuacin).
Cuando se comparan cadenas, no se tienen en cuenta las maysculas y
minsculas; por lo tanto, "a"="A" devuelve TRUE. Para saber si los caracteres
estn en maysculas o minsculas, compare sus cdigos de caracteres. Por
ejemplo, la siguiente expresin devuelve FALSE:
Character code("A") = Character code("a") ` porque 65 no es igual a 97
Cuando se comparan cadenas, los caracteres diacrticos se comparan utilizando
la tabla de comparacin de caracteres del sistema de su ordenador. Por ejemplo,
las siguientes expresiones devuelven TRUE:

"n" = ""
"n" = ""
"A"=""
` etc.
A diferencia de otras comparaciones de cadena, las bsquedas por palabras
claves buscan "palabras" en "textos": las palabras se evalan global e
individualmente. El operador % siempre devuelve False si la bsqueda concierne

varias palabras o slo parte de una palabra (por ejemplo, una silaba). Las
"palabras" son cadenas de caracteres rodeadas por "separadores," que son los
espacios y los caracteres de puntuacin. Los nmeros pueden buscarse porque
son evaluados como cadenas; sin embargo, los separadores decimales ( . , ) y
otros smbolos (moneda, temperatura, etc.) se ignorarn.
"Alpha Bravo Charlie" % "Bravo" ` DevuelveTrue
"Alpha Bravo Charlie" % "vo" ` DevuelveFalse
"Alpha Bravo Charlie" % "Alpha Bravo" ` Devuelve False
"Alpha,Bravo,Charlie" % "Alpha" ` DevuelveTrue
"Software y ordenadores" % "comput@" ` DevuelveTrue

El carcter arroba (@) puede utilizarse en toda comparacin de cadenas en


reemplazo de uno o varios caracteres. Por ejemplo, la siguiente expresin es
TRUE:

"abcdefghij" = "abc@"
El carcter arroba debe utilizarse en el segundo operando (la cadena a la derecha
del operador) para igualar todo nmero de caracteres. La siguiente expresin es
FALSE, porque la arroba @ se considera como un solo carcter en el primer
operando:

"abc@" = "abcdefghij"
La arroba significa "uno o ms caracteres o nada". Las siguientes expresiones son
TRUE:

"abcdefghij" = "abcdefghij@"
"abcdefghij" = "@abcdefghij"
"abcdefghij" = "abcd@efghij"
"abcdefghij" = "@abcdefghij@"
"abcdefghij" = "@abcde@fghij@"
Por otra parte, en cualquier caso, una comparacin de cadenas con dos arrobas
consecutivas siempre devolver FALSE. La siguiente expresin es FALSE:

"abcdefghij" = "abc@@fg"
Cuando el operador de comparacin es o contiene un smbolo < o >, slo soporta
la comparacin con un solo carcter comodn al final del operando:

"abcd" <= "abc@" `Comparacin vlida

"abcd" <= "abc@ef" `Comparacin no vlida


Consejo
Si quiere ejecutar comparaciones o bsquedas utilizando @ como un carcter (y
no como un comodn), tiene dos opciones:
Utilice la instruccin Character code (At sign).
Imagine, por ejemplo, que quiere saber si una cadena termina con el carcter @.
la siguiente expresin (si $ vs Valor no est vaca) siempre es TRUE:
($vsValor[[Length($vsValor)]]="@")
La siguiente expresin se evaluar correctamente:
(Character code($vsValor[[Length($vsValor)]])#64)
Utilice la opcin "Considerar @ como un carcter en bsquedas y ordenaciones",
accesible utilizando la caja de dilogo de Preferencias.
Esta opcin le permite definir cmo se interpreta el carcter @ cuando se incluye
en una cadena de caracteres. Como tal, puede influir en cmo los operadores de
comparacin se utilizan en Query u Order By. Para mayor informacin, consulte el
Manual de Diseo.

También podría gustarte