Está en la página 1de 15

INSTITUTO TECNOLOGICO SUPERIOR DE SAN ANDRES TUXTLA

MODULO FUNDAMENTOS DE BASE DE DATOS DOCENTE LILY ALEJANDRA MEDRANO MENDOZA INTEGRANTES MARTIN ATAXCA MAZABA ROBERTO ANTONIO COTO IXTEPAN EPIFANIO SERRANO BLAS GRUPO 404-A CARRERA INGENIERIA EN SISTEMAS COMPUTACIONALES

LENGUAJES SQL 6.1 INTRODUCCION


Lenguaje de consulta estructurado (SQL) es un lenguaje de base 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 como sucede con cualquier sistema de normalizacin hay excepciones para casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI) no nos servir para resolver todos los problemas, aunque si se puede asegurar que cualquier sentencia escrita en ANSI ser interpretable por cualquier motor de datos.

6.2 DEFINICION DE DATOS Componentes del SQL El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. Comandos Existen dos tipos de comandos SQL: - DLL que permiten crear y definir nuevas bases de datos, campos e ndices. - DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. Comandos DLL Descripcin Utilizado para crear nuevas tablas, campos e ndices Empleado para eliminar tablas e ndices Utilizado para modificar las tablas agregando campos o cambiando la definicin de los campos. Comandos DML Comando Descripcin SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin. UPDATE Utilizado para modificar los valores de los campos y registros especificados DELETE Utilizado para eliminar registros de una tabla de una base de datos Comando CREATE DROP ALTER

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 Uso AND Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son ciertas. OR Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta. NOT Negacin lgica. Devuelve el valor contrario de la expresin. Operadores de Comparacin 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. Utilizado en la comparacin de un modelo Utilizado para especificar registros de una base de datos

6.3 ESTRUCTURA BASICA DE CONSULTAS

Consulta de datos. El proceso ms importate que podemos llevar a cabo en una base de datos es la consulta de los datos. De nada servira una base de datos si no puedieramos consultarla. Es adems la operacin que efectuaremos con mayor frecuencia. Para consultar la informacin SQL pone a nuestra disposicin la sentencia SELECT. La sentencia SELECT La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base de datos. El formato de la sentencia select es: SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla>|<nombre_vista>[{,<nombre_tabla>|<nombre_vista>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]] Donde las partes que cada una de sentencia nos describe lo siguiente: Significado Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de seleccin. Indica que queremos seleccionar todos los valores.Es el valor por defecto y no suele especificarse casi nunca. Indica que queremos seleccionar slo los valores distintos. Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de que exista ms de una tabla se denomina a la consulta "consulta

SELECT ALL DISTINCT FROM

WHERE GROUP BY HAVING

ORDER BY

combinada" o "join". En las consultas combinadas es necesario aplicar una condicin de combinacin a travs de una clusula WHERE. Especifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta. Admite los operadores lgicos AND y OR. Especifica la agrupacin que se da a los datos. Se usa siempre en combinacin con funciones agregadas. Especifica una condicin que debe cumplirse para los datosEspecifica una condicin que debe cumplirse para que los datos sean devueltos por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto a GROUP BY y la condicion debe estar referida a los campos contenidos en ella. Presenta el resultado ordenado por las columnas indicadas. El orden puede expresarse conASC (orden ascendente) y DESC (orden descendente). El valor predeterminado es ASC.

Veamos un ejemplo. Para formular una consulta a la tabla tCoches y recuperar los campos matricula, marca, modelo, color, numero_kilometros, num_plazas, se debe ejecutar la siguiente consulta. Los datos seran devueltos ordenados por marca y por modelo en orden ascendente, de menor a mayor.

SELECT matricula, marca, modelo, color, numero_kilometros, num_plazas FROM tCoches ORDER BY marca,modelo;

6.4 Operaciones sobre conjuntos Las operaciones aplicables tanto a un conjunto como a una tabla son las siguientes: Unin, Interseccin, diferencia y diferencia simtrica como se observa en la tabla a continuacin

Como prctica, Consideremos el caso siguiente: Tres cursos se impartieron en una escuela: Matemticas, Ingles, Historia y se necesita saber lo siguiente: 1) quienes han cursado al menos una materia 2) Quien ya curso todas 3) Quien no ha cursado matemticas

