6.1 Introducción. Fund. Bases de Datos Ing. Felipe Alanís González -ITD- 1

6.1 Introducción  SQL es más amigable para el usuario, a diferencia de Algebra Relacional,  Aunque está basado principalmente en él.  Es el lenguaj

5 downloads 138 Views 3MB Size

Recommend Stories


Bases de Datos MySQL 1
Bases de Datos MySQL 1 Bases de Datos MySQL 2 Propiedades de las entidades. Bases de Datos MySQL 3 La entidad “alumnos” se convierte en la tabla

1. Sistemas de bases de datos
1. Sistemas de bases de datos Contenidos 1.1 Bases de datos y sus usuarios 1.2 Conceptos y arquitectura del sistema de bases de datos 1.3 Estructura g

Modelos Avanzados de Bases de Datos. Funcionalidad 1. Bases de datos Orientadas a Objetos y Bases de Datos Objeto-Relacionales
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA Modelos Avanzados de Bases de Datos. Funcionalidad 1 Bases de datos Orientadas a O

Bases de datos 1. Teórico: Modelo Relacional
Bases de datos 1 Teórico: Modelo Relacional MODELO de DATOS RELACIONAL Conceptos del modelo relacional  Restricciones del modelo relacional y esqu

ING. INFORMÁTICA - BASE DE DATOS
Guía Didáctica ING. INFORMÁTICA - BASE DE DATOS Mayo, 2011 Guía Didáctica – Prof. Mary C. Bernal La presente guía servirá de apoyo y orientación pa

Story Transcript

6.1 Introducción  SQL es más amigable para el usuario, a diferencia de Algebra Relacional,  Aunque está basado principalmente en él.  Es el lenguaje comercial más popular.  Es el lenguaje estándar de las Bases de Datos Relacionales.  Significa Structured Query Language  Su nombre original era SEQUEL desarrollado como parte del proyecto del sistema R de IBM.  Sequential English QUEry Language 

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

1

6.1 Introducción

SQL ha sido tan popular, que aunque es uno más de los lenguajes de las B.D. Relacionales, se ha aceptado como “El Lenguaje”. Los dos Lenguajes que “componen” a SQL: 

DDL.

Data Definition Language 

DML

Data Manipulation Languaje En realidad SQL es una parte de DML. Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

2

6.1 Introducción Una consulta en SQL consta de tres cláusulas: select, from y where



… Select

X … From  … Where

No confundamos select con la operación seleccionar del álgebra relacional, de hecho la discrepancia es un error desde la creación de SQL.

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

3

6.3 Estructura Básica

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

4

6.2 Estructura Básica

6.2 Estructura Básica

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

6

6.2 Estructura Básica

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

7

6.2 Estructura Básica

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

8

6.2 Estructura Básica

select nombre,fecha from (select IdAlumno,nombre from Alumnos),InasistAlum where hora='16:00' and Alumnos.IdAlumno=InasistAlum.IdAlumno

6.2 Estructura Básica

select nombre,fecha from (select IdAlumno,nombre from Alumnos), (select * from InasistAlum where hora='16:00') where Alumnos.IdAlumno=InasistAlum.IdAlumno

6.2 Estructura Básica •



Anidamientos como los anteriores (producto cartesiano de subconsultas) y muchas variantes más de SQL, no cumplen con el SQL Standard Core (Núcleo del SQL estándar). Conviene usar únicamente expresiones que cumplan con el Núcleo del Estándar para conservar la portabilidad. • Muchos DBMS’s cumplen con el estándar, pero por mercadotecnia, añaden una serie de variantes que no necesariamente tendrán otros DBMS’s.

Puede verificar sus expresiones en la siguiente liga: http://developer.mimer.se/validator/parser200x/index.tml O puede ver una lista de las características del Núcleo de SQL Estándar en: http://developer.mimer.se/validator/parser200x/core-sql-200x.tml Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

11

Esta alternativa es la mejor ya que es la mas simple para el usuario ... además cumple con el Núcleo de SQL estándar

6.2 Estructura Básica

Materias.nombre (Materias.nombre=Mat2.nombreMaterias.IdMateriaMat2.IdMateria ( Materias X



(Materias) ) )

Mat2

Renombrar

select distinct Materias.nombre from Materias, Materias Mat2 where Materias.nombre=Mat2.nombre and Materias.IdMateriaMat2.IdMateria Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

13

6.2 Estructura Básica

no cumple con el Núcleo de SQL estándar ...

6.2 Estructura Básica

Esta expresión cumple con el Núcleo de SQL estándar

6.2 Estructura Básica

Pruebe la expresión de consulta de la página anterior añadiendo lo que está en color rojo:

select nombre,day(FechaNac) as dia from Alumnos where month(FechaNac)=3 union select nombre,day(FechaNac) as dia from Maestros where month(FechaNac)=3

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

17

6.2 Estructura Básica El Operador BETWEEN permite simplificar consultas que contienen una cláusula where que especifica que cierto atributo se encuentre dentro de un rango de valores.

Se busca que SQL se parezca más al lenguaje natural para facilidad del usuario Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

18

6.2 Estructura Básica

