Sentencias DML

46
Ing. Marcos Montesinos Elaboración de sentencias SQL y Diccionario de Datos Ing. Marcos Montesinos Yarlequé ([email protected])

Transcript of Sentencias DML

Page 1: Sentencias DML

Ing. Marcos Montesinos

Elaboración de sentencias SQL y

Diccionario de Datos

Ing. Marcos Montesinos Yarlequé

([email protected])

Page 2: Sentencias DML

Ing. Marcos Montesinos

Logro de la Sesión

Al término de la unidad, el alumno desarrolla consultas que obtienen la información solicitada, utilizando el diccionario de datos y las principales vistas de la Metadata de la Base de Datos Oracle utilizando las mejores prácticas en la elaboración de sentencias SQL.

Page 3: Sentencias DML

Ing. Marcos Montesinos

Temario

2.1. Tema 2: Elaboración de Sentencias SQL • 2.1.1. Introducción a SQL• 2.1.2. Instrucciones DML y operadores• 2.1.3. Consultando dos o más tablas• 2.1.4. Funciones predefinidas

2.2. Tema 3: Diccionario de Datos• 2.2.1 Introducción al Diccionario de Datos• 2.2.2 Estructura del Diccionario• 2.2.3 Uso del Diccionario de Datos

Page 4: Sentencias DML

Ing. Marcos Montesinos

La historia de SQL empieza en 1974, cuando un grupo de IBM desarrolló un lenguaje para la especificación de las características de las bases de datos que adoptaban el modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query Language). Sin embargo, fue ORACLE quien lo introdujo por primera vez en 1979 en un programa comercial.

El SEQUEL terminaría siendo el antecesor del SQL. En 1986 es estandarizado por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el SQL-86. Al año siguiente, en 1987, este estándar es también adoptado por la ISO.

Introducción a SQL

Page 5: Sentencias DML

Ing. Marcos Montesinos

Page 6: Sentencias DML

Ing. Marcos Montesinos

Categorias

DML DDL TC DCL

SELECT

INSERT

UPDATE

DELETE

CREATE

ALTER

DROP

RENAME

TRUNCATE

COMMIT

ROLLBACK

SAVEPOINT

GRANT

REVOKE

Page 7: Sentencias DML

Ing. Marcos Montesinos

La mayoría de sentencias SQL tienen la misma estructura.

Todas comienzan por un verbo (select, insert, update, create), a continuación le sigue una o más clausulas que nos dicen los datos con los que vamos a operar (from, where), algunas de estas son opcionales y otras obligatorias como es el caso del from.

Componentes Sintácticos

Page 8: Sentencias DML

Ing. Marcos Montesinos

Otras Condiciones de Comparación

Operador

BETWEEN

...AND...

IN(set)

LIKE

IS NULL

Significado

Entre dos valores (ambos inclusive),

Coincide con cualquiera de una lista de valores

Coincide con un patrón de caracteres

Es un valor nulo

Page 9: Sentencias DML

Ing. Marcos Montesinos

Condiciones Lógicas

Operador

AND

OR

NOT

Significado

Devuelve TRUE si las dos condiciones

componentes son verdaderas

Devuelve TRUE si alguna de las

condiciones componentes es verdadera

Devuelve TRUE si la siguiente condición es falsa

Page 10: Sentencias DML

Ing. Marcos Montesinos

SELECT ename, job, salFROM empWHERE job = 'SALESMAN'OR job = 'MANAGER'AND sal > 1500;

Reglas de Prioridad

SELECT ename, job, salFROM empWHERE ( job = 'SALESMAN'OR job = 'MANAGER' )AND sal > 1500;

Page 11: Sentencias DML

Ing. Marcos Montesinos

Las funciones de grupo operan sobre juegos de filas para proporcionar un resultado por grupo.

GROUP BY

El salario máximo en la tabla EMPLOYEES.

Page 12: Sentencias DML

Ing. Marcos Montesinos

AVG ...PROMEDIO

COUNT ...CUENTA

MAX ...MAXIMO

MIN ...MINIMO

STDDEV ...DESVIAC STD

SUM ...SUMA

VARIANCE..VARIANZA