Primero se crean tres conjuntos de datos (en este caso sern tablas temporales) y las llenamos con informacin. create table #historia (nombre varchar(30)) create table #matematicas (nombre varchar(30)) create table #ingles (nombre varchar(30)) insert into #historia (nombre) values ('Luis Osorio') insert into #historia (nombre) values ('Martha Martnez') insert into #historia (nombre) values ('Daniel Gonzlez') insert into #historia (nombre) values ('Noemi Snchez') insert into #ingles (nombre) values ('Luis Osorio') insert into #ingles (nombre) values ('Martha Martnez') insert into #ingles (nombre) values ('Daniel Gonzlez') insert into #ingles (nombre) values ('Cristal Lpez') insert into #Matematicas (nombre) values ('Luis Osorio') insert into #Matematicas (nombre) values ('Martha Martnez') insert into #Matematicas (nombre) values ('Noemi Snchez')

insert into #Matematicas (nombre) values ('Cristal Lpez')

Para saber quienes han cursado al menos una materia. En este caso la operacin que se aplica es unin, en esta se utiliza el operador UNION de SQL Server con el cual se combina con los resultados de tres, en uno solo y tendremos algo como esto:

Por defecto, UNION elimina los registros duplicados como se observo en el ejemplo anterior. Si se desea tener esos duplicados se puede especificar UNION ALL en nuestro ejemplo y con eso se tendr de vuelta los registros duplicados, aunque generalmente lo que se requiere es no tener duplicidad de datos. El siguiente caso a resolver es quien ya curso las tres materias. La operacin a realizar ser una interseccin ya que en este caso buscamos miembros de los tres conjuntos. El operador que usaremos ahora es INTERSECT, que retorna registros coincidentes en los tres, del ejemplo dado el siguiente resultado:

Y finalmente, para saber quien no curso matemticas, se usara el operador EXCEPT el cual permite saber cuales "registros de A no estn en B", dicho de otra forma si tenemos la clases de Ingles e Historia y a esas clases les aplicamos el operador EXCEPT para saber quien ya llevo esas dos materias pero no ha llevado matemticas, el resultado de este ultimo se los presento a continuacin:

6.5 FUNCIONES DE AGREGACION

Clusula GROUP BY La clusula GROUP BY especifca una consulta sumaria. En vez de producir un fila de resultados por cada fila de datos de la base de datos, una consulta sumaria agrupa todas las filas similares y luego produce una fila sumaria de resultados para cada grupo. Seguido de la clusula GROUP BY se especifcan los nombres de uno o ms campos cuyos resultados se desean agrupados. Tiene la forma: GROUP BY expresin_columna Expresin_columna debe coincidir con la expresin de columna utilizada en la clusula SELECT. Puede ser uno o ms nombres de campo de una tabla, separados por coma o una o ms expresiones separadas por comas. El siguiente ejemplo nos dice cuantos alumnos estn matriculados en cada grupo en el ao 1999: SELECT GRUPO, COUNT(*) FROM MATRICUL WHERE ANNO = 1999 GROUP BY GRUPO Esta sentencia nos devolver una fila por cada grupo de alumnos. Cada una de ellas contendr el grupo y el n de alumnos en l.

Clusula HAVING La clusula HAVING dice a SQL que incluya solo ciertos grupos producidos por la clusula GROUP BY en los resultados de la consulta. Al igual que la clusula WHERE, utiliza una condicin de bsqueda para especifcar los grupos deseados. En otras palabras, especifca la condicin que deben de cumplir los grupos. Slo es vlida si previamente se ha especificado la clusula GROUP BY. La clusula HAVING tiene la forma: HAVING expresin1 operador expresin2 Expresin1 y expresin2 pueden ser nombres de campos, valores constantes o expresiones y estas no deben coincidir con una expresin de columna en la clusula SELECT. Operador es un operador relacional que une las dos expresiones. La sentencia siguiente nos mostrar el nmero de alumnos en cada grupo de 1995 cuyo numero de integrantes supera los 30: SELECT GRUPO, COUNT(*) FROM MATRICUL WHERE ANNO = 1995 GROUP BY GRUPO HAVING COUNT(*) > 30

6.6 VALORES NULOS "null" significa "dato desconocido" o "valor inexistente". No es lo mismo que un valor "0", una cadena vaca o una cadena literal "null". Puede desconocerse o no existir el dato correspondiente a algn campo de un registro. Este campo puede contener valores nulos. En contraposicin, tenemos campos que no pueden estar vacos jams. Por ejemplo. Tenemos la tabla "libros". El campo "titulo" no debera estar vaco nunca, igualmente el campo "autor". Para ello, al crear la tabla, debemos especificar que dichos campos no admitan valores nulos: create table libros( titulo varchar(30) not null, autor varchar(20) not null, editorial varchar(15) null, precio float );

