0% encontró este documento útil (0 votos)
4 vistas44 páginas

SQL Server For Analytics Modulo3

El documento presenta un módulo sobre SQL Server para análisis, cubriendo tipos de datos, funciones, operadores, joins y subconsultas. Se detalla el uso de expresiones, funciones matemáticas y de cadena, así como operaciones aritméticas y predicados en consultas. Además, se explican las funciones de columna y su aplicación en agrupaciones y condiciones.

Cargado por

yourdan
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas44 páginas

SQL Server For Analytics Modulo3

El documento presenta un módulo sobre SQL Server para análisis, cubriendo tipos de datos, funciones, operadores, joins y subconsultas. Se detalla el uso de expresiones, funciones matemáticas y de cadena, así como operaciones aritméticas y predicados en consultas. Además, se explican las funciones de columna y su aplicación en agrupaciones y condiciones.

Cargado por

yourdan
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Módulo 3

SQL Server for


Analytics
Agenda

1. Tipos de datos
2. Funciones y operadores
3. Joins
4. Subconsultas
Tipos SQL y valores Literales

• La norma SQL define un conjunto de tipos para las columnas de las tablas.
 Habitualmente cada SGBD tiene tipos propios o particularidades para los tipos de la norma SQL.
• Es necesario consultar el manual del SGBD para obtener información acerca de los tamaños máximos de
almacenamiento.
 En el caso de cadenas, cual es la longitud máxima de almacenamiento.
 En el caso de tipos numéricos, cual es el rango de valores posibles.
Tipos SQL y valores Literales

BIGINT 8589934592
INTEGER 186282
SMALLINT 186
NUMERIC(8,2) 999999.99 (precisión, escala)
DECIMAL(8,2) 999999.99 (precisión, escala)
REAL 6.02257E23
DOUBLE PRECISION 3.141592653589
FLOAT 6.02257E23
CHARACTER(max) 'GREECE ' (15 caracteres)
VARCHAR(n) 'hola'
DATE date 'YYYY-MM-DD'
TIME time 'hh:mm:[Link]'
TIMESTAMP timestamp 'YYYY-MM-DD hh:mm:[Link]'
Expresiones

• Aunque SQL no es un lenguaje de programación de propósito general, permite definir expresiones


calculadas.
• Estas expresiones pueden contener
 Referencias a columnas
 Valores literales
 Operadores aritméticos
 Llamadas a funciones
• Los operadores aritméticos son los habituales: +, -, * y /
 Estos operadores sólo funcionan con valores numéricos.
 Los operadores '+' y '–' habitualmente funcionan para fechas.
• Aunque las normas SQL definen un conjunto mínimo de funciones, los SGBD proporcionan una gran
variedad.
 Es necesario consultar el manual del SGBD particular.
Funciones matemáticas comunes

Descripción IBM DB2 SQL Server Oracle MySQL


Valor absoluto ABSs ABS ABS ABS
Menor entero >= valor CEIL CEILING CEIL CEILING
Menor entero <= valor FLOOR FLOOR FLOOR FLOOR
Potencia POWER POWER POWER POWER
Redondeo a un número ROUND ROUND ROUND ROUND
de cifras decimales
Módulo MOD. % MOD. %
Funciones Cadena

Descripción IBM DB2 SQL Server Oracle MySQL


Convierte todos los caracteres a minúsculas LOWER LOWER LOWER LOWER
Convierte todos los caracteres a UPPER UPPER UPPER UPPER
mayúsculas
Elimina los blancos del final de la cadena RTRIM RTRIM RTRIM RTRIM
Elimina los blancos del comienzo LTRIM LTRIM LTRIM LTRIM
de la cadena
Devuelve una subcadena SUBSTR SUBSTRING SUBSTR SUBSTRING

Concatena dos cadenas CONCAT + CONCAT CONCAT


Operaciones Aritméticas

• Necesito obtener el salario, la comisión y los ingresos totales de todos los empleados que tengan un salario
menor de 20000€, clasificado por empleados.
SELECT EMPNO, SALARY, COMM, SALARY + COMM
FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO

EMPNO SALARY COMM


000210 18270.00 1462.00 19732.00
000250 19180.00 1534.00 20714.00
000260 17250.00 1380.00 18630.00
000290 15340.00 1227.00 16567.00
000300 17750.00 1420.00 19170.00
000310 15900.00 1272.00 17172.00
000320 19950.00 1596.00 21546.00
Operaciones Aritméticas

SELECT EMPNO, SALARY, SALARY*1.0375


FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO

EMPNO SALARY
000210 18270.00 18955.125000
000250 19180.00 19899.250000
000260 17250.00 17896.875000
000290 15340.00 15915.250000
000300 17750.00 18415.625000
000310 15900.00 16496.250000
000320 19950.00 20698.125000
Expresiones Predicados

SELECT EMPNO, COMM, SALARY, (COMM/SALARY)*100


FROM EMPLOYEE
WHERE (COMM/SALARY) * 100 > 8
ORDER BY EMPNO

EMPNO COMM SALARY


000140 2274.00 28420.00 8.001400
000210 1462.00 18270.00 8.002100
000240 2301.00 28760.00 8.000600
000330 2030.00 25370.00 8.001500
Uso de Funciones

SELECT EMPNO, SALARY, TRUNC(SALARY*1.0375, 2)


FROM EMPLOYEE
WHERE SALARY < 20000
ORDER BY EMPNO

EMPNO SALARY
000210 18270.00 18955.12
000250 19180.00 19899.25
000260 17250.00 17896.87
000290 15340.00 15915.25
000300 17750.00 18415.62
000310 15900.00 16496.25
000320 19950.00 20698.12
Uso de Funciones

SELECT LASTNAME & ',' & FIRSTNAME ) AS NAME


FROM EMPLOYEE
WHERE WORKDEPT = 'A00’
ORDER BY NAME

NAME
HAAS, CHRISTA
LUCCHESI, VINCENZO
O'CONNELL, SEAN
Operadores de conjunto

• SQL incluye las operaciones:


 UNION
 INTERSECT
 EXCEPT (MINUS en Oracle)
• Por definición los operadores de conjunto eliminan las tuplas duplicadas.
 Para retener duplicados se debe utilizar <Operador> ALL
UNION

• Cada SELECT debe tener el mismo número de columnas


• Las columnas correspondientes deben tener tipos de datos compatibles
• UNION elimina duplicados
• Si se indica, el ORDER BY debe ser la última cláusula de la sentencia
UNION

Cada entrada debe tener 2 líneas: la primera debe incluir el número y nombre del director y la segunda el número y el
nombre del departamento.

SELECT MGRNO, ‘Dept.:’ DEPTNAME


FROM DEPARTMENT

UNION

MGRNO DEPTNAME SELECT MGRNO, ‘Mgr.:’ LASTNAME


FROM DEPARTMENT D, EMPLOYEE E
000010 Mgr.: HAAS
WHERE [Link] = [Link]
000010 Dept.: SPIFFY COMPUTER SERVICE DIV. ORDER BY 1,2 DESC
000020 Mgr.: THOMPSON
000020 Dept.: PLANNING
000030 Mgr.: KWAN
000030 Dept.: INFORMATION CENTER
000050 Mgr.: GEYER
000050 Dept.: SUPPORT SERVICES
CONSULTAR MÁS DE UNA TABLA

Employee
EMPNO LASTNAME WORKDEPT.
000010 HAAS A00
000020 THOMPSON C01
000030 KWAN C01
000040 PULASKI D21

Department
DEPTNO DEPTNAME
A00 SPIFFY COMPUTER SERVICE DIV.
C01 INFORMATION CENTER
D01 DEVELOPMENT CENTER
D21 ADMINISTRATION SYSTEMS
SINTAXIS DEL JOIN: FORMATO 1

SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME


FROM EMPLOYEE, DEPARTMENT
WHERE WORKDEPT = DEPTNO
AND LASTNAME = 'HAAS'

