Taller de base de datos ags dic_2014 control escolar

Post on 13-Jun-2015

761 views 2 download

description

CREACION DE TABLAS Y COMO HACER CONSULTAS EN SQL SERVER

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