Taller de base de datos ags dic_2014 control escolar
-
Upload
luiz-castro -
Category
Education
-
view
761 -
download
2
description
Transcript of Taller de base de datos ags dic_2014 control escolar
Taller de Base de
Datos
Dra. Elvia Ruiz Beltrán
Objetivo general
El estudiante identificará
herramientas de software para
diseñar y administrar bases de
datos, así como las tecnologías
de conectividad.
Aportación de la asignatura al
perfil del egresado
Proporciona conocimientos y
habilidades para que utilicen de
manera óptima gestores y
tecnologías de acceso a base
de datos.
Temario
1. Gestor de base de datos.
1.1. Características del gestor.
1.2. Herramientas.
1.2.1. De creación de bases de datos.
1.2.2. De administracion de bases de datos.
1.2.3. De edición para crear esquemas y consultas de bases de
datos.
1.2.4. De control, monitoreo y estadísticas de acceso a bases de
datos.
1.2.5. Utilerias diversas.
1.3 Instalación y configuración del enterno operativo.
Temario
2. Administración de bases de datos.
2.1. Creación de bases de datos.
2.1.1. Creación de la estructura de la base de datos.
2.1.2. Creación de dominios definidos por el DBA.
2.1.3. Definir el esquema general de la base de datos (tablas, atributos,
llaves primarias y llaves heredadas).
2.1.4. Creación de vistas de la base de datos (view).
2.1.5. Generalización y especialización.
2.1.6. Agregación.
2.1.7. Entidades recursivas.
2.2. Definición del esquema de integridad.
2.2.1. Validar y verificar integridad de entidad e integridad referencial.
2.2.2. Creación de disparadores (Trigger´s).
2.2.3. Creación de procedimientos almacenados.
2.3. Definición del esquema de seguridad.
2.3.1. Creación de usuarios de la base de datos.
2.3.2. Asignación de privilegios sobre los objetos de información.
Temario
2.4. Definición del esquema de recuperación.
2.4.1. Diseño y creación de la bitácora.
2.4.2. Recuperación a partir de la bitácora.
2.4.3. Respaldar bases de datos.
2.1.4. Recuperar bases de datos.
2.5. Diseño y procesamiento de transacciones.
2.5.1. Definición de transacciones en lenguaje huésped.
2.5.2. Ejecución de transacciones planas en el gestor de bases de datos.
2.5.3. Ejecución de transacciones anidadas.
Temario
3. Tecnologías de conectividad a base de datos.
3.1. ODBC.
3.1.1. Terminología y conceptos.
3.1.2. Administrador de orígenes de datos ODBC.
3.1.3. Instalación y configuración del driver acorde al gestor de
bases de datos.
3.2. ADO.NET
3.2.1. Terminología y conceptos.
3.2.2. Componentes disponibles.
3.2.2.1. Connection.
3.2.2.2. Command.
3.2.2.3. Recordsource.
3.2.2.4. Error.
3.2.3. Prototipo de aplicaciones con conectividad a bases de datos.
3.3. JDBC
3.3.1. Terminología y conceptos.
3.3.2. SQL y JDBC.
3.3.2.1. Jerarquía de clases
java.sql.*.
3.3.2.2. Interface
java.sql.connection.
Temario
3.3.2.3. Interface
java.sql.statement
3.3.2.4. Interface
java.sql.resultset
3.3.1.5. Jerarquía de clases
javax.sql.*
3.3.3. Instalación y configuración del driver
acorde al gestor de base de datos.
3.3.4. Prototipo de aplicaciones con conectividad
a base de datos.
Referencias 1. C. J. Date.
Introduction to Data Base Systems, Volumen II.
Ed. Addison – Wesley Iberoamericana.
2. James R. Groff, Paul N. Weinberg.
Aplique SQL.
Ed. Mc Garw Hill.
3. Mukhar, Kevin, et.al.
Fundamentos de bases de datos con Java.
Ed. Wrox/Anaya Multimedia, 2002.
4. Navathe.
Fundamentos de Bases de Datos.
Ed. Addison Wesley 1999.
5. Deitel Harvey M., et.al.
Visual Basic .NET for Experience
Programmers.
Ed. Microsoft Press, 2002.
6. Balena, Francesco.
Programming Microsoft Visual Basic
.NET.
Ed. Microsoft Press, 2002.
7. Sceppa, David.
Microsoft ADO.NET.
Ed. Microsoft Press, 2002.
8. Worsley John.,et.al.
Practical Postgresql.
Ed. Command prompt Inc. 2002
9. Korry Douglas.,et.al.
PostgreSQL.
Ed. O'Reilly & Associates, 2003.
Bibliografía 10. Nielsen Paul.
Microsoft SQL Server 2000 Bible.
Ed. John Wiley & Sons, 2002.
11. Houlette Forrest.
Fundamentos de SQL.Para
programadores. Ed. Mc Graw Hill, 2001.
12. Nielsen Paul.
DeVry College of Technology and
Monroe College Database Systems
Using Oracle: A Simplified Guide to SQL
and PL/SQL. Ed. Prentice Hall.
13. Ray Ranking Paul Jensen Paul
Bertucci.
Microsoft SQL Server 2000 Unleashed,
2/E 2003. Ed. Que/Sams.
14. Steve Holzner.
Microsoft Visual C#.NET 2003 Kick Start
2003. Ed. Que/Sams.
15. Buck Woody.
Essential SQL Server™ 2000: And
Administration Handbook 2002.
Ed. Addison Wesley Professional.
16. Pérez, C.
Domine Microsoft SQL Server 2000
Administración y Análisis de Bases
de Datos. Ed. Alfaomega-RAMA.
17. Pérez, C.
ORACLE 9i Administración y Análisis de
Bases de Datos. Ed. Alfaomega-RAMA.
18. Melton, Jim y Eisenberg, Andrew.
SQL Y JAVA Guía para SQLJ, JDBC y
Tecnologías Relacionadas. Ed.
Alfaomega-RAMA.
Bibliografía
19. Jeffrey P. McManus Chris
Kinsman.
C# Developer's Guide to ASP.NET, XML,
and ADO.NET 2002.
Ed. Addison Wesley Professional.
Referencias en Internet
www.bivitec.org.mx
www.javasun.com
Evaluación
Reglas de convivencia
• No consumir alimentos en clase.
• Se pasará lista pasados 4 minutos de la hora
de inicio.
• No se permite el uso de computadores o
dispositivos móviles en clase, a menos que se
indique por el instructor.
•Respeto entre maestro-alumno, alumno-
alumno.
Sistema gestor de base de datos
Los Sistemas de gestión de base de datos son un
tipo de software muy específico, dedicado a servir
de interfaz entre la base de datos, el usuario y
las aplicaciones que la utilizan.
SGBD o
DBMS
(Data base
manager
system)
Usuario Base de datos
Se compone de un:
• lenguaje de definición de datos (Data Definition
Language, DDL por sus siglas en inglés), •SQL
• de un lenguaje de manipulación de datos y
• de un lenguaje de consulta.
1.1 Características
del gestor
Acrónimos
SGBD: Sistema Gestor de Base de Datos
DBMS: Data Base Manegement System
Finalidad del DBMS
Abstracción de la información.
Ahorran a los usuarios detalles acerca
del almacenamiento físico de los datos.
Independencia.
Capacidad de modificar el esquema
(físico o lógico) sin tener que realizar
cambios en las aplicaciones que se sirven
de ella.
Finalidad del DBMS
Redundancia mínima.
Evitar la aparición de información
repetida o redundante.
Consistencia.
Vigilar que aquella información que
aparece repetida se actualice de forma
coherente.
Finalidad del DBMS
Seguridad.
Gran valor de los datos.
SGBD garantizar que esta información
se encuentra asegurada frente a
usuarios malintencionados
SGBD disponen de un complejo
sistema de permisos a usuarios y grupos
de usuarios, que permiten otorgar
diversas categorías de permisos.
Finalidad del DBMS
Integridad.
Adoptar las medidas necesarias para
garantizar la validez de los datos almacenados.
Proteger los datos ante fallos de hardware,
datos introducidos por usuarios descuidados.
Respaldo y recuperación.
Proporcionar una forma eficiente de realizar
copias de seguridad de la información
almacenada.
Restaurar a partir de estas copias los datos
que se hayan podido perder.
Finalidad del DBMS
Control de la concurrencia.
Son muchas las personas que acceden a
una base de datos.
SGBD debe controlar este acceso
concurrente a la información, que podría derivar
en inconsistencias.
Tiempo de respuesta.
Minimizar el tiempo que el SGBD tarda en
darnos la información solicitada y en almacenar
los cambios realizados.
Finalidad de DBMS
1. Abstracción de la información.
2. Independencia.
3. Redundancia mínima.
4. Consistencia.
5. Seguridad.
6. Integridad.
7. Respaldo y recuperación.
8. Control de la concurrencia.
9. Tiempo de respuesta.
En resumen
DBMS comerciales:
DBMS a utilizar
SQL Server 2008
Developer Edition o superior
MySQL
SQL (lenguaje estructurado de
Consultas o Structured Query Language
). >>>SQL2008<<<
Instalación de SQL Server
Instalación de SQL Server.
Instalación de MySQL.
Configuración de SQL Server
000.2 Configuración del servicio de
SQLServer
Tarea 1
En equipo se investigará acerca de
uno de los SGBD listados
anteriormente.
Se presentará por equipo las
características de cada gestor, el
resumen general (donde se incluya
información extraída de otras
presentaciones) contará como tarea
y se subirá a la plataforma Dropbox
el día que se especifique.
Elementos de la Presentación
Portada
Introducción
Antecedentes del Gestor de Bases
de Datos
Características
Entorno
Conclusiones
Referencias o fuentes de
información
1.2 Herramientas
1.2.1 De creación de bases de
datos (ControlEscolar)
1.2.2 De administración de base
de datos
Administrador de bases de datos (DBA)
Define, maneja y controla las bases de datos,
proporciona asesoría a los desarrolladores,
usuarios y ejecutivos que la requieran.
tiene experiencia en DBMS, diseño de bases de
datos, Sistemas operativos, comunicación de datos,
hardware y programación,
nociones de administración, manejo de personal e
incluso un cierto grado de diplomacia.
1.2.2 De administración de base
de datos Responsabilidades del DBA
Administrar la estructura de la Base
de Datos.
Administrar la actividad de los datos.
Administrar el Sistema Manejador de
Base de Datos.
Establecer el Diccionario de Datos.
Asegurar la confiabilidad de la Base
de Datos.
Confirmar la seguridad de la Base de
Datos.
1.2.2 De administración de base
de datos
Objetivos del DBA
Mantener la Integridad de los
Datos.
Mantener la Seguridad de los
Datos.
Mantener la Disponibilidad de los
Datos.
1.2.3 De edición para crear
esquemas y consultas de bases de
datos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Componentes de SQL
• Comandos,
• Cláusulas,
• Operadores,
• Funciones.
Se combinan en las instrucciones para crear,
actualizar y manipular bases de datos.
Comandos SQL (DDL y DML)
1.2.3 De edición para crear esquemas y consultas de bases de datos
• DDL (Data Definition Language ) permite crear y definir
nuevas bases de datos, campos e índices.
Comandos DDL
Comando Descripción
CREATE Utilizado para crear nuevas tablas,
campos e índices.
DROP Empleado para eliminar tablas e índices.
ALTER Utilizado para modificar las tablas agregando
campos o combinando la definición de los campos.
Componentes de SQL
Comandos SQL (DDL y DML)
Comandos DML
Comando Descripción
SELECT Utilizado para consultar registros de la base de
datos que satisfagan un criterio determinado.
INSERT Utilizado para cargar lotes de datos en la base de
datos en una única operación.
UPDATE Utilizado para modificar los valores de los campos
y registros especificados.
DELETE Utilizado para eliminar registros de una table de
una table de una base de datos.
Componentes de SQL
1.2.3 De edición para crear esquemas y consultas de bases de datos
• DML (Data Manipulation Language) permiten generar
consultas para ordenar, filtrar y extraer datos de la base de
datos.
Cláusulas
1.2.3 De edición para crear esquemas y consultas de bases de datos
• Son condiciones de modificación utilizadas para definir
los datos que desea seleccionar o manipular.
Cláusula Descripción
FROM Utilizada para especificar la tabla de la cual se van a
seleccionar los registros.
WHERE Utilizada para especificar las condiciones que
deben reunir los registros que se van a seleccionar.
GROUP BY Utilizada para separar los registros seleccionados
en grupos específicos.
HAVING Utilizada para expresar la condición que debe
satisfacer cada grupo.
ORDER BY Utilizada para ordenar los registros seleccionados
de acuerdo con un orden específico
Componentes de SQL
Operadores Lógicos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Operador Uso
AND Es el "y" lógico. Evalúa dos condiciones y devuelve
un valor de verdad sólo si ambas son ciertas.
OR Es el "o" lógico. Evalúa dos condiciones y devuelve
un valor de verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la
expresión.
Componentes de SQL
Operadores de comparación
1.2.3 De edición para crear esquemas y consultas de bases de datos
Operador Uso
< Menor que
> Mayor que
<= Menor ó Igual que
>= Mayor ó Igual que
= Igual que
<>, != Diferente
!< No menor que
!> No mayor que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparación de un modelo.
In Utilizado para especificar registros de una base de
datos.
Componentes de SQL
Funciones de agrupamiento
1.2.3 De edición para crear esquemas y consultas de bases de datos
Componentes de SQL
•Se usan dentro de una cláusula SELECT en grupos de registros
para devolver un único valor que se aplica a un conjunto de
registros.
Función Descripción
AVG Utilizada para calcular el promedio de los valores de un
campo determinado .
COUNT Utilizada para devolver el número de registros
de la selección.
SUM Utilizada para devolver la suma de todos los valores de
un campo determinado.
MAX Utilizada para devolver el valor más alto de un campo
especificado.
MIN Utilizada para devolver el valor más bajo de un campo
especificado.
Tipos de datos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cada columna, variable local, expresión y
parámetro dispone de un tipo de dato.
SQL Server suministra el siguiente conjunto
de tipos de datos:
Tipos de datos carácter
1.2.3 De edición para crear esquemas y consultas de bases de datos
Tipos de datos
Tipos de datos numéricos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Tipos de datos
Tipos de datos numéricos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Tipos de datos
Tipo de datos fecha/hora
1.2.3 De edición para crear esquemas y consultas de bases de datos
Tipos de datos
Otros tipos de datos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Tipos de datos
Estructura de las tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Apellidos Nombre
Empleados
25 50
Estructuras de las tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Estructuras de las tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Abrir el Administrador de SQL-
Server (SQL Server Management
Studio)
Crear Base de Datos Empresa
Crear tabla Empleados
¿Cómo crearías la base de datos?
CREATE DATABASE Empresa
Crear tabla Crea una nueva tabla llamada Empleados con
dos campos, uno llamado Nombre con longitud
25 y otro llamado Apellidos con longitud 50.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Apellidos Nombre
Empleados
25 50
CREATE TABLE dbo.Empleados
( Nombre VARCHAR (25),
Apellidos VARCHAR (50)
)
GO
1.2.3 De edición para crear esquemas y consultas de bases de datos
Crea una nueva tabla llamada Empleados2 con un campo
Nombre con longitud 10, otro con llamado Apellidos
longitud 50 y uno más llamado Fecha_Nacimiento de tipo
Fecha/Hora.
También crea una restricción que no permite valores
repetidos para los tres campos.
Crear tabla
CREATE TABLE dbo.Empleados2
(
Nombre VARCHAR (10),
Apellidos VARCHAR (50),
Fecha_Nacimiento DATETIME,
CONSTRAINT valor_unico
UNIQUE ([Nombre], [Apellidos], [Fecha_Nacimiento])
) GO
Crear tabla
Crea una tabla llamada Empleados3 con un campo de
longitud 20 llamado Nombre, otro llamado Apellidos de
longitud 25, otro campo llamado Fecha_Nacimiento de
tipo Fecha/Hora y por ultimo un ID de tipo entero el que
establece como llave primaria.
1.2.3 De edición para crear esquemas y consultas de bases de datos
CREATE TABLE dbo.Empleado3
( ID INT PRIMARY KEY,
Nombre VARCHAR(20),
Apellidos VARCHAR(25),
Fecha_Nacimiento DATETIME,
CONSTRAINT valor_unico2
UNIQUE ([Nombre], [Apellidos], [Fecha_Nacimiento]
)
Añadir registros a las tablas Para agrega uno o varios registros en una tabla se puede
realizar por medio de dos procedimientos:
1. la primera es Insertar un único registro,
2. la segunda es Insertar en una tabla los registros
contenidos en otra tabla.
INSERT INTO [nombre_BaseDeDatos.][ dueño.]
nombre_tabla (campo1, campo2, .., campoN)
VALUES (valor1, valor2, ..., valorN)
1. Insertar un único Registro
1.2.3 De edición para crear esquemas y consultas de bases de datos
Añadir registros a las tablas Inserte a la tabla Empleados a “Ramón Pérez Jiménez”.
INSERT INTO dbo.Empleados3 (ID, Nombre, Apellidos
,Fecha_Nacimiento)
VALUES (121, 'Ramón', 'Pérez Jiménez‘,
'1990-06-12 00:00:00')
GO
Inserte a la tabla Empleados3 a “Rosa Ramírez
García”, con fecha de nacimiento 12 de Julio de 1990.
INSERT INTO Empleados3 (ID, Nombre, Apellidos,
Fecha_Nacimiento)
VALUES (122, 'Rosa', 'Ramírez García', '1990-06-12
00:00:00' )
1.2.3 De edición para crear esquemas y consultas de bases de datos
Añadir registros a las tablas
Inserte a la tabla Empleados el trabajador “Alberto
Medina Ruiz”, con ID 295 y fecha de nacimiento 25
de Agosto de 1998 a 4:05 pm.
INSERT INTO dbo.Empleados (ID, Nombre,
Apellidos,
Fecha_Nacimiento)
VALUES (295, ‘Alberto’, ‘Medina Ruiz’,
‘1998-08-12 16:05:00’ )
GO
1.2.3 De edición para crear esquemas y consultas de bases de datos
ControlEscolar
1 Crear la Base de Datos
ControlEscolar
CREATE TABLE dbo.Carreras (
NoC INT IDENTITY (1, 1) PRIMARY KEY,
NombreC varchar (20),
CONSTRAINT valor_unico
UNIQUE ([NoC], [NombreC])
)
CREATE TABLE dbo.Alumnos (
NC INT PRIMARY KEY,
NombreA VARCHAR(50),
Sexo VARCHAR(1),
Domicilio VARCHAR(50),
Edad TINYINT,
NoC INT
FOREIGN KEY (NoC) REFERENCES Carreras)
Antes de crear la tabla
Alumnos debemos de
crear la tabla Carrera
1.2.3 De edición para crear esquemas y consultas de bases de datos
Añadir registros a las tablas Inserte los registros de la base de datos Carrera
INSERT INTO dbo.Carreras(NombreC)
VALUES('Ingenieria Civil')
INSERT INTO Carreras
VALUES('Abogado')
INSERT INTO dbo.Carreras(NombreC)
VALUES('Lic. en Admón.')
INSERT INTO
Carreras
VALUES('Contador Publico')
GO
1.2.3 De edición para crear esquemas y consultas de bases de datos
INSERT INTO Materias (NM, NombreM)
VALUES(‘M5A’,’Matemáticas I ‘),
(‘D38’,´Derecho Laboral´),
(‘C1C’,’Contabilidad’),
(‘E7H’,’Estadística’)
Select * from Alumnos
Select * from Alumnos
2 Inserte a la tabla Alumnos las
dos primeras tuplas
INSERT INTO dbo.Alumnos
VALUES(76, 'Jose Martinez', 'M', 'Fresno # 503',
22, 1)
INSERT INTO dbo.Alumnos
VALUES(95, 'Ramon Ramos', 'M', 'Valle # 301',
23, 1)
INSERT INTO dbo.Alumnos
VALUES( , '', '', '', ,) ,
( , '', '', '', ,), …
( , '', '', '', ,)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Añadir registros a las tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
2. la segunda es Insertar en una tabla los
registros contenidos en otra tabla.
INSERT INTO [nombre_BaseDeDatos.][ dueño.] nombre_tabla
(campo1, campo2, .., campoN)
SELECT Campo1, Campo2, ..., CampoN
FROM TablaOrigen
Si Tabla y TablaOrigen poseen la misma estructura podemos
simplificar la sintaxis a:
INSERT INTO [nombre_BaseDeDatos.][ dueño.] Alumnos2
SELECT * FROM Alumnos
Inserta registros en otra tabla que
se crea automáticamente
SELECT NoC, NombreC
INTO Carrera2
FROM Carreras
ORDER BY NombreC
Práctica 1 (Tarea 2)
Crear en MySQL la Base de Datos Control
Escolar, de acuerdo a como se especifica en el
modelo relacional. Además insertar la
información que se específica en las tablas.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
La sintaxis de una consulta de selección es la siguiente:
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica las columnas que va
a devolver la consulta.
Consultas a las Tablas
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Crea una nueva tabla e inserta
en ella las filas resultantes de
la consulta.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica las tablas de las
que se van a obtener filas. La
cláusula FROM es necesaria
excepto cuando la lista de
selección sólo contiene
constantes, variables y
expresiones aritméticas (no
nombres de columna).
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica una condición de
búsqueda para restringir las
filas que se van a devolver.
Consultas a las Tablas
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica los grupos en los
que se van a colocar las filas
de salida y, si se incluyen
funciones de agregado en la
cláusula SELECT selección,
calcula el valor de resumen de
cada grupo.
Consultas a las Tablas
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica una condición de
búsqueda de un grupo o
agregado. Normalmente,
HAVING se utiliza con la
cláusula GROUP BY. Cuando
no se utiliza GROUP BY,
HAVING se comporta como la
cláusula WHERE.
Consultas a las Tablas
SELECT selección
[ INTO nueva_tabla ]
FROM tabla_fuente
[ WHERE condición ]
[ GROUP BY grupo ]
[ HAVING condición_grupo ]
[ ORDER BY expresión
[ ASC | DESC ] ]
Especifica el orden del
conjunto de resultados.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT y sus Argumentos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Específica que pueden
aparecer filas duplicadas en el
conjunto de resultados. ALL es
el valor predeterminado.
Cláusula SELECT
Consultas a las Tablas
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Específica que sólo pueden
aparecer filas exclusivas en el
conjunto de resultados. Los
valores NULL se consideran
iguales a efectos de la palabra
clave DISTINCT.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula SELECT
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Especifica que sólo se van a utilizar
las primeras n filas del conjunto de
resultados de la consulta; n es un
valor entero entre 0 y 4294967295.
Si también se especifica PERCENT,
sólo se va a utilizar el primer n por
ciento de filas del conjunto de
resultados. Cuando se especifica
con PERCENT, n debe ser un
entero entre 0 y 100.
.
Cláusula SELECT
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT
Son las columnas que se van
a seleccionar para el conjunto
de resultados. La lista de
selección es una serie de
expresiones separadas por
comas.
.
Consultas a las Tablas
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT
1.2.3 De edición para crear esquemas y consultas de bases de datos
Especifica que se deben devolver todas las
columnas de todas las tablas y vistas de la
cláusula FROM. Las columnas se devuelven por
tabla o vista, tal como se especifique en la
cláusula FROM, en el orden en que se encuentran
en la tabla o vista.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT Limita el alcance de * a la tabla o vista
especificada.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT
Es el nombre de una columna que se va
a devolver.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT
Es un nombre de columna, constante,
función, o una combinación de nombres
de columnas, constantes y funciones
conectados mediante operadores, o una
subconsulta.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT [ ALL | DISTINCT ]
[ TOP n [PERCENT] ]
< Selección >
< Selección > ::=
{ *
| { nombre_tabla | nombre_vista | alias }.*
| { nombre_columna | expresión }
[ [ AS ] alias_columna ]
| alias_columna
Cláusula SELECT
Es un nombre alternativo para
reemplazar el nombre de la columna en
el conjunto de resultados de la consulta.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Especifica las tablas de las que se van a
obtener filas. La cláusula FROM es necesaria
excepto cuando la lista de selección sólo
contiene constantes, variables y expresiones
aritméticas (no nombres de columna).
Cláusula FROM
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula FROM (Sintaxis)
[ FROM { < tabla_fuente > } [ ,...n ] ]
< tabla_fuente > ::=
tabla_fuente [ [ AS ] alias ]
| nombre_vista [ [ AS ] alias ]
| < tabla_fuente > JOIN < tabla_fuente2> ON < búsqueda2 >
Especifica el nombre de una tabla y un
alias opcional.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula FROM (Sintaxis)
[ FROM { < tabla_fuente > } [ ,...n ] ]
< tabla_fuente > ::=
tabla_fuente [ [ AS ] alias ]
| nombre_vista [ [ AS ] alias ]
| < tabla_fuente > JOIN < tabla_fuente2> ON < búsqueda2 >
Especifica el nombre de una vista y un
alias opcional.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula FROM (Sintaxis)
[ FROM { < tabla_fuente > } [ ,...n ] ]
< tabla_fuente > ::=
tabla_fuente [ [ AS ] alias ]
| nombre_vista [ [ AS ] alias ]
| < tabla_fuente > JOIN < tabla_fuente2> ON < búsqueda2 >
Indica que las tablas o vistas
especificadas deben combinarse.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula FROM (Sintaxis)
[ FROM { < tabla_fuente > } [ ,...n ] ]
< tabla_fuente > ::=
tabla_fuente [ [ AS ] alias ]
| nombre_vista [ [ AS ] alias ]
| < tabla_fuente > JOIN < tabla_fuente2> ON < búsqueda2 >
Nombre de la tabla de unión.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula FROM (Sintaxis)
[ FROM { < tabla_fuente > } [ ,...n ] ]
< tabla_fuente > ::=
tabla_fuente [ [ AS ] alias ]
| nombre_vista [ [ AS ] alias ]
| < tabla_fuente > JOIN < tabla_fuente2> ON < búsqueda2 >
Especifica la condición en la que se
basa la combinación. La condición
puede especificar cualquier predicado,
aunque se suelen utilizar columnas y
operadores de comparación.
3. Liste Número de Control y
Nombres de los Alumnos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT NC, NombreA
FROM Alumnos
SELECT NC AS 'No. de control',
NombreA as 'Nombre del Alumno'
FROM Alumnos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Especifica una condición de búsqueda para
restringir las filas que se van a devolver.
Cláusula WHERE
Consultas a las Tablas
[ WHERE < condición> | < unos_otros > ]
< izq_der > ::=
nombre_columna { * = | = * } nombre_columna
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula WHERE (Sintaxis) Limita las filas devueltas en el conjunto de
resultados mediante el uso de predicados.
No hay límite en el número de predicados
que se pueden incluir en una condición de
búsqueda.
Consultas a las Tablas
[ WHERE < condición> | < unos_otros > ]
< izq_der > ::=
nombre_columna { * = | = * } nombre_columna
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula WHERE (Sintaxis) Se utiliza el operador *= para especificar
una combinación externa izquierda y el
operador =* para especificar una
combinación externa derecha.
Ejemplo: especifica una combinación externa izquierda
en que las filas de Tab1 que no cumplen la condición
especificada se incluyen en el conjunto de resultados:
SELECT Tab1.name, Tab2.id
FROM Tab1, Tab2
WHERE Tab1.id *=Tab2.id
4. Liste los Nombres de los
Alumnos que tenga una edad entre
22 a 24 años.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT NombreA , Edad
FROM Alumnos
WHERE Edad >= 22 AND Edad <= 24
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Para indicar que deseamos recuperar los
registros según el intervalo de valores de un
campo emplearemos el operador BETWEEN.
Rango de registros
Consultas a las Tablas
Campo [ NOT ] BETWEEN expresión_inicio AND
expresión_fin
Campo Se trata de la expresión que se va a probar en el
intervalo definido mediante expresión_inicio y
expresión_fin.
El argumento Campo debe ser del mismo tipo de datos
que los argumentos expresión_inicio y expresión_fin.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Rango de registros BETWEEN (Sintaxis)
NOT Específica que se niega el resultado del
predicado. expresión_inicio Valor inicial.
expresión_fin Valor final.
Consultas a las Tablas
Ejemplos:
SELECT * FROM Alumnos WHERE Edad
Between 22 And 24
SELECT * FROM Alumnos WHERE Edad NOT
Between 22 And 24
1.2.3 De edición para crear esquemas y consultas de bases de datos
Rango de registros BETWEEN (Sintaxis)
Listaremos nombres de los Alumnos que
tenga una edad entre 22 a 24 años utilizando
el BETWEEN.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
SELECT NombreA, Edad
FROM Alumnos WHERE
Edad BETWEEN 22 AND 24
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Determina si una cadena de caracteres dada
coincide o no con un determinado modelo.
Operador LIKE
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Operador LIKE (Sintaxis)
Expresión_comparar [ NOT ] LIKE patrón [
ESCAPE carácter_escape ]
Expresión_comparar
Es cualquier expresión SQL Server válida del tipo de
datos cadena de caracteres.
patrón Es el modelo que se va a buscar y puede incluir
cualquiera de los siguientes caracteres comodín:
Carácter Descripción
% Cualquier cadena de cero o más caracteres.
_ Cualquier carácter individual.
[ ] Cualquier carácter individual que se encuentre en el
intervalo o el conjunto especificado.
[ ^ ] Cualquier carácter individual que no se encuentre en el
intervalo
Consultas a las Tablas
carácter_escape Carácter que le precede a un
carácter especial para quitarle esa propiedad.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Operador LIKE (Sintaxis)
Expresión_comparar [ NOT ] LIKE patrón [
ESCAPE carácter_escape ]
Liste de la tabla Empleados3 los registros que
el primer apellido sea Ramírez.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Liste de la tabla Empleados3 los registros que
el segundo apellido comience con la letra J.
SELECT * FROM Alumnos WHERE
NombreA LIKE ‘% Jimenez%’
SELECT * FROM Empleados
WHERE Apellidos LIKE '% J%'
LIKE
Arc: Consulta_1_2_Empleados
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas LIKE
Qué pasaría si existieran apellidos con j
minúscula, dado a que no cumplen el patrón no
serían listado, por tal motivo para listar los dos
casos se realizaría de la siguiente forma:
Arc: Consulta_3_Empleados
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘% [Jj]%’
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘% [^Jj]%’
Liste de la tabla Empleados los registros que el segundo
apellido no comience con la letra J.
Fernández o Hernández ya sea con mayúscula o
minúscula.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas LIKE
Liste los empleados que contenga un guión de piso en
el campo apellido
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘_ernández %’
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘%_%’
Arc: Consulta_4_Empleados
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas LIKE
Este ejemplo listaría todos los registros de la tabla
Empleados, porque todos cumplen con el patrón,
recordemos que el carácter ‘_’ tiene un significado
especial en SQL, para quitárselo debemos utilizar una
carácter de escape, de la siguiente forma:
Arc: Consulta_4_Empleados
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘%!_%’ ESCAPE ´!´
SELECT * FROM Empleados
WHERE Apellidos LIKE ‘%!%’ ESCAPE ´!´
Busca Apellidos que contengan el carácter %.
Pero no existe, por lo tanto no lista ningúno.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas LIKE
Liste los alumnos cuyo apellido comience
con la letra R.
Arc:Seleccion3
SELECT * FROM Alumnos
WHERE NombreA LIKE '% [Rr]%'
SELECT * FROM Alumnos
WHERE NombreA LIKE '[Rr]%'
Ejercicios Liste el nombre de todos aquellos
alumnos que están en la carrera de
Ingeniería Civil.
Liste el nombre de todos aquellos
alumnos que son mujeres.
Liste el nombre de todos aquellos
alumnos cuyo apellino inicie con R o r.
Subconsultas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Es una consulta SELECT que devuelve un valor único
y está anidada en una instrucción SELECT, INSERT,
UPDATE o DELETE, o dentro de otra subconsulta.
Una subconsulta se puede utilizar en cualquier parte
en la que se permita una expresión.
La consulta SELECT de una subconsulta se incluye
siempre entre paréntesis.
Las instrucciones que incluyen una subconsulta
normalmente tienen uno de estos formatos:
Subconsultas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
• WHERE expression [NOT] IN (subconsulta)
• WHERE expression { = | <> | != | > | >= | !> | < | <= | !< }
[SOME | ANY | ALL] (subconsulta)
• WHERE [NOT] EXISTS (subconsulta)
Ejercicio
SELECT NC, NombreA FROM Alumnos
WHERE NC IN (SELECT NC FROM
Grupos)
Arc: Consulta_7_Alumnos_y_Grupos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Liste los nombres de los alumnos que están
inscritos(en al menos un grupo).
5. Liste los nombres de los Catedráticos que
no imparten clases
SELECT NombreC FROM Catedraticos WHERE
NCC NOT IN (SELECT NCC FROM Grupos)
Arc: Consulta_8_Catedraticos_y_Grupos
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Utilizar combinaciones
cruzadas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Una combinación cruzada que no tenga una cláusula
WHERE produce el producto cartesiano de las tablas
involucradas en la combinación.
El tamaño del conjunto de resultados es de
número de filas de la primera tabla (N) x por el número
de filas de la segunda tabla (M) .
N x M
Utilizar combinaciones
cruzadas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
SELECT * FROM Alumnos, Carrera
Arc: Consulta_9_Producto_Alumnos_Carrera
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
6. Liste el Número de Control, Nombre del Alumno y
Nombre de Carrera de todos los Alumnos.
SELECT NC, NombreA,
NombreC
FROM Alumnos A,
Carreras C
WHERE A.NoC = C.NoC
SELECT NC, NombreA,
NombreC
FROM Alumnos A
INNER JOIN Carreras C ON
A.NoC = C.NoC
Arc: Consulta_9_Producto_Alumnos_Carrera_2
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusula GROUP BY
Sintaxis
[ GROUP BY grupo [ ,...n ] ]
Grupo Es la expresión en la que se realiza el
agrupamiento; grupo también se conoce como
columna de agrupamiento y puede ser una
columna o una expresión diferente a una de
agregado, que hace referencia a una columna.
No se puede utilizar un alias de columna en la
lista de selección para especificar una columna
de agrupamiento.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Agrupar alumnos
por número de
carrera
Arc: Consulta_5_Emp1eados_1
SELECT NoC
FROM Alumnos
GROUP BY NoC
SELECT NoC,NombreA
FROM Alumnos GROUP BY
NoC,NombreA
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Funciones de agregado
Las funciones de agregado realizan un cálculo
sobre un conjunto de valores y devuelven un
solo valor.
Las funciones de agregado se suelen utilizar con la
cláusula GROUP BY de la instrucción SELECT.
COUNT Devuelve el número de elementos de un grupo.
AVG Devuelve la media de los valores de un grupo. Los valores nulos se pasan
por alto.
MAX Devuelve el valor máximo de la expresión.
MIN Devuelve el valor mínimo de la expresión.
SUM Devuelve la suma de todos los valores, sólo puede utilizarse con columnas
numéricas. Los valores nulos se pasan por alto.
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Funciones de agregado
Ventas Factura NoV Fecha Monto
1202 25 10/01/2007 2500
1203 33 10/01/2007 3000
1204 43 12/01/2007 5000
1205 25 10/02/2007 1000
1206 25 12/02/2007 1200
1207 33 15/02/2007 2000
1208 25 07/03/2007 500
1209 45 10/03/2007 4000
1210 25 15/04/2007 1400
De la tabla Ventas, liste por
cada vendedor, cuantas
ventas realizó, el monto
total, el monto de la venta
máxima y el monto de la
venta mínima.
Arc: Consulta_5_Empleados
SELECT NoV,
COUNT(*) AS [No. de ventas],
SUM(Monto) AS [Monto Total],
MAX(Monto) AS [Monto Máximo],
MIN(Monto) AS [Monto Mínimo]
FROM Ventas GROUP BY NoV
7. De cada grupo liste Número de grupo, Nombre
del Catedrático, Nombre de la Materia, Número de
Alumnos, Calificación Máxima, Calificación Mínima
y Promedio.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Arc: Consulta_11_PromedioAlumnos
SELECT NG, G.NCC, C.NombreC, G.NM, M.NombreM,
COUNT(*) AS [No de Alumnos],
MAX(Calificación) AS [CAL.MAX],
MIN(Calificación) AS [CAL. MIN],
AVG(Calificación) AS [PROMEDIO]
FROM Grupos G, Catedraticos C, Materias M
WHERE G.NCC = C.NCC AND G.NM = M.NM
GROUP BY NG, G.NCC, C.Nombrec, G.NM, M.NombreM
FIN
7. De cada grupo liste Número de grupo, Nombre
del Catedrático, Nombre de la Materia, Número de
Alumnos, Calificación Máxima, Calificación Mínima
y Promedio.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Otra solución SELECT NG, G.NCC, C.Nombrec, G.NM, M.NombreM,
COUNT(*) AS [No de Alumnos],
MAX(Calificacion) AS [CAL.MAX],
MIN(Calificacion) AS [CAL. MIN],
AVG(Calificacion) AS [PROMEDIO]
FROM Grupos G INNER JOIN Catedraticos C ON G.NCC = C.NCC
INNER JOIN Materias M ON G.NM = M.NM
GROUP BY NG, G.NCC, C.Nombrec, G.NM, M.NombreM
Arc: Consulta_11_PromedioAlumnos_2
7. De cada grupo liste Número de grupo, Nombre
del Catedrático, Nombre de la Materia, Número de
Alumnos, Calificación Máxima, Calificación Mínima
y Promedio.
SELECT NG, G.NCC, C.Nombrec, G.NM, M.NombreM,
COUNT(*) AS [No de Alumnos],
MAX(Calificación) AS [CAL.MAX],
MIN(Calificación) AS [CAL. MIN],
AVG(Calificación) AS [PROMEDIO]
FROM Grupos G, Catedraticos C, Materias M
WHERE G.NCC = C.NCC AND G.NM = M.NM
GROUP BY NG, G.NCC, C.Nombrec, G.NM, M.NombreM
SELECT NG, G.NCC, C.Nombrec, G.NM, M.NombreM,
COUNT(*) AS [No de Alumnos],
MAX(Calificacion) AS [CAL.MAX],
MIN(Calificacion) AS [CAL. MIN],
AVG(Calificacion) AS [PROMEDIO]
FROM Grupos G INNER JOIN Catedraticos C ON G.NCC = C.NCC
INNER JOIN Materias M ON G.NM = M.NM
GROUP BY NG, G.NCC, C.Nombrec, G.NM, M.NombreM
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Comparación
8. De cada grupo liste Número de grupo, Número
del Catedrático, Número de Materia y Alumnos
acreditados(igual o superior a 70).
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Arc: Consulta_12
SELECT NG, NCC, NM,
COUNT(*) AS [No de Alumnos Acreditados]
FROM Grupos
WHERE Calificacion >= 70
GROUP BY NG, NCC, NM
Funciones de agregado solo con
SELECT
SELECT COUNT(*) AS [Número de Alumnos
]FROM Alumnos
SELECT MIN(NC) FROM Alumnos
SELECT MAX(NC) FROM Alumnos
SELECT AVG(NC) FROM Alumnos
SELECT SUM(NC) FROM Alumnos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Especifica una condición de búsqueda de un
grupo o agregado.
Normalmente, HAVING se utiliza con la cláusula
GROUP BY.
Cuando no se utiliza GROUP BY, HAVING se
comporta como la cláusula WHERE.
Cláusulas HAVING
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cláusulas HAVING (Sintaxis)
[ HAVING < condición_grupo > ]
Especifica la condición
de búsqueda del
grupo o del agregado
que se debe cumplir.
NOTA: No se puede utilizar los tipos de datos text,
image y ntext en una cláusula HAVING.
De la tabla Ventas, liste por cada vendedor, cuantas
ventas realizó, el monto total, el monto de la venta
máxima y el monto de la venta mínima, pero solo de
aquellos montos totales entre 6000 a 10000.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Arc: Consulta_6_Empleados
SELECT NoV,
COUNT(*) AS [No. de ventas],
SUM(Monto) AS [Monto Total],
MAX(Monto) AS [Monto Máximo],
MIN(Monto) AS [Monto Mínimo]
FROM Ventas GROUP BY NoV HAVING SUM(Monto)
BETWEEN 6000 AND 8000
Ventas Factura NoV Fecha Monto
1202 25 10/01/2007 2500
1203 33 10/01/2007 3000
1204 43 12/01/2007 5000
1205 25 10/02/2007 1000
1206 25 12/02/2007 1200
1207 33 15/02/2007 2000
1208 25 07/03/2007 500
1209 45 10/03/2007 4000
1210 25 15/04/2007 1400
9. De cada grupo liste Número de grupo, Número
del Catedrático, Número de Materia y Promedio,
pero solo de aquellos grupos donde el promedio
sea mayor a 80.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
Arc: Consulta_13
SELECT NG, NCC, NM,
AVG(Calificacion) AS [Promedio del Grupo]
FROM Grupos GROUP BY NG, NCC, NM
HAVING AVG(Calificacion) > 80
9. De cada grupo liste Número de grupo, Número
del Catedrático, Número de Materia y Promedio,
pero solo de aquellos grupos donde el promedio
sea mayor a 80.
SELECT NG, NCC, G.NM, NombreM
AVG(Calificacion) AS [Promedio del Grupo]
FROM Grupos G, Materias M
WHERE G.NM=M.NM
GROUP BY NG, NCC, G.NM, NombreM
HAVING AVG(Calificacion) > 80
Consultas a las Tablas
Especifica el orden del conjunto de resultados.
La cláusula ORDER BY no es válida en vistas,
funciones en línea, tablas derivadas ni
subconsultas, salvo que se especifique también
TOP.
Cláusula ORDER BY
1.2.3 De edición para crear esquemas y consultas de bases de datos
Consultas a las Tablas
[ ORDER BY { expresión [ ASC | DESC ] } [ ,...n] ]
Cláusula ORDER BY (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Especifica la columna según la que se ordenará. Se puede
especificar una columna de orden como un nombre o alias de
columna (que puede estar calificado con el nombre de una tabla o
vista), una expresión o un entero no negativo que representa la
posición del nombre, alias o expresión en la lista de selección.
Consultas a las Tablas
[ ORDER BY { expresión [ ASC | DESC ] } [ ,...n] ]
Cláusula ORDER BY (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Se puede especificar varias columnas de orden. La
secuencia de columnas de orden en la cláusula
ORDER BY define la estructura del conjunto
ordenado de resultados.
Nota: Las columnas de tipo ntext, text o image no
se pueden utilizar en una cláusula ORDER BY.
Consultas a las Tablas
[ ORDER BY { expresión [ ASC | DESC ] } [ ,...n] ]
Cláusula ORDER BY (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Indica que los valores de la columna especificada
se deben ordenar de manera ascendente, desde el
valor más bajo al más alto.
Consultas a las Tablas
[ ORDER BY { expresión [ ASC | DESC ] } [ ,...n] ]
Cláusula ORDER BY (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Indica que los valores de la columna
especificada se deben ordenar de manera
descendente, desde el valor más alto al valor
más bajo.
Nota: Los valores NULL se tratan como los valores
de menor denominación.
Consultas a las Tablas Cláusula ORDER BY (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
SELECT Nov
FROM Ventas
GROUP BY Nov ORDER BY Nov DESC
SELECT Nov
FROM Ventas
GROUP BY Nov ORDER BY Nov ASC
Arc: Consulta_Order_By
Quitar filas de las tablas
1.2.3 De edición para crear esquemas y consultas de bases de datos
DELETE (Sintaxis)
DELETE
FROM { < nombre_tabla > } [ ,...n ]
[ WHERE { < condición_búsqueda > } ]
Nombre de la tabla o vista a
la que se le borraran las
filas.
Condición para borrar
los registros.
Borrar de la tabla ventas las filas que tienen un monto
menor a 1000 pesos.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Borrar registros
Arc: DELETE 1
DELETE FROM Ventas WHERE Monto < 1000
10. Borre los alumnos que no están inscritos en
ningún grupo.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Borrar registros
Arc: DELETE_Alumnos_1
DELETE FROM Alumnos WHERE NC
NOT IN (SELECT NC FROM Grupos)
Ejercicio
Borrar aquellas materias que no están
siendo impartidas en ningún grupo.
Cambia datos de una tabla UPDATE (Sintaxis)
UPDATE { < nombre_tabla > } SET { nombre_columna = {
expresión | DEFAULT | NULL} [ ,...n ] } [ FROM { <
nombre_tabla > } [ ,...n ] ] [ WHERE <
condición_búsqueda > ]
Nombre de la tabla o vista a
la que se actualizar.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cambia datos de una tabla UPDATE (Sintaxis)
UPDATE { < nombre_tabla > } SET { nombre_columna = {
expresión | DEFAULT | NULL} [ ,...n ] } [ FROM { <
nombre_tabla > } [ ,...n ] ] [ WHERE <
condición_búsqueda > ]
Especifica la lista de
nombres de columnas o
variables que se van a
actualizar.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cambia datos de una tabla UPDATE (Sintaxis)
UPDATE { < nombre_tabla > } SET { nombre_columna = {
expresión | DEFAULT | NULL} [ ,...n ] } [ FROM { <
nombre_tabla > } [ ,...n ] ] [ WHERE <
condición_búsqueda > ]
Nombre de la columna
a actualizar.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Cambia datos de una tabla UPDATE (Sintaxis)
UPDATE { < nombre_tabla > } SET { nombre_columna = {
expresión | DEFAULT | NULL} [ ,...n ] } [ FROM { <
nombre_tabla > } [ ,...n ] ] [ WHERE <
condición_búsqueda > ]
Condición para borrar los
registros.
1.2.3 De edición para crear esquemas y consultas de bases de datos
Actualice el domicilio de la alumna Leticia Flores
(NC=33) por el domicilio Robles # 502.
1.2.3 De edición para crear esquemas y consultas de bases de datos Actualizar
Arc: Actualizar_Alumnos_1
UPDATE Alumnos SET Domicilio = 'Roble #
502' WHERE NC = 33
Elimina tablas DROP TABLE
1.2.3 De edición para crear esquemas y consultas de bases de datos
Elimina una definición de tabla y todos los datos,
índices, desencadenadores, restricciones y
especificaciones de permisos de la tabla.
Elimina tablas DROP TABLE (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
DROP TABLE nombre_tabla
Es el nombre de la tabla
que se va a eliminar.
Observaciones
No se puede utilizar DROP TABLE para quitar una tabla a la que
se haga referencia con una restricción FOREIGN KEY. Primero se
debe quitar la restricción FOREIGN KEY o la tabla de referencia.
El propietario de una tabla puede quitar la tabla de cualquier
base de datos. Cuando se quita la tabla, las reglas o valores
predeterminados de la misma pierden sus enlaces y se quitan
automáticamente las restricciones o desencadenadores asociados
con ella. Si vuelve a crear una tabla, debe volver a enlazar las
reglas y valores predeterminados apropiados, volver a crear los
desencadenadores y agregar todas las restricciones necesarias.
No puede utilizar la instrucción DROP TABLE sobre las tablas
del sistema.
Elimina tablas DROP TABLE (Sintaxis)
1.2.3 De edición para crear esquemas y consultas de bases de datos
Elimine la tabla Ventas.
Elimina Tablas 1.2.3 De edición para crear esquemas y consultas de bases de datos
DROP TABLE Ventas
DROP DATABASE ControlEscolar
Arc: DropTable_Ventas_1
Modificar tablas ALTER TABLE
1.2.3 De edición para crear esquemas y consultas de bases de datos
Modifica una definición de tabla al alterar, agregar o
quitar columnas y restricciones, o al deshabilitar o
habilitar restricciones y desencadenadores.
Agregue una el campo edad a la tabla Catedráticos
Modificar tablas 1.2.3 De edición para crear esquemas y consultas de bases de datos
ALTER TABLE Catedraticos ADD Edad INT
Arc: AlterTable_Catedraticos_1
UPDATE Catedraticos SET Edad = 20
ALTER TABLE Catedraticos DROP COLUMN Edad
TAREA 3
1. Liste el nombre de los alumnos de Ingeniería Civil que están inscritos en al menos un grupo.
2. Liste el nombre, número de cuenta, nombre de las materias que cursan cada uno de los alumnos, ordenados por orden alfabético.
3. Liste el número de alumnos que cursan la misma carrera y de cada carrera quien tiene mayor edad.
4. Liste código y nombre de aquellas materias que no están siendo cursadas por ningún estudiante.
5. Liste los nombres de los alumnos y nombres de las materias que podrían cursar los alumnos de la carrera de Ingeniería Civil.
Tarea 4
¿Qué está pidiendo el código
siguiente?
Select G.NM, M.NombreM, A.NombreA,
count(*) as 'Total de alumnos por materia'
From Grupos G, Materias M, Alumnos A
Where G.NM=M.NM AND G.NC=A.NC
Group by G.NM, M.NombreM, A.NombreA
Use ControlEscolar
Select G.NM, M.NombreM, A.NombreA
From Grupos G, Materias M, Alumnos A
Where G.NM=M.NM AND G.NC=A.NC
AND G.Cal>70
Group by G.NM,
M.NombreM,G.NM,A.NombreA
Use ControlEscolar
Select G.NM, M.NombreM,
Count(*) as 'Número de alumnos
aprobados'
from Grupos G, Materias M
Where G.Cal>70
Group by G.NM, M.NombreM
Select distinct G.NC, NombreA
From Grupos G, Alumnos A
Where G.NC=A.NC
Ahora con MySQL
En línea de comandos
Crear Base de Datos Control
Escolar y todas las tablas y
agregar registros a cada tabla
CREATE TABLE Carreras
( NoC int primary key,
NombreC Varchar(50)
);
CREATE TABLE Alumnos(
NC int primary key,
NombreA Varchar(50),
Sexo char,
Domicilio varchar(50),
Edad int,
NoC int,
Foreign key(NoC) REFERENCES
Carreras(NoC)
)
Fin de la Unidad 1
I.2.4. De control, monitoreo
y estadísticas de acceso a
bases de datos.
Mostrar estadísticas del cliente
Se pueden mostrar las estadísticas eligiendo
Mostrar estadísticas del cliente del menú Consulta,
o seleccionando esta opción del menú contextual
que se obtiene presionando el botón derecho dentro
del ventana de edición SQL.
Una vez seleccionado deberá ejecutar la consulta
SQL para que aparezca como una pestaña en la
ventana de resultados.
I.2.4. De control, monitoreo y estadísticas de acceso a bases de datos.
I.2.5. Utilerías
diversas.
Al igual que las estadísticas del cliente, se puede
Mostrar el plan de de ejecución seleccionando esta
opción del menú Consulta o del menú contextual. Una
vez seleccionado deberá ejecutar la consulta SQL
para que aparezca como una pestaña en la ventan de
resultados.
Diagrama
Uso de la ayuda