EMPNO LASTNAME WORKDEPT DEPTNAME


000010 HAAS A00 SPIFFY COMPUTER SERVICE DIV.
Employee
JOIN DE TRES TABLAS EMPNO FIRSTNME MIDINIT LASTNAME

Project 000010 CHRISTA I HAAS

PROJNO PROJNAME DEPTNO 000020 MICHAEL L THOMPSON

AD3100 ADMIN SERVICES D01 000030 SALLY A KWAN

AD3110 GENERAL AD SYSTEMS D21 00005 JOHN B GEYER

AD3111 PAYROLL PROGRAMMING D21 000060 IRVING F STERN

AD3112 PERSONELL PROGRAMMING D21


000070 EVA D PULASKI
AD3113 ACCOUNT. PROGRAMMING D21
000090 EILEEN W HENDERSON
IF1000 QUERY SERVICES C01
000100 THEODORE Q SPENSER

Department
DEPTNO DEPTNAME MGRNO

A00 SPIFFY COMPUTER SERVICE DIV. 000010


B01 PLANNING 000020
C01 INFORMATION CENTER 000030
D01 DEVELOPMENT CENTER ------
D11 MANUFACTURING SYSTEMS 000060
D21 ADMINISTRATION SYSTEMS 000070
E01 SUPPORT SERVICES 000050
JOIN DE TRES TABLAS

SELECT PROJNO, [Link], DEPTNAME, MGRNO,LASTNAME


FROM PROJECT,
DEPARTMENT,
EMPLOYEE
WHERE [Link] = [Link]
AND [Link] = [Link]
AND [Link] = 'D21'
ORDER BY PROJNO

PROJNO DEPTNO DEPTNAME MGRNO LASTNAME


AD3110 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3111 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3112 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3113 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
NOMBRE DE CORRELACIONES (P, D, E)

SELECT PROJNO, [Link], DEPTNAME, MGRNO,LASTNAME


FROM PROJECT P,
DEPARTMENT D,
EMPLOYEE E
WHERE [Link] = [Link]
AND [Link] = [Link]
AND [Link] = 'D21'
ORDER BY PROJNO

PROJNO DEPTNO DEPTNAME MGRNO LASTNAME


AD3110 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3111 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3112 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
AD3113 D21 ADMINISTRATION SYSTEMS 000070 PULASKI
JOIN DE UNA TABLA CONSIGO MISMA

1. Recuperar la fila de un empleado de la tabla EMPLOYEE (E)


EMPNO … LASTNAME WORKDEPT … BIRTHDATE …

000100 SPENSER E21 1956-12-18


000330 LEE E21 1941-07-18

2. Recuperar el n° departamento de DEPARTMENT (D)


DEPTNO DEPTNAME MGRNO ADMRDEPT

E21 SOFTWARE SUPPORT 000100 e21

3. Recuperar el director en EMPLOYEE (M)


EMPNO … LASTNAME WORKDEPT … BIRTHDATE …

000100 SPENSER E21 1956-12-18


000330 LEE E21 1941-07-18
JOIN DE UNA TABLA CONSIGO MISMA

¿Qué empleados son mayores que su director? SELECT [Link], [Link], [Link], [Link], [Link]
FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D
WHERE [Link] = [Link]
AND [Link] = [Link]
AND [Link] < [Link]

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
FUNCIONES DE COLUMNA

• Las funciones de columna o funciones de agregación son funciones que toman una colección (conjunto o
multiconjunto) de valores de entrada y devuelve un solo valor.
• Las funciones de columna disponibles son: AVG, MIN, MAX, SUM, COUNT.
• Los datos de entrada para SUM y AVG deben ser una colección de números, pero el resto de operadores
pueden operar sobre colecciones de datos de tipo no numérico.
FUNCIONES DE COLUMNA

