Oracle: Lenguaje SQL

91
Introducción Estructura del lenguaje SQL 1 Lenguaje SQL

Transcript of Oracle: Lenguaje SQL

Page 1: Oracle: Lenguaje SQL

Introducción

Estructura del lenguaje SQL

1

Lenguaje SQL

Page 2: Oracle: Lenguaje SQL

2

¿Qué es una BBDD?

Diseño

Arquitectura BBDDEstructura BBDD Oracle

Configuración Conexión

Aplicaciones

SQL

Introducción

Page 3: Oracle: Lenguaje SQL

Conjunto de datos estructurado según un determinado modelo de datos y almacenado en soporte informático, al que tienen acceso personas y aplicaciones. (diccionario.raing.es)

Autor: tedeytan Fuente: http://flickr.com/photos/22526649@N03/5466788868 3

¿Qué es una Base de Datos?

Page 4: Oracle: Lenguaje SQL

4

Diseño de BBDD

Page 5: Oracle: Lenguaje SQL

Información

5

Page 6: Oracle: Lenguaje SQL

BD

InformaciónNecesitam

os

almacenarla

6

Page 7: Oracle: Lenguaje SQL

BD

Diseño Relacional

Información

Normalización 1 FN 2 FN 3 FN

SQL

SGBDR

Modelo Relacional

7

Page 8: Oracle: Lenguaje SQL

Paso a Tablas

Abstracción

Información Modelo E/R

BD

Modelo Relacional

SQL

SGBDR

8

Page 9: Oracle: Lenguaje SQL

BD

Información Modelo E/R

Modelo Relacional

SQL

9

Nivel Conceptual

Page 10: Oracle: Lenguaje SQL

Información

BD

Modelo E/R

Modelo Relacional

SQL

10

Nivel Lógico

Page 11: Oracle: Lenguaje SQL

Información

BD

Modelo E/R

Modelo Relacional

SQL

11

Nivel Físico

Page 12: Oracle: Lenguaje SQL

Se desea guardar información de los departamentos, nombre y localidad.

De los empleados: nombre, salario, trabajo, y el jefe.

Un empleado está solo en 1 departamento.

En un departamento hay varios empleados.

Un empleado sólo tienen 1 jefe.

Un jefe, puede serlo de varios empleados.

12

Nivel Conceptual

Page 13: Oracle: Lenguaje SQL

DEPT

Deptno DnameLoc

13

Modelo Entidad-Relación

Se desea guardar información de los departamentos, nombre y localidad.

De los empleados: nombre, salario, trabajo, y el jefe.

Un empleado está solo en 1 departamento.

En un departamento hay varios empleados.

Un empleado sólo tienen 1 jefe.

Un jefe, puede serlo de varios empleados.

Page 14: Oracle: Lenguaje SQL

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal

14

Modelo Entidad-Relación

Se desea guardar información de los departamentos, nombre y localidad.

De los empleados: nombre, salario, trabajo, y el jefe.

Un empleado está solo en 1 departamento.

En un departamento hay varios empleados.

Un empleado sólo tienen 1 jefe.

Un jefe, puede serlo de varios empleados.

Page 15: Oracle: Lenguaje SQL

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal

(0,n)

(1,1)

15

Modelo Entidad-Relación

Se desea guardar información de los departamentos, nombre y localidad.

De los empleados: nombre, salario, trabajo, y el jefe.

Un empleado está solo en 1 departamento.

En un departamento hay varios empleados.

Un empleado sólo tienen 1 jefe.

Un jefe, puede serlo de varios empleados.

Page 16: Oracle: Lenguaje SQL

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal mgr

(0,n)

(1,1)

(0,n)

(0,1)

16

Modelo Entidad-Relación

Se desea guardar información de los departamentos, nombre y localidad.

De los empleados: nombre, salario, trabajo, y el jefe.

Un empleado está solo en 1 departamento.

