Seguridad en redes Wifi y PC públicos

1 de julio de 2010


Proteger nuestros datos en ordenadores públicos
Es muy normal en los tiempos que corren, encontrar redes Wifi gratis y ordenadores públicos situados en ciber, bibliotecas, restaurantes, etc. Estos servicios muestran el avance social que existe con respecto al uso de Internet, pero como ya sabemos, la seguridad de nuestros datos al utilizar redes Wifi públicas (redes privadas virtuales, etc.) u ordenadores públicos, se puede ver comprometida con más facilidad de lo que creemos.
Por ello, hay que tener ciertas precauciones siempre que hagamos uso de nuestros datos y contraseñas en lugares públicos, porque nunca se sabe que sistemas o trampas existen detrás de estos servicios aparentemente inofensivos.
Así, vamos a ver una serie de precauciones que debemos de tener para aumentar la seguridad de nuestros datos.
Datos bancarios
Es importante no dejar huellas personales en un ordenador público o ajeno a nuestra propiedad, ya que el uso momentáneo de alguno de estos equipos, puede provocar el robo de dichos datos por troyanos.
Por tanto, si el equipo no pertenece a alguien de confianza, lo mejor es no efectuar transferencias bancarias online, escribir los dígitos de una tarjeta bancaria, etc.
Contraseñas
Al navegar por Internet en un ordenador público, es muy normal que revisemos el correo y que tengamos que introducir nuestro nombre de usuario y contraseña.
Generalmente, un cuadro de diálogo salta en la pantalla con la petición de recordar nuestros datos, y por desgracia, alguno de los que encontramos diariamente, vienen con la casilla de almacenamiento de datos activada, por lo que tendremos que estar pendientes en este punto, para desmarcar dicha acción.
Navegación privada
Otra de las precauciones que debemos tener cuando utilizamos un ordenador público, es que tras utilizar el equipo, el próximo usuario no pueda rastrear y acceder a nuestros datos con sólo un clic mediante el uso del historial y las cookies almacenadas.


La imagen ha sido redimensionada. Haga click en esta barra para ver la imagen completa en 1236x784px.
Para evitar esto, la mayoría de los navegadores ofrecen el método de navegación privada. Este método evita que tras cerrar el navegador, dejemos datos o historial posible que pueda ser consultado por otra persona.
Aún así, lo ideal es llevar un pendrive con un navegador portable propio, así evitaremos introducir datos en el navegador del PC público.
Seguridad en redes Wifi públicas
Como todos sabemos, la seguridad de las redes Wifi está más que cuestionada, pero si nos referimos a redes Wifi gratuitas o públicas, la cosa empeora aún más.
Así, existen también una serie de medidas o precauciones que debemos tener en cuenta cuando vamos a utilizar un red Wifi pública.
Firewall
Al utilizar una red Wifi pública, es imprescindible que tengamos instalado un firewall potente y efectivo, con el objetivo de impedir que otros usuarios que se encuentren conectados a la misma red, puedan acceder a nuestras carpetas o equipo.

Encriptación
Por desgracia, la mayoría de los hackers que operan en redes públicas, consiguen saltarse hasta los firewall más potentes, así que como medida extra y sobre todo para personas que suelan utilizar este tipo de redes normalmente, es conveniente proteger mediante encriptación y contraseña aquellas carpetas que contengan documentos de valor o información personal.
Receptor Wifi
Aunque parezca obvio, algunas personas dejan conectado el receptor Wifi en redes Wifi públicas aún cuando no están navegando.
Este hábito, además de aumentar el consumo de batería de nuestro portátil o netbook, puede exponer dicho equipo a ataques hackers en situaciones que podríamos evitar.

Montar una imagen .iso en una usb¡!!!!

30 de junio de 2010

bueno lo primero es tener una Usb superior a 1 GB ==Mas que nada para que nuu utilizen muxos disco asi se un jueguito un programa o etc para ahorrar y contribuir con la naturalesa ==
(Dependiendo de el tamaño del juego)

lo primero es descargarse el ultra iso yo les pondre 1 link de el ultra iso portable y el instalable




Descarga UltraIso Para instalar incluye KEYGEN!!!!



Descarga UltraIso Portable




una vez que lo tenga ya descomprimido o instalado

le va a salir esto



ustedes buscaran su imagen iso o ngr o diferente ejemplo:



Despues de eso se tendran que ir aca y darle click a donde señalo == EN AUTO ARRANQUE Y GRABAR IMAGEN DE DISCO==



DESPUES LES VA A SLIR ESTO ==USTEDES LE PONDRAN LA RUTA DE LA USB EN MI CASO ES J: BUENO LE VAN A PONER COMO ESTA EN LA IMAGEN Y LE DAN EN GRABAR Y LISTO YA LO TIENEN SI DESPUES LOS DECIEN BORRAR LOS ARCHIVOS SOLO FORMATEN LA MEMORIA ES MUY SENCILLO (HASTA YO LO PUDE HACER )




ESPERO QUE LES AYA SERVIDO MI PUBLICAION Y NO SE OLVIDEN DE COMENTAR

Creacion , Programacion y Diseño de Paginas Web Desde cero





Capitulo 1 Publicar en Internet
Tratamos los temas más básicos que necesitas saber para publicar una página web, como los materiales necesarios, el lenguaje HTML, editores, elegir alojamiento, subir páginas a los servidores y mucho más.
Capitulo 2 Introducción al diseño web
Primeros pasos para aquellas personas que deseen crear su propia página web, desde el punto de vista del diseñador. Motivación a seguir, programas a utilizar, etc.

Capitulo 3 Manual de HTML

HTML es el lenguaje utilizado como base para crear las páginas web. Con este manual puedes aprender a utilizarlo con toda su potencia.
Capitulo 4 Ayudas técnicas
Las ayudas técnicas son pequeños reportajes de interés general muy útiles para conocer rápidamente diversos temas de interés.

Capitulo 5 Introducción a la promoción de webs

Una vez hemos construido una página web tenemos que hacer que esta sea conocida por todos los medios que estén a nuestro alcance, para atraer visitas a ella y, cuando menos, sentirnos orgullosos de que esta sea popular en la Red. Para conseguir esto tenemos que promocionarla adecuadamente, de manera que su dirección figure en el mayor número de sitios.
Capitulo 6 La imagen en Internet
Explica cómo debemos crear la imagen en Internet de las empresas, productos o servicios que deseamos vender. No vale clonar lo anterior; hace falta conjugar estrategia, contenido, diseño y tecnología.

Capitulo 7 Páginas dinámicas

Introducción al concepto de páginas dinámicas, lenguajes de lado cliente y servidor y otra serie de nociones básicas para lanzarse a la aventura de la programación en ASP o PHP. Este manual sirve de introducción a otros más avanzados.

Capitulo 8 Introducción a los lenguajes del web

Vamos a estudiar de manera global el mundo de la programación de páginas web. Para ello empezaremos estudiando rápidamente algunos conceptos básicos, que seguramente muchos ya sabremos, como el marco donde la web se desarrolla, qué es una página web, cómo se construye una página y el lenguaje HTML. Además veremos qué es una página estática y dinámica distinguiendo entre páginas dinámicas de cliente y servidor.

Capitulo 9 Programación en ASP

Principios básicos para la programación en ASP, el lenguaje del lado del servidor creado por Microsoft . Manual asequible para no programadores que sienta los fundamentos básicos de este lenguaje. Continuación lógica del manual de páginas dinámicas.
Capitulo 10 Programación en PHP
Principios básicos para la programación en PHP, el popular lenguaje del lado del servidor. Manual asequible para no programadores que sienta los fundamentos básicos de este lenguaje. Continuación lógica del manual de páginas dinámicas.
Capitulo 11 Programación en JavaScript
Descubre el lenguaje dinámico de lado cliente por excelencia. Aprende a crear páginas webs con vida propia con nuestro manual de Javascript.
Capitulo 12 Programación en Javascript II
En este manual explicamos todos los recursos con los que cuenta un programador de Javascript para crear todo tipo de efectos y aplicaciones.
Capitulo 13 Tutorial de Visual Basic Script
Manual del lenguaje de scripting de Microsoft para páginas web con el que podrás aprender a realizar efectos para el Internet Explorer. Explora las características del HTML Dinámico con el lenguaje del navegador más habitual.

Capitulo 14 CSS, hojas de estilos

Manual completo y práctico sobre hojas de estilo en cascada (CSS). Aprende a utilizar esta tecnología que te ayudará a crear páginas más atractivas y precisas. El curso contiene la descrición, uso, sintaxis, y lista de atributos para crear estilos.
Capitulo 15 Introducción a XML
Una breve intruducción al mundo XML que explica qué es este lenguaje y sus tecnologías relacionadas.

Capitulo 16 Tutorial de SQL

Aprende a utilizar el estándar utilizado para la consulta de bases de datos. Seleccionar, crear, modificar y borrar registros. Todo lo que necesitas para la creación de tus páginas dinámicas.
Apéndice I Qué es cada tecnología
Este apendice trata en cada uno de sus capítulos de introducir cada una de las tecnologías utilizadas en el desarrollo de páginas web.
Apéndice II Frontpage 2000 para principiantes
Un análisis en profundidad de Frontpage y la respuesta a las preguntas más habituales planteadas por los usuarios novatos de este programa.
Apendice III Instalación de IIS en Windows XP profesional
Descripción detallada del proceso de instalación y configuración de Internet Information Server en Windows XP profesional. Conceptos básicos necesarios para empezar la administración.


SQL Server 2000 Personal Edition Full



SQL Server 2000 es un potente motor de bases de datos de alto rendimiento capaz de soportar millones de registros por tabla con un interface intuitivo y con herramientas de desarrollo integradas como Visual Studio 6.0 o .NET, además incorpora un modelo de objetos totalmente programable (SQL-DMO) con el que podemos desarrollar cualquier aplicación que manipule componentes de SQL Server, es decir, hacer aplicación para crear bases de datos, tablas, DTS, backups, etc., todo lo que se puede hacer desde el administrador del SQL Server y podemos hacerlo no solo en Visual C++ sino también en Visual Basic, ASP y por supuesto en .NET.



