Está en la página 1de 82

SQL

Anderson Fuentes
Prohibida la reproducción de esta presentación por cualquier medio, total o parcialmente, sin permiso expreso del autor.
• Structured Query Language (SQL)
• Lenguaje declarativo de acceso a bases de datos que combina construcciones
del álgebra relacional y el cálculo relacional.
• Originalmente desarrollado en los '70 por IBM en su Research Laboratory de San
José a partir del cálculo de predicados creado por Codd.
• Lenguaje estándar de facto en los SGBD comerciales
• Estándares:
• SEQUEL(Structured English QUEry Language), IBM 1976
• SQL-86 (ANSI SQL)
• SQL-89 (SQL1)
• SQL-92 (SQL2), gran revisión del estándar
• SQL:1999 (SQL3), Añade disparadores, algo de OO, ...
• SQL:2003. Añade XML, secuencias y columnas autonuméricas.

2
• El Lenguaje de Definición de Datos (LDD)
• Proporciona comandos para la creación, borrado y modificación de esquemas
relacionales
• El Lenguaje de Manipulación de Datos (LMD)
• Basado en el álgebra relacional y el cálculo relacional permite realizar consultas
y adicionalmente insertar, borrar y actualizar de tuplas
• Ejecutado en una consola interactiva
• Embebido dentro de un lenguaje de programación de propósito general
• Definición de vistas
• Autorización
• Definición de usuarios y privilegios
• Integridad de datos
• Control de Transacciones
3
DDL
• CREATE
• ALTER
• DROP

4
CREACIÓN DE TABLAS

5
CREACIÓN DE TABLAS

6
MODIFICACIÓN Y ELIMINACIÓN DE TABLAS

7
EJEMPLO

8
EJEMPLO

9
EJEMPLO

10
DML
• Selección:
• SELECT
• Modificación:
• INSERT
• UPDATE
• DELETE

11
ESTRUCTURA DE LA SENTENCIA SELECT

12
ESTRUCTURA DE LA SENTENCIA SELECT

13
ESTRUCTURA DE LA SENTENCIA SELECT

14
PROYECCIÓN DE ALGUNAS COLUMNAS

15
ELIMINACIÓN DE FILAS DUPLICADAS

16
ELIMINACIÓN DE FILAS DUPLICADAS

17
PROYECCIÓN DE TODOS LOS ATRIBUTOS

18
SALIDA ORDENADA

19
SALIDA ORDENADA

20
SALIDA ORDENADA

21
SELECCIÓN DE FILAS

22
SELECCIÓN DE FILAS

23
SELECCIÓN DE FILAS

24
EJEMPLO DE SELECCIÓN DE FILAS

25
EJEMPLO DE SELECCIÓN DE FILAS

26
EJEMPLO DE SELECCIÓN DE FILAS

27
MÚLTIPLES CONDICIONES - AND

28
MÚLTIPLES CONDICIONES – AND/OR

29
SELECT CON BETWEEN

30
SELECT CON IN

31
BÚSQUEDA PARCIAL - LIKE

32
BÚSQUEDA PARCIAL – LIKE
EJEMPLOS CON %

33
BÚSQUEDA PARCIAL – LIKE
EJEMPLOS CON _

34
BÚSQUEDA PARCIAL – NOT LIKE

35
EXPRESIONES Y RENOMBRAMIENTO
DE COLUMNAS

36
RENOMBRAMIENTO DE TABLAS

37
RENOMBRAMIENTO DE TABLAS

38
TIPOS SQL Y VALORES LITERALES

39
TIPOS SQL Y VALORES LITERALES

40
EXPRESIONES

41
FUNCIONES MATEMÁTICAS COMUNES

42
FUNCIONES DE CADENA

43
OPERACIONES ARITMÉTICAS

44
OPERACIONES ARITMÉTICAS

45
EXPRESIONES EN PREDICADOS

46
USO DE FUNCIONES

47
USO DE FUNCIONES

48
OPERACIONES DE CONJUNTO

49
UNIÓN

50
UNIÓN
Cada entrada debe tener 2 lineas: la
primera debe incluir el número y
nombre del director y la seguna el
número y el nombre del
departamento.
SELECT MGRNO , 'Dept.:', DEPTNAME
FROM DEPARTMENT
UNION
SELECT MGRNO, 'Mgr.:', LASTNAME
FROM DEPARTMENT D, EMPLOYEE E
WHERE D.MGRNO = E.EMPNO
ORDER BY 1,2 DESC

MGRNO DEPTNAME
000010 Mgr.: HAAS
000010 Dept.: SPIFFY COMPUTER SERVICE DIV.
000020 Mgr.: THOMPSON
000020 Dept.: PLANNING
000030 Mgr.: KWAN
000030 Dept.: INFORMATION CENTER
000050 Mgr.: GEYER
000050 Dept.: SUPPORT SERVICES
51
CONSULTAR MÁS DE UNA TABLA

52
SINTAXIS DEL JOIN: FORMATO 1

53
JOIN DE TRES TABLAS

54
JOIN DE TRES TABLAS

55
NOMBRE DE CORRELACIÓN (P,D,E)

56
JOIN DE UNA TABLA CONSIGO MISMA

57
JOIN DE UNA TABLA CONSIGO MISMA
¿Qué empleados
son mayores que
su director? SELECT E.EMPNO, E.LASTNAME,
E.BIRTHDATE, M.BIRTHDATE, M.EMPNO
FROM EMPLOYEE E, EMPLOYEE M,
DEPARTMENT D
WHERE E.WORKDEPT = D.DEPTNO
AND D.MGRNO = M.EMPNO
AND E.BIRTHDATE < M.BIRTHDATE