En un departamento hay varios empleados.

Un empleado sólo tienen 1 jefe.

Un jefe, puede serlo de varios empleados.

Page 17: Oracle: Lenguaje SQL

Deptno Dname Loc

10203040

Empno Sal …

78787879797975767675

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal mgr

(0,n)

(1,1)

(0,n)

(0,1)

17

Modelo Relacional

Page 18: Oracle: Lenguaje SQL

Deptno Dname Loc

10203040

Empno Sal …

78787879797975767675

Deptno

10201030

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal mgr

(0,n)

(1,1)

(0,n)

(0,1)

18

Modelo Relacional

Page 19: Oracle: Lenguaje SQL

DEPT

EMP

Deptno DnameLoc

Empno

Ename

Job

Sal mgr

(0,n)

(1,1)

(0,n)

(0,1)

Deptno Dname Loc

10203040

Empno Sal …

78787879797975767675

Deptno

10201030

Mgr

7878787879797675

19

Modelo Relacional

Page 20: Oracle: Lenguaje SQL

Autor: Oracle Databases Fuente: http://www.flickr.com/photos/12949199@N00/1507478972/ Oracle Databases 20

Arquitectura

Page 21: Oracle: Lenguaje SQL

BD

Servidor Base de Datos

21

Page 22: Oracle: Lenguaje SQL

BD

Servidor Base de Datos

SGBDR

Sistema gestor de base de datos:

Oracle MySQL DB2 SQL Server

22

Page 23: Oracle: Lenguaje SQL

BD

Aplicación

Servidor Base de Datos

SGBDR

23

Servidor

Page 24: Oracle: Lenguaje SQL

BD

Aplicación

Servidor Base de Datos

SQL+

Toad

SQLDeveloper

SGBDR

Clientes

24

Cliente-Servidor

Page 25: Oracle: Lenguaje SQL

BD

Aplicación

Servidor Base de Datos

SGBDR

Nominas Facturación

AplicaciónAplicación

Altas Ventas

Servidor de AplicacionesInternet Explorer

Mozilla Firefox

Chrome

25

Web

Page 26: Oracle: Lenguaje SQL

26

Estructura

Page 27: Oracle: Lenguaje SQL

SYSTEM SYSAUX

TEMP UNDO

USERS

27

Tablespaces

Page 28: Oracle: Lenguaje SQL

Usuario1 Juan

Ventas Mantenimiento

28

Esquemas

Page 29: Oracle: Lenguaje SQL

Autor: Justin Fuente: http://flickr.com/photos/17964151@N00/3677688990 29

Conexión

Page 30: Oracle: Lenguaje SQL

Listener

Servicio

netca

30

Configuración de Red

Page 31: Oracle: Lenguaje SQL

$ORACLEHOME/NETWORK/ADMIN

LISTENER.ORA TNSNAMES.ORA

lnsrctl

31

Servicios y Archivos

Page 32: Oracle: Lenguaje SQL

32

Aplicaciones

Page 33: Oracle: Lenguaje SQL

sqlplus usuario/contraseña@nombreServicioBD

33

SQLPLUS

Page 34: Oracle: Lenguaje SQL

34

SQL Developer

Page 35: Oracle: Lenguaje SQL

Autor: amortize Fuente: https://www.flickr.com/photos/amortize/527435776 35

SQL

Page 36: Oracle: Lenguaje SQL

Lenguaje Estándar de Consulta

SQL es un lenguaje de consulta, no de programación.

36

SQL

Page 37: Oracle: Lenguaje SQL

NUMBER NUMBER cualquier número real NUMBER (n) n dígitos de un número entero NUMBER (n,m) n dígitos de las cuales m son decimales

VARCHAR2 VARCHAR2 (n) de longitud n

DATE

37

Tipos de Datos

Page 38: Oracle: Lenguaje SQL

DCL: GRANT, REVOKE.