7 consejos básicos de mantenimiento preventivo para tu PC

¿Por qué falla un PC? ¿Puedo evitar mandar a reparar PC a un técnico? el siguiente artículo te enseñará cómo darle mantenimiento preventivo a tu PC en siete sencillos pasos.

Así como nosotros debemos hacer ejercicios frecuentemente y tener una dieta balanceada para sentirnos bien y prevenir malestares, nuestros queridos y a veces maltratados equipos de cómputo (PC’s, ordenadores, computadoras o como los llamemos) necesitan ser tratados con ciertas rutinas que les garanticen un funcionamiento óptimo por un tiempo más prolongado, es decir, necesitan un mantenimiento preventivo.
Debemos tener siempre en cuenta que el calor y el polvo favorecen el desgaste de los circuitos ya que los exponen a condiciones de trabajo difíciles, por ello hay que conservarlos ventilados, frescos y protegidos de los cambios bruscos de voltaje.
Hay que tener en cuenta además que existen dentro de una computadora piezas electromecánicas que se desgastan con el uso y el tiempo: los cabezales de lecturas, los dicos duros, los coolers o ventiladores, por ejemplo.

El mantenimiento preventivo, en siete pasos

Puede definirse como el conjunto de acciones y tareas periódicas que se realizan a un ordenador para ayudar a optimizar su funcionamiento y prevenir (como dice su nombre) fallos serios, prolongando así su vida útil. Estas acciones y tareas periódicas pueden sintetizarse en una serie de siete pasos.

Limpieza interna del PC:

Esta tarea busca retirar el polvo que se adhiere a las piezas y al interior en general de nuestro PC. Ante todo debe desconectarse los cables externos que alimentan de electricidad y proveen energía a nuestra PC y de los demás componentes periféricos.

Para esta limpieza puede usarse algún aparato soplador o una pequeña aspiradora especial acompañada de un pincel pequeño. Poner especial énfasis en las cercanías al Microprocesador y a la Fuente.

Revisar los conectores internos del PC:

Asegurándonos que estén firmes y no flojos. Revisar además que las tarjetas de expansión y los módulos de memoria estén bien conectados.

Limpieza del monitor del PC:

Se recomienda destapar el monitor del PC solo en caso que se vaya a reparar pues luego de apagado almacena mucha energía que podría ser peligrosa, si no es el caso, solo soplar aire al interior por las rejillas y limpiar la pantalla y el filtro de la pantalla con un paño seco que no deje residuos ni pelusas.

Atender al mouse:

Debajo del mouse o ratón hay una tapa que puede abrirse simplemente girándola en el sentido indicado en la misma tapa. Limpiar la bolita que se encuentre dentro con un paño que no deje pelusas así como los ejes y evitar que haya algún tipo de partículas adheridas a ellos.
Si es un mouse óptico, mantener siempre limpio el pad (o almohadilla donde se usa el mouse; esto es valido para cualquier tipo de mouse) y evitar que existan partículas que obstruyan el lente.

La disquetera:

Existen unos diskettes especiales diseñados para limpiar el cabezal de las unidades de diskette. Antes de usarlos, soplar aire por la bandeja de entrada (donde se ingresan los diskettes).

Los CD-ROM, DVD, CD-RW:

Al contar todos ellos con un dispositivo láser no se recomienda abrirlos si no se está capacitado para hacerlo. Existen unos discos especialmente diseñados para limpiar los lentes de este tipo de unidades.

La superficie exterior del PC y sus periféricos:

Es recomendable para esta tarea una tela humedecida en jabón líquido o una sustancia especial que no contengan disolventes o alcohol por su acción abrasiva, luego de ello usar nuevamente un paño seco que no deje pelusas.
El tema del software que tiene instalado nuestro PC y que también requiere mantenimiento es algo que comentaremos aparte por la amplitud del tema.
Espero que esta información te haya sido útil.
Este artículo fue publicado originalmente en reparar-pc.blogspot.com por Roger López.

Tips para mantener tu Pc limpia

Debido a la alta demanda de problemas informaticos y computacionales en general abro este tema donde no estaran todas la respuestas a sus problemas pero si muchos consejos segun mi experiencia y varias busquedas en internet he realizado para todos ustedes...


Ahora bien mi guia informatica:
Mis mejores consejos para tener una computadora más limpia y más rápida.

La suciedad y el polvo pueden dañar su equipo y afectar el desempeño.


Si el interior de su PC está sucio, el sistema podría funcionar lentamente. Por q.?? Bueno el sucio atraido por los fancoolers, ventiladores, esas cositas de plastico q dan vueltas.. se deposita en los disipadores, obstruyendo el paso del aire fresco y evitando la debida refrigeracion del procesador. He aquí como ponerlo en forma.

El problema: Al final del día, mi PC se recalienta (el monitor de la tarjeta madre
emite un sonido electrónico), aunque la temperatura en la oficina esté fresca.

La(s) solucion(es): Estoy casi seguro de que el case, cajon, la caja donde esta metida la PC.. de su computadora está lleno de polvo y otra mugre. Si usted tiene una mascota, el sistema posiblemente también está lleno de pelos. También me atrevo a asegurar que la PC se encuentra sobre el piso, debajo de su escritorio, donde actúa como un imán para el polvo. He aquí lo que tiene que hacer:

Antes de abrir la cubierta, desenchufe todos los cables, o sea, los de alimentación eléctrica, de la línea telefónica, del módem para el cable y de ethernet. Toque la fuente de alimentación después de abrir la caja, para disipar cualquier carga estática y para asegurarse de que usted y el interior de la PC se encuentran al mismo voltaje (repita este proceso cada vez que toque las partes internas de la PC).

Comience por quitar los filtros de espuma de goma, si su PC los tiene, en los respiraderos de ventilación. Limpie delicadamente los filtros con una solución de jabón líquido y agua fresca y déjelos secar antes de reemplazarlos (mejor aun: compre un filtro de espuma de goma para aire acondicionado, córtelo al tamaño adecuado y reemplace todos los filtros).

Quite las motas grandes de polvo pasando una aspiradora a los respiraderos desde el exterior de la cubierta. Sin embargo, tenga cuidado al aspirar en el chasis. Trate de no tocar la tarjeta madre ni las tarjetas adicionales. A lo sumo, aspire el polvo acumulado en la base de la torre y en el fondo de los compartimientos de disco vacíos. Y nunca pase brochas o cepillos por encima de los componentes.

Alternativamente, si el tiempo no está húmedo ni demasiado frío y puede sacar la PC al exterior, tome una lata de aire comprimido, venden una con manguera de unos 30 centímetros de largo; también puede comprar tubos de goma en una tienda (yo poseo un soplador profesional pero eso es porq yo soy un profesional ). La manguera es perfecta para limpiar el polvo en toda la caja.
También le permite mantener la lata de aire en posición vertical; rociar con la lata inclinada produce una ráfaga de propulsor líquido helado y ese cambio de temperatura puede dañar los componentes.

Quizás se sienta tentado a limpiar las aspas del ventilador de la CPUs haciéndolas girar con una ráfaga de aire. No lo haga . El ventilador no puede soportar las altas revoluciones. Lo sé porque eché a perder uno de esa manera. La mejor opción es mantener inmóvil el ventilador y luego soplarlo con el aire. A continuación, use un hisopo de algodón con una ligera solución de alcohol para terminar de limpiar las aspas. Aun más importante que limpiar el ventilador es soplar cuidadosamente el polvo que se esconde entre las láminas del disipador de calor. Ponga la boquilla entre las aspas del ventilador y a lo largo de los costados abiertos del disipador de calor y sople hasta que no salga más polvo. No use un compresor de aire (como los que se emplean para llenar las llantas en una gasolinera), pues muchas veces el aire tiene una mezcla de petróleo y agua.

Ponga su PC sobre ruedas. Levante su computadora del piso, aunque sean unos 15 centímetros, para reducir la cantidad de polvo que se acumula en los respiraderos. Puedes utilizar una pequeña carretilla para muebles, disponibles en las tiendas de electrodomésticos y en ferreterías.

Aplicaciones para vigilar el exceso de calor en su PC.

El recalentamiento es una señal clara de que su PC está sucia. A menos que tenga una herramienta que vigile su CPU, no tendrá idea de que el sistema está a punto de quemarse. Para esto hay un par de programas que me gustan. Si uno no trabaja, pruebe el otro. SpeedFan vigila los datos recopilados por el sistema: la temperatura y el nivel de rpm del ventilador. Esta herramienta gratuita muestra la información en la bandeja del sistema y puede hacer sonar un alarma o enviar una advertencia por correo electrónico a usted u otra persona. El Everest también ofrece una estación q controla las diferentes temperaturas (procesador, TM, DD)


Mantener el computador en buen estado.

Para prolongar la duración de los componentes de una computadora, evitar la pérdida de información o que el sistema corra más lento de lo normal, es importante tomar en consideración los siguientes consejos:

Disco duro y CPU.

Debido a que el calor es lo que más afecta al disco duro, la vida de éste se puede prolongar si el ambiente de trabajo no es excesivamente caluroso y el interior de la caja de la computadora se encuentra ventilado de forma adecuada.

De igual manera, para mantener la velocidad en el equipo, se sugiere realizar una vez al mes el proceso de desfragmentación para conservar en óptimo estado la respuesta del equipo; Windows incluye un desfragmentador de disco fácilmente localizable en el menú Inicio/Todos los programas/Accesorios/Herramientas del Sistema/Desfragmentador de disco. O&O desfrag es mi recomendación personal mucho mas rápido y fácil de utilizar.

También, es conveniente verificar que el equipo no consuma más del 90 por ciento de la capacidad total del disco duro ya que, en caso contrario, el rendimiento de la computadora será forzado y el sistema trabajará con lentitud; un mito conocido es el de desfragmentar el disco duro dos veces por semana o darle formato cuatro veces en un solo mes, pueden acortar la vida del disco duro. ES FALSO tengo DD q los he formateado hasta 20 veces en una semana y no le pasa nada eso era con los DD antiguos q eran muy fragiles. Actualmente son muy resistentes y duraderos.


