ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

SQL Introducción

er.alvarez2 de Mayo de 2014

5.652 Palabras (23 Páginas)231 Visitas

Página 1 de 23

Introducción al SQL

Selección

________________________________________

La recuperación de los datos en el lenguaje SQL se realiza mediante la sentencia SELECT, seleccionar. Esta sentencia permite indicar al SGBD la información que se quiere recuperar. Esta es la sentencia SQL, con diferencia, más habitual. La sentencia SELECT consta de cuatro partes básicas:

• La cláusula SELECT seguida de la descripción de lo que se desea ver, los nombres de las columnas a seleccionar. Esta parte es obligatoria.

• La cláusula FROM seguida de la especificación de las tablas de las que se han de obtener los datos. Esta parte es obligatoria.

• La cláusula WHERE seguida por un criterio de selección, una condición. Esta parte es opcional.

• La cláusula ORDER BY seguida por el criterio de ordenación. Esta parte es opcional.

Una primera aproximación a la sintaxis de la sentencia SELECT puede mostrarnos la siguiente expresión:

SELECT {* | {columna,}+}

FROM {tabla,}+

[WHERE condición]

[ORDER BY {expresiónColumna [ASC | DESC],}+];

Como una primera utilización 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 análisis de la sentencia anterior nos permite observar que hemos consultado sobre la columna llamada table_name almacenada en la tabla user_tables, que es la tabla que guarda la información sobre todas las tablas de cada usuario.

Selección de Columnas

Las columnas a seleccionar se enumeran sin más en la cláusula 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 presentación. Si éste resulta demasiado largo, corto o críptico, 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 Valladolid

I+D Boecillo

Produccion Cigales

Cláusula FROM

La cláusula FROM define las tablas de las que se van a seleccionar las columnas.

Se puede añadir 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 más usuarios pueden tener tablas que se llamen igual sin que surjan conflictos. Si quisiéramos acceder a las filas de la tabla dep del usuario jperez, (ademas de tener privilegios de lectura sobre esa tabla) deberíamos escribir la siguiente sentencia SQL:

SQL> select * from jperez.dep;

También 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;

Cláusula 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 más en la cláusula WHERE. Es aquí donde debemos proponer la condición que han de cumplir todas las filas para salir en el resultado de la consulta. La complejidad del criterio de búsqueda es prácticamente ilimitada, y en él se pueden conjugar operadores de diversos tipos con funciones de columnas, componiendo expresiones más o menos complejas.

Operadores de Comparación

Operador Operación 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 paréntesis select * from emp where cod_dep in (100, 300);

not in Distinto a cualquiera de los miembros entre paréntesis 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 carácter y luego cualquier cadena de caracteres select * from emp where nombre like 'Ma%';

Operadores de Aritméticos

Operador Operación 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;

/ División select nombre, salario/31 from emp;

Operadores de Cadenas de Caracteres

Operador Operación Ejemplo

|| Concatenación select nombre||oficio from emp;

Cláusula ORDER BY

Se utiliza para 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. La ordenación se puede establecer sobre el contenido de columnas o sobre expresiones con columnas. A continuación se puede ver un ejemplo de uso de la cláusula 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.

Cláusula DISTINCT

Cuando se realiza una consulta sobre una tabla en la que se extrae información 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 cláusula 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 cláusula 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 cláusula DISTINCT la respuesta varía para adecuarse más a nuestras espectativas.

SQL> select distinct oficio from emp;

OFICIO

-----------

Analista

Comercial

Contable

Director

Presidente

Programador

Secretario

7 rows selected.

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ásulas 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 superior o igual a n. select ceil(15.7) from dual; 16

FLOOR(n) Calcula el valor entero inmediatamante inferior o igual a n. select floor(15.7) from dual; 15

MOD(m,n) Calcula el resto resultante de dividir m entre n. select mod(11,4) from dual; 3

POWER(m,n) Calcula la potencia n-esima de m. select power(3,2) from dual; 9

ROUND(m,n) Calcula el redondeo de m a n decimales. Si n<0 el redondeo se efectua a por la izquierda del punto decimal. select round(123.456,1) from dual; 123.5

SQRT(n) Calcula la raíz cuadrada de n. select sqrt(4) from dual; 2

TRUNC(m,n) Calcula m truncado a n decimales (n puede ser negativo). select trunc(123.456,1) from dual; 123.4

...

Descargar como (para miembros actualizados) txt (37 Kb)
Leer 22 páginas más »
Disponible sólo en Clubensayos.com