EMPNO LASTNAME BIRTHDATE BIRTHDATE EMPNO


000110 LUCCHESI 1929-11-05 1933-08-14 000010
000130 QUINTANA 1925-09-15 1941-05-11 000030
000200 BROWN 1941-05-29 1945-07-07 000060
000230 JEFFERSON 1935-05-30 1953-05-26 000070
000250 SMITH 1939-11-12 1953-05-26 000070
000260 JOHNSON 1936-10-05 1953-05-26 000070
000280 SCHNEIDER 1936-03-28 1941-05-15 000090
000300 SMITH 1936-10-27 1941-05-15 000090
000310 SETRIGHT 1931-04-21 1941-05-15 000090
000320 MEHTA 1932-08-11 1956-12-18 000100
000330 LEE 1941-07-18 1956-12-18 000100
000340 GOUNOT 1926-05-17 1956-12-18 000100
58
FUNCIONES DE COLUMNA

59
FUNCIONES DE COLUMNA

60
FUNCIONES DE COLUMNA

61
FUNCIONES DE COLUMNA

62
GROUP BY
Necesito conocer los salarios de todos los
empleados de los departamentos A00, B01,
y C01. Además, para estos departamentos
quiero conocer su masa salarial.

SELECT WORKDEPT, SALARY SELECT WORKDEPT, SUM(SALARY) AS SUM


FROM EMPLOYEE FROM EMPLOYEE
WHERE WORKDEPT IN ('A00', 'B01', 'C01') WHERE WORKDEPT IN ('A00', 'B01', 'C01')
ORDER BY WORKDEPT GROUP BY WORKDEPT
ORDER BY WORKDEPT

WORKDEPT SALARY
A00 52750.00
A00 46500.00 WORKDEPT SUM
A00 29250.00 A00 128500.00
B01 41250.00 B01 41250.00
C01 38250.00 C01 90470.00
C01 23800.00
C01 28420.00
63
GROUP BY-HAVING
Ahora sólo quiero ver los departamentos
cuya masa salarial sea superior a 50000

SELECT WORKDEPT, SUM(SALARY) AS SUM SELECT WORKDEPT, SUM(SALARY) AS SUM


FROM EMPLOYEE FROM EMPLOYEE
WHERE WORKDEPT IN ('A00', 'B01', 'C01') WHERE WORKDEPT IN ('A00', 'B01', 'C01')
GROUP BY WORKDEPT GROUP BY WORKDEPT
ORDER BY WORKDEPT HAVING SUM(SALARY) > 50000
ORDER BY WORKDEPT

WORKDEPT SUM
WORKDEPT SUM
A00 128500.00
B01 41250.00 A00 128500.00
C01 90470.00 C01 90470.00
64
GROUP BY-HAVING

65
GROUP BY-HAVING

66
GROUP BY-HAVING

67
GROUP BY-HAVING

68
EJECUCIÓN DE CONSULTAS SELECT

69
SUBCONSULTA CON IN
Tabla DEPARTMENT
¿Qué departamentos no DEPTNO DEPTNAME
tienen proyectos
A00 SPIFFY COMPUTER SERVICE
asignados?
B01 PLANNING
C01 INFORMATION CENTER
... ...

SELECT DEPTNO, DEPTNAME


FROM DEPARTMENT
WHERE DEPTNO NOT IN (SELECT DEPTNO
FROM PROJECT)

Resultado subconsulta
Resultado final
B01
DEPTNO DEPTNAME C01
A00 SPIFFY COMPUTER SERVICE D01
D11
D21
E01
E11
E21 70
MODIFICACIÓN DE LA BD

71
LA INSTRUCCIÓN INSERT

72
AÑADIR UNA FILA

73
AÑADIR VARIAS FILAS

74
AÑADIR VARIAS FILAS

75
LA INSTRUCCIÓN UPDATE

76
MODIFICAR DATOS

77
LA INSTRUCCIÓN DELETE

78
BORRAR FILAS

79
VENTAJAS DE SQL
• Madurez: Dado que tiene ya muchos años de madurez y aceptación por la comunidad
de desarrolladores existe una gran variedad y cantidad de información para poder
realizar cualquier tipo de desarrollo o extracción de información, lo cual esto ayuda
increíblemente en la mejora de tiempos de entrega de cualquier proyecto de software.
• Atomicidad: En las operaciones e información, esto quiere decir que cualquier
operación realizada en la base de datos, garantiza que si a la mitad de cualquier
operación de base de datos, surgió algún tipo de problema, la información no se
completa, o se realiza al 100% o no se realiza nada.
• Estándares bien definidos: Por ejemplo, la creación de tablas, el insertar, eliminar y
actualizar información, consultas, se escriben bajo la misma sintaxis, basados en el
estándar de SQL.
• Sencillez en la escritura: Su principal aceptación, es su sencillez de escritura ya que se
asemeja mucho al lenguaje humano, la comprensión de las operaciones que se
programen puede ser interpretadas o escritas por personas que no tengan grandes
conocimientos de informática.
80
VENTAJAS DE SQL

81
¿Dudas o preguntas?

Muchas gracias!

Anderson Fuentes
Ingeniería de Sistemas
anderson.fuentes@ieee.org
82

También podría gustarte