Falta de espacio en disco duro.

Si aparece el mensaje de error ‘falta de espacio en el disco’, existen varias formas de ganar espacio de almacenamiento.

Cambiar el disco duro actual por otro de mayor capacidad.

Añadir un segundo disco duro esclavo o, bien, adquirir un disco externo con conexión USB.

Limpieza.

Aunque resulta conveniente proteger la computadora del polvo, se recomienda adquirir alguna funda para el Case, monitor, teclado y escáner para evitar que entre el polvo a los componentes más sensibles y cause daño cuando este APAGADA.!! ni se les ocurra ponerles fundas con el PC encendido ; aunado a lo anterior, no se debe olvidar que la limpieza es necesaria, para ello se pueden emplear aire comprimido, espumas y una pequeña franela.

CD-ROM

Antes de usar cualquiera de estos componentes, se debe verificar que el CD-ROM/DVD o CDRW del equipo se encuentren limpios, de igual forma, cada CD o DVD que se utilicen deben encontrarse libres de polvo y partículas para forzar menos al láser y prolongar su duración.

Para mantener en óptimo estado estos accesorios, se recomienda emplear un limpiador de forma mensual, sobre todo si a la computadora le entra mucho polvo por su ubicación.

Teclado.


Para eliminar el polvo del teclado, lo más conveniente es voltearlo y soplar el aire comprimido para que éste salga completamente. Se debe evitar en lo posible quitar las tapas de las teclas de la PC para lavarlas, ya que su reposición puede generar fallas mecánicas.

Ratón. (Mouse)

El mouse percibe los movimientos a través de una esfera de caucho, la cual mueve dos rodillos; por lo general, en éstos se acumula suciedad con el uso, impidiendo el correcto funcionamiento, para limpiarlos se debe quitar con cuidado la tapa para liberar la esfera y usar un hisopo para limpiar los rodillos. Antes de realizar cualquier movimiento, se sugiere observar cómo están colocados, por si ocurre algún accidente, no haya ningún problema para colocarlos nuevamente.

Fuente de poder, regulador de voltaje y UPS.


La fuente de poder es un accesorio sumamente importante en cualquier equipo de cómputo este proporciona energia a los componenetes del PC, se miden en watts q es el consumo de energia q puede tener el equipo computador, por ejemplo, si tienes 3 DD, 4 Unidades lectoras, 5 fancoolers, luces de neon, Tarjeta de video, sonido, etc, todos estos componentes consumen mucha energia, y con una fuente de poder con 400 watts quizas no sea suficiente para suministrar suficiente energia a todos los componentes. Por lo q seria conveniente colocarle una mayor a 600w y de una marca reconocida, ecuerda q esta es la vida de tu PC, la sangre q hace se mueva correctamente todo, y de obviarse podria ocasionar graves daños en tu PC.

A su vez, el regulador de voltaje, sensible a cualquier cambio de este tipo, ofrece protección y evita que las variaciones de voltaje pasen a la computadora y dañen algún dispositivo.

Un Ups (Unit Power Supply o unidad suplidora de poder) es mi recomendación personal debido a que almacena energia, en caso de que se vaya la luz, le permite salvar los documentos y apagar la computadora sin la pérdida de información.

Herramientas de optimización.


Desfragmentador. Se encarga de acomodar los archivos en direcciones de memoria contiguas, es decir, inicialmente empieza a escribir sobre su superficie de manera ordenada sin dejar espacio en sus celdas de memoria; sin embargo, cuando se borra un archivo o programa, se eliminan las celdas de memoria donde está contenida esa información, por lo que ésta no se reacomoda y surgen huecos de memoria que no son utilizados.

El desfragmentador lo que hace es reacomodar la información almacenada en disco duro, liberando espacio. Para ubicarlo, hay que dirigirse al menú Inicio/Todos los programas/Accesorios/Herramientas del Sistema/Desfragmentador de disco. Haciendo la lectura mas rapida y efectiva y por consiguiente tu computador es mas rapido.. simple no.?

Scandisk. Revisa la estructura de archivos, directorios y la superficie del disco que se le indique. Si existe algún daño, ofrece la opción de poderlo eliminar o reparar; para acceder a esta utilería dirigirse al menú Inicio/Todos los programas/Accesorios/Herramientas del Sistema/Scandisk.


Mi recomendacion personal es el Tune Up Utilities 2007 posee multiples plataformas y estaciones para optimizar el rendimiento de tu PC, en los q destaca el Mantenimiento de un solo click que elimina archivos temporales, analiza y repara el registro de windows y busca aplicaciones viejas q no hagan falta para liberar espacio y optimizar el sistema

Archivos temporales.

Los archivos temporales son aquéllos que no tienen mucha importancia para el sistema, ni para el usuario; normalmente se generan al instalar un programa, o cuando se escribe o trabaja un archivo de trabajo en cualquier programa, éstos se ubican en Inicio/Todos los programas/Accesorios/Herramientas del Sistema/Liberador de espacio. Mi recomendacion: CCleaner elimina archivos temporales de instalaciones viejas, archivos antiguos de aplicacion, temporales de internet, cookies, en fin todo lo q no haga falta en tu PC lo elimina...

¿Qué es un virus y cómo puedo evitarlo?

Un virus es un programa que se instala en la computadora sin que el usuario se percate, con la finalidad de alterar o destruir la función de otros programas, ocasionar la pérdida total de la información del disco duro o alentar el funcionamiento del sistema.

Para evitarlos es importante instalar un programa antivirus y actualizarlo con frecuencia; asimismo, no se debe abrir un disquete o CD sin haberlo revisado previamente con el programa antivirus para detectar cualquier posible virus, y cuando se esté navegando en la red, se debe evitar descargar archivos del correo electrónico con información desconocida.

Los siguientes son algunos antivirus que se recomiendan, éstas son versiones de evaluación, es decir, le permiten instalarlo pero después será necesario comprarlo o adquirirlo. Por razones legales obvias no se pueden postear Software con seriales, keygen. ni otro metodo pirata.

Mis recomendados:

NOD32
www.nod32-es.com/download/trial.htm

Kaspersky
http://www.kaspersky.com/sp/trials?K_Downloads

AVG
http://www.avg-antivirus.es/...gas/trial.php

Norton antivirus
http://nct.symantecstore.com/fulfill/0001.105

Mcafee
http://download.mcafee.com/eval/evaluate2.asp?cid=9432

Panda antivirus
http://www.pandasoftware.es/descargas

F-prot antivirus
http://www.f-prot.com/download/home_user


Software.


Cuando un programa falla constantemente y no hay virus en la PC, una posible solución es desinstalarlo e instalarlo nuevamente.

La ubicación para desinstalar un programa: Inicio/MiPC/Panel de Control/Agregar o quitar programas. Se debe seleccionar el programa que se desea desinstalar y presionar en Aceptar o Eliminar.

Con frecuencia, al instalar una nueva versión de Office, la PC trabaja lentamente, esta situación se presenta porque a diferencia de la versión anterior se consumen más recursos, especialmente en la memoria RAM, que es la memoria utilizada cuando se está trabajando.

Para recuperar el rendimiento del equipo, se puede desactivar la opción del programa que se utiliza poco y ocupa muchos recursos.

Papelera de reciclaje.

Windows reserva un 10 por ciento de la capacidad del disco duro para mantener algo de la información que ya se haya eliminado, con la finalidad de que en cualquier momento se pueda recuperar.

No obstante, la papelera de reciclaje, ubicada en el Escritorio de la computadora, debe limpiarse con regularidad para no llenarse de basura que le estará quitando espacio en disco duro.

Se debe seleccionar el ícono y hacer clic derecho, posteriormente elegir la opción Explorar, podrá ver todos los archivos ubicados en su papelera y eliminar aquéllos que no necesite o, en su caso, vaciar la papelera de reciclaje.

Término de sesión o apagado.


En muchas ocasiones, por la prisa o mal uso de la computadora, no se cierran las aplicaciones correctamente o bien, no se apaga la computadora de forma adecuada, esto provoca pérdida de información y daña el sistema operativo. Tomate un tiempo para apaarla correctamente, no lo hagas presionando directamente el boton de encendido/apagado.! esto podria ocasionar una corrupcion en el Windows y fallar la proxima vez que inicies sesion. (te lo digo por experiencia )

Respaldos.

Es importante hacer un respaldo (en DVD, CD, DD externos) de la información para prevenir cualquier problema. y no perder tus documentos, si tu computador por obra y gracia del demonio no quiere encender o iniciar windows.

Evitar que el la PC se reinicie solo

Evitar que el ordenador se reinicie sólo…

Los reinicios del sistema automáticos son quizás una de las cosas que más irritaciones provocan en la mayoría de los usuarios. Actualizaciones, instaladores de programas o el mismísimo Windows se toman de vez en cuando la libertad de reiniciar el ordenador sin consentimiento, pero…¿cómo evitar que el ordenador se reinicie sólo?
Ver como los iconos van desapareciendo y las ventanas se cierran solas, es el síntoma de que algún componente ha decidido reiniciar el ordenador automáticamente, y para evitar que esto pase, existe un programa que actúa como guardián, es decir, su función es bloquear los reinicios automáticos o apagados del PC, impidiendo que éstos puedan afectar a aplicaciones activas en plena sesión de trabajo.
Para evitar que el ordenador se reinicie sólo, lo primero que haremos es descargar ShutdownGuard, un programa gratuito y traducido al español que nos quitará un gran peso de encima:


