Click here to load reader

sql ADO.pdf

  • View
    23

  • Download
    2

Embed Size (px)

Text of sql ADO.pdf

LENGUAJE SQL SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos informtica. El nombre "SQL" es una abreviatura de Structured Query Languaje (Lenguaje de consultas estructurado). Como su propio nombre indica, SQL es un lenguaje informtico que se puede utilizar para interaccionar con una base de datos y ms concretamente con un tipo especifico llamado base de datos relacional. SQL es a la vez un lenguaje fcil de aprender y una herramienta completa para gestionar datos. Las peticiones sobre los datos se expresan mediante sentencias, que deben escribirse de acuerdo con unas reglas sintcticas y semnticas de este lenguaje. Su aprendizaje no solo sirve para esta aplicacin sino , tambin, para todas las existentes en el mercado que soporten este lenguaje ya que es un lenguaje estndar por haberse visto consolidado por el Instituto Americano de Normas (ANSI) y por la Organizacin de Estndares Internacional (ISO).

Sentencias de seleccin o consultas Las consultas son el corazn del lenguaje SQL. La sentencia SELECT, que se utiliza para expresar consultas en SQL, es la ms potente y compleja de las sentencias SQL. La sentencia SELECT recupera datos de una base de datos y los devuelve en forma de resultados de la consulta. Consta de seis clusulas: las dos primeras (SELECT y FROM) obligatorias y las otras cuatro opcionales. La forma de la sentencia SELECT es: SELECT [DISTINCT] {* | expresin_columna, ...} FROM nombretabla [alias_tabla] ... [WHERE expresin1 operador expresion2] [GROUP BY {expresin_columna, ...} ] [HAVING {condicin} ] [UNION [ALL] (SELECT ...)] [ORDER BY {expresin_orden [DESC | ASC], ... ]

Clusula SELECT La clusula SELECT lista los datos a recuperar. Los elementos o datos a seleccionar pueden ser columnas de la base de datos o columnas a calcular por SQL cuando efecta la consulta o tambin el asterisco (* ) para recuperar todos los campos de una tabla. expresin_columna puede ser un simple nombre de campo (por ejemplo CLAVE). Expresiones ms complejas pueden incluir operaciones matemticas o de manipulacin de caracteres. Mas adelante se vern estas expresiones de forma ms amplia. Las expresiones de columnas deben ir separadas por comas si existen ms de una (por ejemplo CLAVE, DESCRIPCION, TIPO, ...). Los nombres de campos pueden ir precedidos por el nombre de la tabla o su alias. Por ejemplo ACTIVOS.CLAVE o A.CLAVE donde A es el alias para la tabla ACTIVOS. El operador DISTINCT, si se incluye, debe preceder la primera expresin de columna. Este operador elimina las filas o registros duplicados del resultado de la consulta. Por ejemplo la sentencia: SELECT DISTINCT FREGISTRO FROM ACTIVOS mostrar las distintas fechas de las altas de los activos. FUNCIONES DE AGRUPAMIENTO Las funciones de agrupamiento pueden ser tambin parte de una clusula SELECT. Devuelven un nico valor de un conjunto de registros. Pueden usarse con un nombre de campo (por ejemplo, AVG(PROY_COSTO) o en combinacin con una expresin de columna ms compleja (por ejemplo, AVG(PROY_COSTO* 1.07). La expresin de columna puede ir precedida por el operador DISTINCT. El operador DISTINCT eliminar los valores repetidos de una expresin de agrupamiento. Por ejemplo, SELECT COUNT(DISTINCT RESP_CLAVE) FROM ACTIVOS En este ejemplo, slo aparecern el n de los responsables que se encuentran en ACTIVOS Las funciones de agrupamiento permitidas son:

SUM Devuelve la suma total de los valores de una expresin de columna o campo numrica . Por ejemplo, SUM(COSTOS) devolver el total costos de los proyectos. AVG Devuelve la media de los valores de una expresin de columna. Por ejemplo, AVG(COSTOS) devolver la media de costos de los proyectos. COUNT Devuelve el nmero de valores en una expresin de columna. Por ejemplo, COUNT(AREA_CLAVE) devolver el nmero de registros con valores no nulos en ese campo. Un ejemplo especial es COUNT(*), que nos devuelve el nmero de registros incluyendo aquellos registros con valores nulos. MAX Devuelve el valor ms alto de los contenidos en una expresin de columna. Por ejemplo, MAX(FREGISTRO) devolver la fecha de registro mas lata que existe en el tabla ACTIVOS. MIN Devuelve el valor ms bajo de los contenidos en una expresin de columna. Por ejemplo, SELECT MIN(FREGISTRO) FROM ACTIVOS nos devolver la fecha de mas antigua. CLUSULA FROM La clusula FROM lista las tablas que contienen los datos a recuperar por la consulta. El formato de esta clusula es:

FROM nombre_tabla [alias_tabla] ...

nombre_tabla puede el nombre de una o mas tabla. alias_tabla es un nombre que se usa para referirse a la tabla en el resto de la sentencia SELECT para abreviar el nombre original y hacerlo ms manejable, en el caso de existir ms de una tabla en la consulta y, tambin para poder realizar consultas uniendo varias veces la misma tabla. Por ejemplo, SELECT CLAVE, DESCRIPCION FROM EQUIPOS E, ACTIVOS A WHERE E.ACTIVO_CLAVE = A.CLAVE AND E.MARCA='Alaska' es mucho ms prctico y sencillo que: SELECT CLAVE, DESCRIPCION FROM EQUIPOS, ACTIVOS WHERE EQUIPOS.ACTIVO_CLAVE = ACTIVOS.CLAVE AND EQUIPOS.MARCA='Alaska'

Las dos sentencias son idnticas y nos devolveran los clave y descripcion del activo cuya marca sea Alaska. El nombre de tablas junto al nombre de campo es obligatorio cuando existan campos con nombre idntico en las tablas que formen parte de la sentencia. As en el ejemplo anterior CLAVE y ACTIVO_CLAVE no lo necesitaran (aunque este puesto) pero si tuviera CLAVE la tabla EQUIPO si lo necesitaria porque en las dos tablas existe un campo con ese nombre. CLUSULA WHERE La clusula WHERE dice a SQL que incluya solo ciertas filas o registros de datos en los resultados de la consulta, es decir, que tienen que cumplir los registros que se desean ver. La clusula WHERE contiene condiciones en la forma: WHERE expresin1 operador expresion2 expresin1 y expresion2 pueden ser nombres de campos, valores constantes o expresiones. operador es un operador relacional que une dos expresiones. Ms tarde se vern los distintos operadores que se puede utilizar. Por ejemplo, la siguiente sentencia nos muestra el n de proyectos que terminaran con posterioridad a 1996. SELECT COUNT(*) FROM PROYECTOS WHERE YEAR(FTERMINO) > 1996 CLUSULA GROUP BY La clusula GROUP BY especifica 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 especifican 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.

SELECT RUBRO_CLAVE, COUNT(*) FROM ACTIVOS WHERE TIPO = 'Compra' GROUP BY RUBRO_CLAVE Esta sentencia nos devolver una fila por cada area RUBRO_CLAVE, y el numero de veces de cada uno. 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 especificar los grupos deseados. En otras palabras, especifica 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 deben coincidir con una expresin de columna en la clusula SELECT. operador es un operador relacional que une las dos expresiones. Ms tarde se vern los distintos operadores que se pueden utilizar. La sentencia siguiente nos mostrar el nmero de RUBRO_CLAVE, y el numero de los mismos en cada RUBRO_CLAVE cuyo numero supera el 1:

SELECT RUBRO_CLAVE, COUNT(*) FROM ACTIVOS WHERE TIPO = 'Compra' GROUP BY RUBRO_CLAVE HAVING RUBRO_CLAVE > 1

OPERADOR UNION El operador UNION combina el resultado de dos sentencias SELECT en un nico resultado. Este resultado se compone de todos los registros devueltos en ambas sentencias. Por defecto, los registros repetidos se omiten. Para no quitarlos se emplear la palabra ALL. Tiene la forma: SELECT sentencia UNION [ALL] SELECT sentencia Cuando se utilice el operador UNION, la lista de seleccin para cada sentencia SELECT debe tener el mismo nmero de expresiones de columnas con el mismo tipo de datos y en el mismo orden. Por ejemplo,

SELECT ACTIVO_CLAVE, TITULO FROM LIBROS UNION SELECT ACTIVO_CLAVE, NOMBRE FROM REVISTAS

Este ejemplo tiene el mismo n de columnas y cada columna en orden con el mismo tipo de datos. Nos devolver una lista nica de ACTIVOS_CLAVE, TITULO. CLUSULA ORDER BY La clusula ORDER BY ordena los resultados de la consulta en base a los datos de una o ms columnas. Si se omite, los resultados saldrn ordenados por el primer campo que sea clave en el ndice que se haya utilizado. Por tanto, indica como deben clasificarse los registros que se seleccionen. Tiene la forma: ORDER BY {expresin_orden [DESC | ASC], ... ] expresin_orden puede ser el nombre de un campo, expresin o el nmero de posicin que ocupa la expresin de columna en la clusula SELECT. Por defecto se ordenan ASCendentemente (de menor a mayor). Si se desear de mayor a menor se emplear DESC (DESCendente). Por ejemplo, para mostrar los proyectos ordenados de mayor a menor fecha de terminacion, se utilizara: SELECT CLAVE, NOMBRE FTERMINO FROM PROYECTOS ORDER BY FTERMINO DESC Para obtener un listado de los proyectos por su clave y nombre ordenado por rubros_clave y clave_lania : SELECT CLAVE, DESCRIPCION, CLAVE_LANIA, RUBRO_CLAVE FROM ACTIVOS ORDER BY RUBRO_CLAVE, CLAVE_LANIA ENLACE DE VARIAS TABLAS Los ejemplos visto hasta el momento solo extraen datos de una nica tabla y pocas cosas podramos hacer si no pudiramos interrel

Search related