Sei sulla pagina 1di 66

República Bolivariana de Venezuela

Ministerio del Poder Popular para la Educación Universitaria


Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

MODELADO
DE
DATOS

Profesor:
Luis Javier Bracho

www.aul@Frontino.org.ve
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

MODELADO DE
DATOS
Es un recurso didáctico elaborado como material de apoyo a la
Unidad Curricular Modelado de Datos de Ingeniería Informática,
establecido por el Programa Nacional de Formación en Informática
que se imparte en la Universidad Politécnica Territorial “J.J Montilla”.

Elaborado Por:
Desarrolladores de Proyecto aul@Frontino.
Ing. MSc. Luis Bracho (Líder de Proyecto).
T.S.U Rosendo Angélica (Gestor de Configuración).

Noviembre,2012

www.aul@Frontino.org.ve
2
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

OBJETIVOS DEL CURSO

Dar a conocer el Modelado de Datos y las operaciones básicas que se pueden realizar
con SQL (Lenguaje Estructurado de Consultas), que tienen una aplicación directa con la
creación de aplicaciones en red.

Al finalizar el curso el participante estará en capacidad de:

 Obtener una visión del modelado de datos que necesita manejar la organización
utilizando diagramas entidad relación.

 Crear bases de datos y mantener tablas y vistas de una base de datos.

 Consultar (Query), actualizar (incluir, modificar y eliminar) datos almacenados en


tablas de una base de datos.

 Conocer la estructura de una aplicación que manipula una base de datos.

www.aul@Frontino.org.ve
3
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

MODELO DE DATOS

Mecanismo formal para representar y manipular información de manera general y


sistemática.

 Descripción de datos.

 Operaciones.

 Reglas de integridad.

Ejemplos de Modelos de Datos

 Modelos basados en grafos (en red y jerárquico)

 Modelo relacional

 Modelo multidimensional

 Modelos orientados a objetos

 Modelos lógicos

 …

www.aul@Frontino.org.ve
4
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

REPRESENTACION DE DATOS

 Ítems/Entidades/Objetos [sustantivos]: Objetos que existen en el “mundo” y que


son distinguibles de otros (un libro, un autor, un tema...).

 Atributos [adjetivos]: Propiedades asociadas a un conjunto de entidades (ISBN,


nombre…).

 Relaciones/Conexiones/Asociaciones [verbos]: Conexiones semánticas entre dos


conjuntos de entidades (escribe, trata...).

REPRESENTACIÓN DE DATOS

Representación Representación Representación


lógica física relacional

Tabla Archivo secuencial Relación

Fila Registro Tupla

Columna Campo Atributo

www.aul@Frontino.org.ve
5
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

DIAGRAMAS DE ENTIDAD - RELACIÓN

Es una técnica que nos permite modelar los datos que una organización administra.
Su objetivo es proporcionar un modelo independiente de cualquier almacenamiento de
datos y método de acceso.

Los elementos que lo conforman son entidad, relación, atributo y claves primarias.

Entidad: Es un objeto con significado real o abstracto acerca de las necesidades de


información de una organización. Se representa con un recuadro de puntas redondeadas
con un nombre en la parte superior, en letras mayúsculas y en singular.

Relación: es una asociación entre dos entidades referida a un nombre. Cada relación
tiene dos extremos, para cada uno de los cuales tiene un:

 Nombre

 Cardinalidad (cuántos)

 Opcionalidad (obligatoria u opcional)

Una relación es una asociación entre dos entidades referida a un nombre. Existen
tres tipos de relaciones:

 Uno a muchos.

 Muchos a uno.

 Muchos a muchos.

www.aul@Frontino.org.ve
6
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Atributo: es un elemento que permite describir a una entidad (Ejemplo: en la tabla


empleados, un atributo puede ser profesión).

Los atributos pueden ser:

- Obligatorios (deben tener un valor).

- Opcionales (pueden tener o no un valor)

- Claves primarias (únicos)

Para representar un atributo hay que escribir su nombre en singular y en minúsculas.

Clave: conjunto de atributos que permite identificar unívocamente a una entidad


dentro de un conjunto de entidades.

 Claves primarias son atributos únicos que identifican a una entidad.

 Clave alternativa: Cualquiera de las claves candidatas no elegidas por el


diseñador de la base de datos.

 Clave candidata: Superclave con un numero mínimo de atributos.

www.aul@Frontino.org.ve
7
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Relación (Conexión o Asociación): Conexión semántica entre dos conjuntos de


entidades.

www.aul@Frontino.org.ve
8
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo: Base de Datos de una Facultad. Requerimientos (restricciones semánticas)

 Los alumnos se matriculan de varias asignaturas (al menos una).


 Una asignatura puede tener varios alumnos matriculados.
 Todo departamento debe tener un director, que es un profesor.
 Un profesor puede impartir varios grupos de la misma asignatura
 Un grupo de una asignatura ha de estar impartido, al menos,
 Las clases de cada asignatura se imparten en Las clases de cada asignatura se
imparten en días, horas y aulas determinadas.
 Los atributos de cada entidad son “los habituales”.

www.aul@Frontino.org.ve
9
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

www.aul@Frontino.org.ve
10
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

PROCESO DE NORMALIZACIÓN

Es un procedimiento que asegura que un modelo de datos es optimo a los


requerimientos de almacenamiento de la base de datos. Con este proceso se busca
minimizar la duplicación de datos y proporcionar la flexibilidad necesaria para soportar
requisitos funcionales.

Para normalizar la base de datos se aplican seis reglas (formas normales):

1FN: Define un solo valor para un atributo. Se aplica, cuando existe más de un valor
a la vez para un atributo o para más de un atributo con el mismo nombre. Permite
eliminar los atributos repetidos o grupos de atributos agregando una nueva entidad.

Ejemplo:

www.aul@Frontino.org.ve
11
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

2 FN

Dependencia Funcional: Cada atributo que no forme parte de la clave primaria,


debe depender de esta.

Si una entidad tiene un identificador único compuesto de más de un atributo y/o


relación, y si otro atributo depende sólo de una parte de este identificador compuesto,
entonces el atributo no depende funcionalmente de la clave primaria.

Elimina y/o ubica atributos dependientes sólo en parte del identificador único.

Ejemplo:

Entonces una entidad está en segunda forma normal cuando está en 1FN y todos sus
atributos no claves dependen únicamente de la clave primaria.

www.aul@Frontino.org.ve
12
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

3FN: Consiste en eliminar los atributos dependientes de atributos que no son parte
del identificador único:

La Tercera Forma Normal, es el mecanismo final para identificar las entidades y/o
relaciones perdidas y generalmente se da cuando nos encontramos con relaciones de
muchos a muchos.

Convierte las relaciones de muchos a muchos en dos entidades de uno a muchos y


agrega una entidad de intersección.

Una tabla esta en 3FN, cuando esta en 2FN y todos los atributos no claves dependen
completamente de la clave primaria. Es decir, que no hay atributos que dependan en
forma parcial y que además no se den relaciones de muchos a muchos.

 BCFN (BoyceCode)
 4FN
 5FN
 Se considera un modelo normalizado cuando cumple con la tercera forma
normal.
www.aul@Frontino.org.ve
13
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

EL MODELO DE DATOS RELACIONAL

En un sistema de base de datos relacional la información se organiza en forma de


tablas.