select distinct IdAlumno from InasistAlum where fecha between '2001/03/06' and '2001/03/08'

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

19

6.2 Estructura Básica Operador LIKE Es útil cuando no es posible resolver consultas aunque los atributos tengan dominio atómicos. Se aplica a atributos char empleando los símbolos % y _ para representar secciones del valor del atributo. Caracter % (representa una subcadena de cualquier tamaño dentro del valor del atributo) Caracter _ (representa a cualquier carácter dentro del valor del atributo)

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

20

6.2 Estructura Básica

Encontrar a los alumnos que tienen un número de control que no corresponde al I.T.D. (valor distinto de '04' en las posiciones 3 y 4). select * from Alumnos where control not like '_ _04%' Esta consulta no sería resuelta tan fácilmente si el atributo “control” fuera de tipo numérico.

6.2 Estructura Básica

select * from Maestros where Calle like 'C%' select Nombre from Maestros – where Nombre like '_o%'

6.2 Estructura Básica

select * from Materias where nombre like '%datos%' select * from Materias where nombre like '%DATOS%'

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

23

6.2 Estructura Básica

Encontrar los nombres de los alumnos que viven en la calle “Real”.

select nombre from Alumnos where domicilio like '%Real%' El resultado de esta consulta no es satisfactorio.

6.2 Estructura Básica

select nombre from Alumnos where calle='Real' Los esquemas que cuentan con todos los atributos con dominio atómico, facilitan la obtención de consultas precisas. Observe que no se requiere usar LIKE.

6.2 Estructura Básica Cláusula Order by

Obtener una relación de los alumnos ordenada en base a la colonia. select * from Alumnos order by Colonia o select * from Alumnos order by 7

6.2 Estructura Básica

Obtener una relación con el domicilio y nombre de los alumnos ordenada en primer lugar por la colonia, en 2º lugar por la calle y por último números exterior e interior. select Colonia,Calle,NumeroExt,NumeroInt,Nombre from Alumnos order by Colonia,Calle,NumeroExt,NumeroInt Añada tuplas con colonia y calle iguales para observar el efecto de la expresión.

4.3 Funciones de Agrupación

Operan sobre grupos de tuplas. Funciones: Avg(atributo). Calcula la media de los valores de un atributo numérico para un grupo de tuplas.  Min(atributo). Determina el valor menor de un atributo de un grupo de tuplas.  Max(atributo). Determina el valor mayor de un atributo de un grupo de tuplas. 

Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

28

4.3 Funciones de Agrupación

Funciones: Sum(atributo). Calcula la suma de todos los valores de un atributo de un grupo de tuplas.  Count(atributo) o Count(*). Cuenta el número de tuplas que hay en un grupo. Antes de "atributo" puede ir la palabra “distinct”. Se debe indicar el criterio de agrupación usando la cláusula group by. En la relación resultante aparecerá una tupla por cada grupo formado. 29 Fund. Bases de Datos Ing. Felipe Alanís González -ITD

4.3 Funciones de Agrupación

Contar el número de materias select count(*) from Materias select count(nombre) from Materias select count(creditos) from Materias Contar el número distinto de créditos de las materias select count(distinct creditos) from Materias No llevan group by, por lo que solo formará un grupo (con todas las tuplas). Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

30

4.3 Funciones de Agrupación Número de alumnos que vive en cada colonia.

select colonia,count(*) from Alumnos group by colonia Número de tuplas de cada grupo (en este caso con la misma colonia).

Relación de los motivos de inasistencia y el total de inasistencias por cada motivo ordenada en forma descendente por el total. select motivo,count(*) from InasistAlum group by motivo order by 2 desc Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

31

4.3 Funciones de Agrupación Igual a la anterior (que se muestra aquí abajo) pero en la relación resultante solo incluir los motivos mayores a 1 inasistencia. select motivo,count(*) from InasistAlum group by motivo order by 2 desc select motivo,count(*) from InasistAlum group by motivo having count(*)>1 order by 2 desc select motivo,count(*) as faltas from InasistAlum group by motivo having faltas>1 order by faltas desc Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

32

4.3 Funciones de Agrupación Número de inasistencias en total de cada alumno. select IdAlumno,count(*) as faltas from InasistAlum group by IdAlumno order by faltas desc Número de inasistencias de cada alumno por mes, ordenadas de más a menos considerando solo las inasistencias por motivos deportivos. select IdAlumno,month(fecha) as mes,count(*) as faltas from InasistAlum where motivo="Deportes" group by IdAlumno,mes order by faltas desc Fund. Bases de Datos

Ing. Felipe Alanís González -ITD-

33

4.3 Funciones de Agrupación

count(distinct fecha) as TotDias from InasistAlum group by IdAlumno order by TotDias desc,TotFaltas desc

4.3 Funciones de Agrupación Encontrar el número máximo de créditos. select max(creditos) from Materias Número mínimo de créditos. select min(creditos) from Materias Número de créditos promedio de todas las materias. select avg(creditos) from Materias o select Fund. Bases de sum(creditos)/count(*) Datos Ing. Felipe Alanís González -ITD-from Materias35

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.