• Por defecto las funciones se aplican a todas las tuplas resultantes de la consulta.
• Podemos agrupar las tuplas resultantes para poder aplicar las funciones de columna a grupos específicos
utilizando la cláusula GROUP BY.
• En la cláusula SELECT de consultas que utilizan funciones de columna solamente pueden aparecer funciones
de columna.
• En caso de utilizar GROUP BY, también pueden aparecer columnas utilizadas en la
• agrupación.
• Adicionalmente se pueden aplicar condiciones sobre los grupos utilizando la cláusula HAVING.
FUNCIONES DE COLUMNA

• Cálculo del total → SUM (expresión)


• Cálculo de la media → AVG (expresión)
• Obtener el valor mínimo → MIN (expresión)
• Obtener el valor máximo → MAX (expresión)
• Contar el número de filas que satisfacen la condición de búsqueda → COUNT(*)
 Los valores NULL SI se cuentan.
• Contar el número de valores distintos en una columna → COUNT (DISTINCT nombre-columna)
 Los valores NULL NO se cuenta.
FUNCIONES DE COLUMNA

SELECT SUM(SALARY) AS SUM,


AVG(SALARY) AS AVG,
MIN(SALARY ) AS MIN,
MAX(SALARY) AS MAX,
COUNT(*) AS COUNT,
COUNT(DISTINCT WORKDEPT) AS DEPT
FROM EMPLOYEE

SUM AVG MIN MAX COUNT DEPT


873715.00 27303.59375000 15340.00 52750.00 32 8
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 WORKDEPT SUM
A00 46500.00 A00 128500.00
A00 29250.00 B01 41250.00
B01 41250.00 C01 90470.00
C01 38250.00
C01 23800.00
C01 28420.00
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
A00 128500.00 WORKDEPT SUM
B01 41250.00 A00 128500.00
C01 90470.00 C01 90470.00
GROUP BY-HAVING

Necesito, agrupado por departamento, los trabajadores que no sean managers, designer y fielrep, con una media de salario
mayor que $25000.

SELECT WORKDEPT, JOBA, VG(SALARY) AS AVG


FROM EMPLOYEE
WHERE JOB NOT IN ('MANAGER', 'DESIGNER', 'FIELDREP')
GROUP BY WORKDEPT, JOB
HAVING AVG(SALARY) > 25000
ORDER BY WORKDEPT, JOB

WORKDEPT JOB AVG


A00 CLERK 29250.00000000
A00 PRES 52750.00000000
A00 SALESREP 46500.00000000
C01 ANALYST 26110.00000000
GROUP BY-HAVING

SELECT 1 SELECT 2

SELECT WORKDEPT, COUNT(* ) AS NUMB SELECT WORKDEPT, COUNT(* ) AS NUMB


FROM EMPLOYEE FROM EMPLOYEE
GROUP BY WORKDEPT GROUP BY WORKDEPT
ORDER BY NUMB, WORKDEPT HAVING COUNT(*) > 1
ORDER BY NUMB, WORKDEPT

WORKDEPT NUMB
B01 1 WORKDEPT NUMB
E01 1 A00 3
A00 3 C01 3
C01 3 E21 4
E21 4 E11 5
E11 5 D21 6
D21 6 D11 9
D11 9
GROUP BY-HAVING

WORKDEPT ED YEARS
E11 14 27
E21 15 31
D21 15 22
SELECT 1
E01 16 49
SELECT WORKDEPT, AVG(EDLEVEL) AS ED, D11 16 24
AVG(YEAR(CURRENT_DATE-HIREDATE)) AS YEARS A00 17 35
FROM EMPLOYEE B01 18 24
GROUP BY WORKDEPT C01 18 23
ORDER BY 2

SELECT 2
WORKDEPT ED YEARS
SELECT WORKDEPT, AVG(EDLEVEL) AS ED, E21 15 31
AVG(YEAR(CURRENT_DATE-HIREDATE)) AS YEARS E01 16 49
FROM EMPLOYEE A00 17 35
GROUP BY WORKDEPT
HAVING AVG(YEAR(CURRENT_DATE-HIREDATE)) > = 30
ORDER BY 2
GROUP BY-HAVING
WORKDEPT ED MIN
A00 17 600.00
SELECT 1 B01 18 800.00
C01 18 500.00
SELECT WORKDEPT, AVG(EDLEVEL) AS ED, D11 16 400.00
MIN(BONUS) AS MIN D21 15 300.00
FROM EMPLOYEE E01 16 800.00
GROUP BY WORKDEPT E11 14 300.00