Cada columna contiene un tipo o clase de información.

Cada fila (registro) reúne al conjunto de columnas de la tabla. Por ejemplo, la


columna de sueldo básico en la fila de (nombre empleado) tiene un valor de 800.000 Bs.

www.aul@Frontino.org.ve
14
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

La información de una tabla puede ser relacionada con la información de otra tabla.
Cada empleado en la tabla EMPLEADOS tiene un numero de departamento
(id_departamento), el cual referencia al número de departamento en la tabla
DEPARTAMENTO. Por ejemplo, MARÍA (nombre_emp = MARÍA) JIMENEZ (apellido_emp =
JIMENEZ), trabaja en el departamento 20 (id_departamento = 20), y el departamento 20
es el departamento de VENTAS (nombre_dep = VENTAS) que está ubicado en la ciudad de
CARACAS (ciudad_dep = CARACAS).

www.aul@Frontino.org.ve
15
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

MODELADO SEMÁNTICO

Consiste en estudiar los datos que se pretenden almacenar en la base de datos antes
de elegir el modelo de datos concreto que se va a usar en la base de datos.

“El modelado semántico permite separar el análisis (¿qué?), del diseño (¿cómo?)”.

www.aul@Frontino.org.ve
16
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SISTEMAS DE GESTIÓN DE BASE DE DATOS

 Es un software que se encarga de administrar la base de datos. Entre los sistemas de


gestión de base de datos más utilizados se encuentran: ORACLE 9i, SyBase, Informix,
DB2, MSSQL Server 2000, MySQL (open source, es la más rápida y más sencilla de
implementar), Access 2000, PostgreSQL (open source, es la más indicada para
grandes bases de datos de misión crítica).

 Proporcionan herramientas para crear, modificar y eliminar datos de una base de


datos.

 Cuentan con herramientas que te permiten interrogar a la base de datos y generar


interfaces y reportes pera mostrar los resultados.

www.aul@Frontino.org.ve
17
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL

SQL (lenguaje estructurado de consultas) no es más que un lenguaje estándar de


comunicación con bases de datos. Hablamos por tanto de un lenguaje normalizado que
nos permite trabajar con cualquier tipo de lenguaje (ASP, PHP, JSP) en combinación con
cualquier manejador de base de datos (Oracle, MsSQL Server, MySQL, etc.).

El hecho de que sea estándar no quiere decir que sea idéntico para cada manejador
de base de datos. En efecto, determinados manejadores de bases de datos implementan
funciones específicas que no tienen necesariamente que funcionar en otras.

www.aul@Frontino.org.ve
18
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

INSTRUCCIÓN SELECT

Los requisitos mínimos para ejecutar esta


instrucción son:

SELECT… FROM…, dependiendo de la


complejidad query se le van agregando las otras
cláusulas.

SELECCIONANDO COLUMNAS

Existen dos formas diferentes de mostrar las columnas de una tabla:

Sintaxis:

SELECT nombre_columna1, nombre_columna2

FROM nombre_tabla;

SELECT *

FROM nombre_tabla;

Ejemplo: Muestre todas las columnas con información acerca de cada departamento

www.aul@Frontino.org.ve
19
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL> SELECT *
1 FROM departamentos;

Id_departamento nombre_dep ubicación_dep


----------------- ------------- ---------------
10 PROGRAMACION VALENCIA
20 VENTAS CARACAS
30 ALMACEN CARACAS
40 OPERACIONES MARACAIBO

Ejemplo: Muestre el nombre y numero de todos los departamentos.

SQL> SELECT nombre_dep, id_departamento


FROM departamentos;

nombre_dep Id_departamento
------------ ----------------

PROGRAMACION 10
VENTAS 20
ALMACEN 30
OPERACIONES 40

www.aul@Frontino.org.ve
20
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

La cláusula DISTINCT permite eliminar las registros duplicados.


Sintaxis:
SELECT DISTINCT nombre_columna1, nombre_columna1
FROM nombre_tabla;

Ejemplo: Muestre los diferentes cargos en la tabla EMPLEADO.

SQL> SELECT DISTINCT cargo


1 FROM empleados;

cargo
----------------
PROGRAMADOR
VENDEDOR
GERENTE
ANALISTA
PRESIDENTE

SELECCIONANDO FILAS

Se utiliza la cláusula WHERE acompañada de una serie de operadores.


Sintaxis:
SELECT…nombre_columna1, nombre_columna2
FROM…nombre_tabla
WHERE condicion

www.aul@Frontino.org.ve
21
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Operadores matemáticos
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Distinto
= Igual

Operadores lógicos
AND
OR
NOT

Otros Operadores
Selecciona los registros cuyo valor de campo se asemeje, no teniendo en
LIKE
cuenta mayúsculas y minúsculas.
Da un conjunto de valores para un campo para los cuales la condición de
IN y NOT IN
selección es (o no) valida.
IS NULL e IS NOT Selecciona aquellos registros donde el campo especificado esta (o no)
NULL vacío.
BETWEEN...AND Selecciona los registros comprendidos en un intervalo.
DISTINCT Selecciona los registros no coincidentes.
DESC Clasifica los registros por orden inverso.

Comodines
* Sustituye a todos los campos.
% Sustituye a cualquier cosa o nada dentro de una cadena.
_ Sustituye un solo carácter dentro de una cadena.

www.aul@Frontino.org.ve
22
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Nota: para mantener la precedencia en los operadores, las expresiones deben ser
escritas entre paréntesis.

Ejemplo: muestre numero del empleado, nombre, apellido y sueldo básico de todos los
empleados del departamento 30.

SQL> SELECT id_empleado, nombre_emp, apellido_emp, sueldo_basico


1 FROM empleados
2 WHERE id_departamento = '30';

id_empleado nombre_emp apellido_emp sueldo_basico


------------- -------------- -------------- ---------------
7499 PEDRO PEREZ 600.000
7521 JUAN RODRIGUEZ 500.000
7654 CARMEN MENDOZA 650.000
7698 ANTONIO GIL 1.250.000
7844 MIRIAN PABON 650.000
7900 CARLOS DAZA 600.000

SELECCIONANDO FILAS

Ejemplo: muestre el nombre, apellido y cargo de todos los empleados


exceptuando a los gerentes.

www.aul@Frontino.org.ve
23
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL> SELECT nombre_emp, apellido_emp, cargo


1 FROM empleados
2 WHERE cargo <> 'GERENTE';

nombre_emp apellido_emp cargo


-------------- -------------- ------
MARIA JIMENEZ PROGRAMADOR
PEDRO PEREZ VENDEDOR
JUAN RODRIGUEZ VENDEDOR
CARMEN MENDOZA VENDEDOR
DANIEL ACURERO ANALISTA
DAVID SOTELDO PRESIDENTE
MIRIAN PABON VENDEDOR
PATRICIA COLMENAREZ PROGRAMADOR
CARLOS DAZA PROGRAMADOR
ANTONIETA PEREZ ANALISTA
SIMON JIMENEZ PROGRAMADOR

Para mostrar filas en un rango de valores utilice BETWEEN.

Ejemplo: muestre el nombre, apellido y numero de departamento para aquellos


empleados ingresados entre 01/01/2001 y 01/01/2002.

SELECT nombre_emp, apellido_emp, cargo, id_departamento,