Para especifcar que un campo no admita valores nulos, debemos colocar "not null" luego de la definicin del campo. En el ejemplo anterior, los campos "editorial" y "precio" si admiten valores nulos. Cuando colocamos "null" estamos diciendo que admite valores nulos (caso del campo "editorial"); por defecto, es decir, si no lo aclaramos, los campos permiten valores nulos (caso del campo "precio"). Si ingresamos los datos de un libro, para el cual an no hemos definido el precio podemos colocar "null" para mostrar que no tiene precio:

insert into libros (titulo,autor,editorial,precio) values('El aleph','Borges','Emece',null); El valor "null" no es una cadena de caracteres, no se coloca entre comillas. Entonces, si un campo acepta valores nulos, podemos ingresar "null" cuando no conocemos el valor. De la misma manera se puede colocar tambin "null" en el campo "editorial" si se desconoce el nombre de la editorial a la cual pertenece el libro que vamos a ingresar:

insert into libros (titulo,autor,editorial,precio) values('Alicia en el pais','Lewis Carroll',null,25);

Si intentamos ingresar el valor "null" en campos que no admiten valores nulos (como "titulo" o "autor"), SQL no lo permite, muestra un mensaje y la insercin no se realiza; por ejemplo:

insert into libros (titulo,autor,editorial,precio) values(null,'Borges','Siglo XXI',25);

Para ver cules campos admiten valores nulos y cules no, podemos emplear el procedimiento almacenado "sp_columns" junto al nombre de la tabla. Nos muestra

mucha informacin, en la columna "IS_NULLABLE" vemos que muestra "NO" en los campos que no permiten valores nulos y "YES" en los campos que si los permiten. Para recuperar los registros que contengan el valor "null" en algn campo, no podemos utilizar los operadores relacionales vistos anteriormente: = (igual) y <> (distinto); debemos utilizar los operadores "is null" (es igual a null) y "is not null" (no es null): select * from libros where precio is null; La sentencia anterior tendr una salida diferente a la siguiente: select * from libros where precio=0; Con la primera sentencia se vera que los libros cuyo precio es igual a "null" (desconocido); con la segunda, los libros cuyo precio es 0. Igualmente para campos de tipo cadena, las siguientes sentencias "select" no retornan los mismos registros: select * from libros where editorial is null; select * from libros where editorial='';

Con la primera sentencia se tienen los libros cuya editorial es igual a "null", con la segunda, los libros cuya editorial guarda una cadena vaca.

6.7 CONSULTAS ANIDADAS SELECT anidadas Pueden existir consultas a la Base de Datos que requieran una restriccin que sea el resultado de otra consulta. Por ejemplo: Deseamos saber cuantas materias posee el ltimo curso de unos determinados estudios. Mediante COUNT(Materia) puedo saber cuantas pero la condicin del ltimo curso solo se puede saber despus de ejecutar una sentencia con MAX(Curso) del fichero PLANES Cuando esto se produce podemos actuar de dos formas:

- La primera efectuando la consulta que genera la restriccin y posteriormente, realizar la sentencia con el resultado de la restriccin calculada: SELECT MAX(CURSO) FROM PLANES WHERE ESTUDIO = '@Estudio Si, por ejemplo, el valor mximo nos devuelve 3, entonces realizaramos la sentencia definitiva con: SELECT COUNT(MATERIA) FROM PLANES WHERE ESTUDIO = '@Estudio' AND CURSO = 3 - La segunda forma es ms compleja pero mucho ms prctica. La sentencia que genera la restriccin compleja se anida dentro de la principal encerrndola entre parntesis: SELECT COUNT(MATERIA) FROM PLANES WHERE ESTUDIO = '@Estudio' AND CURSO = (SELECT MAX(CURSO) FROM PLANES WHERE ESTUDIO = '@Estudio') Las sentencias SELECT anidadas se utilizan con mucha frecuencia a la hora de Actualizar o Borrar registros de una tabla que requieran condiciones o restricciones en las que estn implicadas otras tablas distintas de la que se va a actualizar o borrar.

6.8 CONSULTAS COMPLEJAS

Qu es una subconsulta? Una subconsulta es una consulta encerrada entre parntesis CONSULTAS COMPLEJAS: SUBCONSULTAS Si la informacin que se est buscando est incluida en una tabla y la condicin de bsqueda de esta informacin requiere acceder a otras tablas, entonces (EN ALGUNOS CASOS) sepueden utilizar las subconsultas para expresar este tipo de condiciones.

