<?xml version="1.0" encoding="ISO-8859-1"?><!-- generator="FeedCreator 1.7.2-ppt (info@mypapit.net)" --><rss version="2.0">    <channel>        <title>Analisis y Desarrollo de Sistemas de Informacion</title>        <description><![CDATA[Foro con el conocimeinto de un tecnologo en ADSI (Analisis y Desarrollo de Sistemas de Informacion)]]></description>        <link>http://adsi.blogcindario.com/</link>        <lastBuildDate>Sun, 31 May 2009 03:39:27 +0100</lastBuildDate>        <generator>FeedCreator 1.7.2-ppt (info@mypapit.net)</generator>        <item>            <title>SQL Consultas de Selección</title>            <link>http://adsi.blogcindario.com/2009/05/00001-sql-consultas-de-seleccion.html</link>            <description><![CDATA[<h2><span style="color: #0000ff;"><span style="font-size: x-large;"><span style="font-family: arial,helvetica,sans-serif;">Consultas de Selecci&oacute;n</span></span></span></h2><p style="text-align: justify;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Las consultas de selecci&oacute;n se utilizan para indicar al motor de datos quedevuelva informaci&oacute;n de las bases de datos, esta informaci&oacute;n es devuelta enforma de conjunto de registros que se pueden almacenar en un objeto recordset.Este conjunto de registros es modificable.</span></span></p><p style="text-align: justify;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"></span></span></p><h3><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Consultas B&aacute;sicas</span></span></span></h3><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">La sintaxis b&aacute;sica de una consulta de selecci&oacute;n es la siguiente:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT Campos FROM Tabla;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">En donde campos es la lista de campos que se deseen recuperar y tablaes el origen de los mismos, por ejemplo:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT Nombre, Telefono FROM Clientes;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Esta consulta devuelve un recordset con el campo nombre y tel&eacute;fono dela tabla clientes.</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"></span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"></span></span></p><h3><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Devolver Literales</span></span></span></h3><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">En determinadas ocasiones nos puede interesar incluir una columnacon un texto fijo en una consulta de selecci&oacute;n, por ejemplo, supongamosque tenemos una tabla de empleados y deseamos recuperar las tarifassemanales de los electricistas, podr&iacute;amos realizar la siguienteconsulta:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT<br />    Empleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40<br />FROM<br />    Empleados<br />WHERE<br />    Empleados.Cargo = 'Electricista'<br /></span></span></span></pre><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><a name="sql_consultas_ordenar"></a></span></span><h3><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><img alt="." src="http://www.programacion.com/graficos/item-lista.gif" /><span style="color: #0000ff;">&nbsp;Ordenar los Registros</span></span></span></h3><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Adicionalmente se puede especificar el orden en que se desean recuperarlos registros de las tablas mediante la cla&uacute;sula<span style="color: #ff0000;">ORDER BY Lista de Campos</span>. En donde<span style="color: #ff0000;">Lista de campos</span> representa los campos a ordenar.Ejemplo:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de latabla Clientes ordenados por el campo Nombre.</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Se pueden ordenar los registros por mas de un campo, como porejemplo:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY <br />CodigoPostal, Nombre;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Incluso se puede especificar el orden de los registros: ascendentemediante la cla&uacute;sula <span style="color: #ff0000;">ASC</span> (se toma este valor pordefecto) &oacute; descendente (<span style="color: #ff0000;">DESC</span>).</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY </span><br />CodigoPostal DESC , Nombre ASC;<br /><br /><br /><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></span></pre><h3><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">&nbsp;Uso de Indices de las tablas</span></span></span></h3><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Si deseamos que la sentencia SQL utilice un &iacute;ndice para mostrar los resultados se puede utilizar la palabra reservada <span style="color: #ff0000;">INDEX</span> de la siguiente forma:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT ... FROM Tabla (INDEX=Indice) ...<br /></span></span></span><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Normalmente los motores de las bases de datos deciden que indice sedebe utilizar para la consulta, para ello utilizan criterios derendimiento y sobre todo los campos de b&uacute;squeda especificados en lacl&aacute;usula WHERE. Si se desea forzar a no utilizar ning&uacute;n &iacute;ndiceutilizaremos la siguiente sintaxis:</span></span></p><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT ... FROM Tabla (INDEX=0) ...<br /><br /><br /><br /></span></span></span><h3><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Consultas con Predicado</span></span></span></h3><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">El predicado se incluye entre la cla&uacute;sula y el primer nombre del campo arecuperar, los posibles predicados son:</span></span></p><table align="center" border="0" cellpadding="2" cellspacing="3"><tbody><tr><th><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Predicado</span></span></span></th>  <th><span style="color: #0000ff;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Descripci&oacute;n</span></span></span></th></tr><tr><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">ALL</span></span></td><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Devuelve todos los campos de la tabla</span></span></td></tr><tr><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">TOP</span></span></td><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Devuelve un determinado n&uacute;mero de registros de la tabla</span></span></td></tr><tr><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">DISTINCT</span></span></td><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Omite los registros cuyos campos seleccionados coincidan totalmente</span></span></td></tr><tr><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">DISTINCTROW</span></span></td><td><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Omite los registros duplicados basandose en la totalidad del registro y no  s&oacute;lo en los campos seleccionados.</span></span></td></tr></tbody></table><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"></span></span><pre><span style="font-family: arial,helvetica,sans-serif;"><br /><br /><br /></span></pre><p><span style="color: #008000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><strong>ALL</strong></span></span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Si no se incluye ninguno de los predicados se asume ALL. El Motor debase de datos selecciona todos los registros que cumplen lascondiciones de la instrucci&oacute;n SQL. No se conveniente abusar de estepredicado ya que obligamos al motor de la base de datos a analizar laestructura de la tabla para averiguar los campos que contiene, es muchom&aacute;s r&aacute;pido indicar el listado de campos deseados. </span></span></p><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT ALL FROM Empleados; <br />SELECT * FROM Empleados;<br /><br /><br /><br /></span></span></span><p><span style="color: #008000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><strong>TOP</strong></span></span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Devuelve un cierto n&uacute;mero de registros que entran entre al principio o alfinal de un rango especificado por una cl&aacute;usula<span style="color: #ff0000;">ORDER BY</span>. Supongamos quequeremos recuperar los nombres de los 25 primeros estudiantes del curso1994:</span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">Si no se incluye la cl&aacute;usula <span style="color: #ff0000;">ORDER BY</span>, laconsulta devolver&aacute; un conjunto arbitrario de 25 registros de la tablaEstudiantes. El predicado TOPPERCENT para devolver un ciertoporcentaje de registros que caen al principio o al final de un rangoespecificado por la cl&aacute;usula ORDER BY.Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 porciento del curso:</span> no elige entrevalores iguales. En el ejemplo anterior, si la nota media n&uacute;mero 25 y la 26 soniguales, la consulta devolver&aacute; 26 registros. Se puede utilizar la palabrareservada </span><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><span style="color: #ff0000;">PERCENT</span> para devolver un ciertoporcentaje de registros que caen al principio o al final de un rangoespecificado por la cl&aacute;usula <span style="color: #ff0000;">ORDER BY</span>.Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 porciento del curso:</span> </span></p><p><span style="font-size: large;"><br /></span></p><pre><span style="color: #ff0000;"><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes <br />ORDER BY Nota DESC;<br /></span></span></span></pre><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;">El valor que va a continuaci&oacute;n de <span style="color: #ff0000;">TOP</span> debeser un Integer sin signo. <span style="color: #ff0000;">TOP</span> no afecta a laposible actualizaci&oacute;n de la consulta.</span></span></p><pre></pre><p><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: large;"></span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"></span></span></p><p><span style="font-size: large;"><span style="font-family: arial,helvetica,sans-serif;"><br /></span></span></p>]]></description>            <pubDate>Sat, 30 May 2009 21:27:16 +0100</pubDate>        </item>    </channel></rss>