Tipos de Funciones de Grupo

Page 13: Sentencias DML

Ing. Marcos Montesinos

SELECT job, SUM(sal)FROM empGROUP BY job;

Uso GROUP BY

Page 14: Sentencias DML

Ing. Marcos Montesinos

La subconsulta (consulta interna) se ejecuta una vez antes de la consulta principal.

El resultado de la subconsulta lo utiliza la consulta principal (consulta externa).

Sintaxis de Subconsulta

SELECT select_listFROM tableWHEREexpr operator

(SELECT select_list FROM table);

Page 15: Sentencias DML

Ing. Marcos Montesinos

SELECT enameFROM empWHERE sal > (SELECT sal FROM emp WHERE ename = 'SCOTT');

Uso de una Subconsulta

Page 16: Sentencias DML

Ing. Marcos Montesinos

Agregue nuevas filas a una tabla mediante la sentencia INSERT.

Con esta sintaxis sólo se inserta una fila cada vez.

Sintaxis de la Sentencia INSERT

INSERT INTO table [(column [, column...])]VALUES (value [, value...]);INSERT INTO table [(column [, column...])]VALUES (value [, value...]);

Page 17: Sentencias DML

Ing. Marcos Montesinos

INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno )VALUES (1234, 'CURTIS', 'MANAGER', 1111, SYSDATE, 6900, 200, 10);1 row created.1 row created.

Ejemplo

Page 18: Sentencias DML

Ing. Marcos Montesinos

INSERT INTO dept

(deptno, dname, loc)

VALUES (&deptno, '&dname', '&loc')

Utilice la sustitución & en una sentencia SQL para solicitar valores.

& es una variable pendiente de asignación para el valor de la variable.

Creación de un Archivo de Comandos

Page 19: Sentencias DML

Ing. Marcos Montesinos

Escriba la sentencia INSERT con una subconsulta.

No utilice la cláusula VALUES.

Haga coincidir el número de columnas de la cláusula INSERT con el de la subconsulta.

Copia de Filas desde otra Tabla *

INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%';

Page 20: Sentencias DML

Ing. Marcos Montesinos

Modifique las filas existentes con la sentencia UPDATE.

Actualice más de una fila cada vez si es necesario.

Sintaxis Sentencia UPDATE

UPDATEtableSET column = value [, column = value, ...][WHERE condition];

UPDATEtableSET column = value [, column = value, ...][WHERE condition];

Page 21: Sentencias DML

Ing. Marcos Montesinos

Si incluye la cláusula WHERE, las filas específicas se modifican.

Se modifican todas las filas de la tabla si omite la cláusula WHERE.

Actualización de las Filas de una Tabla

UPDATE empSET sal = 2000WHERE ename = 'CURTIS';

UPDATE empSET mgr= 123;

UPDATE empSET mgr= 123;

Page 22: Sentencias DML

Ing. Marcos Montesinos

UPDATE copy_empSET department_id = (SELECT department_id FROM employees WHERE employee_id = 100)WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200);

Utilice subconsultas en sentencias UPDATE para actualizar las filas de una tabla basándose en valores de otra tabla.

Actualización de Filas Basándose en otra Tabla *

Page 23: Sentencias DML

Ing. Marcos Montesinos

Puede eliminar las filas existentes de una tabla utilizando la sentencia DELETE.

La Sentencia DELETE

DELETE [FROM] table[WHERE condition];DELETE [FROM] table[WHERE condition];

Page 24: Sentencias DML

Ing. Marcos Montesinos

Se suprimen filas específicas si incluye la cláusula WHERE.

Se suprimen todas las filas de la tabla si omite la cláusula WHERE.

Supresión de Filas de una Tabla

DELETE FROM emp WHERE ename = 'CURTIS';

DELETE FROM emp WHERE ename = 'CURTIS';

DELETE FROM emp;DELETE FROM emp;

Page 25: Sentencias DML

Ing. Marcos Montesinos

DELETE FROM employeesWHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE '%Public%');

Utilice subconsultas en sentencias DELETE para eliminar las filas de una tabla basándose en los valores de otra tabla.

Supresión de Filas Basándose en otra Tabla *