EJEMPLO: El mismo ejemplo anterior: Obtener los nombres de los ciclistas pertenecientes al equipo dirigido por Alvaro Pino. Tenamos usando igualdades: SELECT C.nombre FROM Ciclista C, Equipo E WHERE C.nomeq = E.nomeq

AND E.director = Alvaro Pino; Usando subconsultas: SELECT C.nombre FROM Ciclista C WHERE C.nomeq = (SELECT E.nomeq FROM Equipo E WHERE E.director = Alvaro Pino); Esto es posible porque la informacin que se requiere, nombre del ciclista, no est en la tabla de la subconsulta (Equipo) y porque la subconsulta retorna un nico valor.

PREDICADOS QUE ACEPTAN SUBCONSULTAS: Las subconsultas pueden aparecer en las condiciones de bsqueda como argumentos de los predicados siguientes: predicados de comparacin (=, <>, >, <, >=, <=). IN: comprueba que un valor pertenece a una coleccin dada mediante una subconsulta. MATCH: comprueba si un valor es idntico a algn valor de una coleccin. predicados de comparacin cuantificados (ANY y ALL): permiten comparar un valor con un conjunto de valores. EXISTS: equivalente al cuantificador existencial, comprueba si una subconsulta devuelve alguna fila. UNIQUE: equivalente a las tuplas no se repiten, comprueba si una subconsulta devuelve filas no repetidas

6.9 VISTAS Una vista en SQL es el resultado de una consulta de varias tablas que aparece como una sola tabla. Formato: CREATE [OR REPLACE] VIEW NOMBREVISTA

[(COLUMNA [,COLUMNA])] AS CONSULTA; AS CONSULTA= Determina las columnas y las tablas que aparecern en la vista. [OR REPLACE]= Crea de nuevo la vista si ya exista. Para consultar la vista creada, USER_VIEWS: SELECT VIEW_NAME FROM

6.10 MODIFICACION DE LA BASE DE DATOS

El comando SELECT permite ver un grupo de registros de una o ms tablas. Con SQL tambin pueden aadirse o modificarse lneas: * UPDATE: Cambia valores almacenados en tablas. * INSERT: Aade lneas a una tabla. * DELETE: Borra lneas a una tabla.

Actualizacin de datos en la tabla Para actualizar o cambiar un valor. Se debe actualizar, en la tabla, el. El comando UPDATE se escribe seguido por la tabla donde realizara el cambio y para indicar la actualizacin, se escribe Set seguido por el cambio, y finalmente la condicin (opcional) en la que se indican las lneas que se van a modificar:

Por ejemplo al modificar un salario de un empleado. UPDATE EMP SET SAL=SAL+100 WHERE JOB='CLERCK'; Headers(); PrintAll; un mensaje confirmar que la actualizacin ha tenido lugar.

Instalar nuevos registros en una tabla El comando INSERT se ha utilizado hasta ahora para introducir lneas de informacin, pero una lnea cada vez. Sin embargo, puede usarse este comando para aadir un conjunto de lneas desde una tabla hacia otra. Puede hacerse esto utilizando una bsqueda para definir el conjunto de lneas que se van a insertar en la tabla. Supongase que en la base de datos se tiene una tercera tabla llamada Promocin, con algunas de las columnas de la tabla DEPT y se desea introducir en ella informacin de todos los vendedores que tengan de comisin una cifra superior al 25% de su salario, copiando la informacin desde la tabla EMP: INSERT INTO PROMOCION (ENAME,JOB,SAL,COMM) SELECT ENAME,JOB,SAL,COMM FROM EMP WHERE COMM > 0.25 * SAL;

Borrado de registros de una tabla Para borrar se emplea la orden Delete y se puede utilizar con where para determinar los registros que se quieren borrar. As por ejemplo, para borrar el departamento 40 se hara lo siguiente: DELETE FROM DEPT WHERE DEPTNO=40; Las condiciones para todos esos comandos demuestran como SQL emplea la misma sintaxis tanto para las bsquedas como para la manipulacin de la informacin. En los comandos SELECT, UPDATE, INSERT y DELETE, la condicin con WHERE es opcional. CONCLUSION En conclusin todo esto de los lenguajes SQL nos servirn en un futuro para la creacin, modificacin y eliminacin de registros en nuestra base de datos, es muy importante que nosotros lo aprendamos ya que en un da en el futuro nos servir para manejar en nuestra base de datos etc.

También podría gustarte