Hay veces en los que Windows se reinicia sin pedir permiso, por ejemplo tras la instalación automática de una actualización, lo que lleva a interrumpir cualquier tarea que estemos ejecutando. ShutdownGuard bloquea estos reinicios durante el tiempo que queramos. Eso incluye las ordenes de apagado o reinicio que iniciemos manualmente u otras que no provengan de nosotros.
El candado de ShutdownGuard permanece cerrado hasta que hagamos clic en el icono situado en la bandeja de sistema, y una vez abierto, el reinicio o apagado seguirá su curso.
Para utilizar ShutdownGuard necesitas:
Sistema Operativo Windows XP/Vista
ShutdownGuard se mantiene en la barra de tareas con un pequeño icono en forma de candado. Se trata de un programa totalmente discreto y con un consumo casi inexistente, el cual podremos activar con sólo un clic de ratón sobre el icono.
ordenador reinicia solo 1
Una vez que tenemos activado ShutDownGuard, el programa interceptará cualquier intento de reinicio automático del ordenador, tomando así elordenador reinicia solo 2 control de la sesión sobre cualquier aplicación que intente interrumpir nuestra sesión de trabajo de forma autónoma.
Cuando ShutDownGuard detecta y bloquea el reinicio del ordenador, nos informa con una nota informativa sobre cualquier intento no autorizado, con lo que iremos al icono y abriremos el programa con doble clic.
Como veréis, ShutDownGuard nos dará la posibilidad de escoger entre 4 acciones a tomar:
Cerrar Sesión, Apagar ordenador, Reiniciar Ordenador y Nada, que viene a ser la anulación de cualquier intento de reinicio automático.
ordenador reinicia solo 3
Pocos programas ofrecen el control contra reinicios automáticos que tendremos con ShutDownGuard, y lo más importante de todo, es que evitaremos perder datos por ejemplo, cuando estamos escribiendo en Word o cualquier otro procesador de datos.

Comandos telnet

29 de junio de 2010

Comandos Telnet

Los comandos Telnet permiten establecer comunicación con un equipo remoto que utiliza el protocolo Telnet. Puede ejecutar Telnet sin parámetros para entrar en el contexto de Telnet, que viene indicado por el símbolo del sistema de Telnet (Microsoft Telnet>). En el símbolo del sistema de Telnet, utilice los comandos Telnet para administrar un equipo que ejecuta el cliente Telnet.
El símbolo del sistema del Cliente Telnet acepta los comandos siguientes:

 

ComandoDescripción
openUtilice opennombreDeHost para establecer una conexión Telnet con un host.
closeUtilice el comando close para cerrar una conexión Telnet existente.
displayUtilice el comando display para ver la configuración actual del cliente Telnet.
sendUtilice el comando send para enviar comandos al servidor Telnet. Se admiten los comandos siguientes:
ao
Comando anular salida.
ayt
Comando "Are you there" (¿Estás ahí?).
esc
Envía el carácter de escape actual.
ip
Comando interrumpir proceso.
synch
Realiza la operación de sincronización de Telnet.
brk
Envía una señal de interrupción.
Los comandos no incluidos en la lista anterior se envían como una cadena al servidor Telnet. Por ejemplo, sendabcd enviará la cadena abcd al servidor Telnet, que repetirá la cadena en la ventana de sesión de Telnet.
quitUtilice el comando quit para cerrar el cliente Telnet.
setUtilice el comando set con uno de los argumentos siguientes para configurar la sesión actual del cliente Telnet.
bsasdel
RETROCESO se enviará como supr.
codeset opción
Sólo está disponible si se ha establecido el idioma japonés. Establezca el conjunto actual de códigos en una opción, que puede ser una de las siguientes:
  • Shift JIS
  • Japanese EUC
  • JIS Kanji
  • JIS Kanji (78)
  • DEC Kanji
  • NEC Kanji
Debe establecerse el mismo conjunto de códigos en el equipo remoto. De forma predeterminada, el cliente Telnet utiliza una fuente de mapa de bits. Antes de tener acceso a un equipo remoto mediante uno de estos conjuntos de códigos, debe configurar el cliente Telnet para utilizar una fuente TrueType a fin de garantizar que los caracteres se muestren correctamente.
crlf
Modo de línea nueva, que hace que la tecla ENTRAR envíe 0x0D, 0x0A.
delasbs
Supr. se enviará como RETROCESO.
escapecarácter
Cambia del modo sesión al modo comando de Telnet. En el modo comando de Telnet, presione ENTRAR para volver al modo sesión de Telnet.
localecho
Activa el eco local.
logfilenombre
Especifica el nombre del archivo en el que se escribirá el registro de Telnet durante la sesión actual. Si no especifica la ruta de acceso del archivo, éste se creará en el directorio actual. Al especificar un archivo de registro también se activa el registro.
logging
Activa el registro durante la sesión actual.
mode {console | stream}
El modo de funcionamiento.
ntlm
Activa la autenticación NTLM.
term {ansi | vt100 | vt52 | vtnt}
El tipo de terminal que el cliente Telnet debe emular.
?
Muestra la información de Ayuda del comando set.
unsetUtilice unset para desactivar una opción establecida previamente mediante el comando set.
statusUtilice el comando status para determinar si el equipo que ejecuta el cliente Telnet está conectado.
?/helpMuestra la información de Ayuda.

Creacion de bases de datos


Una base de datos en un sistema relacional está compuesta por un conjunto de tablas, que corresponden a las relaciones del modelo relacional. En la terminología usada en SQL no se alude a las relaciones, del mismo modo que no se usa el término atributo, pero sí la palabra columna, y no se habla de tupla, sino de línea. A continuación se usarán indistintamente ambas terminologías, por lo que tabla estará en lugar de relación, columna en el de atributo y línea en el de tupla, y viceversa.
Prácticamente, la creación de la base de datos consiste en la creación de las tablas que la componen. En realidad, antes de poder proceder a la creación de las tablas, normalmente hay que crear la base de datos, lo que a menudo significa definir un espacio de nombres separado para cada conjunto de tablas. De esta manera, para una DBMS se pueden gestionar diferentes bases de datos independientes al mismo tiempo sin que se den conflictos con los nombres que se usan en cada una de ellas. El sistema previsto por el estándar para crear los espacios separados de nombres consiste en usar las instrucciones SQL "CREATE SCHEMA". A menudo, dicho sistema no se usa (o por lo menos no con los fines y el significado previstos por el estándar), pero cada DBMS prevé un procedimiento propietario para crear una base de datos. Normalmente, se amplía el lenguaje SQL introduciendo una instrucción no prevista en el estándar: "CREATE DATABASE".
La sintaxis empleada por PostgreSQL, pero también por las DBMS más difundidas, es la siguiente:

CREATE DATABASE nombre_base de datos

Con PostgreSQL está a disposición una orden invocable por shell Unix (o por shell del sistema usado), que ejecuta la misma operación:

createdb nombre_base de datos

Para crear nuestra base de datos bibliográfica, usaremos pues la orden:

createdb biblio

Una vez creada la base de datos, se pueden crear las tablas que la componen. La instrucción SQL propuesta para este fin es:

CREATE TABLE nombre_tabla (
nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ]
[ , nombre_columna tipo_columna [ cláusula_defecto ] [ vínculos_de_columna ] ... ]
[ , [ vínculo_de tabla] ... ] )


nombre_columna: es el nombre de la columna que compone la tabla. Sería mejor no exagerar con la longitud de los identificadores de columna, puesto que SQL Entry Level prevé nombres con no más de 18 caracteres. Consúltese, de todos modos, la documentación de la base de datos específica. Los nombres tienen que comenzar con un carácter alfabético.

tipo_columna: es la indicación del tipo de dato que la columna podrá contener. Los principales tipos previstos por el estándar SQL son:


  • CHARACTER(n)
    Una cadena de longitud fija con exactamente n caracteres. CHARACTER se puede abreviar con CHAR

  • CHARACTER VARYING(n)
    Una cadena de longitud variable con un máximo de n caracteres. CHARACTER VARYING se puede abreviar con VARCHAR o CHAR VARYING.

  • INTEGER
    Un número estero con signo. Se puede abreviar con INT. La precisión, es decir el tamaño del número entero que se puede memorizar en una columna de este tipo, depende de la implementación de la DBMS en cuestión.

  • SMALLINT
    Un número entero con signo y una precisión que no sea superior a INTEGER.

  • FLOAT(p)
    Un número con coma móvil y una precisión p. El valor máximo de p depende de la implementación de la DBMS. Se puede usar FLOAT sin indicar la precisión, empleando, por tanto, la precisión por defecto, también ésta dependiente de la implementación. REAL y DOUBLE PRECISION son sinónimo para un FLOAT con precisión concreta. También en este caso, las precisiones dependen de la implementación, siempre que la precisión del primero no sea superior a la del segundo.

  • DECIMAL(p,q)
    Un número con coma fija de por lo menos p cifras y signo, con q cifras después de la coma. DEC es la abreviatura de DECIMAL. DECIMAL(p) es una abreviatura de DECIMAL(p,0). El valor máximo de p depende de la implementación.

  • INTERVAL
    Un periodo de tiempo (años, meses, días, horas, minutos, segundos y fracciones de segundo).

  • DATE, TIME y TIMESTAMP
    Un instante temporal preciso. DATE permite indicar el año, el mes y el día. Con TIME se pueden especificar la hora, los minutos y los segundos. TIMESTAMP es la combinación de los dos anteriores. Los segundos son un número con coma, lo que permite especificar también fracciones de segundo.

cláusula_defecto: indica el valor de defecto que tomará la columna si no se le asigna uno explícitamente en el momento en que se crea la línea. La sintaxis que hay que usar es la siguiente:

DEFAULT { valor | NULL }

donde valor es un valor válido para el tipo con el que la columna se ha definido.

