Bases de Datos: Structured Query Language (SQL)



Documentos relacionados
Bases de Datos 2. Teórico

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

APÉNDICE SQL (Structures Query Language)

Conceptos Avanzados de Bases de datos

Práctica 3. Consultas SQL

SQL (Structured Query Language)- DML

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Base de datos Lenguaje SQL

SQL (Structured Query Language)

Temario. Índices simples Árboles B Hashing

A.1. Definiciones de datos en SQL

SQL. Orígenes y Evolución

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

Bases de Datos SQL - Ejemplos

Unidad. Lenguaje SQL. (Structured Query Language)

Base de datos relacional

Tema 4. SQL. Juan Ignacio Rodríguez de León

SQL Los fundamentos del lenguaje

5- Uso de sentencias avanzadas

MANUAL BÁSICO DEL LENGUAJE SQL

S.Q.L. (Lenguaje de Consulta Estructurada)

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

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

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

DML en SQL. Consultas sencillas usando el DML de SQL

SERVICIO NACIONAL DE APRENDIZAJE SENA

BASES DE DATOS - SQL. Javier Enciso

SQL Server FEMEPA SQL Server 2000

Bases de Datos Relacionales

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

ADMINISTRACIÓN DE BASE DE DATOS

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

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

Tema 33. El lenguaje SQL

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

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

TEMA 20: CONCEPTOS BÁSICOS DE SQL

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

Bases de Datos 1. Teórico: Structured Query Language

Bases de datos: Sistemas de bases de datos:

Repaso de Conceptos Básicos de Bases de Datos

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Restricciones de Integridad

Sistemas de Datos Curso: Ernesto Chinkes. SQL Básico Algebra Relacional

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

EL LENGUAJE DE BASES DE DATOS SQL (DDL, DML, TRIGGERS Y STORE PROCEDURES)

T12 Vistas y tablas temporales

Acceso a bases de datos MySQL con PHP

6 - Recuperar algunos registros (where)

EJERCICIO SOBRE EMPRESA DE MATERIALES DE CONSTRUCCIÓN

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Procedimientos para agrupar y resumir datos

6- Combinación de tablas

ÍNDICE PRIMERA PARTE... 17

DML SQL II. Comparaciones con relaciones

Bases de Datos. Sistemas de Gestión de Bases de Datos

CURSO DE SQL SERVER 2005

Diseño de bases de datos

EXAMEN TEMAS 3, 4 y 5. CREACIÓN Y EXPLOTACIÓN DE UNA BASE DE DATOS

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

INSTITUCIÓN EDUCATIVA GABRIEL GARCIA MÁRQUEZ BASE DE DATOS. DESARROLLO DE SOFTWARE Página 1 de 28 SQL SQL

MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN. Tema 3: Interrogación y explotación de datos. Leire Aldaz, Begoña Eguía y Leire Urcola

Introducción a las bases de datos.

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

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Referencia SQL en la versión de HUGOSQL White Paper por: HUGOSQL 2012

Introducción a los Sistemas de Gestión de Bases de Datos

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

FORMACIÓN E-LEARNING. Curso de Lenguaje SQL para Oracle

[CASI v.0110] Pág. 1

Utilización del programa de Orabench Versión para Migración. Describir los pasos para la utilización del programa Orabench de Oracle.

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

Desarrollo Cobol/DB2

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

FUNCIONES EN SQL SERVER

SENTENCIAS Y CONSULTAS EN SQL SERVER

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

1. DML. Las subconsultas

Modulo I: Introducción Gestores de Bases De Datos

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

BASES DE DATOS I CONSULTA DE DATOS

Introducción SQL. Ges2ón y Modelación de Datos María Constanza Pabón

El catalogo del sistema. Bibliografía: Introducción a los Sistemas de Bases de Datos Date, C.J.

Tema 4. Manipulación de datos con SQL

Lenguaje SQL. SQL Structured Query Languaje. Capacidades del Lenguaje. Estructura Básica de una consulta SQL

Crear BD en. Isis Bonet Cruz, PhD

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

Consultas con combinaciones

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Lenguaje para descripción de datos

BASES DE DATOS. TEMA 7. SQL. EL LENGUAJE DE CONSULTA.

Transcripción:

Structured Query Language (SQL): Introducción Bases de Datos: Structured Query Language (SQL) Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl Originalmente era el lenguaje de interrogación del DBMS relacional System R (IBM) en la segunda mitad de los años 70. Posteriormente adoptado por otros sistemas Luego transformado en estándar: 1986 Primera versión ANSI 1989 Llamado SQL-89 1992 Llamado alternativamente SQL-92 o SQL-2 1999 Llamado alternativamente SQL-99 o SQL-3 SQL contiene la funcionalidad tanto de un DDL (Data Definition Language), como de un DML (Data Manipulation Language). Revisión: 15 de Mayo de 2005 Franco Guidi Polanco 2 Dominios de datos más comúnmente utilizados en SQL Caracteres: tipo CHAR CHAR(largo) Tipos numéricos exactos: SMALLINT INTEGER NUMERIC NUMERIC [(Precisión [, escala ] ) ] Números en punto flotante FLOAT Fecha: tipo DATE Instrucciones en SQL SQL como DDL: Crear tablas (CREATE TABLE) Modificar estructura de tablas (ALTER TABLE) Eliminar tablas (DROP TABLE) SQL como DML: Insertar nuevas tuplas (INSERT) Actualizar contenidos de tuplas (UPDATE) Eliminar tuplas (DELETE) Seleccionar tuplas (SELECT) Franco Guidi Polanco 3 Franco Guidi Polanco 4

CREATE TABLE Permite crear una nueva tabla CREATE TABLE <nombre de tabla> (<nombre de campo> <tipo> [(<tamaño>)] <restricción>,...otros campos) Los valores posibles para <tipo> dependen del DBMS utilizado (ej.: integer, char, date). El <tamaño> es usado solo en ciertos tipos de datos (ej.: char). Ej.: CREATE TABLE INTEGER NOT NULL, CHAR(10) NOT NULL) CREATE TABLE Algunas restricciones son: NULL o NOT NULL UNIQUE. Indica que no pueden existir dos filas con el mismo valor para este campo. PRIMARY KEY. Indica que el campo es clave primaria. Solo se usa si la clave se compone de 1 campo, si no, se usa PRIMARY KEY (campo, campo,...) después de las definiciones de campos. DEFAULT. Inserta un valor por omisión cuando el registro se crea sin un valor para el campo (ej.: COSTO INTEGER DEFAULT = 1). FOREIGN KEY. Indica que el campo es clave foránea. Funciona igual que PRIMARY KEY, pero va seguido de: REFERENCES <nombre de tabla> (<nombre de campo>), que indica la tabla y campos referenciados. Franco Guidi Polanco 5 Franco Guidi Polanco 6 ALTER TABLE Permite modificar la estructura de un tabla. ALTER TABLE <nombre de tabla> ADD DROP MODIFY (especificación de campo(s)...) DROP TABLE Permite eliminar una tabla. DROP TABLE <nombre de tabla> La especificación de campos se hace igual que en el caso de CREATE TABLE Ej.: ALTER TABLE ADD (FECHA DATE NOT NULL) FECHA Ej.: DROP TABLE FECHA Franco Guidi Polanco 7 Franco Guidi Polanco 8

INSERT Agrega nuevos registros a una tabla. INSERT INTO <tabla> [(<lista de campos>)] VALUES (<lista de valores> <expresión select>) INSERT INTO (, ) VALUES (130, 50.155.842-K ) 130 100 115 120 50.155.842-K 15.333.222-1 50.251.366-9 17.322.568-2 UPDATE Modifica los valores de uno o más campos de un conjunto de registros de una tabla. UPDATE <tabla> SET <lista de asignaciones> [WHERE <condiciones lógicas>] UPDATE SET = 60.155.842-K WHERE = 115 115 60.155.842-K 100 115 120 15.333.222-1 50.251.366-9 17.322.568-2 Franco Guidi Polanco 9 Franco Guidi Polanco 10 DELETE Elimina uno o más registros de una tabla. DELETE FROM <tabla> [WHERE <condiciones lógicas>] SELECT Permite efectuar consultas sobre la BD SELECT [DISTINCT] <lista de campos> FROM <lista de tablas> [WHERE <condiciones lógicas>] [ORDER BY <lista de campos>] [GROUP BY <lista de campos>] Se pueden usar ciertas funciones agregadas : UPDATE WHERE = 115 100 115 15.333.222-1 60.155.842-K SUM AVG MIN MAX COUNT 120 17.322.568-2 Franco Guidi Polanco 11 Franco Guidi Polanco 12

