Tema 4. Manipulación de datos con SQL



Documentos relacionados
1. Dadas las tablas ALUM y NUEVOS, insertar en la tabla ALUM los nuevos alumnos.

Unidad. Lenguaje SQL. (Structured Query Language)

Consultas con combinaciones

Tutorial de SQL - El comando SELECT

SQL (Structured Query Language)

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

Creación y Gestión de Tablas. Copyright Oracle Corporation, All rights reserved.

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

1. DML. Las subconsultas

CONSULTAS BASICAS EN SQL SERVER

8 SQL SERVER 2008 RA-MA

UNIDAD DE TRABAJO 2: BASES DE DATOS RELACIONALES

A.1. Definiciones de datos en SQL

Sub consultas avanzadas

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Subconsultas. Copyright Oracle Corporation, All rights reserved.

Qué es una subconsulta?.

MANUAL BÁSICO DEL LENGUAJE SQL

SQL Server FEMEPA SQL Server 2000

Práctica A: Trabajo con subconsultas

CONCEPTOS DE PROCESAMIENTO DE TRANSACCIONES

CONSULTAS DE RESUMEN SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

Datos Agregados por medio de Funciones de Grupo. Copyright Oracle Corporation, All rights reserved.

Bases de Datos I Práctica 1 Ejercicios de SQL

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Trabajos de Ampliación. Bases de datos NoSQL.

Ejercicios SQL - Select TutorialesNET Versión Revisión 1 25 de julio de 2015

VISUALIZACIÓN DE DATOS A PARTIR DE VARIAS TABLAS

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

5- Uso de sentencias avanzadas

SQL Los fundamentos del lenguaje

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

T12 Vistas y tablas temporales

Sql Basico. Seminar Introduction

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

SQL (Structured Query Language)- DML

select nombre from profesores where categoria='aso6';

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

LENGUAJE SQL. En Mysql se utiliza un subconjunto de SQL (update, insert into, delete, select, truncate,etc).

MANUALITO MS-SQL SERVER

Boletín de Problemas de la Asignatura II18 Bases de Datos. Ingeniería Informática Universitat Jaume I

Bases de Datos 2. Teórico

Vistas en postgresql

Curso SQL Nivel Avanzado 1. Miguel Jurado García

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

3. El catálogo 26. Laboratorio de Bases de Datos

Si queremos modificar la contraseña de sys, una vez que accedamos al sistema como sys, escribiremos la sentencia:

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

BASES DE DATOS EN VISUAL BASIC ACCESS + SQL

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

Conceptos Avanzados de Cursores Explícitos. Copyright Oracle Corporation, All rights reserved.

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Constraints (Restricciones) Copyright Oracle Corporation, All rights reserved.

Repaso de Conceptos Básicos de Bases de Datos

Tecnología de la Información y la Comunicación. Base de datos. Consultas

ÍNDICE INTRODUCCIÓN...13

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Tema: USO DE COMBINACIONES EXTERNAS.

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

Bases de datos relacionales y el modelo entidad-relación

Structured Query Language (SQL) Fundamentos de Bases de Datos InCo

Restricciones de Integridad

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Ampliación de Bases de Datos Práctica 1: El lenguaje PL/SQL de Oracle Sesión 1: Introducción al PL/SQL

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Bases de Datos Relacionales

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

ÍNDICE PRIMERA PARTE... 17

Práctica A: Procedimientos para agrupar y resumir datos

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Práctica 3. Consultas SQL

1.264 Tema 7. Introducción a SQL

CURSO DE SQL SERVER 2005

Bases de Datos: Structured Query Language (SQL)

Tema: Uso de sentencias SQL

SQL (DML) Carlos A. Olarte Gestión y Modelación de SQL Datos (DML)

ST31_Querying Microsoft SQL Server

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

3 Consultas y subconsultas

2. ESTUDIO DE INDICES

Sistemas de Bases de Datos II

UNIVERSIDAD AUTONOMA DE LOS ANDES UNIANDES LENGUAJE SQL. SQL es un estándar un lenguaje estructurado para consultas

6- Combinación de tablas

S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas. Sistemas de Bases de Datos II - ITS EMT CETP

m046a Curso Consultando SQL Server 2005/2008 con Transact-SQL, 15 h

UNION, INTERSECCION Y DIFERENCIA. SELECT TABLE Expresión con operador de reunión (SELECT * FROM PROFESOR) UNION (SELECT * FROM ESTUDIANTE)

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

SUB CONSULTAS EN SQL IMPORTACIÓN Y EXPORTACIÓN DE TABLAS DE A OTRA PLATAFORMA

Grupo Kybele, Pág. 1