Instrucciones de transferencia:

ROLLBACK, COMMIT

SELECT

DML: INSERT, UPDATE, DELETE, MERGE

DDL: CREATE, ALTER, DROP, RENAME , TRUNCATE.

38

Estructura del lenguaje SQL

Page 39: Oracle: Lenguaje SQL

39

SELECT

Page 40: Oracle: Lenguaje SQL

SELECT [ALL|DISTINCT] { * | {columna | expresión} [[AS] alias], ... } FROM

{[esquema.]{tabla|vista} | (subconsulta)}[alias][, …]

[WHERE lista_de_condiciones] [GROUP BY lista_de_columnas] [HAVING condiciones_de_grupo] [ORDER BY columna [ASC|DESC]] ;

40

SELECT

Page 41: Oracle: Lenguaje SQL

SELECT * FROM emp;

41

SELECT

Page 42: Oracle: Lenguaje SQL

SELECT ename, sal, sal+comm SalTotal FROM emp;

42

SELECT

Page 43: Oracle: Lenguaje SQL

SELECT ename, sal, sal+comm SalTotal FROM emp WHERE deptno=20;

43

SELECT

Page 44: Oracle: Lenguaje SQL

SELECT ename, sal, sal+comm SalTotal FROM emp WHERE deptno=20 ORDER BY 1 ASC, 3 DESC;

44

SELECT

Page 45: Oracle: Lenguaje SQL

45

CASE

SELECT ename, CASE deptno

WHEN 10 THEN 'Diez'

WHEN 20 THEN 'Veinte'

ELSE 'Otro'

END depart FROM emp;

Page 46: Oracle: Lenguaje SQL

46

CASE

SELECT ename, CASE

WHEN deptno=10 THEN 'Diez'

WHEN deptno=20 THEN 'Veinte'

ELSE 'Otro'

END depart FROM emp;

Page 47: Oracle: Lenguaje SQL

WHERE cond1 AND ((cond2 OR cond3)

AND cond4)= > < >= <= <> != ~=

IN ALL BETWEEN LIKE NOT NULL

47

Condiciones

Page 48: Oracle: Lenguaje SQL

ROUND TRUNC NVL COUNT MAX MIN SUM AVG

LENGTH UPPER LOWER INITCAP RPAD LPAD SUBSTR

SYSDATE USER

TO_NUMBER TO_DATE TO_CHAR

48

Funciones Predefinidas

Page 49: Oracle: Lenguaje SQL

SELECT SUM(sal), deptno FROM emp GROUP BY deptno;

SUM MAX MIN COUNT AVG

49

GROUP BY

Page 50: Oracle: Lenguaje SQL

SELECT SUM(sal), deptno FROM emp GROUP BY deptno HAVING SUM(sal) > 2500;

SUM MAX MIN COUNT AVG

50

HAVING

Page 51: Oracle: Lenguaje SQL

SELECT EMP.deptno,empno,dname FROM EMP, DEPT WHERE EMP.deptno=DEPT.deptno;

Deptno Dname Loc

10 VENTAS

20 ADMIN

30 CONTAB

40 DIR

Empno Sal …

7878

7979

7676

7575

7474

Deptno

10201030

FK PK

51

JOINS

Page 52: Oracle: Lenguaje SQL

Deptno Dname Loc

10 VENTAS

20 ADMIN

30 CONTAB

40 DIR

Empno Sal …

7878

7979

7676

7575

7474

Deptno

10

20

10

30

EMP.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

52

JOINS

Page 53: Oracle: Lenguaje SQL

SELECT EMP.deptno,ename,dname FROM EMP, DEPT WHERE EMP.deptno=DEPT.deptno AND sal>3000;

53

JOINS

Page 54: Oracle: Lenguaje SQL

SELECT E.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno = D.deptno AND sal > 3000;

54

JOINS

Page 55: Oracle: Lenguaje SQL