SQL>
fecha_ingreso
1 FROM empleados
2 WHERE fecha_ingreso BETWEEN '2001/01/01' AND '2002/01/01';

www.aul@Frontino.org.ve
24
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp cargo id_departamento fecha_ingreso


------------- -------------- ------ ------------ --------------
JUAN RODRIGUEZ VENDEDOR 30 2001-05-15
ANTONIO GIL GERENTE 30 2001-01-18
JOSE DIAZ GERENTE 10 2001-05-25
PATRICIA COLMENAREZ PROGRAMADOR 20 2001-02-18

Para mostrar filas basados en una lista o conjunto utilizar el operador IN o NOT IN.

Ejemplo: muestre el nombre del empleado, cargo y número de departamento para todos los
empleados programadores y analistas.

SQL> SELECT nombre_emp, apellido_emp, cargo, id_departamento


1 FROM empleados
2 WHERE cargo IN ('PROGRAMADOR', 'ANALISTA');

nombre_emp apellido_emp cargo id_departamento


------------- -------------- ------ ----------------
MARIA JIMENEZ PROGRAMADOR 20
DANIEL ACURERO ANALISTA 20
PATRICIA COLMENAREZ PROGRAMADOR 20
CARLOS DAZA PROGRAMADOR 30
ANTONIETA PEREZ ANALISTA 20
SIMON JIMENEZ PROGRAMADOR 10

www.aul@Frontino.org.ve
25
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Para mostrar filas basadas en caracteres comodines utilice el operador LIKE.

Ejemplo: muestre el nombre, apellido, cargo, numero de departamento y fecha de


ingreso de aquellos empleados cuyo nombre comience con la letra M.

SELECT nombre_emp, apellido_emp, cargo, id_departamento,


SQL>
fecha_ingreso.
1 FROM empleados
2 WHERE nombre_emp LIKE 'M%';

nombre_emp apellido_emp cargo id_departamento fecha_ingreso


------------- -------------- ------ ---------------- --------------
MARIA JIMENEZ PROGRAMADOR 20 2000/12/17
MIRIAN PABON VENDEDOR 30 2002/11/20

ORDENANDO LOS RESULTADOS

Para ordenar los resultados de una consulta se utiliza la cláusula ORDER BY.
Se puede dar orden ascendente, descendente, por múltiples columnas y por la posición
de la columna.

Sintaxis:

SELECT nombre_columna1, nombre_columna2


FROM nombre_tabla
WHERE condición
ORDER BY nombre_columna;

www.aul@Frontino.org.ve
26
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo orden ascendente: muestre el sueldo básico, cargo, apellido y nombre de


los empleados del departamento 10 en orden ascendente por salario básico.

SQL> SELECT sueldo_basico, cargo, nombre_emp, apellido_emp


1 FROM empleados
2 WHERE id_departamento = '10'
3 ORDER BY sueldo_basico;

SQL> SELECT sueldo_basico, cargo, nombre_emp, apellido_emp


1 FROM empleados
2 WHERE id_departamento = '10'
3 ORDER BY sueldo_basico;

sueldo_basico cargo nombre_emp apellido_emp


--------------- ------ ------------- --------------
800.000 PROGRAMADOR SIMON JIMENEZ
1.400.000 GERENTE JOSE DIAZ
1.500.000 PRESIDENTE DAVID SOTELDO

sueldo_basico cargo nombre_emp apellido_emp


--------------- ------ ------------- --------------
800.000 PROGRAMADOR SIMON JIMENEZ
1.400.000 GERENTE JOSE DIAZ
1.500.000 PRESIDENTE DAVID SOTELDO

www.aul@Frontino.org.ve
27
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo orden descendente: muestre el sueldo básico, cargo, apellido y nombre de los
empleados del departamento 10 en orden descendente por salario básico.

SQL> SELECT sueldo_basico, cargo, nombre_emp, apellido_emp


1 FROM empleados
2 WHERE id_departamento = '10'
3 ORDER BY sueldo_basico DESC;

sueldo_basico cargo nombre_emp apellido_emp


--------------- ------ ------------- --------------
1.500.000 PRESIDENTE DAVID SOTELDO
1.400.000 GERENTE JOSE DIAZ
800.000 PROGRAMADOR SIMON JIMENEZ

Ejemplo orden por múltiples columnas: muestre el apellido, nombre, cargo y


sueldo básico para aquellos empleados del departamento 30. Ordene los resultados por
cargo. Si hay más de un empleado con el mismo cargo, ordene por salario básico en orden
descendente y finalmente por apellido.

SQL> SELECT apellido_emp, nombre_emp, cargo, sueldo_básico


1 FROM empleados
2 WHERE id_departamento = '30'
3 ORDER BY cargo, sueldo_basico DESC, apellido_emp;

www.aul@Frontino.org.ve
28
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

apellido_emp nombre_emp sueldo_basico cargo


------------- ------------- --------------- ------
JIMENEZ SIMON 800.000 PROGRAMADOR
DIAZ JOSE 1.400.000 GERENTE
SOTELDO DAVID 1.500.000 PRESIDENTE

apellido_emp nombre_emp cargo sueldo_basico


------------- ------ ---------------
GIL ANTONIO GERENTE 1250000
DAZA CARLOS PROGRAMADOR 600000
MENDOZA CARMEN VENDEDOR 650000
PABON MIRIAN VENDEDOR 650000
PEREZ PEDRO VENDEDOR 600000
RODRIGUEZ JUAN VENDEDOR 500000

Ejemplo orden por posición de columnas: muestre el apellido, nombre, sueldo básico y
cargo de los empleados del departamento 10 en orden ascendente por salario básico.

SQL> SELECT apellido_emp, nombre_emp, sueldo_basico, cargo


1 FROM empleados
2 WHERE id_departamento = '10'
3 ORDER BY 3;

www.aul@Frontino.org.ve
29
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

LABORATORIO 1

Use la tabla empleados para completar los siguientes ejercicios:

1. Muestre el nombre y la fecha de ingreso de cada empleado.

2. Muestre los empleados que ganan más de 800.000 Bs.

3. Muestre los empleados que no son ni analista ni vendedor.

4. Muestre el nombre de aquellos empleados cuyo nombre contienen la


letra S.

5. Muestre el nombre y salario de aquellos empleados quienes ganan


menos que su comisión.

6. Muestre los empleados que fueron contratados en el año 2001.

7. Muestre los nombres y cargo de todos los empleados que trabajan en


el departamento 10 y 20.

www.aul@Frontino.org.ve
30
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

CREANDO TABLAS, VISTAS E ÍNDICES

CREANDO UNA TABLA

Para crear tablas en una base de datos, se utiliza el comando CREATE TABLE, el
cual requiere del nombre de la tabla, nombre de la columna y tipo de dato de la
columna.
Sintaxis:

CREATE TABLE nombre_tabla (nombre_columna1 tipo de dato


columna1,nombre_columna2 tipo de dato columna2,);

Ejemplo: crear la tabla empleados:

SQL> CREATE TABLE empleados


1 (
2 id_empleado CHAR (04) not null,
3 nombre_emp CHAR (15) not null,
4 apellido_emp CHAR (15) not null,
5 cargo CHAR (15) not null,
6 id_jefe CHAR (04),
7 fecha_ingreso DATE not null,
8 sueldo_basico NUMERIC (10,2) not null,
9 monto_comision NUMERIC (10,2),
10 id_departamento CHAR (02) not null,
11 PRIMARY KEY (id_empleado)
12 );