vínculos_de_columna: son vínculos de integridad que se aplican a cada atributo concreto. Son:

  • NOT NULL, que indica que la columna no puede tomar el valor NULL.
  • PRIMARY KEY, que indica que la columna es la llave primaria de la tabla.
  • una definición de referencia con la que se indica que la columna es una llave externa hacia la tabla y los campos indicados en la definición. La sintaxis es la siguiente:

    REFERENCES nombre_tabla [ ( columna1 [ , columna2 ... ] ) ]
    [ ON DELETE { CASCADE | SET DEFAULT | SET NULL } ]
    [ ON UPDATE { CASCADE | SET DEFAULT | SET NULL } ]


    Las cláusulas ON DELETE y ON UPDATE indican qué acción hay que ejecutar en el caso en que una tupla en la tabla referenciada sea eliminada o actualizada. De hecho, en dichos casos en la columna referenciante (que es la que se está definiendo) podría haber valores inconsistentes. Las acciones pueden ser:

    • CASCADE: eliminar la tupla que contiene la columna referenciante (en el caso de ON DELETE) o también actualizar la columna referenciante (en el caso de ON UPDATE).
    • SET DEFAULT: asignar a la columna referenziante su valor de defecto.
    • SET NULL: asignar a la columna referenciante el valor NULL.

  • un control de valor, con el que se permite o no asignar un valor a la columna en función del resultado de una expresión. La sintaxis que se usa es:

    CHECK (expresión_condicional)

    donde expresión_condicional es una expresión que ofrece verdadero o falso.
    Por ejemplo, si estamos definiendo la columna COLUMNA1, con el siguiente control:

    CHECK ( COLUMNA1 < 1000 )

    en dicha columna se podrán incluir sólo valores inferiores a 1000.

vínculo_de_tabla: son vínculos de integridad que se pueden referir a más columnas de la tabla. Son:

  • la definición de la llave primaria:

    PRIMARY KEY ( columna1 [ , columna2 ... ] ) Véase que en este caso, a diferencia de la definición de la llave primaria como vínculo de columna, ésta se puede formar con mas de un atributo.

  • las definiciones de las llaves externas:

    FOREIGN KEY ( columna1 [ , columna2 ... ] ) definiciones_de_referencia

    La definición_de_referencia tiene la misma sintaxis y significado que la que puede aparecer como vínculo de columna.

  • un control de valor, con la misma sintaxis y significado que el que se puede usar como vínculo de columna.

Para aclarar mejor el uso de la instrucción CREATE TABLE, veamos algunas órdenes que implementan la base de datos bibliográfica ejemplificada.

CREATE TABLE Publication (
ID INTEGER PRIMARY KEY,
type CHAR(18) NOT NULL
);


La instrucción anterior crea la tabla Publication, formada por las dos columna ID de tipo INTEGER, y type de tipo CHAR(18). ID es la llave primaria de la relación. En el atributo type hay un vínculo de no nulidad.

CREATE TABLE Book (
ID INTEGER PRIMARY KEY REFERENCES Publication(ID),
title VARCHAR(160) NOT NULL,
publisher INTEGER NOT NULL REFERENCES Publisher(ID),
volume VARCHAR(16),
series VARCHAR(160),
edition VARCHAR(16),
pub_month CHAR(3),
pub_year INTEGER NOT NULL,
note VARCHAR(255)
);


Crea la relación Book, formada por nueve atributos. La llave primaria es el atributo ID, que es también una llave externa hacia la relación Publication. Sobre los atributos title, publisher y pub_year hay vínculos de no nulidad. Además, el atributo publisher es una llave externa hacia la tabla Publisher.

CREATE TABLE Author (
publicationID INTEGER REFERENCES Publication(ID),
personID INTEGER REFERENCES Person(ID),
PRIMARY KEY (publicationID, personID)
);


Crea la relación Author, compuesta por dos atributos: publicationID y personID. La llave primaria en este caso está formada por la combinación de los dos atributos, como está indicado por el vínculo de tabla PRIMARY KEY. PublicationID es una llave externa hacia la relación Publication, mientras que personID lo es hacia la relación Person.

El archivo create_biblio.sql contiene todas las órdenes necesarias para crear la estructura de la base de datos bibliográfica ejemplificada.

NOTA SOBRE POSTGRESQL
En PotgreSQL, por lo menos hasta la versión 6.5.1, no se han implementado todavía los vínculos sobre las llaves externas. El parser acepta, de todos modos, las sintaxis SQL que le afectan, y por tanto los constructos FOREIGN KEY y REFERENCES no producen un error, sino sólo un warning.
Poblar la base de datos

Con la expresión "población de la base de datos" se entiende la actividad de inclusión de los datos dentro de ella. En una base de datos relacional esto corresponde a la creación de las líneas que componen las tablas que constituyen la base de datos. Normalmente, la memorización de una información concreta corresponde a la inclusión de una o más líneas en una o más tablas de la base de datos. Tómese, por ejemplo, la siguiente información bibliográfica:

M. Agosti, L. Benfante, M. Melucci. OFAHIR: "On-the-Fly" Automatic Authoring of Hypertexts for Information Retrieval. In S. Spaccapietra, F. Maryansky (Eds), Searching for Semantics: Data Mining, Reverse Engineering. Proc. of the 7th IFIP 2.6 Working Conference on Database Semantics (DS-7), Leysin, Switzerland, October 1997, 129-154.