Page 26: Sentencias DML

Ing. Marcos Montesinos

La condición de unión para la unión natural es básicamente una unión de igualdad de todas las columnas con el mismo nombre.

Para especificar condiciones arbitrarias o especificar columnas para unir, se utiliza la cláusula ON.

La condición de unión se separa de otras condiciones de búsqueda.

La cláusula ON facilita la comprensión del código.

Creación de Uniones con la Cláusula JOIN

Page 27: Sentencias DML

Ing. Marcos Montesinos

SELECT e.empno, e.ename, e.deptno, d.dnameFROM emp e JOIN dept dON (e.deptno = d.deptno);

Recuperación de Registros con la Cláusula JOIN

SELECT e.empno, e.ename, e.deptno, d.dnameFROM emp e, dept dWHERE e.deptno = d.deptno;

SELECT e.empno, e.ename, e.deptno, d.dnameFROM emp e, dept dWHERE e.deptno(+) = d.deptno;

Page 28: Sentencias DML

Ing. Marcos Montesinos

Funciones de Caracteres

Funciones de Funciones de

CaracteresCaracteres

LOWERUPPERINITCAP

CONCATSUBSTRLENGTHINSTRLPAD | RPADTRIMREPLACE

Funciones de manipulación Funciones de manipulación

de mayúsculas/minúsculasde mayúsculas/minúsculas Funciones de manipulación Funciones de manipulación

de caracteresde caracteres

Page 29: Sentencias DML

Ing. Marcos Montesinos

Function Result

Estas funciones convierten las mayúsculas/minúsculas para cadenas de caracteres.

Funciones de Manipulación de Mayúsculas/Minúsculas

LOWER('SQL Course')UPPER('SQL Course')INITCAP('SQL Course')

sql courseSQL COURSESql Course

Page 30: Sentencias DML

Ing. Marcos Montesinos

CONCAT('Hello', 'World')SUBSTR('HelloWorld',1,5)LENGTH('HelloWorld')INSTR('HelloWorld', 'W')LPAD(salary,10,'*')RPAD(salary, 10, '*')TRIM('H' FROM 'HelloWorld')

HelloWorldHello106*****2400024000*****elloWorld

Función Resultado

Estas funciones manipulan cadenas de caracteres:

Funciones de Manipulación de Caracteres

Page 31: Sentencias DML

Ing. Marcos Montesinos

ROUND: Redondea el valor a los decimales especificados.

ROUND(45.926, 2) 45.93

TRUNC: Trunca el valor a los decimales especificados.

TRUNC(45.926, 2) 45.92

MOD: Devuelve el resto de la división.

MOD(1600, 300) 100

ABS: Calcula el valor absoluto de n.

ABS(-16) 16

CEIL: Calcula el menor numero entero mayor o igual que n.

CEIL(16.7) 17

FLOOR: Calcula el mayor numero entero menor o igual que n.

FLOOR(16.7) 16

POWER: Devuelve m elevado a la n potencia, n debe ser entero

POWER(3,2) 9

Funciones Numéricas

Page 32: Sentencias DML

Ing. Marcos Montesinos

La base de datos Oracle almacena fechas en un formato numérico interno: siglo, año, mes, día, horas, minutos, segundos.

El formato de visualización de fecha por defecto es DD-MON-RR.Le permite almacenar fechas del siglo XXI

en el siglo XX especificando solamente los dos últimos dígitos del año.

Le permite almacenar fechas del siglo XX en el siglo XXI de la misma forma.

Trabajo con Fechas

Page 33: Sentencias DML

Ing. Marcos Montesinos

SYSDATE es una función que devuelve:

Fecha

Hora

Trabajo con Fechas

Page 34: Sentencias DML

Ing. Marcos Montesinos

Funciones de Fecha

Número de mesesentre dos fechas

MONTHS_BETWEEN

ADD_MONTHS

NEXT_DAY

LAST_DAY

ROUND

TRUNC

Suma meses de calendario a una fecha

Siguiente día de la fecha especificada

Último día del mes

Redondea la fecha

Trunca la fecha

Función Descripción

Page 35: Sentencias DML

