7/21/2019 Microsoft SQL Server 2005 Express Edicin
1/122
7/21/2019 Microsoft SQL Server 2005 Express Edicin
2/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.2
Microsoft
SQL Server 2005ExpressEdicin
7/21/2019 Microsoft SQL Server 2005 Express Edicin
3/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.3
PresentacionMicrosoft SQL Server 2005 Express Edicin (SQL Server Express) es unaplataforma de base de datos que se basa en Microsoft SQL Server 2005. Estambin la sustitucin de Microsoft Desktop Engine (MSDE). Gracias a suintegracin con Microsoft Visual Studio 2005, SQL Server Express facilita eldesarrollo de aplicaciones controladas por datos con gran variedad de funciones,que mejoran la seguridad del almacenamiento y se implementan con rapidez.
SQL Server Express se descarga gratuitamente y se puede redistribuir previoacuerdo entre las partes. Cada edicin puede servir como base de datos cliente ycomo base de datos bsica de servidor. Ambas ediciones de SQL Server Express
constituyen una opcin idnea para fabricantes independientes de software (ISV),usuarios de servidor, programadores no profesionales, programadores Web,alojamientos de sitios Web y aficionados a crear aplicaciones cliente. Si necesitacaractersticas de base de datos ms avanzadas, puede actualizar SQL ServerExpress a versiones ms sofisticadas de SQL Server
Microsoft SQL Server 2005 Express Edicin (SQL Server Express) se basa enMicrosoft SQL Server 2005 y admite la mayora de las caractersticas del DatabaseEngine (Motor de base de datos) de ese producto y de las versiones anteriores deMicrosoft SQL Server.
Si crea y disea una base de datos en SQL Server Express, puede migrarla a SQL
Server 2005. Sin embargo, no podr utilizar la base de datos de SQL ServerExpress con versiones anteriores de SQL Server, como SQL Server 2000.
MCTS. Henry Chavez Viera
Docente de sistemas UNI
7/21/2019 Microsoft SQL Server 2005 Express Edicin
4/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.4
Las 10 Caractersticas ms importantes sobre SQLServer 2005 Express Edition
Soporte integrado para el common language runtime (CLR). Los procesos yfunciones almacenados pueden ser escritos utilizando tu lenguaje deprogramacin favorito.
Soporte XML nativo.
Soporte de XCopy para mover Bases de Datos de un sitio a otro.
Instalacin robusta y fiable utilizando tanto el interfaz grfico de usuario(graphical user interface - GUI) como el modo silencioso.
Servicio y parcheado automatizado.
Profunda integracin con Visual Studio para proporcionar acceso a ricoscontroles de datos como DataGridView, DataNavigator, y DataConnector.
Soporte para Bases de Datos de hasta 4GB.
Soporte para sistemas desconectados con SQL Server Service Broker andReplication.
SQL Server Express Manager, una nueva y sencilla de usar herramientade gestin de bases de datos y anlisis de queries.
Implantacin ms sencilla mediante Visual Studio ClickOnce.
En la siguiente lista se destacan los componentes principales de SQL Server 2005que no son compatibles con SQL Server Express:
Reporting Services Notification Services Integration Services Analysis Services Bsqueda de texto Servicios OLAP y minera de datos
Requisitos de instalacionEn la tabla siguiente se muestran los requisitos previos de software y los requisitosmnimos de hardware y software para ejecutar Microsoft SQL Server 2005 ExpressEdition (SQL Server Express). Para determinar si su equipo cumple los requisitosdel sistema, en el men Inicio, haga clic con el botn secundario en Mi PC y, acontinuacin, haga clic en Propiedades. En la ficha General se muestra el tipo deCPU y la velocidad, as como la cantidad de memoria instalada (RAM).
Requisitos previosde software
Microsoft .NET Framework 2.0
SP1 de Microsoft Internet Explorer 6.0 o posterior
7/21/2019 Microsoft SQL Server 2005 Express Edicin
5/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.5
(requisito previo para .NET Framework)
RAMMnimo: 192 MB
Recomendado: 512 MB o ms
Espacio en el discoduro
600 MB de espacio libre
Procesador
Compatible con Pentium III o superior
Mnimo: 500 MHz
Recomendado: 1 GHz o ms
Sistema operativo
Windows Server 2003 SP1
Windows Server 2003 Enterprise Edition SP1
Windows Server 2003 Datacenter Edition SP1
Windows Small Business Server 2003 StandardEdition SP1
Windows Small Business Server 2003 PremiumEdition SP1
Windows XP Professional SP2
Windows XP Home Edition SP2
Windows XP Tablet Edition SP2
Windows XP Media Edition SP2
Windows 2000 Professional Edition SP4
Windows 2000 Server Edition SP4
Windows 2000 Advanced Edition SP4
Windows 2000 Datacenter Server Edition SP4
7/21/2019 Microsoft SQL Server 2005 Express Edicin
6/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.6
S
SESION 1
Qu es el SQL Server?
Herramientas del sistema del SQL Server 2005 EE.
Roles y responsabilidades del implementado de base de datos.
Bases de datos. Componentes lgicos: registro de datos y
registro de transacciones. Componentes fsicos: archivos y
grupos de archivos de bases de datos.
Catlogos del sistema.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
7/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.7
Herramientas del sistema del SQL Server 2005EE
Configuracin de SQL Server 2005.Una vez instalado la versin Express de SQL Server 2005 veamos que ha quedadoinstalado en nuestro pc, para ello acudimos al men de inicio, todos losprogramas y localizamos el paquete aadido por nuestra instalacin:
Vemos que dentro del paquete Microsoft SQL Server 2005, accedemos a un mencon unas herramientas de configuracin, estas herramientas son:
De estas herramientas, para nuestros intereses nos basta con conocer la primerade todas (SQL Server Configuration Manager). Desde ella podremos configurar elacceso y el modo de arranque de nuestro servidor de datos.
Arrancamos la aplicacin y nos encontramos la siguiente pantalla:
7/21/2019 Microsoft SQL Server 2005 Express Edicin
8/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.8
De todas las posibles herramientas de configuracin a las que podemosoptar nosotros tenemos que destacar la primera de todas, SQL Server 2005Services, desde la cual podremos configurar dos de los aspectos ms importantesde nuestro servidor.
Por lo tanto hacemos doble click en el icono correspondiente y accedemos a los
servidores de bases de datos instalados en nuestro pc. Teniendo que configurar elprimero de todos:
Haciendo click con el botn derecho accedemos al men desde el cual vemos quetenemos habilitadas una serie de opciones.
El primer bloque de opciones hace referencia al estado de nuestro servidor, laopcin propiedades para configuracin y la ltima una pequea ayuda que nosofrecen en la instalacin. De nuevo, podemos comparar el servicio de base dedatos de SQL Server 2005, con el servicio de pginas Web de IIS, como yaconoces, desde la configuracin de IIS tenemos la opcin de configurar una seriede propiedades, y establecer el estado del servidor de pginas web. De igualmanera desde SQL Server Configuration Manager, podemos realizar estas mismastareas sobre los servicios de base de datos.
Opcin: Funcin:
start
Para activar nuestro servidor demodo manual. Si el servidor seencuentra en funcionamiento,
lgicamente esta funcin
aparecer deshabilitada, lo mismosuceder con el resto de opciones.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
9/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.9
stop Detiene el servidor.
pause Detiene el servidormomentneamente.
resumeUna vez detenido el servidormediante "pause", lo vuelve a
poner en marcha.
restart Detiene el servidor, einmediatamente vuelve a activarlo.
propiedadesAccedemos a una ventana para
llevar a cabo variasconfiguraciones.
ayudaPequea ayuda sobre este
servicio.
Veamos ahora como configurar ciertos aspectos del servidor desde la ventana deconfiguracin que aparece pulsando sobre propiedades:
La ventana aparece con la pestaa Iniciar sesion, activada, desde esta ventanaconfiguramos los permisos de acceso al servidor. Es muy importante configurar
debidamente estos accesos.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
10/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.10
Primero podemos indicar el modo de la cuenta, o bien indicar que la cuentaser la activada en nuestro servidor. En nuestro caso lo configuraremos para queel administrador de nuestro pc sea el usuario predeterminado para tener permisosde administracin.
Cuando instalamos nuestros servicios en el servidor de una empresa debemos
operar de diferente mtodo, creando un usuario especfico para la administracinde la base de datos, es bastante lgico crear un usuario para esta tarea, ya quees posible que modifiquemos las caractersticas de usuarios para otras tareas ypara que estos cambios no afecten a SQL Server es mejor que tenga un nicousuario fijo para esta tarea.
Y por ltimo tenemos a nuestra disposicin una serie de botones para actuarsobre el estado del servidor.
Sigamos con la configuracin pinchando en la pestaa Service.
Destacamos la propiedad Modo de inicio, desde ella podemos habilitar 3 modosdiferentes de activar nuestro servidor:
Opcin: Funcin:
Automatico
Con esta opcin, el servidor arrancarconjuntamente con el sistema, es decir, cuandonuestro sistema operativo arranque, el servidor de
base de datos se activar automticamente, estaes la opcin ms habitual y recomendad, ya que
7/21/2019 Microsoft SQL Server 2005 Express Edicin
11/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.11
nuestro servidor estar permanentementeofreciendo sus servcios.
Deshabilitado Deshabilitamos el arranque del servidor.
ManualEl modo de gestionar el estado del servidor sermanual por parte del desarrollador mediante lasopciones que vimos anteriormente.
No entraremos a explicar las opciones avanzadas ya que no entrara dentro de losobjetivos de este curso.
En el siguiente video se explica detenidamente como dejar configurado nuestroservidor, presta atencin a todos los aspectos explicados.
Herramienta de administracin y gestin de SQL Server 2005
Con la instalacin y la configuracin que acabamos de ver ya podramos comenzara trabajar con las bases de datos. Para crear y gestionar nuestras tablas,procedimientos almacenados, etc nos veramos obligados a hacerlo desde VisualStudio.
Pero, como ya sabes, el objetivo final del curso es el desarrollo de una aplicacinprofesional, para la cual nuestra base de datos estar integrada de una grancantidad de tablas y procedimientos almacenados. Por este motivo, nosayudaremos de una segunda herramienta que nos permita administrar nuestrabase de datos, realizar comprobaciones, y otro tipo de tareas.
Esta segunda herramienta es Sql Server Management Studio Express , la cualno se instala con la herramientas de configuracin y debemos descargarla porseparado desde la pgina de Microsoft. Por si nunca la has descargado o instaladote dejo el enlace para descargarla, basta con descargar y seguir el asistente deinstalacin, es el mismo enlace que has encontrado en el anterior capitulo.
Una vez instalada esta herramienta, vemos que ha sido aadida a nuestropaquete de software de SQL Server 2005:
Con SQL Server Management Studio hemos instalado un conjunto deherramientas para realizar todas las tareas necesarias.
Nota: Si has desarrollado bases de datos con SQL Server 2000, debes saber que con SQLServer Management Studio se instalan todas las herramientas en una sla, y no en paquetesseparados.
Vamos a ir viendo paso a paso, como trabajar con esta herramienta. De modo queal finalizar este captulo, tengamos creada una base de datos y seas capaz ms
adelante de crear tus propias bases de datos, con sus tablas bien estructuradas,
7/21/2019 Microsoft SQL Server 2005 Express Edicin
12/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.12
etc... Por lo tanto combinaremos explicaciones sobre SQL ServerMangement Studio con otros aspectos importantes del diseo de base de datos.
Comencemos con la herramienta, desde el men de inicio arrancamos laaplicacin y nos encontramos con una ventana de conexin.
Desde esta ventana, te debe recordar a lo explicado en las herramientas deconfiguracin. Antes de comenzar a trabajar con el administrador, debemosindicar a que servidor y con que usuario queremos conectar y entrar aladministrador.
Propiedad: Opciones: Funcin:
Nombre delservidor:
Elegimos el servidor con el queconectaremos.
El nombre del servidor, queelijamos para conectar con eladministrador. Debes recordareste nombre, porque ser el quetengas que utilizar en lascadenas de conexin desde.NET.
Autenticacion:
Autenticacion Windows Autenticacion SQL
Server
Si elegimos la opcin "Autenticacion Windows"estaremos conectando conla misma cuenta de usuariocon la que iniciamosnuestro sistema.Trabajaremos con estaopcin a lo largo del curso.
Si seleccionamos "Autenticacion SQLServer" deberemos indicar
con que cuenta vamos aconectar e introducir la
7/21/2019 Microsoft SQL Server 2005 Express Edicin
13/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.13
contrasea especfica paraconectar con SQL Server.Con la versin SQL Server2005 Express es msrecomendable trabjar con
"Windows Authentication"ya que de otro modopodemos encontrarproblemas por la limitacinde la versin gratuita.
Elegidas nuestras opciones adecuadas pulsaremos en conectar, en ese momentonos muestra una ventana con el proceso de conexin y si todo ha resultadocorrecto, arranca nuestra herramienta de administracin.
Nota: En este curso utilizaremos esta herramienta para disear bases de datos, crear cuentasde usuario y ejecutar nuestras sentencias SQL, necesarias para la gestin de datos, medianteel administrador de consultas. Todo lo dems quedara para un curso especfico deadministracin y mantenimiento de bases de datos con SQL Server 2005. Por lo tanto no tepreocupes al observar que no se explican todas las caractersticas, ya que las tareas quevamos a aprender, son las necesarias para desarrollar nuestras aplicaciones.
Bases de datos de SQL Server
Componentes lgicos: registro de datos y registro detransacciones.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
14/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.14
SQL Server 2005 asigna una base de datos a un conjunto de archivos del sistemaoperativo. Los datos y la informacin del registro nunca se mezclan en el mismo archivo, ycada archivo slo es utilizado por una base de datos.
Los grupos de archivos se denominan colecciones con nombre de archivos que se utilizancomo ayuda en tareas de colocacin de datos y administrativas, como las operaciones de copia
de seguridad y restauracin.Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:
Archivos de datos principalesEl archivo de datos principal es el punto de partida de la base de datos y apunta a losotros archivos de la base de datos. Cada base de datos tiene un archivo de datosprincipal. La extensin recomendada para los nombres de archivos de datosprincipales es .mdf.
Archivos de datos secundariosLos archivos de datos secundarios son todos los archivos de datos menos el archivode datos principal. Puede que algunas bases de datos no tengan archivos de datossecundarios, mientras que otras pueden tener varios archivos de datos secundarios.La extensin de nombre de archivo recomendada para los archivos de datossecundarios es .ndf.
Archivos de registroLos archivos de registro almacenan toda la informacin de registro que se utiliza pararecuperar la base de datos. Como mnimo, tiene que haber un archivo de registro porcada base de datos, aunque puede haber varios. La extensin de nombre de archivorecomendada para los archivos de registro es .ldf.
En SQL Server 2005, las ubicaciones de todos los archivos de una base de datos se grabantanto en el archivo principal de la base de datos como en la base de datos master. SQL ServerDatabase Engine (Motor de base de datos de SQL Server) utiliza casi siempre la informacinde ubicacin del archivo de la base de datos master. Sin embargo, Database Engine (Motor de
base de datos) utiliza la informacin de ubicacin del archivo principal para inicializar lasentradas de ubicacin de archivos de la base de datos master en las siguientes situaciones:
Al adjuntar una base de datos mediante la instruccin CREATE DATABASE con laopcin FOR ATTACH
Al actualizar de SQL Server versin 2000 o versin 7.0 a SQL Server 2005. Al restaurar la base de datos master.
Los archivos de SQL Server 2005 tienen dos nombres:
logical_file_name
logical_file_name es el nombre que se utiliza para hacer referencia al archivo en todas lasinstrucciones Transact-SQL. El nombre de archivo lgico tiene que cumplir las reglas de losidentificadores de SQL Server y tiene que ser nico entre los nombres de archivos lgicos de labase de datos.
os_file_name
os_file_name es el nombre del archivo fsico que incluye la ruta de acceso al directorio. Debeseguir las reglas para nombres de archivos del sistema operativo.
La siguiente ilustracin muestra ejemplos de los nombres de archivo lgico y fsico de una basede datos creada en una instancia predeterminada de SQL Server 2005:
7/21/2019 Microsoft SQL Server 2005 Express Edicin
15/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.15
Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivosFAT o NTFS. Se recomienda utilizar el sistema de archivos NTFS por las caractersticas deseguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura y escritura,
y archivos de registro, en un sistema de archivos NTFS comprimido. Slo las bases de datosde slo lectura y los grupos de archivos secundarios de slo lectura se pueden colocar en unsistema de archivos NTFS comprimido. Para obtener ms informacin, vea Grupos de archivosde slo lectura y compresin.
Cuando se ejecutan varias instancias de SQL Server en un nico equipo, cada instancia recibeun directorio predeterminado diferente para albergar los archivos de las bases de datoscreadas en la instancia.
Pginas de archivo de datos
Las pginas de un archivo de SQL Server 2005 estn numeradas secuencialmente,comenzando por 0 para la primera pgina del archivo. Cada archivo de una base de datos tieneun nmero de identificador nico. Para identificar de forma nica una pgina de una base de
datos, se requiere el identificador del archivo y el nmero de la pgina. El siguiente ejemplomuestra los nmeros de pgina de una base de datos que tiene un archivo de datos principalde 4 MB y un archivo de datos secundario de 1 MB.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
16/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.16
La primera pgina de cada archivo es una pgina de encabezado de archivo que contieneinformacin acerca de los atributos del archivo. Algunas de las otras pginas del comienzo delarchivo tambin contienen informacin de sistema, como mapas de asignacin. Una de laspginas de sistema almacenadas en el archivo de datos principal y en el archivo de registro
principal es una pgina de inicio de la base de datos que contiene informacin acerca de losatributos de la base de datos. Para obtener ms informacin acerca de las pginas y los tiposde pginas, vea Pginas y extensiones.
Tamao de archivo
Los archivos de SQL Server 2005 pueden crecer automticamente a partir del tamaooriginalmente especificado. Cuando se define un archivo, se puede especificar un incrementode crecimiento. Cada vez que se llena el archivo, el tamao aumenta en la cantidadespecificada. Si hay varios archivos en un grupo de archivos, no crecern automticamentehasta que todos los archivos estn llenos. A continuacin, el crecimiento tiene lugar por turnos.
Cada archivo tambin puede tener un tamao mximo especificado. Si no se especifica un
tamao mximo, el archivo puede crecer hasta utilizar todo el espacio disponible en el disco.Esta caracterstica es especialmente til cuando SQL Server se utiliza como una base de datosincrustada en una aplicacin para la que el usuario no dispone fcilmente de acceso a unadministrador del sistema. El usuario puede dejar que los archivos crezcan automticamentecuando sea necesario y evitar as las tareas administrativas de supervisar la cantidad deespacio libre en la base de datos y asignar ms espacio manualmente.
Catlogos del sistema
Las aplicaciones dinmicas que no estn codificadas de forma rgida para funcionar con unconjunto especfico de tablas y vistas deben disponer de un mecanismo para determinar laestructura y los atributos de los objetos de cualquier base de datos a la que se conectan. Lasaplicaciones pueden necesitar informacin como la siguiente:
El nmero y nombre de las tablas y vistas de una base de datos. El nmero de columnas de una tabla o vista, junto con el nombre, el tipo de datos, la
escala y la precisin de cada columna. Las restricciones definidas en una tabla. Los ndices y las claves definidos para una tabla.
El catlogo del sistema de SQL Server 2005 proporciona esta informacin para las bases dedatos de SQL Server. El ncleo de los catlogos del sistema de SQL Server 2005 es unconjunto de vistas que muestran metadatos que describen los objetos de una instancia de SQLServer. Los metadatos son datos que describen los atributos de los objetos de un sistema
7/21/2019 Microsoft SQL Server 2005 Express Edicin
17/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.17
S
SESION 2
Generacin de scripts en SQL Transact. Lenguaje SQL Transact DML para la manipulacin de los datos. Insercin de filas - sentencia INSERT. Actualizacin de filas - sentencia UPDATE.
Eliminacin de filas - sentencia DELETE
7/21/2019 Microsoft SQL Server 2005 Express Edicin
18/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.18
GENERACIN DE SCRIPTS EN SQL TRANSACT
Transact-SQL es fundamental para trabajar con SQL Server. Todas las aplicaciones que secomunican con SQL Server lo hacen enviando instrucciones Transact-SQL al servidor,independientemente de la interfaz de usuario de la aplicacin
En esta leccin se muestra cmo crear una base de datos, crear una tabla en la base de datosy, a continuacin, tener acceso a los datos de la tabla y cambiarlos. Puesto que esta leccin esuna introduccin al uso de Transact-SQL, no usa ni describe las mltiples opciones disponiblespara estas instrucciones.
Las instrucciones de Transact-SQL se pueden escribir y enviar a Database Engine (Motor debase de datos) de las siguientes maneras:
Mediante el uso de SQL Server Management Studio. En este tutorial se supone quese usa Management Studio, pero tambin puede usarse Management StudioExpress, disponible como descarga gratuita en el Centro de descargas de Microsoft.
MICROSOFT SQL SERVER MANAGEMENT STUDIO
EXPRESS
Microsoft SQL Server Management Studio Express (SSMSE) es una herramienta grfica deadministracin gratuita y fcil de usar para SQL Server 2005 Express Edition y SQL Server 2005Express Edition with Advanced Services.
ABRIR SQL SERVER MANAGEMENT STUDIO
Para abrir SQL Server Management Studio1. En el men Inicio, seleccione Todos los programas, Microsoft SQL Server 2005 y,
a continuacin, haga clic en SQL Server Management Studio.
2. En el cuadro de dilogo Conectar al servidor, compruebe la configuracinpredeterminada y, a continuacin, haga clic en Conectar. Para conectarse, elcuadro Nombre del servidor debe contener el nombre del equipo en el que estinstalado SQL Server. Si Database Engine (Motor de base de datos) es unainstancia con nombre, el cuadro de nombre de servidor tambin debe contener elnombre de la instancia con el formato\
7/21/2019 Microsoft SQL Server 2005 Express Edicin
19/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.19
2- Con el botn derecho (o el botn secundario), pulsa en Bases de datosy del men selecciona Nueva base de datos, tal como te muestro en la figura 2.
Figura 2. Crear una nueva base de datos
3- Eso har que te muestre una ventana como la de la figura 3.A la base de datos, le vas a dar el nombre PruebasGuille, as que escribe esenombre en la caja de textos correspondiente y despus pulsa en el botn Aceptar.
Figura 3. Cuadro de dilogo de Nueva base de datos
7/21/2019 Microsoft SQL Server 2005 Express Edicin
20/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.20
COMANDO CREATE DATABASE
Sintaxis del comando Create Database:
NAME = Nombre_del_archivo_lgico,FILENAME = Nombre_del_archivo_en_el_sistema (path completo)SIZE = TAMAO (inicial)MAXSIZE = (tamao_mximo | UNLIMITED)(Tamao mximo que puede tener la base de datos, UNLIMITED =tamaoilimitado)FILEGROWTH = Incremento del archivo (crecimiento en MB)
1. Ahora crearemos la base de Datos Ventas
/*Crear la base de datos con el comando Create database*/
CREATE DATABASE VENTASON
/*Generando el archivo de datos*/
( NAME = ventas_data,
FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\ventas_data.mdf',SIZE = 10,
MAXSIZE = 50,FILEGROWTH = 5 )
/*Generando el archivo de registro*/LOG ON
( NAME = Pruebas_log',
FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\ventas_log.ldf',
SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB )
------------------------------------------------------------------------------
2. Seleccione todas las instrucciones y pulse F5
ABRIR SU BASE DE DATOS
1. Escribe el comando siguiente :
USE VENTAS
2. Seleccione el comando y pulse F5
7/21/2019 Microsoft SQL Server 2005 Express Edicin
21/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.21
MODIFICAR UNA BASE DE DATOS CREADA
COMANDO ALTER DATABASE
Aade o elimina archivos o grupos de archivos de una base de datos. Se puedeusar tambin para modificar las propiedades de archivos y grupos de archivos
CREATE DATABASE BDEMPRESA ON(NAME = Emp_dat1,FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Emp_dat1.ndf',SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB
)GO
ALTER DATABASE BDEMPRESA
ADD FILE(NAME = Emp_dat2,FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\Emp_dat2.ndf',SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB
)GO
AADIR UN GRUPO DE ARCHIVOS A LA BASE DEDATOS
USE masterGO
ALTER DATABASE VENTASADD FILEGROUP GP_VENTASGO
ALTER DATABASE VENTASADD FILE( NAME = Ventas_dat3,
FILENAME = 'c:\Program Files\Microsoft SQLServer\MSSQL\Data\Ventas_dat3.ndf',
SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB),
( NAME =ventas_dat4,FILENAME = 'c:\Program Files\Microsoft SQL
Server\MSSQL\Data\Ventas_dat4.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB)
TO FILEGROUP GP_VENTAS
ALTER DATABASE BDEMPRESAMODIFY FILEGROUPGPVENTAS DEFAULT--------------------------------------------------------------------------------------------------------------------
7/21/2019 Microsoft SQL Server 2005 Express Edicin
22/122
7/21/2019 Microsoft SQL Server 2005 Express Edicin
23/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.23
CREACIN DE TABLAS
Para crear una tabla en su base de datos utilice el comando CREATE TABLE
COMANDO CREATE TABLE
CREATE TABLEEmpleados(Nombre VARCHAR (25), Apellidos VARCHAR (50))
(Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre detipo VarChar y longitud 25 y otro llamado apellidos con longitud 50).
CREATE TABLEEmpleados (Nombre VARCHAR (10),Apellidos VARCHAR,FechaNacimiento DATETIME
)CONSTRAINTndicegeneralUNIQUE (Nombre, Apellidos, FechaNacimiento)
Resultado:
Tabla Empleados
Nombre Apellidos FechaNacimiento
(Crea una nueva tabla llamada Empleados con un campo Nombre de tipo texto(Varchar) y longitud 10, otro con llamado Apellidos de tipo texto (Varchar) y longitudpredeterminada (50) y uno ms llamado FechaNacimiento de tipoFecha/Hora.(Datetime) Tambin crea un ndice nico - no permite valores repetidos -formado por los tres campos.)
GENERAR UNA TABLA CON UN CAMPOAUTONUMERICO
El valor IDENTITY define que el campo Idalumno es autonumerico y empieza en elvalor 100 y se incrementara de 1 en 1
PRIMARY KEY que el campo IDALUMNO es Clave Primaria de la tabla NOT NULL El ingreso de este dato es obligatorio
CREATE TABLE ALUMNOS(IDALUMNO INT NOT NULL IDENTITY(100,1) PRIMARY KEY,NOMBRE VARCHAR(40) NOT NULL,APELLIDOS VARCHAR(40) NOT NULL,SEXO BIT NOT NULL,FECHANACIMIENTO DATETIME NOT NULL)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
24/122
7/21/2019 Microsoft SQL Server 2005 Express Edicin
25/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.25
CREAR GENERAR UNA TABLA CON UN CAMPOAUTONUMERICO
El valor IDENTITY define que el campo Idalumno es autonumerico y empieza en elvalor 100 y se incrementara de 1 en 1
PRIMARY KEY que el campo IDALUMNO es Clave Primaria de la tabla NOT NULL El ingreso de este dato es obligatorio
CREATE TABLE ALUMNOS(IDALUMNO INT NOT NULL IDENTITY(100,1) PRIMARY KEY,NOMBRE VARCHAR(40) NOT NULL,APELLIDOS VARCHAR(40) NOT NULL,SEXO BIT NOT NULL,FECHANACIMIENTO DATETIME NOT NULL)
GENERAR UN CAMPO AUTOGENERADO
Se puede generar un campo que sera el producto de una operacin entre otroscampos Por ejemplo PROMEDIO es el producto del calculo de la suma deN1+N2+N3
CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,
N3 DECIMAL NOT NULL,PROMEDIO AS N1+N2+N3,APROBADO BIT NOT NULL)
GENERAR UN VALOR PREDETERMINADO PARA UNCAMPO
CREATE TABLE CURSOS(IDCURSO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
NOMBRECURSO VARCHAR(35) NOT NULL,COSTO MONEY DEFAULT(200))
GENERAR UNA REGLA PARA UN CAMPO DE UNATABLA
CREATE TABLE MATRICULAS(IDMATRICULA INT NOT NULL PRIMARY KEY ,
FECHAMATRICULA DATETIME NOT NULL,PAGO MONEY CHECK (PAGO>100))
7/21/2019 Microsoft SQL Server 2005 Express Edicin
26/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.26
UTILIZAR EL TIPO DE DATOSUNIQUEIDENTIFIER EN UNA COLUMNA
Este ejemplo crea una tabla con una columna UNIQUEIDENTIFIER. Utiliza unarestriccin PRIMARY KEY para impedir que los usuarios inserten valores duplicados y
utiliza la funcin NEWID() de la restriccin DEFAULT para proporcionar valores paralas nuevas filas.
CREATE TABLE PROFESORES(IDPROFESOR UNIQUEIDENTIFIERCONSTRAINT Guid_DefaultDEFAULT NEWID(),NOMBRES VARCHAR(60),CONSTRAINT Guid_PK PRIMARY KEY (IDPROFESOR)
CREAR UNA TABLA CON UNA CLAVE PRIMARIA
COMPUESTA
CREATE TABLE [DETALLES DE PEDIDOS](IDPEDIDO INT ,IDPRODUCTO INT ,CANTIDAD INT,PRECIOUNIDAD MONEYPRIMARY KEY(IDPEDIDO,IDPRODUCTO))
CREAR UNA TABLA EN UN GRUPO DE ARCHIVOS
Este ejemplo crea la tabla NOTAS en un grupo GP_EVALUACIONES de la base dedatos BDCOLEGIO CREADA ANTERIORMENTE
CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,N3 DECIMAL NOT NULL,PROMEDIO AS N1+N2+N3,
APROBADO BIT NOT NULL) ON GP_EVALUACIONESEste ejemplo crea una tabla MATRICULAS y lo aade al grupo existenteGP_MATRICULAS
CREATE TABLE MATRICULAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,FECHAMATRICULA DATETIME NOT NULL,PROMEDIO AS N1+N2+N3) ON GP_MATRICULAS
7/21/2019 Microsoft SQL Server 2005 Express Edicin
27/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.27
COMO CREAR TABLAS ESTABLECIENDORELACION1. Vamos a desarrollar el siguiente ejemplo de relacion de tablas para ello usaremos
el Analizador de Consultas.El objetivo sera relacionar las tablas
CATEGORIAS,PROVEEDORES Y PRODUCTOS aplicando la ACTUALIZACIONY ELIMINACION en CASCADA.
Esteejemploasume quelastablas
CATEGORIAS Y PROVEEDORES ya existen
----------------------------------------------------------------------------------------------------------
CREATE TABLE PRODUCTOS(IDPRODUCTO INT IDENTITY NOT NULL PRIMARYKEY,NOMBREPRODUCTO VARCHAR(50),IDPROVEEDOR INT REFERENCES PROVEEDORES(IDPROVEEDOR)ON UPDATE CASCADEON DELETE CASCADE,IDCATEGORIA INT REFERENCES CATEGORIAS(IDCATEGORA)ON UPDATE CASCADEON DELETE CASCADE,CANTIDADPORUNIDAD INT,PRECIOUNIDADMONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDO
BIT)--------------------------------------------------------------------------------------------------------------------
7/21/2019 Microsoft SQL Server 2005 Express Edicin
28/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.28
2. En este segundo ejemplo se crea una tabla PEDIDOS la cual se relacionacon las tablas CLIENTES y EMPLEADOS que ya existen
CREATE TABLE PEDIDOS(IDPEDIDO INT IDENTITY NOT NULL PRIMARY KEY,FECHAPEDIDO,IDCLIENTE INT REFERENCES CLIENTES(IDCLIENTE)ON UPDATE CASCADEON DELETE CASCADE,IDEMPLEADO INT REFERENCES EMPLEADOS(IDEMPLEADO)ON UPDATE CASCADEON DELETE CASCADE,FECHAENVIO DATETIME,CARGO MONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)
PARA COMPROBAR LA ESTRUCTURA DE LA NUEVA TABLA UTILICE EL
PROCEDIMIENTO ALMACENADO SP_HELP
EJEMPLO :
/*CURSOS es el nombrede la tabla*/
SP_HELP CURSOS
El Comando Drop TableElimina una tabla y todos sus datos, ndices, disparadores, restricciones y permisosespecificados para esa tabla. Cualquier vista o procedimiento almacenado quereferencia dicha tabla debe ser explcitamente borrado, la instruccin DROP TABLEno lo hace.
DROP TABLE MATRICULAS/* Elimina La Tabla Matriculas */
MODIFICAR TABLAS DE LA BASE DE DATOS
7/21/2019 Microsoft SQL Server 2005 Express Edicin
29/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.29
Entendemos por modificar una tabla, cambiar su estructura, es decir, aadiratributos, borrarlos, o cambiar la definicin. La sentencia que permite modificar unatabla es la que muestra
LA SENTENCIA ALTER TABLESu sintaxis es la descrita en el Cdigo fuente
ALTER TABLE tabla ADD atrib tipo NULL
Ejemplos
Aadir una nueva columna a una tabla
CREATE TABLE CONTACTOS ( TIPO AS VARCHAR(20),DIRECCIONVARCHAR(50))GOALTER TABLE CONTACTOS ADD NOMBRECONTACTO VARCHAR(20) NOTNULLGO
Eliminar una columna de una tabla
ALTER TABLE CONTACTOS DROP COLUMN DIRECCION
Aadir una nueva columna con una restriccin
ALTER TABLE CONTACTOS ADD EDAD TINYINT NULLCONSTRAINT ED_unique UNIQUE
Aadir una restriccin no validada a una tabla
ALTER TABLE CONTACTOS WITH NOCHECKADD CONSTRAINT Edad_check CHECK (EDAD > 1)GO
Aadir varias columnas con restricciones
ALTER TABLE CONTACTOS ADD
/* Aadir una columna como clave primaria */IDCONTACTO INT IDENTITY CONSTRAINT Idcontacto_pk PRIMARY KEY,
/* Aadir una columna con una restriccin de comprobacion */CIUDAD VARCHAR(16) NULL CONSTRAINT column_d_chkCHECK (column_d IS NULL OR
column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" ORcolumn_d LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),
/* Aadir una columna con valor por defecto */column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .081GO
Aadir una columna con valor por defecto y NULL
7/21/2019 Microsoft SQL Server 2005 Express Edicin
30/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.30
ALTER TABLE VIDEOSADD FECHAESTRENO smalldatetime NULLCONSTRAINT FECHA_C1 DEFAULT getdate() WITH VALUES
Deshabilitar y habilitar una restriccin
CREATE TABLE empleado(id INT NOT NULL,nombre VARCHAR(10) NOT NULL,salario MONEY NOT NULL
CONSTRAINT salario CHECK (salario < 100000))
-- Inserciones validasINSERT INTO empleado VALUES (1,"Joe Brown",65000)INSERT INTO empleado VALUES (2,"Mary Smith",75000)
-- Insercin que viola la restriccinINSERT INTO empleado VALUES (3,"Pat Jones",105000)
-- Deshabilitar la restriccinALTER TABLE empleado NOCHECK CONSTRAINT salarioINSERT INTO empleado VALUES (3,"Pat Jones",105000)
-- Habilitar la restriccinALTER TABLE empleado CHECK CONSTRAINT salarioINSERT INTO empleado VALUES (4,"Eric James",110000)
CON UNA CLAVE PRIMARIA COMPUESTA
CREATE TABLE [DETALLES DE PEDIDOS](IDPEDIDO INT ,IDPRODUCTO INT ,CANTIDAD INT,PRECIOUNIDAD MONEYPRIMARY KEY(IDPEDIDO,IDPRODUCTO))
CREAR UNA TABLA EN UN GRUPO DE ARCHIVOS
Este ejemplo crea la tabla NOTAS en un grupo GP_EVALUACIONES de la base dedatos BDCOLEGIO CREADA ANTERIORMENTE
CREATE TABLE NOTAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,N1 DECIMAL NOT NULL,N2 DECIMAL NOT NULL,N3 DECIMAL NOT NULL,
PROMEDIO AS N1+N2+N3,APROBADO BIT NOT NULL) ON GP_EVALUACIONES
7/21/2019 Microsoft SQL Server 2005 Express Edicin
31/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.31
Este ejemplo crea una tabla MATRICULAS y lo aade al grupo existenteGP_MATRICULAS
CREATE TABLE MATRICULAS(IDREGISTRO INT NOT NULL IDENTITY(1,1) PRIMARY KEY,IDALUMNO INT NOT NULL,CURSO VARCHAR(40) NOT NULL,FECHAMATRICULA DATETIME NOT NULL,PROMEDIO AS N1+N2+N3) ON GP_MATRICULAS
COMO CREAR TABLAS ESTABLECIENDO RELACION
3. Vamos a desarrollar el siguiente ejemplo de relacion de tablas para ello usaremosel Analizador de Consultas.El objetivo sera relacionar las tablasCATEGORIAS,PROVEEDORES Y PRODUCTOS aplicando la ACTUALIZACION YELIMINACION en CASCADA.
Este ejemplo asume que las tablas CATEGORIAS Y PROVEEDORES ya existen
CREATE TABLE PRODUCTOS(IDPRODUCTO INT IDENTITY NOT NULL PRIMARYKEY,NOMBREPRODUCTO VARCHAR(50),
IDPROVEEDOR INT REFERENCES PROVEEDORES(IDPROVEEDOR)ON UPDATE CASCADEON DELETE CASCADE,IDCATEGORIA INT REFERENCES CATEGORIAS(IDCATEGORA)ON UPDATE CASCADEON DELETE CASCADE,CANTIDADPORUNIDAD INT,PRECIOUNIDADMONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)
--------------------------------------------------------------------------------------------------------------------4. En este segundo ejemplo se crea una tabla PEDIDOS la cual se relaciona con las
tablas CLIENTES y EMPLEADOS que ya existen
7/21/2019 Microsoft SQL Server 2005 Express Edicin
32/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.32
CREATE TABLE PEDIDOS(IDPEDIDO INT IDENTITY NOT NULL PRIMARY KEY,FECHAPEDIDO,IDCLIENTE INT REFERENCES CLIENTES(IDCLIENTE)ON UPDATE CASCADEON DELETE CASCADE,IDEMPLEADO INT REFERENCES EMPLEADOS(IDEMPLEADO)ON UPDATE CASCADEON DELETE CASCADE,FECHAENVIO DATETIME,CARGO MONEY,UNIDADESENEXISTENCIA INT,UNIDADESENPEDIDO INT,NIVELNUEVOPEDIDO TINYNT,SUSPENDIDOBIT)
PARA COMPROBAR LA ESTRUCTURA DE LA NUEVA TABLA UTILICE ELPROCEDIMIENTO ALMACENADO SP_HELP
EJEMPLO :
/*CURSOS es el nombrede la tabla*/
SP_HELP CURSOS
EL COMANDO DROP TABLE
Elimina una tabla y todos sus datos, ndices, disparadores, restricciones y permisosespecificados para esa tabla. Cualquier vista o procedimiento almacenado que
referencia dicha tabla debe ser explcitamente borrado, la instruccin DROP TABLEno lo hace.
DROP TABLE MATRICULAS/* Elimina La Tabla Matriculas */
MODIFICAR TABLAS DE LA BASE DE DATOSEntendemos por modificar una tabla, cambiar su estructura, es decir, aadir atributos,borrarlos, o cambiar la definicin. La sentencia que permite modificar una tabla es laque muestra
LA SENTENCIA ALTER TABLE
7/21/2019 Microsoft SQL Server 2005 Express Edicin
33/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.33
Su sintaxis es la descrita en el Cdigo fuente
ALTER TABLE tabla ADD atrib tipo NULL
Ejemplos
Aadir una nueva columna a una tabla
CREATE TABLE CONTACTOS ( TIPO AS VARCHAR(20),DIRECCIONVARCHAR(50))GOALTER TABLE CONTACTOS ADD NOMBRECONTACTO VARCHAR(20) NOTNULLGO
ELIMINAR UNA COLUMNA DE UNA TABLA
ALTER TABLE CONTACTOS DROP COLUMN DIRECCION
Aadir una nueva columna con una restriccin
ALTER TABLE CONTACTOS ADD EDAD TINYINT NULLCONSTRAINT ED_unique UNIQUE
Aadir una restriccin no validada a una tabla
ALTER TABLE CONTACTOS WITH NOCHECKADD CONSTRAINT Edad_check CHECK (EDAD > 1)
GO
AADIR VARIAS COLUMNAS CON RESTRICCIONES
ALTER TABLE CONTACTOS ADD/* Aadir una columna como clave primaria */IDCONTACTO INT IDENTITY CONSTRAINT Idcontacto_pk PRIMARY KEY,
/* Aadir una columna con una restriccin de comprobacion */CIUDAD VARCHAR(16) NULL CONSTRAINT column_d_chkCHECK (column_d IS NULL OR
column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" ORcolumn_d LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),
/* Aadir una columna con valor por defecto */column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .081GO
Aadir una columna con valor por defecto y NULL
ALTER TABLE VIDEOSADD FECHAESTRENO smalldatetime NULLCONSTRAINT FECHA_C1 DEFAULT getdate() WITH VALUES
Deshabilitar y habilitar una restriccin
7/21/2019 Microsoft SQL Server 2005 Express Edicin
34/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.34
CREATE TABLE empleado(id INT NOT NULL,nombre VARCHAR(10) NOT NULL,salario MONEY NOT NULL
CONSTRAINT salario CHECK (salario < 100000))
-- Inserciones validasINSERT INTO empleado VALUES (1,"Joe Brown",65000)INSERT INTO empleado VALUES (2,"Mary Smith",75000)
-- Insercin que viola la restriccinINSERT INTO empleado VALUES (3,"Pat Jones",105000)
-- Deshabilitar la restriccinALTER TABLE empleado NOCHECK CONSTRAINT salario
INSERT INTO empleado VALUES (3,"Pat Jones",105000)-- Habilitar la restriccinALTER TABLE empleado CHECK CONSTRAINT salarioINSERT INTO empleado VALUES (4,"Eric James",110000)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
35/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.35
CREACIN DE NDICES
La creacin de ndices en SQL Server, as como en la mayora de los SGBDRexistentes, se debe realizar junto con la creacin de la estructura de las tablas. Deeste modo se evitan posibles colisiones que pueden surgir al crear ndices cuando la
tabla ya tiene datos. Por ejemplo, si creamos un ndice nico por un campo, esto es nopuede admitir duplicados, y se encuentran valores no nicos, la generacin del ndicedara un error. Sin embargo, SQL Server permite la creacin de ndices, aunque labase de datos est cargada.
ALTER TABLE TABLA ADD CONSTRAINT K1 PRIMARY KEY (COD1, COD2)
Esta sentencia permite aadir una clave primaria en tabla, por los campos cod1 ycod2.
Para crear un ndice en la tabla todos, denominado Cdigo, por el campo cod_cliente,se debe especificar el Cdigo fuente
CREATE INDEX CODIGO ON TODOS (COD_CLIENTE)
S adems queremos que el ndice no admita valores nulos, se debe ejecutar elCdigo fuente
CREATE UNIQUE INDEX codigo ON todos (cod) WITH IGNORE_DUP_KEY
La sentencia que se encarga de borrar un ndice, se muestra en el Cdigo fuente Estasentencia se encarga de borrar el ndice cdigo creado anteriormente.
DROP INDEX codigoMas Ejemplos de indices con la siguiente tabla
La tabla EMPLEADOS ya dispone de un indice que se generaautomaticamente cuando se crea la clave Primaria vamos aaadir dos indices mas.
1. CREATE INDEX IDX_NOMB ON EMPLEADOS(NOMBRE)2. CREATE INDEX IDX_APE ON EMPLEADOS(APELLIDOS)
Si desea hacer una seleccin de los registros de la tabla Empleados utilizando uno de
sus indices creados en el ejemplo anterior haga lo siguiente:SELECT IDEMPLEADO,NOMBRE,APELLIDOS FROM EMPLEADOS(INDEX=2)
SELECT IDEMPLEADO,NOMBRE,APELLIDOS FROM EMPLEADOS(INDEX=3)
El numero 2 hace referencia al indice por el campo NOMBRE y el numero 3 por elcampo APELLIDOS .El numero 1 esta reservado para el IDPRODUCTO que es laclave primaria
Para obtener informacion acerca de los indices que tiene su tabla ejecute elprocedimiento almacenado SP_HELPINDEX Ejemplo:
SP_HELPINDEX empleados/*empleados es el nombre de la tabla
7/21/2019 Microsoft SQL Server 2005 Express Edicin
36/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.36
EL LENGUAJE DE MANIPULACIN DE DATOS (DML)
Ya se ha visto en un captulo anterior el lenguaje de definicin de datos(DDL), que es
el que permite definir y modificar la estructura de un esquema. Veremos acontinuacin el otro lenguaje, el de manipulacin de datos, que nos permite, como supropio nombre indica, manejar los datos contenidos en el esquema.
LA SENTENCIA INSERT
La otra gran sentencia de manipulacin de datos es INSERT. Si SELECT nos permitarecuperar datos, INSERT nos va a permitir aadirlos al esquema, es decir, con estasentencia podemos aadir informacin a la base de datos. Recordemos que estamosen el modelo relacional, por lo que la informacin se aadir a una tabla en forma defilas. Si slo queremos insertar un valor para un atributo, el resto de los de la tabla
deber contener el valor nulo (NULL). Sin embargo, habr ciertas ocasiones en queesto no ser posible, cuando el atributo est definido como NO NULO, en cuyo casodeberemos especificar un valor para ste. La sintaxis de esta sentencia es:
INSERT INTO tabla (atributos)VALUES (valores)
Donde tablaespecifica la tabla en la cual se aadir la fila, atributoses una lista deatributos separados por comas que determinan los atributos para los cuales se darnvalores, y valores especficos los valores que se darn para estos atributos, separados
por comas.Por ejemplo, si queremos aadir un nuevo cliente a nuestra base de datos, deberemosejecutar el Cdigo.INSERT INTO clientes (idcliente,nombre,apellidos)VALUES ('409-99-9876', 'Pepe', 'Perez')
Destacar que si el valor a introducir es alfanumrico, deber ir encerrado entrecomillas, mientras que si es numrico no. Pues bien, si ejecutamos la anteriorsentencia, obtenemos el siguiente error:
Server: Msg 515, Level 16, State 2, Line 1Cannot insert the value NULL into column 'idcontacto', table'pubs.dbo.authors'; column does not allow nulls. INSERT fails.The statement has been terminated.
La razn es que no hemos dado valor al atributo idcontacto, que ha sido definido comono nulo. Por lo tanto, rectificamos el Cdigo fuente, para dar un valor al Cdigo fuente56.
INSERT INTO authors (idcliente,nombre, apellidos,idcontacto)VALUES ('409-99-9876', 'Pepe', 'Perez', 1)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
37/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.37
LA SENTENCIA UPDATE
El objetivo de la sentencia UPDATE es actualizar los valores de una o varias filas de
una tabla, sin necesidad de borrarla e insertarla de nuevo. La sintaxis es la siguiente:
UPDATE tablaSET atributo1 = valor1 , atributo2 = valor2, ...
WHERE condicin donde tabla especifica la tabla donde se encuentran las filas quequeremos actualizar, condicin especifica la condicin que se debe cumplir paraactualizar las filas, y lo que viene a continuacin de
SET especifica la asignacin de los nuevos valores a los atributos. Por lo tanto seactualizarn todas las filas que cumplan la condicin especificada. Si queremoscambiar el nombre al cliente que hemos insertado en el anterior apartado, deberemos
escribir el Cdigo fuente :
Elevar los precios de los productos en 10% pero solo aquellos que pertenezcan a laCategoria 2 (Bebidas)
UPDATE PRODUCTOSSET PRECIOUNIDAD = PRECIOUNIDAD+(PRECIOUNIDAD*010)WHERE IDCATEGORIA=2
Lo que hacemos con la anterior sentencia es incrementar en 10% el preciounidad delos productos pero solo aquellos de la idcategoria =2(condicin where) cuyo codigopertenece a la Categoria bebidas, Si ejecutamos la anterior sentencia, obtenemos elresultado:
(32 row(s) affected)
Lo que quiere decir que la fila ha sido actualizada con xito. Podemos comprobarloejecutando el Cdigo fuente
SELECT *FROM ProductosWHERE idcategoria = 2
LA SENTENCIA DELETE
El objeto de la sentencia DELETE es el de borrar filas de una tabla. Para poder borrarfilas en una tabla se deben cumplir las condiciones de seguridad determinadas por eladministrador y deben de cumplirse tambin las reglas de integridad referencial. Lasintaxis es la siguiente:
DELETE FROM tablaWHERE condicin
Donde tabla especifica la tabla sobre la cual queremos borrar las filas, y condicinespecifica la condicin que se debe cumplir para que se borren las filas. Si omitimos la
7/21/2019 Microsoft SQL Server 2005 Express Edicin
38/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.38
condicin, se borrarn todas las filas de la tabla, es decir, la sentencia queaparece en el Cdigo fuente borra todas las filas de la tabla Pedidos
DELETE FROM PEDIDOS
Por ejemplo, si queremos borrar una fila que hemos creado en la tabla Pedidos,deberemos ejecutar el Cdigo fuente obteniendo el siguiente resultado:
(1 row(s) affected)
DELETE FROM PEDIDOSWHERE IDPEDIDO = 11077
lo que viene a decir que la fila se ha borrado. Para comprobarlo, ejecutamos lasentencia que muestra el Cdigo fuente. cuyo resultado es: (0 row(s) affected), lo quequiere decir que la fila no se encuentra en la tabla, es decir, ha sido borrada.
SELECT * FROM PEDIDOS WHERE IDPEDIDO = 11077
7/21/2019 Microsoft SQL Server 2005 Express Edicin
39/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.39
S
SESION 3
Comprensin de la recuperacin de datos. La sentencia SELECT. Filtro de columnas y filas por medio de la sentencia
SELECT. Operadores de comparacin (relacionales y LIKE), operador de rango
(BETWEEN), operador de conjunto (IN). Ordenamiento del conjunto de resultados con ORDER BY. Uso de funciones Transact-SQL: funciones de conversin de tipo
(CONVERT y CAST), funciones de fecha y hora. Uso de las funciones de agregacin. Agrupacin de datos: GROUP BY y HAVING.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
40/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.40
RECUPERACION DE DATOS
BASE DE DATOS SUPERMERCADOS NEPTUNOPara seguir con los ejemplos del uso del Transact SQL utilizaremos la siguiente basede datos a la cual llamaremos SUPERMERCADOSNEPTUNO una base de datoscreada como ejemplo que es muy similar a la base de datos Northwind que viene conSQL SERVER pero que utiliza los campos en nombre en espaol para hacer que losejemplos que se desarrollen en este manual sean mas ilustrativos y didacticos acontinucion presentamos el diseo en el siguiente diagrama
A continuacion presentamos los comandos TRANSACT-SQL para poder crearla.
CREATE TABLE Empleados (IdEmpleado [int] NOT NULL
IDENTITY PRIMARY KEY,Apellidos varchar(20),Nombre varchar(10)Cargo varchar(30),FechaNacimiento smalldatetime,FechaContratacion smalldatetime ,Direccion varchar(60),Ciudadvarchar(15),Pais varchar(15),Fono varchar(24),Foto image NULL
CREATE TABLE Clientes(IdCliente varchar(5)INT NOT NULLPRIMARY KEY,
NombreCompaa varchar(40),NombreContacto varchar(30),CargoContacto varchar(30),Direccin varchar(60),Ciudad varchar(15),Pas varchar(15),Telfono varchar(24),Fax varchar (24))
CREATE TABLE Categoras (IdCategora int NOT NULLIDENTITY Primary key,NombreCategora varchar(15),Descripcintext)
CREATE TABLE Proveedores(IdProveedor int NOT NULLIDENTITY PRIMARY KEY,NombreCompaavarchar(40),Direccin varchar(60),Ciudad varchar(15),Telfonovarchar(24)
CREATE TABLE Productos(IdProducto int not null identity primarykey,NombreProducto varchar(35),idproveedor REFERENCES Proveedores(idProveedor)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
41/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.41
ONUPDATE CASCADEONDELETE CASCADE,idCategoria REFERENCES Categorias(idcategoria)ON UPDATE CASCADEON DELETE CASCADE
CREATE TABLE Pedidos(idpedido int not null identity primarykey,idcliente varchar(6) REFERENCES Clientes(idcliente)ON UPDATE CASCADEON DELETE CASCADE,idempleado int REFERENCES Empleados(idempleado)ON UPDATE CASCADEON DELETE CASCADE,fechaPedido smallDatetime,FechaEnviosmallDatetime,FechaEntrega smallDatetime,cargo asvarchar(25),Destinatario varchar(35),DireccionDestinatario
varchar(50),PaisDestinatario varchar(35))
CREATE TABLE [Detalles de pedidos](IDPEDIDO INT NOT NULL REFERENCESPEDIDOS(IDPEDIDO)ON UPDATE CASCADEON DELETE CASCADE,
IDPRODUCTO INT NOT NULL REFERENCESPRODUCTOS(IDPRODUCTO)ON UPDATE CASCADE
7/21/2019 Microsoft SQL Server 2005 Express Edicin
42/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.42
ON DELETE CASCADE,PRECIOUNIDAD MONEY,CANTIDAD INT
PRIMARY KEY(IDPEDIDO,IDPRODUCTO))
EL COMADO SELECT
La sentencia Select es una sentencia SQL, que pertenece al conjunto del Lenguaje deManipulacin de Datos, y que sirve para recuperar registros de una o varias tablas, deuna o varias bases de datos.
Su sintaxis es la siguiente:
SELECT FROM [WHERE ][GROUP BY ][HAVING ][ORDER BY ]
Donde las maysculas representan palabras reservadas, y lo encerrado entrecorchetes es opcional, puede ser omitido. Una vez vista la anterior forma derepresentacin, vamos a detenernos en la sintaxis de la sentencia Select. Secompone de tres partes:
SELECT : permite hacer una proyeccin de las tablas, es decir,seleccionar los campos que deseamos recuperar de la base de datos,separados por comas. Si se especifica el smbolo *, se obtendrn todos loscampos de la tabla.
FROM : permite especificar la tabla de la cual se desean obtener losdatos. Si se especifica ms de una tabla, stas irn separadas por comas.
WHERE : permite establecer una condicin de recuperacin de lasfilas de la/s tabla/s. Slo se obtendrn aquellas Registros que verifiquen dichacondicin, que ser opcional.
En el caso de que se omita esta parte, se recuperarn todas las filas.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
43/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.43
GROUP BY : permite establecer una seleccin de campos cuandose utilizan funciones escalares o de conteo (ya se ver ms adelante lo quesignifica.
HAVING : establece una condicin para los atributos obtenidoscomo resultado de la aplicacin de funciones escalares.
ORDER BY : permite obtener el resultado de la consulta ordenadopor los atributos especificados.
En el caso de que se especifiquen varias tablas, en la clusula FROM, serconveniente denotar los campos de la clusula SELECT precedidos por el nombre dela tabla donde se encuentra y un punto, para que, en el caso de que dicho campoexista en ms de una tabla, se sepa en cada momento a cual de ellos nos estamosrefiriendo, evitando en este caso el problema de ambigedad.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
44/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.44
EJEMPLOS DE SENTENCIAS SQL CON SELECT
1. Mostrar todos los registros de la tabla Productos
SELECT * FROM PRODUCTOS
2. Mostrar nombre,apellidos y cargo de todos los empleados
SELECT NOMBRE,APELLIDOS,CARGO FROM EMPLEADOS
3. Mostrar los nombreproducto,preciounidad,stock de los productos que tengan
un precio mayor a 20
SELECT NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS WHERE PRECIOUNIDAD>20
4. Mostrar nombreproducto,preciounidad,idcategoria de los productos que tenganun precio entre 25 y 35 soles
SELECT NOMBREPRODUCTO,PRECIOUNIDAD,IDCATEGORIA FROMPRODUCTOSWHERE PRECIOUNIDAD BETWEEN 25 AND 35
7/21/2019 Microsoft SQL Server 2005 Express Edicin
45/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.45
5. Mostrar los pedidos entregados entre el 18/6/95 y el 25/12/97
SELECT IDPEDIDO,IDCLIENTE,FECHAPEDIDO,FECHAENTREGA,CARGOFROM PEDIDOS WHERE FECHAPEDIDO BETWEEN 18/06/95 AND25/12/97
6. Mostrar a los clientes que no tengan numero de fax
SELECT NOMBRECOMPAA,DIRECCIN,CIUDAD,PAIS,FAX FROMCLIENTES WHERE FAX IS NULL
7. Mostrar a los clientes que si tengan numero de fax
SELECT NOMBRECOMPAA,DIRECCIN,CIUDAD,PAIS,FAX FROMCLIENTES WHERE FAX IS NOT NULL
8. Mostrar los productos cuyo nombre empiezen con las letras Que
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS WHERE NOMBREPRODUCTO LIKE Que%
9. Mostrar los productos que empiezen con las letras A,B,C,D
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS WHERE NOMBREPRODUCTO LIKE [A-D]%
10. Mostrar los clientes cuyo nombre termine en en la letra S
SELECT IDCLIENTE,NOMBRECOMPAIA,DIRECCIN FROM CLIENTES
WHERE NOMBRECOMPAIA LIKE %S
11. Mostrar un listado de productos ordenado por precio en forma Ascendente
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS ORDER BY NOMBREPRODUCTO
12. Mostrar un listado de productos ordenado por precio en forma Descendente
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD FROMPRODUCTOS ORDER BY NOMBREPRODUCTO DESC
13. Mostrar los 3 productos mas Caros
SELECT TOP 3IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS ORDER BY PRECIOUNIDAD DESC
14. Mostrar los 3 productos mas Baratos
SELECT TOP 3IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS ORDER BY PRECIOUNIDAD DESC
7/21/2019 Microsoft SQL Server 2005 Express Edicin
46/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.46
15. Mostrar los productos que tengan un precio menor o igual a 50 y sustock se encuentre entre 60 y 80
SELECT NOMBREPRODUCTO,PRECIOUNIDAD,STOCK FROMPRODUCTOS WHERE (PRECIOUNIDAD =60 ANDSTOCK11/5/95)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
47/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.47
S
SESION 4
Combinaciones: INNER JOIN, OUTER JOIN, CROSS JOIN, autojoin. Creacin de tablas a partir de consultas. Reunin de consultas con UNION. Uso de EXISTS y NOT EXISTS. Uso de los store procedures para programar procesos en el servidor.
Manejo de las funciones ms importantes del SQL Transact. Introduccin a los Trigger.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
48/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.48
CONSULTAS MULTITABLAEn este tema vamos a estudiar las consultas multitabla llamadas as porque estnbasadas en ms de una tabla.
El SQL de Microsoft Jet 4.x soporta dos grupos de consultas multitabla:
la unin de tablas
la composicin de tablas
LA UNIN DE TABLASEsta operacin se utiliza cuando tenemos dos tablas con las mismas columnas yqueremos obtener una nueva tabla con las filas de la primera y las filas de lasegunda. En este caso la tabla resultante tiene las mismas columnas que la primeratabla (que son las mismas que las de la segunda tabla).
Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y
queremos una lista con todos los libros que tenemos. En este caso las dos tablastienen las mismas columnas, lo nico que vara son las filas, adems queremosobtener una lista de libros (las columnas de una de las tablas) con las filas que estntanto en libros nuevos como las que estn en libros antiguos, en este casoutilizaremos este tipo de operacin.
Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base dedatos o tablas lgicas (resultados de una consulta), esto nos permite utilizar laoperacin con ms frecuencia ya que pocas veces tenemos en una base de datostablas idnticas en cuanto a columnas. El resultado es siempre una tabla lgica.
Por ejemplo queremos en un slo listado los productos cuyas existencias seaniguales a cero y tambin los productos que aparecen en pedidos del ao 90. En este
caso tenemos unos productos en la tabla de productos y los otros en la tabla depedidos, las tablas no tienen las mismas columnas no se puede hacer una union deellas pero lo que interesa realmente es el identificador del producto(idfab,idproducto), luego por una parte sacamos los cdigos de los productos conexistencias cero (con una consulta), por otra parte los cdigos de los productos queaparecen en pedidos del ao 90 (con otra consulta), y luego unimos estas dos tablaslgicas.
El operador que permite realizar esta operacin es el operador UNION.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
49/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.49
LA COMPOSICIN DE TABLAS
La composicin de tablas consiste en concatenar filas de una tabla con filas de otra.En este caso obtenemos una tabla con las columnas de la primera tabla unidas a lascolumnas de la segunda tabla, y las filas de la tabla resultante son concatenaciones
de filas de la primera tabla con filas de la segunda tablaEl ejemplo anterior quedara de la siguiente forma con la composicin:
A diferencia de la unin la composicin permite obtener una fila con datos de las dostablas, esto es muy til cuando queremos visualizar filas cuyos datos se encuentranen dos tablas.
Por ejemplo queremos listar los pedidos con el nombre del representante que hahecho el pedido, pues los datos del pedido los tenemos en la tabla de pedidos peroel nombre del representante est en la tabla de empleados y adems queremos queaparezcan en la misma lnea; en este caso necesitamos componer las dos tablas
(Nota: en el ejemplo expuesto a continuacin, hemos seleccionado las filas que nosinteresan).
Existen distintos tipos de composicin, aprenderemos a utilizarlos todos y a elegir eltipo ms apropiado a cada caso.
Los tipos de composicin de tablas son:
El INNER JOIN
El LEFT / RIGHT JOIN
SELECT *
FROM PEDIDOS,CLIENTESWHERE PEDIDOS.IDCLIENTE=CLIENTES.IDCLIENTE
7/21/2019 Microsoft SQL Server 2005 Express Edicin
50/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.50
Combinamos todos los pedidos con todos los clientes pero luegoseleccionamos los que cumplan que el cdigo de cliente de la tabla de pedidos seaigual al cdigo de cliente de la tabla de clientes, por lo tanto nos quedamos con lospedidos combinados con los datos del cliente correspondiente.
Las columnas que aparecen en la clusula WHERE de nuestra consulta anterior se
denominan columnas de emparejamiento ya que permiten emparejar las filas de lasdos tablas. Las columnas de emparejamiento no tienen por qu estar incluidas en lalista de seleccin.
Normalmente emparejamos tablas que estn relacionadas entre s y una de lascolumnas de emparejamiento es clave principal, pues en este caso, cuando una delas columnas de emparejamiento tienen un ndice definido es ms eficiente utilizarotro tipo de composicin, el INNER JOIN.
EL INNER JOIN
El INNER JOIN es otro tipo de composicin de tablas, permite emparejar filas de
distintas tablas de forma ms eficiente que con el producto cartesiano cuando una delas columnas de emparejamiento est indexada. Ya que en vez de hacer el productocartesiano completo y luego seleccionar la filas que cumplen la condicin deemparejamiento, para cada fila de una de las tablas busca directamente en la otratabla las filas que cumplen la condicin, con lo cual se emparejan slo las filas queluego aparecen en el resultado.
La sintaxis es la siguiente:
Ejem:
SELECT *
FROM PEDIDOS
INNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE
tabla1 y tabla2son especificaciones de tabla (nombre de tabla con alias o no,nombre de consulta guardada), de las tablas cuyos registros se van a combinar.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos unalias de tabla.
col1, col2son las columnas de emparejamiento.
Observar que dentro de la clusula ON los nombres de columna deben ser nombres
cualificados (llevan delante el nombre de la tabla y un punto).Las columnas de emparejamiento deben contener la misma clase de datos, las dosde tipo texto, de tipo fecha etc... los campos numricos deben ser de tipos similares.Por ejemplo, se puede combinar campos AutoNumrico(IDENTIDAD) y INT puestoque son tipos similares, sin embargo, no se puede combinar campos de tipo INT yFLOAT. Adems las columnas no pueden ser de tipo TEXT ni IMAGE
COMP representa cualquier operador de comparacin ( =, , =, o ) y seutiliza para establecer la condicin de emparejamiento.
Se pueden definir varias condiciones de emparejamiento unidas por los operadoresAND y OR poniendo cada condicin entre parntesis. Ejemplo:
SELECT *FROM PROVEEDORES INNER JOIN PRODUCTOS ON PRODUCTOS
7/21/2019 Microsoft SQL Server 2005 Express Edicin
51/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.51
PROVEEDORES.IDPROVEEDOR AND PROVEEDORES.IDPROVEEDOR =PRODUCTOS.IDPROVEEDOR
Se pueden combinar ms de dos tablas En este caso hay que sustituir en la sintaxisuna tabla por un INNER JOIN completo.
Por ejemplo:SELECT *FROM (PEDIDOS INNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE =CLIENTES.IDCLIENTE) INNER JOIN EMPLEADOS ON PEDIDOS.IDEMPLEADO =EMPLEADOS.IDEMPLEADO
En vez de tabla1 hemos escrito un INNER JOIN completo, tambin podemos escribir:
SELECT *FROM CLIENTES INNER JOIN (PEDIDOS INNER JOIN EMPLEADOS ONPEDIDOS.IDEMPLEADO = EMPLEADOS.IDEMPLEADO) ONPEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE
En este caso hemos sustituido tabla2por un INNER JOIN completo.
EL LEFT JOIN Y RIGHT JOINCrearemos otra base de datos llamada DBVENTAS la cual se utiiizara tambien conla base de datos SUPERMERCADOSNEPTUNO.las tablas de DBVENTAS seran lassiguientesPara los siguientes ejemplos usaremos las siguientes tablas de ejemplo
OficinasEmpleados
Clientes Productos
Clientes
7/21/2019 Microsoft SQL Server 2005 Express Edicin
52/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.52
El LEFT JOIN y RIGHTJOIN son otro tipo de composicin de tablas, tambindenominada composicin externa. Son una extensin del INNER JOIN.
INNER JOIN) es una composicion interna ya que todos los valores de las filas delresultado son valores que estn en las tablas que se combinan.
Con una composicin interna slo se obtienen las filas que tienen al menos una filade la otra tabla que cumpla la condicin, veamos un ejemplo:
Queremos combinar los empleados con las oficinas para saber la ciudad de la oficinadonde trabaja cada empleado, si utilizamos un producto cartesiano tenemos:
SELECT EMPLEADOS.*,CIUDADFROM EMPLEADOS, OFICINASWHERE EMPLEADOS.OFICINA = OFICINAS.OFICINA
Observar que hemos cualificado el nombre de columna oficina ya que ese nombreaparece en las dos tablas de la FROM.
Con esta sentencia los empleados que no tienen una oficina asignada (un valor nuloen el campo oficina de la tabla empleados) no aparecen en el resultado ya que lacondicin empleados.oficina = oficinas.oficina ser siempre nula para esosempleados.
SI UTILIZAMOS EL INNER JOIN
SELECT EMPLEADOS.*, CIUDADFROM EMPLEADOS INNER JOIN OFICINAS ON EMPLEADOS.OFICINA =OFICINAS.OFICINA
Nos pasa lo mismo, el empleado 110 tiene un valor nulo en el campo oficina y noaparecer en el resultado.
Pues en los casos en que queremos que tambin aparezcan las filas que no tienenuna fila coincidente en la otra tabla, utilizaremos el LEFT o RIGHT JOIN.
La sintaxis del LEFT JOIN es la siguiente:
La descripcin de la sintaxis es la misma que la del INNER JOIN (ver pginaanterior), lo nico que cambia es la palabra INNER por LEFT (izquierda en ingls).
Esta operacin consiste en aadir al resultado del INNER JOIN las filas de la tablade la izquierda que no tienen correspondencia en la otra tabla, y rellenar en esas filaslos campos de la tabla de la derecha con valores nulos.
Ejemplo:
SELECT *FROM EMPLEADOS LEFT JOIN OFICINAS ON EMPLEADOS.OFICINA =OFICINAS.OFICINA
Con el ejemplo anterior obtenemos una lista de los empleados con los datos de suoficina, y el empleado 110 que no tiene oficina aparece con sus datos normales y losdatos de su oficina a nulos.
La sintaxis del RIGHT JOIN es la siguiente:
7/21/2019 Microsoft SQL Server 2005 Express Edicin
53/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.53
La sintaxis es la misma que la del INNER JOIN (ver pgina anterior), lo nico quecambia es la palabra INNER por RIGHT (derecha en ingls).
Esta operacin consiste en aadir al resultado del INNER JOIN las filas de la tablade la derecha que no tienen correspondencia en la otra tabla, y rellenar en esas filaslos campos de la tabla de la izquierda con valores nulos.
Ejemplo:
SELECT *FROM empleados RIGHT JOIN oficinas ON empleados.oficina = oficinas.oficina
Con el ejemplo anterior obtenemos una lista de los empleados con los datos de suoficina, y adems aparece una fila por cada oficina que no est asignada a ningnempleado con los datos del empleado a nulos.
Una operacin LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operacinINNER JOIN, pero una operacin INNER JOIN no se puede anidar dentro de LEFTJOIN o RIGHT JOIN. Los anidamientos de JOIN de distinta naturaleza no funcionansiempre, a veces depende del orden en que colocamos las tablas, en estos casos lomejor es probar y si no permite el anudamiento, cambiar el orden de las tablas ( y portanto de los JOINs) dentro de la clusula FROM.
Por ejemplo podemos tener:
SELECT *FROM CLIENTES INNER JOIN (EMPLEADOS LEFT JOIN OFICINAS ONEMPLEADOS.OFICINA = OFICINAS.OFICINA) ON CLIENTES.REPCLIE =EMPLEADOS.NUMCLIE
Combinamos empleados con oficinas para obtener los datos de la oficina de cadaempleado, y luego aadimos los clientes de cada representante, as obtenemos losclientes que tienen un representante asignado y los datos de la oficina delrepresentante asignado.
Si hubiramos puesto INNER en vez de LEFT no saldran los clientes que tienen elempleado 110 (porque no tiene oficina y por tanto no aparece en el resultado delLEFT JOIN y por tanto no entrar en el clculo del INNER JOIN con clientes).
7/21/2019 Microsoft SQL Server 2005 Express Edicin
54/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.54
EJEMPLOS DE CONSULTAS MULTITABLA
CON SUPERMERCADOSNEPTUNO
1. Mostrar Nombre del Producto,Precio Unidad del producto,Nombre de la
Categoria,Nombre del Proveedor y stock de los productos
CON WHERESELECTPRODUCTOS.NOMBREPRODUCTO,PRODUCTOS.PRECIOUNIDAD,CATEGORIAS.NOMBRECATEGORIA,PROVEEDORES.NOMBRECOMPAIA,STOCK FROM PRODUCTOS,CATEGORAS,PROVEEDORESWHERE PRODUCTOS.IDCATEGORIA=CATEGORIAS.IDCATEGORIA ANDPRODUCTOS.IDPROVEEDOR=PROVEEDORES.IDPROVEEDOR
CON INNER JOIN
SELECTPRODUCTOS.NOMBREPRODUCTO,PRODUCTOS.PRECIOUNIDAD,CATEGORIAS.NOMBRECATEGORIA,PROVEEDORES.NOMBRECOMPAIA,STOCK FROM PRODUCTOSINNER JOIN CATEGORIAS ONPRODUCTOS.IDCATEGORIA=CATEGORIAS.IDCATEGORIAINNER JOIN PROVEEDORES ONPRODUCTOS.IDPROVEEDOR=PROVEEDORES.IDPROVEEDOR
2. Mostrar los pedidos con los siguientes datos idpedido,fechapedido,nombre delcliente,el nombre del empleado y el cargo de pedido
SELECTPEDIDOS.IDPEDIDO,PEDIDOS.FECHAPEDIDO,CLIENTES.NOMBRECOMPAIA,EMPLEADOS.APELLIDOS+ +EMPLEADOS.NOMBRE,PEDIDOS.CARGO
FROM PEDIDOSINNER JOIN CLIENTES ON PEDIDOS.IDCLIENTE=CLIENTES.IDCLIENTEINNER JOIN EMPLEADOS ONPEDIDOS.IDEMPLEADO=EMPLEADOS.IDEMPLEADO
7/21/2019 Microsoft SQL Server 2005 Express Edicin
55/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.55
USO DE SELECT CON CAMPOS CALCULADOS
En los capitulos anteriores aprendimos a usar FUNCIONES y utilizar comandos SETahora vamos a desarrollar ejemplos de consultas SELECT para obtener camposcalculados
Ejemplo :En la tabla Empleados tenemos la fecha de nacimiento de los empleados yla Fecha de contratacion pero no tenemos un campo que nos muestre explicitamentela Edad ni el Tiempo de Servicio para ello desarrollaremos los siguiente
SELECT NOMBRE,APELLIDOS,FECHANACIMIENTO,DATEDIFF(YEAR,FECHANACIMIENTO,GETDATE()) AS EDAD,FECHACONTRATACION,DATEDIFF(YEAR,FECHACONTRATACION,GETDATE()) AS [TIEMPO SERVICIO]FROM EMPLEADOS
1. Mostrar los dias Transcurridos entre la fecha de Pedido y la Fecha de entrega detodos los Pedidos entregados al pais de Alemania
SELECT IDPEDIDO,FECHAPEDIDO,FECHAENTREGA,DATEDIFF(DAY,FECHAPEDIDO,FECHAENTREGA) AS [DIASTRANSCURRIDOS],FROM PEDIDOSWHERE PAS=ALEMANIA
2. Mostrar el incremento de los precios de los productos en un 10%
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDAD,PRECIOUNIDAD*.010 AS INCREMENTO,PRECIOUNIDAD+(PRECIOUNIDAD)*.010 AS [PRECIO INCREMENTADO]FROM PRODUCTOS
3. Mostrar el total de cada detalle de pedido
SELECT[DETALLES DE PEDIDOS].CANTIDAD,PRODUCTOS.NOMBREPRODUCTO,[DETALLES DE PEDIDOS].PRECIOUNIDAD,[DETALLES DE PEDIDOS].CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTALFROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOSON [DETALLES DE PEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTO
7/21/2019 Microsoft SQL Server 2005 Express Edicin
56/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.56
FUNCIONES ESCALARES PARA SELECT
Entendemos por funciones escalares, todas aquellas que permiten realizaroperaciones de conteo de filas, suma de atributos, obtencin de medias, etc. Dichasfunciones se especifican a continuacin de la palabra reservada SELECT. Lasfunciones que soporta la sentencia SELECT en el Transact SQL son las siguientes:
FUNCION SUM
Realiza una suma de toda una columna para todas las filas accedidas mediante unaconsulta SQL.
SELECT SUM (CARGO) FROM PEDIDOS
La anterior consulta obtiene la suma del precio para todas las filas de la tabla pedido,
ya queno hemos especificado ninguna condicin en la clusula WHERE.
Si ahora queremos obtener la suma total de todos los pedidos realizados por el clientecuyo cdigo es "ANTON", debemos realizar la misma consulta, pero especificando unacondicin para obtener nicamente las filas cuyo cod_cliente es "ANTON":
SELECT SUM(CARGO) FROM PEDIDOS WHERE IDCLIENTE = "ANTON"
FUNCION COUNT
Cuenta todas las filas de las tablas accedidas mediante una consulta SQL.
Por ejemplo, si tenemos una tabla cliente, con todos los clientes de una empresa deservicios, con los atributos idCliente, nombre, apellidos, direccin, y queremos sabertodos los clientes que tenemos, deberemos realizar un count, para obtener todas elnmero de filas de la tabla ejecutamos el Cdigo fuente
SELECT COUNT(IDCLIENTE) FROM CLIENTES
En el anterior ejemplo, al existir el mismo nmero de filas, sea cual sea el atributo queseleccionemos, podramos haber escogido cualquier otro. En general, se suele escribirel
Cdigo fuente
SELECT COUNT(*) FROM CLIENTES
Si ahora queremos saber el nmero de clientes que viven en Madrid, deberemosrealizar un conteo de todas las filas con la condicin de que el atributo ciudad seaMadrid.
SELECT COUNT(*) FROM CLIENTES WHERE CIUDAD = "MADRID"
Y si queremos saber cuantos Productos tenemos, cuyo precio es mayor de 20,
deberemos realizar lo mismo, pero especificando esta condicin en la clusulaWHERE. Al resultado de la bsqueda le llamaremos Caros.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
57/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.57
SELECT COUNT(*) AS CAROS FROM PRODUCTOS WHEREPRECIOUNIDAD > 20
FUNCION AVG
Realiza una media aritmtica de los atributos para todas las filas accedidas mediantela consulta SQL.
Si por ejemplo tenemos una tabla de materiales, con los atributos cod_material,descripcin, precio y cantidad _ pedida, y queremos saber la cantidad media pedida detodos los materiales, deberemos realizar una media aritmtica, teniendo en cuentatodas las filas de la tabla:
SELECT AVG(CANTIDAD _ PEDIDA) FROM MATERIAL
La anterior sentencia, internamente, realiza primero una suma de todos los valores, y a
continuacin la divide por el nmero total de filas accedidas, es decir, realiza la mediaaritmtica.Volviendo a nuestra cultural base de datos SUPERMERCADOSNEPTUNO, siqueremos saber la media del precio de los ttulos que tenemos disponibles,deberemos ejecutar el Cdigo fuente
SELECT AVG(PRECIOUNIDAD) AS PROMEDIO FROM PRODUCTOS
FUNCION MAX
Obtiene el mximo valor del atributo especificado, de entre todas las filas
seleccionadas mediante la sentencia SQL.
Supngase, por ejemplo, que tenemos la tabla de materiales descrita anteriormente. Siqueremos saber el material mas caro, deberemos realizar un SELECT con la clusulaMax, que obtenga el mayor valor para el atributo precio de todas las filas.
Para nuestro ejemplo, si queremos saber cual es el libro ms caro, ejecutaremos elCdigofuente
SELECT MAX(PRECIOUNIDAD) AS CARO FROM PRODUCTOS
FUNCION MIN
Obtiene el mnimo valor del atributo especificado, de entre todas las filasseleccionadas mediante la sentencia SQL. Si queremos saber cual es elPRODUCTOS ms barato de nuestra base de datos, deberemos ejecutar el Cdigofuente
SELECT MIN(PRECIOUNIDAD) AS BARATO FROM PRODUCTOS
7/21/2019 Microsoft SQL Server 2005 Express Edicin
58/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.58
LA CLAUSULA COMPUTEEsta clausula aade una fila en el conjunto de datos que se esta recuperando,se utilizapara realizar calculos en campos numericos.COMPUTE actua siempre sobre uncampo o expresion del conjunto de resultados y esta expresion debe figurarexactamente igual en la clausula SELECT y siempre se debe ordenar el resultado por
la misma o al menos agrupar el resultado.Esta expresion no puede utilizar ningunALIAS
SELECT IDPEDIDO,CANTIDAD,NOMBREPRODUCTO,[DETALLES DEPEDIDOS].PRECIOUNIDAD,CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTALFROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTOORDER BY IDPEDIDOCOMPUTE SUM(CANTIDAD*[DETALLES DE PEDIDOS].PRECIOUNIDAD)BY IDPEDIDO
SELECT IDPEDIDO,CANTIDAD,NOMBREPRODUCTO,[DETALLES DEPEDIDOS].PRECIOUNIDAD,CANTIDAD*[DETALLES DEPEDIDOS].PRECIOUNIDAD AS TOTAL FROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTO
WHERE IDPEDIDO=10250COMPUTE SUM(CANTIDAD*[DETALLES DE PEDIDOS].PRECIOUNIDAD)
7/21/2019 Microsoft SQL Server 2005 Express Edicin
59/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.59
LA CLAUSULA GROUP BY
Se pueden obtener subtotales con la clusula GROUP BY. Una consulta con unaclusula GROUP BY se denomina consulta agrupada ya que agrupa los datos de latabla origen y produce una nica fila resumen por cada grupo formado. Las columnas
indicadas en el GROUP BY se llaman columnas de agrupacin.
Ejemplos
1. Mostrar el total de clientes que tiene la empresa en cada pais
SELECT PAS,COUNT(IDCLIENTE) AS [TOTAL CLIENTES]FROM CLIENTESGROUP BY PASORDER BY COUNT(IDCLIENTE) DESC
2. Mostrar el precio del producto mas caro de cada categoria
SELECT NOMBRECATEGORA,MAX(PRECIOUNIDAD) AS [Mas Caros]
FROM CATEGORASINNER JOIN PRODUCTOS ONCATEGORAS.IDCATEGORA=PRODUCTOS.IDCATEGORAGROUP BY NOMBRECATEGORA
3. Mostrar el Monto total de cada Pedido
SELECT IDPEDIDO,SUM(CANTIDAD*PRECIOUNIDAD) AS [TOTALPEDIDO]FROM [DETALLES DE PEDIDOS]GROUP BY IDPEDIDO
7/21/2019 Microsoft SQL Server 2005 Express Edicin
60/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.60
4. Mostrar el total de compras por cliente en el ao 1995
SELECT NOMBRECOMPAA,YEAR(FECHAPEDIDO) AS AO,SUM(CANTIDAD*PRECIOUNIDAD) AS [TOTAL COMPRAS]FROM CLIENTESINNER JOIN PEDIDOS ON CLIENTES.IDCLIENTE=PEDIDOS.IDCLIENTEINNER JOIN [DETALLES DE PEDIDOS] ONPEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE YEAR(FECHAPEDIDO)=1995GROUP BY NOMBRECOMPAA,YEAR(FECHAPEDIDO)
5. Mostrar los tres mejores empleados tomando en cuenta la cantidad de pedidosdespachados
SELECT TOP 3 NOMBRE+' '+APELLIDOS AS EMPLEADO,COUNT(IDPEDIDO) AS [TOTAL DESPACHADOS]FROM EMPLEADOSINNER JOIN PEDIDOS ONEMPLEADOS.IDEMPLEADO=PEDIDOS.IDEMPLEADO
GROUP BY NOMBRE+' '+APELLIDOSORDER BY COUNT(IDPEDIDO) DESC
6. Mostrar el total de ventas del dia actual
SELECT FECHAPEDIDO,SUM(CANTIDAD*CANTIDAD) AS TOTAL FROMPEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE FECHAPEDIDO=CONVERT(CHAR(10),GETDATE(),103)GROUP BY FECHAPEDIDO
7/21/2019 Microsoft SQL Server 2005 Express Edicin
61/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.61
7. Mostrar el total de ventas del MES actual del AO Actual
SELECT MONTH(FECHAPEDIDO)AS MES,SUM(CANTIDAD*CANTIDAD) ASTOTAL FROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOWHERE MONTH(FECHAPEDIDO)=MONTH(GETDATE()) ANDYEAR(FECHAPEDIDO)=YEAR(GETDATE())GROUP BY MONTH(FECHAPEDIDO)
8. Mostrar el total de ventas del AO Actual
SELECT YEAR(FECHAPEDIDO) AS AO,SUM(CANTIDAD*CANTIDAD) ASTOTAL FROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDO
WHERE YEAR(FECHAPEDIDO)=YEAR(GETDATE())GROUP BY YEAR(FECHAPEDIDO)
8. Mostrar los tres productos menos vendidos
SELECT TOP 3 NOMBREPRODUCTO,SUM(CANTIDAD) AS [TOTALVENDIDOS]FROM [DETALLES DE PEDIDOS]INNER JOIN PRODUCTOS ON [DETALLES DEPEDIDOS].IDPRODUCTO=PRODUCTOS.IDPRODUCTOGROUP BY NOMBREPRODUCTOORDER BY SUM(CANTIDAD)
9. Mostrar el total de ventas en cada pais
SELECT PASDESTINATARIO,SUM(CANTIDAD*CANTIDAD) AS TOTALFROM PEDIDOSINNER JOIN [DETALLES DE PEDIDOS]
ON PEDIDOS.IDPEDIDO=[DETALLES DE PEDIDOS].IDPEDIDOGROUP BY PASDESTINATARIOORDER BY SUM(CANTIDAD*CANTIDAD)DESC
7/21/2019 Microsoft SQL Server 2005 Express Edicin
62/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.62
USO DE SUBCONSULTAS
Una subconsulta es una sentencia SELECT que aparece dentro de otra sentenciaSELECT que llamaremos consulta principal.
Se puede encontrar en la lista de seleccin, en la clusula WHERE o en la clusulaHAVING de la consulta principal.
Una subconsulta tiene la misma sintaxis que una sentencia SELECT normalexceptuando que aparece encerrada entre parntesis, no puede contener la clusulaORDER BY, ni puede ser la UNION de varias sentencias SELECT, adems tienealgunas restricciones en cuanto a nmero de columnas segn el lugar dondeaparece en la consulta principal. Estas restricciones las iremos describiendo en cadacaso.
Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta seejecuta por cada fila de la consulta principal. Se aconseja no utilizar camposcalculados en las subconsultas, ralentizan la consulta.
Las consultas que utilizan subconsultas suelen ser ms fciles de interpretar por elusuario
Ejemplo:usando SUPERMERCADOSNEPTUNO
Mostrar los productos que tengan un precio mayor al precio promedio de todos losproductos
SELECT IDPRODUCTO,NOMBREPRODUCTO,PRECIOUNIDADFROM PRODUCTOSWHERE PRECIOUNIDAD>(SELECT AVG(PRECIOUNIDAD) FROM PRODUCTOS)
TEST DE COMPARACION ANYTenemos el test ANY (algn, algunoen ingls) y el test ALL (todosen ingls).
La subconsulta debe devolver una nica columna sino se produce un error. Se evala la comparacin con cada valor devuelto por la subconsulta. Si alguna de las comparaciones individuales produce el resultado verdadero, el
test ANY devuelve el resultado verdadero. Si la subconsulta no devuelve ningn valor, el test any devuelve falso.
si el test de comparacin es falso para todos los valores de la columna, ANYdevuelve falso.
Si el test de comparacin no es verdadero para ningn valor de la columna, yes nulo para al menos alguno de los valores, ANY devuelve Nulo.
7/21/2019 Microsoft SQL Server 2005 Express Edicin
63/122
UNIVERSIDAD NACIONAL DE INGENIERIA
Profesor Henry Chavez Viera SQL Server 2005 Express Pag.63
Ejemplo:usando BDVENTAS
SELECT OFICINA, CIUDADFROM OFICINASWHERE OBJETIVO > ANY (SELECT SUM(CUOTA) FROM EMPLEADOSGROUP BY OFICINA)En este caso la subconsulta devuelve una nica columna con las sumas delas cuotas de los empleados de cada oficina. Y luego se Lista las oficinascuyo objetivo sea superior a alguna de las sumas obtenidas.
EL TEST DE COMPARACION ALL.
La subconsulta debe devolver una nica columna sino se produce un error. Se evala la comparacin con cada valor devuelto por la subconsulta. Si todas las comparaciones individuales, producen un resultado verdadero, el
test devuelve el valor verdadero. Si la subconsulta no devuelve ningn valor el test ALL devuelve el valor
verdadero. (Ojo con esto!) Si el test de comparacin es falso para algn valor de la columna, el resultado
es falso. Si el test de comparacin no es falso para ningn valor de la columna, pero es
nulo para alguno de esos valores, el test ALL devuelve valor nulo.
Ejemplo con BDVENTAS:
SELECT OFICINA, CIUDADFROM OFICINAS
Top Related