SELECT E.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno = D.deptno(+);

Deptno Dname Loc

10 VENTAS

20 ADMIN

30 CONTAB

40 DIR

Empno Sal …

7878

7979

7676

7575

7474

Deptno

10

20

10

30

55

JOINS

Page 56: Oracle: Lenguaje SQL

Deptno Dname Loc

10 VENTAS

20 ADMIN

30 CONTAB

40 DIR

Empno Sal …

7878

7979

7676

7575

7474

Deptno

10

20

10

30

E.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

7474

56

JOINS

Page 57: Oracle: Lenguaje SQL

E.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

7474

SELECT E.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno = D.deptno(+);

57

JOINS

Page 58: Oracle: Lenguaje SQL

E.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

DIR

SELECT E.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno(+) = D.deptno;

58

JOINS

Page 59: Oracle: Lenguaje SQL

E.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

DIR

Deptno Dname Loc

10 VENTAS

20 ADMIN

30 CONTAB

40 DIR

Empno Sal …

7878

7979

7676

7575

7474

Deptno

10

20

10

30

59

JOINS

Page 60: Oracle: Lenguaje SQL

E.deptno empno dname

10 7878 VENTAS20 7979 ADMIN10 7676 VENTAS30 7575 CONTAB

DIR

SELECT E.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno(+) = D.deptno;

?

60

JOINS

Page 61: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D;

SELECT D.deptno, ename, dname FROM EMP CROSS JOIN DEPT D;

61

JOINS

Page 62: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno=D.deptno;

SELECT deptno, ename, dname FROM EMP JOIN DEPT USING(deptno);

62

JOINS

Page 63: Oracle: Lenguaje SQL

63

JOINS

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno=D.deptno;

SELECT D.deptno, ename, dname FROM EMP E JOIN DEPT D

ON(E.deptno=D.deptno);

Page 64: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno(+)=D.deptno;

SELECT deptno, ename, dname FROM EMP RIGHT JOIN DEPT USING(deptno);

64

JOINS

Page 65: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno=D.deptno(+);

SELECT deptno, ename, dname FROM EMP LEFHT JOIN DEPT USING(deptno);

65

JOINS

Page 66: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno(+)=D.deptno(+);

SELECT deptno, ename, dname FROM EMP FULL JOIN DEPT USING(deptno);

66

JOINS

Page 67: Oracle: Lenguaje SQL

SELECT D.deptno, ename, dname FROM EMP E, DEPT D WHERE E.deptno(+)=D.deptno(+);

SELECT deptno, ename, dname FROM EMP FULL JOIN DEPT USING(deptno);

67

JOINS

Page 68: Oracle: Lenguaje SQL

SELECT ename, sal FROM emp WHERE deptno IN (SELECT deptno FROM dept WHERE loc=‘DALLAS’);

68

Subconsultas

Page 69: Oracle: Lenguaje SQL

SELECT deptno FROM emp GROUP BY empno HAVING COUNT(empno) = (SELECT MIN(COUNT(empno)) FROM emp);

69

Subconsultas

Page 70: Oracle: Lenguaje SQL

SELECT ename,sal,loc,media FROM (SELECT ename,sal,loc FROM emp

JOIN dept USING (deptno)) t1 JOIN

(SELECT AVG(sal) media,loc FROM emp

JOIN dept USING (deptno) GROUP BY loc) t2

USING (loc);70

Subconsultas

Page 71: Oracle: Lenguaje SQL

SELECT deptno, (SELECT SUM(sal) FROM emp WHERE deptno=D.deptno) Suma FROM dept D;

71

Subconsultas

Page 72: Oracle: Lenguaje SQL

Autor: Raidarmax Fuente: https://upload.wikimedia.org/wikipedia/commons/4/4a/Numark_Mixtrack_Pro_DJ_Controller.jpg 72

DML

Page 73: Oracle: Lenguaje SQL

