Está en la página 1de 23

Computacin Aplicada a la Minera

Aspectos elementales de SQL

Introduccin
A continuacin se describe a grandes rasgos el lenguaje SQL, el cul nos permitir acceder a la informacin de una base de datos desde un lenguaje anfitrin, como por ejemplo Matlab o desde un sistema web como lo es PHPMyAdmin. Principalmente se hablar de las herramientas que nos permiten acceder a una estructura de datos ya definida y manipular la informacin contenida, los aspectos de SQL que nos permiten modificar estructuralmente la base de datos se vern en profundidad en una prxima clase.

SQL
SQL es un lenguaje computacional diseado para administrar informacin en sistemas de gestin de bases de datos relacionales (RDBMS), y originalmente esta basado en el algebra relacional. El lenguaje de consulta estructurado (Structured Query Language) es un lenguaje de bases de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero sin embargo cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de cada motor, por lo tanto el lenguaje SQL normalizado (ANSI) no tendr las misma respuesta en los diferentes motores de bases de datos.

Caractersticas
Lenguaje computacional estndar (ISO y ANSI) Se puede emplear dentro de cualquier base de datos relacional actual como: MySQL, MS SQL Server, MS Access, DB2, Informix, Oracle, Sybase, etc. Es el lenguaje ms universal existente para trabajar con BD. Se puede insertar dentro del cdigo de la mayora de lenguajes de programacin de manera inmersa en un lenguaje anfitrin (Java, Matlab, Visual C, .Net, ...)

Utilidades
SQL Permite: Acceder a la base(s) de datos Ejecutar consultas a la base(s) de datos. Extraer informacin de la base(s) de datos. Insertar registros. Borrar registros. Actualizar registros.

Componentes
SQL Data Manipulation Language (DML) Incluye sintaxis para actualizar, insertar y borrar registros.

SQL Data Definition Language (DDL) Permite crear o borrar tablas de la base de datos, definir ndices y referencias (keys), especificar vnculos entre tablas y agregar restricciones a las tablas (constraints)

Data Manipulation Language (DML):


SELECT extrae la informacin de la base de datos WHERE Especifica restricciones UPDATE actualiza informacion en una tabla de la BD DELETE borra informacin de una tabla de la BD INSERT INTO inserta registros en una tabla de la BD

Data Definition Language (DDL):


CREATE TABLE crea una nueva tabla ALTER TABLE - altera (modifica) una tabla DROP TABLE borra una tabla CREATE INDEX crea un ndice DROP INDEX borra un ndice

Comandos
Clusulas: Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular.
Clusula FROM WHERE GROUP BY HAVING ORDER BY Descripcin 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 especficos Utilizada para expresar la condicin que debe satisfacer cada grupo Utilizada para ordenar los registros seleccionados de acuerdo con un orden especfico

Operadores Lgicos
Operador AND OR NOT Uso Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. Negacin lgica. Devuelve el valor contrario de la expresin.

Comandos
Operadores de Comparacin: Usados generalmente con el mando WHERE, para condicionar los resultados de una consulta
Operador < > <> <= >= = BETWEEN LIKE IN Uso Menor que Mayor que Distinto de Menor o igual que Mayor o igual que Igual que Utilizado para especificar un intervalo de valores. Ej: BETWEEN 1 AND 10 Utilizado en la comparacin de un modelo ej: LIKE texto* Utilizado para especificar registros de una base de datos

Funciones de Agregado: Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros.
Funcinn AVG COUNT SUM MAX MIN Descripcin Utilizada para calcular el promedio de los valores de un campo determinado Utilizada para devolver el nmero de registros de la seleccin Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor ms alto de un campo especificado Utilizada para devolver el valor ms bajo de un campo especificado

SELECT
SELECT campo1,campo2 FROM tabla *Campos opcionales WHERE condicin

Campo(s) solicitados como resultado de la consulta separados por comas para invocar todos los campos usar * Tabla(s) donde estn los campos, separadas por comas
Condicin(-es) que deben cumplir los registros para ser devueltos por la consulta. Si coexisten AND y OR, usar parntesis. Si es campo no numrico usar comillas. Se pueden utilizar comodines con LIKE

GROUP BY campo ORDER BY campo HAVING condicin