Ficheros y Bases de Datos Curso Ingeniería Técnica de Informática Primer Parcial. 1-Junio Nombre:

FUNCIONES EN SQL SERVER

Base de datos I Facultad de Ingeniería. Escuela de computación.

Transcripción:

Tema 4 Manipulación de datos con SQL

Índice Tema 4 1. Inserción de registros. Consultas de datos anexados. 2. Modificación de registros. Consultas de actualización. 3. Borrado de registros. Consultas de eliminación. 4. Claúsulas avanzadas de selección. 4.1. Group by y having 4.2. Outer joins. Combinaciones externas. 4.3. Consultas con operadores de conjuntos. 4.4. Subconsultas correlacionadas. 5. Control de transacciones en SQL.

Inserción de registros Añadir filas en una tabla. Formato: INSERT INTO nombre_tabla [(colum1 [,( )]] VALUES (valor1 [, valor2] ); Si no se especifican columnas, se entiende que serán todas las columnas de la tabla. Valor, será el que se dará a cada columna, debe coincidir con el tipo de dato con el que se han definido. Si una columna no está en la lista de valores recibirá NULL. Si está definida como NOT NULL, INSERT fallará.

Ejemplos de Inserción de registros INSERT INTO profesores (apellidos, especialidad, cod_centro) VALUES ( Quiroga Martín, Mª Isabel, INFORMATICA, 45) ; INSERT INTO profesores (apellidos, especialidad, cod_centro) VALUES( Seco Jiménez, Ernesto, LENGUA ); Error.. INSERT INTO profesores VALUES(22, 23444800, Gonzalez Sevilla, Miguel A., HISTORIA );

Ejercicio de Inserción de registros Escribe la orden INSERT anterior de otra forma. Inserta un profesor con una especialidad de más de 16 caracteres.

Consulta de datos anexados Se añaden tantas filas como devuelva la consulta. INSERT INTO nombre_tabla1[(colum1 [, colum2],,,)] SELECT{column [, column]. *} FROM nombre_tabla_2 [cláusulas de SELECT];

Consulta de datos anexados INSERT INTO emple_30 (empno, ename, ) SELECT empno, ename FROM emp WHERE deptno = 30; INSERT INTO emple_30 SELECT * FROM emp WHERE deptno = 30;

Consultas de datos anexados Insertar un empleado 1111, GARCIA, en el dpto con mayor nº de empleados y fecha ingreso la del sistema. INSERT INTO emp SELECT DISTINCT 1111, GARCIA, ANALYST, sysdate, 2000, 120, deptno FROM emp WHERE deptno = (SELECT deptno FROM emp GROUP BY deptno HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM EMP GROUP BY deptno) ); DISTINCT es necesario, sino se insertarían tantas filas como empleados hubiese en el depto con mayor nº de empleados.

Consulta de datos anexados Inserta un empleado 1112, Quiroga. Los datos restantes serán los de JAMES. INSERT INTO emp SELECT 1112, QUIROGA, job, mgr, sydate, sal, comm, deptno WHERE ename = JAMES ;

Consulta de datos anexados Dadas las tablas, ALUM y NUEVOS, inserta en ALUM los nuevos alumnos. Inserta en EMP, el empleado 2000, SAAVEDRA, fecha de alta la de sistema, el salario el 20% mas que el MILLER y el resto de los datos los de este.

Modificación de registros Se usa para modificar columnas de 1 o varias filas que cumplan una condición o no. UPDATE nombre_tabla SET column1 = valor1,..column = valorn WHERE condicion; Si se omite WHERE se actualizarán todas las filas.

Modificación de registros UPDATE centros SET direccion = C/ Pilón 13, num_plazas = 295 WHERE cod_centro = 22; UPDATE emp SET sal = sal + 100, comm =NVL(comm, 0) + 10 WHERE empno = 7369;

Consultas de actualización Podemos incluir una subconsulta en las cláusulas SET o WHERE. Cuando forma parte de SET, debe devolver una fila y el mismo nº de columnas y tipo de datos que las que hay entre paréntesis al lado de SET.

Consultas de actualización Formato1: UPDATE nombre_tabla SET colum1 = valor1,..column = valorn WHERE colum3 = (SELECT.);

Consultas de actualización Formato2: UPDATE nombre_tabla SET colum1,..column = (SELECT col1,..coln..) WHERE condicion;

Consultas de actualización Formato3: UPDATE nombre_tabla SET colum1= (SELECT col1 ), colmn = (SELECT coln.) WHERE condicion;

Consultas de actualización UPDATE centros SET (direccion, num_plazas)= (SELECT direccion, num_plazas FROM centros WHERE cod_centro = 50) WHERE cod_centro = 10;