Ejemplo Ejemplos SELECT (1): SELECT FROM Pedidos Ped# Fecha_ pedido Proveedores Obtener todos los datos de todos los proveedores: 1 10/03/1999 5645462-8 2 11/03/1999 6353134-4 3 11/03/1999 8545432-8 5645462-8 6353134-4 8545432-8 YTF ZYZ MNO Arica SELECT * Detalles Artículos Ped# Cantidad _ articulo 1 50 1 48 2 500 Lápiz Tijeras Agenda 5645462-8 6353134-4 8545432-8 ABC XYZ MNO Arica 3 10 3 12 CD-ROM 996589-0 Lápiz Franco Guidi Polanco 13 Franco Guidi Polanco 14 Ejemplos SELECT (2): proyección Obtener y de todos los proveedores: SELECT, Ejemplos SELECT (3) Obtener los códigos de todos los artículos: SELECT ART# FROM ARTICULO 5645462-8 6353134-4 8545432-8 ABC XYZ MNO 996589-0 Franco Guidi Polanco 15 Franco Guidi Polanco 16

Ejemplos SELECT (4): cláusula DISTINCT Ejemplos SELECT (5): selección de tuplas Obtener los códigos de los artículos solicitados: SELECT ART# SELECT DISTINCT ART# Obtener toda la información de los proveedores de : SELECT * WHERE PROVEEDORES.CIUDAD = SELECT * WHERE CIUDAD = 5645462-8 ABC 8545432-8 MNO Franco Guidi Polanco 17 Franco Guidi Polanco 18 Ejemplos SELECT (6) Obtener los códigos de pedidos por cantidades comprendidas entre 10 y 48: SELECT DISTINCT PED# WHERE CANTIDAD >= 10 AND CANTIDAD <= 48 Ejemplos SELECT (7): ordenamiento Obtener los nombres de los proveedores en orden alfabético: SELECT NOMBRE ORDER BY NOMBRE Ped# 1 3 MNO YTF ZYZ Franco Guidi Polanco 19 Franco Guidi Polanco 20

Ejemplos SELECT (8): join Obtener los códigos de pedidos con los datos de los proveedores a los que estos van dirigidos: Ejemplos SELECT (9) Obtener las ciudades de los proveedores que han entregado lápices: SELECT PED#, PROV#, NOMBRE, CIUDAD FROM S, PROVEEDORES WHERE S.PROV# = PROVEEDORES.PROV# Ped# SELECT DISTINCT CIUDAD FROM ARTICULOS, DETALLES, S, PROVEEDORES WHERE ARTICULOS.ART# = DETALLES.ART# AND DETALLES.PED# = S.PED# AND S.PROV# = PROVEEDORES.PROV# AND ARTICULOS.NOMBREARTICULO = Lápiz 1 5645462-8 YTF 2 6353134-4 ZYZ Arica 3 8545432-8 MNO Franco Guidi Polanco 21 Franco Guidi Polanco 22 Ejemplos SELECT (10): redenominación Encontrar todos las parejas distintas de códigos artículos : SELECT A.ART#, B.ART# FROM ARTICULOS A, ARTICULOS B WHERE A.ART# < B.ART# A. B. 996589-0 996589-0 996589-0 SELECT y funciones agregadas Si en la instrucción SELECT no hay un GROUP BY (visto más adelante), las funciones agregadas operan sobre todas las tuplas Funciones agregadas: COUNT(): cuenta tuplas MIN(): obtiene el menor valor para un campo MAX(): obtiene el mayor valor para un campo SUM(): suma los valores de un campo AVG(): calcula el promedio de valores de un campo STDEV(): calcula la d.e. de valores de un campo VARIANCE(): calcula la varianza de valores de un campo Franco Guidi Polanco 23 Franco Guidi Polanco 24