Agrupar por un campo o campos Ordenar por un campo o campos ASC ascendente o DESC inverso Condicin tras agrupar

Ejemplos SELECT
Selecciona todos los campos y todos los registros de la tabla personal SELECT * FROM PERSONAL Selecciona los campos cod, nombre y fecha y todos los registros SELECT cod, nombre, fecha FROM PERSONAL Selecciona nombre y RUT de las empleadas de la empresa SELECT nombre, RUT FROM PERSONAL WHERE SEXO=F Selecciona los empleados con el campo salario de la tabla PERSONAL vaco SELECT nombre, RUT FROM PERSONAL WHERE SALARIO IS NULL Selecciona todos los empleados cuyo apellido comience por T SELECT * FROM PERSONAL WHERE NOMBRE LIKE T%

Ejemplos SELECT
Selecciona los empleados cuyo nombre contenga una m o que sean mujeres SELECT * FROM PERSONAL WHERE NOMBRE LIKE %M% OR SEXO=F Selecciona de la tabla salario los sueldos mayor que 200000 y distintos de 450000 que no pertenezcan al mes de Agosto SELECT sueldo FROM SALARIO WHERE SUELDO > 200000 AND SUELDO<>450000 Selecciona de la tabla salario los sueldos entre 100000 y 150000 que no pertenezcan al mes de Agosto SELECT sueldo FROM SALARIO WHERE SUELDO BETWEEN 100000 AND 150000 AND MES NOT LIKE AGOSTO Selecciona los empleados con el campo salario de la tabla PERSONAL no vaco SELECT nombre, RUT FROM PERSONAL WHERE SALARIO IS NOT NULL