SELECT 2

SELECT WORKDEPT, AVG(EDLEVEL) AS ED,


MIN(BONUS) AS MIN
FROM EMPLOYEE WORKDEPT ED MIN
GROUP BY WORKDEPT E21 14 300.00
HAVING MIN(BONUS) = 300 D21 15 300.00
ORDER BY 2
EJECUCIÓN DE CONSULTAS SELECT

• El orden de ejecución de una consulta es el siguiente:

1. Se aplica el predicado WHERE a las tuplas del producto cartesiano/join/vista que hay en el FROM.
2. Las tuplas que satisfacen el predicado de WHERE son colocadas en grupos siguiendo el patrón GROUP BY.
3. Se ejecutan la cláusula HAVING para cada grupo de tuplas anterior.
4. Los grupos obtenidos tras aplicar HAVING son los que serán procesados por SELECT, que calculará, en los casos que
se incluyan, las funciones de agregación que le acompañan.
5. A las tuplas resultantes de los pasos anteriores se le aplica la ordenación descrita en la cláusula ORDER BY.
SUBCONSULTA CON IN

¿Qué departamentos no tienen proyectos asignados?


Tabla DEPARTMENT
DEPTNO DEPTNAME
A00 SPIFFY COMPUTER SERVICE
B01 PLANNING
C01 INFORMATION CENTER

SELECT DEPTNO, DEPTNAME


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

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

• Las instrucciones SQL que permiten modificar el estado de la BBDD son:

 INSERT → Añade filas a una tabla


 UPDATE → Actualiza filas de una tabla
 DELETE → Elimina filas de una tabla
LA INSTRUCCIÓN INSERT

• La inserción de tuplas se realiza con la sentencia INSERT,


 Es posible insertar directamente valores.
 O bien insertar el conjunto de resultados de una consulta.
 En cualquier caso, los valores que se insertan deben pertenecer al dominio de cada uno de los
 atributos de la relación.
• Ejemplos: CLIENTES (DNI, NOMBRE, DIR)
• La inserción
 INSERT INTO CLIENTES VALUES (1111,'Mario',
 'C/. Mayor, 3');
• Es equivalente a las siguientes sentencias
 INSERT INTO CLIENTES (NOMBRE,DIR,DNI)
 VALUES ('Mario','C/. Mayor, 3',1111);
 INSERT INTO CLIENTES (DNI,DIR,NOMBRE)
 VALUES (1111,'C/. Mayor, 3’,'Mario');
AÑADIR UNA FILA

INSERT INTO TESTEMP


VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000, NULL)

INSERT INTO TESTEMP(EMPNO, LASTNAME, WORKDEPT, HIREDATE, SALARY)


VALUES ('000111', 'SMITH', 'C01', '1998-06-25', 25000)

EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000111 SMITH C01 1998-06-25 25000.00 -
AÑADIR VARIAS FILAS

Ejemplo:

• Para la siguiente base de datos, queremos incluir en la relación GRUPOS a todos los grupos, junto con su número de álbumes
publicados:
• GRUPOS(NOMBRE,ALBUMES): LP(TIT,GRUPO, ANIO,NUM_CANC)

• Solución
INSERT INTO GRUPOS
SELECT GRUPO, COUNT (DISTINCT TIT)
FROM LP
GROUP BY GRUPO

• En SQL se prohíbe que la consulta que se incluye en una cláusula INSERT haga referencia a la misma tabla en la que se quieren
insertar las tuplas.
• En ORACLE sí está permitido
AÑADIR VARIAS FILAS

INSERT INTO TESTEMP