Consultas de actualización UPDATE emp SET sal = sal * 2, comm = 0 WHERE deptno = (SELECT deptno FROM emp GROUP BY deptno HAVING COUNT (*) = (SELECT MAX(COUNT(*)) FROM emp GROUP BY deptno) );

Consultas de actualización UPDATE emp SET ename = LOWER(ename), sal = (SELECT sal * 2 FROM emp WHERE ename = JAMES ) WHERE deptno = (SELECT deptno FROM dept WHERE dname = 'ACCOUNTING );

Consultas de actualización Modifica el nº de departamento de MILLER con el departamento donde haya mas empleados cuyo oficio sea CLERK UPDATE emp SET deptno = (SELECT deptno FROM emp WHERE job = 'CLERK' GROUP BY deptno HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM emp WHERE JOB = 'CLERK' GROUP BY deptno) ) WHERE ename = 'MILLER'

Borrado de Registros Permite borrar, una varias o todas las filas de una tabla que cumplan una condición. El espacio usado por las filas borradas no se reutiliza, al menos que se realice un import o export. la condición puede incluir una subconsulta. DELETE [FROM] nombre_tabla WHERE condicion;

Borrado de Registros DELETE FROM centros WHERE cod_centro = 50; DELETE centros WHERE cod_centro = 50; DELETE FROM dept WHERE deptno IN (SELECT deptno FROM emp GROUP BY deptno HAVING COUNT(*) < 4);

Claúsulas Avanzadas de Selección: GROUP BY y HAVING Cuando necesitemos saber el salario medio por departamento, será necesario realizar un agrupamiento por este. SELECT deptno, AVG(sal) FROM emp GROUP BY deptno; Se puede agrupar por más de una columna, el formato es el siguiente:

Claúsulas Avanzadas de Selección: GROUP BY y HAVING Formato: SELECT.. FROM.. WHERE condicion GROUP BY colum1, colum2 HAVING condicion ORDER BY ; Los datos de SELECT, serán CTE, función de grupo o columna expresada en GROUP BY.

Claúsulas Avanzadas de Selección: GROUP BY y HAVING GROUP BY, para calcular propiedades de 1 o más conjuntos de filas, las filas resultantes de la agrupación se almacenan en una tabla temporal. HAVING, condición de búsqueda para grupos de filas. Comprueba que conjuntos de filas cumplen con la condición especificada en HAVING. Se evalúa sobre la tabla temporal, no puede existir sin GROUP BY.

Claúsulas Avanzadas de Selección: GROUP BY y HAVING SELECT deptno, COUNT(*) FROM emp GROUP BY deptno; SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) > 4; SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING AVG(sal) >= (SELECT AVG(sal) FROM emp);

Claúsulas Avanzadas de Selección: GROUP BY y HAVING HAVING(grupos filas) es similar a WHERE(filas). Se puede realizar una ordenación: SELECT deptno, COUNT(*) FROM emp GROUP BY deptno HAVING COUNT(*) > 4 ORDER BY COUNT(*);

Claúsulas Avanzadas de Selección: GROUP BY y HAVING Orden de evaluación de las Cláusulas de Orden SELECT WHERE selecciona filas GROUP BY agrupa filas HAVING selecciona grupos ORDER BY ordena los grupos

Claúsulas Avanzadas de Selección: GROUP BY y HAVING SELECT deptno, TO_CHAR(SUM(sal), '99G999D99') AS suma, TO_CHAR(MAX(sal), '99G999D99') AS Máximo, TO_CHAR(MIN(sal), '99G999D99') AS Mínimo FROM emp GROUP BY deptno;

Claúsulas Avanzadas de Selección: GROUP BY y HAVING SELECT deptno, job, COUNT(*) FROM emp GROUP BY deptno, job ORDER BY deptno;

Claúsulas Avanzadas de Selección: GROUP BY y HAVING SELECT d.deptno, dname, COUNT(empno) FROM emp e, dept d WHERE e.deptno = d.deptno GROUP BY d.deptno, dname HAVING COUNT(empno) > 4;

Claúsulas Avanzadas de Selección: GROUP BY y HAVING SELECT d.deptno, dname, COUNT(empno) FROM emp e, dept d WHERE e.deptno = d.deptno GROUP BY d.deptno, dname HAVING COUNT(empno) >= (SELECT MAX(COUNT(*)) FROM emp GROUP BY deptno);

Claúsulas Avanzadas de Selección: Combinaciones Externas Permite combinar tablas y seleccionar filas de estas aunque no tengan correspondencia entre ellas. SELECT tabla1.colum1,..tabla1.column, tabla2.colum1, tabla2.column FROM tabla1, tabla2 WHERE tabla1.colum1 = tabla2.colum1(+);