INSERT INTO dept VALUES(50,’TC’,’MADRID’);

73

INSERT

Page 74: Oracle: Lenguaje SQL

INSERT INTO dept( deptno,

dname) VALUES(

60, (SELECT department_name FROM departments WHERE department_id=260) );

74

INSERT

Page 75: Oracle: Lenguaje SQL

INSERT INTO dept SELECT department_id,

department_name, city

FROM departments JOIN locations USING (location_id)

WHERE department_id IN (80,90)

75

INSERT

Page 76: Oracle: Lenguaje SQL

DELETE dept WHERE deptno=60;

76

DELETE

Page 77: Oracle: Lenguaje SQL

UPDATE emp SET sal=3000 WHERE deptno=20;

77

UPDATE

Page 78: Oracle: Lenguaje SQL

UPDATE emp E SET sal=(SELECT AVG(sal) FROM emp WHERE deptno=E.deptno);

78

UPDATE

Page 79: Oracle: Lenguaje SQL

MERGE INTO empleados e1 USING emp e2 ON(e1.empno=e2.empno) WHEN MATCHED THEN

UPDATE SET e1.sal=e2.sal, e1.job=e2.job WHERE e1.deptno IN (20,30) DELETE

WHERE e1.empno=7521 WHEN NOT MATCHED THEN

INSERT (e1.empno, e1.ename, e1.deptno) VALUES(e2.empno, e2.ename, e2.deptno) WHERE e2.hiredate IS NOT NULL;

79

MERGE

Page 80: Oracle: Lenguaje SQL

80

Instrucciones Transferencia

Page 81: Oracle: Lenguaje SQL

81

Instrucciones de transferencia

COMMIT

ROLLBACK

SAVE POINT

Page 82: Oracle: Lenguaje SQL

82

DDL

Page 83: Oracle: Lenguaje SQL

PRIMARY KEY FOREIGN KEY UNIQUE CHECK

83

Tipos de Constraints

Page 84: Oracle: Lenguaje SQL

NombreMariaMARIAMaría

María

84

PRIMARY KEY

Page 85: Oracle: Lenguaje SQL

Nombre ApellidoMaria LopezMARIA LópezMaría LopezMaryMaría López

85

PRIMARY KEY

Page 86: Oracle: Lenguaje SQL

Deptno Dname Loc

10203040

Empno Sal …

787878797979757676757777

Deptno

10201030

77

FK PK

86

FOREIGN KEY

Page 87: Oracle: Lenguaje SQL

NombreMariaMARIAMaría

María

87

UNIQUE

Page 88: Oracle: Lenguaje SQL

ALTER TABLE nombre_tabla DISABLE CONSTRAINT nombre_constraint;

ALTER TABLE nombre_tabla ENFORCE CONSTRAINT nombre_constraint;

ALTER TABLE nombre_tabla ENABLE VALIDATE CONSTRAINT nombre_constraint;

• Desactivada

• Obligatoria

• Activada

88

Constraints

Page 89: Oracle: Lenguaje SQL

Autor: Mr Bullitt Fuente: https://upload.wikimedia.org/wikipedia/commons/a/a7/United_Nations_Security_Council.JPG 89

DCL

Page 90: Oracle: Lenguaje SQL

90

Constraints

GRANT

REVOKE

Page 91: Oracle: Lenguaje SQL

91

Licencia

Actualización: 16/octubre/2015

Esta obra está sujeta a la licencia Reconocimiento-NoComercial 4.0 Internacional de Creative Commons. Para ver una copia de esta licencia, visite: http://creativecommons.org/licenses/by-nc/4.0/.

You are free to: Share — copy and redistribute the material in any medium or format Adapt — remix, transform, and build upon the material

The licensor cannot revoke these freedoms as long as you follow the license terms.

Under the following terms: Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were

made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. NonCommercial — You may not use the material for commercial purposes.