Suponiendo que en la base de datos no esté ya presente ninguna de las informaciones que le afectan (como por ejemplo alguno de los autores o las actas del congreso al que se refiere), su inclusión en nuestra base de datos de ejemplo corresponde a la inclusión de las siguientes líneas:

  • cinco líneas en la tabla Person, que corresponden a cada uno de los autores y de los coordinadores;


  • una línea en la tabla Institution;


  • dos líneas en la tabla Publication: una para las actas del congreso y una para el artículo contenido en esas actas;


  • una línea en la tabla Proceedings;


  • una línea en la taba InProceedings;


  • tres líneas en la tabla Author, una para cada autor de la publicación.


  • dos líneas en la tabla Editor, una para cada coordinador de la publicación.

    El orden de las operaciones anteriores no es puramente casual; de hecho, la inserción de las líneas tiene que hacerse de modo que se respeten los vínculos impuestos en las tablas. Por ejemplo, dado que no podrá existir una llave externa sin que antes se haya incluido la línea a la que se refiere, antes de poder meter una línea en la tabla InProceedings se tendrá que haber puesto la línea correspondiente en la tabla Proceedings. En el caso en que un vínculo sea violado, la DBMS impedirá la operación de inclusión abortándola. Véase la lección anterior (Crear la base de datos) para la descripción de los vínculos que se les pueden imponer a una tabla y a sus columnas.

    La instrucción SQL que lleva a cabo la inclusión de una nueva línea en una tabla es INSERT. La sintaxis con la que ésta se usa comunmente es:

    INSERT INTO nombre_tabla [ ( lista_campos ) ]
    VALUES ( lista_valores )


    nombre_tabla es el nombre de la tabla en la que se tiene que incluir la nueva línea.

    lista_campos es la lista de los nombres de los campos a los que hay que asignar un valor, separados entre sí por una coma. Los campos no incluidos en la lista tomarán su valor por defecto o NULL si no lo tienen por defecto. Es un error no incluir en la lista un campo que no tenga un valor por defecto y que no pueda tomar el valor NULL. En el caso en que no se especifique la lista, habrá que especificar los valores de todos los campos de la tabla.

    lista_valores es la lista de los valores que se les darán a los campos de la tabla en el orden y número especificados por la lista_campos o en la de la definición de la tabla (si no se especifica lista_campos). Los valores pueden ser una expresión escalar del tipo apropiado para el campo o las keyword DEFAULT o NULL, si el campo prevé un valor por defecto o admite el valor NULL.

    El ejemplo anterior de inclusión se ejecuta a través de las siguientes instrucciones SQL:

    INSERT INTO Person VALUES ( 1, 'Agosti', 'Maristella' );
    INSERT INTO Person VALUES ( 2, 'Benfante', 'Lucio' );
    INSERT INTO Person VALUES ( 3, 'Melucci', 'Massimo' );
    INSERT INTO Person VALUES ( 4, 'Spaccapietra', 'S.' );
    INSERT INTO Person VALUES ( 5, 'Maryansky', 'F.' );

    INSERT INTO Institution ( ID, name, city, country )
    VALUES ( 1, '7th IFIP 2.6 Working Conference on Database Semantics (DS-7)',
    'Leysin', 'Switzerland' );

    INSERT INTO Publication VALUES ( 1, 'Proceedings' );
    INSERT INTO Publication VALUES ( 2, 'InProceedings' );

    INSERT INTO Proceedings ( ID, title, organization, pub_month, pub_year )
    VALUES ( 1, 'Searching for Semantics: Data Mining, Reverse Engineering',
    1, 'Oct', 1997 );

    INSERT INTO InProceedings ( ID, proceedingsID, title, pages )
    VALUES ( 2, 1,
    'OFAHIR: "On-the-Fly" Automatic Authoring of Hypertexts for Information Retrieval', '129-154' );

    INSERT INTO Author VALUES ( 2, 1 );
    INSERT INTO Author VALUES ( 2, 2 );
    INSERT INTO Author VALUES ( 2, 3 );

    INSERT INTO Editor VALUES ( 1, 4 );
    INSERT INTO Editor VALUES ( 1, 5 );


    Otra forma bastante usada de la instrucción INSERT sigue la siguiente sintaxis:

    INSERT INTO nombre_tabla [ ( lista_campos ) ]
    instrucción_select


    La única diferencia con la sintaxis anterior consiste en la sustitución de la cláusula VALUES por la instrucción SELECT.
    La instrucción SELECT se examinará con detalle en la siguiente lección (Interrogar a la base de datos). Por el momento, es suficiente saber que SELECT permite extraer de las tablas de la base de datos datos que se organizan en una nueva relación.
    La anterior instrucción INSERT permite incluir en la tabla y en los campos especificados datos provenientes de otras tablas. Obviamente, para que la instrucción se ejecute con éxito, los datos producidos por la instrucción SELECT tendrán que ser compatibles con los vínculos y los dominios de los campos de la tabla en la que se esta efectuando la inserción.

    En el archivo poblad_biblio.sql están presentes las instrucciones SQL que pueblan la base de datos bibliográfica con los datos que se usarán en los ejemplos de las siguientes lecciones.



  • Interrogar a la base de datos

    En la lección anterior se han examinado los constructos que el lenguaje SQL pone a disposición para incluir los datos en una base de datos relacional. Vamos a ver ahora, sin embargo, las instrucciones necesarias para extraer de ella los datos que nos interesen. La instrucción SQL que se propone para dicho fin es SELECT. Desde el momento en que la interrogación es quizá la función más usada de una base de datos, las opciones de la instrucción SELECT son numerosas y a veces bastante complicadas. Por esta razón vamos a describirlas simplificadas, utilizando ejemplos para la presentación de las características más complejas, en concreto las que se refieren a la especificación de las expresiones condicionales.
    La sintaxis con que la instrucción SELECT se tiene que usar es la siguiente:

    SELECT [ ALL | DISTINCT ] lista_elementos_selección
    FROM lista_referencias_tabla
    [ WHERE expresión_condicional ]
    [ GROUP BY lista_columnas ]
    [ HAVING expresión_condicional ]
    [ ORDER BY lista_columnas ]


    La instrucción SELECT produce una tabla que se obtiene aplicando el siguiente procedimiento (por lo menos desde el punto de vista lógico, cada DBMS optimiza la ejecución de las interrogaciones según las propias estrategias):

    • produce una tabla que se obtiene como producto cartesiano de las tablas especificadas en la cláusula FROM. Cada elemento de la lista_referencias_tabla sigue la siguiente sintaxis:

      referencia_tabla [ [ AS ] alias_tabla ]

      La referencia puede ser el nombre de una tabla o una expresión (puesta entre paréntesis) cuyo resultado es una tabla, y por lo tanto incluso otra SELECT. El alias es un nombre que sirve para indicar brevemente una referencia de tabla. En el caso en que la referencia de tabla sea una expresión, es obligatorio especificar un alias.

    • de la tabla anterior elimina todas las líneas que no satisfacen la expresión condicional (es decir las líneas por las cuales la expresión condicional devuelve falso como resultado) de la cláusula WHERE.

    • (si está presente la cláusula GROUP BY) las líneas de la tabla resultante del paso 2 se reagrupan según los valores presentes en las columnas especificadas en la cláusula GROUP BY. Líneas con valores iguales se unen en una única línea. Las columnas no comprendidas en la cláusula tienen que comprender expresiones con funciones de agregación (como por ejemplo AVG, que calcula la media) que, por tanto, se calculan produciendo un único valor para cada grupo.

    • (si está presente la cláusula HAVING) del resultado del punto 3 se eliminan las líneas que no satisfacen la expresión condicional de la cláusula HAVING.

    • Se claculan las columnas presentes en la cláusula SELECT (las de la lista_elementos_selección). En concreto, se calculan las columnas con las funciones de agregación que derivan del reagrupamiento que se ha producido en el punto 3. Cada elemento de la lista_elementos_selección sigue la siguiente sintaxis:

      expresión_escalar [ [ AS ] alias_columna ]

      Una expresión escalar es una expresión que produce como resultado un valor escalar. Los tipos de datos escalares del lenguaje SQL son principalmente los descritos en la lección 6 (Crear la base de datos), excepto INTERVAL, DATE, TIME y TIMESTAMP.
      Las expresiones escalares de los elementos de SELECT normalmente afectan a las columnas de la tabla resultante del punto 4. En el caso en que se den ambigüedades, por la presencia de columnas con los mismos nombres en dos o más tablas incluidas en la cláusula FOR, se pueden resolver prefijando el nombre o el alias de la columna con el nombre o el alias de la tabla, separados por un punto. Por ejemplo, T.C indica la columna C de la tabla T. El alias de columna es el nombre que se le da a la columna.
      Toda la lista de las columnas de una tabla puede especificarse usando el carácter '*'.

    • (si está presente la opción DISTINCT) se eliminan las líneas que resultan duplicadas. En el caso en que no estén presentes ni ALL ni DISTINCT, se asume ALL.

    • (si está presente la cláusula ORDER BY) las líneas de la tabla se ordenan según los valores presentes en las columnas especificadas en la cláusula. La sintaxis que hay que usar es la siguiente:

      ORDER BY nombre_columna [ ASC | DESC ] [ , nombre_columna [ ASC | DESC ] ... ]

    El orden por defecto es ascendente. En el caso en que se quiera efectuar el decreciente hay que especificar la opción DESC. Si no se especifica la cláusula ORDER BY, hay que considerar la tabla sin ningún orden; de hecho, para la definición de relación del modelo relacional, las líneas de la tabla forman un conjunto: en el sentido matemático y para los elementos de un conjunto no se ha definido ninguna propiedad de orden. En la práctica, sin embargo, el orden que se obtiene no especificando la cláusula de orden es casi siempre el que refleja su memorización física y por tanto, a menudo, al que se debe que las líneas hayan sido incluidas en la tabla.

    La secuencia de operaciones que acabamos de presentar hay que considerarla válida sólo desde el punto de vista conceptual. Efectivamente, no está escrito que se ejecuten exactamente de este modo y en este orden, sobre todo desde el momento en que cada DBMS optimizará las interrogaciones según las estrategias más oportunas.

    Examinaremos ahora algunos ejemplos de la instrucción SELECT. Se supone que los datos presentes en la base de datos de ejemplo son sólo los que se han incluido gracias al archivo [poblad_biblio.sql] presentado en la lección 7 (Poblar la base de datos). En caso contrario, las interrogaciones ofrecerán resultados diferentes.

    EJEMPLO 1

    SELECT surname FROM Person
    ORDER BY surname


    Extrae de la tabla Person los apellidos y los ordena alfabéticamente. En nuestro caso, el resultado es el siguiente:

    surname
    --------------------------------
    Agosti
    Batini
    Bayer
    Benfante
    Carey
    Cochowsky
    DeWitt
    Kim
    Knuth
    Lenzerini
    Maryansky
    McCreight
    McGill
    Melucci
    Richardson
    Salton
    Santucci
    Shekita
    Spaccapietra
    de Petra


    Véase el orden errado de la última línea, debido a que se ha usado el carácter ASCII minúsculo.
    La query anterior devolvería líneas duplicadas en el caso en que en la tabla estuviesen presentes personas con el mismo apellido. Para evitarlo hay que especificar la opción DISTINCT:

    SELECT DISTINCT surname FROM Person
    ORDER BY surname


    ESEMPIO 2

    SELECT * FROM Person
    WHERE surname LIKE 'B%'




    Produce una tabla que tiene todas las columnas de la tabla Person. Las líneas se filtran para que estén presentes sólo las que tienen el apellido que empieza con el carácter 'B'. El operador LIKE permite una comparación entre cadenas de caracteres usando pattern construidos con los caracteres '%' e '_'. El primero sustituye un número no precisado de caracteres (también 0), mientras que el segundo sustituye uno solo.

    ESEMPIO 3

    SELECT PUB.*, PER.surname AS S, PER.given_names
    FROM Publication PUB, Author AUT, Person PER
    WHERE PUB.ID = AUT.publicationID
    AND AUT.personID = PER.ID
    AND PUB.type = 'Book'
    ORDER BY S




    En este caso, la tabla resultante contiene todas las columnas de la tabla Publication (indicada con el alias PUB definido en la cláusula FROM) y las columnas surname y given_names de la tabla Person. La cláusula FROM genera el producto cartesiano de las tablas Publication, Author y Person, de las que se seleccionan sólo las líneas en que el identificativo de la publicación y el del autor se corresponden. Además, se limita a considerar sólo las publicaciones del tipo 'Book'. Para acabar, la tabla se ordena según los apellidos del autor, indicado mediante el alias S, definido en la cláusula SELECT.

    ESEMPIO 4

    SELECT title, volume, pub_year
    FROM Book
    WHERE ID IN
    ( SELECT PUB.ID
    FROM Publication PUB, Author AUT, Person PER
    WHERE PUB.ID = AUT.publicationID
    AND AUT.personID = PER.ID
    AND PUB.type = 'Book'
    AND PER.surname = 'Knuth' )




    En este ejemplo, se ve el uso de una expresión condicional que contiene el operador IN, que devuelve el valor verdadero si el valor del operando a su izquierda está incluido en la tabla resultado de la expresión a su derecha. La query entre paréntesis produce una tabla de una única columna, que contiene los identificativos de las publicaciones del tipo 'Book' de las que Knuth es autor. La query más externa extrae, por tanto, de la tabla Book las informaciones de los libros con esos identificativos.

    EJEMPLO 5

    SELECT COUNT(*) FROM Publication

    count
    -----
    12


    Cuenta el número de líneas presentes en la tabla Publication.

    ESEMPIO 6

    SELECT type, COUNT(ID) FROM Publication
    GROUP BY type




    Cuenta el número de publicaciones presentes en la base de datos subdividiéndolas por tipos.
    Las funciones de agregación previstas por el estándar SQL son COUNT, SUM, AVG, MAX y MIN, las cuales calculan respectivamente los números, la suma, la media aritmética, el máximo y el mínimo de los valores escalares presentes en la columna a la que se aplican.


    Actualizar la base de datos

    Normalmente, las informaciones presentes en una base de datos no son estáticas, sino que evolucionan en el tiempo. Existe, por tanto, la necesidad no sólo de añadir nuevos datos, sino de modificar los que están ya incluidos en las tablas de la base de datos. Las instrucciones SQL que se usan para este fin son UPDATE y DELETE. La primera modifica los valores presentes en una o más columnas de una o más líneas de una tabla. La segunda elimina una o más líneas de una tabla.
    La sintaxis de UPDATE es la siguiente:

    UPDATE nombre_tabla
    SET lista_asignaciones
    [ WHERE expresión_condicional ]


    Las asignaciones se especifican del modo:

    nombre_columna = expresión_escalar

    La instrucción UPDATE actualiza las columnas de la tabla que se han especificado en la cláusula SET, utilizando los valores que son calculados por las correspondientes expresiones escalares. Si se expresa también la cláusula WHERE, se actualizan sólo las líneas que satisfacen la expresión condicional. Véase que la expresión escalar usada para actualizar una columna puede ser también el resultado de una query escalar, es decir una query que devuelve una sola línea y una sola columna.

    Veamos un ejemplo:

    UPDATE Person
    SET given_names = 'Stefano'
    WHERE surname = 'Spaccapietra'


    La instrucción anterior cambia el valor de la columna given_name de la tabla Person en las líneas (en nuestro caso es una sola) en que la columna surname tiene valor 'Spaccapietra'.

    La sintaxis de DELETE es:

    DELETE FROM nombre_tabla
    [ WHERE expresión_condicional ]


    La instrucción delete elimina de una tabla todas las líneas que satisfacen la expresión condicional de la cláusula WHERE. Si WHERE no se especifica, se cancelan todas las líneas de la tabla.

    Si en la definición de la tabla se han especificado las cláusulas ON UPDATE u ON DELETE, en el momento en que se ejecutan estas operaciones también se ejecutan las que habían estado previstas en las columnas referenciadas (CASCADE, SET DEFAULT o SET NULL).


    Modificar la estructura de la base de datos

    En el curso de la lección anterior, se ha visto cómo modificar los datos ya presentes en la base de datos. A veces, sin embargo, no basta con modificar los datos, sino que es necesario actualizar la estructura misma de la base de datos para conseguir que se puedan representar nuevas informaciones. Desde el momento en que la estructura de la base de datos se da sustancialmente por la unión de las tablas que la componen, su actualización corresponde a la eliminación de tablas o al cambio de sus características.
    Para eliminar una tabla de una base de datos la orden SQL que hay que usar es DROP TABLE:

    DROP TABLE nombre_tabla { RESTRICT | CASCADE }

    nombre_tabla es el nombre de la tabla que tiene que se eliminada.
    Si se especifica la cláusula CASCADE, se eliminan automáticamente los vínculos de integridad y las vistas (view) en que la tabla está implicada. Y viceversa: si se especifica la cláusula RESTRICT y existen vínculos de integridad o vistas que se refieran a la tabla, la operación fracasa.
    Por ejemplo, se han definido las dos siguientes tablas:

    CREATE TABLE Prueba1 (
    Id INTEGER PRIMARY KEY,
    Nombre VARCHAR(50))

    CREATE TABLE Prueba2 (
    Id INTEGER PRIMARY KEY,
    Nombre VARCHAR(50),
    toPrueba1 INTEGER REFERENCES Prueba1(Id))


    Si se quiere eliminar la tabla Prueba1, la instrucción:

    DROP TABLE Prueba1 RESTRICT

    fracasará desde el momento en que existe un vínculo de integridad que liga una llave externa de la tabla Prueba2 con la tabla Prueba1.
    Sin embargo, la instrucción:

    DROP TABLE Prueba1 CASCADE

    se ejecutará con éxito y producirá también la eliminación del vínculo de integridad referencial presente en la tabla Prueba2.

    En el caso en que se quiera modificar una tabla existente en la base de datos, la instrucción que se tiene que usar es ALTER TABLE. Desde el momento en que la sintaxis de esta instrucción resulta más bien complicada, se explicará descomponiéndola de acuerdo a las funciones que se quieren obtener:

    Adición de una nueva columna a la tabla

    ALTER TABLE nombre_tabla ADD [ COLUMN ] definición_columna

    nombre_tabla es el nombre de la tabla que se quiere modificar.
    La definición de la columna sigue la misma sintaxis que se ha visto en la lección "Crear la base de datos" en la explicación de la instrucción CREATE TABLE. Por lo tanto, habrá que especificar el nombre de la columna, su tipo y, eventualmente, su valor por defecto y los vínculos impuestos en la columna.
    La la palabra clave COLUMN se puede omitir (aquí y en todos los casos sucesivos).

    Eliminación de una columna de la tabla

    ALTER TABLE nombre_tabla
    DROP [ COLUMN ] nombre_columna { RESTRICT | CASCADE }


    nombre_columna es el nombre de la columna que se quiere eliminar. Las cláusulas RESSTRIC y CASCADE se comportan exactamente como en la instrucción DROP TABLE que se ha visto anteriormente.
    La instrucción fallará, además de en los casos ya vistos para RESTRICT, si se intenta eliminar una columna que es la única de una tabla.

    Cambio del valor por defecto de una columna

    ALTER TABLE nombre_tabla
    ALTER [ COLUMN ] nombre_columna { SET cláusula_defecto | DROP DEFAULT }


    La sintaxis y el significado de la cláusula que define el nuevo valor de defecto son idénticos a los de la cláusula_defecto que se usa en la orden CREATE TABLE.

    Eliminación de un vínculo de la tabla

    ALTER TABLE nombre_tabla
    DROP CONSTRAINT nombre_vínculo { RESTRICT | CASCADE }


    Elimina el vínculo identificado por el nombre especificado. La operación falla si se ha especificado la cláusula RESTRICT y existen otros vínculos que dependen del que se intenta eliminar. Especificando la cláusula CASCADE la operación se completará siempre con éxito, borrando además los vínculos que dependen de que se ha eliminado.
    A menudo se quiere eliminar un vínculo al que no se le ha dado un nombre explícitamente, poniendo antes de la definición del vínculo la cláusula opcional [CONSTRAINT nombre_vínculo]. En ese caso, desde el momento que la DBMS habrá asignado de todos modos un nombre al vínculo para poderlo identificar, será necesario interrogar a las tablas de sistema de la DBMS y que nos dé su nombre. La particular interrogación solicitada depende de la DBMS específica que se haya usado.

    Adición de un vínculo a la tabla

    ALTER TABLE nombre_columna
    ADD vínculo_de_tabla


    La sintaxis que hay que usar para la definición del vínculo es la misma que se usa en la orden CREATE TABLE para los vínculos de tabla.


    Utilización multiusuario de una base de datos


    Hasta ahora hemos examinado las características del lenguaje SQL que se refieren a la definición y a la manipulación de los datos presentes en una base de datos, sin preocuparnos del hecho de que normalmente el acceso a tales datos se produce al mismo tiempo por parte de muchos usuarios.
    Los mecanismo que hay que tener en cuenta para este método de acceso se refieren principalmente a la seguridad de los datos, la gestión de las transacciones y la posibilidad de definir las vistas en las tablas de la base de datos.

    1. Seguridad

    La ejecución de una operación en los datos de la base de datos por parte de un usuario está supeditada a la posesión por parte del usuario de los privilegios necesarios para la operación concreta ejecutada en el conjunto de datos específico.
    En general, los privilegios se asignan del siguiente modo:

  • Un usuario que crea una tabla o cualquier otro objeto de la base de datos es el propietario y se le garantizan automáticamente todos los privilegios aplicables a dicho objeto, con la posibilidad de darles también a otros usuarios dichos privilegios (privilegio de concesión).


  • Un usario que tenga un privilegio y posea además sobre él el privilegio de concesión puede asignarle tal pricilegio a otro usuario y pasarle también el privilegio de concesión.


  • Los privilegios los concede quien tiene el permiso (es decir el propietario del objeto y quien tiene el privilegio de concesión) mediante la orden GRANT, y los revoca mediante la orden REVOKE.

    La sintaxis de la orden GRANT es la siguiente:

    GRANT lista_privilegios ON objeto TO lista_usuarios [ WITH GRANT OPTION ]

    Esto asigna al usuario los privilegios presentes en la lista_privilegios sobre el objeto especificado.
    Los privilegios asignables son los siguientes (con sus respectivas sintaxis):

    USAGE
    Privilegio para usar un dominio específico u otro objeto de la base de datos.

    SELECT
    Privilegio para acceder a todas las columnas de una tabla o de una vista.

    INSERT [ (nombre_columna) ]
    Si se especifica la opción nombre_columna, es el privilegio para incluir valores en la columna indicada de una tabla o de una vista. Sin el nombre_columna es el privilegio para añadir valores a todas las columnas, incluidas las que se añadirán a continuación.

    UPDATE [ (nombre_columna) ]
    Si se especifica la opción nombre_columna, se trata del privilegio para actualizar el valor en la columna indicada de una tabla o de una vista. Si no, permite actualizar el valor de todas las columnas, incluidas las que se añadirán a continuación.

    DELETE
    Privilegio para eliminar líneas de una tabla o de una vista.

    REFERENCES [ (nombre_columna) ]
    Si se especifica la opción nombre_columna, es el privilegio de referirse a la columna indicada de una tabla o de una vista en la definición de un vínculo de integridad. Sin la opción, concede dicho privilegio para todas las columnas, incluidas las que se añaden a continuación.

    El objeto al que se refiere el privilegio es generalmente una tabla o una vista. La sintaxis para su especificación es en ese caso:

    [TABLE] nombre_tabla

    En el caso de otros objetos, sigue la sintaxis:

    tipo_objeto nombre_objeto

    donde tipo_objeto puede ser DOMAIN, CHARACTER SET, COLLATION o TRANSLATION (véase C.J. Date - "A Guide to The SQL Standard" para una explicación de tales objetos).
    En el caso de objetos que no sean tablas o vistas, el único privilegio aplicable es el de USAGE.

    La lista_usuarios es una lista de identificativos de usuarios o grupos de usuarios. Puede usarse también la palabra clave PUBLIC, que indica todos los usuarios y los grupos coocidos en el sistema.

    Si está presente la opción [ WITH GRANT OPTION ], se asigna además el privilegio de concesión, que permite a los usuarios transferir ulteriormente los privilegios que se les han asignado.

    Por ejemplo:

    GRANT SELECT, INSERT, UPDATE(nombre) ON persona TO benfante WITH GRANT OPTION

    le asigna al usuario benfante los privilegios de SELECT e INSERT sobre todas las columnas de la tabla persona y el de UPDATE sobre la columna nombre de dicha tabla. Se les garantiza, además, el privilegio de asignar estos permisos a otros usuarios.

    Para quitarles los privilegios a los usuarios se usa REVOKE:

    REVOKE [ GRANT OPTION FOR ] lista_privilegios ON objeto FROM lista_usuarios { RESTRIC | CASCADE }

    lista_privilegios, objeto y lista_usuarios tienen el mismo significado que las correspondientes opciones de GRANT. La opción GRANT OPTION FOR revoca el privilegio de concesión. Si se especifica la cláusula RESTRICT, la orden REVOKE puede fallar si el usuario al que se le han revocado los privilegios se los ha concedido posteriormente a otros. Si está presente la cláusula CASCADE, la instrucción se completará siempre con éxito y se revocarán también los privilegios de esos usuarios y de todos aquellos a quienes a su vez se les han concedido (...y así hasta que no haya más privilegios "abandonados", es decir concedidos sin que quien los ha concedido los posea todavía). Se destruirán, además, los objetos de la base de datos construidos gracias a dichos permisos.

    2. Gestión de las transacciones

    Las transacciones SQL son conjuntos de instrucciones que hay que tratar como unidades atómicas, es decir no descomponibles en las instrucciones individuales de las que están formadas. Gracias a esta atomicidad, las transacciones permiten que se ejecuten operaciones complejas en la base de datos, manteniendo la integridad. Efectivamente, una transacción se ejecuta con éxito si y sólo si todas las operaciones que la componen terminan con éxito. Si no, es decir si una de las operaciones falla, o si la transacción se anula explícitamente, todas las operaciones anteriores son también anuladas. Las operaciones de una transacción no tienen ningún efecto sobre la base de datos hasta que la transacción no se completa con éxito.
    Desde el momento en que a una base de datos pueden acceder diferentes usuarios al mismo tiempo, en cada instante podremos tener distintas transacciones que manipulen la base de datos a la vez. El estándar SQL prevé que normalmente las transacciones se ejecuten en el "nivel de aislamiento serializable" (isolation level SERIALIZABLE), o sea en una modalidad de ejecución que garantice la "serializabilidad" de las transacciones. El hecho de que las transacciones se puedan serializar significa que su efecto global sobre la base de datos es el que se obtendría si aquéllas se ejecutasen no al mismo tiempo, sino una después de otra.
    En el lenguaje SQL estándar, no existe una instrucción que haga iniciar explícitamente una transacción. Las instrucciones se dividen en dos clases: las que pueden empezar una transacción y las que no la hacen empezar. En el momento en que se intenta ejecutar una instrucción del primer tipo, si no está ya en marcha una transacción, empieza una. La transacción continúa hasta que una de las instrucciones falla, provocando la anulación de toda la transacción, o hasta que se ejecuten las instrucciones COMMIT WORK o ROLLBACK WORK. La instrucción COMMIT WORK termina la transacción confirmándola, convirtiendo en definitivos los efectos de sus instrucciones sobre la base de datos. Sin embargo, la instrucción ROLLBACK WORK acaba anulándola.
    A menudo, las DBMS que se encuentran en el mercado implementan la gestión de las transacciones de modo distinto a como está previsto en el estándar (al menos en sus colocaciones por defecto). En este caso, normalmente está prevista una orden que empieza explícitamente una transacción (BEGIN TRANSACTION, START WORK u otro). Si una transacción no se ha empezado explícitamente, las instrucciones concretas componen una cada una.
    Para entender mejor cuáles podrían ser las consecuencias de la manipulación concurrente de los datos de una base de datos sin usar transacciones, veamos un ejemplo. Supongamos que tenemos una base de datos con la que gestionamos los pedidos de los productos que vendemos. En concreto, cuando un cliente nos solicita un producto, comprobamos la disponibilidad y, en el caso en que podamos satisfacer el pedido, restamos a la cantidad que tenemos la cantidad que se nos ha pedido. Traduciendo todo esto a SQL, obtenemos la cantidad almacenada con la instrucción (instrucción A):

    SELECT almacenamiento FROM productos
    WHERE productoID=1453


    La actualización del almacenamiento, una vez comprobada la disponibilidad se obtiene con la siguiente instrucción (instrucción B):

    UPDATE productos
    SET almacenamiento=almacenamiento-1
    WHERE productoID=1453


    Si dos usuarios intentan ejecutar esta operación, sin que las dos instrucciones que la componen se hayan reagrupado en una transacción, podría suceder que las instrucciones se ejecuten en el orden y con los resultados siguientes:

    • Instrucción A, ejecutada por el usuario 1: se devuelve un almacenamiento del producto equivalente a 1, por lo que el pedido será aprobado.
    • Instrucción A, ejecutada por el usuario 2: como antes, el almacenamiento es 1 y también en este caso el pedido se aprobará.
    • Instrucción B, ejecutada por el usuario 1: en este punto, en la base de datos el almacenamiento para el producto vale 0.
    • Instrucción B, ejecutada por el usuario 2: ahora el almacenamiento vale -1, que, obviamente, es un valor equivocado.
    Como se ve, el resultado final es que uno de los dos clientes no podrá recibir (al menos no inmediatamente) la mercancía, dado que no teníamos en almacén una cantidad suficiente para ambos clientes. Si las dos instrucciones se hubieran incluido en una transacción, el problema no se habría producido, dado que la transacción del segundo usuario no habría podido leer el valor del almacenamiento hasta que no se hubiese completado la transacción del primer usuario. En ese momento, el almacenamiento habría tenido valor 0 y el pedido no habría estado erróneamente aprobado.

    3. Vistas

    Hasta ahora las únicas tablas de las que nos hemos ocupado han sido las definidas con la orden CREATE TABLE. El lenguaje SQL también pone a disposición la posibilidad de definir tablas "virtuales", las vistas, calculadas a partir de otras tablas. Son virtuales en el sentido que no ocupan espacio en el disco, pero son el resultado de interrogaciones sobre otras tablas y, por lo tanto, siempre están alineadas con los valores contenidos en dichas tablas.
    La instrucción SQL para definir una vista es la siguiente:

    CREATE VIEW nombre_vista [ ( lista_nombres_columnas ) ]
    AS expresión_tabla


    Crea una vista llamada nombre_vista definitda por la expresión_tabla. Típicamente, expresión_tabla es una instrucción select que producirá la tabla que interesa. La lista_nombres_columnas se puede usar para asignar nombres a las columnas de la vista. Esto es útil en el caso en que las columnas que derivan de la expresión_tabla sean resultado de un cálculo (por ejemplo COUNT(nombre_columna)) y por ello no tengan un nombre explícito. Una vez creada, una vista se puede utilizar como una tabla normal. Las unicas limitaciones se refieren a las operaciones que cambian los datos contenidos en ella. En efecto, no todas las vistas pueden actualizarse. Las reglas que discriminan entre una vista actualizable y una no actualizable son más bien complejas, y no es este el lugar para describirlas (véanse los libros en la bibliografía, concretamente el de C.J. Date). Aquí vamos a limitarnos a intentar entender, mediante un ejemplo, por qué sucede esto.
    Hagamos la prueba usando la siguiente vista en nuestra base de datos bibliográfica:

    CREATE VIEW book_publisher89
    AS SELECT B.title, P.name
    FROM Book B, Publisher P
    WHERE B.publisher = P.ID
    AND B.pub_year=1989


    Ésta nos permite ejecutar la query que la define simplemente utilizando la instrucción:

    SELECT * FROM book_publisher89

    Podemos también introducir ulteriores condiciones (o hacer que el resultado se ordene según una columna concreta de la vista, etc...):

    SELECT title FROM book_publisher89
    WHERE name = "ACM Press"


    Esta última interrogación nos ofrece la lista de los títulos de los libros publicados por ACM Press en 1989.

    Como se ve, por lo que respecta a las operaciones de interrogación, una vista se comporta como una tabla normal. Las diferencias aparecen cuando se intentan aplicar a una vista operaciones de actualización. Por ejemplo, si intentamos ejecutar la siguiente instrucción:

    INSERT INTO book_publisher89
    VALUES( "Nuevo libro", "publisher")


    La DBMS no conseguirá ejecutarla, devolviendo un error del tipo "No INSERT permission". El motivo es que no es capaz de crear las líneas correspondientes a nuestro nuevo récord en las dos tablas "reales" en las que se ha originado la vista (los problemas son varios: tiene que crear sólo una línea en la tabla Book y conectarla a una línea concreta de la tabla Publisher, o crear una línea en ambas tablas; cómo decidir qué valores darles a las llaves primarias de los eventuales nuevos récords; qué valores darles a los otros campos de las dos tablas, etc...)

    Gracias a las vistas (y a la asignación prudente de los permisos a los usuarios) es posible conseguir que diferentes usuarios tengan una percepción de la estructura de la base de datos, si bien muy diferentes de la que tiene realmente, e impedir que algunas categorías de usuarios puedan acceder a informaciones que no les competen.
    Por ejemplo, supongamos que contamos con una tabla en la que se han memorizado los datos personales de los empleados de una empresa, así como las cantidades que conforman sus respectivos sueldos. Obviamente, habría que evitar la consulta de los datos relativos a los sueldos por parte de los usuarios, excepto quienes se tienen que ocupar de su erogación/administración. Un sistema para hacerlo consiste en definir una vista que contenga sólo las columnas de los datos personales. Así, todos los usuarios autorizados a acceder a dichos datos, pero no a los de los sueldos, podrán entrar sólo a través de dicha vista. Ulteriores particiones podrían hacerse en sentido horizontal, creando por ejemplo una vista que sólo contenga las informaciones sobre los directivos y otra con los datos del resto de los dependientes. Además, las vistas a menudo contribuyen a facilitar la independencia entre aplicaciones y estructura de los datos, lo que hace que las bases de datos de los instrumentos sean tan útiles. Efectivamente, si en un momento determinado fuese necesario cambiar la estructura de la base de datos (descomponiendo, por ejemplo, una tabla en dos por motivos de eficacia), no habría que modificar todas las aplicaciones adaptándolas a la nueva estructura, sino que sería suficiente crear las vistas pertinentes, de modo que, desde el punto de vista de las aplicaciones, nada haya cambiado.

  • Related Posts Plugin for WordPress, Blogger...