Ejemplos SELECT
Ordena a los empleados por nombre ascendente SELECT * FROM PERSONAL ORDER BY NOMBRE ASC Selecciona los empleados cuyo nombre contenga la palabra garca y que sean mujeres o cuyo RUT sea 15994945 ordena por numero de RUT descendente SELECT * FROM PERSONAL WHERE ((NOMBRE LIKE %GARCA%' AND SEX='F') OR RUT=15994945) ORDER BY RUT DESC Mostrar en una sola fila y sin duplicados los meses distintos que aparecen en la tabla salarios SELECT DISTINCT mes FROM SALARIO

SELECT funciones y agrupamiento


SELECT campo1 AVG(campo2) FROM tabla WHERE condicin
Funcin de agrupamiento, para calcular el promedio(AVG), suma (SUM), contar (COUNT), valor mnimo (MIN), mximo (MAX)... Opcional. Condicin antes de agrupar Agrupar por un campo o campos, cuando se ha puesto una funcin de agrupamiento en el SELECT todos los campos sin funcin deben estar agrupados. Si son varios, se separan por comas Opcional. Condicin tras agrupar

GROUP BY campo ORDER BY campo HAVING condicin

Ejemplos
Suma de lo pagado en el mes de Agosto SELECT Sum(SUELDO) FROM SALARIO WHERE MES="agosto" Media de lo pagado a los empleados cada mes. El campo calculado deber llamarse media SELECT Avg(SALARIO.SUELDO) AS Media, SALARIO.MES FROM SALARIO Mediante AS se GROUP BY SALARIO.MES puede cambiar el nombre a un campo Funcin promedio El nombre del campo se puede poner con su tabla Recordar agrupar los campos que no tienen funcin en el SELECT

Ejemplo
Contar el nmero de salarios que se pagaron en octubre del 2004 SELECT AGNO,MES, Count(MES) AS Cuenta FROM SALARIO WHERE AGNO=2004 AND MES=octubre GROUP BY AGNO, MES Que sueldo cobraron los empleados que ganaron ms de 800000 en el 2004 SELECT Sum(SUELDO) AS Suma, AGNO, CA_PERSONAL FROM SALARIO WHERE AGNO=2004 GROUP BY AGNO, CA_PERSONAL HAVING SUM(SUELDO)>=800000

Evitar campos ambiguos


Para evitar ambigedad entre los campos dados en una consulta y para hacer referencia a una tabla se usa el punto ., as el campo queda relacionado a su tabla en la consulta. Ejemplo:
SELECT RUT FROM PERSONAL SELECT RUT FROM CLIENTES
Correcto Correcto

SELECT RUT, RUT FROM CLIENTES, PERSONAL Ambiguo WHERE RUT = RUT AND RUT <> 15994945 SELECT CLIENTES.RUT, PERSONAL.RUT FROM CLIENTES, PERSONAL Correcto WHERE CLIENTES.RUT = PERSONAL.RUT AND PERSONAL.RUT <> 15994945

Uso de Alias
Muchas veces, sobretodo cuando se hacen consultas SQL con varias tablas, se usan los Alias. Los alias nos permiten dar un seudnimo a nuestras tablas. Ejemplo:

Alias SELECT C.RUT, P.RUT FROM CLIENTES as C, PERSONAL as P WHERE C.RUT = P.RUT AND P.RUT <> 15994945
Esta es una manera de simplificar y al mismo tiempo evitar la ambigedad de la consulta que, en este ejemplo, solicita los clientes que tambin son parte del personal, excepto el 15994945. Adems los alias se usan para renombrar los atributos retornados por una consulta: SELECT C.RUT as Clientes, P.RUT as Personal FROM CLIENTES as C, PERSONAL as P

Alias

Referencias cruzadas
Cuando se quiere extraer informacin que se encuentra contenida en ms de una tabla, se usa como punto comparativo el atributo que tienen en comn las tablas o llaves forneas (FK). Pro ejemplo si tenemos que la relacin entre tablas Persona, Mantenimiento y Maquinaria (fig1) y queremos saber quien hizo la mantencin 3 a una mquina en particular la consulta sera as:
SELECT personal.nombres, personal.apellidos FROM personal, maquinaria, mantencion WHERE mantencion.numero = 3 AND maquinaria.id = 1011 AND mantencion.tecnico_encargado = personal.rut

Fig1

Referencias cruzadas
Los datos del tcnico Las tablas involucradas
SELECT personal.nombres, personal.apellidos FROM personal, maquinaria, mantencion WHERE mantencion.numero = 3 La mantencin que buscamos AND maquinaria.id = 1011 De la maquinaria 1011 AND mantencion.tecnico_encargado = personal.rut Y su relacin con el tcnico

Fig1

Resultado:

Ingresar informacin
Para ingresar informacin a una tabla usando SQL es necesario usar la funcin INSERT INTO, donde se debe especificar la tabla donde se quiere ingresar la informacin, los campos que se ingresaran y finalmente los valores de estos campos. Ejemplo:

INSERT INTO personal (rut, nombres, apellidos) VALUES (11599495, Juan Manuel, Perez Gonzales);
Los valores que no son de tipo numrico deben ir entre comillas simples, tenga cuidado cuando pega una consulta al editor de PHPMyAdmin, por que muchas veces las comillas se cambian a comillas en una codificacin diferente.

Modificar Informacin
El modificar la informacin de una tabla en la base de datos se realiza con la funcin UPDATE, esta funcin al igual que INSERT debe especificar la tabla a modificar y los atributos. Se puede modificar ms de un atributo al mismo tiempo separando las modificaciones con una coma (luego de SET) Ejemplo: UPDATE personal SET nombres = 'Juan Jos' WHERE personal.rut =1159945; Al igual que en la instruccin SELECT se puede usar la clausula WHERE para especificar qu registro ser editado. En el ejemplo, si esta clausula no fuese aplicada, se modificaran todos los registros del personal, quedando todos con nombre Juan Jos porque sera una modificacin sin condiciones.

Borrar informacin
Para borrar informacin de una tabla, se debe usar la funcin DELETE, adems se debe especificar la tabla de donde se eliminara el registro y la condicin que determina cul o cules registros que sern eliminados. Ejemplo: DELETE FROM personal WHERE personal.rut = 11599495 Algunas veces las instrucciones para borrar informacin no tienen resultado y terminan con un mensaje de error aludiendo a la integridad referencial, esto sucede porque hay dos tablas referenciadas y tiene registros que dependen el uno del otro por un atributo que no admite valores nulos. En este caso es necesario primero borrar el registro referenciado de la otra tabla, o especificar la opcin de on delete en la estructura de la tabla.

También podría gustarte