SQLIntro 2020
SQLIntro 2020
ESTÁNDAR
SQL
INTRODUCCIÓN
SQL (por sus siglas en ingles Structured
Query Language; en español lenguaje de
consulta estructurada) es un utilizado en
programación, diseñado para administrar, y
recuperar información de sistemas de bases
de datos relacional.Una de sus principales
características es el manejo del algebra y el
calculo relacional para efectuar consultas
con el fin de recuperar, de forma sencilla,
información de bases de datos, así como
realizar cambios en ellas.
Características:
Estructuras de datos simples (tablas)
Operadores potentes
Periodos de aprendizaje inicial cortos
Mejora de la independencia de datos
Modo de uso dual (interactivo sobre el
gestor de base de datos o inmerso
dentro de un lenguaje de programación)
Optimización (para mantener la
eficiencia de la BD por ejemplo índices)
Las sentencias SQL pueden dividirse
en cuatro tipos:
Lenguaje de manipulación de datos
(DML)
Lenguaje de definición de datos
(DDL)
Control de Transacciones.
Lenguaje de control de datos (DCL)
Sentencias SQL
• INSERT
• UPDATE
• DELETE lenguaje de manipulación de datos (DML)
• CREATE
• ALTER
• DROP
Lenguaje de definición de datos (DDL)
• COMMIT
• ROLLBACK
Control de Transacciones
• GRANT
• REVOKE Lenguaje de Control de Dato (DCL)
DDL
Proporciona órdenes para definir
esquemas de relación, eliminar
relaciones, crear índices y modificar
esquemas de relación, etc.
DCL
Incluye órdenes que permiten especificar
controles de seguridad a los datos
almacenados como definición de vistas,
especificación de privilegios de acceso,
comprobación de condiciones de
integridad y control de concurrencia.
DML
Interactivo: lenguaje de consulta
basado en el álgebra relacional y el
calculo relacional de tuplas. También
incluye ordenes para insertar, suprimir y
modificar tuplas de la base de datos
Inmerso: lenguaje diseñado para utilizar
dentro de otros lenguajes.
Control de Transacciones
Porción del lenguaje que permite confirmar
o deshacer procesos de actualización de
muchos datos.
El sistema de administración de Base de datos DBMS
Server
La sentencia es
enviada via un archivo
Buffer
Base de
Datos
LOCALIDAD
LOCALIDAD
-------------
-------------
CORDOBA
CORDOBA
ROSARIO
ROSARIO
Los Datos son MENDOZA
MENDOZA
mostrados en el BUENOS
BUENOS AIRES
AIRES
reporte
Una sentencia básica Comando SELECT
SELECT
SELECT lista
lista de
de columnas
columnas (cada
(cada campo
campo separado
separado por
por una
una coma
coma
FROM
FROM lista
lista de
de tablas
tablas (cada
(cada tabla
tabla separada
separada por
por una
una coma)
coma)
Ejemplo
SELECT legajo, apellido, nombre
FROM Alumnos
SELECT <lista_campos>
FROM <lista_tablas>
WHERE <condiciones>
NAME SALARY
------------- ---------
...
DEPTNO
---------
10
20
30
Como limitamos las filas a seleccionar
Operador Significado
= Igual a
> Mayor a
<> No igual a
Otros Operadores de Comparación
Operador Significado
ENAME JOB
---------- ---------
KING PRESIDENT
MARTIN SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
WARD SALESMAN
Reglas de Precedencia
2 NOT
3 AND
4 OR
EMPNO
EMPNO DEPTNO
DEPTNO LOC
LOC
----- ------- --------
----- ------- --------
7839
7839 10
10 NEW
NEW YORK
YORK
7698
7698 30 CHICAGO
30 CHICAGO
7782
7782 10
10 NEW
NEW YORK
YORK
7566
7566 20 DALLAS
20 DALLAS
7654
7654 30
30 CHICAGO
CHICAGO
7499
7499 30 CHICAGO
30 CHICAGO
...
...
14
14 rows
rows selected.
selected.
Qué es un Join?
SELECT
SELECT table1.column,
table1.column, table2.column
table2.column
FROM
FROM table1,
table1, table2
table2
WHERE
WHERE table1.column1
table1.column1 == table2.column2;
table2.column2;
Generación de un Producto Cartesiano
ENAME
ENAME DNAME
DNAME
------
------ ----------
----------
KING
KING ACCOUNTING
ACCOUNTING
“producto BLAKE
BLAKE ACCOUNTING
ACCOUNTING
Cartesiano: ...
...
KING
KING RESEARCH
RESEARCH
14*4=56 filas” BLAKE RESEARCH
BLAKE RESEARCH
...
...
56
56 rows
rows selected.
selected.
Tipos de Joins
EMP DEPT
ENAME DEPTNO DEPTNO DNAME
----- ------ ------ ----------
KING 10 10 ACCOUNTING
BLAKE 30 30 SALES
CLARK 10 10 ACCOUNTING
JONES 20 20 RESEARCH
... ...
40 OPERATIONS
No existe en employee
OPERATIONS 40 en
department
Uso de Outer Joins
WORKER.ENAME||'WORKSFOR'||MANAG
WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
-------------------------------
BLAKE
BLAKE works
works for
for KING
KING
CLARK
CLARK works
works for
for KING
KING
JONES
JONES works
works for
for KING
KING
MARTIN
MARTIN works
works for
for BLAKE
BLAKE
...
...
13
13 rows
rows selected.
selected.
Práctica
Que son las funciones de Grupo?
Agrupación GROUP BY
Uso de las funciones AVG y SUM
MIN(HIRED MAX(HIRED
--------- ---------
17-DEC-80 12-JAN-83
Uso de la función COUNT
COUNT(*)
---------
6
Creación de grupos de Datos
EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000 2916.6667
10 1300
20 800 “average DEPTNO AVG(SAL)
20 1100 salary
------- ---------
20 3000 2175 in EMP
20 3000 table 10 2916.6667
20 2975 for each 20 2175
30 1600 department” 30 1566.6667
30 2850
30 1250 1566.6667
30 950
30 1500
30 1250
Uso de la cláusula GROUP BY
DEPTNO AVG(SAL)
--------- ---------
10 2916.6667
20 2175
30 1566.6667
Agrupando por más de una columna
EMP
DEPTNO JOB SAL
--------- --------- ---------
10 MANAGER 2450
DEPTNO JOB SUM(SAL)
10 PRESIDENT 5000
-------- --------- ---------
10 CLERK 1300
10 CLERK 1300
20 CLERK 800 “suma sal de 10 MANAGER 2450
20 CLERK 1100 la tabla EMP
10 PRESIDENT 5000
20 ANALYST 3000 para cada cargo,
20 ANALYST 6000
20 ANALYST 3000 agrupados por
20 CLERK 1900
20 MANAGER 2975 departmento”
20 MANAGER 2975
30 SALESMAN 1600
30 CLERK 950
30 MANAGER 2850
30 MANAGER 2850
30 SALESMAN 1250
30 SALESMAN 5600
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250
Consulta illegal usando funciones de grupos
SQL>
SQL> SELECT deptno,
deptno, COUNT(ename)
SELECT COUNT(ename)
RO UP BY
2FROM
FROM2 emp;
;emp áusula G
t e en l a cl á
n a f altan
Co l u m
SELECT
SELECT deptno,
deptno, COUNT(ename)
COUNT(ename)
**
ERROR
:ERRORatatline
line1:1
ORA-00937:
ORA-00937: not
not aa single-group
single-group group
group function
function
Excluyendo resultados de Grupos: cláusula HAVING
JOB PAYROLL
--------- ---------
ANALYST 6000
MANAGER 8275
Anidando funciones de Grupos
MAX(AVG(SAL))
-------------
2916.6667
Uso de una subconsulta para resolver un problema
Consulta principal
Subconsulta
?
“Cuál es el sueldo de Jones?”
Subconsultas
SELECT select_list
FROM table
WHERE expr operator
(SELECT select_list
FROM table);
ENAME
ENAME
----------
----------
KING
KING
FORD
FORD
SCOTT
SCOTT
Guías para usar subconsultas
Operator Meaning
= Equal to
ENAME
ENAME JOB
JOB SAL
SAL
----------
---------- ---------
--------- ---------
---------
SMITH
SMITH CLERK
CLERK 800
800
Cláusula HAVING con Subconsultas
Operador Significado
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7654
7654 MARTIN
MARTIN SALESMAN
SALESMAN
7521
7521 WARD
WARD SALESMAN
SALESMAN
Usando el operador ALL en consultas de filas múltiples
EMPNO
EMPNO ENAME
ENAME JOB
JOB
---------
--------- ----------
---------- ---------
---------
7839
7839 KING
KING PRESIDENT
PRESIDENT
7566
7566 JONES
JONES MANAGER
MANAGER
7902
7902 FORD
FORD ANALYST
ANALYST
7788
7788 SCOTT
SCOTT ANALYST
ANALYST
Comparación de Columnas
TOMA
fila candidata de la query principal
EJECUTA
Subconsulta usando el valor de la fila candidata
USA
valores de la subconsulta para calificar
o descalificar la fila candidata
Subconsultas Correlacionadas
6 rows selected.
Uso del operador NOT EXISTS
A B A B
UNION/UNION ALL
A B
INTERSECT
A B
MINUS
El operador UNION ALL
A B
…
Uso del operador INTERSECT
A B
El operador MINUS
…
Guias de los operadores de conjuntos
…
Haciendo coincidir con sentencias SELECT
• Usando el operador UNION, mostrar el id de empleado,
trabajo y sueldo de todos los empleados.
…
Control del orden de las filas
50 DEVELOPMENT
DETROIT
Nueva Fila
“…inserta una nueva
DEPT fila en la tabla DEPT”
DEPTNO DNAME LOC
------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS DEPT
30 SALES CHICAGO DEPTNO DNAME LOC
40 OPERATIONS BOSTON ------ ---------- --------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 DEVELOPMENT
DETROIT
La sentencia INSERT
INSERT
INSERT INTO
INTO table
table [(column
[(column [,
[, column...])]
column...])]
VALUES
VALUES (value
(value [,
[, value...]);
value...]);
Inserción de filas con valores Null
• Verifique su agregado.
1 row created.
Creación de un Script con prompts customizados
UPDATE
UPDATE table
table
SET
SET column
column == value
value [,
[, column
column == value,
value, ...]
...]
[WHERE
[WHERE condition];
condition];
SQL>
SQL> UPDATE
UPDATE employee
employee
22 SET
SET deptno
deptno == 20;
20;
14
14 rows
rows updated.
updated.
Actualización con subconsultas de columnas
múltiples
>SQL
SQL> UPDATE
UPDATE employee
employee
22 SET
SET deptno
deptno == (SELECT
(SELECT deptno
deptno
33 FROM
FROM emp
emp
44 WHERE
WHERE )empno
empno == 7788)
7788
55 WHERE
WHERE job
job == (SELECT
(SELECT job
job
66 FROM
FROM emp
emp
77 WHERE
WHERE empno
;)empno= 7788);
= 7788
2.rows
rows updated
updated.2
La sentencia DELETE
DELETE
DELETE [FROM]
[FROM] table
table
[WHERE
[WHERE condition];
condition];
Borrando filas de una tabla
SQL>
SQL> DELETE
DELETE FROM
FROM department
department
22 WHERE
WHERE dname
dname == 'DEVELOPMENT';
'DEVELOPMENT';
11 row
row deleted.
deleted.
SQL>
SQL> DELETE
DELETE FROM
FROM department;
department;
44 rows
rows deleted.
deleted.
Borrando filas basado en otra tabla
UPDATE employees e
SET department_name =
(SELECT department_name
FROM departments d
WHERE e.department_id = d.department_id);
DELETE Correlacionado