Claúsulas Avanzadas de Selección: Combinaciones Externas SELECT d.deptno, d.dname, COUNT(empno) FROM emp e, dept d WHERE e.deptno = d.deptno GROUP BY d.deptno, d.dname; Con OUTER JOIN, se muestran todos los departamentos aunque no tengan empleados, nº empleados estará a NULL. (*), estará donde no exista el dpto. SELECT d.deptno, d.dname, COUNT(empno) FROM emp e, dept d WHERE e.deptno(+) = d.deptno GROUP BY d.deptno, d.dname;

Claúsulas Avanzadas de Selección: Combinaciones Externas Analiza que ocurre si COUNT(*) en vez de COUNT(empno) y si en SELECT ponemos e.deptno en vez de d.deptno. SELECT e.deptno, d.dname, COUNT(*) FROM emp e, dept d WHERE e.deptno(+) = d.deptno GROUP BY d.deptno, d.dname;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Unión Combina los resultados de 2 consultas, las filas duplicadas se reducen a una. SELECT colum1, colum2,..column FROM tabla1 WHERE condicion UNION SELECT colum1, colum2,..column FROM tabla2 WHERE condicion;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Unión SELECT nombre FROM alum UNION SELECT nombre FROM nuevos; Con ALL aparecen las filas duplicadas. SELECT nombre FROM alum UNION ALL SELECT nombre FROM nuevos;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Intersección Devuelve las filas que son iguales en ambas consultas. SELECT colum1, colum2,..column FROM tabla1 WHERE condicion INTERSECT SELECT colum1, colum2,..column FROM tabla2 WHERE condicion;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Intersección SELECT nombre FROM alum INTERSECT SELECT nombre FROM antiguos; También se puede hacer con operador IN SELECT nombre FROM alum WHERE nombre IN (SELECT nombre FROM antiguos);

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Diferencia Devuelve las filas que están en la 1ª SELECT y no en la 2ª. SELECT colum1, colum2,..column FROM tabla1 WHERE condicion MINUS SELECT colum1, colum2,..column FROM tabla2 WHERE condicion;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Diferencia SELECT nombre, localidad FROM alum MINUS SELECT nombre, localidad FROM antiguos ORDER BY localidad;

Claúsulas Avanzadas de Selección: Operadores de Conjuntos - Diferencia Se puede hacer usando NOT IN SELECT nombre, localidad FROM alum WHERE nombre NOT IN (SELECT nombre FROM antiguos) ORDER BY localidad;

Reglas para uso de los operadores de conjuntos Las columnas de ambas tablas se relacionan de izquierda a derecha. Los nombres de las columnas de ambas SELECTs no tienen que coincidir. Las SELECTs tienen que tener el mismo nº de columnas. Los tipos de datos tienen que coincidir, aunque la longitud no tiene que ser la misma.

Claúsulas Avanzadas de Selección: Subconsultas Correlacionadas En ocasiones, es necesario relacionar campos de la consulta principal con campos de la subconsulta. Veamos este ejemplo: Mostrar los datos de los empleados cuyos salarios sean iguales al máximo salario de su departamento. Haríamos una subconsulta para ver el máximo salario del departamento del empleado y después lo compararíamos con el salario del empleado.

Claúsulas Avanzadas de Selección: Subconsultas Correlacionadas La consulta debe quedar así: SELECT * FROM emp e WHERE sal = (SELECT MAX(sal) FROM emp WHERE deptno = e.deptno); Hacemos referencia desde la subconsulta a una columna o varias de la consulta más externa. A veces el nombre de las columnas coincide, por lo tanto usaremos alias para la tabla más externa.

Control de Transacciones en SQL Transacción es una secuencia de una o más ordenes SQL, que juntas forman una unidad de trabajo. ROLLBACK, aborta la transacción, volviendo las tablas a la situación del último COMMIT. ROLLBACK automático, se produce cuando haya algún fallo del sistema y no hayamos validado el trabajo hasta entonces.

Control de Transacciones en SQL COMMIT, para validar los cambios que hayamos realizado en la BD. AUTOCOMMIT, parámetro que en SQL*Plus e isql*plus, sirve para validar automáticamente las transacciones en la BD, siempre que esté en ON. Por defecto está en OFF, por tanto INSERT, UPDATE y DELETE no se ejecutan automáticamente, hasta que no hagamos COMMIT SHOW AUTOCOMMIT SET AUTOCOMMIT ON

Control de Transacciones en SQL Hay algunas órdenes SQL que fuerzan COMMIT implícito: QUIT EXIT CONNECT DISCONNECT CREATE TABLE DROP TABLE CREATE VIEW DROP VIEW GRANT ALTER REVOQUE AUDIT NOAUDIT