www.aul@Frontino.org.ve
31
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Tipos de datos:

TIPO DESCRIPCIÓN
Tinyint [Unsigned] Entero de 0 a 255 o de -128 a 128 si dispone de signo.
Smallint [Unsigned] Entero de 0 a 65535 o de -32768 a 32768 si dispone de signo.
Entero normal. Rango de -2147483648 a 2147483648 si
Int Integer
dispone de signo o de 0 a 4294967295 si no disponede él.
Número en coma flotante de simple precisión si no se pasa
Float [( M, D) ] ningún argumento. M es el número de dígitos y D es el
número de decimales.
Double [( M, D) ] Número en coma flotante de doble precisión. Siempre
Double Precision [( M, D)] dispone de signo. M es el número de dígitos y D es el número
Real [( M, D)] de decimales.
Número almacenado como una cadena de caracteres. M es el
Decimal [(M [, D ] )]
número total de dígitos sin contar el signo ni el punto
Numeric (M , D)
decimal y D es el número de decimales.
Tipo fecha. Admite formatos "YYYY-MM-DD" o "YY-MM-DD" o
Date "YYMMDD". Rango desde el 01-01-1000 al 31-12-9999. Se
pueden asignar como cadenas de caracteres.
Tipo hora. Admite formato "HH:MM:SS" o "HHMMSS" o "HHMM"
Time
o "HH".
Cadena de caracteres de la longitud indicada. Se reserva el
Char (logitud)
espacio en caracteres aunque no se usen.
Cadena de caracteres de la longitud indicada que se
Varchar (logitud) almacena con su ocupación. El espacio sobrante no se
reserva. Máxima logitud : 255 caracteres.

Tipo destinado a almacenar bits sin interpretar. Se suelen


usar para almacenar texto más largo que 255 caracteres. La
Blod
diferencia entre Blod y Text radica en que las comparaciones
Text en datos de tipo Blod diferencian mayúsculas de minúsculas y
en Text no (usando el alfabeto anglosajón).
www.aul@Frontino.org.ve
32
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Crear una nueva tabla usando la cláusula AS en el CREATE TABLE, usando atributos de
columnas y datos de una tabla existente.
Sintaxis:

CREATE TABLE nombre_tabla (nombre_columna1, nombre_columna2)


AS query

Ejemplo: crear una tabla denominada fecha_ingreso que contenga las columnas
id_empleado, apellido_emp, nombre_emp y fecha_ingreso de los empleados asociados al
departamento 10, usando la tabla empleados.

SQL> CREATE TABLE fecha_ingreso


1 AS SELECT id_empleado, apellido_emp, nombre_emp, fecha_ingreso
2 FROM empleados
3 WHERE id_departamento = '10';

MODIFICANDO LA ESTRUCTURA DE UNA TABLA

Use la declaración ALTER TABLE, para modificar la definición de una tabla:

Agregando columnas (Cláusula ADD).


