Escolar Documentos
Profissional Documentos
Cultura Documentos
Tabla de contenido............................................................................................................... 1 1.Estructura de una sentencia SQL.................................................................................... 2 2.Operaciones en la Base De Datos...................................................................................3 2.1.Operaciones de actualizacin................................................................................... 3 2.1.1.Insercion de registros............................................................................................... 3 2.1.2.Eliminar registros...................................................................................................... 5 2.1.3.Modificacin de Registros......................................................................................... 6 2.2.Consultas ................................................................................................................. 7 2.2.1.Consultas SIMPLES.................................................................................................... 7 WHERE ........................................................................................................................... 8 2.2.2.Operadores............................................................................................................... 8 AND OR........................................................................................................................... 9 OPERADORES DE CONCATENACION.............................................................................10 2.2.3.ALIAS DE COLUMNA................................................................................................ 10 2.2.4.COLUMNAS CALCULADAS....................................................................................... 11 2.2.5.PREDICADOS........................................................................................................... 11 2.2.6.FUNCIONES DE AGREGACIN.................................................................................13
INTRODUCCIN AL SQL
SQL (Structured Query Language) es un lenguaje de consulta estructurado que permite expresar operaciones diversas sobre sistemas de bases de datos relacionales. Es un lenguaje declarativo: slo hay que indicar qu se quiere hacer. El SQL es un lenguaje estandarizado por lo cual se lo puede encontrar en cualquier SGBD como ser: Access. Mysql, Sql Server, Oracle, etc. El hecho de
que sea estndar no quiere decir que sea idntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones especficas que no tienen necesariamente que funcionar en otras. El SQL es un lenguaje muy parecido al lenguaje natural; concretamente, se parece al ingls, y es muy expresivo. Por estas razones, y como lenguaje estndar, el SQL es un lenguaje con el que se puede acceder a todos los sistemas relacionales comerciales. Es un lenguaje orientado a conjuntos, lo que significa que cuando realizamos una consulta de datos esperamos como resultado un cierto subconjunto homogneo de datos, sin que conozcamos la estructura y volumen fijo de elementos El nmero de sentencias existentes en el lenguaje es reducido, por lo que el aprendizaje de la sintaxis no resulta difcil.
1. ESTRUCTURA DE UNA SENTENCIA SQL
Las operaciones de SQL reciben el nombre de sentencias y estn formadas por diferentes partes que denominamos clusulas.
Todas las sentencias SQL comienzan por una palabra predefinida. Ejemplo de palabras predefinidas serian SELECT, INSERT, WHERE, INTO.
Nombres de Tablas y Columnas: identificadores inventados al crear la tabla Constantes o literales: representan un valor determinado. Signos delimitadores: son signos especiales que aparecen en las sentencias
fuera de los otros elementos. Sirven para separar o delimitar estos ltimos. Entre ellos se encuentran los espacios en blanco, los parntesis, las comas y otros.
La mayora de sentencias SQL tienen la misma estructura. Todas comienzan por un verbo (SELECT, INSERT, UPDATE, CREATE), a continuacin le sigue una o ms clusulas que nos dicen los datos con los que vamos a operar (FROM, WHERE), algunas de estas son opcionales y otras obligatorias como es el caso del FROM.
Con SQL es posible crear y borrar BD, insertar, borrar y modificar las diferentes tablas que la compone. Entre las sobre tablas se pueden clasificar en operaciones de actualizacin y operaciones de consulta. Las consultas podemos realizarlas en una Tabla y en multitablas.
2.1.
OPERACIONES DE ACTUALIZACIN
Una vez creada la base de datos con sus tablas, debemos poder insertar, modificar y borrar los valores de las filas de las tablas. Para poder hacer esto, el SQL nos ofrece las siguientes sentencias: INSERT para insertar, UPDATE para modificar y DELETE para borrar. Una vez hemos insertado valores en nuestras tablas, tenemos que poder consultarlos. La sentencia para hacer consultas a una base de datos con el SQL es SELECT FROM.
2.1.1.
INSERCION DE REGISTROS
Para realizar la insercin individual de filas SQL posee la instruccin INSERT INTO. Su sintaxis es la siguiente:
RECORDAR
respetar el orden de los campos segn la tabla donde se requiera insertar, para generar buen hbito, en Access no requiere que se mantenga el orden. Si se omite algunos de los campos, la base de datos insertar el valor por defecto que se haya definido. El nmero de campos debe coincidir con el nmero de valores a insertar. Hay que estar atentos sobre qu tipo de datos son los campos. De esta forma, si es textual va entre comillas, si es numrico no tiene comillas y las fechas van entre cardinal (en Access). Los registros se agregan siempre al final de la tabla Cuando utilicemos con VB 6.0 los valores cambiaran por el nombre que reciban los controles del formulario.
Errores que se pueden producir cuando se ejecuta la sentencia INSERT INTO: Si la tabla de destino tiene clave principal y en ese campo intentamos no asignar valor, asignar el valor nulo o un valor que ya existe en la tabla, el motor de base de datos Microsoft Jet no aade la fila y da un mensaje de error de 'infracciones de clave'. Si tenemos definido un ndice nico (sin duplicados) e intentamos asignar un valor que ya existe en la tabla tambin devuelve el mismo error. Si la tabla est relacionada con otra, se seguirn las reglas de integridad referencial.
2.1.2.
ELIMINAR REGISTROS
Eliminar: se utiliza para eliminar una o ms tuplas de una tabla DELETE FROM <nombre_tabla> [ WHERE <condicin>];
Esta sentencia permite borrar algunos valores de la tabla. Sin embargo, si queremos eliminar todos los registros de una tabla solo debemos escribir la sentencia DELETE FROM, sin el WHERE.
departamento
id_departam ento 1 2 nombre inversiones planeamie nto
En la tabla empleados de la base de datos diseada en el Prctico Nro. 1 agregar los siguientes empleados: DNI 33.213.456 Federico Veliz en el departamento de planeamiento DNI 23.345.454 Santiago Lescano en el departamento inversiones
En la tabla Departamento(id_dpto, nombre) Agregar Dpto. de Finanza Eliminar el Dpto. nmero 4 de la tabla departamento Eliminar todos los elementos de la tabla Dpto.
2.1.3.
MODIFICACIN DE REGISTROS
Modifica: se utiliza para modificar una o ms tuplas de una relacin. UPDATE <nombre_tabla> SET <campo1> = <valor1>{[,<campo2> = <valor2>,...,<campoN> = <valorN>]} [ WHERE <condicion>];
Ejemplo: UPDATE alumnos set nombre=Carlos WHERE apellido=Gomz; Recordar: en SET va el campo a modificar y el dato a insertar y el Where se utiliza para determinar el registro. En el ejemplo, se modifica los nombres a Carlos en los alumnos cuyo apellido sea Gomz. Tenemos las siguientes relaciones en la BD
proyecto_empleados
proyect o 3 2 1 3 3 dni 2334455 5 2334455 5 2344459 9 2433344 4 2334545 4 hs_semana les 3 7
empleados
15 10 10 dni apellid nombr departame o e nto 1 1 2 1 martin
23344555 garcia lorenzo 23444599 jerez 24333444 basual fransis do co 34222333 guzma carlos n
Si queremos reducir a 5 la cantidad de horas semanales que el empleado Garcia se debe especificar la sentencia de la siguiente manera: UPDATE proyecto_empleado SET hs_semanales=5 where DNI=23345454
EJERCICIOS
En la tabla proyecto_empleado realizar las siguientes modificaciones: Al empleado Basualdo, Francisco reasignarlo al proyecto de Asesora infraestructura sustentable con 20 hs semanales. A todos los empleados que tengan 10hs de dedicacin semanal se debe incrementar a 15hs
2.2. CONSULTAS
2.2.1.
CONSULTAS SIMPLES
La operacin ms comn en una base de datos es pedir informacin, y a la cual se denomina consulta. El comando SELECT va seguido de FROM y en ocasiones de WHERE. SELECT especifica las columnas, FROM especifica las tablas y WHERE especifica las condiciones. Si no hay El * despues del condiciones de bsqueda se presentarn las SELECT indica que columnas completas, sin restricciones.
SELECT <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{,<nombre_tabla>}] [WHERE <condicion>] Sintaxis mnima: SELECT campos FROM tabla Consultas Alumnos
Nombre Carlos Cristian Matias Apellido Gomez Cordero Paz DNI 22322322 23353535 32323335 Fecha_nac 17/02/1979 22/07/1978 27/02/1986 queremos ver todos los atributos que aparecen en la tabla
SELECT * FROM Alumnos; Resultado: Nombre Carlos Cristian Matias Apellido Gomez Cordero Paz DNI 22322322 23353535 32323335 Fecha_nac 17/02/1979 22/07/1978 27/02/1986
Si queremos ver solo los nombres y apellidos, debemos hacer: SELECT nombre, apellido FROM Alumnos; Resultado: nombre apellido Carlos Gomez Cristian Cordero Matias Paz
WHERE
Con la sentencia SELECT FROM podemos seleccionar columnas de una tabla, pero para seleccionar filas de una tabla es preciso aadirle la clusula WHERE.
SELECT nombre_columnas_a_seleccionar FROM tabla_a_consultar WHERE condiciones;
La clusula WHERE nos permite obtener las filas que cumplen la condicin especificada en la consulta.
CONSULTAS
La sentencia para ver el nombre y apellido del alumno cuyo DNI es 22322322 es: SELECT nombre, apellido FROM alumnos WHERE dni=22322322;
Resultado nombre Carlos apellido Gomez
2.2.2.
OPERADORES
Para definir las condiciones en la clausula WHERE, se puede utilizar algunos de los operadores que dispone SQL
AND OR
La sentencia WHERE utilizada anteriormente es un condicional simple, pero tambin podemos necesitar una consulta con condicin compuesta. Las condiciones compuestas estn formadas por mltiples condiciones simples conectadas por AND u OR. No hay lmites en el nmero de condiciones simples que pueden presentarse en una sola instruccin SQL. La sintaxis de una condicin compuesta es la siguiente:
SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condicin simple" {[AND|OR] "condicin simple"}+
{}+ significa que la expresin dentro de las llaves ocurrir una o ms veces. AND u OR pueden utilizarse indistintamente. Adems, debemos en Access utilizar con cuidados los parentesis () para indicar el orden de la condicin.
CONSULTAS
Empleados nombre Claudia Pedro Gustavo Gonzalo apellido Gonzlez Gmez Lucca Prez DNI 23323232 23353535 21359586 32353535 sueldo 500 1000 1000 3060
Queremos saber el nombre, apellido y sueldo de los empleados que cobran menos de $1060 y ms de $860. SELECT nombre, apellido, sueldo FROM empleados Where ( sueldo<1060 AND sueldo>860);
Resultado:
nombre Pedro Gustavo apellido Gmez Lucca sueldo 1000 1000
OPERADORES DE CONCATENACION
Estos operadores permiten concatenar cadenas. El que usaremos por ahora es el ms (+), los restantes operadores los utilizaremos para operar con LIKE. Concatenaremos el nombre y el apellido: SELECT nombre+apellido AS Nombre y Apellido FROM empleados
Nombre y Apellido ClaudiaGonzlez PedroGmez GustavoLucca GonzaloPrez
Para evitar que la unin de los dos campos queden tan juntos se puede concatenar espacios. SELECT nombre+ +apellido AS Nombre y Apellido FROM empleados
Nombre y Apellido Claudia Gonzlez Pedro Gmez Gustavo Lucca Gonzalo Prez
2.2.3.
ALIAS DE COLUMNA
Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un alias de columna mediante la clusula AS ser el nombre que aparecer como ttulo de la columna. SELECT nombre, apellido, sueldo AS Haberes FROM Empleados Where ( sueldo<1060 AND sueldo>860);
nombre Pedro Gustavo apellido Gmez Lucca Haberes 1000 1000
2.2.4.
COLUMNAS CALCULADAS
Adems de las columnas que provienen directamente de la tabla origen, una consulta SQL puede incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos almacenados. Las columnas calculadas, son virtuales que se aade a la salida y se recalculan cada vez que se vuelven a utilizar. 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 funciones predefinidas.
SELECT nombre&' '& apellido AS Nombre y Apellido FROM empleado; SELECT nombre, apellido, sueldo -(sueldo*0.1) AS sueldo_deducido FROM Empleado
2.2.5.
BETWEEN
PREDICADOS
La palabra clave BETWEEN permite la seleccin de un rango. La sintaxis para la clusula BETWEEN es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2' Esto seleccionar todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'. SELECT nombre, apellido FROM empleados WHERE sueldos BETWEEN 500 AND 1000
ORDENAR LOS REGISTROS
Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clusula ORDER BY Lista de Campos. Ejemplo: SELECT nombre, apellido FROM alumnos ORDER BY apellido;
Si queremos que en una consulta nos aparezcan las filas resultantes sin repeticiones, es preciso poner la palabra clave DISTINCT inmediatamente despus del WHERE. Consulta Queremos saber los valores nominales de los sueldos que se abonan. SELECT DISTINCT sueldos FROM empleados Resultados
sueldo 500 1000 3060
2.2.6.
FUNCIONES DE AGREGACIN
Muchas veces, para tomar decisiones no hacen faltan datos crudos, sino que se necesita informacin resumida. Para ello, SQL nos provee de las denominadas funciones bsicas de agregacin, las cuales toman una expresin y retornan un valor agregado o resumido a partir de todas las filas de la tabla especificada. Es decir, que dado un conjunto de datos, SQL nos provee de un nico valor, obtenido a partir de todos los datos
SUM
Devuelve la suma del conjunto de valores contenido en una columna especifica de una consulta. Su sintaxis es: Sum(expr) En donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresin que realiza un clculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(Productos*Cantidad) AS Total FROM DetallePedido;
Si se quiere incrementar en 100 los sueldos de los empleados se debe realizar la siguiente consulta: SELECT SUM (sueldos*100) AS sueldo_incrementado FROM empleados COUNT
Devuelve el nmero total de filas de una columna especifica en la consulta. Su sintaxis es: COUNT(expr) En donde expr contiene el nombre del campo que desea contar. Si utiliza un asterisco, Count calcula el nmero total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente ms rpida que Count(Campo).
SELECT Count(*) AS Total FROM Pedidos GROUP
Combina los registros con valores idnticos, en la lista de campos especificados, en un nico registro. Para cada registro se crea un valor
sumario si se incluye una funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo GROUP BY es opcional. Los valores Null en los campos GROUP BY se agrupan y no se omiten. Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar
OTRAS FUNCIONES DE AGREGACIN
Nos da el valor mnimo de una columna Nos da el valor mximo de una columna
Consulta de ms de una tabla Hasta el momento se ha trabajado con una sola tabla pero generalmente se utilizan ms de una. La sentencia INNER JOIN en SQL permite componer una nueva tabla a partir de combinar los registros de dos o ms tablas.
mysql> select * from clientes; +------+------------+------------+ | cid | nombre | telefono | +------+-----------+------------+ | 1 | jose | 111 | | 2 | maria | 222 | | 3 | manuel | 333 | | 4 | jesus | 4444 | +------+--------------+----------+ 4 rows in set (0.00 sec)
ci d
2 4 4 5
accin
REDHAT NOVELL SUN FORD
cantid ad
10 20 30 100
Observaciones de las tablas: La primera tabla contiene clientes y telfonos y la segunda la tenencia de acciones de los clientes.
Las dos tablas contienen el campo cid (client id) que es el que nos permitir realizar coincidencias entre ambas tablas con INNER JOIN. Hay clientes que no tienen acciones (Jos) y otros que tienen ms de una especie (Jess). El ltimo registro de la tabla acciones (aid=4) tiene un cid 5, si miramos la tabla cliente, no existe un cliente con cid=5. El INNER JOIN nos permitir obtener un listado de los campos que tienen coincidencias en ambas tablas. sea nos dar una lista de los clientes que tienen acciones. SELECT nombre, telefono, accion, cantidad FROM clientes INNER JOIN acciones ON (clientes.cid=acciones.cid);
NOMBRE maria JESUS JESUS TELEFONO 222 4444 444 ACCION REDHAT NOVELL SUN CANTIDAD 10 20 30
Ejercicios 12-16 Las tablas pueden ser consultas, esto permite poder extender la combinacin a ms de una tabla. SELECT barrio.descripcion, barrio.descripcion, Empleado.nombre, Empleado.apellido FROM Departamento INNER JOIN (barrio INNER JOIN Empleado ON barrio.Id_barrio = Empleado.barrio) ON Departamento.Id_dpto = Empleado.id_dpto; Existe una operacin que no es de las ms utilizadas entre los programadores; como venimos diciendo, componer una tablas es agregarle a una tabla las filas de otra, esto equivaldra a un producto cartesiano con una seleccin de filas: SELECT * FROM pedidos,clientes WHERE pedidos.clie=clientes.numclie
O sea, combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que cumplan que el cdigo de cliente de la tabla de pedidos sea igual al cdigo de cliente de la tabla de clientes, por lo tanto nos quedamos con los pedidos combinados con los datos del cliente correspondiente. La condicin es normalmente llamada columna de emparejamiento. El hecho de que normalmente emparejamos tablas que estn relacionadas entre s y una de las columnas de emparejamiento es clave principal, o sea es un ndice, hace que el INNER JOIN sea el tipo de composicin ms adecuada.