Ing. Marcos Montesinos

• MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')

Uso de Funciones de Fecha

• ADD_MONTHS ('11-JAN-94',6)

• NEXT_DAY ('01-SEP-95','FRIDAY')

• LAST_DAY('01-FEB-95')

19.6774194

'11-JUL-94'

'08-SEP-95'

'28-FEB-95'

Page 36: Sentencias DML

Ing. Marcos Montesinos

• ROUND(SYSDATE,'MONTH') 01-AUG-95

• ROUND(SYSDATE ,'YEAR') 01-JAN-96

• TRUNC(SYSDATE ,'MONTH') 01-JUL-95

• TRUNC(SYSDATE ,'YEAR') 01-JAN-95

Uso de Funciones de Fecha

Asuma SYSDATE = '25-JUL-95':

Page 37: Sentencias DML

Ing. Marcos Montesinos

Conversión Explícita de Tipos de Dato

NUMBER CHARACTER

TO_CHAR

TO_NUMBER

DATE

TO_CHAR

TO_DATE

Page 38: Sentencias DML

Ing. Marcos Montesinos

El modelo de formato:Se debe escribir entre comillas sencillas y es sensible a mayúsculas/minúsculas.

Puede incluir cualquier elemento de formato de fecha válido.

Tiene un elemento fm para eliminar espacios rellenados o suprimir ceros a la izquierda.

Se separa del valor de fecha con una coma.

Uso de la Función TO_CHAR con Fechas

TO_CHAR(date, 'format_model')TO_CHAR(date, 'format_model')

Page 39: Sentencias DML

Ing. Marcos Montesinos

YYYY

Elementos del Modelo de Formato de Fecha

YEAR

MM

MONTH

DY

DAY

Año completo en números

Años en letra

Valor de dos dígitos para el mes

Abreviatura de tres letras del día de la semana

Nombre completo del día de lasemana

Nombre completo del mes

MON Abreviatura de tres letras del mes

DD Día del mes en número

Page 40: Sentencias DML

Ing. Marcos Montesinos

Los elementos de hora formatean la porción de hora de la fecha.

Agregue cadenas de caracteres escribiéndolas entre comillas dobles.

Elementos del Modelo de Formato de Fecha

HH24:MI:SS AM 15:45:32 PM

DD "of" MONTH 12 of OCTOBER

Page 41: Sentencias DML

Ing. Marcos Montesinos

Uso de la Función TO_CHAR con Fechas

SELECT ename, TO_CHAR(hiredate, 'fmDD Month YYYY') AS HIREDATEFROM emp;

Page 42: Sentencias DML

Ing. Marcos Montesinos

Estos son algunos de los elementos de formato que puede utilizar con la función TO_CHAR para mostrar un valor numérico como carácter:

Uso de la Función TO_CHAR con Números

TO_CHAR(number, 'format_model')TO_CHAR(number, 'format_model')

9

0

$

L

.

,

Representa un número.

Obliga a mostrar un cero.

Coloca un signo de dólar flotante.

Utiliza el símbolo de divisa local flotante.

Imprime una coma decimal.

Imprime un indicador de miles.

Page 43: Sentencias DML

Ing. Marcos Montesinos

SELECT TO_CHAR(sal, '99,999.00') SALARYFROM empWHERE ename = 'SCOTT';

Uso de la Función TO_CHAR con Números

Page 44: Sentencias DML

Ing. Marcos Montesinos

Convierta una cadena de caracteres en formato numérico utilizando la función TO_NUMBER:

Convierta una cadena de caracteres en formato de fecha utilizando la función TO_DATE:

Estas funciones tienen un modificador fx que especifica la coincidencia exacta para el argumento de caracteres y un modelo de formato de fecha de una función TO_DATE.

Uso de las Funciones TO_NUMBER y TO_DATE

TO_NUMBER(char[, 'format_model'])TO_NUMBER(char[, 'format_model'])

TO_DATE(char[, 'format_model'])TO_DATE(char[, 'format_model'])

Page 45: Sentencias DML

Ing. Marcos Montesinos

Preguntas ?

Page 46: Sentencias DML

Ing. Marcos Montesinos

Laboratorio