You are on page 1of 15

TABLA DE CONTENIDO

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.

Palabras predefinidas: son las que tienen un significado propio en el lenguaje.

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.

2. OPERACIONES EN LA BASE DE DATOS

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

Insertar: se utiliza para insertar una o ms tuplas nuevas a la relacin.

Para realizar la insercin individual de filas SQL posee la instruccin INSERT INTO. Su sintaxis es la siguiente:

INSERT INTO <nombre_tabla> [(<campo1>[,<campo2>,...])]values <valor1>,<valor2>,...);


Ejemplo INSERT INTO alumnos (nombre, apellido, dni, fecha_nac) VALUES (Carlos, Gmez, 2323322,#12/06/1978#);

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>];

Ejemplo: DELET FROM alumnos WHERE dni=1212123;

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

EJERCICIO Empleado(DNI, nombre, apellido, dpto) Departamento(id_dpto, nombre)

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

Empleado(DNI, nombre, apellido, dpto) proyecto_empleado ( nro_proyecto, DNI, hs_semanal)

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

Como ttulo de la tercera columna aparecer Haberes en lugar de sueldo.

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

SELECT nombre, apellido, datediff('yyyy', fecha_nac, date() ) AS edad 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;

PALABRA CLAVE DISTINCT

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

MIN (Exp) MAX (Exp)

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)

Tabla acciones: mysql>


Ai d
1 2 3 4

select * from acciones;

ci d
2 4 4 5

accin
REDHAT NOVELL SUN FORD

cantid ad
10 20 30 100

4 rows in set (0.00 sec)

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

3 rows in set (0.00 sec)

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.

You might also like