SELECT y funciones agregadas Contar los proveedores: SELECT COUNT(*) Sumar SELECT SUM( Cantidad ) WHERE ART#= Count(*) 3 Sum(Cantidad) 60 SELECT y funciones agregadas: regla Regla para el uso de funciones agregadas: Si una instrucción SELECT no contiene la cláusula GROUP BY, y si la cláusula SELECT contiene una o más funciones agregadas, todos los identificadores de columna especificados en la cláusula SELECT deben estar contenidos en una función agregada.! Franco Guidi Polanco 25 Franco Guidi Polanco 26 SELECT y funciones agregadas: regla Ejemplo Situación válida: SELECT SUM( Cantidad ) WHERE ART#= Situación NO valida: SELECT, SUM( Cantidad ) WHERE ART#= Interrogaciones anidadas Se utiliza una expresión SELECT como parte de la cláusula where. Por ejemplo: obtener el código de los artículos que hayan sido pedidos en la mayor cantidad: SELECT ART# WHERE CANTIDAD = (SELECT MAX(CANTIDAD) ) Franco Guidi Polanco 27 Franco Guidi Polanco 28

Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS Permite generar condiciones basadas en la existencia o inexistencia de tuplas. Ejemplo: encontrar los artículos que tienen el mismo nombre (pero código diferente) : SELECT * FROM ARTICULOS A1 WHERE EXISTS (SELECT * Artículos FROM ARTICULOS A2 WHERE A1.NOMBRE_ARTICULO = A2.NOMBRE_ARTICULO AND A1.ART# <> A2.ART# ) _ articulo Lápiz 996589-0 Lápiz Interrogaciones anidadas: cláusula EXISTS / NOT EXISTS Mostrar los datos de los artículos que no han sido pedidos: SELECT * FROM ARTICULOS WHERE NOT EXISTS (SELECT * WHERE ARTICULOS.ART# = DETALLES.ART# ) _ articulo 996589-0 Lápiz Franco Guidi Polanco 29 Franco Guidi Polanco 30 Interrogaciones con agrupamiento: SELECT GROUP BY GROUP BY: permite agrupar tuplas sobre la base de similitudes. Ejemplo: Encontrar las ciudades de los proveedores SELECT CIUDAD GROUP BY CIUDAD Arica Interrogaciones con agrupamiento: SELECT GROUP BY GROUP BY es útil con funciones agregadas. Ejemplo: encontrar la cantidad de proveedores de cada ciudad: SELECT CIUDAD, COUNT(*) GROUP BY CIUDAD Arica Count(*) 2 1 La función COUNT(*) es aplicada a cada línea agrupada. Franco Guidi Polanco 31 Franco Guidi Polanco 32

Regla para el uso de SELECT GROUP BY Regla para el uso de la cláusula GROUP BY: Si una instrucción SELECT contiene la cláusula GROUP BY, todos los identificadores de columna especificados en la cláusula SELECT deben estar contenidos en una función agregada o en la lista de columnas presentes en la cláusula GROUP BY (o en ambas).! Regla para el uso de SELECT GROUP BY (cont.) Ejemplos: Situación válida: Situación no válida: SELECT, SUM(Cantidad) FROM Detalles GROUP BY SELECT, Ped#, SUM(Cantidad) FROM Detalles GROUP BY Franco Guidi Polanco 33 Franco Guidi Polanco 34 Interrogaciones con agrupamiento: SELECT GROUP BY HAVING HAVING se usa con GROUP BY, para establecer una condición de filtro sobre tuplas agregadas. Ejemplo: Encontrar los códigos de artículo y las cantidades para los cuales se haya pedido en total 50 o más unidades. SELECT, SUM(Cantidad) FROM Detalles GROUP BY HAVING SUM(Cantidad)>=50 Sum(Cantidad) 50 60 500 Regla para el uso de SELECT GROUP BY HAVING Regla para el uso de la cáusula HAVING: Todos los identificadores de columnas especificados en la cláusula HAVING deben estar contenidos en! una función agregada o en la lista de columnas especificadas en la cláusula GROUP BY. Franco Guidi Polanco 35 Franco Guidi Polanco 36

Regla para el uso de SELECT GROUP BY HAVING (cont.) Ejemplos: Situación válida: SELECT, SUM(Cantidad) FROM Detalles GROUP BY HAVING ART#= AND SUM(Cantidad)>=50 Situación no válida: SELECT, SUM(Cantidad) FROM Detalles GROUP BY HAVING PED#= 1 Franco Guidi Polanco 37