SELECT EMPNO,LASTNAME,WORKDEPT,HIREDATE,SALARY,BONUS
FROM EMPLOYEE
WHERE EMPNO < = '000050’

EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000010 HAAS A00 1965-01-01 52750.00 1000.00
000020 THOMPSON B01 1973-10-10 41250.00 800.00
000030 KWAN C01 1975-04-05 38250.00 800.00
000050 GEYER E01 1949-08-17 40175.00 800.00
000111 SMITH C01 1998-06-25 25000.00 -----
LA INSTRUCCIÓN UPDATE

• La modificación de tuplas se realiza con la sentencia UPDATE,


 Es posible elegir el conjunto de tuplas que se van a actualizar usando la cláusula WHERE.

• Ejemplos: CUENTAS (COD, DNI, NSUCURS, SALDO)

• Suma del 5% de interés a los saldos de todas las cuentas.


 UPDATE CUENTAS SET SALDO = SALDO * 1.05;

• Suma del 1% de bonificación a aquellas cuentas cuyo saldo sea superior a 100.000 €.
 UPDATE CUENTAS SET SALDO = SALDO * 1.01
WHERE SALDO > 100000;

• Modificación de DNI y saldo simultáneamente para el código 898.


 UPDATE CUENTAS SET DNI='555', SALDO=10000
WHERE COD LIKE '898';
MODIFICAR DATOS

• Antes: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000010 HAAS A00 1965-01-01 52750.00 1000.00
000020 THOMPSON B01 1973-10-10 41250.00 800.00
000030 KWAN C01 1975-04-05 38250.00 800.00
000050 GEYER E01 1949-08-17 40175.00 800.00
000111 SMITH C01 1998-06-25 25000.00 -----

UPDATE TESTEMP
SET SALARY = SALARY + 1000
WHERE WORKDEPT = 'C01'

• Después: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000010 HAAS A00 1965-01-01 52750.00 1000.00
000020 THOMPSON B01 1973-10-10 41250.00 800.00
000030 KWAN C01 1975-04-05 39250.00 800.00
000050 GEYER E01 1949-08-17 40175.00 800.00
000111 SMITH C01 1998-06-25 26000.00 -----
LA INSTRUCCIÓN DELETE

• La eliminación de tuplas se realiza con la sentencia DELETE:


 DELETE FROM R WHERE P; -- WHERE es opcional
 Elimina tuplas completas, no columnas. Puede incluir subconsultas.

• Ejemplos: para la BD de CLIENTES, CUENTAS, SUCURSALES.

• Eliminar todas cuentas con código entre 1000 y 1100.


 DELETE FROM CUENTAS WHERE COD BETWEEN 1000 AND 1100;

• Eliminar todas las cuentas del cliente “Jose María García”.


 DELETE FROM CUENTAS WHERE DNI IN
(SELECT DNI FROM CLIENTES
WHERE NOMBRE LIKE 'Jose María García’);

• Eliminar todas las cuentas de sucursales situadas en "Chinchón".


 DELETE FROM CUENTAS WHERE NSUCURS IN
(SELECT NSUC FROM SUCURSALES
WHERE CIUDAD LIKE 'Chinchón');
BORRAR FILAS

• Antes: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000010 HAAS A00 1965-01-01 52750.00 1000.00
000020 THOMPSON B01 1973-10-10 41250.00 800.00
000030 KWAN C01 1975-04-05 38250.00 800.00
000050 GEYER E01 1949-08-17 40175.00 800.00
000111 SMITH C01 1998-06-25 25000.00 -----

DELETE FROM TESTTEMP


WHERE EMPNO = ‘0001111'

• Después: EMPNO LASTNAME WORKDEPT HIREDATE SALARY BONUS


000010 HAAS A00 1965-01-01 52750.00 1000.00
000020 THOMPSON B01 1973-10-10 41250.00 800.00
000030 KWAN C01 1975-04-05 39250.00 800.00
000050 GEYER E01 1949-08-17 40175.00 800.00
GRACIAS

También podría gustarte