Modificando definición de columnas (tipos de datos restricciones NULL y NOT NULL,

Sintaxis ADD:

ALTER TABLE nombre_tabla


ADD (nombre_columna1 tipo de dato, nombre_columna2 tipo de dato);

Ejemplo: Agregar una columna a la tabla fecha_ingreso para el numero de gerente.

SQL> ALTER TABLE fecha_ingreso


1 ADD (id_jefe CHAR (4));

www.aul@Frontino.org.ve
33
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Sintaxis MODIFY:

ALTER TABLE nombre_tabla


MODIFY (nombre_columna1 tipo de dato, nombre_columna2 tipo de dato);

Ejemplo: modifique la tabla fecha_ingreso, incrementando la longitud de la columna


nombre_emp de 15 a 18 caracteres.

SQL> ALTER TABLE fecha_ingreso


1 MODIFY nombre_emp CHAR (18);

Para eliminar una tabla de la base de datos, se utiliza la cláusula DROP


TABLE

Sintaxis:

DROP TABLE nombre_tabla

Ejemplo: eliminar la tabla fecha_ingreso


SQL> DROP TABLE fecha_ingreso;

www.aul@Frontino.org.ve
34
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

CREANDO VISTAS

Una vista es un objeto de la base de datos que representa lógicamente a una o más
tablas. Una vista no contiene datos. Toda la data se deriva del interior de las tablas.

Ventajas de uso de vistas:

 Proporciona seguridad.
 Conveniencia.
 Perpestiva.

La creación de las vistas es similar a la creación de tablas pero usando la


cláusula AS SELECT.
Sintaxis:

CREATE VIEW nombre_vista (alias, alias)


AS query

www.aul@Frontino.org.ve
35
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo: crear una vista que contenga el número del empleado, apellido, nombre y cargo
para todos los empleados del departamento 10.

SQL> CREATE VIEW vempleados


1 AS SELECT id_empleado, apellido_emp, nombre_emp, cargo
2 FROM empleados
3 WHERE id_departamento = '10';

SQL> SELECT *
1 FROM vempleados;

id_empleado nombre_emp apellido_emp cargo


------------- ------------- -------------- ------
7782 JOSE DIAZ GERENTE
7839 DAVID SOTELDO PRESIDENTE
7934 SIMON JIMENEZ PROGRAMADOR

Para eliminar una vista de la base de datos, se utiliza la cláusula DROP VIEW
Sintaxis:

DROP VIEW nombre_vista

Ejemplo: eliminar la vista vempleados

SQL> DROP VIEW vempleados;

www.aul@Frontino.org.ve
36
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

CREANDO INDICES

Los índices son estructuras opcionales asociadas a las tablas, usadas para aumentar
la velocidad de ejecución de las consultas y/ o garantizar unicidad.

Reglas generales para crear un índice:

 La columna es usada frecuentemente en la cláusula WHERE.


 Muchos valores son únicos (en el mejor de los casos).
Amplio rango de valores.
Una tabla puede tener cualquier numero de índices.

Para crear los índices se utiliza la cláusula CREATE INDEX


Sintaxis:

CREATE INDEX nombre_indice


ON nombre_tabla (nombre_columna1, nombre_columna1)

Ejemplo: crear un indice simple en la columna nombre_emp de la tabla empleados.

www.aul@Frontino.org.ve
37
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Índice usado:

SQL> SELECT *
1 FROM empleados
2 WHERE nombre_emp = 'JUAN';

Índice no usado:
SQL> SELECT *
1 FROM empleados;

Para eliminar un índice de la base de datos, se utiliza la cláusula DROP.


Sintaxis:

DROP INDEX nombre_indice ON nombre_tabla;

Ejemplo: eliminar el indice de la columna nombre_emp de la tabla empleados.


SQL> DROP INDEX i_nom_emp ON empleados;

Crear indices únicos para asegurar que no contendrán dos filas de idénticos valores en
la columna indexada o columnas.
Sintaxis:

CREATE UNIQUE INDEX nombre_indice


ON nombre_tabla (nombre_columna1, nombre_columna2);

Ejemplo: crear un indice en la columna id_empleado de la tabla empleados para


incrementar el rendimiento y garantizar valores únicos para el número de empleados.

SQL> CREATE UNIQUE INDEX i_idemp


1 ON empleados (id_empleado);

www.aul@Frontino.org.ve
38
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

LABORATORIO 2 Y 3

1. Cree un duplicado de la tabla EMPLEADOS. llámela EMP_PRUEBA.

2. Agregue una nueva columna llamada sexo a la tabla EMP_PRUEBA, con un


tipo de dato carácter y la longitud de 1.

3. Los usuarios han cambiado de idea. En lugar de almacenar el sexo como


F o M, ellos prefieren almacenar el sexo como MASCULINO y FEMENINO.
Debes incrementar el tamaño de la columna sexo.

4. Cree un índice llamado i_idemp en la tabla empleados que no permita


número de empleados duplicados.

www.aul@Frontino.org.ve
39
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

INSERTANDO, ACTUALIZANDO Y ELIMINANDO DATOS

INSERTANDO FILAS (INSTRUCCIÓN INSERT)

Para insertar una fila en una tabla debe usar la sentencia o instrucción INSERT
Sintaxis:

INSERT INTO nombre_tabla (nombre_columna1, nombre_columna2) VALUES (valor1,


valor2);

Ejemplo: Muestre la estructura de la tabla departamentos.


SQL> DESCRIBE departamentos;
Nombre Null tipo
--------- ----- ----
id_departamento NOT NULL CHAR (2)
nombre_dep NOT NULL CHAR (15)
ubicación_dep NOT NULL CHAR (20)

Inserte el departamento de Finanzas, departamento 50 ubicado en Mérida, en la


tabla departamentos.

SQL> INSERT INTO departamentos


1 VALUES ('50', 'FINANZAS','MERIDA');

Insertar valores en todas las columnas:

Ejemplo: insertar valores en todas las columnas de la tabla empleados para un nuevo
empleado.
SQL> INSERT INTO empleados

1VALUES ('1234','MARIO','GARCIA','VENDEDOR','7698'.'2002/11/18', 600000, NULL, '30');

www.aul@Frontino.org.ve
40
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

ACTUALIZANDO FILAS (INSTRUCCIÓN UPDATE)

Para cambiar o actualizar los datos en una tabla específica utilice la


instrucción UPDATE
Sintaxis:

UPDATE nombre_tabla
SET nombre_columna1 = valor, nombre_columna2 = valor
WHERE condicion

Ejemplo: muestre la estructura de la tabla empleados.


SQL> DESCRIBE empleados;

Nombre Null tipo


--------- ----- ----
id_empleado NOT NULL CHAR (04)
nombre_emp NOT NULL CHAR (15)
apellido_emp NOT NULL CHAR (15)
cargo NOT NULL CHAR (15)
id_jefe CHAR (04)
fecha_ingreso NOT NULL DATE
sueldo_basico NOT NULL NUMERIC (10,2)
monto_comision NUMERIC (10,2)
id_departamento NOT NULL CHAR (02)

Ejemplo: Cambie el empleado numero 7566 a la posición Vendedor en el


departamento 30.
SQL> UPDATE empleados
1 SET cargo = 'VENDEDOR' , id_departamento = '30'
2 WHERE id_empleado = '7566';

www.aul@Frontino.org.ve
41
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Actualizar múltiples columnas en una sola fila.

Ejemplo: transfiera el empleado 7788 (Daniel Acurero) a Vendedor y dele un 5% de


aumento en el sueldo básico.

SQL> UPDATE empleados


SET cargo = 'VENDEDOR', sueldo_basico = sueldo_basico * 1.05, id_departamento
1
= '30'
2 WHERE id_empleado = '7788';

SELECT id_empleado, nombre_emp, apellido_emp, sueldo_basico,


SQL>
id_departamento
1 FROM empleados
2 WHERE id_empleado = '7788';

Id_empleado Nombre_emp Apellido_emp Sueldo_basico Id_departamento


------------- -------------- -------------- --------------- -----------------
7788 DANIEL ACURERO 735000 30

Actualizar multiples filas.

Ejemplo: cambiar el titulo del cargo VENDEDOR a VENTAS.

SQL> UPDATE empleados


1 SET cargo = 'VENTAS'
2 WHERE cargo = 'VENDEDOR';

www.aul@Frontino.org.ve
42
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL> SELECT nombre_emp, apellido_emp, cargo, id_departamento


1 FROM empleados
2 WHERE cargo = 'VENTAS';

Nombre_emp Apellido_emp cargo Id_departamento


-------------- -------------- ------ -----------------
PEDRO PEREZ VENTAS 30
JUAN RODRIGUEZ VENTAS 30
PETRA HERNÁNDEZ VENTAS 30
CARMEN MENDOZA VENTAS 30
DANIEL ACURERO VENTAS 30
MIRIAN PABON VENTAS 30
MARIO GARCIA VENTAS 30

Cambie el titulo del cargo VENTAS al anterior.

SQL> UPDATE empleados


1 SET cargo = 'VENDEDOR'
2 WHERE cargo = 'VENTAS';

ELIMINANDO FILAS (INSTRUCCIÓN DELETE)

Elimine filas de una tabla con la instrucción DELETE.


Sintaxis:

DELETE FROM nombre_tabla


WHERE condicion;

Ejemplo: muestre la estructura de la tabla empleados

www.aul@Frontino.org.ve
43
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL> DESCRIBE empleados;

Nombre Null tipo


--------- ----- ----
id_empleado NOT NULL CHAR (04)
nombre_emp NOT NULL CHAR (15)
apellido_emp NOT NULL CHAR (15)
cargo NOT NULL CHAR (15)
id_jefe CHAR (04)
fecha_ingreso NOT NULL DATE
sueldo_basico NOT NULL NUMERIC (10,2)
monto_comision NUMERIC (10,2)
id_departamento NOT NULL CHAR (02)

Elimine el empleado numero 7369 (MARIA JIMENEZ) de la tabla empleados para reflejar
esta terminación.

DELETE FROM empleados


WHERE id_empleado = '7369';

Pregunta: ¿Qué pasaría si la instrucción anterior no tuviera la cláusula WHERE?.

www.aul@Frontino.org.ve
44
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

LABORATORIO 4

Use la tabla EMPLEADOS y DEPARTAMENTOS para completar los siguientes


ejercicios:

1. Insértate a ti mismo en la tabla EMPLEADOS.

2. Agrega un nuevo departamento en la tabla DEPARTAMENTOS con el número


de departamento 66, ubicada en PORTUGUESA y el nombre de departamento EDUCACIÓN.

3. Te acaban de aumentar 200.000 Bs. en el sueldo, actualiza tu registro.

4. Elimínate de la tabla empleados.

5. Trata de insertar un empleado con el numero de empleado duplicado en la


tabla empleados, para probar el índice que creaste en el tema anterior.

6. Introduce una consulta para observar los nuevos cambios realizados en la


tabla DEPARTAMENTOS.

www.aul@Frontino.org.ve
45
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

EJECUTANDO FUNCIONES SOBRE DATOS NUMÉRICOS

Para ejecutar operaciones de cálculo sobre datos, debes usar los siguientes
operadores aritméticos:

+ SUMAR
- RESTAR
* MULTIPLICAR
/ DIVIDIR
PRECEDENCIA EN LOS
()
OPERADORES

Los operadores aritméticos pueden ser usados in muchas declaraciones SQL

SELECT…
FROM…
WHERE…
GROUP BY…
HAVING…
ORDER BY…

Muestre los resultados de los cálculos como si fueran columnas con expresiones
aritméticas en declaraciones SELECT

Ejemplo: muestre el nombre, apellido, sueldo básico, comisión y el sueldo


neto para aquellos vendedores cuya comisión es mayor al 25% de su sueldo
básico.

SELECT nombre_emp, apellido_emp, sueldo_basico, monto_comision,


SQL>
sueldo_básico+ monto_comision
1 FROM empleados
2 WHERE cargo = 'VENDEDOR'
3 AND monto_comision > .25 * sueldo_basico
4 ORDER BY 4;

www.aul@Frontino.org.ve
46
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

sueldo_básico+
nombre_emp apellido_emp sueldo_basico monto_comision
monto_comision
---------------- ----------------- ------------------- ---------------------- -------------------------
JUAN RODRIGUEZ 500000 200000 700000
PEDRO PEREZ 600000 300000 900000
CARMEN MENDOZA 650000 700000 1350000

Una fila sin ningún valor en una columna es vista por que contiene un valor nulo (NULL).
Cuando una expresión o función individual se refiere a una columna que contiene un valor
nulo, el resultado también es nulo.

Ejemplo: muestre el nombre, apellido, sueldo anual más el monto de la comisión para
todos los vendedores. Ordene los resultados por sueldo anual.

SELECT nombre_emp, apellido_emp, sueldo_basico, monto_comision,


SQL>
12*sueldo_basico+monto_comision SUELDO_ANUAL
1 FROM empleados
2 WHERE cargo = 'VENDEDOR'
3 ORDER BY 4;

nombre_emp apellido_emp sueldo_basico monto_comision SUELDO_ANUAL


---------------- ----------------- ------------------- ---------------------- -----------------------
PETRA HERNANDEZ 1000000 NULL NULL
DANIEL ACURERO 735000 NULL NULL
MIRIAN PABON 650000 NULL NULL
MARIO GARCIA 600000 NULL NULL
JUAN RODRIGUEZ 500000 200000 6200000
PEDRO PEREZ 600000 300000 7500000
CARMEN MENDOZA 650000 700000 8500000

www.aul@Frontino.org.ve
47
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Las funciones numéricas permiten entrada numérica y retornan valores numéricos.

FUNCIÓN EJEMPLO RESULTADO


MOD MOD (7,5) El resto de 7 dividido entre 5
SQRT SQRT (25) La raíz cuadrada de 25
ROUND Sueldo redondeado a 2 dígitos después del
ROUND (sueldo,2)
decimal
TRUNC Sueldo truncado a 2 dígitos después del
TRUNC (sueldo,2)
decimal
POWER POWER (sueldo,2) Elevar el sueldo a la potencia 3

EJECUTANDO FUNCIONES SOBRE DATOS DE FECHA

Suma un número de día a una fecha,


DATE + NUMBER
produciendo una fecha
Resta un número de día a una fecha,
DATE - NUMBER
produciendo una fecha
Sustrae una fecha de otra, produciendo un
DATE-DATE
número de días

Ejemplo: muestre el nombre, apellido, fecha de ingreso y la fecha de la próxima


supervisión (se hace cada 90 días) para los empleados del departamento 10.

SELECT nombre_emp, apellido_emp, fecha_ingreso, fecha_ingreso + 90


SQL>
"REVISION"
1 FROM empleados
2 WHERE id_departamento = '10';

www.aul@Frontino.org.ve
48
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp fecha_ingreso REVISION


---------------- ----------------- ------------------- --------------
JOSE DIAZ 2001-05-25 2001-08-23
DAVID SOTELDO 2000-01-01 2000-03-31
SIMÓN JIMENEZ 2002-02-05 2002-05-06

Valores y funciones de fecha:

FUNCIÓN EJEMPLO RESULTADO


ADD_MONTHS Retorna la fecha 6 meses después de fecha
(fecha_ingreso, 6) de ingreso
ADD_MONTHS
ADD_MONTHS Retorna la fecha 6 meses antes de fecha de
(fecha_ingreso, - 6) ingreso.
Retorna el último día del mes que contiene
LAST_DAY LAST_DAY (fecha_ingreso)
la fecha de ingreso.
NEXT_DAY (fecha_ingreso, Retorna la fecha del primer Lunes después
NEXT_DAY
'FRIDAY') de la fecha de ingreso.
MONTHS_BETWE MONTHS_BETWEEN Retorna los meses entre hoy y la fecha de
EN (SYSDATE, fecha_ingreso) ingreso.
Retorna la fecha y hora que está
SYSDATE SYSDATE (no requiere
transcurriendo.
argumentos)

Ejemplo: muestre el nombre, apellido, fecha de ingreso y la fecha de revisión en 6


meses para los empleados del departamento 10.

SELECT nombre_emp, apellido_emp, fecha_ingreso, ADD_MONTHS


SQL>
(fecha_ingreso, 6 ) "REVISION"
1 FROM empleados
2 WHERE id_departamento = '10';

www.aul@Frontino.org.ve
49
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp fecha_ingreso REVISION


---------------- ----------------- ------------------- --------------
JOSE DIAZ 2001-05-25 2001-11-25
DAVID SOTELDO 2000-01-01 2000-07-01
SIMÓN JIMENEZ 2002-02-05 2002-08-05

Valores y funciones de fecha:

ELEMENTO DESCRIPCIÓN
DD Días del mes (Ejemplo: 31).
DY Días de la semana (Ejemplo: FRI).
Nombre del día en mayúsculas, compreso con blancos para longitud de
DAY
9 caracteres. (MONDAY).
DDSPTH Nombre del día en mayúsculas, abreviado. (Ejemplo: TWELFTH).
MM Mes (01 - 12) (Ejemplo: JAN = 01).
MON Nombre del mes en mayúsculas, 3 letras abreviadas (Ejemplo: JAN).
Nombre del mes en mayúsculas, compreso con blancos para longitud
MONTH
de 9 caracteres. (JANUARY).
YY Dos dígitos del año (Ejemplo: 02).
YYYY Cuatro dígitos del año (Ejemplo: 2002).
HH:MI:SS Horas: Minutos: Segundos (Ejemplo: 09:16:23).
Modo completo: elementos posteriores compresos con rellenos
fm
blancos, permitiendo un resultado de longitud variable.

Formato para mostrar valores de fecha con la función de conversión TO_CHAR

Ejemplo: mostrar las fechas de contrato para todos los empleados del departamento 20
en formato DD, de Mes y YYYY.

www.aul@Frontino.org.ve
50
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Fecha de Ingreso
-----------------------
05 de Mayo 2000
30 de Mayo 2002
02 de Febrero 2000
18 de Febrero 2001
17 de Diciembre 2000

EJECUTANDO FUNCIONES SOBRE DATOS DE CADENAS

Para mostrar los resultados de las consultas de una manera más comprensible,
combina las columnas y constantes de tipo caracter.

Ejemplo: muestre los nombres de departamentos combinados con la ubicación, dentro de


una única cabecera DEPARTAMENTOS.

SQL> SELECT nombre_dep | | ' - ' | | ubicación_dep DEPARTAMENTOS


1 FROM departamentos;

DEPARTAMENTOS
-------------------
Programación - Valencia
Ventas - Caracas
Almacén - Caracas
Operaciones - Maracaibo
Educación - Portuguesa
Finazas - Merida

www.aul@Frontino.org.ve
51
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

FUNCIÓN EJEMPLO RESULTADO


Retorna la primera letra de cada nombre en
INICAP
INITCAP mayúsculas, todos los demás en minúsculas.
(nombre_dep)
(Ejemplo: Finanzas)
UPPER Retorna todos los caracteres en serie
UPPER
(nombre_dep) forzados a mayúsculas. (Ejemplo: FINANZAS)
LOWER Retorna todos los caracteres en serie
LOWER
(nombre_dep) forzados a minúsculas. (Ejemplo: finanzas)
Comenzando en la primera posición, retorna
SUBSTR SUBSTR (cargo,1,5)
5 caracteres. (Ejemplo: GEREN)
Retorna el número de caracteres en una
LENGTH LENGTH (cargo)
cadena (Ejemplo: 6)

Ejemplo: muestre las primeras cinco letras del nombre del departamento y el nombre
completo de la ubicación del departamento.

SQL> SELECT SUBSTR (nombre_dep,1,5), ubicación_dep


1 FROM departamentos;

nombre_dep ubicación_dep
----------- -------------
PROGR VALENCIA
VENTA CARACAS
ALMAC CARACAS
OPERA MARACAIBO
EDUCA PORTUGUESA
FINAN MERIDA

www.aul@Frontino.org.ve
52
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

EJECUTANDO FUNCIONES SOBRE GRUPOS DE FILAS

Ver resúmenes por grupos de filas es mucho más cómodo que trabajar con el
conjunto completo de las filas..

FUNCION EJEMPLO RESULTADO


AVG AVG (sueldo_basico) Valor promedio de sueldo básico
COUNT(monto_comision) Número de valores no nulos en la
columna monto_comision (Ejemplo:
número de empleados quienes tienen
COUNT comisión)

COUNT (*) Número de filas no nulas en un grupo


MAX MAX (sueldo_basico) Valor máximo de sueldo básico
MIN MIN (sueldo_basico) Valor minimo de sueldo básico
Suma los valores de monto por
SUM SUM (monto_comision)
comisión

Ejemplo: Muestre el promedio, máximo y la suma de los salarios anuales de todos los
vendedores.

SELECT AVG (sueldo_basico), MAX (sueldo_basico),


SQL>
SUM (sueldo_basico)
1 FROM empleados
2 WHERE cargo = 'VENDEDOR';

AVG (sueldo_basico) MAX (sueldo_basico) SUM (sueldo_basico)


------------ ------------------ -----------------
7.200.000 7.800.000 28.800.000

www.aul@Frontino.org.ve
53
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo: muestre los números de filas de la tabla empleados y el número de empleados


con monto de comisión no nulo.

SQL> SELECT COUNT (*) EMPLEADOS, COUNT (monto_comision) COMISION


1 FROM empleados;

EMPLEADOS COMISION
------------ ----------
14 3

GROUP BY
Mostrar una tabla en subgrupos de filas con la cláusula GROUP BY

Ejemplo: muestre cada departamento y cuente en una cabecera agrupada por


departamento

SQL> SELECT id_departamento, COUNT (*)


1 FROM empleados
2 GROUP BY id_departamento;

ID_DEPARTAMENTO COUNT (*)


------------------ ----------
10 3
20 5
30 6

www.aul@Frontino.org.ve
54
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Agrupando para más de una columna:

Ejemplo: muestre la cantidad de empleados para cada categoría de cargo con cada
departamento.

SQL> SELECT id_departamento, COUNT (*)


1 FROM empleados
2 GROUP BY id_departamento, cargo

id_departamento cargo COUNT (*)


-------------- --------------- ----------
10 GERENTE 1
10 PRESIDENTE 1
10 PROGRAMADOR 1
20 ANALISTA 2
20 GERENTE 1
20 PROGRAMADOR 2
30 GERENTE 1
30 PROGRAMADOR 1
30 VENDEDOR 4

www.aul@Frontino.org.ve
55
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

HAVING
Para colocar una condición a la funciones de grupo utilice la claúsula HAVING.

Ejemplo: Muestre el salario anual para todos los tipos de cargos con más de dos
empleados.

SQL> SELECT id_departamento, cargo, COUNT (*)


1 FROM empleados
2 GROUP BY cargo
3 HAVING COUNT (*) > 2;

LABORATORIO 5

1 Para cada empleado, calcule el tiempo que ha transcurrido desde que ingresó a la
empresa. Ordena los resultados por el número de meses obtenidos.

2 Muestra el nombre, apellido, total sueldo y fecha de ingreso para todos aquellos
empleados cuyo salario es mayor que el doble de su comisión. Muestre la fecha de
ingreso en el formato: 3 de Diciembre, 2001.

3 Muestre el número de años que han pasado desde la invención del AUTOMÓVIL

4 Escribe una consulta que produzca para cada empleado lo siguiente:


PETRA gana 600000 Bs. mensuales pero desea ganar 1800000. Use las tablas
EMPLEADOS, PAISES e INVENTOS para completar los siguientes ejercicios:

5 Muestra el año del invento más viejo y del invento más nuevo.

6 Muestra el número de inventos listados en la tabla INVENTOS.

www.aul@Frontino.org.ve
56
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

ENLAZANDO TABLAS

Un Join es la forma usada por el comando SELECT para combinar información de una
o más tablas.

Las especificaciones que se deben cumplir para usar un JOIN en una consulta:

 Los nombres de las columnas deben ser mostrados en la cláusula SELECT.


 Los nombres de las tablas deben ser incluidos en la cláusula FROM.
 Usualmente una condición JOIN está en la cláusula WHERE.

www.aul@Frontino.org.ve
57
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Tipos de JOIN:

 Simple (EQUIJOIN / NON-EQUIJOIN)


 Outer
 Self

Sintaxis:

SELECT (nombre_tabla1.nombre_columna1), (nombre_tabla2.nombre_columna


FROM nombre_tabla1, nombre_tabla2

WHERE nombre_tabla1.nombre_columna1 = nombre_tabla2.nombre_columna2;

Ejemplo: muestre el nombre y apellido del empleado, el número de departamento al cual


pertenece y la ubicación.

SQL> UPDATE empleados


1 SET cargo = 'VENDEDOR' , id_departamento = '30'
2 WHERE id_empleado = '7566';

www.aul@Frontino.org.ve
58
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp id_dpto ubicación_dep


----------- ----------- ------- -------------
JOSE DIAZ 10 VALENCIA
DAVID SOTELDO 10 VALENCIA
SIMON JIMENEZ 10 VALENCIA
PATRICIA COLMENAREZ 20 CARACAS
ANTONIETA PEREZ 20 CARACAS
PEDRO PEREZ 30 CARACAS
JUAN RODRIGUEZ 30 CARACAS
PETRA HERNANDEZ 30 CARACAS
CARMEN MENDOZA 30 CARACAS
ANTONIO GIL 30 CARACAS
DANIEL ACURERO 30 CARACAS
MIRIAN PABON 30 CARACAS
CARLOS DAZA 30 CARACAS
MARIO GARCIA 30 CARACAS
Podemos agregar a la claúsula WHERE operadores lógicos para construir expresiones más
complejas (AND ... OR)

Ejemplo: muestre el empleado PATRICIA COLMENAREZ y su ubicación.

SELECT empleado.nombre_emp, empleado.apellido_emp,


SQL>
departamentos.ubicación_dep
1 FROM empleados, departamentos
WHERE empleados.id_departamento =
2
departamentos.id_departamento
AND empleados.nombre_emp =
3
'PATRICIA' AND empleados.apellido_emp = 'COLMENAREZ';

www.aul@Frontino.org.ve
59
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp ubicación_dep


------- ------------ ------------
PATRICIA COLMENAREZ CARACAS

Con un JOIN externo se pueden combinar dos o más tablas retornando aquellas filas de
una tabla que no tiene relación directa en la otra tabla.

Sintaxis:

SELECT nombre_tabla1.nombre_columna, nombre_tabla2.nombre_columna,


FROM nombre_tabla1, nombre_tabla2
WHERE nombre_tabla1.nombre_columna = nombre_tabla2.nombre_columna (+)

or

SELECT nombre_tabla1.nombre_columna, nombre_tabla2.nombre_columna,


FROM nombre_tabla1, nombre_tabla2
WHERE nombre_tabla1.nombre_columna (+) = nombre_tabla2.nombre_columna

Usando un NON- EQUIJOIN en la cláusula WHERE se pueden retornar filas de dos o más
tablas basadas en una relación sobre otra condición de igualdad.
Ejemplo: muestre el nombre, apellido y salario de los empleados cuyo grado de sueldo
pertenezca al nivel 3.

SELECT empleados.nombre_emp, empleados.apellido_emp,


SQL>
empleados.sueldo_basico
1 FROM empleados, grados_sueldo
WHERE grados_sueldo.id_grado =
2 3 AND empleados.sueldo_basico BETWEENgrado_sueldo.sueldo_menor
AND grado_sueldo.sueldo_mayor;

www.aul@Frontino.org.ve
60
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

nombre_emp apellido_emp sueldo_basico


----------- ------------ ------------
ANTONIO GIL 1250000
JOSE DIAZ 1400000

ESCRIBIENDO SUBQUERYS

Las subconsultas permiten seleccionar filas de una tabla con una condición que
depende de los valores de otra consulta. las subconsultas pueden aparecer en la
cláusula WHERE de las siguientes instrucciones:

 SELECT
 INSERT
 UPDATE
 DELETE

Se puede retornar un valor completando una condición en la cláusula WHERE con una
consulta de una sola fila.

Ejemplo: muestre el nombre, apellido y cargo de todos los empleados con el mismo
departamento que tiene CARLOS DAZA.

www.aul@Frontino.org.ve
61
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

SQL> SELECT nombre_emp, apellido_emp, cargo


1 FROM empleados
2 WHERE id_departamento = (SELECT id_departamento
3 FROM empleados
4 WHERE nombre_emp = 'CARLOS'
5 AND apellido_emp = 'DAZA');

nombre_emp apellido_emp cargo


--------------- ---------------- -------------
ANTONIO GIL GERENTE
CARLOS DAZA PROGRAMADOR
CARMEN MENDOZA VENTAS
MIRIAN PABON VENTAS
PEDRO PEREZ VENTAS
JUAN RODRIGUEZ VENTAS

Importante: las subconsultas de una sola fila usan los siguientes operadores:
>, <, >=, <=, <>, o ! =

Se puede retornar más de un valor completando una condición en la cláusula WHERE con
una consulta de múltiples filas.

www.aul@Frontino.org.ve
62
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Ejemplo: muestre el nombre, apellido y fecha de ingreso de todos los empleados cuyo
salario es mayor que el promedio de salario de los empleados y quienes trabajen en el
departamento con cualquier empleado de nombre JOSE.

SQL> SELECT nombre_emp, apellido_emp, fecha_ingreso


1 FROM empleados
2 WHERE sueldo_basico > (SELECT AVG (sueldo_basico))
3 FROM empleados
4 AND id_departamento IN (SELECT id_departamento
5 FROM empleados
6 WHERE nombre_emp = 'JOSE');

Importante: las subconsultas de multiples filas usan los siguientes operadores:


IN, ANY, ALL, [NOT] IN

LABORATORIO 6

Use las tablas EMPLEADOS, PAISES e INVENTOS para completar los siguientes
ejercicios:

1. Muestre el nombre, apellido y nombre del departamento donde trabaja SIMON


JIMÉNEZ.
2. Muestre todos los inventores cuyos nombres comienzan con la letra B e incluya sus
países.
3. Muestre el número total de inventos por cada país de origen en la tabla INVENTOS
e incluya el nombre del país.
4. Muestre el nombre y la población del país que tienen más de 25.000.000 de
habitantes.

www.aul@Frontino.org.ve
63
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

APLICACIÓN DE APLICACIÓN DE EJEMPLO: PORTAL AGRÍCOLA : PORTAL


AGRÍCOLA APLICACIÓN DE EJEMPLO: PORTAL AGRÍCOLAAPLICACIÓN DE EJEMPLO:
PORTAL A
CONEXIÓN A MYSQL

<?PHP
$conexion = mysql_connect ("localhost","root","root");
mysql_select_db ("dbagricola", $conexion) OR die ("No se puede conectar");
$sql = "SELECT * FROM trubros";
$result = mysql_query ($sql,$conexion);
?>

CÓDIGO MISCLASES.PHP

<?
//--------------------------------------------------------------------
// Clase rubro
//--------------------------------------------------------------------
class rubro {
var $cid_codigo;
var $cdescripcion;

function consulta()
{
$filas;
$contador = 0;
$conexion = mysql_connect("localhost","root","root");
mysql_select_db ("dbagricola", $conexion) OR die ("No se puede conectar");
$sql="SELECT * FROM trubros";
$result=mysql_query($sql,$conexion);

www.aul@Frontino.org.ve
64
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

if ($row= mysql_fetch_array($result))
{
DO
{
$filas [$contador][1] = $row["cid_rubro"];
$filas [$contador][2] = $row["cdescripcion"];
$filas [$contador][3] = $row["nprecio"];
$contador++;
}
WHILE ($row=mysql_fetch_array($result));
}
return $filas;
}
}
?>

CÓDIGO LISTAPRECIOS.PHP

<?php
include ("misclases.php");
$r = new rubro;
$lista = $r->consulta();
echo "<TABLE width='500' height='64' border='0' align='center'>";
echo "<TR><TD><B> <FONT size = 2 color = '#6666CC' face = 'Arial'> Código </FONT> </
B></TD><TD><B> <FONT size = 2 color = '#6666CC' face = 'Arial'> Descripción </FONT> </
B></TD><TD><B> <FONT size = 2 color = '#6666CC' face = 'Arial'> Precio </FONT> </B></
TD></TR>";
for ($i = 0;$i<=count($lista);$i++)
{
echo "<TR><TD>".$lista[$i][1]."</TD><TD>".$lista[$i][2]."</TD><TD>".$lista[$i][3]."</
TD></TR>";
}
echo "</TABLE>";
?>

www.aul@Frontino.org.ve
65
República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Politécnica Territorial del Estado Portuguesa
“Juan de Jesús Montilla”
Acarigua Estado Portuguesa

Referencias Bibliográficas

 Página oficial de Mysql: http://www.mysql.com.

 Introducción al SQL para Desarrolladores. Red de Información Universitaria. IUTEP.


Ing. Luis Javier Bracho.

 DECSAI Departamento de Ciencias de la Computación e I.A. Universidad de


Granada.

www.aul@Frontino.org.ve
66

Potrebbero piacerti anche