TUTORIAL DE SQL (Curso de SQL): http://sql.1keydata.com/es/
INTRUCCIONES: http://www.ibiblio.org/pub/linux/docs/LuCaS/Postgresql-es/web/navegable/todopostgresql/sql-commands.htm
EJEMPLO ORACLE EXPRES EDITION: http://vimeo.com/9315176
VIDEO TUTORIAL DE INSTALACION:
Seminario Administración y Desarrollo de Sistemas
domingo, 29 de agosto de 2010
SENTENCIAS SQL-ORACLE
¿Qué es sql?
SQL (Structured Query Language ó Lenguaje Estructurado de Consulta, es un lenguaje bastante sencillo, principalmente orientado a bases de datos y, sobre todo, al manejo de consultas. El objetivo principal de SQL es la realización de consultas y cálculos con los datos de una o varias tablas.
El lenguaje SQL está compuesto por una serie de sentencias y de cláusulas. De entre todas las palabras, existen cuatro que son las más utilizadas, estando compuestas por una sentencia y por tres cláusulas:
SELECT lista_campos FROM lista_tablas [WHERE criterios [ORDER BY lista_campos]]
SELECT lista_campos FROM lista_tablas [WHERE criterios [ORDER BY lista_campos]]
La sentencia SELECT : "selecciona" los campos que conformarán la consulta, es decir, que establece los campos que se visualizarán o compondrán la consulta. El parámetro 'lista_campo' está compuesto por uno o más nombres de campos, separados por comas, pudiéndose especificar también el nombre de la tabla a la cual pertenecen, seguido de un punto y del nombre del campo correspondiente. Si el nombre del campo o de la tabla está compuesto de más de una palabra, este nombre ha de escribirse entre corchetes ([nombre]). Si se desea seleccionar todos los campos de una tabla, se puede utilizar el asterisco (*) para indicarlo.
Una sentencia SELECT no puede escribirse sin la cláusula FROM. Una cláusula es una extensión de un mandato que complementa a una sentencia o instrucción, pudiendo complementar también a otras sentencias. Es, por decirlo así, un accesorio imprescindible en una determinada máquina, que puede también acoplarse a otras máquinas. En este caso, la cláusula FROM permite indicar en qué tablas o en qué consultas (queries) se encuentran los campos especificados en la sentencias SELECT. Estas tablas o consultas se separan por medio de comas (,), y, si sus nombres están compuestos por más de una palabra, éstos se escriben entre corchetes ([nombre]).
Algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:
SELECT nombre,apellidos FROM clientes;
Selecciona los campos 'nombre' y 'apellidos' de la tabla 'clientes'.
SELECT clientes.nombre, producto FROM clientes, productos;
Selecciona el campo 'nombre' de la tabla 'clientes', y el campo 'producto' de la tabla productos.
Hay que tener en cuenta que si dos tablas poseen el mismo nombre de campo (un 'nombre' de cliente y un 'nombre' de producto, hay que especificar también la tabla a la cual pertenece dicho campo, ya, que de lo contrario, seleccionaría ambos nombres).
SELECT pedidos.* FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT * FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT nombre, apellidos, telefono FROM clientes;
Selecciona los campos 'nombre', 'apellidos' y 'telefono' de la tabla 'clientes'. De esta manera obtenemos una agenda telefónica de nuestros clientes.
SELECT [codigo postal] FROM [tabla morosos];
Selecciona el campo 'codigo postal' de la tabla 'tabla morosos'.
SELECT nombre,apellidos FROM clientes;
Selecciona los campos 'nombre' y 'apellidos' de la tabla 'clientes'.
SELECT clientes.nombre, producto FROM clientes, productos;
Selecciona el campo 'nombre' de la tabla 'clientes', y el campo 'producto' de la tabla productos.
Hay que tener en cuenta que si dos tablas poseen el mismo nombre de campo (un 'nombre' de cliente y un 'nombre' de producto, hay que especificar también la tabla a la cual pertenece dicho campo, ya, que de lo contrario, seleccionaría ambos nombres).
SELECT pedidos.* FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT * FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT nombre, apellidos, telefono FROM clientes;
Selecciona los campos 'nombre', 'apellidos' y 'telefono' de la tabla 'clientes'. De esta manera obtenemos una agenda telefónica de nuestros clientes.
SELECT [codigo postal] FROM [tabla morosos];
Selecciona el campo 'codigo postal' de la tabla 'tabla morosos'.
CLAUSULA WHERE.
La claúsula WHERE es opcional, y permite seleccionar qué registros aparecerán en la consulta (si no se especifica aparecerán todos los registros). Para indicar este conjunto de registros se hace uso de criterios o condiciones, que no es más que una comparación del contenido de un campo con un determinado valor (este valor puede ser constante (valor predeterminado), el contenido de un campo, una variable, un control, etc.).
He aquí algunos ejemplos que ilustran el uso de esta cláusula:
SELECT * FROM clientes WHERE nombre='ALFREDO';
Selecciona todos los campos de la tabla 'clientes', pero los registros de todos aquellos clientes que se llamen 'ALFREDO'.
SELECT * FROM abonados WHERE provincia='MADRID' OR provincia='VALENCIA OR provincia='BARCELONA';
Selecciona todos los campos de la tabla 'abonados', pero los registros de todos los abonados de las provincias de 'MADRID', 'VALENCIA' o 'BARCELONA'.
SELECT nombre, apellidos FROM abonados WHERE edad>=18;
Selecciona los campos 'nombre' y 'apellidos' de la tabla abonados, escogiendo a aquellos abonados que sean mayor de edad (a partir de 18 años).
SELECT * FROM abonados WHERE edad>=18 AND edad<=45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM diario WHERE fecha=#7/1/97#;
Selecciona los apuntes de 'diario' realizados el 1 de Julio de 1.997 (la fecha ha de indicarse en inglés (mes/día/año)).
SELECT * FROM diario WHERE fecha<=#12/31/96#;
Selecciona los apuntes de 'diario' realizados antes del 1 de Enero de 1.997.
SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND #7/31/97#;
Selecciona los apuntes de 'diario' realizados en Julio de 1.997.
SELECT * FROM clientes WHERE nombre LIKE 'AL*';
Selecciona los clientes cuyo nombre comience con los caracteres 'AL'.
SELECT * FROM clientes WHERE apellidos LIKE '*EZ';
Selecciona los clientes cuyos apellidos terminen con los caracteres 'EZ'.
SELECT * FROM clientes WHERE apellidos LIKE '*ZAMO*'
Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los caracteres 'ZAMO'.
SELECT * FROM clientes WHERE provincia IN ('MADRID', 'BARCELONA',
'VALENCIA','TOLEDO', 'AVILA');
Selecciona todos los clientes de las provincias de MADRID, BARCELONA, VALENCIA,
TOLEDO o AVILA.
SELECT * FROM clientes WHERE nombre='ALFREDO';
Selecciona todos los campos de la tabla 'clientes', pero los registros de todos aquellos clientes que se llamen 'ALFREDO'.
SELECT * FROM abonados WHERE provincia='MADRID' OR provincia='VALENCIA OR provincia='BARCELONA';
Selecciona todos los campos de la tabla 'abonados', pero los registros de todos los abonados de las provincias de 'MADRID', 'VALENCIA' o 'BARCELONA'.
SELECT nombre, apellidos FROM abonados WHERE edad>=18;
Selecciona los campos 'nombre' y 'apellidos' de la tabla abonados, escogiendo a aquellos abonados que sean mayor de edad (a partir de 18 años).
SELECT * FROM abonados WHERE edad>=18 AND edad<=45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM abonados WHERE edad BETWEEN 18 AND 45;
Selecciona todos los abonados con edades comprendidas entre los 18 y los 45 años.
SELECT * FROM diario WHERE fecha=#7/1/97#;
Selecciona los apuntes de 'diario' realizados el 1 de Julio de 1.997 (la fecha ha de indicarse en inglés (mes/día/año)).
SELECT * FROM diario WHERE fecha<=#12/31/96#;
Selecciona los apuntes de 'diario' realizados antes del 1 de Enero de 1.997.
SELECT * FROM diario WHERE fecha BETWEEN #7/1/97# AND #7/31/97#;
Selecciona los apuntes de 'diario' realizados en Julio de 1.997.
SELECT * FROM clientes WHERE nombre LIKE 'AL*';
Selecciona los clientes cuyo nombre comience con los caracteres 'AL'.
SELECT * FROM clientes WHERE apellidos LIKE '*EZ';
Selecciona los clientes cuyos apellidos terminen con los caracteres 'EZ'.
SELECT * FROM clientes WHERE apellidos LIKE '*ZAMO*'
Selecciona los clientes cuyos apellidos contengan, en cualquier posición, los caracteres 'ZAMO'.
SELECT * FROM clientes WHERE provincia IN ('MADRID', 'BARCELONA',
'VALENCIA','TOLEDO', 'AVILA');
Selecciona todos los clientes de las provincias de MADRID, BARCELONA, VALENCIA,
TOLEDO o AVILA.
CLAUSULA ORDER BY
La cláusula ORDER BY suele escribirse al final de un mandato en SQL. Dicha cláusula establece un criterio de ordenación de los datos de la consulta, por los campos que se especifican en dicha cláusula. La potencia de ordenación de dicha cláusula radica en la especificación de los campos por los que se ordena, ya que el programador puede indicar cuál será el primer criterio de ordenación, el segundo, etc., así como el tipo de ordenación por ese criterio: ascendiente o descendiente.
(...) ORDER BY campo1 [ASC/DESC][,campo2 [ASC/DESC]...]
La palabra reservada ASC es opcional e indica que el orden del campo será de tipo ascendiente (0-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se indica que el orden del campo es descendiente (9-0 Z-A). Si no se especifica ninguna de estas palabras reservadas, la cláusula ORDER BY toma, por defecto, el tipo ascendiente [ASC].
La palabra reservada ASC es opcional e indica que el orden del campo será de tipo ascendiente (0-9 A-Z), mientras que, si se especifica la palabra reservada DESC, se indica que el orden del campo es descendiente (9-0 Z-A). Si no se especifica ninguna de estas palabras reservadas, la cláusula ORDER BY toma, por defecto, el tipo ascendiente [ASC].
He aquí algunos ejemplos:
SELECT nombre, apellidos, telefono FROM clientes ORDER BY apellidos, nombre;
Crea una agenda telefónica de 'clientes' ordenada por 'apellidos' y 'nombre'.
SELECT * FROM pedidos ORDER BY fecha DESC;
Relación de 'pedidos' ordenados desde el más antiguo hasta el más moderno.
SELECT * FROM abonados ORDER BY apellidos, nombre, fecha_nacimiento DESC;
Relación de 'abonados' por 'apellidos' y 'nombre' ascendiente, y por 'fecha_nacimiento' en orden descendiente (del más viejo al más joven).
SELECT nombre, apellidos, telefono FROM clientes ORDER BY apellidos, nombre;
Crea una agenda telefónica de 'clientes' ordenada por 'apellidos' y 'nombre'.
SELECT * FROM pedidos ORDER BY fecha DESC;
Relación de 'pedidos' ordenados desde el más antiguo hasta el más moderno.
SELECT * FROM abonados ORDER BY apellidos, nombre, fecha_nacimiento DESC;
Relación de 'abonados' por 'apellidos' y 'nombre' ascendiente, y por 'fecha_nacimiento' en orden descendiente (del más viejo al más joven).
Lo primero que hay que tener en cuenta es que la consulta realizada en SQL posea los mismos campos que la interfaz diseñada, y que los controles encargados de mostrar o modificar la base de datos, estén perfectamente vinculados al control Data..
OMISION DE REGISTROS DUPLICADOS.
En una consulta podría ser útil omitir registros que estén duplicados. Para ello, utilizaremos el predicado DISTINCT, cuya sintaxis es la siguiente:
SELECT DISTINCT lista_campos ...
El predicado DISTINCT omite aquellos registros duplicados en los campos especificados. En el problema expuesto, utilizaremos la siguiente sentencia:
SELECT DISTINCT [codigo cliente],fecha FROM pedidos;
Si deseamos que la consulta sea más completa y nos visualice también el nombre y los apellidos correspondientes del cliente en cuestión (estos datos están en la tabla 'clientes' y no en 'pedidos'), escribiríamos este mandato:
SELECT DISTINCT pedidos.fecha, pedidos.[codigo cliente], clientes.nombre, clientes.apellidos
FROM pedidos, clientes WHERE clientes.[codigo cliente] = pedidos.[codigo cliente];
El predicado DISTINCT omite aquellos registros duplicados en los campos especificados. En el problema expuesto, utilizaremos la siguiente sentencia:
SELECT DISTINCT [codigo cliente],fecha FROM pedidos;
Si deseamos que la consulta sea más completa y nos visualice también el nombre y los apellidos correspondientes del cliente en cuestión (estos datos están en la tabla 'clientes' y no en 'pedidos'), escribiríamos este mandato:
SELECT DISTINCT pedidos.fecha, pedidos.[codigo cliente], clientes.nombre, clientes.apellidos
FROM pedidos, clientes WHERE clientes.[codigo cliente] = pedidos.[codigo cliente];
SENTENCIAS JOIN.
Podemos combinar datos de una manera mucho mas eficaz y sencilla mediante la operación o sentencia JOIN la cual nos permite combinar datos de dos tablas, suya sintaxis:
tabla1 INNER JOIN tabla2 ON tabla1.campo_común=tabla2.campo_común
Donde tabla1 y tabla2 representan el nombre de las tablas a combinar. Ambas tablas han de tener un campo común o igual para poder realizar correctamente la combinación de los datos.
Donde tabla1 y tabla2 representan el nombre de las tablas a combinar. Ambas tablas han de tener un campo común o igual para poder realizar correctamente la combinación de los datos.
Ejemplo:
SELECT * FROM pedidos INNER JOIN clientes ON pedidos.codigo_cliente =clientes.codigo_cliente;
El resultado será un conjunto de registros con los datos de las dos tablas. Este conjunto poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la tabla clientes. En cada registro aparecerán los datos relacionados, es decir, que en un pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el pedido.
El resultado será un conjunto de registros con los datos de las dos tablas. Este conjunto poseerá el nombre de todos los campos de la tabla pedidos y de todos los campos de la tabla clientes. En cada registro aparecerán los datos relacionados, es decir, que en un pedido aparecerán los datos del mismo y los datos personales del cliente que realizó el pedido.
domingo, 22 de agosto de 2010
CASOS DE USO
- Identificar actores. Los actores son mejor dicho, los roles que un usuario o usuarios del sistema llevan a cabo en algun momento del tiempo. Tambien pueden ser otros sistemas con los que el 'sistema' en proceso de modelado tiene interacción.
- Identificar Metas (Metas, objetivos generales o responsabilidades). Todos los actores en el entorno a modelar tienen metas u objetivos, o en su defecto responsabilidades, o en su defecto, acciones que desean realizar u obtener del sistema.
- Obtener o identificar los Casos de Uso a partir de las Metas. Las metas son importantes porque a partir de su identificación pasamos a realizarlas y estas se convierten en los Casos de Uso, de esta forma tan sencilla obtenemos la información de funcionalidad que requiere nuestro sistema.
- Especificar cada Caso de Uso. Una vez identificados seguimos a especificarlos uno a uno, Es importante recordar que no es indispensable que quede al cien por ciento el modelo desde la primera vez. La especificación de los casos de uso contiene varias partes, las fundamentales son Nombre, Descripcion, Actores, Flujo Principal y Flujos Alternos.
MODELO DE CLASES
Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento.
Un diagrama de clases esta compuesto por los siguientes elementos:
- Clase: atributos, métodos y visibilidad.
- Relaciones: Herencia, Composición, Agregación, Asociación y Uso.
Elementos
Clase
![]() |
| http://www.dcc.uchile.cl/~psalinas/uml/modelo.html |
Es la unidad básica que encapsula toda la información de un Objeto En UML, una clase es representada por un rectángulo que posee tres divisiones:
En donde:
- Superior: Contiene el nombre de la Clase
- Intermedio: Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public).
- Inferior: Contiene los métodos u operaciones, los cuales son la forma como interactúa el objeto con su entorno (dependiendo de la visibilidad: private, protected o public).
Atributos y Métodos:
- Atributos:
Los atributos o características de una Clase pueden ser de tres tipos, los que definen el grado de comunicación y visibilidad de ellos con el entorno, estos son:
- public (+,
): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados. - private (-,
): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar). - protected (#,
): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (ver herencia). - Métodos:
Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno, éstos pueden tener las características:
- public (+,
): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados. - private (-,
): Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar). - protected (#,
): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia). - Relaciones entre Clases:
En UML, la cardinalidad de las relaciones indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas pueden ser:
- uno o muchos: 1..* (1..n)
- 0 o muchos: 0..* (0..n)
- número fijo: m (m denota el número).
iv. Herencia (Especialización/Generalización):
Indica que una subclase hereda los métodos y atributos especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected), ejemplo:
![]() |
| http://www.dcc.uchile.cl/~psalinas/uml/modelo.html |
v. Agregación: 
Para modelar objetos complejos, n bastan los tipos de datos básicos que proveen los lenguajes: enteros, reales y secuencias de caracteres. Cuando se requiere componer objetos que son instancias de clases definidas se tiene dos formas de expresarlos:
§ Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye.
§ Por Referencia: Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Un Ejemplo es el siguiente:
vi. Asociación:
La relación entre clases conocida como Asociación, permite asociar objetos que colaboran entre si. Cabe destacar que no es una relación fuerte, es decir, el tiempo de vida de un objeto no depende del otro.
Un cliente puede tener asociadas muchas Ordenes de Compra, en cambio una orden de compra solo puede tener asociado un cliente.
vii. Dependencia o Instanciación (uso):
Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.
El uso más particular de este tipo de relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana (la creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el objeto Aplicacion):
Cabe destacar que el objeto creado (en este caso la Ventana gráfica) no se almacena dentro del objeto que lo crea (en este caso la Aplicación).
ver ejemplo y ayuda bibliografica:
MODELADO CONCEPTUAL
El modelado conceptual constituyen una de las herramientas más utilizadas en el análisis y diseño de sistemas por la posibilidad que estos ofrecen de contextualizar un ambiente y compartir conocimiento.
Un Modelo conceptual es un diagrama que ilustra una serie de relaciones entre ciertos factores que se cree impactan o conducen a una condición de interés. Un buen Modelo conceptual:
• Presenta un cuadro de la situación en el sitio del proyecto.
• Muestra supuestos vínculos entre los factores que afectan a la condición de interés.
• Muestra las principales amenazas directas e indirectas que afectan a la condición de interés.
• Presenta sólo factores relevantes.
• Está basado en datos e información sólidos.
• Es el resultado de un esfuerzo de equipo.
Un modelo conceptual lo podemos desarrollar tomando los siguientes pasos
1. Revise y compile la información existente sobre el sitio de su proyecto: Esta información lo ayudará a comenzar a identificar los factores importantes en su sitio de proyecto, desarrollar suposiciones, y determinar cuáles actividades de proyecto pueden funcionar mejor, en otras palabras, lo ayudarán a construir su Modelo conceptual.
2. Desarrolle un Modelo conceptual inicial del sitio de su proyecto: La primera tarea es identificar la condición de interés, la situación que usted pretende influenciar a través de su proyecto. Su condición de interés debe estar relacionada con el punto inicial del ciclo del proyecto: la misión de su grupo.
3. Evalúe las condiciones locales del sitio para refinar y mejorar su modelo: El trabajo con las partes interesadas locales es quizá la fase más crucial en la construcción de su Modelo conceptual. Es durante estafase que se consulta a las partes interesadas locales para comprender sus puntos de vista, conocimientos, actitudes y comportamientos de manera que pueda refinar y mejorar su Modelo conceptual. Es durante esta etapa que usted evalúa la precisión de la información relativa a los recursos sociales, biológicos o naturales que se recopiló cuando estaba construyendo el bosquejo de su modelo.
Suscribirse a:
Entradas (Atom)








