You are on page 1of 196

Ing.

Danny Omar Macario

Programacion

Manual SQL Server 2000

1

Ing. Danny Omar Macario

Programacion

SQL SERVER – DESCRIPCIÓN DEL ENTORNO Y CREACIÓN DE BASES DE DATOS ........................................................................................................... 5
Introducción a SQL Server 2000 .................................................................................................................5 Ediciones e Instalación de SQL Server .......................................................................................................9 Ediciones SQL Server 2000........................................................................................................................9 Instalaci n de SQL Server ........................................................................................................................11 Alguna edición de Windows 2000 Server ..................................................................................................11 Server y client tools......................................................................................................................................12 Pasos !ara la instalaci n so"re #indo$s %& Server ..........................................................................12 'eri(icar la instalaci n de SQL Server................................................................................................22 odos de autenticar las cuentas de los usuarios ......................................................................................2! I%I)IO DE SESI*%.................................................................................................................................2+ "ara #odi$icar la autenticación realice los siguientes %asos& .................................................................2! ,suarios de -ase de Datos ........................................................................................................................0 /oles !or Servidor ................................................................................................................................2 '(creator ......................................................................................................................................................)2 /oles !or -ase de Datos ........................................................................................................................

BASES DE DATOS DE SQL SERVER ............................................................. 34
*(+etos de una ,ase de 'atos.....................................................................................................................).reación de ,ase de 'atos ..........................................................................................................................)/ P0ginas y e1tensiones ...........................................................................................................................2 3rc4ivos y gru!os de arc4ivos (5sicos de la "ase de datos .................................................................60 3rc4ivos de /egistro 7LO8 de &ransacciones9 ..................................................................................61 )reaci n de -ase de Datos ..................................................................................................................62 Desde el 3sistente ...........................................................................................................................62 Desde el 3dministrador Em!resarial ..............................................................................................62 Desde el 3nali:ador de )onsultas ..................................................................................................;1 <Qui=nes !ueden crear "ases de datos> ..........................................................................................;6 E?em!los de creaci n de "ase de datos em!leando el 3nali:ador de )onsultas ...........................;6 )reando M@lti!les 3rc4ivos ...........................................................................................................;A /enom"rando -ase de Datos ..........................................................................................................+.

CREACIÓN DE TABLAS................................................................................... 65
0e#as& ...........................................................................................................................................................!5 0i%os de 'atos de SQL Server 2000 ..........................................................................................................!! ,tili:ar datos "inarios ...............................................................................................................................++ &i!os de datos de(inidos !or el usuario ...............................................................................................A0 E#%leo de .o#andos ''LL 1'ata 'e$inition Language2 ...................................................................../) &a"las del Sistema ....................................................................................................................................A. 0a(las del 3suario ......................................................................................................................................./) Permanentes ..............................................................................................................................................A6 &em!orales ................................................................................................................................................A6

Manual SQL Server 2000

2

Ing. Danny Omar Macario

Programacion

.reación de ta(las......................................................................................................................................../)onsideraciones al crear ta"las.................................................................................................................A6 Modi(icaci n de la estructura de las ta"las ..............................................................................................A9 'alores autogenerados !ara las columnas................................................................................................22 Pro!iedad Identity ................................................................................................................................22 Bunci n %E#ID y Datos de ti!o ,%IQ,EIDE%&IBIE/..................................................................2. Eliminaci n de ta"las ...........................................................................................................................2. Im!lementar /estricciones .......................................................................................................................2; De(inir restrincci n P/IM3/C DEC .................................................................................................2A De(inir BO/EI8% DEC )onstraint ....................................................................................................29 De(inir )EE)D )O%S&/3I%& ..............................................................................................................90 Im!lementar DEB3,L& )O%S&/3I%&S..............................................................................................91

DIAGRAMA DE BASE DE DATOS ................................................................... 94 RECUPERAR INFORMACIÓN.......................................................................... 97
*(+etivos& ......................................................................................................................................................9/ 0e#as& ...........................................................................................................................................................9/ Select .........................................................................................................................................................9A Insert ........................................................................................................................................................10; ,!date .....................................................................................................................................................10; Delete ......................................................................................................................................................10+ 4ecu%erar in$or#ación de dos o #5s ta(las 16oins2 ..............................................................................10/ 'esencadenadores ......................................................................................................................................110 Asignar 4oles y7o "er#isos 8 .o#andos 'cl 1'ata .ontrol Language2 ............................................112 E6E4.I.I*S "4*"3ES0*S .................................................................................................................119

IMPLEMENTAR VISTAS Y PROCEDIMIENTOS ALMACENADOS.............. 1 !
:Qu; es una vista<......................................................................................................................................129 Agregar= odi$icar y Eli#inar una >ista ...............................................................................................1)0 )rear 'istas .............................................................................................................................................1.0 Modi(icar 'istas......................................................................................................................................1.6 Eliminar 'istas........................................................................................................................................1.+ "rocedi#ientos Al#acenados...................................................................................................................1)9 )rearF Modi(icar y Eliminar un Procedimiento 3lmacenado ................................................................1.9 )rear Procedimientos 3lmacenados..................................................................................................1.9 Modi(icar Procedimientos 3lmacenados ..........................................................................................16; Eliminar Procedimientos 3lmacenados.............................................................................................16+ ?unciones en SQL Server 2000 11722 .......................................................................................................1-/ &i!os de (unciones ..................................................................................................................................16A Bunciones Escalares ...........................................................................................................................16A Bunciones de ta"la en l5nea ................................................................................................................162 Las (unciones de ta"la de multi sentencias........................................................................................162 Llamando Bunciones ...............................................................................................................................169 Limitaciones ............................................................................................................................................169 )olumnas com!utadas ............................................................................................................................169

Manual SQL Server 2000

.

................tili:ar datos te1t e image ...................tili:ar (unciones matem0ticas ................1+2 )om!araci n de SO.....15) ..............................................................................................12....................................................................................................................................................................................... Danny Omar Macario Programacion GLOSARIO ............................................................................................................................................................................................................190 ...............................................................................................................................................................................................................................................................................................................+ Bormato de cadena sin se!arar.......................................................................................................................1!2 ...........9 .....................................................tili:ar S&..............................................................................tili:ar (unciones del sistema................................................................................................................. O!eradores "inarios .....tili:ar constantes en &ransactGSQL ...........................tili:ar las (unciones e1!onenciales PO#E/ y EHP .......................................................................................................................................................................................................................120 El !ar0metro estilo ...............................................................................................................................................................................................................................................................................tili:ar S&/ .........%DEH y DIBBE/E%)E ................tili:ar (unciones trigonom=tricas ...................1A..................1....1A2 3&3% F 3&%2F &3% y )O& ............................................................................................................. .....................................................1A.............................................1.............................................19) .................. Bormato num=rico de (ec4a ..........tili:ar comentarios.................................................................................... Bunciones Iue devuelven identi(icadores y nom"res de usuarios ..............................................1A6 )om!araci n de D3&EP3/& y D3&E%3ME .......................................................................................1A.................................................................................1A0 .............................................................................................tili:ar o!eradores en e1!resiones..............................................................................tili:ar 8E&D3&E ...1++ )om!araci n de )E3/I%DEH y P3&I%DEH .......................................tili:ar datos de (ec4a y 4ora .........................................................................................................................................................................tili:ar datos c4ar y varc4ar.........................................................1...........................1+9 ....................tili:ar datos decimalF (loat y real................1++ .................................................................................................................. ............................1A...................LL..............................1....................................................12+ O!erador de concatenaci n de cadenas ....................................1A2 3SI% y SI% ............1AA O"tener nom"res de usuario de "ase de datos o identi(icadores de usuario.........................................................................................................................................................................................................1A........1A2 /3DI3%S .............................................................................................................................................12+ O!eradores de com!araci n.............................................tili:ar las (unciones te1tF nte1t e image ...............................................................................................1.............................1.................................................................................tili:ar datos (loat y real ..................................1+0 ....6 Bormato al(a"=tico de las (ec4as ...........................................................................1+A .........................................126 O!eradores aritm=ticos ..............................................1A........................1+1 .............................................................................................................................................................................................................................190 Manual SQL Server 2000 6 ...............tili:ar )onstantes........................................................................1...........tili:ar (unciones de cadena.........................1A+ O"tener identi(icadores o cuentas de inicio de sesi n .......... E@%resiones ..............................................................................................................tili:ar S.......tili:ar datos enteros ...................1+0 ...............................................................................1A6 ........................................9 ....................... Bunciones de (ec4a..........................................................................................1+...............................................2 ..................................................................1................................................1A1 3)OS y )OS .......... 151 REFERENCIA DEL TRANSACT"SQL ................................... ..1A9 Bunciones de conversi n..................Ing...................BB ........................................................................................................................... )om!araci n de )EILI%8 y BLOO/ ...................12..................................................tili:ar /3%D ..........................................1.................................................................................................................. 153 0I"*S 'E >AL*4 ...................................................A Bormato datetime de OD-) ...................................................................................................................................................A Bormatos de 4ora..................................................... ..................................1+2 ?unciones ....................................................1A2 DE8/EES ......................................................................1A............................................................-S&/I%8 .................1+2 ...........................................................................122 'alores %....... )om!araci n de D3&E3DD y D3&EDIBB .................................................................................................. )om!araci n de LO8 y LO810........................................1+6 ...................129 iscelaneo..........................................................................................

.................... ................................................................................................................................................................192 Manual SQL Server 2000 ........................... Danny Omar Macario Programacion UPDATE Products ...........Ing.............................tili:ar !ala"ras clave reservadas ...................................................................192 ................................192 Sin nimos.............

# D1./& O23#. Danny Omar Macario Programacion SQL S#$%#$ – D#&'$()'(*+ .#.P$/'#&&(+78 Son "ases de datos Iue almacenan grandes cantidades de datos Iue sirven !ara la toma de decisionesF como !or e?em!lo las a!licaciones de an0lisis de ventas. • OLAP 6O+L(+# A+1-0. SQL Server 2000 o(rece el so!orte de in(ormaci n !ara las tradicionales a!licaciones )lienteLServidorF las cuales est0n con(ormadas !or una inter(a: a trav=s de la cual los clientes acceden a los datos !or medio de una L3%./$+/ 0 C$#1'(*+ .Ing.(/+ P$/'#&&(+78 Son "ases de datos caracteri:adas !or mantener una gran cantidad de usuarios conectados concurrentemente reali:ando ingreso yLo modi(icaci n de datos.(%/&4 • • • • Entender Iue es SQL Server /eIuisitos de Eard$are y So(t$are Seguridad )rear "ases de datos T#51&4 • • • • • • Introducci n a SQL Server Ediciones de SQL Server Instalaci n de SQL Server Modos de autenti(icar las cuentas de los usuarios -ases de Datos de SQL Server )reaci n de -ases de Datos Introducción a SQL Server 2000 SQL Server 2000 es un sistema de gesti n de "ases de datos relacionales 7S8D-/ o /D-MSJ /elational Data"ase Management System9 diseKado !ara tra"a?ar con grandes cantidades de in(ormaci n y la ca!acidad de cum!lir con los reIuerimientos de !roceso de in(ormaci n !ara a!licaciones comerciales y sitios #e". Por e?em!lo J entrada de !edidos en l5neaF inventarioF conta"ilidad o (acturaci n. SQL Server 2000 est0 diseKado !ara tra"a?ar con dos ti!os de "ases de datos J • OLTP 6O+L(+# T$1+&1'. La 4oy emergente !lata(orma %E& e1ige un gran !orcenta?e de distri"uci n de recursosF descone1i n a los servidores de datos y un entorno descentrali:adoF !ara ello sus clientes de"en ser livianosF tales como los navegadores de Internet los cuales acceder0n a los datos !or medio de servicios como el Internet In(ormation Services7IIS9.('1. Manual SQL Server 2000 + .# B1&#& .E+.

./& $#-1'(/+1-#&9 las cuales est0n "asadas en la a!licaci n de la teor5a matem0tica de los con?untos al !ro"lema de la organi:aci n de los datos./& re!resenta el em!leado cuyo Id. Las ta"las est0n com!uestas de columnas y (ilas 7atri"utos y tu!las en la teor5a relacional9. . Los entornos )lienteLServidorF est0n im!lementados de tal (orma Iue la in(ormaci n se guarde de (orma centrali:ada en un com!utador central 6&#$%(. La teor5a de las "ases de datos relacionales de(ine un !rocesoF la normali:aci nF Iue asegura Iue el con?unto de ta"las de(inido organi:ar0 los datos de manera e(ica:. Manual SQL Server 2000 A . Por e?em!loF una (ila de la ta"la E5)-#1./& tendr5a columnas !ara el nom"reF el a!ellidoF c digo del em!leadoF de!artamentoF categor5a la"oral y cargo.na ta"la re!resenta una clase de o"?eto Iue tiene im!ortancia !ara una organi:aci n. En una "ase de datos relacionalF los datos est0n organi:ados en ta"las 7llamadas relaciones en la teor5a relacional9.# . Del lado clienteF este corre t5!icamente en distintas com!utadoras las cuales acceden al servidor a trav=s de una a!licaci nF !ara reali:ar la solicitud de datos los clientes em!lean el S.1.:$#. de em!leado es 12. Danny Omar Macario Programacion SQL Server !uede e?ecutarse so"re redes "asadas en #indo$s Server as5 como sistema de "ase de datos de escritorio en m0Iuinas #indo$s %& #orMstationF #indo$s Millenium y #indo$s 92.6. 3l organi:ar los datos en ta"lasF se !ueden encontrar varias (ormas de de(inirlas. Por e?em!loF se !uede tener una "ase de datos con una ta"la !ara em!leadosF otra !ara clientes y otra !ara !roductos del almac=n. La ta"la E5)-#1. E1isten muc4as (ormas de organi:ar la in(ormaci n !ero una de las (ormas m0s e(ectivas de 4acerlo est0 re!resentada !or las 21&#& .$:'.Ing./$89 siendo el servidor res!onsa"le del mantenimiento de la relaci n entre los datosF asegurarse del correcto almacenamiento de los datosF esta"lecer restricciones Iue controlen la integridad de datosF etc. )ada (ila re!resenta una instancia del o"?eto re!resentado !or la ta"la. Q:#$0 L1+7:17# 6SQL8F este lengua?e tiene un con?unto de comandos Iue !ermiten es!eci(icar la in(ormaci n Iue se desea recu!erar o modi(icar.

Ing. So!orte !ara a!licacionesF SQL Server "rinda a las a!licaciones clientes la !osi"ilidad de acceder a los datos a trav=s de un lengua?e denominado &ransactGSQLF asimismo es im!ortante mencionar Iue a4ora e1iste un so!orte !ara devolver la in(ormaci n en (ormato HML. Danny Omar Macario Programacion SQL Server incluye un con?unto de 4erramientas Iue (acilitan la instalaci n y administraci n del servidor as5 como un con?unto de 4erramientas Iue (acilitan el diseKo e im!lementaci n de "ase de datosF entre ellos !odemos mencionarJ • SQL Server 2000 Database EngineF diseKado !ara almacenar detalladamente los registros de las o!eraciones transaccionales 7OL&P9F este motor es res!onsa"le de mantener la seguridad de los datosF !roveer un adecuado nivel de tolerancia a (allosF o!timi:ar las consultasF em!lear adecuadamente los "loIueos de recursos !ara o!timi:ar la concurrenciaF etc. Manual SQL Server 2000 2 . • SQL Server 2000 Analysis ServicesF !rovee 4erramientas !ara consultar in(ormaci n almacenada en data warehouses y data martsF como !or e?em!lo cuando se desea o"tener in(ormaci n totali:ada acerca de los niveles de ventas mensuales !or regiones de ventasF etc.

Meta Data ServicesF son un con?unto de servicios Iue !ermiten almacenar in(ormaci n acerca de las "ases de datos y a!licaciones clientes Iue las em!leanF esta in(ormaci n es a!rovec4ada cuando se reIuiere intercam"iar con otras a!licaciones. Entre los com!onentes adicionales de SQL Server 2000F !odemos mencionarJ • Data 'rans(ormation ServicesF !ermite recu!erar in(ormaci n de un origen de datosF reali:ar trans(ormaciones sencillas o com!le?as 7como totali:aci n de datos9 y almacenarlos en otro origen de datosF como una "ase de datos SQL o un cu"o multidimensional. 3dem0s de ello cuenta con la documentaci n a!ro!iada !ara !oder o"tener in(ormaci n detallada de cada uno de los t !icos de SQL Server. Por e?em!loJ NList all customersOF NEo$ many "lue dress $ere sold in 2001>OF etc. SQL Distributed Management Objects SQL!DMO" 3PI Iue "rinda un con?unto de o"?etos )OM Iue enca!sulan toda la (uncionalidad administrativa del motor de datos. 2. $indows Management %nstrumentation $M%"& es una 3PI orientada a o"?etos Iue !ermite administrar a!licaciones scri#ts !ara monitorearF con(igurar y controlar los serviciosF recursos y a!licaciones de #indo$s. /e!licaci nF se !uede distri"uir la in(ormaci n a trav=s de un mecanismo de re!licaci n con la (inalidad de o!timi:ar el rendimiento o de mantener autonom5aF mientras una co!ia de la in(ormaci n almacenada en di(erentes com!utadoras mantengan sincroni:aci n. Los Meta Data Services !roveen tres est0ndaresJ Meta Data Coalition Open Information Model (MDC OIM)F Inter(aces )OM y XML Encoding. SQL Server o(rece una 3PI Iue devuelve la in(ormaci n del motor de datos y de todas sus instanciasF esta 3PI se denomina SQL Server 2000 #MI. Decision Su##ort Objects DSO" 3PI Iue "rinda un con?unto de o"?etos )OM Iue enca!sulan las (uncionalidades de los SQL Server 2000 3nalysis Services.Ing. Danny Omar Macario Como soporte para las aplicaciones clientes tenemos: Programacion 1. • English QueryF !rovee de un sistema Iue !ermite a los usuarios !lantear una !regunta en lengua?e natural en lugar de em!lear un (ormato &ransactGSQL.. Manual SQL Server 2000 9 . .

. • E&.1$F ideal !ara a!licaciones Iue necesiten "rindar in(ormaci n a gru!os de tra"a?os o de!artamentos dentro de una organi:aci n.('(/+#& SQL S#$%#$ .<+. SQL Server 2000 está disponible en seis diferentes versiones además en cualquier edición se incluye el SQL Server 2000 Des)to# Engine: • E+. Esta edici n es !ara em!resas Iue im!lementan medianas y grandes "ases de datosF las cuales "rindan recursos a soluciones $e"F organi:aciones con un alto 5ndice de tra"a?o transaccionalF y so!orte !ara data warehouse. Danny Omar Macario )om!onentes de SQL Server 2000 Programacion Ediciones e Instalación de SQL Server E.. Entre las características más saltantes que no se encuentran disponibles para el motor relacional podemos mencionar: )lustering Log S4i!!ing 'istas inde1adas Manual SQL Server 2000 10 .#$)$(&#F so!orta todas las caracter5sticas de SQL Server 2000.Ing.

/>& CE E. • =(+. D#&?. Esta edici n s lo esta licenciada !ara desarrollo y !rue"a de los sistemas.(/+F es em!leado !ara almacenar in(ormaci n en dis!ositivos #indo$s )E.(/+F so!orta todas las caracter5sticas de SQL Server 2000F adem0s de un con?unto de 4erramientas gr0(icas !ara la con(iguraci n de idiomasF esta es una edici n s lo !ara desarrolladores Iue em!lean SQL Server como su origen de datos. Danny Omar Macario Programacion Entre las características más destacadas que no se encuentran disponibles para los servicios de análisis: De(inici n de cu"os !articionados )u"os OL3P enla:ados So!orte !ara dimensiones /OL3P )eldas calculadas "ersonalF so!orta todas las caracter5sticas del SQL Server 2000 Standard EditionF e1ce!to la re!licaci n transaccionalF !ara lo cual s lo !uede ser de(inido como un suscri!torF adem0s de esto tam!oco se encuentra dis!oni"le el (ull te1t searc4 cuando se instala so"re #indo$s Me y #indo$s 92.#$)$(&# E%1-:1.(.)E Provider. • D#%#-/)#$ E. Ser suscri!tor en una re!licaci n de ti!o merge.)E 3PIs en #indo$s )E versiones dis!oni"les !ara 'isual -asic y 'isual )PP. Los dispositivos !indo"s CE pueden conectarse a la red empleando #emote $ata %ccess &#$%' característica de SQL Server CE para: )onectarse a instancias de SQL Server de di(erentes !lata(ormas E?ecutar sentencias SQL y colocarlas en un recordset Modi(icar la in(ormaci n de un recordset y enviarlas a una instancia de SQL Server inclusive de di(erentes !lata(ormas. • E+.(/+ E. Est0 im!lementaci n !ermite Iue SQL Server 2000 )E so!ortar Active* Data Objects (or $indows +E ADO+E" y OLE D./) E+7(+#F es una versi n distr5"ui"le del motor de "ase de datos relacional de SQL Server 2000. Esta edici n es li"re y se !uede descargar desde el #e" aunIue s lo !odr0 e?ecutarla !or 120 d5as. • SQL S#$%#$ .(.Ing.. 3dem0s tam"i=n es !osi"le Iue m@lti!les a!licaciones !uedan com!artir al mismo tiem!o un con?unto de DLLs.(/+F so!orta todas las caracter5sticas de SQL Server 2000F a e1ce!ci n de las 4erramientas gr0(icas !ara con(iguraci n del lengua?e. Esta edici n es em!leada !ara aIuellas a!licaciones Iue no reIuieran la im!lementaci n de tareas administrativas !ara el cliente. SQL Server 2000 )E es im!lementado como un con?unto de li"rer5as 7DLLs9 Iue o!eran como un OLE D.(. de tamaKo. De"e recordar Iue las "ases de datos no de"en e1ceder los 2 8". Esta edici n !uede ser em!leada !ara a!licaciones standalone y usuarios m viles Iue reIuieran un almacenamiento local de in(ormaci n. Manual SQL Server 2000 11 ..

2() *+ &.0 o !osteriorF si desea instalar SQL Server 2000 so"re #indo$s %& en cualIuiera de sus ediciones de"e instalar !reviamente el Service PacM .Ing.*+ &)1 *+ soportado' )1 *+ .2() *+ &.1$ E%1-:1.2.<+. 3simismo tenga en cuenta la siguiente ta"laF !ara !oder determinar el es!acio en disco reIuerido !ara su instalaci nJ Manual SQL Server 2000 12 .*+ recomendado &)1 *+ soportado' .2.2..2./) E+7(+# Alguna 2() *+ &.*+ recomendado &)1 *+ soportado' /5% /5% )1 *+ 42 *+ /5% /5% )1 *+ )1 *+ /5% /5% /5% /5% /5% /5% )1 *+ /5% /5% 42 *+ 42 *+ 42 *+ )omo so(t$are tener en cuenta Iue !ara instalar SQL Server 2000 se reIuiere de Internet E1!lorer .2..1-1'(*+ .0 D#&?. Danny Omar Macario Programacion I+&.2.*+ recomendado &)1 *+ soportado' .una edición de !indo"s /0 120 Server con S3( o posterior !indo"s 2000 3rofessional !indo"s /0 120 !or6station con S3( o posterior !indo"s *E !indo"s 7.#$)$(&# E&.2() *+ &.2.(/+ D#%#-/)#$ P#$&/+1.2edición de *+ *+ *+ *+ *+ Windows 2000 soportado' soportado' soportado' soportado' soportado' Server %l.2() *+ &./ )om!utador Procesador Monitor Dis!ositivo !untero &ar?eta de red )DG/OM Intel o com!ati"le Pentium 1++ 200Q+00 Mouse O!cional 7reIuerido !ara acceso a los recursos de la red9 /eIuerido !ara la instalaci n Para determinar correctamente el reIuerimiento de memoriaF em!lear la siguiente ta"laJ E+.0 o !osterior.# SQL S#$%#$ 3ntes de instalar SQL Server 2000 es necesario conocer cuales son los reIuisitos m5nimos !ara instalar este !roductoF el siguiente cuadro muestra los reIuerimientos !ara instalar SQL Server de acuerdo a la edici n Iue .d.2. em!leeJ R#':$&/ R#@:#$(5(#+.

7A. M.1-1'(*+ &#-#''(/+1.!ara !rogramas y arc4ivos de datos9 11.ty!ical 20 M66 M- Pasos para la instalación sobre Windows NT Server )oloIue el )D de instalaci n 3!arecer0 la siguiente !antalla Des!u=s se !resentar0 la siguiente !antallaJ Manual SQL Server 2000 1.7sistema solamente9 . Danny Omar Macario Programacion O)'(*+ .71A2 M.7sistema solamente9 6A M. M.(&'/ $#@:#$(.# I+&.0 M./ Server y client tools Instalaci n &y!ical Instalaci n m5nima Eerramientas administrativas -o3ce!tars Online 3nalysis Services Englis4 Query S lo DesMto! Engine 9.A M.0 M. .!ara el sistemaF m0s A2 M.!ara !rogramas y arc4ivos de datos9 110 M.Ing.de!endiendo de las o!ciones seleccionadas 2.G2A0 M.!ara el sistemaF m0s .1 E&)1'(/ #+ .m5nimo 120 M.

3 continuaci n a!arece una !antalla Iue le solicitar0 elegir entre una instalaci n local o una instalaci n remotaF !ulse Siguiente 7Siguiente9 en la siguiente !antallaJ Manual SQL Server 2000 16 . Danny Omar Macario Programacion 3 continuaci n a!arecer0 una ventana Iue da la "ienvenida al !roceso de instalaci nF !ulse Siguiente 7Siguiente9en la siguiente !antallaJ 1.Ing.

Danny Omar Macario Programacion Si es la !rimera ve: Iue instala SQL Server 2000 a!arecer0 la siguiente !antallaJ 2. Ingrese la in(ormaci n del usuario y !ulse Siguiente 7Siguiente9.Ing. 3ce!te las condiciones del licenciamientoJ Manual SQL Server 2000 1. .

+F !ara la instalaci n Iue estamos reali:ando seleccione Servidor y Eerramientas )liente 7Server and +lient 'ools" y luego !ulse Siguiente 7Siguiente9J Manual SQL Server 2000 1+ . Danny Omar Macario Programacion Luego de ace!tar las condiciones del licenciamiento a!arecer0 una ca?a de di0logo solicit0ndole Iue seleccione uno de los ti!os de instalaci nF !ara ello tendr0 las siguientes o!cionesJ S lo Eerramientas )liente (Client Tools only)F cuando reIuiera instalar 4erramientas clientes !ara administrar un servidor SQL Server e1istenteF as5 como tam"i=n los com!onentes de conectividad los li"ros en l5nea y o!cionalmente los e?em!los. Servidor y Eerramientas )liente (Server and Client Tools)F selecciona esta o!ci n cuando reIuieras instalar un servidor SQL Server 2000F el cual de"a contar con todas las 4erramientas.Ing. S lo )onectividad (Connectivity Only)F seleccione esta o!ci n !ara instalar las li"rer5as de conectividad !ara los clientes. Para cualIuiera de las tres o!ciones se instalar0 !reviamente MD3) 2.

Ing. Danny Omar Macario Programacion 3 continuaci n a!arecer0 una ca?a de di0logo donde es!eci(icar0 el nom"re de la instancia Iue est0 instalandoF si es la !rimera ve: En (orma !redeterminada tomar0 el nom"re del eIui!o donde se encuentra instalandoJ Manual SQL Server 2000 1A .

Programacion Luego de !ulsar Siguiente 7Siguiente9F tendr0 la !osi"ilidad de seleccionar el ti!o de instalaci n a e?ecutarF seleccione Personali:ada 7+ustom9 !ara Iue !ueda o"servar las di(erentes o!ciones Iue con(igura el instaladorF en esta !rimera !antalla se muestran los es!acios reIueridos as5 como tam"i=n las car!etas donde se almacenaran las di(erentes li"rer5as de SQL ServerJ 6. Danny Omar Macario . Luego de !ulsar Siguiente 7Siguiente9 a!arecer0 una lista Iue le !ermitir0 seleccionar los com!onentes a instalarF des!la:ar la lista )om!onentes 7+om#onents9 y activar las casillas E?em!los de ) digo 7+ode Sim#les9J Manual SQL Server 2000 12 .Ing..

Inmediatamente se le solicitar0 una cuenta !ara los serviciosF si se encuentra tra"a?ando en un entorno de redF asigne una cuenta de un usuario Iue !ertene:ca al gru!o 3dministradores 7Administrators9 del DominioJ Seleccione el modo de autenti(icaci n !ara acceder a SQL Server 2000J Manual SQL Server 2000 19 . Danny Omar Macario Programacion ..Ing.

Ing. Danny Omar Macario Programacion 3 continuaci n !odr0 determinar el con?unto de caracteres con los cuales tra"a?ar0F asimismo !odr0 determinar si las consultas distinguir0n o no las may@sculas de las min@sculas 3ctivar las li"rer5as de red de acuerdo a los usuarios Iue tendr0 su origen de datosJ Manual SQL Server 2000 20 .

inish9 !ara (inali:arJ Manual SQL Server 2000 21 . Luego de !ulsar Siguiente 7Siguiente9 a!arecer0 una !antalla indic0ndole Iue se 4a com!letado el tra"a?o de recolecci n de in(ormaci nF !ulse Siguiente 7Siguiente9 !ara iniciar el co!iado de arc4ivosJ A. 3l com!letar la instalaci n se muestra la siguiente !antallaF !ulse Binali:ar 7.Ing. Danny Omar Macario Programacion +.

Danny Omar Macario Programacion Manual SQL Server 2000 22 .Ing.

$1&#C1B TI USelect )ategory%ame Brom %ort4$ind.o con el si. . Danny Omar Macario Programacion Verificar la instalación de SQL Server 8na ve9 finali9ada la instalación debe revisar la instalación para cerciorarse que el producto se :a instalado correctamente para ello puede mostrar el %dministrador de Servicios &Service Manager' que le permitirá mostrar el estado de los servicios este utilitario tiene el si.A:&:1$(/B TPA'/+.#$B #eemplace el te=to en ne.rita por los valores adecuados2 El resultado será: Manual SQL Server 2000 2.uiente aspecto: <tra de las formas de verificar el estado de la instalación es :aciendo pruebas con las sentencias a nivel del símbolo del sistema que ofrece SQL Server como es el caso del utilitario <SQL para comprobar su funcionamiento abra una ventana del sistema y di..)ategoriesU A):-&# E+.Ing./$B G.uiente aspecto: Se.ite el si.uiente comando: )JRSosIl TSAS:&:1$(/%(.uidamente observará una ca.a de diálo.

seleccione Programas (Programs).#$B Programacion Otra manera de poder verificar la instalación de SQL Server es revisar los servicios que se cargan.uientes servicios se encuentren iniciados: MSSQL Server &ste servicio es el motor de base de datos.ro"s affected' 1S Iuit A):-&# E+.Ing. para ello presione el botón del menú Inicio (Start). este es el componente que procesa todas las sentencias del "ransact'SQL # administra todos los arc$ivos que comprometen las bases de datos del servidor. como por e)emplo prevenir que los usuarios modifiquen la misma información al mismo Manual SQL Server 2000 26 .ory/ame >>>>>>>>>>>>>>> +evera.es Condiments Confections $airy 3roducts ?rains5Cereals *eat53oultry 3roduce Seafood &. entre sus principales funciones podemos mencionar% • La asignación de recursos del servidor entre múltiples usuarios concurrentes( • Previene los problemas lógicos. erramientas !dministrativas (!dministrative "ools) # $aga clic en Servicios (Services)% Compruebe que los si. Danny Omar Macario Cate.

Danny Omar Macario • tiempo( !segura la consistencia e integridad de datos( Programacion Manual SQL Server 2000 2. .Ing.

ticamente( • Puede enviar correos electrónicos.cter creando /ndices para facilitar estas consultas( !dem. puede indicar la e)ecución de una tarea cuando una alerta ocurre( MS DTC Permite incluir múltiples or/genes de datos en una transacción. Danny Omar Macario Programacion SQL Server Agent &ste servicio traba)a )unto al *SSQL Server para crear # administrar !lertas.Ing. # si en caso estos cambios causaran un error des$acer todos( Microsoft Search &ste es un servicio opcional # se encarga de reali+ar búsquedas sobre información tipo car. ingresar a la consola de administración de SQL Server denominada !dministrador 0orporativo (!dministrador &mpresarial). "areas (locales o multiserver) # Operadores( &ntre sus principales funciones podemos mencionar% • Las alertas proveen información acerca del estado de un proceso.s de ello podr. se encarga de coordinar # asegurar que las actuali+aciones sobre todos los servidores sean permanentes.-ito o fracaso( • &ste servicio inclu#e un motor que permite crear tareas # programarlos para que se e)ecuten autom. para ello siga la siguiente secuencia% 3 continuaci n tendr0 la inter(a: del 3dministrador )or!orativo 73dministrador Em!resarial9F tal como lo muestra la siguiente re!resentaci nJ Manual SQL Server 2000 2+ . como por e)emplo indicar cuando finali+o una tarea con .

Danny Omar Macario Programacion Manual SQL Server 2000 2A .Ing.

resa al sistema operativo2 Para modificar la autenticación realice los siguientes asos! . Danny Omar Macario Programacion Modos de autenticar las cuentas de los usuarios SQL Server valida a los usuarios en dos niveles de seguridadJ una a trav=s de un Inicio de sesi n Iue esta"lece el 4ec4o de reali:ar la cone1i n a SQL Server y otro a !artir de la validaci n de los !ermisos Iue tienen los usuarios so"re una "ase de datos.a clic derec:o sobre el servidor en el menB conte=tual :a. =(+./>& NT es cuando una cuenta o .rupo de !indo"s /0 controla el acceso a SQL Server el cliente no provee usuario y contrase@a ya que se empleará la cuenta con la que se in. INICIO DE SESIÓN &odos los usuarios de"en tener un Inicio de sesi n !ara !oder conectarse a SQL ServerF !ara esto SQL Server reconoce 2 mecanismos de autenti(icaci nJ SQL Server es cuando el usuario de"e !roveer de un usuario y una contraseKa Iue ser0n validados !or el !ro!io SQL Server cuando el cliente intente conectarse.a clic sobre la opción 3roperties2 Manual SQL Server 2000 22 .Ing. Aa.

Seleccione NS lo #indo$sO cuando los datos estar0n dis!oni"les s lo a los em!leados de la organi:aci n.Ing. !odr0 de(inir sus Inicios de sesi n de acceso a SQL ServerF !ara ello realice la siguiente secuencia desde el 3dministrador Em!resarialJ E1!anda la car!eta Seguridad del 3dministrador Em!resarial y 4aga clic derec4o so"re Inicios de sesi n Manual SQL Server 2000 29 .a de diálo.a clic sobre la fic:a S#7:$(. Eec4o esto .d.o :a.1. En cualIuiera de los dos casos de"e !ulsar 3ce!tarF es!ere !or un instante mientras SQL Server 2000 detiene los servicios y los vuelve a iniciar !ara 4acer e(ectivos los cam"ios.uiente pantalla: Seleccione la o!ci n NSQL Server y #indo$sO cuando desee "rindar servicios de in(ormaci n a terceros !or e?em!lo a usuarios de internet. se presentará la si. Danny Omar Macario Programacion 2 En la ca.

Pulse 3ce!tar al (inali:ar. Manual SQL Server 2000 . Danny Omar Macario Programacion 3!arecer0 la siguiente ca?a de di0logoJ En la (ic4a 3cceso a "ase de datos !odr0 es!eci(icar Iue el Inicio de sesi n se de(inir0 como usuario de alguna de las "ases de datos e1istentes.0 .Ing.

Danny Omar Macario Programacion La creaci n de Inicios de sesi n tam"i=n es !osi"le desde el 3nali:ador de )onsultasF Iue es una 4erramienta a la cual accesamos a !artir de la siguiente secuenciaJ O"servar0 el siguiente entornoJ Manual SQL Server 2000 .Ing.1 .

Ing. Danny Omar Macario

Programacion

34ora Iue conocemos el entorno !odemos digitar las siguientes sentencias !ara !oder crear un nuevo Inicio de sesi nJ
/* Activar Base de datos */ Use Master GO /* Crear nuevos login */ Sp_Addlogin ‘mhidalgo’ ‘mhidalgo’ GO Sp_Addlogin ‘Usuario!"’ ‘contrase#a’ GO /* Compro$ar la creaci%n del nuevo login */ Select &ame 'rom S(slogins GO

NOTA4 S# ):#,#+ '/-/'1$ '/5#+.1$(/& #5)-#1+,/ 6""8 1- D(+1- ,# :+1 &#+.#+'(19 )#$/ &( ,#&#1 .#+#$ :+ 7$:)/ ,# D(-1& '/5#+.1,1& #5)-## -/& ,#-(5(.1,/$#& 6EF ..... FE8

U&:1$(/& ,# B1&# ,# D1./&

,na de las tareas comunes al administrar SQL Server es !ermitir el acceso a "ases de datos y la asignaci n de !ermisos o restricciones so"re los o"?etos Iue con(orman una "ase de datos. SQL Server 2000 !ermite tra"a?ar a nivel de 4oles y 3suarios.

Manual SQL Server 2000

.2

Ing. Danny Omar Macario

Programacion

,n rol es un con?unto de derec4os asignadosF los cuales se convierten en una gran alternativa !ara agru!ar un con?unto de !ermisosF de tal (orma Iue cuando se incor!ore un nuevo usuario a la "ase de datosF ya no se le tiene Iue dar !ermiso !or !ermiso !or cada uno de los o"?etos Iue reIuiera em!learF sino mas "ien su cuenta de usuario es agregada al rolF y si al rol tiene Iue asign0rsele acceso so"re un nuevo elemento autom0ticamente el !ermiso o la restricci n a(ectar0 a los usuarios Iue !ertene:can a un rol. Los :&:1$(/& re!resentan los usuarios Iue tienen acceso a la "ase de datos y est0n ma!eados a un Inicio de sesi nF aunIue !ueden tener di(erente identi(icadorF !or e?em!lo el Inicio de sesi n !uede tener como nom"re Vca"rera !ero al de(inir un ,suario !odemos usar Vorge. Des!u=s de Iue se crearon los Inicios de sesi n !ara conectarse a SQL ServerF se de"en de(inir los accesos a las "ases de datos reIueridasF !ara ello es necesario de(inir ,suarios en cada -DF estos usuarios !ermitir0n controlar el acceso a los distintos o"?etos incluyendo los datos Iue estos contienen. Para ello realice el siguiente !rocesoJ E1!anda la "ase de datos donde desea de(inir al nuevo usuario y 4aga clic derec4o so"re la car!eta ,suarios

Seleccione un Inicio de sesi n de la lista y !ulse 3ce!tar.

Manual SQL Server 2000

..

Ing. Danny Omar Macario

Programacion

&am"i=n es !osi"le reali:ar esta tarea desde el 3nali:ador de )onsultas !ara ello em!lee la siguiente secuencia de instruccionesJ
Use &orth)ind GO Sp_Grant*BAccess ‘Usuario!"’ GO

3dem0s de los Inicios de sesi n y usuarios SQL Server "rinda un con?unto de roles !or servidor y !or "ase de datos Iue son derec4os !rede(inidos Iue !odr0n es!eci(icarse !or cada usuario de ser necesario. &am"i=n es !osi"le crear roles !ersonali:ados. Los roles son los siguientesJ
Roles por Servidor R/D#&'$()'(*+

"#creator DisMadmin Processadmin Security3dmin Serveradmin Setu!admin Sysadmin

)rea y modi(ica "ases de datos. 3dministra los arc4ivos de datos. 3dministra los !rocesos de SQL Server. 3dministra los Inicios de sesi n. O!ciones de con(iguraci n del servidor. Instala la re!licaci n. /eali:a cualIuier actividad.

Manual SQL Server 2000

.6

Danny Omar Macario Roles por Base de Datos R/D#&'$()'(*+ Programacion !u"lic d"Wo$ner d"Waccessadmin d"Wddladmin d"WSecurity3dmin d"W"acMu!o!erator d"Wdatareader d"Wdata$riter d"Wdenydatareader d"Wdenydata$riter Mantiene los !ermisos En (orma !redeterminada !ara todos los usuarios. /eali:a cualIuier actividad en la -D 3grega o retira usuarios yLo roles 3gregaF modi(ica o elimina o"?etos 3signa !ermisos so"re o"?etos o so"re sentencias -acMu! y /estore de la "ase de datos Lee in(ormaci n desde cualIuier ta"la 3gregaF modi(ica o elimina datos %o !uede leer la in(ormaci n %o !uede modi(icar la in(ormaci n Manual SQL Server 2000 ..Ing. .

inas vacías2 5&.#5).+ .el resto de la nueva base de datos se llena con pá.$(2:.naciones de arc:ivos los parámetros de confi.enera cada ve9 que arranca SQL Server2 Se emplea para las tablas temporales creadas e=plícitamente por los usuarios para las tablas de traba.o intermedias de SQL Server durante el procesamiento y la ordenación de las consultas2 5/.uimiento de la instalación del servidor y de todas las bases de datos que se creen posteriormente2 %simismo controla las asi. Las "ases de datos del sistemaF almacenan in(ormaci n Iue !ermite o!erar y administrar el sistemaF mientras Iue las de usuario almacenan los datos reIueridos !or las o!eraciones del cliente. Danny Omar Macario Programacion B1&#& .ent para .#Se utili9a como plantilla para todas las bases de datos creadas en un sistema2 Cuando se emite una instrucción C#E%0E $%0%+%SE la primera parte de la base de datos se crea copiando el contenido de la base de datos 5/.uridad actuali9ada2 .#$ La base de datos 51&./& .uridad y tareas de duplicación asimismo solución a problemas2 La información contenida en las tablas que contiene esta base de datos es fácilmente accedida desde el %dministrador Empresarial así que se debe tener cuidado de modificar esta información directamente a menos que se cono9ca muy bien lo que se esta :aciendo2 D(&.2 Es una base de datos temporal fundamentalmente un espacio de traba.2 Es empleada por el servicio SQL Server %.#.emplo copias de se.o es diferente a las demás bases de datos puesto que se re.Ing.# D1.uardar información con respecto a tareas de automati9ación como por e.(/+ %lmacena toda la información referente a la distribución de datos basada en un proceso de replicación2 • • • • $#%etos de una &ase de "atos Manual SQL Server 2000 . Las "ases de datos del sistema sonJ • 51&.#$ se compone de las tablas de sistema que reali9an el se.# SQL S#$%#$ SQL Server so!orta "ases de datos del sistema y "ases de datos del usuario.uración que afectan al sistema las cuentas de inicio de sesión2 Esta base de datos es crítica para el sistema así que es bueno tener siempre una copia de se.

)ada columna re!resenta un dato aislado y en "ruto Iue !or s5 solo no "rinda in(ormaci nF !or lo tanto estas columnas se de"en agru!ar y (ormar una (ila !ara o"tener conocimiento acerca del o"?eto tratado en la ta"la.Ing. De esta (orma si la in(ormaci n cam"ia en las ta"lasF estos cam"ios tam"i=n ser0n o"servados desde la vista. Danny Omar Macario Programacion Las T12-1& son o"?etos de la "ase de datos Iue contienen la in(ormaci n de los usuariosF estos datos est0n organi:ados en (ilas y columnasF similar al de una 4o?a de c0lculo.n P$/'#.A ./ es una serie de instrucciones SQL !recom!iladas las cuales organi:adas l gicamente !ermiten llevar a ca"o una o!eraci n transaccional o de Manual SQL Server 2000 . .Similar a ta"laF la vista muestra un con?unto de columnas y (ilas de datos con un nom"reF sin em"argoF en la vista no e1isten datosF estos son o"tenidos desde las ta"las su"yacentes a la consulta.1 es un o"?eto de(inido !or una consulta. Por e?em!loF !uede de(inir una ta"la Iue contenga los datos de los !roductos o(ertados !or una tiendaF cada !roducto estar5a re!resentado !or una (ila mientras Iue las columnas !odr5an identi(icar los detalles como el c digo del !roductoF la descri!ci nF el !recioF las unidades en stocMF etc.na V(&. Bundamental em!lean !ara mostrar la in(ormaci n relevante !ara el usuario y ocultar la com!le?idad de las consultas.(5(#+./ A-51'#+1. . Los ti%os de datos es!eci(ican Iue ti!o de valores son !ermitidos en cada una de las columnas Iue con(orman la estructura de la (ila. Por e?em!loF si desea almacenar !recios de !roductos en una columna de"er5a es!eci(icar Iue el ti!o de datos sea #oneyF si desea almacenar nom"res de"e escoger un ti!o de dato Iue !ermita almacenar in(ormaci n de ti!o car0cter. SQL Server nos o(rece un con?unto de ti!os de datos !rede(inidosF !ero tam"i=n e1iste la !osi"ilidad de de(inir ti%os de datos de usuario.

2 . .n Procedimiento almacenado siem!re se e?ecuta en el lado del Servidor y no en la m0Iuina )liente desde la cual se 4ace el reIuerimiento. .#+1. . Para e?ecutarlos de"en ser invocados e1!l5citamente !or los usuarios.#. Danny Omar Macario Programacion control. Los G+. Los V1-/$#& P$#. Las R#&. ./$ es un Procedimiento 3lmacenado es!ecial el cual se invoca autom0ticamente ante una o!eraci n de InsertF .na columna o un &i!o de dato !uede tener solamente una /egla asociada con el.Ing. Manual SQL Server 2000 .#$5(+1.!date o Delete so"re una ta"la. .('#& de SQL Server son similares a los 5ndices de un li"ro Iue nos !ermiten llegar r0!idamente a las !0ginas deseadas sin necesidad de !asar 4o?a !or 4o?aF de (orma similar los 5ndices de una ta"la nos !ermitir0n "uscar in(ormaci n r0!idamente sin necesidad de recorrer registro !or registro !or toda la ta"la.n Desencadenador !uede consultar otras ta"las y !uede incluir com!le?as instrucciones SQLF se em!lean !ara mantener la integridad re(erencialF !reservando las relaciones de(inidas entre las ta"las cuando se ingresa o "orra registros de aIuellas ta"las.$(''(/+#& son restricciones Iue se asignan a las columnas de una ta"la y son controladas autom0ticamente !or SQL Server.n D#&#+'1.n 5ndice contiene valores y !unteros a las (ilas donde estos valores se encuentran. Las /eglas son asociadas a una columna o a un ti!o de dato de(inido !or el usuario./& es!eci(ican el valor Iue SQL Server insertar0 en una columna cuando el usuario no ingresa un dato es!ec5(ico. Por e?em!loF si se desconoce el a!ellido materno de un em!leado SQL Server !odr5a incluir autom0ticamente la cadena %% !ara identi(icar este cam!o. Esto nos !rovee las siguientes venta?asJ • • Se puede asociar mBltiples constraints a una columna y tambiCn se puede asociar un constraints a mBltiples columnas2 Se pueden crear los #estricciones al momento de crear la tabla C#E%0E 0%+LE2 Los #estricciones conforman el standars %/SD para la creación y alteración de tablas estos no son e=tensiones del 0ransact SQL2 Se !uede usar un constraints !ara (or:ar la integridad re(erencialF el cual es el !roceso de mantener relaciones de(inidas entre ta"las cuando se ingresa o elimina registros en aIuellas ta"las. Las R#7-1& son o"?etos Iue es!eci(ican los valores ace!ta"les Iue !ueden ser ingresados dentro de una columna !articular.

Danny Omar Macario Programacion 'reación de &ase de "atos En t=rminos sencillos una "ase de datos de SQL Server es una colecci n de o"?etos Iue contiene y administra datos. 3ntes de crear una "ase de datos es im!ortante entender como es Iue SQL Server almacena la in(ormaci n.9 . Manual SQL Server 2000 .Ing.

del o"?eto !ro!ietario de la !0gina./ Bilas con todos los datos e1ce!to los de ti!o .#+(.#H.nación . Danny Omar Macario Programacion Páginas e!tensiones 3ntes de crear una "ase de datos con SQL Server 2000F de"emos tomar en cuenta Iue la unidad "0sica de almacenamiento en SQL Server es la pá. *apa de asi.#H. Endice Entradas de índices 0e=to o ima. e (517#.#H.ina las pá. e (517#.#H.ina7data !age9F el tamaKo de cada !ade es de 2 D-F lo cual re!resenta un total de 122 !0ginas !or cada mega"yte. El comien:o de cada !0gina es una ca"ecera de 96 20.inas2 *apa de asi.en Datos de ti!o .lobal5 *apa de asi.lobal Dnformación acerca de las e=tensiones asi.# )<7(+1 $atos C/+.#& Iue se utili:a !ara almacenar in(ormaci n de ca"ecera tal como el ti!o de !0ginaF la cantidad de es!acio li"re de la !0gina y el Id.F +.nación de Dnformación acerca de las e=tensiones utili9adas índices2 por una tabla o un índice Manual SQL Server 2000 60 .Ing. E1isten oc4o ti!os de !0ginas en los arc4ivos de datos de una "ase de datos SQL Server 2000. T()/ .F +.nación .nadas2 Secundario Dnformación acerca del espacio libre disponible en Espacio libre en la pá.

ed *ap $ifferential C:an. )onsta de 2 !0ginas contiguasF es decir +6 D-.etoF sólo el ob.ed *ap Dnformación de los e=tends modificados por operación bul6 desde el Bltimo bac6up del lo.2 Dnformación de los e=tends modificados desde el Bltimo full database bac6up2 Los arc4ivos de registro 7LO89 no contienen !0ginasF contienen series de registros. En SQL ServerF las (ilas no !ueden continuar en otras !0ginas.F +. Para 4acer Iue la asignaci n de es!acio sea e(icienteF SQL Server 2000 no asigna e1tensiones enteras a ta"las con !oca cantidad de datos.#H. Las (ilas de datos se colocan en las !0ginas una a continuaci n de otraF em!e:ando inmediatamente des!u=s de la ca"eceraF al (inal de cada !0gina se encuentra una ta"la de !osiciones de (ilas Iue contiene una entrada !or cada (ila de la !0gina y cada entrada registra la !osici nF desde el !rinci!io de la !0ginaF del !rimer "yte de la (ila.Ing.#H. SQL Server 2000 tiene dos ti!os de e1tensionesJ • • Las e=tensiones uniformes son propiedad de un Bnico ob.inas de la e=tensión2 E=tensiones mi=tas pueden estar compartidas por :asta oc:o ob. Las entradas de la ta"la de !osiciones de (ilas est0n en orden inverso a la secuencia de las (ilas de la !0gina. Las e=tensiones son la unidad "0sica de asignaci n de es!acio a las ta"las e 5ndices. Danny Omar Macario Programacion +ul6 C:an.eto propietario puede utili9ar las oc:o pá.etos2 Manual SQL Server 2000 61 . Lo cual re!resenta 1+ e1tensiones !or M-. e (517#F Iue est0n almacenados en !0ginas se!aradas. Las !0ginas de datos contienen todos los datos de las (ilas de datos e1ce!to los datos .

Ing.2 0odas las +ases de $atos tienen un arc:ivo de base de datos primario &2mdf' y uno para el Lo.nados a pá.# .# .1. Danny Omar Macario Programacion Las tablas o índices nuevos son asi.inas se pasan a e=tensiones uniformes2 "rc#ivos gr$pos de arc#ivos f%sicos de la base de datos .# $#7(&.istro que contiene la información necesaria para recuperar todas las transacciones que suceden sobre la misma2 3or convenio la e=tensión de este arc:ivo es L$G2 • • Por lo tanto al crear una "ase de datosF de"emos considerar los siguientes !remisas y reglas !ara el almacenamiento de los datosJ .1$(/& 8na base de datos puede tener cero o varios arc:ivos de datos secundarios2 3or convenio la e=tensión recomendada para los arc:ivos de datos secundarios es /$G2 A$'I(%/& . Princi!almente SQL Server divide su tra"a?o en un arc4ivo !ara datos y otro !ara el registro de las transacciones 7log9. .n arc4ivo de "ase de datos no es mas Iue un arc4ivo del sistema o!erativo.1.uimiento de todos los demás arc:ivos además de almacenar datos2 3or convenio este arc:ivo tiene la e=tensión *$G2 A$'I(%/& . de 0ransacciones &2ldf'2 %demás puede tener arc:ivos de datos secundarios &2ndf'2 Manual SQL Server 2000 62 .na "ase de datos se distri"uye en !or lo menos dos arc4ivosF aunIue es muy !ro"a"le Iue sean varios los arc4ivos de "ase de datos Iue se es!eci(ican al crear o al modi(icar una "ase de datos.$/ 6LOG8 0odas las bases de datos por lo menos tendrán un arc:ivo de re.inas de e=tensiones mi=tas2 Cuando la tabla o el índice crecen :asta el punto de ocupar oc:o pá./& )$(51$(/& 0oda base de datos tiene un arc:ivo de datos primario que reali9a el se. SQL Server 2000 !ermite los tres siguientes ti!os de arc4ivosJ • A$'I(%/& ./& &#':+.

Ing. Danny Omar Macario

Programacion

22 Cuando se crea una +ase de $atos una copia de la +ase de $atos *odel la cual incluye tablas del sistema es copiada en la /ueva +ase de $atos2 42 La $ata es almacenada en bloques de ->6ilobytes &H+' de espacio de disco conti.uo llamado pá.inas2 12 Las filas o re.istros no pueden atravesar pá.inas2 Esto es que la má=ima cantidad de datos en una fila de datos simple es de -0)0 bytes2 (2 Las tablas y los índices son almacenados en E=tents2 8n E=tents consta de oc:o pá.inas conti.uas o sea )1 H+2 )2 El Lo. de 0ransacciones lleva toda la información necesaria para la recuperación de la +ase de $atos en una eventual caída del sistema2 3or default el tama@o del Lo. de 0ransacciones es del 2(I del tama@o de los arc:ivos de datos2 8se esta confi.uración como punto de partida y a;uste de acuerdo a las necesidades de su aplicación2 "rc#ivos de Registro &L'( de Transacciones)

El LO8 de transacciones arc4iva todas las modi(icaciones de los datos tal cual son e?ecutados. El !roceso es como sigueJ
,2 8na modificación de datos es enviada por la aplicación cliente2 22 Cuando una modificación es e;ecutada las pá.inas afectadas son leídas del disco a memoria &+uffer Cac:e' provista de las pá.inas que no están todavía en la $ata Cac:e del query previo2 42 Cada comando de modificación de datos es arc:ivado en el L<?2 El cambio siempre es arc:ivado en el L<? y es escrito en el disco antes que el cambio sea :ec:o en la +ase de $atos2 Este tipo de L<? es llamado L<? de tipo "rite>a:ead2 12 8na ve9 que las pá.inas de datos residen en el +uffer Cac:e y las pá.inas de L<? son arc:ivadas sobre el disco en el arc:ivo del L<? el proceso de CAECH3<D/0 escribe todas las transacciones completas a la +ase de $atos en el disco2

Si el sistema (allaF autom0ticamente el !roceso de recu!eraci n usa el LO8 de &ransacciones !ara llevar 4acia delante todas las transacciones com!rometidas 7)OMMI&9 y llevar 4acia atr0s alguna transacci n incom!leta 7/OLL-3)D9.

Manual SQL Server 2000

6.

Ing. Danny Omar Macario

Programacion

Los marcadores de transacci n en el LO8 son usados durante la recu!eraci n autom0tica !ara determinar los !untos de inicio y el (in de una transacci n. ,na transacci n es considerada com!leta cuando el marcador -E8I% &/3%S3)&IO% tiene un marcador asociado )OMMI& &/3%S3)&IO%. Las !0ginas de datos son escritas al disco cuando ocurre el )EE)DPOI%&.
*reación de Base de Datos

Se !uede crear una "ase de datos de distintas manerasF utili:ando el #i:ardF desde el 3dministrador Em!resarial o a trav=s del Query 3nali:er.

$esde el %sistente

Ingrese al 3dministrador Em!resarial y seleccione la car!eta -ases De DatosF tal como lo muestra la (igura

Manual SQL Server 2000

66

Ing. Danny Omar Macario

Programacion

Eaga clic en el men@ Eerramientas y seleccione la o!ci n 3sistentesF e1tienda la o!ci n -ase de datos y seleccione la !rimera o!ci n 73sistente !ara creaci n de "ases de datos9F tal como lo muestra la siguiente imagenJ

Se !resentar0 una !antalla de "ienvenida al $i:ard !ulse SiguienteJ

Manual SQL Server 2000

6;

Ing. Danny Omar Macario Programacion La siguiente !antalla le !ermitir0 es!eci(icar el nom"re de la "ase de datos y las car!etas donde se almacenaran los arc4ivos de datos y de log. Luego de !ulsar SiguienteF a!arece una !antalla donde es!eci(icar0 si desea em!lear mas de un arc4ivo de datos as5 como tam"i=n !odr0 indicar el tamaKo de cada arc4ivoJ Manual SQL Server 2000 6+ .

Ing. Danny Omar Macario Programacion Luego de !ulsar SiguienteF a!arecen las o!ciones !ara !ersonali:ar el crecimiento autom0tico del arc4ivo de datosJ Luego de !ulsar Siguiente. Es!eci(iIue el nom"re !ara el arc4ivo de logJ Manual SQL Server 2000 6A .

Ing. Danny Omar Macario Programacion Similar al caso del arc4ivo de datosF luego de !ulsar SiguienteF tam"i=n !odr0 esta"lecer el crecimiento autom0tico o no del arc4ivo de transaccionesJ Luego de !ulsar SiguienteF a!arecer0 la !antalla (inalX Manual SQL Server 2000 62 .

Danny Omar Macario Programacion Pulse Binali:arF de no 4a"er !ro"lemas le a!arecer0 el siguiente mensa?eJ Luego de !ulsar 3ce!tarF a!arecer0 la siguiente !reguntaJ )onteste Iue %oF luego de lo cual en el 3dministrador Em!resarial !odr0 o"servar la nueva "ase de datos.Ing. Manual SQL Server 2000 69 .

Ing. Danny Omar Macario Programacion $esde el %dministrador Empresarial Otra (orma de crear la "ase de datos es desde el 3dministrador Em!resarialF !ara elloJ Ingrese al 3dministrador Em!resarialF 4aga clic derec4o so"re la car!eta Data"ases y seleccione la o!ci n %e$ Data"aseF tal como lo muestra la (iguraJ Luego a!arecer0 la siguiente !antallaF coloIue el nom"re de la "ase de datos y o!cionalmente !odr0 es!eci(icar el c digo de !0gina Iue em!lear0F esto lo !uede seleccionar de la lista )ollation %ameJ Manual SQL Server 2000 .0 .

Ing.1 . Danny Omar Macario Programacion Para es!eci(icar la in(ormaci n re(erente al arc4ivo de datosF 4aga un clic en la (ic4a Data Biles y com!lete la siguiente in(ormaci nJ Manual SQL Server 2000 .

Danny Omar Macario Programacion Para !oder es!eci(icar las caracter5sticas del arc4ivo de logF 4aga clic en la (ic4a &ransaction LogJ Manual SQL Server 2000 .Ing.2 .

Ing.na ve: esta"lecido los valores y luego de !ulsar 3ce!tarF en el 3dministrador Em!resarial se o"servara la nueva "ase de datos creada. 2 tama#o MA6S05. . 2 tama#o MA6S05.&AM. 2 nom$reArchivo3%gico '03. '03. Danny Omar Macario Programacion ./+0MA+1 &AM.G+O<-= 2 incrementoCrecimiento> .A-. $esde el %nali9ador de Consultas Otra de las (ormas de crear una "ase de datos es a trav=s del 3nali:ador de )onsultasF donde em!learemos la sentencia )/E3&E D3&3-3SEF cuya sinta1is reducida es la siguienteJ C+. ?n@ Manual SQL Server 2000 . '03. 2 7 tama#oM89imo : U&30M0-.G+O<-= 2 incrementoCrecimiento> . 3OG O& &AM.* . ?n@ @ . 2 4nom$reArchivoSO4 S05. &om$reBase*atos . 2 4nom$reArchivoSO4 S05. 2 nom$reArchivo3%gico '03. *A-ABAS.* .&AM. 2 7 tama#oM89imo : U&30M0-. O& ..

Este gru!o contiene todas las ta"las del sistema de "ase de datos. El !rimer arc4ivo es!eci(icado !asa a ser el arc4ivo !rinci!alF el cual contiene el inicio l gico de la "ase de datos y de las ta"las del sistema.O. Si no se es!eci(ica LO8 O%F se crea autom0ticamente un @nico arc4ivo de registro con un nom"re generado !or el sistema y un tamaKo Iue es el 2. . A''A+0 directamenteF esto de"er0 em!learlo si de"e es!eci(icar m0s de 1+ arc4ivos. La !ala"ra clave va seguida de una lista delimitada !or comas la cual de(ine las caracter5sticas de los arc4ivos de registro. . 'O+ 3OA* : 'O+ A--AC= @ Programacion A$7:5#+. ON Es!eci(ica Iue los arc4ivos de disco utili:ados !ara almacenar la !arte de datos 7arc4ivos de datos9 se 4an de(inido e1!l5citamente.1'IK. Manual SQL Server 2000 . Si no se es!eci(ica P/IM3/CF el !rimer arc4ivo enumerado en la instrucci n )/E3&E D3&3-3SE se convierte en el arc4ivo !rinci!al. En realida esto no es necesario en SQL Server A.CO33A-. FOR ATTACJ )rea la "ase de datos desde un con?unto e1istente de arc4ivos del sistema o!erativo.Y de la suma de los tamaKos de todos los arc4ivos de datos de la "ase de datos. La !ala"ra clave va seguida de una lista delimitada !or comas de elementos Iue de(inen los arc4ivos de datos del gru!o de arc4ivos !rinci!al. LOG ON Es!eci(ica Iue los arc4ivos de registro de la "ase de datos 7arc4ivos de registro9 se 4an de(inido e1!l5citamente. nom$re_collation@ . Si no se es!eci(ica ning@n nom"re l gico de arc4ivo de registroF SQL Server genera un nom"re l gico al ane1ar un su(i?o a nom"re-aseDatos. Danny Omar Macario .0 !orIue la instrucci n /ES&O/E !uede volver a crear la "ase de datos como !arte de la o!eraci n de restauraci n.2/ :&# /+-0 activada y el estado se esta"lece en UcargandoU. &am"i=n contiene todos los o"?etos no asignados a los gru!os de arc4ivos de usuario. De"e e1istir una entrada de arc4ivos Iue determine cual es el arc4ivo !rinci!alF las otras entradas son necesarias si e1isten arc4ivos creados en una ruta de acceso distinta de cuando se cre la "ase de datos !or !rimera ve: o se ad?unt !or @ltima ve:.tilice el !rocedimiento almacenado del sistema &)K1.Ing. FOR LOAD )l0usula Iue se mantiene !or com!ati"ilidad con versiones anteriores de SQL Server.2 en lugar de em!lear +.na "ase de datos s lo !uede tener un arc4ivo !rinci!al. PRIMARY Es!eci(ica Iue la lista de arc4ivos est0 asociada al gru!o !rinci!al.6 ./& Es el nom"re de la nueva "ase de datosF de"en ser @nicos en un servidor y !ueden tener 4asta 122 caracteresF a menos Iue no se es!eci(iIue ning@n nom"re l gico !ara el registro../& +/52$#B1&#D1.EA'E DA'A/ASE . La "ase de datos se crea con la o!ci n de "ase de datos .

Se !ueden utili:ar los su(i?os D. Si no se es!eci(icaF el arc4ivo aumenta 4asta Iue el disco est= lleno. FILENAME Es!eci(ica el nom"re de arc4ivo del sistema 7arc4ivo (5sico9. De no es!eci(icarse se em!lear0 el con?unto de caracteres seleccionado en el momento de la instalaci n NAME Es!eci(ica el nom"re l gico del arc4ivo. Es!eci(iIue un n@mero enteroX no incluya decimales. %o se reIuiere este !ar0metro cuando se es!eci(ica BO/ 3&&3)E. Este nom"re es el utili:ado !ara re(erenciar al arc4ivo en las sentencias del &ransactG SQL Iue se e?ecuten des!u=s. )uando este !ar0metro no es es!eci(icado !ara un arc4ivo secundario o de registro SQL Server autom0ticamente le asigna 1 M-. El tamaKo es!eci(icado se redondea al m@lti!lo de +6 D. . FILEGRO=TJ Es!eci(ica el incremento de crecimiento del arc4ivoF este valor no !uede e1ceder el valor M3HSIZE.y M-F el valor !redeterminado es M-. El tamaKo es!eci(icado !ara el arc4ivo !rinci!al de"e tener al menos el tamaKo del arc4ivo !rinci!al de la "ase de datos model. Se de"e es!eci(icar la ruta de acceso y nom"re de arc4ivo Iue el sistema o!erativo utili:a cuando crea la "ase de datos. Danny Omar Macario COLLATE Programacion Es!eci(ica el con?unto de caracteres Iue se em!lear0 !ara almacenar in(ormaci n en la "ase de datosF se !uede em!lear un con?unto de caracteres es!eci(icado !or #indo$s o !or SQL Server. .m0s cercano. SILE Es!eci(ica el tamaKo !ara el arc4ivo. El valor m5nimo a asignar es de . La ruta de acceso de"e es!eci(icar un directorio en el servidor so"re el Iue se instalo SQL Server.12 D-. UNLIMITED Es!eci(ica Iue el arc4ivo aumenta de tamaKo 4asta Iue el disco est= lleno.o YF el valor !redeterminado es M-. El valor se !uede es!eci(icar en M-F D.Ing. O"servaciones Em!lee )/E3&E D3&3-3SE !ara crear una "ase de datos y los arc4ivos Iue almacenan =sta. Em!lee un n@mero entero. %o se !uede es!eci(icar un directorio en un sistema com!rimido de arc4ivos. Si no se es!eci(ica tamaKoF el valor !redeterminado es 1 M-. De no 4acerlo SQL Server utili:a el tamaKo del arc4ivo !rinci!al de la "ase de datos model.n valor 0 indica Iue no 4ay crecimiento. )uando se es!eci(ica YF el tamaKo de incremento de crecimiento es el !orcenta?e es!eci(icado del tamaKo del arc4ivo en el momento en Iue tiene lugar el incremento.. SQL Server im!lementa )/E3&E D3&3-3SE en dos !asosJ Manual SQL Server 2000 . MAMSILE Es!eci(ica el tamaKo m01imo de crecimiento del arc4ivo. De no em!lear BILE8/O#&EF el valor !redeterminado es 10Y y el valor m5nimo es +6 D-.

2/>+#$2 Para mostrar un in(orme de una "ase de datos o de todas las "ases de datos de un servidor con SQL ServerF e?ecute &)KI#-).rese al %nali9ador de Consultas para ello primero debe especificar el tipo de autentificación a reali9ar del sistema o estándar vea la si..0A.+ ./$ !ueden agregar otros inicios de sesi n a la (unci n .5(+ y .2.istren cómo se emplea el espacio en la base de datos2 )ualIuier o"?eto de(inido !or el usuario en model se co!iar0 a todas las "ases de datos reci=n creadas.emplos de creación de base de datos empleando el %nali9ador de Consultas 3rimero in.an datos internos que re.2'$#1. E.uiente fi. En un servidor se puede especificar un má=imo de 42 J)J bases de datos2 Cuando especifica una instrucción C#E%0E $%0%+%SE nombre+ase$atos sin parámetros adicionales la base de datos se crea con el mismo tama@o que model2 Cada base de datos tiene un propietario con capacidad para reali9ar actividades especiales2 El propietario es el usuario que crea la base de datos este propietario se puede cambiar mediante &)K'I1+7#. Los miem"ros de las (unciones (i?as de servidor &0&1.2'$#1. Para o"tener un in(orme de los gru!os de arc4ivos de una "ase de datosF utilice &)KI#-)D(-#7$/:)F y utilice &)KI#-)D(-# !ara o"tener el in(orme de los arc4ivos de la "ase de datos. Los miem"ros de las (unciones (i?as de servidor &0&1.5(+ !ueden conceder !ermisos )/E3&E D3&3-3SE a otros inicios de sesi n. )ada "ase de datos nueva 4ereda los valores o!cionales de la "ase de datos model 7a menos Iue se es!eci(iIue BO/ 3&&3)E9.inas que ten.5(+ y S#':$(.Ing.inas vacías e=cepto las pá. Danny Omar Macario Programacion SQL Server utili9a una copia de model para iniciali9ar la base de datos y sus metadatos2 SQL Server rellena el resto de la base de datos con pá. El !ermiso )/E3&E D3&3-3SE de"e concederse e1!l5citamenteX no se concede mediante la instrucci n 8/3%& 3LL./$.2'$#1. Para o"tener un in(orme acerca del es!acio utili:ado en una "ase de datosF em!lee &)K&)1'#:&#.5(+ y . Estos !ermisos se limitan a unos cuantos inicios de sesi n !ara mantener el control de la utili:aci n de los discos del eIui!o Iue e?ecuta SQL Server.ura: Manual SQL Server 2000 ./$. KQuiCnes pueden crear bases de datosL En (orma !redeterminada !odr0n 4acerlos los usuarios Iue !ertenecen al rol &0&1.

'$#1.#12(-(.1.LLF V#$&(/+[.!dateStatistics 2. Use Master GO Create *ata$ase /rue$a" GO 'eri(iIue la creaci n de la "ase de datos y note Iue autom0ticamente SQL Server asign tamaKos y nom"res l gicos !ara los arc4ivos.3/IOF R#'/%#$0[B..2K&(N# />+#$ .1.L&IW. Prue"a1 1.0 L#%#S.Ing.S.0 3dem0s se mostrar0 un in(orme con los arc4ivos Iue se crearon autom0ticamenteJ Manual SQL Server 2000 .12 M- sa 2 Be" 22 2002 &.1.reateStatisticsF Is3uto.O$. Danny Omar Macario Programacion E3#5)-/ 1 )rear la "ase de datos Prue"a1 con los !ar0metros En (orma !redeterminada.F IsAuto. Para ello em!lee el siguiente !rocedimiento almacenado del sistemaJ Sp_=elp*B /rue$a" GO De"e o"tener el siguiente resultadoJ +15# .#'.#.0M#E%$N!#D0E U&:1$(/A''#&&[M.2F I&T/$+P17#D#.A .(2(-(.(/+E+12-#.#$[.9F C/--1.(/+[SQLWLatin1W8eneralW)P1W)IW3SF SQLS/$.:&[O%LI%EF U).2(.:& C/5)1.

C:O3ro.y uno m01imo de 10M-F el crecimiento de"e ser de 1M-. 2 A!M$ '03.1.F el arc4ivo de registro de"e tener un tamaKo inicial de .F el arc4ivo de registro de"e asumir los valores !or de(ault.ram GilesO*icrosoft SQL ServerO*SSQLOdataO3rueba.G+O<-=2 "M$> GO 'eri(iIue la creaci n de la "ase de datos anteriorJ Sp_=elp*B /rue$aA GO Puede notar como SQL Server a!rovec4a los valores !redeterminados en la "ase de datos model !ara com!letar la in(ormaci n Iue corres!onde al log de transaccionesF la cual no se es!ec5(ico en la sentencia )/E3&E D3&3-3SE. 2 C:O3ro.2 ldf /8LL (01Hb 8nlimited . .&AM. Ejemplo 3 )rear la "ase de datos Prue"a.M"F un tamaKo m01imo de .M".# L/7 prueba.M. 2 ‘CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aA _*ataGMdE’ S05. only Ejemplo 2 )rear la "ase de datos Prue"a2 con un arc4ivo de datos de 10M"F un tamaKo m01imo de 20M" y un crecimiento de 1M"./& +15# prueba.NLo. Danny Omar Macario C/-:5+1& A$'I(%/ . 2 "!M$ MA6S05.0I lo. Use Master GO Create *ata$ase /rue$aH On /rimar( B&AM.ram GilesO*icrosoft SQL ServerO*SSQLOdataO3rueba. es!eci(icando un arc4ivo de datos con un tamaKo inicial de 1.I data only :&17# Programacion A$'I(%/ . Use Master GO Create *ata$ase /rue$aA On /rimar( B&AM. D(-#(. 2 ‘/rue$aA_*ata’ '03.# .Nlo. 2 ‘/rue$aH_*ata’ Manual SQL Server 2000 .2 .0M" y un crecimiento de .Ing.2 mdf D(-#+15# 3#D*%#P D(-#7$/:) )10Hb &(N# 8nlimited 51H&(N# .0I 7$/>.

&AM. Para !oder reali:ar esta tarea em!lee la sentencia 3L&E/ D3&3-3SE Sinta@is A3-.G+O<-=2 "M$> GO JJ KeriEiLue la inEormaci%n con C Sp_=elp*B /rue$aH GO Programacion Otra de las (ormas de com!ro"ar la creaci n de las "ases de datos es mostrando las (ilas de la ta"la del sistema SysData"ases.Iue unidades de 1.y !or alg@n motivo ocurre una (alla y desea recu!erar desde el "acMu!F necesitar5a una unidad de 1.G+O<-=2 IM$> 3og On B&AM.&AM. 2 "!M$ '03.8-.9 . Use Master GO Select *$0* &ame 'rom S(s*ata$ases GO /evise los resultados. 2 ‘CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aH _*ataGMdE’ S05. Creando *Bltiples %rc:ivos La venta?a de almacenar la "ase de datos en m@lti!les arc4ivos radica en la (le1i"ilidad de modi(icar en (uturo la con(iguraci n del 4ard$are sin Iue se vea a(ectada la "ase de datosF otro de los motivos es Iue si em!lea una "ase de datos de 1.8. 2 H!M$ '03. Danny Omar Macario '03. &om$reB* Manual SQL Server 2000 . 2 "IM$ MA6S05. )on las sentencias del &ransactGSQL es !osi"le modi(icar la lista de arc4ivos Iue con(orman la "ase de datosF agregar o Iuitar arc4ivosF incluso !uede de(inir nuevos gru!os de arc4ivos los cuales !ermitir0n tratar m@lti!les arc4ivos como si se tratar0 de uno solo. 2 ‘CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aH _3ogG3dE’ S05. o mas giga"ytes de almacenamientoF mientras Iue si distri"uy la "ase de datos en m@lti!les arc4ivos !eIueKos ser0 mas !ro"a"le Iue tenga dis!oni"les m@lti!les unidades de 6 8.+ *A-ABAS. 2 IM$ MA6S05.Ing. 2 ‘/rue$aH_3og’ '03.

rupo de arc:ivos2 REMOVE FILEGROUP Quita el .G+OU/ nom$reGrupoArchivos@ : A** 3OG '03. nom$reArchivo3%gico : A** '03.G+OU/ nom$reGrupoArchivos : MO*0'1 '03.re.G+OU/ nom$reGrupoArchivos : +.ue un arc:ivo de re.Ing. M.ar un . MM. GGGn @ .re. '03.rupo de arc:ivos al que debe a.speciEicaci%n del archivoN : MO*0'1 '03.MOK.ando un arc:ivo2 TO FILEGROUP Especifica el . Argu#entos ADD FILE Especifica que se está a. MM. '03.G+OU/ nom$reGrupoArchivos propiedadGrupoArchivos : S.MOK.M optionspec N .%LE3. <0-= M termination N @ : CO33A-.rupo de arc:ivos de la base de datos no se puede reali9ar si el .%LE1AME& S%2E& .istro a la base de datos indicada2 REMOVE FILE Elimina el arc:ivo de la base de datos y retira su referencia en las tablas del sistema además de eliminar el arc:ivo físico2 Este arc:ivo no podrá eliminarse si no está vacío2 ADD FILEGROUP Especifica que se va a a. ?n@ : +.speciEicaci%n del archivoN .re.Sólo se puede cambiar una de estas propiedades a la ve92 MODIFY FILEGROUP +/52$#G$:)/A$'I(%/& )$/)(#.re.O$'0 y MA*S%2E.G$:)/A$'I(%/& Especifica la propiedad que se aplicará a los arc:ivos que pertenecen al .speciEicaci%n del archivoN .arse el arc:ivo especificado2 ADD LOG FILE Especifica que se a.rupo de arc:ivos no está vacío2 MODIFY FILE Especifica que el arc:ivo dado se debe modificar incluidas las opciones ..1.rupo de arc:ivos2 Manual SQL Server 2000 +0 . ?n@ . M collation_name N .-O '03. Danny Omar Macario Programacion 7 A** '03.

*+2 %ntes de e. master GO A3-.emplo el tipo de recovery que se empleará para los bac6ups2 COLLATE Especifica el con.rupo de arc:ivos en las instrucciones C#E%0E 0%+LE %L0E# 0%+LE o C#E%0E D/$EQ se crean nuevas tablas e índices en el .etos del .rupo puede ser el predeterminado esta propiedad se quita del .ecutar el si.unas de las características de traba. 2 /rue$aASec_*ata '03. 2 IMB MA6S05.0 *+2 con un crecimiento de .o con los resultados despuCs de e.rupo de arc:ivos2 DEFAULT Especifica que el .o en una base de datos por e.rupo de arc:ivos que :abía sido anteriormente el predeterminado2 C#E%0E $%0%+%SE :ace que el . /rue$aA A** '03.Bn .re. Danny Omar Macario Los valores de ro iedad(ru oArc)ivos son: Programacion READONLY Especifica que el . 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD /rueA*ataGndE4 S05.rupo predeterminado2 SET 3ermite establecer valores para al.rupo de arc:ivos es el predeterminado de la base de datos2 Sólo un .rupo2 READ=RITE Dnvierte la propiedad #E%$</LP2 Están :abilitadas las actuali9aciones para los ob.rupo de arc:ivos es de sólo lectura2 $e tal manera que no se podrán reali9ar modificaciones sobre los arc:ivos pertenecientes a este .ar un arc:ivo de datos secundario de (*+ y un tama@o má=imo de .+ *A-ABAS. B &AM.rupo de arc:ivos principal sea el .unto de caracteres a emplear ya sean de !indo"s o de SQL Server 20002 *(servaciones %o se !uede agregar o Iuitar un arc4ivo mientras se est0 e?ecutando una instrucci n -3)D.uiente comando utilice SpNAelp$+ 3rueba2 para comparar lue. 2 "!MB Manual SQL Server 2000 +1 .P. Ejemplo 1 *odificar la base de datos 3rueba2 de tal manera que le debe a.&AM.rupo predeterminado inicialmente2 Si no se especifica nin.ecutar la sentencia2 US.Ing.

G+OU/ Operaciones GO JJ KeriEiLue la inEormaci%n con las siguientes instruccionesC Use /rue$aA GO Sp_=elp'ileGroup GO Se mostrará el si. D(-#'/:+.uiente resultado: 7$/:)+15# 7$/:)(.uiente: los arc:ivos del .+ *A-ABAS. /rue$aA A** '03. 2 4 .Ing.uiente sentencia: Use /rue$aA GO Sp_=elp'ile GO Si desea ver las características sólo del arc:ivo que a.l resultado le mostrar8 inEormaci%n del archivo Lue aca$a de agregar */ Ejemplo 2 Crear dos .rupo C</S8L0<#ES deben tener un tama@o de .re.uiente sentencia: Sp_=elp'ile /rue$aASec_*ata GO /* .rupos de arc:ivos en la base de datos 3rueba2 el primer . /rue$aA A** '03.+ *A-ABAS.rupos creados anteriormente a@adale dos arc:ivos de datos para ello considere lo si.o utilice la si. 0 0 2 )onsultores O!eraciones P/IM3/C Ejemplo 3 % cada uno de los .0 *+2 cada uno con un tama@o má=imo de 20 *+ y un crecimiento de Manual SQL Server 2000 +2 .G+OU/ Consultores GO A3-. Danny Omar Macario '03.G+O<-= 2 "MB > GO Sp_=elp*B /rue$aA GO JJ Compare los resultados con los anteriores Programacion Si desea información de los arc:ivos emplee la si.rupo se llamará C</S8L0<#ES y el otro se llamará <3E#%CD</ES2 A3-.

na ve: Iue e?ecuta estas sentenciasF veri(iIue la in(ormaci n con la siguiente instrucci nJ Use /rue$aA GO Sp_=elp'ileGroup GO 7$/:)+15# 7$/:)(. B&AM. 2 "!MB MA6S05.&AM.&AM. 2 ‘CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atCons"GndE’ S05. D(-#'/:+.G+OU/ O/. 2 A!MB '03. 2 4 .G+O<-= 2 AMB> -O '03. 2 2 2 )onsultores O!eraciones P/IM3/C Manual SQL Server 2000 +.G+O<-= 2 IMB> -O '03. 2 ‘*atCons!"’ '03. 2 ‘*atOper!A’ '03. 2 "!MB MA6S05. 2 ‘CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atOper"GndE’ S05. B&AM.&AM.G+OU/ CO&SU3-O+. 2 H!MB '03. 2 ‘CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atOperAGndE’ S05.S GO A3-. 2 H!MB '03. /rue$aA A** '03.+AC0O&. 2 IMB MA6S05.G+O<-= 2 AMB> B&AM. 2 ‘CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atConsAGndE’ S05. 2 ‘*atCons!A’ '03.+ *A-ABAS. /rue$aA A** '03.G+O<-= 2 IMB> B&AM.Ing.+ *A-ABAS.rupo <3E#%CD</ES tendrán un tama@o inicial de ( *+ y un má=imo de 40 *+2 con un crecimiento de ( *b2 Use Master GO A3-. 2 ‘*atOper!"’ '03. 2 IMB MA6S05.&AM. . Danny Omar Macario Programacion 2 *+2 mientras que los del . 2 A!MB '03.S GO SF3 SF3 SF3 SF3 .

/rue$aA MO*0'1 '03. Use Master Manual SQL Server 2000 +6 . /rue$aA MO*0'1 '03.MOK.1. ‘*atOper!"’ GO Ejemplo 6 Eacer Iue el gru!o de arc4ivos O!eraciones sea el gru!o En (orma !redeterminada. Use Master GO A3-. Use Master GO A3-. Danny Omar Macario Programacion Si desea in(ormaci n de un gru!o de arc4ivos en !articularF utiliceJ Sp_=elp'ileGroup Operaciones GO Ejemplo 4 Modi(icar el tamaKo del DatO!er01 asign0ndole como nuevo tamaKo m01imo 60 M".+ *A-ABAS.+ *A-ABAS. '03..uiente: DROP DATABASE .121&#K+15# O9.Ing. 2 ‘*atOper!"’ MA6S05.'AU3GO Cuando lo que se requiere es eliminar una base de datos debe emplear la sentencia $#<3 $%0%+%SE cuya sinta=is es la si.+ *A-ABAS. B &AM. /rue$aA +. Use Master GO A3-..G+OU/ Operaciones *.+P Ejemplo 7 Eliminar la "ase de datos Prue"a2. 2 O!M$> GO JJ /ara veriEicar el cam$io emplee la siguiente instrucci%nC Sp_=elp'ile *atOper!" GO Ejemplo 5 Eliminar el arc4ivo DatO!er01.

Danny Omar Macario GO *+O/ *A-ABAS. Para cam"iar el nom"re de una "ase de datosF utilice &)K$#+15#. /rue$a" &uevo&om$re GO #evisar la tabla Sys$atabases verifique que se elimino la entrada de 3rueba2 Use Master GO Select &ame 'rom S(s*ata$ases GO #enombrando +ase de $atos Para Iuitar una "ase de datosF utilice D/OP D3&3-3SE. /rue$aA GO Programacion #evisar la tabla Sys$atabases verifique que se elimino la entrada de 3rueba2 Ejemplo 8 Eliminar la "ase de datos Prue"a1 y %uevo%om"re Use Master GO *+O/ *A-ABAS.Ing. 7creada en el E?em!lo.9 no este seleccionada en el 3dministrador Em!resarialF !ara asegurarse 4aga clic i:Iuierdo en Data"asesF luego ingrese al 3nali:ador de )onsultas con una cuenta de administrador 7#indo$s aut4entication9 o con la cuenta sa J /* Comprue$a la presencia de /rue$aH */ Use Master GO Select name 'rom S(s*ata$ases GO El resultado ser5aJ Aa#e master tem!d" model msd" !u"s %ort4$ind Prue"a. .29 !ero recuerde Iue !ara esto la "ase de datos a renom"rar tiene Iue tener activa la o!ci n Q&(+7-# :&#$RF si desea com!ro"ar el em!leo de esta sentencia realice la siguiente secuencia de instrucciones desde el 3nali:ador de )onsultasF veri(iIue la "ase de datos Prue"a. Prue"a1 Prue"a2 Manual SQL Server 2000 +.

Danny Omar Macario Programacion /* /ara renom$rar active la opci%n Single User en la Base de datos a renom$rar */ Sp_*BOption ‘/rue$aH’ ‘Single User’ ‘-rue’ GO El resultado ser5aJ D-)) e1ecution com!leted. I( D-)) !rinted error messagesF contact your system administrator. /* . &4e data"ase is no$ single usuario.n este instante la $ase de datos puede ser renom$rada */ Sp_+ename*B ‘/rue$aH’ ‘&uevo&om$re’ GO El resultado ser5aJ 71 ro$7s9 a((ected9 D-)) e1ecution com!leted. &4e data"ase is renamed and in single usuario mode. /* Comprue$e el correcto renom$rado de la $ase de datos ( luego retire la opci%n single usuario de la $ase de datos */ Select &ame 'rom S(s*ata$ases GO Sp_*BOption 4&uevo&om$re4 4Single Usuario4 4-rue4 GO Manual SQL Server 2000 ++ . I( D-)) !rinted error messagesF contact your system administrator. 3 mem"er o( t4e sysadmin rol must reset t4e data"ase to multiusuario mode $it4 s!Wd"o!tion.Ing.

Danny Omar Macario Programacion C$#1'(*+ .Ing.(%/&4 • Determinar &i!os de datos de SQL Server a utili:ar en las ta"las • Im!lementaci n de ta"lasF esta"lecer restricciones • 3signar !ermisos *emas! • • • • &i!os de datos de SQL Server T &i!os de datos de usuario Em!leo de comando DDL 7Data De(inition Language9 Im!lementar /estricciones 3signar roles yLo !ermisos T )omandos D)L 7Data )ontrol Language9 Manual SQL Server 2000 +A .# T12-1& O23#.

Por e?em!loF 0123 es!eci(ica el valor 4e1adecimal 23F Iue es eIuivalente al valor decimal 62 o un !atr n de "its de un "yte de 00101010. La escala es el m01imo n@mero de d5gitos a la derec4a del se!arador decimal.#7#$. Las constantes "inarias tienen un 01 7un cero y una letra 1 en min@sculas9 a la i:IuierdaF seguido de la re!resentaci n 4e1adecimal del !atr n de "its. Por e?em!loF un o"?eto s#allint !uede contener 4asta . Bunciones de &ransactGSQL Iue devuelven uno o m0s valores de datos de un ti!o de datos es!ec5(ico. El o"?eto usa 2 "ytes !ara almacenar los datos. • La escala del n@mero 7s lo ti!os de datos num=ricos9.000 "ytes. d5gitosF con lo Iue tiene una !recisi n de . • La !recisi n del n@mero 7s lo ti!os de datos num=ricos9.Ing. Los datos 2(+1$0 y %1$2(+1$0 !ueden tener una longitud de 4asta 2.n o"?eto #oney !uede tener 4asta 6 d5gitos a la derec4a del se!arador decimal y tiene una escala de 6. La siguiente es una ta"la Iue descri"e los ti!os de datos !rovistos !or SQL ServerJ Manual SQL Server 2000 +2 . Por e?em!loF un o"?eto int no !uede ace!tar un se!arador decimal y tiene una escala de 0. Mientras Iue los datos de car0cter se inter!retan seg@n la !0gina de c digos de SQL ServerF los datos 2(+1$0 y %1$2(+1$0 sonF sim!lementeF un (lu?o de "its. Par0metros de !rocedimientos almacenados. Por tantoF el ti!o de datos 5/+#0 tiene una !recisi n de 19F una escala de 6 y una longitud de 2. U. 'aria"les. Si un o"?eto se de(ine como 5/+#0F !uede contener 4asta 19 d5gitos y 6 de ellos !ueden estar a la derec4a del decimal./& 2(+1$(/& Los ti!os de datos 2(+1$0 y %1$2(+1$0 almacenan cadenas de "its. 3l asignar un ti!o de datos a un o"?eto se de(inen cuatro atri"utos del o"?etoJ • La clase de datos Iue contiene el o"?etoF !or e?em!loF car0cterF entero o "inario. • Procedimientos almacenados Iue devuelven un c digoF Iue siem!re es de ti!o (+. Danny Omar Macario *i os de "atos de SQL Server 2000 Programacion SQL Server "rinda una serie de ti!os de datos !ara almacenar la in(ormaci nF la correcta selecci n del ti!o de dato es sim!lemente una cuesti n de determinar Iue valores desea almacenarF como !or e?em!lo car0cterF enterosF "inarioF (ec4asF etc.. • La longitud del valor almacenado o su tamaKo. La !recisi n es el n@mero de d5gitos Iue !uede contener el n@mero.(-(N1$ .1. Los siguientes o"?etos tienen ti!os de datosJ )olumnas de ta"las y vistas. .

Ing. Danny Omar Macario Programacion Manual SQL Server 2000 +9 .

Gec:a y %o !uede se!arar en ti!os Aora distintos el almacenamiento de s lo smalldatetime (ec4as o s lo 4oras.. Este ti!o de dato guarda un valor e1acto del n@mero y no una a!ro1imaci n. Para SQL ServerF el ti!o de dato numeric es eIuivalente al ti!o de datos decimal. image )onsisten de una c4ar com"inaci n de letrasF s5m"olos y n@meros. (loat real )onsiste en in(ormaci n num=rica !ositiva o negativa como !or "igint e?em!lo T.60E P ..2 d5gitosF todos los cuales !odr5an estar a la derec4a del !unto decimal.. Los datos !ueden variar en el n@mero de d5gitos 4e1adecimales 74asta 2 D-9.6AA.. Datos en el rango de G 2F16AF62. 4asta el .# D1.+2. Punto Blotante Enteros int Manual SQL Server 2000 A0 .F 0 y 2. Bec4as en el rango 01 Ene 1900 4asta 0+ Vun 20A9 7Se reIuiere reIuires 6 "ytes !or valor9.#7/$G1 D#&'$()'(*+ T()/ .20A9./ Programacion D#&'$()'(*+ 3lmacenan cadenas de "inary "its. numeric %@meros a!ro1imados 7Punto (lotante9. Se reIuieren de 6 "ytes !ara almacenar estos valores.+2.. es B. Danny Omar Macario C1.60E P .9 Los datos !ueden ser caracteres 3S)II Iue e1cedan los 2 D-.2 4asta .A20.2029 4asta 2]+.6AA. )onsisten en in(ormaci n Iue almacena in(ormaci n signi(icativa decimal des!u=s del !unto Decimal decimal. Datos en el rango de 1.A9E P .A20. 7T 922. La data !uede variar en el n@mero de caracteres 7Easta 2 D-. en 4e1adecimal.T1 7922.A9E P . La data !uede tener una longitud varia"le y e1ceder los 2D". Los datos !ueden tener 4asta .02 4asta 1. Se reIuieren de 2 "ytes !ara almacenar estos valores.. Los datos de"en tener una longitud (i?a 7Easta 2 D-9.F+6A. La data de"e tener una longitud (i?a 74asta 2 D-9. Datos en el rango de . Por e?em!lo el decimal var"inary +inario 26.F+62 4asta 2F16AF62.Ing.02. Datos en el rango de 2]+.2. Por Caracter e?em!lo las varc4ar com"inaciones UVo4n922U y U70Q\7Y-99n4 ?MVU. te1t )onsisten en com"inaciones v0lidas de Datetime estos datos.1 Dic 9999 7Se reIuiere 2 "ytes !or valor9. Bec4as en el rango 01 Ene 1A. La data consiste de n@meros 4e1adecimales.

cursor timestam! Especiales uniIueidenti(ier SQLWvariant ta"le 8nicode 3l em!lear este ti!o de nc4ar datos se !uede almacenar Datos en el rango de T..F+2.#7/$G1 D#&'$()'(*+ T()/ ..AF20... Danny Omar Macario C1. 3lmacena un resultado de una consulta !ara su !osterior !rocesamiento.2FA+2 4asta .F se reIuiere de 1 "yte.+62 y 216FA62.. Datos monetarios entre T 922F./ Programacion D#&'$()'(*+ smallint tinyint )antidades monetarias !ositivas o negativas. money Monetario smallmoney )onsisten en in(ormaci n Iue no recae en ninguna "it de las categor5as anteriormente mencionadas. Datos monetarios entre T 216FA62.20A 7Se reIuieren 2 "ytes !or valor9.F6AA.+6A 7Se reIuieren de 6 "ytes !or valor9.F6AA.Ing.nicode.& re(erenciados a un cursor.F+2.ID9F es @til cuando se desea asegurar la unicidad de una (ila entre muc4as otras.# D1. Este ti!o de dato es em!leado !ara indicar la actividad Iue ocurre so"re una (ila. Se reIuieren 2 "ytes !or cada valor de este ti!o. 3lmacena varios ti!os de datosF a e1ce!ci n de te1tF nte1tF timestam!F image y sIlWvariant. Datos entre 0 y 2. Este ti!o de dato es em!leado !or varia"les o !rocedimientos almacenados Iue em!lean !ar0metros O. )onsiste en un n@mero 4e1adecimal Iue es!eci(ica un glo"ally uniIue identi(ier 78. Em!lear este ti!o de dato !ara re!resentar &/. Manual SQL Server 2000 A1 .&P..2FA+A. La secuencia de este n@mero se incrementa en (ormato "inario.AF20.E o B3LSE CES o %O. Datos Iue consisten de 1 o 0.. Se !uede em!lear !ara de(inir varia"les locales de ti!o ta"le o !ara retornar los valores devueltos !or una (unci n del usuario.202 y P922F. Datos con longitud (i?aF 4asta 6000 caracteres .

nicode.#7/$G1 D#&'$()'(*+ T()/ . Eay Iue recordar Iue los datos . Datos Iue !ueden variarF 4asta 6000 caracteres .# D1. Para crear un ti!o de dato !uede em!lear el 3dministrador Em!resarial e1!andiendo la "ase de datos donde desea crear el datoF luego de"er0 4acer un clic derec4o so"re &i!os de datos de(inidos !or el .nicode.Ing./ Programacion D#&'$()'(*+ so"re una columna nvarc4ar valores Iue incluyan este con?unto de caracteres.nicode em!lean nte1t dos "ytes !or cada car0cter a re!resentar. Danny Omar Macario C1. Datos Iue e1ceden los 6000 caracteres .suario y seleccionar N uevo tipo de datos definido por el usuario!OF tal como lo muestra la siguiente re!resentaci nJ Manual SQL Server 2000 A2 . Tipos de datos definidos por el $s$ario Los ti!os de datos de(inidos !or el usuario est0n "asados en los ti!os de datos dis!oni"les a trav=s de SQL Server 2000. Los ti!os de datos de(inidos !or el usuario se !ueden em!lear !ara asegurar Iue un dato tenga las mismas caracter5sticas so"re m@lti!les ta"las.

Pph(st(pe 2@ tipo*atosSistema .Pt(pename 2@ tipo .A-. Si no se de(ine e1!l5citamente ti!o%ullF se esta"lece de acuerdo al criterio !redeterminado !ara valores nulos.#51 Es el ti!o de datos !ro!orcionado !or SQL ServerF 7decimalF intF etc.LL_ o ^%O%.()/D1. . *A-ABAS.) de ti!o c4ar7119 el cual no !ermitir0 valores %.LL_. Este argumento !uede tener como valor ^%./&S(&.()/ Es el nom"re !ara el ti!o de datos de(inido de usuarioF de"en ser @nicos en cada "ase de datos. Ejemplo 1 En este e?em!lo se crear0 la "ase de datos E?em!lo y en ella se de(inir0 el ti!o de datos /. US.0)# TP Q.()/N:--R Indica la (orma en Iue el ti!o de datos del usuario trata los valores nulos.LL_F ^%O& %. master GO C+. OS+:--.Qemplo Manual SQL Server 2000 A.LL.Pnullt(pe 2@ 4tipo&ull4@ Argu#entos OS. OS)I0&.0)#+15# TP . .Ing. .0)# TP .9 en el Iue se "asa el ti!o de datos del usuario. Danny Omar Macario Programacion )om!lete la ca?a de di0logoF tal como lo muestra la siguiente re!resentaci nJ Desde el 3nali:ador de )onsultas !uede em!lear el stored !rocedure del sistema SPW3DD&CPE cuya sinta1is es la siguienteJ sp_addt(pe .

Qem_*ata4 '03. 2 A!M$ MA6S05. 2 IM$ MA6S05.6. 2 "!M$ '03.&AM. Danny Omar Macario O& /+0MA+1 B&AM.Qem_3og4 '03.$/).LL.&U334 GO Programacion Para veri(icar Iue el ti!o de dato se 4a creado e1itosamenteF e?ecute la siguiente consultaJ Select * 'rom S(st(pes GO Ejemplo 2 En este e?em!lo se crear0 el ti!o de datos Onom0stico de ti!o datetime y Iue !ermitir0 valores %. sp_dropt(pe . . 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD.C sp_addt(pe Onomastico datetime 4&U334 GO Los ti!os de datos Iue se agregan son inscritos en la ta"la &0&.Qem3ogG3dE4 S05.Qemplo GO Sp_Addt(pe +UC 4C=A+B"">4 4&O.Pt(pename 2@ 4tipode dato4 E?em!loJ Use .G+O<-= 2 "M$> GO Use .G+O<-= 2 AM$> 3OG O& B&AM. 2 4.&AM.Ing.Qemplo GO Sp_dropt(pe ‘Onomastico’ GO Select * 'rom S(st(pes GO Sp_dropt(pe ‘+UC’ GO Select * 'rom S(st(pes GO Manual SQL Server 2000 A6 .Qem*ataGMdE4 S05. 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD.0)#&F estos ti!os de datos son eliminados con el !rocedimiento almacenado del sistema &)K. 2 4.0)#. 2 O!M$ '03.

Las ta"las del sistema almacenan in(ormaci nF llamada MetadataF acerca del sistema y de los o"?etos de las "ases de datos. SQLGDMO.#. Las ta"las son o"?etos com!uestos !or una estructura 7con?unto de columnas9 Iue almacenan in(ormaci n interrelacionada 7(ilas9 acerca de alg@n o"?eto en general. Ejemplo: S. )ada uno de estos atri"utos tiene un ti!o de dato de(inido y adem0s la ta"la de"e !ermitir asegurar Iue cada c digo de !roducto es @nico en la mismaF !ara asegurarse de no almacenar la in(ormaci n del mismo cliente dos veces.C.#51. &odas las ta"las del sistema comien:an con el !re(i?o SCS.#51 La in(ormaci n usada !or SQL Server y sus com!onentes son almacenadas en ta"las es!eciales denominadas como .12-1& . )at0logo de (unciones 3PI.* '+OM S1SUSUA+0OS *a#las del -suario Manual SQL Server 2000 A. Las ta"las suelen estar relacionadas entre s5F !ara (acilitar el 4ec4o de consultas entre m@lti!les ta"las. Las ta"las se de(inen !ara los o"?etos cr5ticos de una "ase de datosF !or e?em!lo . .3. Instrucciones &ransactGSQL y (unciones.#. SQL Server 2000 em!lea las ta"las como o"?etos de almacenamiento de datos Iue los usuarios mani!ulan a trav=s de sus a!licaciones o v5a $e".&(&.S(&.LIEA0ES y su estructura estar5a con(ormada !or cada uno de los atri"utos Iue se reIuieran de los clientes !ara !oder o"tener in(ormaci n de ellosF como !or e?em!loJ nom"resF direccionesF tel=(onosF celularF rucF etc. Procedimientos 3lmacenados de sistema. Estas ta"las no de"en alterarse directamente !or el usuario Si desea o"tener in(ormaci n almacenada en las ta"las del sistema de"e usarJ • • • • • In(ormaci n de la vista esIuema 7sc"ema vie#9. Danny Omar Macario Programacion Em leo de 'omandos ""LL +"ata "efinition Language.Ing. Podemos distinguir los siguientes ti!os de ta"lasJ T12-1& .

Ing. Danny Omar Macario
P#$51+#+.#&

Programacion

Son las ta"las donde se almacena la in(ormaci n Iue los usuarios utili:an !ara sus o!eraciones. Esta in(ormaci n e1istir0 4asta Iue se elimine e1!l5citamente.
T#5)/$1-#&

Estas son ta"las similares a las !ermanentes Iue se gra"an en tem!d"F y son eliminadas autom0ticamente cuando ya no son usadas. Eay dos ti!os de ta"las tem!oralesF locales y glo"alesF di(ieren una de la otra en sus nom"resF su visi"ilidad y su 0m"ito de vida. • 0a(las 0e#%orales Locales. El !rimer car0cter del nom"re de B= su visi"ilidad es solamente !ara la cone1i n actual del usuario y son eliminadas cuando el usuario se desconecta. • 0a(las 0e#%orales Clo(ales. Su nom"re comien:a con BBF su visi"ilidad es !ara cualIuier usuarioF y son eliminadas luego Iue todos los usuarios Iue la re(erencian se desconectan del SQL Server.

'reación de ta#las

)uando se crea una ta"la de"e asignarle un nom"re a la mismaF un nom"re a cada columna adem0s de un ti!o de datos y de ser necesaria una longitud. 3dicional a las caracter5sticas antes mencionadasF SQL Server 2000 nos "rinda la !osi"ilidad de im!lementar columnas calculadasF de(ini=ndolas como ( rmulas. Los nom"res de las columnas de"en ser @nicos en la ta"la
C/+&(,#$1'(/+#& 1- '$#1$ .12-1&

• • • •

"illones de ta"las !or "ase de datos 1026 columnas !or ta"la 20+0 es el tamaKo m01imo de registro 7sin considerar datos imageF te1t y nte1t9 3l momento de de(inir una columna se !uede es!eci(icar si la columna so!orta o no valores %,LL.

Para crear ta"las de"e utili:ar la sentencia )/E3&E &3-LEF cuya sinta1is es la siguienteJ
C+,A-, -AB3, M&om$re de -a$laN B &om_Columna" -ipo_de_*ato &om_ColumnaA -ipo_de_*ato &om_ColumnaH As Eormula GGG> GO .&U33 l &O- &U33@ .&U33 l &O- &U33@

&am"i=n !uede crear sus ta"las desde el 3dministrador Em!resarialF !ara ello e1tienda la car!eta &a"las de la "ase de datos donde crear0 la ta"laF 4aga clic derec4o y seleccione %ueva &a"laF tal como lo indica la siguiente re!resentaci nJ

Manual SQL Server 2000

A+

Ing. Danny Omar Macario

Programacion

3!arecer0 la siguiente ca?a de di0logoF com!lete de acuerdo a la re!resentaci nJ

Manual SQL Server 2000

AA

Ing. Danny Omar Macario

Programacion

)uando (inalice !ulse el icono de gra"ar y asigne el nom"re de acuerdo a la re!resentaci nJ

Luego de !ulsar 3ce!tarF !ulse la com"inaci n )trlGB6 y !odr0 o"servar Iue el icono corres!ondiente a esta nueva ta"la a!arece en el !anel de la derec4a.

Manual SQL Server 2000

A2

Danny Omar Macario Programacion Para agregar los registros de !rue"a de esta ta"laF 4aga clic derec4o so"re la ta"la Demo&a"laF seleccione la o!ci n O!en ta"le y luego un clic en /eturn all ro$sF tal como lo muestra la siguiente (iguraJ 3gregar unos registros al (inali:ar !ulse )trlGB6. Manual SQL Server 2000 A9 .Ing.

Ing. RepVentas N/52$# . Danny Omar Macario E3#$'('(/&4 Programacion En la "ase de datos E?em!loF crear las siguientes ta"lasJ CLIENTES N/52$# .9 integer integer P#$5(./ numWem!l nom"re edad o(icinaWre! integer varc4ar71.# NULL /<0 /8LL /<0 /8LL /8LL /8LL 3gregar los siguientes registros a la ta"la )lientesJ 3l terminar !ulse )&/LGB6 con ello los registros !ermanecer0n en la ta"la.# C/-:5+1 T()/ ./ numWclie em!resa re!Wclie limiteWcredito integer varc4ar7209 Integer Money P#$5(.# .# .1.# C/-:5+1 T()/ .1.# NULL /<0 /8LL /<0 /8LL Manual SQL Server 2000 20 .

12-1& Manual SQL Server 2000 21 .9 varc4ar7209 Money Integer P#$5(.1.# NULL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL T()/ .9 integer money P#$5(.# -1 #&.:$1 .$:'.# C/-:5+1 T()/ .Ing./ idW(a" idW!roducto Descri!ci n Precio E1istencias c4ar7.# ./ numW!edido (ec4aW!edido )lie /e! Ba" Producto )ant Im!orte PR D!CT S N/52$# .(D('1'(*+ . Danny Omar Macario titulo contrato director cuota ventas varc4ar7109 date integer money money /<0 /8LL Programacion /<0 /8LL &am"i=n !odemos crear ta"las a !artir de sentencias del &ransact !ara ingrese al 3nali:ador de )onsultas y e?ecute las siguientes instruccionesJ Use .# C/-:5+1 integer datetime Integer integer c4ar7.# -1& . M/.na ve: Iue termin de crear las ta"las e?ecute el scri!t 3gregaDatos.Qemplo GO C+. OEicinas B oEicina integer not null ciudad varcharB"I> not null region varcharB"!> not null dir integer o$Qetivo mone( ventas mone( not null> GO PEDID S N/52$# .1.# NULL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL %otaJ . -AB3.9 c4ar7.sIl !ara !oder !o"lar la in(ormaci n de las ta"las.9 c4ar7.A-.# .

Qemplo GO Create -a$le /rue$a B cod charB"> nom charBA!> pat varcharBA!> mat varcharBA!> GO &O. /rue$a A** Sueldo mone( GO .LLF salvo Iue em!lee la !ro!iedad IDE%&I&C en una columna. /rue$a A3-.+ -AB3.+ -AB3.&U33 GO 'eri(iIue em!leandoJ Sp_=elp /rue$a GO Luego agregaremos un cam!o llamado Sueldo de ti!o moneyJ A3-.&U33> 'eri(icar la creaci n de la ta"la con la siguiente instrucci nJ Sp_=elp /rue$a GO 34ora modi(icaremos el cam!o nom !ara asignarle como ti!o de datos varc4ar con la misma longitud y Iue no !ermita valores %. 'eri(iIue la modi(icaci n de la ta"laJ Sp_=elp /rue$a GO 3gregar la columna (ec4aWnacF de ti!o datetimeJ A3-.+ -AB3.+ CO3UM& nom varcharBA!> &O. /rue$a A** Eecha_nac datetime Manual SQL Server 2000 22 .Ing.LL A3-.&U33 &O. Danny Omar Macario Programacion )on SQL Server 2000 se !uede modi(icar la estructura de las ta"lasF se !odr0 agregarF eliminar o modi(icar las caracter5sticas de las columnas de la ta"la. Para demostrar el em!leo de estas instrucciones em!learemos una ta"la de !rue"a a la cual le daremos la siguiente estructuraJ Use .na o"servaci n es Iue cuando agrega una columna con 3L&E/ &3-LE no !uede utili:ar %O& %.&U33 &U33 &O.

Danny Omar Macario GO Sp_=elp /rue$a GO Programacion 34ora eliminaremos la columna sueldoJ A3-. . Si tan s lo desea o"servar la estructura 4aga do"le clic so"re la ta"la y a!arecer0 la siguiente !resentaci nJ Manual SQL Server 2000 2. 34ora eliminaresmo la columna codJ A3-.Ing.+ -AB3. /rue$a *+O/ CO3UM& sueldo GO Sp_=elp /rue$a GO . /rue$a *+O/ CO3UM& cod GO Otra de las (ormas de modi(icar la estructura de una ta"la es desde el 3dministrador Em!resarialF !ara ello 4aga clic derec4o so"re la ta"la a modi(icar y seleccione la o!ci n 'iseDar 0a(laF tendr0 una !resentaci n similar a la Iue utili: al momento de crear la ta"la.+ -AB3.na o"servaci n im!ortanteF antes de eliminar una columna de"er0 eliminar los 5ndices "asados en esa columna.

/7#+#$1.M/3O Manual SQL Server 2000 26 ./& )1$1 -1& '/-:5+1& En SQL Server 2000 se !uede de(inir columnas Iue o"tengan valores generados !or el sistemaF !ara ello !odemos 4acer uso deJ Propiedad +dentit Permite generar valores secuenciales del sistemaF este ti!o de valores !ueden ser utili:ados en columnas Iue ser0n em!leadas como !rimary Mey.R.+ -AB3.Ing. /rue$a A** CO3UM& cod integer 0dentit(B" "> &O. Danny Omar Macario Programacion V1-/$#& 1:. /ecuerde Iue este ti!o de columnas no son edita"les. E.&U33 GO Para com!ro"ar la generaci n de los valores e?ecute la siguiente secuencia de comandosJ US.R. . .M/3O GO A3-. Para em!lear esta !ro!iedad de"e es!eci(icar un valor de inicio y uno de incremento.emplo: US.

+.* '+OM /rue$aA GO -li/inación de tablas Manual SQL Server 2000 2.-+D-NT+.CO* &OM /A.&U33 nom$re charBA!> &O.N+Q.ID.+-R El ti!o de dato uniIueidenti(ier y la (unci n %E#ID tra"a?an unidas !ara !oder generar valores en el (ormato 8.BA KA3U.S B4ROS.C.&.A-.+O&4 "!!!> GO 0&S.BA KA3U.&U33> GO *.S B‘Mauricio’> GO 0&S.3.+.+./+U. Para !oder o"servar un e?em!lo de lo antes e1!licadoF e?ecute la siguiente secuencia de comandosJ C+.S B‘Gina’> GO 0&S.BA GO Para ver in(ormaci n so"re la columna IDE%&I&C !uede utili:ar las (uncionesJ Select 0dent_SeedB4/rue$a4> /* +etorna el valor de inicio de la columna identit( */ GO Select 0dent_0ncrB4/rue$a4> /* +etorna el valor de incremento de la columna identit( */ GO .&4 "!!!> GO S. -AB3.3*O '+OM /+U. /rue$aA B c%digo uniLueidentiEier &O.3./rue$aA Bnom$re> KA3U.+.$nción N-W+D Datos de tipo .<0*B> 0&S.4 4+ORAS4 4CA3*.+./rue$aA Bnom$re> KA3U.C.MA. . Este ti!o de datos no genera valores autom0ticamenteF sino Iue !or el contrario 4ay Iue de(inirle un valor En (orma !redeterminada Iue es!eci(iIue el em!leo de la (unci n %E#ID./rue$aA Bnom$re> KA3U.'AU3.S B‘Cristina’> GO S./+U.Ing. Danny Omar Macario Programacion GO 0&S.SU.S B4A&A MA+0A4 4SA3AS4 4GU033.

Danny Omar Macario Programacion Para eliminar una ta"laF 4aga clic derec4o so"re la ta"la y seleccione la o!ci n Eliminar a!arecer0 la siguiente ca?a de di0logoJ Pulse clic so"re $uitar Todos y con ello la ta"la ser0 retirada de la "ase de datos. M&om$re de la -a$laN Manual SQL Server 2000 2+ . Otra (orma es utili:ando la sentencia D/OP &3-LE cuya sinta1is es la siguienteJ *+O/ -AB3.Ing.

Ing.3. Por e?em!lo se !uede !erder la integridad de datos ante alguna de las siguientes situacionesJ • Se !uede registrar un !edido de un !roducto no e1istente • Podr5a modi(icarse los datos e1istentes son valores incorrectos • Los cam"ios a la "ase de datos !odr5an a!licarse !arcialmenteF !or e?em!lo si se registra un !edido sin actuali:ar el stocM del !roducto reIuerido.$(''(/+#& .PD3&E y DELE&E.24U4 GO I5)-#5#+.C-S <=.no de los !rinci!ales o"?etivos de una "ase de datos relacional es cuidar y controlar la integridad de datosF la cual !odr5a !erderse ante o!eraciones Iue modi(ican la in(ormaci n comoJ I%SE/&F . /rue$aA GO )om!rue"e Iue las ta"las Prue"a y Prue"a2 est0n eliminadasF con la siguiente instrucci nJ S. Manual SQL Server 2000 2A . -1/. Danny Omar Macario Programacion Para !ro"ar el em!leo de esta instrucci n utilice la siguiente sentenciaJ *+O/ -AB3.C.&AM. '+OM S1SOBR.1$ R#&.+.

• Integridad !or Procedimientos Se !ueden escri"ir !rocedimientos almacenados y desencadenadores 7&riggers9 !ara !oder (or:ar la integridad de datos. 3unIue las restricciones muy com!le?as !odr5an im!lementarse a trav=s de lengua?es de !rogramaci n y otras 4erramientas clientes. • Integridad re(erencialF asegura las relaciones entre las claves !rimarias y claves (or0neasF !or e?em!lo al agregar un !edido controlar Iue el c digo de !roducto Iue se es!eci(ica en el !edido e1ista en la ta"la de !roductos. Por e?em!lo en una columna Iue guarde !romedios de estudiantes se !odr5a controlar Iue el rango de valores se encuentre entre 0 y 10. En esta !arte del ca!5tulo revisaremos la integridad declarativa de(ini=ndola a !artir de los )O%S&/3I%&S. • )ontrol de valide:F !ermite controlar los valores Iue se le asignar0n a una columna.LL. • Integridad de entidadF re(erido a Iue una clave !rinci!al asegura la unicidad de cada registro. Manual SQL Server 2000 22 . Los )O%S&/3I%&S se e?ecutan antes Iue la in(ormaci n se registre en el log. Los constraints !ueden de(inirse al momento de crear la ta"laF aunIue tam"i=n es !osi"le 4acerlo des!u=s de Iue las ta"las se 4an creado. SQL Server !ara !oder (or:ar la integridad de datos !ro!one dos modalidadesJ • Integridad Declarativa Se de"e de(inir el criterio de consistencia como criterio de la de(inici n del o"?eto. 3l momento de de(inir las columnas de una ta"la !odr0 asignar a cada columna la es!eci(icaci n %.Ing. Danny Omar Macario Programacion SQL Server !rovee de m@lti!les medios !ara controlar la integridad de datosF como !or e?em!loJ • Datos /eIueridosF es una de las restricciones mas sencillas Iue es!eci(ican Iue columnas !ermiten valores nulos y Iue columnas no. • /eglas comercialesF las modi(icaciones en la "ase de datos de"en cum!lir con ciertos reIuisitos !ara !oder mantener la in(ormaci n 5ntegraF !or e?em!lo en el caso anteriormente mencionadoF el !roducto !odr5a e1istir !ero el stocM encontrarse en 0F de tal manera Iue no de"er5a registrarse el !edido.LL o %O& %. Los )O%S&/3I%&S son un m=todo est0ndar de (or:ar la integridad de datosF aseguran Iue los datos ingresados a las columnas sean v0lidos y Iue las relaciones entre las ta"las se mantendr0. Para utili:ar integridad declarativa se !uede em!lear constraintsF de(aults y rules.

n constraint de ti!o P/IM3/C DEC asegura la unicidad de cada (ila en la ta"laF s lo se !odr0 de(inir uno !or ta"la y de"emos recordar Iue no !ermite valores %.Qemplo GO Select * 'rom Clientes /* &ote el orden de los c%digos de clientes */ GO A3-.Ing. Manual SQL Server 2000 29 .+ -AB3.M&om$re del ConstraintN /+0MA+1 S.LL.1 Bcolumna" GGG> GO ./S_Cli_numclie /+0MA+1 S. M&om$re de la -a$laN A** CO&S-+A0&. Clientes A** CO&S-+A0&.+ -AB3.S&E/ED. Danny Omar Macario Programacion Definir restrincción PR+0"R1 2-1 A3-. Use . Ejemplos: Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada cliente. En (orma !redeterminada crea un 5ndice )L.1 Bnum_clie> GO Select * 'rom Clientes /* &ote Lue las Eilas aparecen ordenadas */ GO Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada re!resentante de ventas.

+ -AB3.1 Bnum_pedido> GO Select * 'rom /edidos /* &ote Lue las Eilas aparecen ordenadas */ GO Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada !roducto./S_num_pedido /+0MA+1 S.1 BOEicina> GO Select * 'rom OEicinas /* &ote Lue las Eilas aparecen ordenadas */ GO Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada !edido. OEicinas A** CO&S-+A0&./S_num_clie /+0MA+1 S./S_Ea$_prod /+0MA+1 S. /edidos A** CO&S-+A0&. +epKentas A** CO&S-+A0&. Select * 'rom /roductos /* &ote el orden de los c%digos de producto */ GO A3-.1 Bid_Ea$ id_producto> GO Select * 'rom /roductos /* &ote Lue las Eilas aparecen ordenadas */ Manual SQL Server 2000 90 . Select * 'rom /edidos /* &ote el orden de los c%digos de pedidos */ GO A3-.Ing.+ -AB3./S_OEicina /+0MA+1 S. Select * 'rom OEicinas /* &ote el orden de los c%digos de oEicinas */ GO A3-.+ -AB3. Danny Omar Macario Programacion Select * 'rom +epKentas /* &ote el orden de los c%digos de empleados */ GO A3-.+ -AB3. /roductos A** CO&S-+A0&.1 Bnum_empl> GO Select * 'rom +epKentas /* &ote Lue las Eilas aparecen ordenadas */ GO Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada o(icina.

&C.+.n (oreign Mey constraint !erm?ite (or:ar la integridad de datos manteniendo la relaci n entre una llave !rimaria y una llave secundaria.'.'R-+(N 2-1 *onstraint A3-.1 B*irector> +.'.Qemplo GO A3-.M&om$re del ConstraintN 'O+. M&om$re de la -a$laN A** CO&S-+A0&. 7 un re! de ventas de"e tener un director registrado9 A3-.+ -AB3.S +epKentasB&um_.1 BoEicina_rep> +.1 B+ep_Clie> +.7un re! de ventas de"e de tener !or lo menos un cliente registrado9 US.&C.mpl> GO Im!lementar un (oreign Mey constraint Iue asegure Iue cada ve: Iue a un re!resentante de ventas se le asigne un directorF est= se encuentre registrado.&C.&C.'S_OEi_OEicinas 'O+.S OEicinasBOEicina> GO Im!lementar un (oreign Mey constraint Iue veri(iIue el c digo de director de la o(icina.S +epKentasB&um_.0G& S.'.+ -AB3.+.Ing.0G& S.0G& S.'S_Cli_+epKentas 'O+. Manual SQL Server 2000 91 .0G& S. Clientes A** CO&S-+A0&. Danny Omar Macario GO Programacion Definir .+ -AB3. +epKentas A** CO&S-+A0&.+.'. A3-. +epKentas A** CO&S-+A0&. .S -a$laBcolumna ?> GO . Para im!lementar este ti!o de caracter5stica de"emos recordar Iue el n@mero de columnas y el ti!o de datos re(erenciados en la cl0usula BO/EI8% DEC de"e ser el mismo Iue el mencionado en la cl0usula /EBE/E%)ES Ejemplos: Im!lementar un (oreign Mey constraint Iue asegure Iue cada ve: Iue asigne un re!resentante de ventas a un cliente este e1ista.'S_*ir_+epKentas 'O+.mpl> GO Im!lementar un (oreign Mey constraint Iue asegure Iue la o(icina asignada al re!resentante de ventas se encuentre en la ta"la o(icinas.+ -AB3.1 Bcolumna" GGG> +.+.

Manual SQL Server 2000 92 .&C.'S_*irec_+epKentas 'O+. OEicinas A** CO&S-+A0&.S +epKentasBnum_empl> GO Im!lementar un (oreign Mey constraint Iue veri(iIue la e1istencia de los !roductos Iue se indican al momento de tomar un !edido.'.0G& S.+ -AB3.+ -AB3.PD3&E.0G& S.&C.+. +epKentas A** CO&S-+A0&.+. E3#5)-/&4 Im!lementar un c4ecM constraint Iue veri(iIue Iue los c digos de los re!resentantes de ventas sean mayores Iue 100. /edidos A** CO&S-+A0&.+.+ -AB3.+ -AB3.1 BEa$ producto> +.1 Bdir> +.'S_+ep_+epKentas 'O+.1 Brep> +.'S_'a$/ro_/roductos 'O+. M&om$re de la ta$laN A** CO&S-+A0&.CS M+egla a validarN GO .'. A3-.n )4ecM )onstraint restringe a los usuarios la !osi"ilidad de ingresar valores ina!ro!iados a una columna.0G& S.+ -AB3.S /roductosBid_Ea$ id_producto> GO D#D(+($ CJECU CONSTRAINT A3-.CS B&um_.'.M&om$re del ConstraintN C=.&C.mpl N "!!> GO Im!lementar un c4ecM constraint Iue veri(iIue Iue los c digos de los !edidos sean mayores Iue 100000.S +epKentasBnum_empl> GO Programacion Im!lementar un (oreign Mey constraint Iue veri(iIue la e1istencia de l re!resentante de ventas Iue toma un !edido.Ing. A3-.CS_+K_"!! C=. Este constraint act@a cuando el usuario em!lea una instrucci n I%SE/& o . A3-. Danny Omar Macario A3-. /edidos A** CO&S-+A0&.

1$ DEFAULT CONSTRAINTS A3-.M&om$re del constraintN *. Danny Omar Macario A3-.n Eorma predeterminadaN 'O+ McolumnaN GO Estos constraints tra"a?an al momento de utili:ar la (unci n I%SE/& y asignan un valor autom0ticamente a la columna Iue no se le asign .Ing.+ -AB3. . M&om$re de la ta$laN A** CO&S-+A0&.MKalor .+ -AB3.CS Bnum_pedido N "!!!!!> GO Programacion I5)-#5#+. /edidos A** CO&S-+A0&.CS_/edidos C=. Manual SQL Server 2000 9.'AU3.

'AU3. A3-.Ing."A!!!> GO Select num_empl nom$re director 'rom +epKentas <here num_empl 2 OI! GO /* 3uego de eQecutar estas instrucciones o$servar8 Lue el c%digo de director asignado a Sarem Kigo es el "!T c%digo asignado por el *eEault Constraint */ /* Ahora intentaremos agregar un representante de ventas con c%digo menor Lue "!!*/ Manual SQL Server 2000 96 . +epKentas A** CO&S-+A0&.+ -AB3. Para ello e?ecute las siguientes instrucciones desde el 3nali:ador de )onsultas /* 0ntentemos agregar un cliente con el c%digo A""H */ 0nsert Clientes Kalues BA""H 4Amago S(sG4 "!H "I!!!> GO /* 3a sentencia Ealla de$ido a Lue el primar( constraint 4/S_Cli_numclie4 le impide incluir c%digos duplicados */ /* Ahora indicaremos un c%digo de cliente apropiado pero el c%digo de representante de ventas ine9istente */ 0nsert Clientes Kalues BH!!! 4Amago S(sG4 AI! "I!!!> GO /* .*'_+K_*irector *.*. Danny Omar Macario Programacion Ejemplo: 3signar un valor en (orma !redeterminada a la columna DI/E)&O/ de la ta"la Iue almacena los datos de los re!resentantes de ventas 4aciendo Iue el c digo En (orma !redeterminada sea 10+.n este caso el error se produce de$ido a Lue el Eoreign Ue( constraint 4'S_Cli_+epKentas4 a detectado Lue el c%digo del representante de ventas es ine9istente */ /* Ahora agregaremos un representante de ventas sin indicar el c%digo de su director */ 0nsert +epKentas Kalues BOI! 4Sarem Kigo4 HH AA 4+epGKentas4 4H/I/"VV"4 *."!T 'O+ *irector GO )omo !arte (inal de esta im!lementaci n em!learemos un con?unto de instrucciones !ara tratar de modi(icar la in(ormaci n de las distintas ta"las y veremos como los constraints im!lementados reali:an su tra"a?o.'AU3.'AU3.

n este caso el error se produce de$ido a Lue el checU constraint a detectado Lue el c%digo del representante de ventas es menor Lue "!! */ Manual SQL Server 2000 9.'AU3.*.'AU3. .Ing."A!!!> GO /* . Danny Omar Macario Programacion 0nsert +epKentas Kalues BI! 4SoEia Fuevedo4 HH AA 4+epGKentas4 4H/I/"VV"4 *.

Ing./& .na ve: Iue 4emos terminado de im!lementar las restricciones es!eci(icadas anteriormente y luego Iue ya tenemos las restricciones (uncionando !odr5amos dar un vista:o al diagrama de la "ase de datosJ Los diagramas re!resentan gr0(icamente la estructura de la -ase de DatosF !odemos ver sus ta"las y diseKoF adem0s de las relaciones entre ellas. Danny Omar Macario Programacion D(17$151 .# D1. Por lo tantoF 4aga clic derec4o so"re Diagramas y seleccione la o!ci n %uevo Diagrama de "ase de datosF tal como lo muestra la (iguraJ Luego de esto a!arecer0 un mensa?e de "ienvenida al asistente !ara de(inici n del diagrama de la "ase de datosF tal como lo muestra la siguiente imagenJ Manual SQL Server 2000 9+ . &am"i=n se convierte en una 4erramienta gr0(ica !ara crearF modi(icar e im!lementar integridad y constancia de datos.# B1&# . Ejemplo: 1.

Danny Omar Macario Programacion 2. Pulse Siguiente y se !resentar0 una ca?a de di0logoF donde de"e seleccionar las ta"las Iue se muestran en la siguiente re!resentaci nJ . Luego de !ulsar el "ot n 3gregar y SiguienteF a!arecer0 la siguiente !antallaJ Manual SQL Server 2000 9A .Ing..

Ing. Danny Omar Macario Programacion Luego de !ulsar Binali:ar tendr0 la siguiente re!resentaci n en !antallaJ Manual SQL Server 2000 92 .

Danny Omar Macario Programacion R#':)#$1$ I+D/$51'(*+ $#%etivos! )onocer los comandos DML /eali:ar VOI%S )onocer la (uncionalidad de los Desencadenadores *emas! • • • • • • Sentencia SELE)& Sentencia I%SE/& Sentencia . S#-#'.uiente manera2 SELEC0 listaNcols RD/0< nuevaNtablaS G#<* tabla4origen R!AE#E condici5nS Manual SQL Server 2000 99 .no de los !rinci!ales motivos !or el cual se guarda in(ormaci nF es !or Iue !osteriormente la vamos a consultarF una de las !rinci!ales ra:ones !or las cuales las "ases de datos relacionales lograron gran ace!taci n (ue !or la (orma tan sencilla de lograr acceder a los datos. C como !arte de estas (acilidades !ara !oder reali:ar consultasF encontramos a la sentencia SELE)&.Ing.a sus cláusulas principales pueden ser resumidas de la si.PD3&E Sentencia DELE&E /ecu!erar in(ormaci n de dos o m0s ta"las Desencadenadores . #ecupera información de la +ase de $atos y permite la selección de una o más filas o columnas de una o muc:as tablas2 La sinta=is completa de la instrucción SELEC0 es comple.

emplo ?< SELEC0 CD8$%$ <+VE0DT< TE/0%S G#<* <ficinas ?< 22 *ostrar los nombres oficinas y fec:as de contrato de los vendedores SELEC0 /<*+#E <+VE0DT< TE/0%S G#<* #E3TE/0%S ?< 42 *ostrar el nombre cuota y ventas del empleado de códi. JAVING ORDER BY Ejemplos En los si.roup by2 . Esta"lece un criterio de selección de (ilas Esta"lece la lista de columna !or las cuales se agru%ara la "er#ite $iltrar los gru!os generados !or 8/O. in(ormaci n.Ing.0J SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E /8*NE*3L M .0J Manual SQL Server 2000 100 . Esta o!eraci n no es registrada en el log.P -C Permite ordenar la in(ormaci n de acuerdo a los reIuerimientos. Danny Omar Macario R?#<83 +P columna6&7S RA%TD/? condici5nS R<#$E# +P columna.etivos y ventas reales 8SE E.emplos veremos el uso del SELEC0 la creación de campos calculados el uso de operadores de funciones a. U R%SCSR$ESCSS Programacion -(&.2 *ostrar las lista de las oficinas de ventas con sus ob.uientes e.adas y de .o .re. FROM =JERE GROUP BY 'eter#ina la ta"la o ta"las de donde se muestra la in(ormaci n.1K'/-& Es!ec5(ica las columnas a ser devueltas !or el Iuery. &ener en cuenta las siguientes consideracionesJ • • • La lista de select recupera y muestra las columnas en el orden especificado2 Separar los nombres de columnas con comas e=cepto la Bltima columna2 8sar un asterisco en la lista de select para recuperar todas las columnas de la tabla2 IA0* nuevaEta(la De(ine la creaci n de una nueva ta"la a !artir de la res!uesta a la consulta es!eci(icada.

o y $enver aun se encuentran por deba. Danny Omar Macario ?< Programacion /ótese que en esta Bltima consulta se :a empleado la cláusula !AE#E para restrin.nar un encabe9ado de columna al campo calculado &TE/0%S X <+VE0DT<'2 $e los resultados podemos observar que las ciudades de C:ica.emplo no se obtienen filas con lo cual queda demostrado que no siempre las consultas deben devolver filas esto representa que nin.o del <+VE0DT< SELEC0 CD8$%$ #E?D</ &TE/0%S > <+VE0DT<' %s SD08%CD</ G#<* <GDCD/%S ?< /ótese que en el e.ir el nBmero de filas a devolver a diferencia de la primera que le devolvía todas las filas2 12 *ostrar el monto de ventas promedio de los vendedores SELEC0 %T?&TE/0%S' G#<* #E3TE/0%S ?< En este Bltimo e.o del ob.$1%V& .emplo se emplea la cláusula A& que permite asi. -2 *uestra que sucedería si se eleva el monto de la cuota decada vendedor en un 4I de sus ventas anuales Manual SQL Server 2000 101 .Ing.&# -# 1&(7+1 :+ #+'12#N1. Mostrar el valor del inventario !ara cada !roducto Select DdNGab DdN3roducto $escripcion &E=istenciasY3recio' %s Talor Grom 3roductos ?< Similar al e.Bn re.# -1 '-<:&:-1 A&.etivo2 A.#.#5)-#/ .etivo mientras que las demás oficinas ya superaron el ob.emplo anterior se emplea un campo calculado 1.':1.emplo se obtiene un Bnico valor que representa una peque@a tabla aunque conste de una sola fila y una sola columna2 Este valor es el resultado de sumar todos los valores del campo TE/0%S y dividirlo entre el nBmero de filas2 (2 *ostrar los nombres y fec:as de contratos de los vendedores que superaron la barrera de los (00 000 SELEC0 /<*+#E C</0#%0< G#<* #E3TE/0%S !AE#E TE/0%SW(00000 ?< En este Bltimo e.istro cumplió con la condición e=presada en la cláusula !AE#E2 )2 *ostrar la CD8$%$ #E?D</ y el D*3<#0E de por encima o por deba./ 1 .

etivo2 SELEC0 Y &TE/0%S > <+VE0DT<' as SD08%CD</ G#<* <GDCD/%S ?< ..204' %s C8<0%3#<PEC0%$% G#<* #E3TE/0%S ?< 72 *ostrar el nombre mes y a@o de contrato de cada representante de ventas Select /ombre *ont:&Contrato' %s *es Pear&Contrato' %s %@o G#<* #E3TE/0%S ?< .02 *ostrar los campos CD8$%$ y TE/0%S separados por la cadena Z tiene ventas de Z SELEC0 CD8$%$ [ tiene ventas de [ TE/0%S G#<* <GDCD/%S ?< .Ing.22 *ostrar todos los campos de la tabla <GDCD/%S asi como tambiCn una columna que indique si se alcan9o o no el ob.unda no se muestran los duplicados2 .idos por Vor.12 *ostrar las oficinas que :an superado el <+VE0DT< tra9ado: SELEC0 CD8$%$ TE/0%S <+VE0DT< G#<* <GDCD/%S !AE#E TE/0%S W <+VE0DT< ?< .e Castro &códi.42 Comparar las si. Danny Omar Macario Programacion SELEC0 /<*+#E C8<0% &C8<0%Y.01' SELEC0 /<*+#E TE/0%S G#<* #E3TE/0%S Manual SQL Server 2000 102 .os de director uno por cada fila e=istente en la tabla mientras que con la se.o .(2 *ostrar los vendedores que están diri.uientes consultas: SELEC0 $D# G#<* <GDCD/%S ?< SELEC0 $DS0D/C0 $D# G#<* <GDCD/%S ?< /ote que en el primer caso se muestran los ( códi.2 *ostrar todos los campos de la tabla CLDE/0ES SELEC0 Y G#<* CLDE/0ES ?< El caracter Y permite recuperar todos los campo y todas las filas de la tabla que se está consultando2 .

. Danny Omar Macario !AE#E $D#EC0<# M .J2 *ostrar las oficinas que están por deba.-2 *ostrar las oficinas que no están a car.>0. .Y <+VE0DT<' ?< .2 *ostrar a los vendedores que traba. .o del -0I del ob.an en /e" Por6 $enver o %tlanta SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E <GDCD/%N#E3 D/ &.01 ?< .7-SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E C</0#%0< \ ]0.72 *ostrar a los vendedores que superaron sus cuotas SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E TE/0%S W C8<0% ?< 202 Programacion *ostrar los clientes que tiene un límite de crCdito entre 1(000 y )0000 SELEC0 E*3#ES% LD*D0ENC#E$D0< G#<* CLDE/0ES !AE#E LD*D0ENC#E$D0< +E0!EE/ 1(000 %/$ )0000 ?< 2.Ing.>--] ?< .etivo SELEC0 CD8$%$ TE/0%S <+VE0DT< G#<* <GDCD/%S !AE#E TE/0%S \ &02.o de 3aola *arin SELEC0 CD8$%$ $D# G#<* <GDCD/%S !AE#E $D# \W .0?< .4 22' ?< 222 *ostrar a los clientes cuya ra9ón social comien9a con S SELEC0 E*3#ES% LD*D0ENC#E$D0< G#<* CLDE/0ES !AE#E E*3#ES% LDHE [SI[ ?< 242 *ostrar a los clientes cuya ra9ón social incluye una P en su nombre SELEC0 E*3#ES% LD*D0ENC#E$D0< G#<* CLDE/0ES Manual SQL Server 2000 10.)2 *uestre a los vendedores contratados antes de .

nada una oficina SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E <GDCD/%N#E3 DS /8LL ?< 2(2 *ostrar los vendedores que tienen asi.o de sus cuotas o ventas menores a 400000 SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E TE/0%S \ C8<0% <# TE/0%S \ 400000 ?< 2J2 *ostrar a los vendedores que tienen ventas por deba.Ing.ión SELEC0 Y G#<* <GDCD/%S <#$E# +P #E?D</ ?< 272 *ostrar las oficinas ordenadas por las ventas en forma descendente: SELEC0 CD8$%$ #E?D</ TE/0%S G#<* <GDCD/%S <#$E# +P TE/0%S $ESC ?< 402 *ostrar las oficinas or. Danny Omar Macario !AE#E E*3#ES% LDHE [IPI[ ?< 212 *ostrar los vendedores que no tiene asi.ani9adas en forma descendente por el rendimiento de ventas SELEC0 CD8$%$ #E?D</ &TE/0%S><+VE0DT<' %S #E/$D*DE/0< G#<* <GDCD/%S <#$E# +P 4 $ESC Manual SQL Server 2000 106 .o de sus cuotas y ventas menores a 400000 SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E TE/0%S \ C8<0% %/$ TE/0%S \ 400000 ?< 2-2 *ostrar la información de las oficinas ordenadas por #e.nada una oficina SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E <GDCD/%N#E3 DS /<0 /8LL ?< 2)2 Programacion *ostrar a los vendedores que tienen ventas por deba.

04 ?< 4(2 *ostrar el mayor y menor monto de cuotas SELEC0 *D/&C8<0%' *%Q&C8<0%' G#<* #E3TE/0%S ?< /ótese que la función *D/ devuelve el menor valor de los datos almacenados en la columna especificada en el ar.04 SELEC0 %T?&D*3<#0E' G#<* 3E$D$<S !AE#E CLDE M 2.ión por el rendimiento de las TE/0%S en forma descendente2 SELEC0 CD8$%$ #E?D</ &TE/0%S><+VE0DT<' %S #E/$D*DE/0< G#<* <GDCD/%S <#$E# +P #E?D</ 4 $ESC ?< 422 Dndicar la cuota promedio y las ventas promedio de los vendedores SELEC0 %T?&C8<0%' %T?&TE/0%S' G#<* #E3TE/0%S ?< /ótese que la función %T? primero suma todos los valores de la columna especificada en el ar.o divide este total entre el nBmero de filas2 442 *ostrar la suma total de las cuotas y de las ventas de todos los vendedores SELEC0 S8*&C8<0%' S8*&TE/0%S' G#<* #E3TE/0%S ?< /ótese que la función S8* suma todos los valores de la columna especificada en el ar.o .2 Programacion *ostrar las oficinas or.umento mientras que *%Q devuelve el mayor valor2 4)2 *ostrar el nBmero de clientes que e=isten2 SELEC0 C<8/0&E*3#ES%' G#<* CLDE/0ES ?< /ótese que la función C<8/0 cuenta los re.umento2 4J2 *ostrar cuantos pedidos superaron el importe de los 2(000 Manual SQL Server 2000 10.umento y lue. Danny Omar Macario ?< 4.umento2 412 *ostrar el importe promedio del cliente de códi. .istros en base al campo especificado en el ar.Ing.ani9adas por #E?D</ y dentro de cada re.

Danny Omar Macario SELEC0 C<8/0&D*3<#0E' G#<* 3E$D$<S !AE#E D*3<#0E W 2(000 ?< 4-2 *ostrar cual es el promedio de pedidos por cada vendedor SELEC0 #E3 %T?&D*3<#0E' G#<* 3E$D$<S ?#<83 +P #E3 ?< Programacion /ótese que la cláusula ?#<83 +P permite a.una de las funciones a.Ing.o por cliente SELEC0 #E3 CLDE D*3<#0E G#<* 3E$D$<S <#$E# +P #E3 CLDE C<*380E S8*&D*3<#0E' +P #E3 CLDE C<*380E S8*&D*3<#0E' %T?&D*3<#0E' +P #E3 3ara poder emplear la cláusula C<*380E debe ordenar primero la información2 142 *ostrar los promedios de ventas que superan los 40000 SELEC0 #E3 %T?&D*3<#0E' G#<* 3E$D$<S Manual SQL Server 2000 10+ .o de cuotas asi.nadas en cada oficina SELEC0 <GDCD/%N#E3 *D/&C8<0%' *%Q&C8<0%' G#<* #E3TE/0%S ?#<83 +P <GDCD/%N#E3 ?< 102 *ostrar el nBmero de vendedores asi.rupar los valores con la finalidad de aplicarles al.2 *ostrar los valores totales por cada cliente y por cada vendedor SELEC0 #E3 CLDE S8*&D*3<#0E' G#<* 3E$D$<S ?#<83 +P #E3 CLDE <#$E# +P #E3 ?< 122 *ostrar un informe que calcule el total de importes por cada cliente vendedor ordenados por vendedor y lue.re.nados a cada oficina SELEC0 <GDCD/%N#E3 C<8/0&Y' G#<* #E3TE/0%S ?#<83 +P <GDCD/%N#E3 ?< 1.adas &C<8/0 S8* %T? *%Q *D/'2 En este caso se devolverá un valor promedio de importes por cada uno de los representantes de ventas2 472 *ostrar el ran.

re. La sinta1is reducida !uede ser J INSERT OINTOP AN/52$# .1 .uiente formato: INSERT OINTOP AN/52$# .Ing.01 1(000' ?< D/SE#0 Clientes Talues &(02 [Cristina $onayre[ .01 1(000' ?< Select Y Grom Clientes ?< U).# Esta sentencia nos permite modificar la información de las tablas2 La sinta=is reducida puede ser: UPDATE AN/52$# .# -1 T12-1B VALUES 6V1-/$19 .tilice la sentencia I%SE/& !ara agregar registros a una ta"la.('(*+BP GO Manual SQL Server 2000 10A . Danny Omar Macario ?#<83 +P #E3 A%TD/? S8*&D*3<#0E' W 40000 ?< Programacion /ótese que la cláusula A%TD/? permite filtar los .ruparían2 I+&#$.rupos .8 GO #ecuerde que si el valor que intenta a.01 1(000' ?< D/SE#0 Clientes Talues &(0.. .# '15)/&B FROM AT12-1B Ejemplos: Insertar los siguientes registros a la ta"la de )lientes D/SE#0 Clientes Talues &(00 [*auricio Aidal.# -1 T12-1B SELECT A-(&.istros que se a.enerados por ?##<83 +P a diferencia de !AE#E que filtra los re.# -1 T12-1B SET A'/-:5+1B T AN:#%/ V1-/$B O=JERE A'/+. [?aby *ansilla[ .1.re.uno de los constraints establecidos la operación abortará inmediatamente2 0ambiCn es posible a..o[ .ar mBltiples filas a travCs del si..ar a una de las columnas no cumple con al.

02 83$%0E Clientes SE0 empresa M [Cristina Aidal. Danny Omar Macario Programacion /ecuerde Iue si la actuali:aci n de una (ila no cum!le con una restricci n o reglaF in(ringe la con(iguraci n de valores %.000 ?< Select Y Grom Clientes ?< )rear una ta"la llamada Me?ores)liF con los registros de los clientes con un limite de cr=dito mayor Iue +0000F en esta nueva ta"la incremente el l5mite de cr=dito en un 20Y S3N$+<30D</ [EVE*3L<[ [SELEC0 D/0<5+8LHC<3P[ [0#8E[ ?< SELEC0 Y D/0< *EV<#ESCLD G#<* CLDE/0ES !AE#E LD*D0ENC#E$D0< W )0000 ?< 83$%0E *EV<#ESCLD SE0 LD*D0ENC#E$D0< M LD*D0ENC#E$D0< Y . La sinta1is de DELE&E !uede serJ $ELE0E \/ombre de la tablaW Manual SQL Server 2000 102 .LL o si el nuevo valor es de un ti!o de datos incom!ati"leF se cancela la instrucci nF se devuelve un error y no se actuali:a ning@n registro.# Las instrucciones DELE&E y &/.%)3&E &3-LE remueven (ilas de una ta"la. Ejemplos 3ctuali:ar la in(ormaci n del registro del cliente de c digo .00 !ara los c digos menores Iue 1000 83$%0E Clientes SE0 numNclie M numNclie ^ (00 !AE#E numNclie \ .o[ !AE#E numNclie M (02 ?< Select Y Grom Clientes !:ere numNclieM (02 ?< 3 cada c digo sumarle .Ing.22 ?< SELEC0 Y G#<* *EV<#ESCLD ?< S3N$+<30D</ [EVE*3L<[ [SELEC0 D/0<5+8LHC<3P[ [G%LSE[ ?< D#-#.

# -1 T12-1B Ejemplo: 0#8/C%0E 0%+LE *e.oresCli ?< Manual SQL Server 2000 109 .enera :istoria en el Lo.Ing. Su sinta1is esJ TRUNCATE TABLE AN/52$# . &ener en cuenta las siguientes consideracionesJ • • El SQL Server borra todas las filas de una tabla a menos que se use la cláusula !AE#E2 Cada fila borrada .000 ?< SELEC0 Y G#<* CLDE/0ES ?< Eliminar los registros cuyo c digo de cliente es menor Iue 2000 $ELE0E Clientes !AE#E /umNClie \ 2000 ?< SELEC0 Y G#<* CLDE/0ES ?< Para eliminar registros !uede utili:ar tam"i=n la sentencia &/.oresCli ?< Select Y Grom *e.sar la instrucci n DELE&E !ara eliminar una o m0s (ilas de una ta"la.istro de códi.o . de 0ransacciones2 Ejemplos: Eliminar el re.%)3&E &3-LEF Iue resulta m0s r0!ida Iue DELE&E !uesto Iue no genera entradas en el log de transacciones. Danny Omar Macario R!AE#E \CondiciónWS Programacion .oresCli ?< Luego de !ro"ar este e?em!lo elimine la ta"la Me?ores)li $#<3 0%+LE *e.000 en la tabla de clientes $ELE0E Clientes !AE#E /umNClie M .

# '/-:5+1&B FROM A.Ing. )uando se e?ecutan los WOINF SQL Server com!ara los valores de las columnas es!eci(icadas (ila !or (ila entonces usa los resultados de la com!araci n !ara com"inar los valores Iue cali(ican como nuevas (ilas.n Hey2 Si una tabla tiene un 3rimary Hey compuesta se debe referenciar a la clave entera en la cláusula </ del V<D/ de tablas2 Las columnas comunes a las tablas deben ser del mismo tipo de dato2 Si dos o más columnas de las diferentes tablas que participan en el V<D/ tienen el mismo nombre deberá de calificar dic:as columnas usando el formato /ombre0abla2/ombre2Columna2 Limitar en lo posible el nBmero de tablas en un V<D/ a más tablas el SQL Server se tomará más tiempo para resolver la consulta2 La cláusula LEG0 <80E# V<D/ nos permite observar todos los re.istros de la tabla de la i9quierda con los re. Danny Omar Macario Programacion .1 B OINNER X LEFTXRIGJTXFULL OOUTERPP WOIN AT12-1 / V(&. VOI% es!eci(ica las ta"las incolucradas en la consulta.1 . O%F esta"lece la condici n de uni n de las ta"lasF a trav=s de cam!os comunes. )uando se im!lementa los VOI%F de"e tener en cuenta las siguientes consideracionesJ • • • • • • • • Especificar las condiciones del V<D/ en base a 3rimary Hey y a Gorei.istros de la tabla que se referencia a la i9quierda en una consulta completa las filas con /8LL en caso no e=ista un valor almacenado en la tabla de la derec:a2 La cláusula #D?A0 <80E# V<D/ nos permite observar todos los re.('(*+B La lista de columnas !uede incluir cam!os de di(erentes ta"las.12-1 / %(&.istros de la tabla de la derec:a2 Ejemplos: • Mostrar los !edidos indicando el n@mero de !edidoF im!orteF nom"re del cliente Manual SQL Server 2000 110 . Para muc4as de las consultas Iue los usuarios reali:an so"re la data almacenada en nuestra "ase de datos es necesario e1traer in(ormaci n de m0s de una ta"laF !ara ello es necesario em!lear los WOINS Iue re!resentan una o!eraci n !roducir un con?unto de resultados Iue incor!oren (ilas y columnas de las ta"las re(eridas en la consultaF esto lo 4ace "as0ndose en columnas comunes a las ta"las.ecu erar información de dos o m/s ta#las +0oins.istros de la tabla que se referencia a la derec:a en una consulta completa las filas con /8LL en caso no e=ista un valor almacenado en la tabla de la i9quierda2 La cláusula G8LL <80E# V<D/ nos muestra la combinación de todos los re. SELECT A-(&.1 B ON A'/+.

ión G#<* #E3TE/0%S D//E# V<D/ <GDCD/%S </ <GDCD/%N#E3 M <GDCD/% ?< • Muestra la lista de o(icinas con los nom"res y t5tulos de sus directores. SELEC0 Ciudad /ombre 0itulo G#<* <GDCD/%S D//E# V<D/ #E3TE/0%S </ $D# M /8*NE*3L ?< • Muestra la lista de las o(icinas con un o"?etivo su!erior a +00000 SELEC0 CD8$%$ /<*+#E 0D08L< G#<* <GDCD/%S D//E# V<D/ #E3TE/0%S </ $D# M /8*NE*3L %/$ <+VEDT< W )00000 ?< • Mostrar los !edidos indicando los im!ortes y la descri!ci n de los !roductos SELEC0 /8*N3E$D$< D*3<#0E $ESC#D3CD</ G#<* 3E$D$<S D//E# V<D/ 3#<$8C0<S </ G%+ M D$NG%+ %/$ 3#<$8C0< M D$N3#<$8C0< ?< • Mostrar los !edidos su!eriores a 2.000 indicando el nom"re del vendedor asignado al cliente y el nom"re del cliente SELEC0 /8*N3E$D$< D*3<#0E E*3#ES% /<*+#E G#<* 3E$D$<S D//E# V<D/ CLDE/0ES </ CLDE M /8*NCLDE Manual SQL Server 2000 111 .000 indicando el nom"re del vendedor Iue tom el !edido y el nom"re del cliente SELEC0 /8*N3E$D$< D*3<#0E E*3#ES% /<*+#E G#<* 3E$D$<S D//E# V<D/ CLDE/0ES </ CLDE M /8*NCLDE D//E# V<D/ #E3TE/0%S </ #E3 M /8*NE*3L %/$ D*3<#0E W 2(000 ?< • Mostrar los !edidos su!eriores a 2. Danny Omar Macario y el l5mite de cr=dito SELEC0 /umN3edido Dmporte Empresa LimiteNcredito G#<* 3E$D$<S D//E# V<D/ CLDE/0ES </ CLDE M /8*NCLDE ?< Programacion • Muestra la lista de vendedores con es!eci(icaci n de la ciudad y regi n a la cual !ertenece SELEC0 /ombre Ciudad #e.Ing.

Ing. Danny Omar Macario D//E# V<D/ #E3TE/0%S </ #E3NCLDE M /8*NE*3L %/$ D*3<#0E W 2(000 ?< Programacion Manual SQL Server 2000 112 .

Ing.# -1 T12-1B FOR AINSERT . Los desencadenadores 7Triggers9 siem!re toman acci n des!u=s de Iue la o!eraci n (ue registrada en el log.#+1. Son una gran 4erramienta !ara controlar las reglas de negocio m0s com!le?as Iue una sim!le integridad re(erencialF los desencadenadores 7Triggers9 y las sentencias Iue desencadenan su e?ecuci n tra"a?an unidas como una transacci n.UPDATE . GO Para gra(icar con un e?em!lo la idea de un Desencadenador im!lementaremos unoF !iense en la siguiente situaci nJ 3l agregar un nuevo !edido a la ta"la de PEDIDOS se de"e incrementar las ventas del re!resentante Iue concreto el !edidoF as5 como tam"i=n de"e reducirse el n@mero de e1istencias./$B ON AN/52$# . El grueso de instrucciones de la de(inici n del Desencadenador de"en ser I%SE/&F . Para ello de"e crear el siguiente DesencadenadorJ . Los desencadenadores 7Triggers9 est0n asociados a ta"las. Danny Omar Macario "esencadenadores Programacion .#+'(1&Y.se E?em!lo 8O )/E3&E DESE%)3DE%3DO/ %uevoPedido O% Pedidos BO/ I%SE/& 3S 83$%0E #epTentas SE0 TE/0%S MTE/0%S ^ D/SE#0E$2D*3<#0E G#<* #E3TE/0%S D//E# V<D/ D/SE#0E$ </ #E3TE/0%S2/8*NE*3L M D/SE#0E$2#E3 83$%0E 3#<$8C0<S SE0 EQDS0E/CD%S M EQDS0E/CD%S > D/SE#0E$2C%/0 G#<* 3#<$8C0<S D//E# V<D/ D/SE#0E$ </ 3#<$8C0<S2D$NG%+ M D/SE#0E$2G%+ %/$ 3#<$8C0<S2D$N3#<$8C0< M D/SE#0E$23#<$8C0< Manual SQL Server 2000 11.PD3&E o DELE&EF aunIue se !uede utili:ar SELE)&F no es recomenda"le ya Iue el usuario no es!era Iue se le devuelva registros luego de agregar o modi(icar in(ormaci n.n Desencadenador 7Trigger9 es un ti!o es!ecial de !rocedimiento almacenado Iue se activa de (orma controlada !or sucesos antes Iue !or llamadas directas. Para crear un Desencadenador !uede utili:ar el siguiente (ormatoJ CREATE DESENCADENADOR AN/52$# .#.D#&#+'1.DELETEB AS S#+. .

#&'$()'(/+ 1.00.L199+`F 2101F 106F `3)I`F `61001`F .KD12 (.#+'(1& ((200 2J0 3)I LQ 34ora la de un re!resentante de ventas QL Select nom"reF cuotaF ventas Brom /e!'entas #4ere numWem!l [ 106 8O /!taJ +/52$# Vorge )astro LQ 34ora agregaremos un !edido QL ':/.K)$/.12-)7 Vorge )astro Manual SQL Server 2000 116 .12(71 Insert Pedidos 'alues 7111000F `. 3rticulo &i!o 1 )$#'(/ #H(&.:'.1 200000 %#+./ .#&'$()'(*+ 1.#+'(1& ((200 2)( 3)I Select nom"reF cuotaF ventas Brom /e!'entas #4ere numWem!l [ 106 8O /!taJ +/52$# ':/.K)$/. Danny Omar Macario 8O Programacion Para com!ro"ar la e?ecuci n de este Desencadenador e?ecute las siguientes sentenciasJ LQ 3ntes de e?ecutar un I%SE/& de !rue"aF mostraremos la in(ormaci n con res!ecto a un !roducto QL Select Q Brom Productos #4ere IdWBa"[ `3)I` 3%D IdWProducto[`61001` 8O /!taJ (.KD12 (.Ing.9 8O LQ 'eri(iIue los resultados anteriores QL Select Q Brom Productos #4ere IdWBa"[ `3)I` 3%D IdWProducto[`61001` 8O /!taJ (.:'.1& .L1./ .1& .F 2A. 3rticulo &i!o 1 )$#'(/ #H(&.00.1 200000 %#+.

_F ^contraseKa_ n ^. .Ing.SE M3S&E/ 8O S!W3ddInicio de sesi 8O S!W3ddInicio de sesi 8O S!W3ddInicio de sesi 8O S!W3ddInicio de sesi 8O S!W3ddInicio de sesi 8O n ^. Los comandos Data )ontrol Language nos !ermiten asignar o negar derec4os a los usuarios so"re los distintos o"?etos de la "ase de datos.suario02_F ^contraseKa_ n ^.n Desencadenador !ara inserci n de registros genera autom0ticamente una ta"la en el cac4e con la in(ormaci n Iue intenta aKadirF esta ta"lita se denomina INSERTED y es a trav=s de esta ta"la Iue se !ueden 4acer com!araciones en otras ta"las. 3ntes de em!e:ar con las demostracionesF crearemos algunos inicios de sesi n Iue nos !ermitiran !racticarF e?ecute la siguiente secuencia de comandosJ . Si se trata de un Desencadenador !ara actuali:aci n se generan am"as ta"las INSERTED con los nuevos datos y DELETED con la in(ormaci n Iue ser0 reem!la:ada. Asignar .suario06_F ^contraseKa_ n ^. . -ien en general cuando tra"a?a con desencadenadores 7&riggers9F tiene Iue recordar Iue los )O%S&/3I%&S se veri(ican !rimeroF de cum!lirse con los datos solicitados se e?ecutar0 el Desencadenador.oles y1o Permisos 2 'omandos "cl +"ata 'ontrol Language.suario0. Para esto se de"en 4a"er de(inido los usuarios Iue tendr0n acceso a nuestra "ase de datos. . Danny Omar Macario Programacion )omo com!ro"o al agregar un nuevo !edido autom0ticamente el Desencadenador (unciona y actuali:a las ventas !ara el re!resentantes de ventas y reduce el n@mero de e1istencias en stocM. Los comandos D)L se !ueden asignar !or sentencias o !or o"?etos.n Desencadenador !ara eliminaci n de registros genera autom0ticamente una ta"la en el cac4e con la in(ormaci n Iue intenta eliminarF esta ta"lita se denomina DELETED y es a trav=s de esta ta"la Iue se !ueden 4acer com!araciones en otras ta"las.suario0._F ^contraseKa_ Luego de crear los inicios de sesi n de(ina a cada uno de ellos como usuarios de la "ase de datos E?em!loF realice la siguiente secuencia de comandosJ Manual SQL Server 2000 11.suario01_F ^contraseKa_ n ^.

suariosL/ol 8O REVOUE /emueve la asignaci n o negaci n del recurso de "ase de datos.suariosL/ol 8O Ejemplos: Ingrese al 3nali:ador de )onsultas con la cuenta del NsaO !ara !oder asignar !ermisos de lectura so"re las ta"las !edidos y clientes a los usuarios .3/IO06 ?#%/0 Select O% Pedidos Manual SQL Server 2000 11+ ._ 8O S!W8rantD-3ccess ^. /E'ODE asentenciaS O% O"?eto &O .Ing.suario02_ 8O S!W8rantD-3ccess ^.suario0.suario06_ 8O S!W8rantD-3ccess ^.suario0.suario01_ 8O S!W8rantD-3ccess ^.3/IO01 y ._ 8O )reados los usuarios !odemos asignarF revocar o negar !ermisos so"re cada uno de los o"?etos de la "ase de datos.suariosL/ol 8O Permite negar !ermisos so"re los o"?etos de una "ase de datos yLo sentencias a utili:ar DENY DE%C asentenciaS O% O"?eto &O .S. Para ello em!learemos instrucciones tales comoJ Permite asignar !ermisos so"re los o"?etos de una "ase de datos yLo sentencias a utili:ar GRANT 8/3%& asentenciaS O% O"?eto &O .se E?em!lo 8O S!W8rantD-3ccess ^. Danny Omar Macario Programacion .S.

suario01F .suario01F . QL )omo o"serva el usuario s lo !uede accesar a la in(ormaci n Iue se es!eci(ic con la instrucci n 8/3%& y no !odr0 reali:ar ninguna de las o!eraciones indicadas en la sentencia DE%C.suario06 Para com!ro"ar las asignaciones reali:adasF conectese al 3nali:ador de )onsultas con la cuenta del .suario06 Programacion ?#%/0 Select )lientes .suario01F .suario06 $E/P D/SE#0 $ELE0E )lientes .suario01F tal como lo muestra la siguiente (iguraJ .na ve: Iue ingreso com!rue"e las siguientes instruccionesJ Select Q Brom Pedidos LQ de"e o"servar la in(ormaci n QL 8O Select Q Brom )lientes 8O LQ SELE)& !ermission denied on o"?ect `)lientes`F data"ase `E?em!lo`F o$ner `d"o`. Manual SQL Server 2000 11A .Ing.suario06 De"e negar el acceso de inserci n y eliminaci n de registros so"re las ta"las antes mencionadasJ $E/P D/SE#0 $ELE0E O% &O 8O O% &O 8O Pedidos .suario01F . Danny Omar Macario &O 8O O% &O 8O .

Danny Omar Macario Programacion Otra de las caracter5sticas Iue "rinda SQL Server es la !osi"ilidad de crear rolesF darles !ermisos es!ec5(icos a estos y luego agregarles usuarios. Los resultados de"en ser los mismos.3/IO0.3/IO02_ 8O S!W3dd/oleMem"er ^MISPE/MISOS_F ^.S.se E?em!lo 8O Select Q Brom )lientes LQ de"e o"servar la in(ormaci n QL 8O Delete )lientes $4ere re!Wclie [ 101 LQ !ermiso negado QL 8O E?ecute la misma secuencia con=ctandose como .PD3&E O% )LIE%&ES &O MISPE/MISOS 8O 34ora Iue ya esta"leci los derec4osF de"e agregar los usuarios Iue con(ormaran dic4o rolJ S!W3dd/oleMem"er ^MISPE/MISOS_F ^.Ing.se e?em!lo go Select Q Brom )lientes LQ !ermiso negado QL Manual SQL Server 2000 112 .S.S. y e?ecutarJ .3/IO06. )omo demostraci n con=ctese a 3nali:ador de )onsultas como NsaO y e?ecute la siguiente secuencia de instruccionesJ .3/IO06_ 8O 34ora Iue com!leto la secuenciaF con=ctese al 3nali:ador de )onsultas con la cuenta del . Luego de"e conectarse con el .se E?em!lo 8O S!W3dd/ole `MisPermisos` 8O 3 continuaci n de"er0 esta"lecer los derec4os Iue tendr0n los integrantes de este rolJ 8/3%& SELE)&F I%SE/& O% )LIE%&ES &O MIS PE/MISOS 8O DE%C DELE&EF .3/IO02 y e?ecute la siguiente secuenciaJ .S.S.

Ing.. Danny Omar Macario 8O Programacion Otra de las (ormas de crear un rol !ersonali:ado es a trav=s del 3dministrador Em!resarial.. Para ello e1!anda la "ase de datos y 4aga clic derec4o so"re la car!eta BuncionesF !ulse so"re %ueva Bunci n de "ase de Datos.F tal como lo muestra la !antallaJ Se !resentar0 la siguiente ca?a de di0logoF indiIue el nom"re y agregue a los usuarios Iue considere necesariosJ Manual SQL Server 2000 119 .

Danny Omar Macario Programacion .suarios en la "ase de datos Iue desea tra"a?ar y 4aga clic derec4o so"re el usuario a asignar derec4osF tal como lo muestra la (igura siguienteJ Luego de !ulsar clic en !ro!iedades o"servar0 una ca?a de di0logo donde de"e !ulsar un cic en el "ot n PermissionsJ Manual SQL Server 2000 120 . &odos los !ermisos Iue se es!eci(iIuen se guardan en la ta"la Sys"rotectsF donde registran Iue usuarios tienen !ermisos !ara leer la in(ormaci n de determinadas ta"lasF Iue usuarios no !odr0n reali:ar modi(icaciones y en general todo lo Iue tenga Iue ver con los usuarios y roles. Estos roles son el eIuivalente de tra"a?ar con gru!os de usuarios en #indo$s %&.na ve: Iue !ulso 3ce!tar !odr0 asignarle todos los derec4os Iue considere necesarios !ara el rolF adem0s Iue !odr0 agregar o retirar integrantes del rol.Ing. Para ello e1!anda la car!eta de . Otra de las maneras Iue !uede a!rovec4ar !ara esta"lecer derec4os es a trav=s del 3dministrador Em!resarial donde !uede 4acer un clic derec4o so"re cada uno de los usuarios yLo gru!os de los cuales necesite esta"lecer niveles de acceso.

M".Ing.$P-ES*$S )rear la "ase de datos Matriculas con el arc4ivo de datos de 10 M". M".na ve: creada la "ase de datos de(ina la creaci n de las siguientes ta"lasJ ALUMNOS Manual SQL Server 2000 121 . Danny Omar Macario Programacion Luego de ello !odr0 o"servar una ventana donde !odr0 !ermitir o negar accesos so"re los o"?etos. y un crecimiento de 1 M". El arc4ivo de log de"e tener inicialmente un tamaKo de . M"F con un tamaKo m01imo de .'I'I$S P. &al como lo muestra la siguiente imagenJ E0E. . y un crecimiento de 1 M".F tamaKo m01imo de 1.

Danny Omar Macario Programacion CALIFICACIONES CATEGORIAS Manual SQL Server 2000 122 .Ing.

Ing. Danny Omar Macario Programacion INSCRITOS PROFESORES Manual SQL Server 2000 12. .

Manual SQL Server 2000 126 .sIlF revise el scri!t y e?ec@telo con la (inalidad de !o"lar la "ase de datos.na ve: Iue termine recu!ere el scri!t 3lumnado.Ing. Danny Omar Macario Programacion SECCIONES .

Danny Omar Macario Programacion -ien una ve: Iue 4emos creado las ta"las y 4emos cargado los valoresF de"emos im!lementar las restricciones 7CO ST%&I TS9 corres!ondientes a las reglas de integridad de cada ta"la. %L0E# 0%+LE Dnscritos %$$ C</S0#%D/0 GHN%lumnosNcodalu G<#ED?/ HEP &codalu' #EGE#E/CES %lumnos&codalu' ?< %L0E# 0%+LE Dnscritos %$$ C</S0#%D/0 GHNSeccionesNsec G<#ED?/ HEP &sec' #EGE#E/CES Secciones&sec' ?< %L0E# 0%+LE Secciones %$$ C</S0#%D/0 GHN3rofesoresNcodprofe Manual SQL Server 2000 12.oriasNcate. 3#D*%#P HEP &cate.Ing.' ?< %L0E# 0%+LE Dnscritos %$$ C</S0#%D/0 3HNDnscritosNalusec 3#D*%#P HEP &codalu sec' ?< %L0E# 0%+LE Calificaciones %$$ C</S0#%D/0 3HNCalificacionesNalusec 3#D*%#P HEP &codalu sec' ?< Des!u=s de crear las de(iniciones !ara asegurar la unicidad de cada (ilaF nos toca im!lementar las restrincciones de claves (or0neas 7*O%EI+ )E( constraint9. . Iniciaremos asignando las restricciones de ti!o clave Princi!al 7'%IM&%( )E(9J 8se *atriculas ?< %L0E# 0%+LE %lumnos %$$ C</S0#%D/0 3HN%lumnosNcodalu 3#D*%#P HEP &codalu' ?< %L0E# 0%+LE Secciones %$$ C</S0#%D/0 3HNSeccionesNsec 3#D*%#P HEP &sec' ?< %L0E# 0%+LE 3rofesores %$$ C</S0#%D/0 3HN3rofesoresNcodprofe 3#D*%#P HEP &codprofe' ?< %L0E# 0%+LE Cate.orias %$$ C</S0#%D/0 3HNCate.

`F 10F109 8O LQ El !ro"lema es Iue el alumno no 4a sido inscrito en la secci n es!eci(icadaF en este caso tra"a?a el BDWInscritosWcodalu.L2001`F +00F 1.L1.1. G<#ED?/ HEP &cate. Danny Omar Macario G<#ED?/ HEP &codprofe' #EGE#E/CES profesores&codprofe' ?< %L0E# 0%+LE Calificaciones %$$ C</S0#%D/0 GHNDnscritosNcodalu G<#ED?/ HEP &codalu sec' #EGE#E/CES Dnscritos&codalu sec' ?< %L0E# 0%+LE 3rofesores %$$ C</S0#%D/0 GHNCate.' #EGE#E/CES Cate. En este caso tra"a?a PDWInscritosWalusec.F 609 Manual SQL Server 2000 12+ .orias&cate.12`F `D009`F `. QL Insert )ali(icaciones 'alues 7`300.Ing.`F `2.' ?< Programacion Binalmente genere el diagrama de "ase de datos Iue de"e o"servarse como el siguienteJ Para !ro"ar el (uncionamiento de los constraints im!lementados e?ecute las siguientes instruccionesJ Insert Inscritos 'alues 7`3001`F `111+`9 8O LQ El !ro"lema se de"e a Iue la llave de inscri!cion es du!licada !or tanto !odemos deducir Iue el alumno ya estudio en esa aula.oriasNcate. QL Insert Secciones 'alues 7`2.

Danny Omar Macario 8O LQ El !ro"lema es Iue el c digo del !ro(esor no esta registrado en la ta"la P/OBESO/ESF en este caso tra"a?a el BDWPro(esoresWcod!ro(e.)odaluF Inserted.PD3&E Secciones SE& 'acantes [ 'acantes G 1 B/OM Secciones VOI% Inserted On Secciones.Sec E%D E%D 8O Mostrar la in(ormaci n de las secciones Select Q Brom Secciones 8O &omemos como re(erencia la secci n 111+ !ues tiene una sola vacante inscri"amos al alumno 3019 en dic4a secci n Insert Inscritos 'alues 7`3019`F `111+`9 8O Manual SQL Server 2000 12A .Sec9 IB b'acantes [ 0 -E8I% /3ISE//O/ 7`%o 4ay vacantes en el aula`F 10F 19 /OLL-3)D &/3%S3)&IO% E%D ELSE -E8I% I%SE/& )ali(icaciones SELE)& Inserted.Sec [ Inserted. E?ecute el siguiente c digoJ .SecF 0F 0 Brom Inserted . QL Programacion Im!lementaremos un Desencadenador !ara inserci n de registros en la ta"la InscritosF de (orma Iue al momento de agregar un registro se valide la dis!oni"ilidad de vacantesF de ser as5 actualice el n@mero de vacantes en la ta"la secciones y agregar un registro en la ta"la )ali(icaciones.Sec [ Inserted.se Matriculas 8O )/E3&E DESE%)3DE%3DO/ Inscri"eW3lumno O% Inscritos BO/ I%SE/& 3s -E8I% DE)L3/E b'acantes int SELE)& b'acantes [ 7Select 'acantes Brom Secciones I%%E/ VOI% Inserted On Secciones.Ing.

Im!lementar el Desencadenador )am"ioSeccion so"re la ta"la InscritosF este se e?ecutar0 al actuali:ar la in(ormaci n del inscrito con un cam"io de secci nF en este caso se veri(icar0 si en la nueva secci n e1isten vacantes de 4a"erlo de"e actuali:ar el n@mero de vacantes incrementando su valor en la antigua secci n y reduciendolo en la nueva secci n.('15#+.(/ SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at' Manual SQL Server 2000 122 .':$&/ @:# #&.([ <rder +y 3at *at /om ?< El segundo car0cter de la secci n indica el curso tomando en cuenta lo siguienteJ c1d '.# SELEC0 3at *at /om Grom %lumnos Dnner Voin Dnscritos <n %lumnos2codalu M Dnscritos2codalu %/$ Dnscritos2Sec M [24.(7/ .1-:5+/9 #. Danny Omar Macario Programacion 'eri(iIue el n@mero de vacantes en la 111+ Select Q Brom Secciones #4ere Sec[`111+` GG 34ora es 0 8O /evisemos la ta"la )ali(icaciones Select Q Brom )ali(icaciones #4ere codalu [ `3019` 8O Intentemos agregar otro alumno a la secci n 111+ Insert Inscritos 'alues 7`301+`F `111+`9 8O En este @ltimo intento de"e mostrarse el mensa?e N%o 4ay vacantesO "ro%uesto Im!lementar el Desencadenador /etiraInscri!cion so"re la ta"la Inscritos el cual de"e e?ecutarse el eliminar un registro de la ta"la InscritosF este Desencadenador de"e eliminar la entrada generada en la ta"la )ali(icaciones adem0s de incrementar el n@mero de vacantes de la secci n de la cual se retira el alumno.1 .$1$ :+ $#)/$.Ing.(1 0 #)$/5#.:.# 1-:5+/& .d SQL Server.-asic c2d '.# -1 &#''(*+ 315 /$.$1$ -1 -(&. M/&.Bo1 c.'*.$# #.#+1. 34ora !ara !racticar los Iuerys im!lementaremos las siguientes consultasJ M/&.# @:# 5:#&./& 1-D12V.#.

('1'(*+ ./& -/& 1-:5+/& '/+ (+.:.'M[.#+#$-/.. Danny Omar Macario Curso M Case !:en SubStrin.(/& #+ '1&/ .$#& ':$&/& SELEC0 /om%pe M &*a=&/om' ^ [ [ ^ *a=&3at' ^ [ [ ^ *a=&*at'' 3romedioGinal M %T?&&/.(1 #+ '1./.:.'M[2[ 0:en [T2Go=[ !:en SubStrin.'M[4[ 0:en [SQL Server[ End 3romedio M &/.# -/& 1-:5+/& @:# '/5)-#.$1$ #.&Dnscritos2Sec 2 .Ing.(1+ '/+ (+.&Dnscritos2Sec 2 .# &:& )$/5#.)$/5#.+Z5#$/ .^/2'52 Grom %lumnos D//E# V<D/ Dnscritos <n %lumnos2codalu M Dnscritos2codalu LEG0 <80E# V<D/ Calificaciones <n Dnscritos2codalu M Calificaciones2codalu %/$ Dnscritos2sec M Calificaciones2sec ?< M/&.'M[2[ 0:en [T2Go=[ !:en SubStrin.&Dnscritos2Sec 2 . count&Dnscritos2codalu' M 4 ?< M/&.^/2'52' Grom %lumnos D//E# V<D/ Dnscritos <n %lumnos2codalu M Dnscritos2codalu D//E# V<D/ Calificaciones <n Dnscritos2codalu M Calificaciones2codalu %/$ Dnscritos2sec M Calificaciones2sec ?roup +y Dnscritos2codalu Aavin.1$/+ -/& .[ 0:en [T2+asic[ !:en SubStrin.&Dnscritos2Sec 2 .$1$ #.# 1-:5+/& @:# #&.[ 0:en [T2+asic[ !:en SubStrin. SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at' Curso M Case !:en SubStrin.^/2'52 Grom %lumnos D//E# V<D/ Dnscritos <n %lumnos2codalu M Dnscritos2codalu D//E# V<D/ Calificaciones <n Dnscritos2codalu M Calificaciones2codalu %/$ Dnscritos2sec M Calificaciones2sec ?< Programacion M/&.'M[4[ 0:en [SQL Server[ End 3romedio M &/.&Dnscritos2Sec 2 .'M[.$1$ .1 &#''(*+ Manual SQL Server 2000 129 .&Dnscritos2Sec 2 .(/ 7#+#$1.('1'(*+ .# -/& ':$&/& @:# #&.

&Dnscritos2Sec 2 .$1$ 1 -/& 1-:5+/& ':0/ )$/5#.^/2'52 Grom %lumnos D//E# V<D/ Dnscritos <n %lumnos2codalu M Dnscritos2codalu LEG0 <80E# V<D/ Calificaciones <n Dnscritos2codalu M Calificaciones2codalu %/$ Dnscritos2sec M Calificaciones2sec !:ere &/.1 ?< Manual SQL Server 2000 1.Ing.(/ #& 510/$ @:# 149 (+.&Dnscritos2Sec 2 .'M[4[ 0:en [SQL Server[ End 3romedio M &/.[ 0:en [T2+asic[ !:en SubStrin.^/2'52 W .(@:# &#''(*+9 ':$&/ 0 )$/D#&/$ SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at' Dnscritos2Sec Curso M Case !:en SubStrin.0 . Danny Omar Macario Select Sec %lumnadoMCount&codalu' Grom Dnscritos ?roup +y sec ?< Programacion M/&.'M[.'M[2[ 0:en [T2Go=[ !:en SubStrin.&Dnscritos2Sec 2 .

Ing. Danny Omar Macario

Programacion

I5)-#5#+.1$ V(&.1& 0 P$/'#,(5(#+./& A-51'#+1,/&

O23#.(%/&4
• • • Entender Iue es una vista Entender Iue es un Procedimientos 3lmacenados Im!lementar 'istas y !rocedimientos

T#51&4

1. 2. .. 6. ;.

<Qu= es una vista> 3gregarF Modi(icar y Eliminar vistas <Qu= es un Procedimientos 3lmacenados> 3gregarF Modi(icar y Eliminar Procedimientos 3lmacenados Bunciones de usuario en SQL Server 2000

3Qu4 es una vista5

,na vista es una ta"la virtual Iue muestra la in(ormaci n relevante !ara el usuario adem0s Iue !ermite enca!sular la com!le?idad de su im!lementaci n. ,na vista !uede mostrar toda la in(ormaci n de una ta"la o de la integraci n de in(ormaci n de m0s de una ta"la. Es decir se !uede a(irmar Iue las vistas tra"a?an como es!ecie de (iltros de las ta"las su"yacentes Iue "rindan la in(ormaci n !resentada !or la vista. Entre las !rinci!ales venta?as del em!leo de las vistas !odemos mencionarJ • • • • Permite mostrar un su"con?unto de (ilas yLo columnas de una ta"la. Permite mostrar in(ormaci n de m0s de una ta"la. Permite reali:ar uniones entre dos o m0s ta"las. Permite mostrar in(ormes resumen.

Manual SQL Server 2000

1.1

Ing. Danny Omar Macario
• Puede de(inirse a !artir de otras vistas

Programacion

)omo o"serva en la re!resentaci n anterior los usuarios !odr0n o"servar s lo las columnas Iue son im!ortantes !ara su tra"a?oF esto da la venta?a de Iue no tengan Iue mani!ular datos innecesarios !ara su la"or. Otra de las venta?as de las vistas es Iue !ueden generarse a !artir de consultas distri"uidas entre origenes de datos 4eterog=neosF de tal manera Iue los usuarios invocan a las vistas en lugar de estar digitando com!le?os Iuerys.

%ntes de implementar sus vistas ten.a en cuenta las si.uientes consideraciones:

S lo !ueden crearse vistas en la "ase de datos activaF aunIue las ta"las yLo vistas Iue son !arte de la de(inici n !uedan encontrarse en distintas "ases de datos.
• • • Se pueden crear vistas a partir de otras vistas2 /o se pueden asociar defaults rule y5o desencadenadores &0ri..ers' a una vista2 La consulta que forma la vista no puede incluir las cláusulas <#$E# +P C<*380E o C<*380E +P /o se pueden construir índices sobre las vistas /o se pueden crear vistas temporales ni vistas basdas en tablas temporales2 Cada una de las columnas empleadas en la vista debe tener un encabe9ado2

Manual SQL Server 2000

1.2

Ing. Danny Omar Macario

Programacion

Agregar6 Modificar y Eliminar una 7ista
C$#1$ V(&.1&

Para crear vistas !odemos em!lear el 3dministrador Em!resarialF reali:ando el siguiente !rocesoJ E1!anda la "ase de datos Matriculas y 4aga clic derec4o so"re la car!eta 'istasF luego !ulse clic so"re la o!ci n %ueva 'ista... tal como lo indica la siguiente (iguraJ

Manual SQL Server 2000

1..

.Ing.J HWI0K EA. Manual SQL Server 2000 1.M *"0I*AJ La cl0usula #I&E E%)/CP&IO%F !ermite ocultar la im!lementaci n de la vistaF la cual !uede ser vista con el stored !rocedure del sistema s%ENel%te@t o desde la ta"la del sistema sysco##ents.. La cl0usula #I&E )EE)D OP&IO%F garanti:a Iue los cam"ios 4ec4os desde la vista !uedan ser o"servados una ve: Iue la o!eraci n (inali:a.4L"0I*AJ AS Sentencias Select HWI0K . Danny Omar Macario Programacion Luego de ello a!arecer0 una !antalla como la siguienteJ Otra de las (ormas de crear una vista es a !artir de la sentencia )/E3&E 'IE#F cuya sinta1is esJ .6 ..KE.4EA0E >IEW FAo#(re de la vistaG HEnca(eIado1= .

na ve: Iue termine de diseKar la vista !ulse )&/LGB6F conteste a(irmativamente a la !regunta y digite el nom"re /elaci n de PromediosF !ulse Enter !ara (inali:ar.Ing. .. Para com!ro"ar la creaci n de la vista en el 3nali:ador de )onsultas digite la siguiente instrucci nJ Select Q Brom c/elacion de Promediosd 8O 'er la sentencia Iue im!lementa la vistaJ Manual SQL Server 2000 1. Danny Omar Macario Programacion Ejemplos: Utilice el Administrador Empresarial para definir una vista con las características que muestra la ilustración: .

Danny Omar Macario S!WEel!&e1t c/elacion de Promediosd 8O Programacion Manual SQL Server 2000 1.Ing.+ .

4L"0I*AJ Manual SQL Server 2000 1.(D('1$ V(&.2J HWI0K EA.)odalu9 3s 3lumnadoF Ma177%1P%29L29 3s MayorPromedioF Min77%1P%29L29 3s MenorPromedioF 3vg77%1P%29L29 3s PromedioSecF Sum7Pension9 3s 3cumulado Brom Inscritos I%%E/ VOI% )ali(icaciones On Inscritos. Danny Omar Macario Programacion 'er las columnas Iue se !resentan en la vista S!WDe!ends c/elaci n de Promediosd 8O Desde el Query 3nally:er de"e crear una vista Iue nos !ermita mostrar un in(orme resumen !or secci n Iue muestre la secci nF el nom"re del !ro(esorF el total de alumnosF el mayor y menor !romedioF el !romedio de la secci n y el monto acumulado de las !ensiones.Sec 3s SeccionF M3H7nom"re9 3s Pro(esorF )ount7Inscritos.1& Para modi(icar la vista utilice la siguiente sinta1isJ AL0E4 >IEW FAo#(re de la >istaG H1Enca(eIado1= .cod3lu [ )ali(icaciones.Sec 8O )om!rue"e la in(ormaci n Iue devuelve la vistaJ Select Q Brom /esumen 8O Mostrar la im!lementaci n de la vistaJ S!WEel!&e1t /esumen 8O M/.Ing.)odPro(e 8rou! "y Inscritos.A .sec [ )ali(icaciones.Sec I%%E/ VOI% Pro(esores On Secciones.codalu 3%D Inscritos. )/E3&E 'IE# /esumen 3S Select Inscritos.Sec [ Secciones..)odPro(e [ Pro(esores.Sec I%%E/ VOI% Secciones On Inscritos..

0G HWI0K .KE.M *"0I*AJ .AS FSentencia SELE.

Sec I%%E/ VOI% Secciones On Inscritos..1& Para eliminar una vista em!lear la siguiente sinta1isJ '4*" >IEW FAo#(re de la vistaG H=..Para !oder com!ro"ar el em!leo de esta sentenciaF e?ecute el siguiente comandoJ 3L&E/ 'IE# /ES.cod3lu [ )ali(icaciones.Sec I%%E/ VOI% Pro(esores On Secciones.Sec 8O 34ora muestre la im!lementaci n de la vista con el siguiente comandoJ S!WEel!&e1t /esumen 8O )omo o"servar0 en el !anel de resultados a4ora ya no se muestra la im!lementaci n de la vista. Lo mismo ocurrir0 si consulta la in(ormaci n de la ta"la del sistema Sys)omments.sec [ )ali(icaciones.nJ )omo e?em!lo !odr5a utili:ar la siguiente instrucci nJ D/OP 'IE# c/elacion de Promediosd 8O .)odalu9 3s 3lumnadoF Ma177%1P%29L29 3s MayorPromedioF Min77%1P%29L29 3s MenorPromedioF 3vg77%1P%29L29 3s PromedioSecF Sum7Pension9 3s 3cumulado Brom Inscritos I%%E/ VOI% )ali(icaciones On Inscritos.Sec 3s SeccionF M3H7nom"re9 3s Pro(esorF )ount7Inscritos.ME% #I&E E%)/CP&IO% 3S Select Inscritos. Select Q Brom Sys)omments 8O E-(5(+1$ V(&.)odPro(e [ Pro(esores.)odPro(e 8rou! "y Inscritos.Sec [ Secciones.codalu 3%D Inscritos.

Select Q Brom c/elacion de Promediosd 8O .

Procedimientos Almacenados . • Procedimientos remotosF son !rocedimientos almacenados en servidores distri"uidos. • Procedimientos localesF son los !rocedimientos almacenados en una "ase de datos. Los !rocedimientos almacenados so!ortan el em!leo de varia"les declaradas !or el usuarioF sentencias !ara toma de decisiones entre otras caracter5sticas. • Procedimientos e1tendidosF son aIuellos Iue nos !ermiten a!rovec4ar las (uncionalidades de otras li"rer5as e1ternas a SQL Server. ti!os de !rocedimientos almacenadosJ • Procedimientos del sistemaF son los Iue se encuentran almacenados en la "ase de datos #aster y algunas en las "ases de datos de usuarioF estos !rocedimientos almacenados "rindan in(ormaci n acerca de los datos y caracter5sticas del servidor. Entre las !rinci!ales caracter5sticas de un !rocedimiento almacenado !odemos mencionarJ • • • • %ceptar parámetros de entrada y devolver varios valores en forma de parámetros de salida al lote o al procedimiento que reali9a la llamada2 Contener instrucciones de pro. En SQL Server e1isten .ecutar directamente las instrucciones del procedimiento2 • • .ecute por primera ve92 3ueden reducir el tráfico de red2 3ueden utili9arse como mecanismo de se. En el nom"re usan como !re(i?o s%E.n stored !rocedure es una colecci n de sentencias del &ransactGSQL las cuales organi:adas l gicamente resuelven algunas de las o!eraciones transaccionales Iue reIuieren los usuariosF estos !rocedimientos se almacenan en la "ase de datos.ramación que realicen operaciones en la base de datos incluidas las llamadas a otros procedimientos2 $evolver un valor de estado que indica si la operación se :a reali9ado correctamente o :abido un error &y el motivo del mismo'2 3ermiten una e.ecución más rápida ya que los procedimientos son anali9ados y optimi9ados en el momento de su creación y es posible utili9ar una versión del procedimiento que se encuentra en la memoria despuCs de que se e. Estos !rocedimientos usan el !re(i?o @%E y se encuentran en la "ase de datos #aster.ecutar un procedimiento almacenado incluso si no cuentan con permiso para e.uridad ya que se puede conceder permisos a los usuarios para e. • Procedimientos tem!oralesF son !rocedimientos locales y sus nom"res em!ie:an con los !re(i?os e o eeF de!endiendo si se desea Iue sea un !rocedimiento glo"al a todas las conecciones o local a la coneccion Iue lo de(ine.

/ *rear Procedi/ientos "l/acenados Para crear un stored !rocedure en SQL Server tiene la !osi"ilidad de utili:ar m@lti!les (ormas entre ellas un asistente !ara la creaci n de !rocedimientos !ara ingresarF eliminar y actuali:ar in(ormaci n en las ta"las.(5(#+. Siga las instrucciones !ara a!rovec4ar el asistenteJ 1./ A-51'#+1.Crear *odificar y Eliminar un P$/'#. En el men@ Eerramientas 4aga clic so"re la o!ci n 3sistentesF y seleccione la o!ci n Iue muestra la (iguraJ .

Luego de !ulsar 3ce!tarF a!arecer0 una !antalla de "ienvenida al asistente . . Pulse Siguiente y tendr0 la !osi"ilidad de elegir Iue "ase de datos utili:ar0..2.

6. Pulse Siguiente y marIue las casillas Iue indican Iue !rocedimientos crear0. . Luego de !ulsar Siguiente a!arecer0 una !antalla Iue indica el (in de los !asos reIueridos !ara crear los !rocedimientos.

4L"0I*A Q J AS Sentencias SQL H.. &am"i=n !uede crear los !rocedimientos con la sentencia )/E3&E P/O)ED./E..HE'34EJ FAo#(re "rocedi#ientoG H OPparámetro tipoDatosQ HR predeterminadoJ H*30"30J J H=.4EA0E "4*. 3l !ulsar Binali:ar a!arecer0 un mensa?e indicando cuantos !rocedimientos se 4an creado... .nJ HWI0K O 4E./& .* "ILE S EA...nJ A$7:5#+.

ecuta2 8tilice la opción #EC<*3DLE cuando emplee valores atípicos o temporales para no anular el plan de e.ecución que está almacenado en la memoria cac:C2 E/C#P30D</ indica que tabla &0&'/55#+.no &_' 2 Los parámetros son locales al procedimiento2 . • . Si crea una ta"la tem!oral !rivada dentro de un !rocedimiento almacenadoF la ta"la tem!oral e1istir0 @nicamente !ara los (ines del !rocedimientoX desa!arecer0 cuando =ste (inalice.n !rocedimiento s lo !uede crearse en la "ase de datos actual.#D1:-. • Se !uede crear otros o"?etos de "ase de datos dentro de un !rocedimiento almacenado. . • Puede 4acer re(erencia a ta"las tem!orales dentro de un !rocedimiento almacenado.021 parámetros2 El nombre del parámetro debe comen9ar con un si. Los !rocedimientos almacenados remotos no intervienen en las transacciones.S)1$<5#. Es un valor predeterminado para el parámetro2 OUTPUT Dndica que se trata de un parámetro de salida2 El valor de esta opción puede devolverse a EQECR80ES2 8tilice los parámetros <80380 para devolver información al procedimiento que llama2 Los parámetros de te=to no se pueden utili9ar como parámetros <803802 [RECOMPILE X ENCRYPTION X RECOMPILE9 ENCRYPTION\ #EC<*3DLE indica que SQL Server no almacena en la cac:C un plan para este procedimiento con lo que el procedimiento se vuelve a compilar cada ve9 que se e. Si se e?ecuta un !rocedimiento almacenado remoto Iue reali:a cam"ios en un servidor SQL Server remotoF los cam"ios no se !odr0n des4acer. Puede 4acer re(erencia a un o"?eto creado en el mismo !rocedimiento almacenadoF siem!re Iue se cree antes de Iue se 4aga re(erencia al o"?eto. Las siguientes instrucciones no se !ueden em!lear dentro de un !rocedimiento. Si e?ecuta un !rocedimiento almacenado Iue llama a otro !rocedimiento almacenadoF el !rocedimiento al Iue se llama !uede tener acceso a todos los o"?etos creados !or el !rimer !rocedimientoF incluidas las ta"las tem!orales.& que instrucción SQL Server codifica la entrada de contiene el te=to de la C#E%0E 3#<CE$8#E2 la Entre otras o"servaciones !odemos mencionarJ • El tamaKo m01imo de un !rocedimiento es de 122 M".$/ El usuario puede tener :asta má=imo de .

sec 8O Para !oder e?ecutar el !rocedimiento em!learemos la siguiente sinta1isJ EHE) ListaPromedios 8O Para ver la in(ormaci n de la im!lementaci n del !rocedimiento almacenadoJ S!WEel!&e1t ListaPromedios 8O Para ver cuales son las columnas Iue !roducen la in(ormaci n !resentada !or el !rocedimientoJ S!WDe!ends ListaPromedios 8O .)/E3&E DEB3.SecF 2F 19[`2` &4en `'.codalu 3%D Inscritos.codalu I%%E/ VOI% )ali(icaciones On Inscritos.LE )/E3&E DESE%)3DE%3DO/ )/E3&E 'IE# Para crear un !rocedimiento desde el 3nali:ador de )onsultas e?ecute las siguientes instruccionesJ .codalu [ Inscritos./E )/E3&E /.-asic` #4en Su"String7Inscritos.SecF 2F 19[`1` &4en `'.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.SecF )urso [ )ase #4en Su"String7Inscritos./E ListaPromedios as SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.codalu [ )ali(icaciones.Bo1` #4en Su"String7Inscritos.sec [ )ali(icaciones.se Matriculas 8O )/E3&E P/O)ED.SecF 2F 19[`.L& )/E3&E P/O)ED.

/E PromPorSeccion 7bseccion c4ar769 [ %.-asic` #4en Su"String7Inscritos.0odificar Procedi/ientos "l/acenados Si se desea modi(icar el !rocedimiento almacenado utilice la siguiente sinta1isJ AL0E4 "4*.SecF 2F 19[`2` &4en `'.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.SecF 2F 19[`1` &4en `'.SecF )urso [ )ase #4en Su"String7Inscritos.sec [ )ali(icaciones../E ListaPromedios #I&E E%)/CP&IO% as SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.nJ HWI0K O 4E.codalu [ )ali(icaciones.codalu 3%D Inscritos.codalu I%%E/ VOI% )ali(icaciones On Inscritos.Bo1` #4en Su"String7Inscritos.* "ILE S EA..4L"0I*A Q J AS Sentencias SQL H.nJ Para ver un e?em!lo realice lo siguienteJ 3L&E/ P/O)ED.SecF 2F 19[`.codalu [ Inscritos...sec 8O Ejemplo: 34ora im!lementaremos un !rocedimiento Iue muestre el !romedio de cada alumno de acuerdo a la secci n indicada en el argumentoJ )/E3&E P/O)ED.HE'34EJ FAo#(re "rocedi#ientoG H OPparámetro tipoDatosQ HR predeterminadoJ H*30"30J J H=.LL9 as .

/% E%D SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.1.codalu I%%E/ VOI% )ali(icaciones On Inscritos./% E%D IB %O& EHIS&S 7Select Sec Brom Inscritos #4ere Sec[bseccion9 -E8I% /3ISE//O/ 7`La seccion no tiene alumnos`F 10F 19 /E&.E'34E FAo#(re del %rocedi#ientoG .codalu 3%D Inscritos.codalu [ )ali(icaciones.SecF 2F 19[`2` &4en `'.Bo1` #4en Su"String7Inscritos.SecF 2F 19[`1` &4en `'.-asic` #4en Su"String7Inscritos.Sec [ bSeccion 8O Para e?ecutar reali:aremos lo siguienteJ EHE) PromPorSeccion 8O EHE) PromPorSeccion ^9090_ 8O EHE) PromPorSeccion ^2.SecF 2F 19[`.SecF )urso [ )ase #4en Su"String7Inscritos.IB bseccion IS %.codalu [ Inscritos.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.sec #EE/E Inscritos._ 8O S!WEel!&e1t PromPorSeccion 8O S!WDe!ends PromPorSeccion 8O -li/inar Procedi/ientos "l/acenados Para eliminar un !rocedimiento utilice el siguiente (ormatoJ '4*" "4*.sec [ )ali(icaciones.LL -E8I% /3ISE//O/ 7`De"e indicar un codigo`F 10F 19 /E&.

Las (unciones escalares devuelven un solo valorF ta"la en linea y Multisentencias devuelven un ti!o de dato ta"la.ndd9 /E&. Los tres ti!os de (unciones ace!tan !ar0metros de cualIuier ti!o e1ce!to el ro$version. ./%S (loat 3S -E8I% /E&.(7/ .)u"o7 b%umero (loat9 /E&. Pueden em!learse en cualIuier lugar incluso incor!orada dentro de sentencias SQL.# D:+'(/+#& El servidor 2000 del SQL utili:a tres ti!os de (uncionesJ las (unciones escalaresF ta"la en linea F (unciones de ta"la de multi sentencias..$nciones -scalares Las (unciones escalares devuelven un ti!o de los datos tal como intF moneyF varc4arF realF etc./%7b(%umero Q b(%umero Q b(%umero9 E%D Otra caracter5stica interesante es Iue las (unciones de usuario so!ortan llamadas recursivasF como se muestra en el siguiente e?em!loF Iue calcula el (actorial de un n@meroJ )/E3&E B.%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro !arametroWscalar c [ de(aultdg cF.%)&IO% d"o. Esta caracter5stica ayudar0 a solucionar los !ro"lemas de reutili:aci n del c digo y dar0 mayor (le1i"ilidad al !rogramar las consultas de SQL./%S ti!oWdeWdatoWscalarWdeWretorno c#I&E ao!ci n S SJJ[fS)EEM3-I%DI%8 h E%)/CP&IO%d c3Sd -E8I% C*.8unciones en SQL Server 2000 +912. T()/& ./% e1!resi nWscalar E%D )omo e?em!lo una (unci n sencilla !ara o"tener un n@mero elevado al cu"oJ )/E3&E B. La sinta1is !ara una (unci n escalar es la siguienteJ )/E3&E B. Microso(t agreg nuevas caracter5sticas a su !roducto SQL Server 2000F y una de las m0s so"resalientes es sin duda la ca!acidad de im!lemtentar (unciones de(inidas !or el usuario.%)&IO% d"o.Bactorial 7 b%umero int 9 /E&./%S I%& .# -1 D:+'(*+ /E&.

Lo Iue sigue es la sinta1is !ara una (unci n de ta"la de multi sentenciasJ )/E3&E B./% c7d sentenciaWselect c9d . Este ti!o de (unci n se usa en situaciones donde se reIuiere m0s l gica y !roceso.3S -E8I% DE)L3/E bi int IB b%umero a[ 1 SE& bi [ 1 ELSE SE& bi [ b%umero Q d"o.$nciones de tabla en l%nea Las (unciones de ta"la en linea son las (unciones Iue devuelven la salida de una sim!le declaraci n SELE)&. La sinta1is !ara una (unci n de ta"la en linea es como sigueJ )/E3&E B./%S &3-LE 3S /E&./%S &3-LE c#I&E ao!cion SJJ[fS)EEM3-I%DI%8 h E%)/CP&IO%gd /E&. La salida se !uede utili:ar adentro de ?oins o Iuerys como si (uera un ta"la de est0ndar.%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro ti!oW!arametroWscalar c [ de(aultdg cF.3utoresPorEstado 7bState c4ar729 9 /E&./%S &3-LE c#I&E ao!ci nS SJJ[fS)EEM3-I%DI%8 h E%)/CP&IO%d c3Sd -E8I% C*..(7/ ./% E%D ./% 7SELE)& Q B/OM 3ut4ors #EE/E state [ bcState9 Las f$nciones de tabla de /$lti sentencias Son similares a los !rocedimientos almacenados e1ce!to Iue devuelven una ta"la.na (unci n InLine !odr5a retornar los autores de un estado en !articularJ )/E3&E B.Bactorial7 b%umero G 1 9 /E&.%)&IO% d"o.# -1 D:+'(*+ /E&.ndd9 /E&.%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro ti!oW!arametroWscalar c [ de(aultdg cF./% 7bi9 E%D .ndd9 /E&..

%o todas las sentencias SQL son v0lidas dentro de una (unci n./SO/ BE&)E Iue devuelven datos del cliente C/-:5+1& '/5):.%)&IO% d"o. Las listas siguientes enumeran las o!eraciones v0lidas e inv0lidas de la (unci nesJ '0lidoJ Las sentencias de asignaci n Las sentencias de )ontrol de Blu?o Sentencias SELE)& y modi(icacion de varia"les locales O!eraciones de cursores so"re varia"les locales Sentencias I%SE/&F . Estas (unciones del sistema se invocan con un sinta1is levemente distinta a las Iue usted !uede crear.1& Las (unciones escalares se !ueden utili:ar !ara crear columnas calculadas en una de(inicion de ta"la.F29F .1.d9 Las (unciones escalares y las de con?unto de (ilas son invocadas con el siguiente (ormatoJ c-Dd !ro!ietario.L-151+.1'(/+#& Las (unciones de(inidas !or el usuario tienen algunas restricciones. Las (unciones del sistema Iue devuelven un ta"la tienen la sinta1is siguienteJ %om"re de Buncion7 cargumentoWe1!rdF cF../ F:+'(/+#& SQL 2000 !ro!orciona algunas (unciones de(inidas !or el usuario a nivel sistema en la "ase de datos Master. Buncion 7cargumentoWe1!rdF cF.. Los argumentos de las (unciones calculadasF columnas dla (ic4alaF constantesF o (unciones incor!oradas. Este e?em!lo muestra un ta"la Iue utilice una (unci n del volumen !ara calcular el volumen de un envase )/E3&E B.d9 L(5(.PD3&EF DELE&E con aria"les Locales Inv0lidasJ 3rmar (unciones no determinadas como 8etDate79 Sentencias de modi(icacion o actuali:acion de ta"las o vistas O!eraciones )..'olume 7 bEeig4t decimal7..F29F bLengt4 decimal7.

LLF #idt4 decimal7.F29 %O& %./% 7bdEeig4t Q bdLengt4 Q bd#idt4 9 E%D )/E3&E &3-LE d"o.LLF Lengt4 decimal7.LLF 'olume 3S 7d"o.)ontainer 7 )ontainerID int %O& %./%S decimal 71.LL /EBE/E%)ES Material7MaterialID9F Manu(acturerID int %O& %.F69 3S -E8I% /E&.F29 %O& %.F29 %O& %.'olume7 Eeig4tF Lengt4F #idt49 9 .LL P/IM3/C DECF MaterialID int %O& %.b#idt4 decimal7.LL /EBE/E%)ES Manu(acturer7Manu(acturerID9 Eeig4t decimal7.F29 9 /E&.

$(2:.# ?#0 )olumnas o columnas cuyo valor @nicamente identi(ica a un registro en una ta"la y no son llaves !rimarias en una columna. (+.#+.1 . &4e (unctions are "ot4 de(ined onF y o!eradas en el set o( values 1-. '/+&.#.$1'. .$1(+.#$#.# In(ormaci n 3dicional Iue com!leta la de(inici n de un o"?eto !ara la documentaci n !ro!uesta o !ara el uso de una a!licaci n e1terna como un Lengua?e de )uarta 8eneraci n768L9 FOREIGN UEY )olumna o columnas cuyo valores son de!endientes y 4an sido migrados de una llave !rimaria o una llave alternativa desde otra ta"la. 1. . 47- 3!licaci n e1terna "asada en un Lengua?e de )uarta 8eneraci nF usada usualmente !ara generar 3!licaciones )liente L Servidor.0)# 6ADT8 Es un ti!o de dato de(inido !or el usuario en el cual se enca!sula un rango de valores de datos y (unciones. 2:&(+#&& $:-# Sentencia escrita en la cual se es!eci(ica como de"e ser la in(ormaci n del sistema o como de"e ser estructurada !ara so!ortar los negocios necesarios. ./51(+ Predetermina ti!os de datos usados mas (recuentemente !or los data item #H.G-/&1$(/ 12&.#$+1.1. '/-:5+ Estructura de datos Iue contiene un dato individual !or registroF eIuivalente a un cam!o en un modelo de -ase de Datos.#H Indice en el cual el orden (5sico y el orden l gico7inde1ado9 es el mismo. '-:&. /elaci n Iue (uer:a a veri(icar reIuerimientos de datosF valores En (orma !redeterminada o integridad re(erencial en una ta"la o columna.

DESENCADENADOR Gorma especial de 3rocedimientos %lmacenados el cual toma efecto cuando se reali9a una transacción SQL en la +ase de $atos ya sea un 83$%0E D/SE0 o $ELE0E2 . TABLE )olecci n de registros Iue tienen columnas asociadas. . PRIMARY UEY )olumna o columnas cuyos valores son identi(icados como valores @nicos en el registro de una ta"la.$(%#$ Parte de el O!en Data"ase )onnectivity 7OD-)9F inter(ace Iue !rocesa llamadas de (unciones del OD-)F reci"e reIuerimientos SQL de un es!eci(ico data sourceF y retorna resultados a la a!licaci n.2' . REFERENCE /elaci n entre una ta"la !adre y una ta"la 4i?o. REFERENCIAL INTEGRITY /eglas de consistencia de datosF es!ec5(icamente las relaciones e1istentes entre !rimary Meys y (oreign Meys de ta"las di(erentes. /.(+.2' O!en Data"ase )onnectivity 7OD-)9F inter(ace la cual !rovee a Po$erDesigner acceso a la data de un Mane?ador de -ase de Datos 7D-MS9 /.#H Estructura de datos "asados so"re una llaveF cuya (inalidad es de(inir la velocidad de acceso a los datos de una ta"la y controlar valores @nicos.na re(erencia !uede relacionar ta"las !or llaves com!artidas o !or columnas es!eci(icas.

R#D#$#+'(1 . El ti!o de datos cNar es un ti!o de datos de longitud (i?a cuando se es!eci(ica la cl0usula %O& %. Si en una columna cNar %O& %.F !or e?em!lo. Los valores m0s cortos Iue el tamaKo de la columna no se rellenan a la derec4a 4asta com!letar el tamaKo de la misma. )uando la o!ci n Q.T$1+&1'. Por e?em!loF si una columna se de(ine como cNar1102 y el dato Iue se va a almacenar es Nm@sicaOF SQL Server almacena este dato como Nm@sicaWWWWO donde NWO indica un "lanco. Los datos cNar o varcNar !ueden ser un car0cter individual o una cadena de 4asta 2.000 caracteres. DECLARE @MyCharVar CHAR(25) SET @MyCharVar = 'R cardo Adoc cados' )uando use comillas sim!les !ara delimitar una constante de car0cter Iue contenga una comilla sim!le incrustadaF utilice dos comillas sim!les !ara re!resentar la comilla sim!le incrustadaF !or e?em!loJ SET @MyCharVar = '!''L"ary' Si los datos Iue se van a almacenar tienen una longitud mayor Iue el n@mero de caracteres !ermitidoF se truncan los datos.LL. Las constantes de caracteres de"en incluirse entre comillas sim!les 7^9 o comillas do"les 7N9.#.LL se inserta un valor m0s corto Iue la longitud de la columnaF el valor se rellena a la derec4a con "lancos 4asta com!letar el tamaKo de la columna. Siem!re se !uede incluir una constante de caracteres entre comillas sim!lesX adem0sF =sta es una !r0ctica recomenda"le. 3 continuaci n se muestra un e?em!lo de &ransactGSQL donde se asigna un valor a una varia"le de car0cter. 8tili9ar datos c:ar y varc:ar Los ti!os de datos cNar y varcNar almacenan datos com!uestos deJ • )aracteres en may@sculas o min@sculasF comoF !or e?em!loF aF " y )."SQL *IP$S "E 7AL$. Por e?em!loF si una columna se de(ine como cNar1102 y en la columna se almacena el valor NEsta es una cadena de caracteres realmente largaOF Microso(tj SQL Serverk trunca la cadena de caracteres a NEsta es unO. El ti!o de datos varcNar es de longitud varia"le. • %umeralesF como 1F 2 .O&ED IDE%&IBIE/ est0 activadaF algunas veces no se !ermite incluir una constante de car0cter entre comillas do"les. • )aracteres es!ecialesF comoF !or e?em!loF bF \ y i. Si la o!ci n 3%SIWP3DDI%8 esta"a desactivada cuando se cre la columnaF cualIuier .

9 y )E3/7109 !ara colocar una nueva l5nea y un retorno de carro en una cadena de caracteresJ PR#$T '% rst & '"(' ) CHAR(*+) ) CHAR(*. "ytes de datosF los datos de car0cter se truncan a 2.1. Si s lo se es!eci(ica una 4ora cuando se esta"lece un valor dateti#e o s#alldateti#eF el valor !redeterminado de la (ec4a es el 1 de enero de 1900.(-(N1$ . Si 3%SIWP3DDI%8 esta"a activado cuando se cre la columnaF los "lancos a la derec4a no se recortar0n.LLF se com!orta igual Iue una columna varcNar con 3%SIWP3DDI%8 desactivadoF y se recortan los "lancos de relleno. • /eali:ar c0lculos de (ec4a y 4oraF como sumar o restar (ec4as.. . Si 3%SIWP3DDI%8 est0 activado cuando se crea una columna cNar %. U. Si estas a!licaciones intentan recu!erar !ar0metros de car0cter de SQL Server versi n A. "ytes de datos de caracteres.LL y los valores son rellenados a la derec4a 4asta el tamaKo de la columna.LLF se com!orta igual Iue una columna cNar %O& %.. Si 3%SIWP3DDI%8 est0 desactivado cuando se crea la columna cNar %. Si s lo se es!eci(ica una (ec4aF la 4ora ser0F de (orma !redeterminadaF 12J00 a. . o anteriores s lo admiten 4asta 2.n o"?eto cNar o varcNar !uede contener cualIuier car0cter de la !0gina de c digos de SQL Server. En los datos dateti#eF !uede reali:ar algunos c0lculos aritm=ticos con las (unciones de (ec4a del sistema. • -uscar una 4ora yLo (ec4a determinada. 7medianoc4e9. En los datos de (ec4a y 4ora !uede reali:ar las siguientes o!eracionesJ • Escri"ir (ec4as nuevas o cam"iar las e1istentes. %o 4ay ti!os de datos di(erentes de 4ora y (ec4a !ara almacenar s lo 4oras o s lo (ec4as.0 o columnas de con?untos de resultados Iue contengan m0s de 2."lanco a la derec4a ser0 recortado de los valores de car0cter almacenados en la columna. La (unci n )E3/ se !uede usar !ara convertir un c digo entero a un car0cter 3S)II.) ) 'S"co'd & '"(' La (orma en Iue se inter!retan los !atrones de "it almacenados en los "ytes de una cadena de caracteres se "asa en la !0gina de c digos de Microso(t SQL Server Iue se 4a es!eci(icado durante la instalaci n. Las a!licaciones de "i"liotecas de "ases de datos y las a!licaciones Iue usan los controladores OD-) de SQL Server de las versiones SQL Server +. Esto resulta de utilidad cuando se intenta es!eci(icar caracteres de control comoF !or e?em!loF un retorno de carro o un avance de l5nea.# D#'I1 0 I/$1 Microso(tj SQL Serverk tiene los ti!os de datos dateti#e y s#alldateti#e !ara almacenar datos de (ec4a y 4ora..tilice )E3/71. ./& . "ytes.m..

...('/ . • SQL Server A. de a"ril de 1992`9 • Bormatos num=ricos de (ec4a 7!or e?em!loF `1.L6L1992`F `1. 7de (orma !redeterminada9.na cadena de (ec4a Iue (uncione !ara los (ormatos de (ec4a Iue es!era un idioma !uede resultar irreconoci"le si la consulta se e?ecuta mediante una cone1i n Iue utili:a un idioma y con(iguraci n de (ormato de (ec4as di(erentes. SQL Server reconoce los datos de (ec4a y 4ora incluidos entre comillas sim!les 7`9 con los siguientes (ormatosJ • Bormatos al(a"=ticos de (ec4a 7!or e?em!loF `1.# -1& D#'I1& Microso(tj SQL Serverk !ermite es!eci(icar datos de (ec4as con un mes indicado con su nom"re com!leto 7!or e?em!loF 3"ril9 o la a"reviaci n del mes dado 7!or e?em!loF 3"r9 en el idioma actualX las comas son o!cionales y las may@sculas se !asan !or alto./ 1-D12V.m. .F !ero no (unciona en las cone1iones reali:adas con otros idiomasJ CREATE V#E. • Para "uscar un valor !arcial de (ec4a u 4oraF use el o!erador LIDE. Por e?em!loF la vista siguiente (unciona correctamente en cone1iones reali:adas con el idioma con(igurado como ingl=s de EE.3 continuaci n se muestran algunas directrices acerca de la utili:aci n de datos de (ec4a y 4oraJ • Para "uscar una coincidencia e1acta tanto de (ec4a como de 4oraF use un signo igual 7[9. Puesto Iue los (ormatos de !resentaci n est0ndar no incluyen segundos ni milisegundosF no !uede "uscarlos con LIDE y un !atr n de coincidenciaF a menos Iue utilice la (unci n )O%'E/& con el !ar0metro estilo esta"lecido en 9 109. De"e tomar las mismas !recauciones cuando utilice constantes dateti#e en o"?etos !ermanentes de "ases de datos internacionales comoF !or e?em!loF las restricciones de ta"la y las cl0usulas #EE/E de vistas.Dat"s AS SELECT / %R!M $orth0 'd(d1o(!rd"rs -HERE !rd"rDat" 2 'May *3 *445' )uando utilice constantes dateti#e en consultas e?ecutadas en cone1iones Iue utili:an di(erentes con(iguraciones de idiomaF de"e tomar !recauciones !ara com!ro"ar Iue las (ec4as se ace!tan en todas las con(iguraciones de idioma. Microso(t SQL Server devuelve valores de (ec4a y 4ora Iue coincidan e1actamente con el mesF d5a y aKoF y a la 4ora e1acta 12J00J00J000 a.0 eval@a las constantes dateti#e en tiem!o de e?ecuci n. de a"ril de 19929 • Bormatos de cadenas sin se!arar 7!or e?em!loF `1992120A`F `12 de Diciem"re de 1992`9 F/$51.USA. 3lgunas directrices !ara la utili:aci n de (ormatos al(a"=ticos de (ec4a sonJ . SQL Server convierte !rimero las (ec4as al (ormato dateti#e yF a continuaci nF a varcNar..

0 se inter!reta como 19. F/$51.8:. .*5 << *5.7*4849. )uando use el (ormato num=rico de (ec4aF es!eci(iIue el mesF d5a y aKo en una cadena con "arras diagonales 7L9F guiones 7G9 o !untos 7.9 como se!aradores. Los valores mayores o iguales Iue el valor de esta o!ci n !ertenecen al siglo anterior al aKo reducido. Por e?em!loF el valor de la o!ci n two digit year cuto$$ es 20.7.7.(2R. y .# D#'I1 Microso(tj SQL Serverk !ermite es!eci(icar datos de (ec4a en la Iue a!arece un mes en (orma de n@mero.8: << 7*4849.0. se inter!reta como 202.8:. Por e?em!loF .7.L20L9A es el d5a 20 de mayo del aKo 199A. lstos son (ormatos al(a"=ticos v0lidos !ara los datos de (ec4a de SQL Server 7los caracteres c d indican caracteres o!cionales9J A6r7 &8 7*58738 *449 A6r7 &8 *5738 7*4849 A6r7 &8 *449 7*58 7*58 A6r7 &8738 *449 *5 A6r7 &87387*4849 *5 7*4849 a6r7 &8 7*58 *449 a6r7 &8 *449 APR7#L8 7*58 *449 7*58 APR7#L8 • Si es!eci(ica solamente los dos @ltimos d5gitos del aKoF los valores Iue son menores Iue los dos @ltimos d5gitos de la o!ci n de con(iguraci n two digit year cuto$$ 7reducci n del aKo a dos d5gitos9 !ertenecen al mismo siglo Iue el aKo reducido. )on la instrucci n SE& D3&EBO/M3& !uede cam"iar el orden de la (ec4aF lo Iue tam"i=n !uede a(ectar al (ormato de la 4oraF seg@n el idioma.• • Incluya los datos de (ec4a y 4ora entre comillas sim!les 7^9.7S7) >> &mdy' 7.8: << 7*4849. • La con(iguraci n de sesi n SE& D3&EBO/M3& no se a!lica cuando se es!eci(ica el mes de (orma al(a"=tica./ +:5V$('/ . Esta cadena de"e a!arecer de la (orma siguienteJ n@mero se%arador n@mero se%arador n@mero c4orad c4orad Estos (ormatos num=ricos son v0lidosJ 7.7*4849 << *5.7*4849.:8.*5.:8. Para evitar la am"igmedadF utilice aKos de cuatro d5gitos.7.0 7valor !redeterminado9F 2.7*4849 << 7.8:<*5<7*4849 << R0S12.*5 << (=dy) (=dy) (=yd) (d=y) (dy=) (yd=) (y=d) )uando el idioma est0 esta"lecido a usEenglisNF el orden !redeterminado de la (ec4a es mda. • Si (alta el d5aF se su!one el !rimer d5a del mes.*5.

>5. %o se distingue entre may@sculas y min@sculas en 3M o PM. Los datos de (ec4a se !ueden es!eci(icar con cuatroF seis u oc4o d5gitosF una cadena vac5a o un valor de 4ora sin un valor de (ec4a.8AM Puede es!eci(icar el su(i?o 3M o PM !ara indicar si el valor de la 4ora es anterior o !osterior a las 12 del mediod5a.m. Las 4oras se !ueden es!eci(icar con el relo? de 12 o de 26 4oras. F/$51. Por e?em!loF 12L10L02 se !uede inter!retar de seis (ormas distintasF seg@n la con(iguraci n de D3&EBO/M3&.:*5 . La con(iguraci n de sesi n SE& D3&EBO/M3& no se a!lica a las entradas de (ec4a totalmente num=ricas 7entradas num=ricas sin se!aradores9. a 2. 7PM9.7>2.#+1 &(+ &#)1$1$ Microso(tj SQL Serverk !ermite es!eci(icar datos de (ec4a como una cadena sin se!arar. *:>+. El mes y el d5a de"en ser siem!re de dos d5gitos./ . .8:7>+. Si el orden no coincide con la con(iguraci nF los valores no se inter!retan como (ec4as 7!uesto Iue se encuentran (uera del intervalo9F o los valores se inter!retan incorrectamente.# '1.La con(iguraci n de SE& D3&EBO/M3& determina c mo se inter!retan los valores de (ec4a. re!resentan 4oras !osteriores al mediod5aF inde!endientemente de si se es!eci(ica PM.>2.(48 :a= : PM 7. a 2. El valor 26J00 no es v0lidoJ use 12J003MF 12J00 o 00J00 !ara re!resentar la medianoc4e. lste es el (ormato v0lido de una cadena sin se!ararJ 7*4849. El mes y el d5a se esta"lecen a 1 de enero. Incluya cada (ormato entre comillas sim!les 7^9.# I/$1 Microso(tj SQL Serverk reconoce los siguientes (ormatos de datos de 4ora. De (orma !redeterminadaF las 4oras del intervalo de 0 a 12 son a./& . %o es v0lido es!eci(icar PM en una 4ora del intervalo de 0 a 12.na cadena de s lo cuatro d5gitos se inter!reta como el aKo. 73M9F y las 4oras del intervalo de 1.m. *:>+. son !.>4448 *:>+. Las 4oras del intervalo 1. Las cadenas de seis u oc4o d5gitos se inter!retan siem!re como amd. F/$51.. )uando se es!eci(ican s lo cuatro d5gitosF es necesario incluir el siglo.7>2. Las 4oras del intervalo de 1a 12 re!resentan 4oras antes del mediod5a si se es!eci(ica 3M y re!resentan 4oras !osteriores al mediod5a si se es!eci(ica PM.

y 3DO !ueden usar este (ormato de marca de 4ora de OD-) !ara re!resentar (ec4as y 4oras.dd ""JmmJssc.G02 01J2.J. El ti!o de datos de marca de 4ora de OD-) y OLE D.()/L(.#] Es el valor de la secuencia de escape2 valor+onstante debe se.fffd Los siguientes son e?em!los de constantes de 4ora y (ec4a de OD-)J f ts `1992G0.0F veinte segundos y una d=cima.mmGdd ""JmmJssc.9.#$1Especifica el tipo de la secuencia de escape2 Las marcas de :ora tienen tres indicadores ti#oLiteral: .0J20J1 signi(ica las 12J.& M marca de :ora &:ora ^ fec:a'2 ]%1-/$C/+&. Las a!licaciones Iue usan las 3PI "asadas en OD-)F OLE D.guarda (ec4as y 4oras.7D-8.uir estos formatos para cada ti#oLiteral2 tipoLiteral d t ts $or#ato valorConstante aaaa. M sólo :ora2 .(5# .IDGSQL9 ace!tada !or Microso(t OLE D.1+.12. Este (ormato de marca de 4ora de OD-) lo admite tam"i=n la de(inici n del lengua?e de OLE D. F/$51.Los milisegundos se !ueden !receder de dos !untos 7J9 o un !unto 7. .0F veinte segundos y una mil=simaX 12J.+.J.1./ .# ODBC La 3PI de OD-) de(ine secuencias de esca!e !ara re!resentar valores de (ec4a y de 4oraF Iue OD-) llama datos de marca de 4ora.1 signi(ica las 12J.J61` g %o con(unda el nom"re del ti!o de datos de marca de 4ora de OD-) y OLE D7timestam!9 con el nom"re del ti!o de datos ti#esta#% de &ransactGSQL.0J20.. Por e?em!loF 12J.Provider (or SQL Server. Las secuencias de esca!e de marcas de 4ora de OD-) tienen el (ormatoJ O tipoLiteral TvalorConstanteT Q .#.` g f d `1990G10G02` g f t `1. M sólo fec:a2 . El ti!o de datos ti#esta#% de &ransactGSQL es un ti!o de datos "inario con valores no relacionados con el tiem!o. Si se !receden de dos !untosF el n@mero signi(ica mil=simas de segundo. Si se !recede de un !untoF un @nico d5gito signi(ica d=cimas de segundoF dos d5gitos signi(ica cent=simas de segundo y tres d5gitos signi(ica mil=simas de segundo.fffd aaaaGmm.

p y s de"en seguir la reglaJ 0 a[ s a[ p a[ .16A. U./& .62.A+2 y ..(-(N1$ .#'(51-9 D-/1.2. En 0ransactUSQL= nu#eric es un sinóni#o del ti%o de datos deci#al. )ualIuier (racci n generada !or estas o!eraciones ser0 truncadaF no redondeada. • smallint &iene una longitud de 2 "ytes y almacena n@meros entre G.se el ti!o de datos deci#al !ara almacenar n@meros con decimales cuando los valores de datos se de"an almacenar e1actamente como se es!eci(ican. Los dos atri"utos Iue de(inen las columnasF varia"les y !ar0metros deci#al sonJ • p Es!eci(ica la !recisi nF o el n@mero de d5gitos Iue !uede contener el o"?eto.A+A. Los o"?etos y e1!resiones enteras se !ueden usar en cualIuier o!eraci n matem0tica.2.+6A..62.+62 y 2.#$/& Los enteros son n@meros com!letos.(-(N1$ . Por e?em!loF SELE)& . %o es necesario incluir los datos enteros entre comillas sim!les como los datos de car0cter o de (ec4a y 4ora. 0 $#1- El ti!o de datos deci#al !uede almacenar 4asta . • tinyint &iene una longitud de 1 "yte y almacena n@meros entre 0 y 2. devuelve el valor 1F no el valor 2 Iue devolver5a si se redondeara el resultado (raccionario.2.U.1.2 d5gitos y todos !ueden estar a la derec4a del se!arador decimal..16A. La !ro!iedad IDE%&I&C se usa normalmente !ara generar autom0ticamente n@meros e1clusivos de identi(icaci n o claves !rinci!ales. El ti!o de datos deci#al almacena una re!resentaci n e1acta del n@meroX no 4ay una a!ro1imaci n del valor almacenado. . Los ti!os de datos enteros son los @nicos Iue se !ueden usar con la !ro!iedad IDE%&I&CF Iue es un n@mero Iue se incrementa autom0ticamente. • s Es!eci(ica la escalaF o el n@mero de d5gitos Iue !uede ir a la derec4a del se!arador decimal.1. Microso(tj SQL Serverk tiene tres tamaKos distintos de ti!os de datos enterosJ • integer o int &iene una longitud de 6 "ytes y almacena n@meros entre G2.L. ./& #+.. %o contienen decimales o (racciones.

/& D-/1. La es!eci(icaci n IEEE A. En su lugarF use los ti!os de datos enterosF deci#alF #oney o s#all#oney. Puesto Iue la re!resentaci n "inaria de un n@mero en !unto (lotante !uede usar cualIuiera de los esIuemas v0lidos de redondeoF es im!osi"le cuanti(icar de (orma !recisa un valor en !unto (lotante.1. Microso(tj SQL Serverk usa el redondeo 4acia arri"a. Por e?em!loF su!onga Iue tiene un arc4ivo grande de te1to 7.6 !ro!orciona cuatro modos de redondeoJ redondear al m0s cercanoF redondear 4acia arri"aF redondear 4acia a"a?o y redondear 4acia cero.(-(N1$ . De"ido a esta naturale:a a!ro1imada de los ti!os de datos $loat y realF no los use cuando necesite un com!ortamiento num=rico e1actoF comoF !or e?em!loF en a!licaciones (inancierasF en o!eraciones Iue conlleven un redondeo o en com!ro"aciones de igualdad. Por e?em!loF una carta modelo creada !ara clientes internacionales seguramente contendr0 ortogra(5as y caracteres internacionales usados en varias culturas distintas.000 caracteres se almacenan en el ti!o de datos nte@t. Sin em"argoF a veces la di(erencia se 4ace notar. .000 caracteres y datos "inarios con m0s de 2. &odos son !recisos !ara garanti:ar la e1actitudF aunIue !ueden dar como resultado valores en !unto (lotante ligeramente distintos. # (517# Microso(tj SQL Serverk almacena cadenas de caracteres con m0s de 2. Sin em"argoF si necesita almacenar logoti!os de em!resaF almacenados actualmente como im0genes &IBB 7.#H. El com!ortamiento de $loat y real sigue la es!eci(icaci n IEEE A.cada unoF cree una columna del ti!o de datos i#age. 3lmacene estos datos en una columna nte@t. Si los datos del te1to Iue desea almacenar se encuentran en (ormato . Evite usar columnas $loat o real en las condiciones de "@sIueda de la cl0usula #EE/EF es!ecialmente los o!eradores [ y aS.U.&IB9 de 10 D.000 "ytes en ti!os de datos es!eciales llamados te@t e i#age.1. Estos datos desea Iue se almacenen como un @nico datoF en lugar de integrarlos en las diversas columnas de las ta"las de datos.(-(N1$ .nicode su!eriores a 6. U. Los ti!os de datos num=ricos a!ro1imados no almacenan los valores e1actos es!eci(icados !ara muc4os n@merosX almacenan una a!ro1imaci n muy !recisa del valor. Las cadenas . )on este !ro! sito !uede crear una columna del ti!o de datos te@t.nicodeF use el ti!o de datos nte@t. 0 $#1- Los ti!os de datos $loat y real se conocen como ti!os de datos a!ro1imados./& . Para muc4as a!licacionesF la !eIueKa di(erencia entre el valor es!eci(icado y la a!ro1imaci n almacenada no es a!recia"le.6 acerca de los ti!os de datos num=ricos a!ro1imados.&H&9 de in(ormaci n de clientes Iue es necesario im!ortar a la "ase de datos de SQL Server. Es me?or limitar las columnas $loat y real a las com!araciones S o a.

2+(*: )onstantes uniVueidenti$ierJ .. )ualIuier inter!retaci n de los datos de una columna i#age de"e ser reali:ada !or la a!licaci n.E*2EA .1+.*(5E5 .*.**<?:2D<.E Las constantes (it se re!resentan con los n@meros 0 o 1.SQL Server inter!reta los datos te@t como series de caracteres mediante la !0gina de c digos instalada con SQL Server. Los datos de ti!o i#age se almacenan como una cadena de "its y no son inter!retados !or SQL Server. 3lgunos e?em!los de constantes sonJ • • • • • )adenas de caracteresJ '!''?r "'' 'Th" &"@"& Aor Bo1.:%C49:%%' Para las constantes num=ricasF use los o!eradores unarios P y G cuando sea necesario es!eci(icar el signo del valor num=ricoJ . &odo lo Iue 4ace una columna i#age es !ro!orcionar una u"icaci n !ara almacenar la secuencia de "its Iue con(orman los datos de la imagen.: 2(. Por e?em!loF una a!licaci n !odr5a almacenar datos en una columna i#age con el (ormato -MPF &IBBF 8IB o VPE8.(-(N1$ C/+&.>2:' '. De!ende de la a!licaci n Iue lee los datos de la columna i#age reconocer o no el (ormato de los datos y mostrarlos correctamente.C.*5. Las constantes se llaman tam"i=n literales.:FAE%DD.:>2: PM' • • • )onstantes integerJ *F4: 2 )onstantes deci#alJ *F4:(*2. d> Cd shou&d 1" 1"t0""' Cd a'd Cd(' )adenas .:.na constante es un s5m"olo Iue re!resenta el valor es!ec5(ico de un dato.1:2d.nicode. U. SQL Server inter!reta los datos nte@t como series de caracteres con la es!eci(icaci n de .c. )onstantes $loat y real *.#& .4F' '*:>+..nicodeJ $'M chD&' )onstantes de cadenas "inariasJ .:Ac49:AA '9%49*4%%<F?F9<D.E94.EAA*4499AF9F1**d.(5E<2 • • )onstantes #oneyJ G*2 G5:2. )onstantes dateti#eJ 'A6r & *53 *44F' '. El (ormato de las constantes de!ende del ti!o de datos del valor Iue re!resenta.

# ':$&/$#& .) EJECUTE K @".. Las categor5as en Iue se dividen las (unciones sonJ F:+'(/+#& .?o'us.2 )omo el valor Iue de"e colocarse en una columna de la (ila actual.)G*59(:5 <5+(52EF <*24(:2 )::2 U.# 17$#71.ES de una instrucci n I%SE/&J UPDATE MyTa1&" SET Pr c" = G44(44 -HERE Part$=1r = *2+: #$SERT #$T! MyTa1&" VALUES (*2+53 GFF(FF) • )omo la cadena de caracteres Iue es!eci(ica el te1to del mensa?e emitido !or una instrucci n P/I%& o /3ISE//O/J • )omo el valor Iue se va a !ro"ar en una instrucci n condicionalF comoF !or e?em!loF una instrucci n IB o (unciones )3SEJ #% (@@SALEST!TAL I G*.uración2 F:+'(/+#& . 3 continuaci n se muestran algunos e?em!losJ • • )omo un valor constante de una e1!resi n aritm=ticaJ SELECT Pr c" ) G(*.Proc"dur" PR#$T 'Th s s a ="ssaH"(' 8unciones Microso(tj SQL Serverk dis!one de (unciones integradas !ara reali:ar ciertas o!eraciones r0!ida y (0cilmente."SQL Las constantes se !ueden usar de muc4as (ormas en &ransactGSQL.(-(N1$ '/+&.. %R!M MyTa1&" )omo el valor con el Iue se com!ara una columna en una cl0usula #EE/EJ SELECT / %R!M MyTa1&" -HERE Last$a=" = '!''?r "'' • • )omo el valor Iue se va a colocar en una varia"leJ SET @D"c =a&Var = <*2. Esto se es!eci(ica con la cl0usula SE& de la instrucci n ..emplos son C<8/0 S8* *D/ y *%Q2 F:+'(/+#& ../ #eali9an operaciones que combinan varios valores en uno2 E...(.1+.# '/+D(7:$1'(*+ Son funciones escalares que devuelven información acerca de la confi.PD3&E o la cl0usula '3L.#& #+ T$1+&1'.(.

etos de base de datos2 F:+'(/+#& .1.1.1.$evuelven información acerca del estado de un cursor2 F:+'(/+#& .#.1.&(&.('1& #eali9an operaciones tri./& .#.# &#7:$(.S#D() K! .onomCtricas operaciones numCricas2 F:+'(/+#& .('1& .# . SELECT D?.(5# y &51--. CREATE V#E.eomCtricas y demás Las (unciones se !ueden usar o incluir enJ • La lista de selecci n de una consulta Iue usa una instrucci n SELE)& !ara devolver un valor.na condici n de "@sIueda de una cl0usula #EE/E de una instrucci n SELE)& o de modi(icaci n de datos 7SELE)&F I%SE/&F DELE&E o .etos del sistema2 F:+'(/+#& .Sho0MyE=6&oy="'t#'Ao AS SELECT / %R!M E=6&oy""s -HERE E=6&oy""#D = SUSUAR#!.#51 Guncionan en o informan acerca de varias opciones y ob.1.ar de una referencia de tabla de una instrucción de 0ransact>SQL2 F:+'(/+#& ./& $evuelven información acerca de los atributos de las bases de datos y de los ob.&(&.G&.#.$AME() • .PD3&E9 !ara limitar las (ilas adecuadas !ara la consulta.#+1 0ratan valores 'I1$ %1$2(+1$02 F:+'(/+#& . $evuelven información acerca de usuarios y funciones2 F:+'(/+#& .#H.untos de filas que se pueden usar en el lu. SELECT / %R!M 7!rd"r D"ta &s8 -HERE Lua't ty = (SELECT MAJ(Lua't ty) %R!M 7!rd"r D"ta &s8) • La condici n de "@sIueda 7condici n #EE/E9 de una vista !ara 4acer Iue la vista se ada!te din0micamente al usuario o entorno en tiem!o de e?ecuci n. e (517#2 %1$'I1$ +'I1$ +%1$'I1$ 2(+1$0 y .# '1./ # (517#+ 0ratan valores .# '/+3:+.#51 $evuelven información relacionada con el rendimiento de SQL Server2 F:+'(/+#& .# 5#.# #&.#.# D(-1& $evuelven con.# D#'I1 0 I/$1 0ratan valores .(5#2 F:+'(/+#& 51.#H.#5<.1.

.n desencadenador o restricci n )EE)D !ara com!ro"ar los valores es!eci(icados cuando se insertan datos.n desencadenador o restricci n DEB3.3/IOWSID y S.3/IOW%3ME 7o S.) $ULL3 Co'tactPho'" VARCHAR(*+) $ULL) • .S. CREATE TA?LE Sa&"sCo'tacts ( Sa&"sR"6#D #$T PR#MARM NEM CHECN (Sa&"sR"6#D = SUSUAR#!.L& !ara suministrar un valor en el caso de Iue no se es!eci(iIue ninguno en una instrucci n I%SE/&.S.3/IOWID y .S. Si no se !ro!orcionanF el valor !redeterminado es el de la "ase de datosF eIui!o 4ostF inicio de sesi n o usuario de "ase de datos actual.3/IOW%3ME .na e1ce!ci n son las (unciones nil0dicas 7(unciones Iue no toman !ar0metros9 usadas con la !ala"ra clave DEB3.• • )ualIuier e1!resi n. Las (unciones se !ueden anidar 7una (unci n se usa dentro de otra (unci n9.S. Este gru!o de cinco !ares de (unciones del sistema !ara "ases de datosF 4ostsF o"?etosF inicios de sesi n y usuarios devuelven un nom"re cuando se les !ro!orciona un identi(icador y devuelven un identi(icador cuando se les !ro!orciona un nom"reJ • D-WID y D-W%3ME • EOS&WID y EOS&W%3ME • O-VE)&WID y O-VE)&W%3ME • S.S. 8tili9ar funciones del sistema Las (unciones del sistema !ermiten Iue tenga acceso a la in(ormaci n de las ta"las del sistema de Microso(tj SQL Serverk sin tener acceso directamente a las ta"las del sistema.3/IOWS%3ME9 • .S#D() ) K! Las (unciones se usan siem!re con !ar=ntesisF incluso cuando no 4aya !ar0metros.S#D() )3 Co'tact$a=" VARCHAR(5.) $ULL3 Co'tactPho'" VARCHAR(*+) $ULL3 -h"'Cr"at"d DATET#ME DE%AULT KETDATE()3 Cr"ator #$T DE%AULT SUSUAR#!. 3lgunas vecesF los !ar0metros Iue es!eci(ican una "ase de datosF eIui!oF inicio de sesi n o usuario de "ase de datos son o!cionales. CREATE TA?LE Sa&"sCo'tacts (Sa&"sR"6#D #$T PR#MARM NEM CHECN (Sa&"sR"6#D = SUSUAR#!.3/IOWID y S. .S.S#D() )3 Co'tact$a=" VARCHAR(5.L&.

# '1. En este e?em!lo se devuelve la longitud de la columna y la longitud de los datos de la columna LastAa#e de la ta"la E#%loyees.L"'Hth3 DATALE$KTH(Last$a=") AS DataL"'Hth %R!M E=6&oy""s -HERE E=6&oy""#D I 9 Aota Se recomienda usar las (unciones del sistemaF las vistas del sistema de in(ormaci n o los !rocedimientos almacenados del sistema !ara o"tener acceso a la in(ormaci n del sistema sin consultar directamente las ta"las del sistema. En este e?em!lo se recu!era el nom"re del usuario actual conectado 7mediante 3utenticaci n de SQL Server9. La mayor !arte de las (unciones de cadena se !ueden usar s lo en los ti!os de datos cNarF ncNarF varcNar y nvarcNar o en los ti!os de datos Iue se convierten a ellos im!l5citamente. . Las ta"las del sistema !ueden cam"iar signi(icativamente entre versiones de SQL Server.Estas (unciones o(recen una (orma (0cil de convertir un nom"re a un identi(icadorF y un identi(icador a un nom"re. Por e?em!loF use la (unci n D-WID !ara o"tener un n@mero de Id. Las (unciones de cadena se !ueden usar !araJ • /ecu!erar s lo una !arte de una cadena 7S. En los datos (inary y var(inary se !ueden usar tam"i=n unas cuantas (unciones de cadena.LE$KTH('E=6&oy""s'3 'Last$a="') AS Co&. SELECT SUSUAR#!. • )OLWLE%8&E devuelve la longitud de una columnaF no la longitud de ninguna cadena individual almacenada en la columna. . • )OLWLE%8&E Devuelve la longitud de una columna.(-(N1$ D:+'(/+#& .#+1 Las (unciones de cadena se usan !ara reali:ar varias o!eraciones en cadenas de caracteres y "inariasF y devuelven valores IueF normalmenteF son necesarios !ara las o!eraciones con los datos de caracteres.-S&/I%89. SELECT C!L. de "ase de datos en lugar de e?ecutar una instrucci n SELE)& de la ta"la syso(+ects. U.$AME() Las siguientes (unciones son similaresF !ero no se !roducen en !ares com!lementarios y necesitan m0s de un !ar0metro de entradaJ • )OLW%3ME Devuelve un nom"re de columna.se la (unci n D3&3LE%8&E !ara determinar el n@mero total de caracteres en un valor determinado. • I%DEHW)OL Devuelve el nom"re de la columna de un 5ndice.

Por e?em!loF insertar la cadena Nuna ve:O en una cadena e1istente NlraseO !ara !roducir la cadena Nlrase una ve:O. USE $orth0 'd SELECT SU?STR#$K(% rst$a="3 *3 *)3 Last$a=" %R!M E=6&oy""s En este e?em!lo se muestran el segundoF tercero y cuarto caracteres de la constante de cadena a"cde(. )on )E3/I%DEHF el !atr n es una cadena de literales 7sin caracteres comod5n9. P3&I%DEH !uede usar caracteres comod5nF mientras Iue )E3/I%DEH no !uede. U. En este e?em!lo se muestra la !rimera inicial y el nom"re de cada em!leadoF comoF !or e?em!loF 3 Buller.-S&/I%8 devuelve una !arte de un car0cter o cadena "inariaF o una cadena de te1toF y toma tres !ar0metrosJ • . • )oncatenar o com"inar cadenas en una sola.FAF almacenado como $loatF a cNar9. Las (unciones toman dos !ar0metrosJ • El !atr n cuya !osici n se desea o"tener.%DEH y DIBBE/E%)E9.na cadena de caracteres o "inariaF un nom"re de columna o una e1!resi n Iue da como resultado una cadena e incluye un nom"re de columna. Por e?em!loF la !osici n de la letra 3 en NnQu= d5a tan "onitoiO.# CJARINDEM 0 PATINDEM Las (unciones )E3/I%DEH y P3&I%DEH devuelven la !osici n de inicio del !atr n Iue se es!eci(iIue. • -uscar una !osici n de inicio de una cadena !articular en una columna o e1!resi n. SELECT E = SU?STR#$K('a1cd"A'3 23 +) E <<<<<<<<<< 1cd (* ro0(s) aAA"ct"d) C/5)1$1'(*+ .• -uscar similitudes en el sonido de una cadena de caracteres 7SO. )on P3&I%DEHF el !atr n es una cadena de literales Iue !uede contener caracteres comod5n. Por e?em!loF com"inar un nom"reF a!ellido y segundo nom"re o inicial en un nom"re com!leto. • Insertar una cadena es!ec5(ica en una cadena e1istente. . • )onvertir un valor Iue no sea de cadena a un valor de cadena 7comoF !or e?em!loF convertir el valor 1. • La longitud 7en n@mero de caracteres o en n@mero de "ytes !ara (inary9 de la cadena Iue se va a devolver. • La !osici n en la Iue de"e em!e:ar la su"cadena.(-(N1$ SUBSTRING La (unci n S.

d = 'TC+2*F' lste es el con?unto de resultadosJ <<<<<<<<<<<<<<<< :9 (* ro0(s) aAA"ct"d) Si no restringe las (ilas en las Iue "uscarF la consulta devolver0 todas las (ilas de la ta"la e indicar0 valores distintos de cero !ara las (ilas en las Iue 4aya encontrado la cadena y cero !ara todas las restantes. La longitud es!eci(icada de"e ser mayor o igual Iue la longitud de la !arte del n@mero anterior al se!arador decimalF m0s el signo 7si corres!onde9. Por e?em!loF !ara "uscar la !osici n en Iue comien:a la cadena N$onder(ulO en una (ila es!ec5(ica de la columna notes de la ta"la titles. Si no restringe las (ilas en las Iue "uscarF la consulta devolver0 todas las (ilas de la ta"la e indicar0 valores distintos de cero !ara las (ilas en las Iue 4aya encontrado la cadena.na e1!resi n Iue da como resultado una cadenaF normalmenteF un nom"re de columnaF en la Iue Microso(tj SQL Serverk "usca la cadena es!eci(icada.LLF IS %O& %.F6. USE 6u1s SELECT CHAR#$DEJ('0o'd"rAu&'3 'ot"s) %R!M t t&"s -HERE t t&". P3&I%DEH resulta de utilidad con los ti!os de datos te@t y se !uede em!lear en una cl0usula #EE/E adem0s de IS %.LL y LIDE 7las @nicas com!araciones adicionales v0lidas con te@t en una cl0usula #EE/E9. De (orma !redeterminada o si el !ar0metro decimal es 0F el n@mero se redondea a un entero. Los !ar0metros longitud y decimal de S&/ 7si se suministran9 de"en ser !ositivos.• . Por e?em!loF !ara utili:ar caracteres comod5n !ara encontrar la !osici n en la Iue comien:a la cadena N"readsO en cualIuier (ila de la columna 'escri%tion de la ta"la .(-(N1$ STR La (unci n S&/ convierte n@meros a caracteresF con !ar0metros o!cionales !ara es!eci(icar la longitud total del resultadoF incluidos el se!arador decimal y el n@mero de !osiciones Iue siguen al se!arador decimal. En este e?em!lo se convierte la e1!resi n (loat 12. . U. USE $orth0 'd K! SELECT Cat"Hory#D3 PAT#$DEJ('Cca'd "sC'3 L!-ER(D"scr 6t o') ) %R!M Cat"Hor "s -HERE PAT#$DEJ('Cca'd "sC'3 D"scr 6t o') 2I . La longitud !redeterminada es 10. a un car0cterF con una longitud de + caracteres y 2 lugares decimales.ategories.

+AF29 tiene A d5gitos a la i:Iuierda del se!arador decimal. U.6.. Por e?em!loF el n@mero 12. Si la !osici n de inicio o la longitud es negativaF o si la !osici n de inicio es mayor Iue la longitud de la !rimera cadenaF se devuelve una cadena %ull.SELE)& S&/712. En la com!araci n se !asan !or alto las vocales. Si el !ar0metro Iue indica la longitud de S&/ es A o m0sF la cadena resultante contiene el entero y tantos decimales como Iue!an.(-(N1$ STUFF La (unci n S&. Elimina una longitud determinada de caracteres de la !rimera cadena a !artir de la !osici n de inicio yF a continuaci nF inserta la segunda cadena en la !rimeraF en la !osici n de inicio. Por e?em!loF el loteJ SELECT STR(*2+:595(F43 53 2) SELECT STR(*2+:595(F43 93 2) DevuelveJ <<<<<<< *2+:59F (* ro0(s) aAA"ct"d) <<<<<< ////// (* ro0(s) aAA"ct"d) S&/ o(rece m0s (le1i"ilidad Iue )3S& al convertir ti!os de datos deci#al a ti!os de datos de caracteres !orIue !ro!orciona un control e1!l5cito del (ormato.F +F 29 lste es el con?unto de resultadosJ <<<<< *2+(:5 (* ro0(s) aAA"ct"d) Si la !arte entera de la e1!resi n Iue se est0 convirtiendo a una cadena de caracteres e1cede de la longitud es!eci(icada en S&/F S&/ devuelve QQ !ara la longitud es!eci(icada.BB inserta una cadena en otra. . SELEC0 S08GG&[abc[ 2 4 [=y9[' Este es el con?unto de resultadosJ <<<< aEyO (* ro0(s) aAA"ct"d) C/5)1$1'(*+ . En este e?em!lo se coloca la cadena de caracteres N1y:O a continuaci n del segundo car0cter de la e1!resi n de caracteres Na"cO y sustituye un total de tres caracteres.6.# SOUNDEM 0 DIFFERENCE La (unci n SO.%DEH convierte una cadena de caracteres a un c digo de cuatro d5gitos !ara ser utili:ado en una com!araci n. Si la longitud Iue se va a eliminar es mayor Iue la !rimera cadenaF se elimina 4asta el !rimer car0cter de la !rimera cadena. Si el !ar0metro Iue indica la longitud de S&/ es + o menosF se devuelven asteriscos.

En este e?em!lo se muestran los resultados de la (unci n SO. El !untero es v0lido 4asta Iue se elimina la (ila.Para determinar la com!araci n se usan caracteres no al(a"=ticos. SELECT D#%%ERE$CE('s= th"rs'3 's=oth"rs') lste es el con?unto de resultadosJ <<<<<<<<<<<< : (* ro0(s) aAA"ct"d) En este e?em!lo se devuelve una DIBBE/E%)E de .%DEH. En este e?em!lo se usa la (unci n &EH&P&/ !ara locali:ar la columna te@t 7%rEin$o9 asociada con %u(Eid 0A. S5+. • La (unci n &EH&'3LID com!rue"a si un determinado !untero de te1to es v0lido o no.PD3&E&EH&F #/I&E&EH&F P3&I%DEHF D3&3LE%8&E y SE& &EH&SIZE de &ransactGSQL Iue se usan !ara el tratamiento de datos te@tF nte@tF e i#age.#H.9 +. Primero se declara la varia"le local Pval. Los !unteros de te1to se !asan a las instrucciones /E3D&EH&F . SELECT S!U$DEJ ('s= th')3 S!U$DEJ ('s=yth"') lste es el con?unto de resultadosJ <<<<< <<<<< S5+.#H. Iue indica Iue las dos cadenas de caracteres tienen un sonido similarF aunIue di(ieren en varios caracteres. El siguiente !untero 7una cadena "inaria larga9 se coloca . # (517# Eay dos (unciones te@tF nte@t e i#age utili:adas e1clusivamente !ara reali:ar o!eraciones en datos te@tF nte@t e i#ageJ • &EH&P&/ devuelve un o"?eto (inary11!2 Iue contiene un !untero a una instancia te@tF nte@t o i#age. SELECT D#%%ERE$CE('P"AA'3 'K"oAA"') U. En este e?em!lo se devuelve una DIBBE/E%)E de 6 !ara el !rimer SELE)& !orIue NSmit4ersO y NSmot4ersO di(ieren s lo en un car0cter.(-(N1$ -1& D:+'(/+#& . Esta (unci n siem!re devuelve un valor.%DEH !ara las cadenas similares de caracteres NSmit4O y NSmyt4eO. En las instrucciones de &ransactGSQLF se 4ace re(erencia siem!re a los datos te@tF nte@t e i#age mediante !unteros o las direcciones de los datos.%DEH de dos cadenasF eval@a las similitudes entre ellas y devuelve un valor entre 0 y 6F donde 6 re!resenta la me?or coincidencia. )uando las cadenas de caracteres son similaresF am"as tienen los mismos c digos SO.+ en la ta"la %u(Ein$o de la "ase de datos %u(s. (* ro0(s) aAA"ct"d) La (unci n DIBBE/E%)E com!ara los valores SO.

F Iue es un valor decimalJ SELECT %L!!R(*2+(:5) <<<<<<<<<<<<<<<<<<<<< *2+ 71 ro$7s9 a((ected9 PeroF en este e?em!lo se usa un valor $loat y BLOO/ devuelve un valor $loatJ SELECT %L!!R (C!$VERT (A&oat3 *2+(:5)) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< *2+(. %o se admite la conversi nF im!l5cita ni e1!l5citaF de te@tF nte@t o i#age a otros ti!os de datos. 'Ao @@a& : *. 'Ao(6r.) ) AS #$T )( U.. Por e?em!loF el valor devuelto !or la (unci n BLOO/ tiene el ti!o de datos del valor de entrada.. Se !uede usar las (unciones )3S& o )O%'E/& !ara cam"iar el ti!o de datos a otro distintoF comoF !or e?em!loF $loat.(-(N1$ D:+'(/+#& 51. 'Ao) %R!M 6u1.na (unci n matem0tica reali:a una o!eraci n matem0tica en e1!resiones num=ricas y devuelve el resultado de la o!eraci n. lste es el con?unto de resultadosJ (* ro0(s) aAA"ct"d) 6r. Sin em"argoF se !uede 4acer una conversi n indirecta de te@tF nte@t o i#ageF !or e?em!loJ CAST( CAST( text_column_name AS VARCHAR(*. De (orma !redeterminadaF un n@mero !asado a una (unci n matem0tica ser0 inter!retado como un ti!o de datos deci#al.('1& .5+9' READTEJT 6u1. 'Ao -HERE 6u1. La !recisi n de las o!eraciones integradas !ara el ti!o de datos $loat esF de (orma !redeterminadaF de seis lugares decimales. La entrada de esta instrucci n SELE)& es de ti!o deci#al y BLOO/ devuelve 12.. Las (unciones matem0ticas o!eran en los datos num=ricos suministrados !or el sistema de Microso(tj SQL Serverk 7deci#alF integerF $loatF realF #oneyF s#all#oneyF s#allint y tinyint9.000 "ytes.000 "ytes y los datos nte@t se truncan a 6..#5<. 'Ao <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< s sa=6&" )on la (unci n )3S& se admiten las conversiones e1!l5citas reali:adas desde los ti!os de datos te@t a varcNarF nte@t a nvarcNar e i#age a var(inary o (inaryF aunIue los datos te@t o i#age se truncan a 2. El . (* ro0(s) aAA"ct"d) )uando el resultado $loat o real de una (unci n matem0tica es demasiado !eIueKo !ara mostrarseF se !roduce un error de des"ordamiento negativo de !unto (lotante.entonces en Pval y se suministra como !ar0metro a la instrucci n /E3D&EH&F Iue devuelve 10 "ytesF em!e:ando en el Iuinto "yte 7des!la:amiento de 69. USE 6u1s DECLARE @@a& @ar1 'ary(*9) SELECT @@a& = t"Et6tr(6r. d = '..

LL y muestra un mensa?e de advertencia des!u=s de e?ecutar la consulta.029 del intervalo !ara el ti!o de datos $loatF mientras Iue PO#E/7G10F0F 6019 es menor Iue el valor m5nimo 7o G2eP. &anto la con(iguraci n de SE& 3/I&E3-O/& como de SE& 3%SIW#3/%I%8S su!lantan la con(iguraci n de SE& 3/I&EI8%O/E. La conversi n interna a $loat !uede !rovocar la !=rdida de !recisi n si se usa alguno de los ti!os de datos #oney o nu#eric. ?unción #ate#5tica SQ/&7G19 PO#E/710F0F 6009 PO#E/710F0F G6009 4esultado Error de dominio Error de des"ordamiento aritm=tico 'alor 0F0 7des"ordamiento negativo de !unto (lotante9 Se !ro!orcionan ca!turas de error !ara controlar los errores de dominio o de intervalo de estas (unciones. Por e?em!loF PO#E/710F0F 6009 e1cede el valor m01imo 7o2eP. La con(iguraci n de SE& 3/I&E3-O/& su!lanta la con(iguraci n de SE& 3%SIW#3/%I%8S.029 del intervalo !ara el ti!o de datos $loat. ?unciones Vue devuelven radianes 3)OS )OS &3% SI% 3se radianes co#o valor de entrada . U. Por e?em!loF los valores es!eci(icados !ara la (unci n 3SI% de"en encontrarse entre G1F00 y 1F00.$('1& Microso(tj SQL Serverk !ro!orciona (unciones trigonom=tricas Iue devuelven radianes.resultado devuelto ser0 0F0 y no se mostrar0 ning@n mensa?e de error. Puede usarJ • SE& 3/I&E3-O/& O%F Iue termina la consulta y sale de la transacci n de(inida !or el usuario. • SE& 3%SIW#3/%I%8S O%F Iue detiene el comando. Si no se 4a esta"lecido ninguna de estas o!cionesF Microso(tj SQL Serverk devuelve %. Si se es!eci(ica el valor G2F !or e?em!loF se !roduce un error de dominio. En esta ta"la se muestran (unciones matem0ticas Iue !roducen un error de dominio o de intervalo.$(7/+/5V. • SE& 3/I&EI8%O/E O%F Iue 4ace Iue no se muestre ning@n mensa?e de advertencia.(-(N1$ D:+'(/+#& . Los errores de intervalo se !roducen cuando el valor es!eci(icado se encuentra (uera de los valores !ermitidos. Por e?em!loF el c0lculo matem0tico de 2 elevado a la !otencia G100F0 dar5a el resultado 0F0. Los errores de dominio se !roducen cuando el valor !ro!orcionado en la (unci n matem0tica no es v0lido.

F2A.91 radianes es G0F99A y el coseno del 0ngulo Iue mide 1F1. La (unci n )O& devuelve la cotangente trigonom=trica del 0ngulo es!eci(icadoF en radianesF indicado en la e1!resi n $loat dada.n 0ngulo con una tangente entre . SELECT AS#$(<(55F2)3 S#$(5) El intervalo v0lido de 3SI% es de G1 a 1.3&3% 3&%2 )O& "*'S *'S 3SI% &anto 3)OS como )OS son (unciones trigonom=tricas. . La (unci n 3SI% calcula el 0nguloF medido en radianesF cuyo seno es la e1!resi n $loat dada.n 0ngulo Iue mide 2AF92 radianes tiene una tangente de G0F.2F en radianesF es G0FA.9+2+29 radianes.2.+996A++1+..2A.A61A16090000 grados.22 y seno del 0ngulo Iue mide . La (unci n )OS devuelve el coseno del 0ngulo es!eci(icadoF en radianesF dada la e1!resi n $loat. radianes tiene un valor de G0F9.A2 radianes mide G2.n 0ngulo de 9AF1922 radianes tiene un valor de cotangente de G. .22 y el SI% de . La (unci n 3&3% devuelve la medida del 0nguloF en radianesF cuya tangente es la e1!resi n $loat dada. SELECT DEKREES(<*:(55F) .+02++. La (unci n SI% calcula el valor del seno trigonom=trico del 0nguloF medido en radianesF como una e1!resi n $loat. La (unci n &3% devuelve la tangente trigonom=trica de la e1!resi n $loat dada. y 1..6202. . mide 0F2162.n 0ngulo Iue mide G16F. El intervalo v0lido de 3)OS es de G1 a 1. D-(R--S La (unci n DE8/EES devuelve una e1!resi n nu#ericJ la medida del 0nguloF en gradosF de la medida del 0ngulo en radianes. La (unci n 3&%2 devuelve el 0nguloF en radianesF cuya tangente se encuentra entre las dos e1!resiones $loat dadas. El seno del 0ngulo Iue mide G0F2+0.6 radianes es 1F1.A2A.6.F0216962626999A.61+92. La (unci n 3)OS devuelve el 0nguloF en radianesF cuyo coseno es la e1!resi n $loat dada..+1+.. .6J SELECT AC!S(<(445)3 C!S(*(*+:) 3s5F el coseno del 0ngulo Iue mide . . "S+N S+N &anto 3SI% como SI% son (unciones trigonom=tricas Iue usan una e1!resi n $loat..22.n 0ngulo Iue tenga un valor de tangente de G2AF29 medir0 G1F. "T"N 3 "TN43 T"N *'T Las (unciones 3&3%F 3&%2F &3% y )O& son (unciones matem0ticas.. Por e?em!loF la siguiente instrucci n SELE)& calcula el 3)OS de G0F99A y el )OS del valor 1F1.F2.29262A6++. En este e?em!lo se calcula el 3SI% de G0FA.9.1.+29+ radianes.F0+611.

9A9. Sin em"argoF la (unci n LO810 devuelve el logaritmo en "ase 10. gradosF useJ SELECT RAD#A$S(*.(*(55) U. Se !ueden es!eci(icar !otencias negativasF con lo Iue PO#E/72F000F G. La (unci n BLOO/ devuelve el mayor entero Iue sea menor o igual Iue la e1!resi n num=rica dada.(-(N1$ RAND La (unci n /3%D calcula un n@mero aleatorio de !unto (lotante entre 0 y 1F y !uede tomar o!cionalmente un valor tinyintF int o s#allint !ara el !unto de inicio del n@mero aleatorio Iue se va a calcular. Los logaritmos naturales se calculan con el sistema de "ase 2. SELECT L!K(*(55)3 L!K*.eP02+. SELECT EJP(*4F(*4+F+25) U. !ara la !osici n de inicio.(55) *o/paración de *-+L+N( . SELECT RA$D()3 RA$D(+) .9 es 0.. O"serve Iue el resultado de PO#E/72F G. Este e?em!lo calcula dos n@meros aleatorios.(-(N1$ -1& D:+'(/+#& #H)/+#+'(1-#& PO=ER 0 EMP La (unci n PO#E/ devuelve el valor de la e1!resi n num=rica dada elevado a la !otencia es!eci(icada.R"D+"NS La (unci n /3DI3%S calcula el 0ngulo en radianes dada la medida del 0ngulo en grados.L''R La (unci n )EILI%8 devuelve el menor entero Iue sea mayor o igual Iue la e1!resi n num=rica dada. 3s5F si el resultado tiene tres lugares decimalesF el n@mero Iue se va a elevar a una cierta !otencia de"e tener tam"i=n tres decimales.2. Esto es as5 !orIue el resultado ser0 del mismo ti!o de datos Iue la e1!resi n num=rica dada.F )EILI%8 devuelve 1. 3s5F con el valor 192F19. . El valor de retorno tanto de BLOO/ como de )EILI%8 tiene el mismo ti!o de datos Iue la e1!resi n num=rica de entrada.9. Por e?em!loF la siguiente instrucci n SELE)& calcula el LO8 y el LO810 del valor 1FA. PO#E/72F. La (unci n EHP devuelve el valor e1!onencialF en notaci n cient5(icaF de la e1!resi n $loat dada..2AF la (unci n EHP devuelve el valor 1F12A101.se am"as (uncionesF LO8 y LO810F !ara a!licaciones trigonom=tricas.9 devuelve 2 elevado a la tercera !otenciaJ el valor 2. Por e?em!loF dada la e1!resi n num=rica 12F92A. *o/paración de L'( L'(56 La (unci n LO8 devuelve el logaritmo natural de la e1!resi n $loat dada. La !rimera (unci n /3%D79 !ermite a Microso(tj SQL Serverk elegir el valor de inicioF y la segunda (unci n /3%D79 usa el valor .9 devuelve 0F12. Para calcular la medida en radianes de un 0ngulo Iue mide 10FA.F y BLOO/ devuelve 12..

En el mismo milisegundoF Iue es el incremento m0s !eIueKo de D3&EP3/&F se !ueden e?ecutar m@lti!les llamadas a /3%D en un @nico lote.tili7ar (-TD"T- La (unci n 8E&D3&E !roduce la (ec4a y 4ora actual en el (ormato interno de Microso(tj SQL Serverk !ara los valores dateti#e. En este casoF incor!ore un valor "asado en algo di(erente al tiem!o !ara generar los valores de inicio. ) ) DATEPART(=s3 KETDATE()) ) )uando use un algoritmo "asado en 8E&D3&E !ara generar valores de inicioF /3%D !uede seguir generando valores du!licados si las llamadas a /3%D se reali:an en el intervalo de la !arte menor de la (ec4a usada en el algoritmo.. La secuencia de comandos siguiente devuelve el mismo valor en las llamadas a /3%D !orIue todas usan el mismo valor de inicioJ SELECT RA$D(*545F:) SELECT RA$D(*545F:) SELECT RA$D(*545F:) . ) ) (DATEPART(ss3 KETDATE()) / *..# D#'I1 Las (unciones de (ec4a se utili:an !ara mostrar in(ormaci n acerca de (ec4as y 4oras. )uando escri"a valores dateti#e o s#alldateti#eF incl@yalos entre comillas sim!les. Si no se !ro!orciona el valor de inicioF el sistema generar0 sus !ro!ios valores varia"les. Esto es lo Iue ocurrir0 con m0s !ro"a"ilidad si las llamadas a /3%D se incluyen en un @nico lote. Si llama a /3%D varias veces con el mismo valor de inicioF devolver0 el mismo valor generado. 8E&D3&E ace!ta el !ar0metro %ull 7 9. F:+'(/+#& ... Las (unciones de (ec4a se !ueden usar en cualIuier !arte donde se !ueda usar una e1!resi n. SELECT KETDATE() lste es el con?unto de resultadosJ <<<<<<<<<<<<<<<<<<<<<<<<< .na (orma 4a"itual de generar n@meros aleatorios con /3%D es incluir algo relativamente varia"le como valor de inicioF comoF !or e?em!loF agregar varias !artes de un 8E&D3&EJ SELECT RA$D( (DATEPART(==3 KETDATE()) / *. SQL Server reconoce una am!lia variedad de (ormatos de entrada de datos dateti#e..La (unci n /3%D es un !seudogenerador de n@meros aleatorios Iue o!era de (orma similar a la (unci n rand de la "i"lioteca de tiem!o de e?ecuci n de ). Se usan !ara el tratamiento de valores dateti#e y s#alldateti#e y !ara reali:ar o!eraciones aritm=ticas en los mismos. . Si llama a /3%D con un valor de inicioF de"e usar valores de inicio varia"les !ara generar n@meros aleatorios. Puede usar la instrucci n SE& D3&EBO/M3& !ara esta"lecer el orden de las !artes de la (ec4a 7mesF d5a y aKo9 !ara introducir datos dateti#e o s#alldateti#e. En este e?em!lo se averigua la (ec4a y 4ora actuales del sistema..

Pu&y 24 *445 2>5. Por e?em!loF si las (ec4as de !u"licaci n de todos los li"ros de la ta"la titles se retrasan tres d5asF !uede o"tener una nueva (ec4a de !u"licaci n con esta instrucci nJ USE 6u1s SELECT DATEADD(day3 +3 6u1dat") %R!M t t&"s Si el !ar0metro (ec4a es un ti!o de datos s#alldateti#eF el resultado es tam"i=n un s#alldateti#e. . Puesto Iue s#alldateti#e s lo es !reciso 4asta los minutosF cuando se use un valor s#alldateti#e con alguna de estas (uncionesF los segundos y milisegundos devueltos son siem!re cero. Los siguientes e?em!los su!onen la (ec4a 29 de mayo. SELECT DATEPART(="s3 KETDATE()) lste es el con?unto de resultadosJ <<<<<<<<<<<< 5 (* ro0(s) aAA"ct"d) SELECT DATE$AME(="s3 KETDATE()) lste es el con?unto de resultadosJ <<<<<<<<<<< Mayo (* ro0(s) aAA"ct"d) *o/paración de D"T-"DD D"T-D+. Por e?em!loF !uede usar 8E&D3&E como valor !redeterminado !ara la entrada de datosF con una varia"le localF o !ara com!arar la (ec4a de un !edido con la (ec4a de 4oy. *o/paración de D"T-P"RT D"T-N"0- Las (unciones D3&EP3/& y D3&E%3ME !roducen la !arte es!eci(icada de un valor dateti#e 7el aKoF trimestreF d5aF 4oraF etc.. Puede usar D3&E3DD !ara agregar segundos o milisegundos a un valor s#alldateti#eF aunIue esto s lo tiene sentido si el ti!o de datos devuelto !or D3&E3DD cam"ia en un minutoF como m5nimo.9 como un entero o como una cadena 3S)II. 8E&D3&E tam"i=n es @til !ara llevar a ca"o (unciones comoF !or e?em!loF registrar la 4ora de una transacci n reali:ada en una cuenta. PM (* ro0(s) aAA"ct"d) Se !uede usar 8E&D3&E !ara diseKar un in(orme de manera Iue se im!riman la (ec4a y 4ora actual cada ve: Iue se genere el in(orme. Puede usar 8E&D3&E en cualIuier !arte !ara devolver la (ec4a actual del sistema. La (unci n D3&E3DD agrega un intervalo a la (ec4a Iue es!eci(iIue.

Los segundos y milisegundos de los valores s#alldateti#e se esta"lecen autom0ticamente a 0 !or motivos Iue tienen Iue ver con los c0lculos.0 de noviem"re de 199. 7Eay 60 d5as entre el 21 de octu"re y el .# :&:1$(/& 'arias (unciones del sistema devuelven identi(icadores y nom"res de usuarios. USE 6u1s SELECT DATED#%%(day3 6u1dat"3 '$o@ +. Eay dos ti!os de nom"res de inicio de sesi nJ . fec"a. Para calcular un intervalo en mesesF utilice esta consultaJ USE 6u1s SELECT 't"r@a& = DATED#%%(=o'th3 6u1dat"3 '$o@ +. Esta consulta usa la (ec4a .. Para com!render los !ar0metros y datos de salida de estas (unciones es necesario com!render los ti!os de nom"res e identi(icadores utili:ados en Microso(tj SQL Serverk. *445') %R!M t t&"s Para las (ilas de los t5tulos Iue tengan una %u(date de 21 de octu"re de 199.#%:#-%#+ (.(D('1. El resultado es un valor entero con signoF igual a fec"a. !ara las (ilas con una %u(date en ?unio. y "usca el n@mero de d5as Iue 4ay entre %u(date 7(ec4a de !u"licaci n9 y esa (ec4a. F:+'(/+#& @:# .La (unci n D3&EDIBB calcula la cantidad de tiem!o en !artes de (ec4a entre la segunda y la !rimera de las dos (ec4as Iue es!eci(iIue. )ada usuario Iue se conecta a SQL Server tiene dos clases de nom"res en SQL Server y cada nom"re est0 asociado con un identi(icador e1clusivoJ • %om"res de inicio de sesi n )ada usuario autori:ado !ara conectarse a SQL Server tiene un nom"re de inicio de sesi n Iue le !ro!orciona acceso a una instalaci n de SQL Server.0 de noviem"re9. Puesto Iue dos de las (ilas de titles tienen valores !ara %u(date Iue son asignados con la (unci n 8E&D3&E como valor !redeterminadoF estos valores se esta"lecen a la (ec4a en la Iue la "ase de datos %u(s (ue creadaF y se devuelven valores negativos en las dos consultas !recedentes./$#& 0 +/52$#& . )uando la !rimera (ec4a de la (unci n D3&EDIBB sea !osterior a la segunda (ec4a es!eci(icadaF el valor resultante ser0 negativo. Si uno o am"os argumentos de (ec4a son un valor s#alldateti#eF !ara el c0lculo ser0n convertidos internamente a valores dateti#e. En otras !ala"rasF encuentra un intervalo entre dos (ec4as.F el resultado !roducido !or la @ltima consulta es 60. *445') %R!M t t&"s Esta consulta !roduce el valor 1 !ara las (ilas con una %u(date en octu"re y el valor .#+. en !artes de (ec4a.

El identificadorDeSeguridad de cada usuario se almacena en sysusuarios.(D('1. /esulta menos con(uso si los miem"ros de las (unciones sysad#inF SecurityAd#inF d(Eowner y d(Eaccessad#in utili:an el mismo nom"re de usuario de la "ase de datos en el inicio de sesi n de SQL Server y en la cuenta de #indo$s %&X sin em"argoF no es o"ligatorio. Las versiones anteriores de SQL Server utili:a"anF en su lugarF un Id0suarioServidor de una ta"la di(erenteJ #aster.suid. Los miem"ros de las (unciones (i?as de "ase de datos d(Eowner o d(Eaccessad#in de(inen los nom"res de usuario de "ase de datosF y se almacenan en la ta"la sysusuarios de cada "ase de datos.# &#&(*+ )uando se conecte a SQL ServerF utiliceJ .na#e. • %om"re de usuario de "ase de datos )ada cuenta de #indo$s %& o inicio de sesi n de SQL Server de"e estar asociado con un nom"re de usuario en cada "ase de datos a la Iue tengan autori:aci n !ara o"tener acceso.sid.sys@Inicios de sesión.1& .sys@Inicios de sesión.d(o. )ada nom"re de cuenta o gru!o de #indo$s %& se almacena en #aster.sidX !or lo tantoF se !uede asociar de nuevo los usuarios a sus inicios de sesi n corres!ondientes./$#& / ':#+. )ada nom"re de usuario de "ase de datos est0 asociado con un identi(icador de usuario de "ase de datos almacenado en sysusuarios.d(o. • %om"res de inicio de sesi n de SQL Server Los utili:an los usuarios Iue inician una sesi n con la 3utenticaci n de SQL Server.ID Iue se utili:a como identificadorDeSeguridad (Seguridad/identifier) y lo almacena en sys@Inicios de sesión.uid. El identificadorDeSeguridad (Seguridad/identifier) de #indo$s %& de la cuenta o gru!o de #indo$s %& est0 almacenado en sysInicios de sesión. Los miem"ros de las (unciones (i?as de servidor sysad#in o SecurityAd#in de(inen los nom"res de inicio de sesi n de SQL Server con s%EaddInicio de sesión.sid como identificadorDeSeguridad del nom"re de inicio de sesi n.sysInicios de sesión. El usuario identi(icado !or la cuenta de #indo$s %& o cualIuier !ersona del gru!o de #indo$s %& !ueden conectarse con la instalaci n de SQL Server mediante la 3utenticaci n de #indo$s %&. SQL Server genera un 8.sid. SQL Server utili:a #aster.#+#$ (.• %om"res de cuentas de Microso(t #indo$s %&j Los miem"ros de las (unciones (i?as de servidor sysad#in o SecurityAd#in !ueden autori:ar a cuentas de #indo$s %& de usuarios individuales o a gru!os de #indo$s %& !ara iniciar una sesi n en una instalaci n de SQL Server con s%EgrantInicio de sesión.d(o. )ada nom"re de inicio de sesi n de SQL Server est0 almacenado en #aster.d(o. Para mantener la com!ati"ilidad con versiones anterioresF SQL Server im!lementa sysInicios de sesión como una vista de sys@Inicios de sesión y sysInicios de sesión. O2.# (+('(/ .#+.na#e.sys@Inicios de sesión.suid es una columna calculada Iue genera un Id0suarioServidor a !artir del identificadorDeSeguridad de sys@Inicios de sesión.

3/IOW%3ME7Id0suarioSistema9 Esta (unci n se admite !ara mantener la com!ati"ilidad con versiones anteriores.S.S.3/IOW%3ME devuelve %.S. • El Id. .S.3/IOWS%3ME79 7S.3/IOWSID es!eci(icado sin el !ar0metro cuentaInicioSesi1n9 !ara o"tener el identificadorDeSeguridad de la cone1i n actualF inde!endientemente de si se utili:a la 3utenticaci n de SQL Server o la 3utenticaci n de #indo$s %&.3/IOWS%3ME devuelve el nom"re de la cuenta de #indo$s %& asociada con la cone1i n.S.3/IOWS%3ME7identificadorDeSeguridad9 S. Si se es!eci(ic un Id0suarioSistema en lugar de un identificadorDeSeguridadF S. Si se reali: la cone1i n con la 3utenticaci n de SQL ServerF S. • S.S. • El (also identificadorDeSeguridad generado !ara un inicio de sesi n de SQL ServerF en cuyo caso devuelve el nom"re de inicio de sesi n de SQL Server.3/IOWSID !ara o"tener el identificadorDeSeguridad asociado con un nom"re de inicio de sesi n de SQL Server o cuenta de #indo$s %&.• S. • S.3/IOWS%3ME !uede tomarJ • El identificadorDeSeguridad de una cuenta o gru!o de #indo$s %&F en cuyo caso devuelve el nom"re de la cuenta o gru!o de #indo$s %&. • La (unci n SCS&EMW. En &ransactGSQLF SCS&EMW.suarioSistema generado !ara una cuenta o gru!o de #indo$s %&F en cuyo caso devuelve el nom"re de la cuenta o gru!o de #indo$s %&. .3/IOWS%3ME cuando se conecte a SQL Server S.S.LL.S.3/IOWS%3ME !ara o"tener el nom"re de inicio de sesi n de SQL Server o cuenta de #indo$s %& asociados con un identificadorDeSeguridad.S.S.S. • S. Si se reali: la cone1i n con 3utenticaci n de SQL ServerF S. En SQL ServerF las (unciones Iue devuelven nom"res de inicio de sesi n o cuentas (uncionan de esta (ormaJ • S.3/IO de SQLG92 !ara o"tener la cuenta de #indo$s %& de una cone1i n de 3utenticaci n de #indo$s %& o el nom"re de inicio de sesi n de SQL Server de una cone1i n de 3utenticaci n de SQL Server.3/IOWS%3ME es!eci(icado sin el !ar0metro identificadorDeSeguridad9.suarioSistema generado !ara un inicio de sesi n de SQL ServerF en cuyo caso devuelve el nom"re de inicio de sesi n de SQL Server. Si no se es!eci(ica el identificadorDeSeguridad de una cone1i n reali:ada con la 3utenticaci n de #indo$s %&F S.S. Si no se es!eci(ic Id0suarioSistema en una cone1i n reali:ada con 3utenticaci n de #indo$s %&F S.S.3/IOW%3ME !uede tomarJ • El Id.3/IOWS%3ME devuelve %.tilice S.S.S.3/IOWSID79 7S.LL.S.3/IOWS%3ME devuelve el inicio de sesi n de SQL Server asociado con la cone1i n.3/IO se im!lementa como sin nimo de S.3/IOW%3ME devuelve el inicio de sesi n de SQL Server asociado con la cone1i n.S.S.

3/IOWSID7^cuentaInicioSesi n_9 Esta (unci n se admite !ara mantener la com!ati"ilidad con versiones anteriores.S. . Si se reali: la cone1i n con la 3utenticaci n de SQL ServerF S.S.# . Si no se es!eci(ica cuentaInicioSesi1n en una cone1i n reali:ada con la 3utenticaci n de #indo$s %&F S.S.S. SQLG92 .S.3/IOF !ara o"tener el nom"re de usuario de "ase de datos asociado con la cone1i n actual.S. La (unci n .Si se es!eci(ic identificadorDeSeguridad en lugar de Id0suarioSistemaF S.S.3/IOWSID devuelve el (also identificadorDeSeguridad generado !ara ese nom"re de inicio de sesi n de SQL Server.3/IOWID79 !ara o"tener el identi(icador de usuario de "ase de datos asociado con la cone1i n actual.3/IO o SESSIO%W.# :&:1$(/ .S.# :&:1$(/ )uando se conecte a SQL Server utiliceJ • .3/IOWS%3ME79 7S.1.na de las (unciones de SQLG92F ).n nom"re de cuenta o gru!o de #indo$s %&F en cuyo caso S.S.# 21&# .n nom"re de inicio de sesi n de SQL ServerF en cuyo caso S.LL. • ./& / (.3/IOW%3ME devuelve %.S.S.3/IOWS%3ME devuelve el (also identificadorDeSeguridad asociado con la cone1i n.tilice S.3/IOW%3ME es!eci(icado sin el !ar0metro Id0suario2aseDatos9.#+#$ +/52$#& . • .S.S.3/IOW%3ME !ara o"tener el nom"re de usuario de "ase de datos asociado con un identi(icador de usuario de "ase de datos.S. SQLG92 tiene en cuenta las instrucciones SQL Iue se codi(ican en m dulos de SQL y !ueden tener identi(icadores de autori:aci n di(erentes del identi(icador de autori:aci n del usuario Iue se 4a conectado a una "ase de datos de SQL.3/IOW%3ME79.S. • SCS&EMW.3/IOWSID cuando se conecte a SQL Server cuentaInicioSesi1n !uede serJ • • .3/IO Esta (unci n de SQLG92 se im!lementa como sin nimo de S.3/IOW%3ME79 7.3/IOWID !ara o"tener el identi(icador de usuario de "ase de datos asociado con un nom"re de usuario de "ase de datos.(D('1.3/IO de &ransactGSQL tam"i=n se im!lementa como sin nimo de .3/IOWSID devuelve el identificadorDeSeguridad de #indo$s %& asociado con la cone1i n. • .#+.3/IOWS%3ME es!eci(icado sin el !ar0metro identificadorDeSeguridad9 en &ransactGSQL./$#& .//E%&W.S. O2.3/IOWSID devuelve el identificadorDeSeguridad de #indo$s %& de la cuenta o gru!o de #indo$s %&.S.S.S. . • S. En &ransactGSQLF estas (unciones se im!lementan como sin nimo de .

Estas (unciones de conversi n se usan tam"i=n !ara o"tener varios (ormatos es!eciales de datos.S.3/IO devuelve el identi(icador de autori:aci n del m dulo de SQL !ara las instrucciones e?ecutadas desde un m dulo de SQL o del usuario Iue reali: la cone1i n si las instrucciones SQL no se e?ecutaron desde un m dulo de SQL.S.3/IO siem!re son el mismo.3/IOW%3ME79 7.S.3/IO Estas (unciones son sin nimos de . En SQL ServerF la (unci n Iue devuelve nom"res de inicio de sesi n o cuentas (unciona de esta (ormaJ • . Si no se es!eci(ica nom3re0suario2aseDeDatos4 .S. )uando se usa )3S& o )O%'E/&F se necesitan dos clases de in(ormaci nJ .# '/+%#$&(*+ .S.3/IO %3ME es!eci(icado sin el !ar0metro Id0suario2aseDeDatos9. )ualIuiera de las (unciones de conversi n se !uede utili:ar en la lista de selecci nF en la cl0usula #EE/E y en cualIuier lugar Iue se !ermita una e1!resi n. • .suario-aseDeDatos9 .se )3S& en lugar de )O%'E/& si desea Iue el c digo del !rograma &ransactGSQL cum!la con SQLG92.//E%&W.3/IOWID7^nom"re.3/IO.se )O%'E/& en lugar de )3S& !ara a!rovec4ar la (uncionalidad del estilo de )O%'E/&. ).suario-aseDeDatos_9 .S. Se es!eci(ica Iue devuelva el mismo valor Iue ).//E%&W.3/IOW%3ME devuelve el nom"re de usuario de "ase de datos asociado con la cone1i n actual.3/IO.3/IO est0 de(inida !or SQLG92 como (unci n !ara mantener la com!ati"ilidad con versiones anteriores !ara a!licaciones escritas en versiones anteriores del est0ndar. Si no se es!eci(ica Id. La (unci n .S.es!eci(ica Iue SESSIO%W.S.3/IOF SESSIO%W. • ).S.S.S.3/IOWID devuelve el identi(icador de usuario de "ase de datos asociado con el nom"re de usuario de "ase de datos es!eci(icado.3/IO y SESSIO%W. Microso(t SQL Server no tiene identi(icadores de autori:aci n inde!endientes !ara m dulos de SQLX !or lo tantoF ).3/IOW%3ME devuelve el nom"re de usuario de "ase de datos asociado con el identi(icador de usuario es!eci(icado.S.3/IO siem!re devuelva el identi(icador de autori:aci n del usuario Iue reali: la cone1i n.S.suario-aseDeDatosF .S.3/IO devuelva el mismo valor Iue SESSIO%W.3/IOF . Si el m dulo de SQL no tiene un identi(icador de autori:aci n inde!endienteF SQLG 92 es!eci(ica Iue ).S.S.//E%&W. F:+'(/+#& . .3/IOW%3ME7Id.3/IOWID devuelve el identi(icador de usuario de "ase de datos asociado con la cone1i n actual.S.S.//E%&W.S.se las (unciones de conversi nF )3S& y )O%'E/&F !ara convertir e1!resiones de un ti!o de datos a otroF cuando Microso(tj SQL Serverk no realice autom0ticamente estas conversiones.//E%&W. .

• • La e1!resi n Iue se va a convertir 7!or e?em!loF un in(orme de ventas necesitar5a Iue los datos de ventas se convirtieran desde datos de moneda a datos de caracteres9.coAc"6tar' G O "ien G USE 6u1s SELECT C!$VERT(char(5.)3 ytd. . El ti!o de datos al Iue se va a convertir la e1!resi n dadaF !or e?em!loF varcNar o cualIuier otro ti!o de datos suministrado !or SQL Server.)) L#NE '*5C' A$D ty6" = 'trad.sa&"s AS char(2. Sin em"argoF se !uede usar )3S&J • )uando dos e1!resiones son e1actamente del mismo ti!o de datos.45 (+ ro0(s) aAA"ct"d) En el siguiente e?em!loF la columna ytdEsalesF una columna intF se convierte a una columna cNar1202 de (orma Iue se !ueda usar con el !redicado LIDE. 3 menos Iue guarde el valor convertidoF una conversi n s lo ser0 v0lida mientras dure la (unci n )3S& o )O%'E/&.coAc"6tar' lste es el con?unto de resultadosJ title <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % Aty M"ars ' ?ucQ 'Hha= Pa&ac" N tch"'s (* ro0(s) aAA"ct"d) ytd_sales <<<<<<<<< *5.49 Sush 3 A'yo'"R :.coAc"6tar' lste es el con?unto de resultados de las consultasJ ytd. USE 6u1s SELECT t t&"3 ytd. USE 6u1s SELECT CAST(t t&" AS char(5. Esto se denomina conversi n im!l5cita.sa&"s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<< !' o's3 L""Qs3 a'd Kar& c> CoAc"6tar 'H S"cr"ts oA th" +55 % Aty M"ars ' ?ucQ 'Hha= Pa&ac" N tch"'s *5. Por e?em!loF si com!ara una e1!resi n cNar y una dateti#eF una s#allint y una intF o e1!resiones cNar de distintas longitudesF SQL Server las convierte autom0ticamente.sa&"s %R!M t t&"s -HERE ty6" = 'trad.sa&"s %R!M t t&"s -HERE CAST(ytd.sa&"s %R!M t t&"s -HERE ty6" = 'trad. %o es necesario Iue use la (unci n )3S& !ara reali:ar estas conversiones. En este e?em!lo se usa )3S& en la !rimera instrucci n SELE)& y )O%'E/& en la segunda instrucci n SELE)& !ara convertir la columna title a una columna cNar1502 con el (in de 4acer Iue los resultados sean m0s (0ciles de leer.49 SQL Server controla autom0ticamente ciertas conversiones de ti!os de datos.)3 t t&")3 ytd.

Pueden convertir valores dateti#e a s#alldateti#e cuando la (ec4a se encuentre en el intervalo adecuado 71 de enero de 1900 al + de ?unio del 20A99.9. Si intenta reali:ar una conversi n Iue no es !osi"le 7!or e?em!loF convertir una e1!resi n cNar Iue incluya letras a int9F SQL Server muestra un mensa?e de error. 3 continuaci n se muestra un e?em!lo del truncamiento de caracteresJ USE 6u1s SELECT SU?STR#$K(t t&"3 *3 25) AS T t&"3 C!$VERT(char(2)3 ytd. Por e?em!loF el valor entero 6 se convierte al eIuivalente de moneda de 6 d lares 7!ara usEenglisNF el idioma !redeterminado9. 3l convertir a dateti#e o s#alldateti#eF SQL Server rec4a:a todos los valores Iue no reconoce como (ec4as 7incluidas las (ec4as anteriores al 1 de enero de 1A. El valor de la 4ora se redondea al minuto m0s cercano. Si no es!eci(ica ninguna longitud cuando se convierte al ti!o de datosF SQL Server suministra autom0ticamente la longitud .• • )uando dos e1!resiones son converti"les im!l5citamente.coAc"6tar' lste es el con?unto de resultadosJ T t&" <<<<<<<<<<<<<<<<<<<<<<<<< << !' o's3 L""Qs3 a'd Kar& c / % Aty M"ars ' ?ucQ 'Hha= / Sush 3 A'yo'"R / (+ ro0(s) aAA"ct"d) .0. Las e1!resiones de ti!os de datos cNar o varcNar Iue se est0n convirtiendo a $loat o real !ueden incluir tam"i=n notaci n e1!onencial o!cional 7e o EF seguido de un signo o!cional P o G yF a continuaci nF un n@mero9. )uando se convierten e1!resiones de caracteres a un ti!o de datos de un tamaKo distintoF los valores demasiado grandes !ara el nuevo ti!o de datos se truncanF y SQL Server muestra un asterisco 7Q9 tanto en la 4erramienta osVl como en el 3nali:ador de consultas de SQL Server. )onvertir a (it cam"ia cualIuier valor distinto de cero a 1. )uando es necesario convertir e1!l5citamente los ti!os de datos.sa&"s) %R!M t t&"s -HERE ty6" = 'trad. Los "lancos situados a la i:Iuierda se !asan !or alto. )uando convierta a #oney o s#all#oneyF se su!one Iue los enteros son unidades de moneda.. Las e1!resiones de los ti!os de datos cNar o varcNar Iue se convierten a #oney !ueden incluir tam"i=n un se!arador decimal o!cional y un signo de d lar a la i:Iuierda 7p9. )uando las e1!resiones num=ricas son demasiado grandes !ara Iue se !resente el nuevo ti!o de datosF se truncan los valores. Las e1!resiones de los ti!os de datos cNar o varcNar Iue se est0n convirtiendo a un ti!o de datos entero de"en constar s lo de d5gitos y un signo o!cional m0s o menos 7P o G9. Los n@meros situados a la derec4a del se!arador decimal de los valores de !unto (lotante se redondean a cuatro lugares decimales !ara los valores #oney.

LLIB o )O3LES)E. Puede convertir e1!l5citamente datos te@t a cNar o varcNarF y datos i#age a (inary o var(inary. En la siguiente instrucci n SELE)&F !or cada (ila del con?unto de resultadosF SQL Server !uede resolver LastAa#e como un valor @nicoF con lo Iue constituye una e1!resi n.na e1!resi n es una com"inaci n de identi(icadoresF valores y o!eradores Iue Microso(tj SQL Serverk !uede evaluar !ara o"tener un resultado. %o se admite la conversi n im!l5cita.na e1!resi n tam"i=n !uede generarse a !artir de la com"inaci n de estas entidades y o!eradores.000 caracteres.. . El n@mero Iue se suministra como el !ar0metro estilo determina la (orma en la Iue se muestran los datos dateti#e. -l pará/etro est"lo El !ar0metro estilo de )O%'E/& !ro!orciona una am!lia variedad de (ormatos de !resentaci n cuando se convierten datos dateti#e a cNar o varcNar. Puede convertir e1!l5citamente datos nte@t a ncNar o nvarcNarF !ero la longitud m01ima es de 6. En este e?em!lo se muestra )O%'E/& con el !ar0metro estilo.na e1!resi n !uede ser unaJ • )onstante.69+ 3S money9 es p10F. SELECT C!$VERT(char(*2)3 KETDATE()3 +) Esta instrucci n convierte la (ec4a actual al estilo . Para mostrar un aKo de cuatro d5gitos Iue incluya el siglo 7aaaa9F incluso si el aKo se guard con un (ormato de dos d5gitosF agregue 100 al valor de estilo !ara o"tener un aKo de cuatro ci(ras. • )3SEF %. E: resiones .. Los datos se !ueden usar en varios sitios distintos cuando se cam"ian o se tiene acceso a los datos. Las e1!resiones se !ueden usarF !or e?em!loF como !arte de los datos Iue se van a recu!erar 7en una consulta9 o como una condici n !ara "uscar los datos Iue cum!lan un con?unto de criterios. Puesto Iue estos ti!os de datos est0n limitados a 2.3l convertir ti!os de datos en los Iue el ti!o de datos de destino tiene menos se!aradores decimales Iue el ti!o de datos de origenF se trunca el valor. Por e?em!loF el resultado de )3S&710F.0 caracteres. .000 caracteresF estar0 limitado a la longitud m01ima de los ti!os de datos cNaracter y (inaryF es decirF 2. .F ddLmmLaa. • Su"consulta. • Bunci n. Si no es!eci(ica la longitudF el valor convertido tiene una longitud !redeterminada de .000 caracteres. El aKo se !uede mostrar con dos o con cuatro d5gitos. • %om"re de columna. • 'aria"le. De (orma !redeterminadaF SQL Server suministra un aKo de cuatro d5gitos.

SELECT co&*3 SU?STR#$K('Th s *(5 %R!M =yta1&" s a &o'H str 'H'3 *3 5)3 co&+3 6r c" / U.(-(N1$ /)#$1. son e1!resiones.LL9. En una e1!resi nF incluya los valores de caracteres de (ec4a entre comillas sim!les.na e1!resi n !uede ser tam"i=n un c0lculoF comoF !or e?em!lo 7%rice Q 1. Pro"ar determinadas condiciones antes de iniciar o con(irmar una transacci nF o antes de e?ecutar determinadas l5neas de c digo. 3ntes de !oder cam"iar los datos correctamenteF necesita los !ermisos adecuados. Los o!eradores se usan en Microso(tj SQL Serverk !araJ • • • • )am"iar datosF !ermanente o tem!oralmente.9 o 7%rice P salesEta@9. -uscar (ilas o columnas Iue cum!lan una condici n determinada..SELECT Last$a=" %R!M $orth0 'd((E=6&oy""s ./$#& #+ #H)$#&(/+#& Los o!eradores !ermiten reali:ar o!eraciones aritm=ticasF com!aracionesF concatenaciones o asignaciones de valores. SQL Server tiene siete categor5as de o!eradores. Im!lementar una decisi n entre columnas de datos o entre e1!resiones. Por e?em!loF col1F S..-S&/I%8F col)F %rice y 1. 3se esta categorWa de o%erador O!eradores de com!araci n . En las consultasF cualIuier !ersona Iue !ueda ver los datos de la ta"la Iue necesitan ser usados con alg@n ti!o de o!erador !uede reali:ar o!eraciones. En la siguiente instrucci n SELE)&F el literal de car0cter -Y usado como !atr n !ara la cl0usula LIDE de"e estar entre comillas sim!lesJ SELECT Last$a="3 % rst$a=" %R!M $orth0 'd((E=6&oy""s -HERE Last$a=" L#NE '?C' En la siguiente instrucci n SELE)&F el valor de (ec4a se incluye entre comillasJ SELECT / %R!M $orth0 'd((!rd"rs -HERE !rd"rDat" = 'S"6 *+ *449' En este e?em!loF se usa m0s de una e1!resi n en la consulta. "ara realiIar este ti%o de o%eración )om!arar un valor con otro valor o una e1!resi n. Por e?em!loF !uede !ro"ar si la columna country con datos de clientes est0 rellena 7o no es %.

)onvertir tem!oralmente valores num=ricos normales 7como 1. La siguiente instrucci n SELE)& resta la !arte de las ventas del aKo Iue reci"e el autor 7ventas Q !orcenta?e de derec4os de autor L 1009 del total de ventas.Pro"ar si una condici n es ciertaF como 3%DF O/F %O&F LIDEF 3%CF 3LL o I%. /esta. )om"inar !ermanente o tem!oralmente dos cadenas 7de caracteres o de datos "inarios9 en una cadena. Los o!eradores con mayor !re(erencia se e?ecutan antes Iue los o!eradores con menor !re(erencia. • Las e1!resiones entre !ar=ntesis tienen !re(erencia so"re el resto de las o!eraciones. 'peradores arit/8ticos Los o!eradores aritm=ticos se !ueden usar !ara reali:ar cualIuier c0lculo aritm=ticoF comoJ • • • • • Suma. En estas e1!resiones com!le?asF los o!eradores se eval@an en un orden Iue se "asa en la de(inici n de SQL Server de la !re(erencia de o!eradores. Divisi n. M dulo 7el resto de una o!eraci n de divisi n9 3 continuaci n se !ro!orciona in(ormaci n acerca de los o!eradores aritm=ticosJ • )uando 4ay m0s de un o!erador aritm=tico en una e1!resi nF !rimero se calculan las multi!licacionesF divisiones y m dulosF yF des!u=sF las restas y las sumas. 3signar un valor a una varia"leF o asociar una columna de un con?unto de resultados con un alias. L gicos O!eradores aritm=ticos .09 a enteros y reali:ar aritm=tica de "its 70 y 19. Multi!licaci n.na e1!resi n se !uede generar a !artir de varias e1!resiones m0s !eIueKas com"inadas mediante o!eradores.nario. /eali:ar una o!eraci n en un o!erandoF como !ositivo o negativoF o el com!lementario. El !roducto de ytdEsales y royalty se calcula . • )uando todos los o!eradores aritm=ticos de una e1!resi n tienen el mismo nivel de !re(erenciaF el orden de e?ecuci n es de i:Iuierda a derec4a. El resultado es la cantidad de dinero Iue reci"e el editor. O!eradores "inarios O!erador de concatenaci n de cadenas 3signaci n . SumaF restaF multi!licaci nF divisi nF m dulo.

mencionado anteriormente9 y desea reali:ar una conversi n interna !ara reali:ar c0lculos "inariosF use los o!eradores "inarios.sa&"s / roya&ty ..) %R!M t t&"s &am"i=n !uede usar !ar=ntesis !ara cam"iar el orden de e?ecuci n. de mar:o de 1992 !ro!orcionar0 una lista de los em!leados Iue de"en reci"ir la "oni(icaci n.F sino Iue desea usar aritm=tica "inaria 7suma de 0 y 19. d3 ytd.sa&"s < ytd..F !ero no s lo desea el valor decimal de 22. Los o!eradores "inarios tam"i=n son @tiles !ara o"tener un valor %O& Iue no sea necesariamente el o!uesto e1acto. *. 3 continuaci nF el total se divide !or 100.sa&"s / roya&ty) . Por e?em!loF el o!erador o 7%O& "inario9 cam"ia los 1 "inarios a 0F y los 0 a 1. Los c0lculos entre !ar=ntesis se eval@an !rimero.E o B3LSE seg@n el resultado de la condici n !ro"ada.sa&"s) / roya&ty . %R!M t t&"s 'peradores binarios Los o!eradores "inarios se usan en los datos intF s#allint o tinyint. Los o!eradores de com!araci n v0lidos sonJ . Si est0 almacenando datos de enteros 7valores decimales normalesF como el 1. 'peradores de co/paración Los o!eradores de com!araci n se usan con los datos de caracteresF num=ricos o de (ec4aF y se !ueden utili:ar en las cl0usulas #EE/E o E3'I%8 de una consulta..!rimero !orIue el o!erador es una multi!licaci n. El o!erador o 7%O& "inario9 !uede usar tam"i=n datos (it. Por e?em!loF su!onga Iue desea sumar 1. Este resultado se resta de ytdEsales. USE 6u1s SELECT t t&".0 y A.sa&"s < ytd. d3 (ytd. d3 ytd.sa&"s < ((ytd. *. Los o!eradores de com!araci n dan como resultado un ti!o de datos -ooleanJ devuelven &/. Por e?em!loF !ara calcular una "oni(icaci n !ara aIuellos em!leados Iue 4an sido contratados antes del 1. Si los !ar=ntesis est0n anidadosF el c0lculo con una anidaci n m0s !ro(unda es el Iue tiene !re(erencia. *. %R!M t t&"s Para conseguir una mayor claridadF !uede usar !ar=ntesisJ USE 6u1s SELECT t t&". Por e?em!loF el resultado y signi(icado de la consulta anterior se !ueden cam"iar si usa !ar=ntesis !ara o"ligar a Iue la resta se eval@e antes Iue la multi!licaci nJ USE 6u1s SELECT t t&". de mar:o de 1992F el c0lculo de si la NireEdate 7(ec4a de contrataci n9 de un em!leado es menor o igual al 1. Para com!ro"ar las o!eraciones "inariasF !uede convertir o calcular los valores decimales. &odos los o!eradores "inarios reali:an una o!eraci n en uno o m0s valores enteros es!eci(icados en e1!resiones "inarias de las instrucciones de &ransactGSQL.0 y A. Para este (inF use el o!erador "inario 3%D 7\9.

nicode` S&2 [ %`cadena . iS 7no mayor Iue9.nicode`9 o S&2 [ )3S&7`cadena no . EIuivalente a S&2 [ )O%'E/&7ncNarF `cadena no . En las instrucciones de modi(icaci n de datosF se recomienda Iue s lo use los o!eradores de com!araci n si sa"e Iue dis!one de los !ermisos adecuados y Iue los datos ser0n cam"iados s lo !or un !eIueKo gru!o de !ersonas 7!ara mantener la integridad de los datos9. .nido.nicodeX S&1 es cNar y S&2 es ncNar. Por e?em!loF si la columna del !a5s es /. En la ta"la se muestran e?em!los de com!araci n de cadenas entre datos .nicode` )O%'E/&7ncNarF S&19 [ S&2 o )3S&7S&1 3S nc4ar9 [ S&2 S&1 [ )O%'E/&7cNarF S&29 o S&1 [ )3S&7S&2 3S cNar9 %`` 7cadena vac5a . )om!araci n . i[ 7distinto de9. )om!araci n normal de cadena de SQLG92.o#%aración S&1 [ S&2 S&1 [ `cadena no . i[ 7distinto de9.nicode y no . Los o!eradores de com!araci n se !ueden usar tam"i=n en la l gica del !rograma !ara com!ro"ar una condici n. )adena vac5a. En este casoF se usan ?untos una com"inaci n de un o!erador de com!araci nF una e1!resi n 7el nom"re de columna9F un literal 7^/. Las consultas usan tam"i=n com!araciones de cadena !ara com!arar el valor de una varia"le localF cursor o columna con una constante.nicode` S&2 [ `cadena no . .nicode` 3S ncNar9. ia 7no menor Iue9.nicode._9 y una !ala"ra clave de !rogramaci n de control de (lu?o 7IB9F !ara conseguir este !ro! sito.nicode9 'escri%ción EIuivalente a )O%'E/&7ncNarF S&19 [ S&2 o )3S&7S&1 como ncNar9 [ S&2. en lugar de Es!aKaF !uede Iue se a!liIuen distintas tari(as de env5o. )om!araci n . )om!araci n normal de cadena de SQLG92.na cadena vac5a o una cadena Iue contiene un car0cter "lanco 7de!endiendo . a 7menor Iue9. S[ 7mayor o igual Iue9. [ 7igual9.• • • • • • • • • S 7mayor Iue9.nicode entre !ar=ntesis9 `` 7cadena vac5a no . Por e?em!loF !ara im!rimir todas las (ilas de cliente si el !a5s es el /eino . a[ 7menor o igual Iue9.nicode. )ualIuier !ersona Iue tenga acceso a los datos reales 7!ara consultas9 !uede usar los o!eradores de com!araci n en consultas adicionales.

. 3 continuaci n se muestra un e?em!lo de concatenaci nJ SELECT ('a1c' ) 'd"A') lste es el con?unto de resultadosJ <<<<<< a1cd"A (* ro0(s) aAA"ct"d) Esta consulta muestra los nom"res de los autores con direcciones de )ali(ornia "a?o la columna oniXerF en el orden a!ellidoF nom"reF con una coma y un es!acio detr0s del a!ellido.AM (* ro0(s) aAA"ct"d) La cadena vac5a 7TT9 se eval@a como un es!acio individualJ SELECT 'a1c' ) '' ) 'd"A' lste es el con?unto de resultadosJ <<<<<<< a1cd"A (* ro0(s) aAA"ct"d) .de la con(iguraci n de SQLG929. USE $orth0 'd K! SELECT Last$a=" ) '3 ' ) % rst$a=" AS Mo' Q"r %R!M E=6&oy""s -HERE R"H o' = '-A' lste es el con?unto de resultadosJ Mo' Q"r <<<<<<<<<<<<<<<<<<<<<<<<< Da@o& o3 $a'cy %u&&"r3 A'dr"0 L"@"r& 'H3 Pa'"t P"acocQ3 MarHar"t Ca&&aha'3 Laura (*5 ro0(s) aAA"ct"d) Otros ti!os de datosF como dateti#e y s#alldateti#eF de"en convertirse a cadenas de caracteres con la (unci n de conversi n )3S& antes de Iue se !uedan concatenar con una cadena. 'perador de concatenación de cadenas El o!erador de concatenaci n de cadenas es el signo m0s 7P9. USE 6u1s SELECT 'Th" du" dat" s ' ) CAST(6u1dat" AS @archar(*2F)) %R!M t t&"s -HERE t t&". Puede com"inarF o concatenarF dos o m0s cadenas de caracteres en una @nica cadena. d = '?U*.+2' lste es el con?unto de resultadosJ <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Th" du" dat" s Pu' *2 *44* *2>. &am"i=n !uede concatenar cadenas "inarias.

3 continuaci n se muestra in(ormaci n acerca de los valores %.LL de (orma Iue determinados c0lculos s lo se realicen en (ilas con datos v0lidos 7o no %. I#%ortante Para minimi:ar las tareas de mantenimiento y los !osi"les e(ectos en las consultas o in(ormes e1istentesF se recomienda Iue disminuya al m5nimo el uso de los valores %. Planee sus consultas e instrucciones de modi(icaci n de datos de (orma Iue los valores %.Aota Que una cadena vac5a 7``9 se inter!rete como un car0cter "lanco individual o como un car0cter vac5o de!ende de la con(iguraci n del nivel de com!ati"ilidad de s%Ed(c#%tlevel. Los valores %. Dos valores %.LL no se !ueden usar en la in(ormaci n necesaria !ara distinguir una (ila de una ta"la de una (ila de otra ta"la 7!or e?em!loF en claves !rinci!ales o e1ternas9. • Los valores %. Para este e?em!loF si s%Ed(c#%tlevel es +.PD3&EF se de?a (uera una columna de una instrucci n I%SE/&F o cuando se agrega una columna nueva a una ta"la e1istente con la instrucci n 3L&E/ &3-LE.LL cuando realice c0lculos !uede ser im!ortante !orIue algunos 7comoF !or e?em!loF un !romedio9 !ueden ser incorrectos si se incluyen columnas %.F los literales vac5os se tratan como un "lanco individual.LL es desconocido. Es !osi"le Iue 4aya valores %.LLF o entre un valor %.LL o los trans(ormen en alg@n otro valor 7si no desea Iue a!are:can en los datos9. • Los valores %. La eliminaci n de los valores %.LL y cualIuier otro valorF tiene un resultado desconocido !orIue el valor de cada %.LL en una consultaF use IS %. Por e?em!loF la inicial de un cliente !uede Iue no sea conocida en el momento en Iue =ste 4ace un !edido. . V1-/$#& NULL %.LL en la cl0usula #EE/E. La com!araci n entre dos valores %. • )uando se visuali:an los resultados en el 3nali:ador de consultas de SQL ServerF los valores %.LL9.LL indican normalmente Iue el dato es desconocidoF no es a!lica"le o Iue se agregar0 !osteriormente.LL.LL se !ueden insertar en una columna si se indica e1!l5citamente %.LL o IS %O& %.LL no son iguales.LL en los datosF !or lo Iue es una "uena !r0ctica crear consultas e instrucciones de modi(icaci n de datos Iue eliminen los valores %. En el c digo del !rogramaF !uede com!ro"ar la e1istencia de valores %.LL en una instrucci n I%SE/& o .LL tengan un e(ecto m5nimo.LL se muestran como 1null2 en el con?unto de resultados.LL.LLJ • Para com!ro"ar valores %. Por e?em!loF un in(orme !uede im!rimir la columna de seguridad social s lo si en la columna 4ay datos Iue no son %.LL indica Iue el valor es desconocido.LL. Es distinto de un valor vac5o o cero.

LLF como %. Los . Las com!araciones entre %.LL en los datosF los o!eradores l gicos y de com!araci n !ueden devolver un tercer resultado desconocido 7.%D%O#% B3LSE 043E &/. Esta necesidad de una l gica de tres valores es el origen de muc4os errores de la a!licaci n.E .%D%O#% B3LSE 3AMA*WA .%D%O#% . Los comentarios se usanF a menudoF !ara guardar el nom"re de un !rogramaF el nom"re del autor y las (ec4as de los cam"ios im!ortantes del c digo.%D%O#% EvalYa a B3LSE .E ?ALSE B3LSE B3LSE B3LSE ?ALSE &/.LL B3LSE EvalYa a B3LSE &/.E &ransactGSQL o(rece tam"i=n una am!liaci n !ara el !rocesamiento de los valores %.%D%O#% . La utili:aci n de comentarios 4ace m0s (0cil el mantenimiento (uturo del c digo del !rograma. AA' con valor &/. Los comentarios se !ueden usar !ara documentar c digo o !artes des4a"ilitadas tem!oralmente de instrucciones y lotes de &ransactGSQL Iue se est0n diagnosticando.LL !ara com!ro"ar la !resencia de valores %. Estas ta"las destacan el e(ecto de escri"ir com!araciones con %. Si la o!ci n 3%SIW%.E.%D%O#% B3LSE 3AMA*WA &/.%D%O#% &/.E &/.E %.%D%O#% B3LSE A*0 &/. Miscelaneo U.E B3LSE IS A*0 A3LL &/.E El est0ndar SQLG92 escri"e las !ala"ras clave IS %.E B3LSE &/.LLF da como resultado &/.E .E &/.LL [ %.E 7verdadero9 o B3LSE 7(also9.E .LL.LL e IS %O& %.E .)uando 4ay valores %.(-(N1$ '/5#+.1$(/& Los comentarios son cadenas de te1to Iue no se e?ecutan incluidas en el c digo de un !rogramaX tam"i=n se conocen como o"servaciones.%D%O#% B3LSE *4 con valor &/.LL.LL y cualIuier valor de datos da como resultado B3LSE.E .%D%O#%9 en lugar de sim!lemente &/.E %. IS A3LL &/.LL B3LSE EvalYa a &/.LLS est0 desactivadaF las com!araciones entre los valores %.%D%O#% B3LSE 043E &/.LL.E .

SELECT / %R!M Products K! << Us 'H a co=="'t ' a Tra'sact<SLL stat"="'t << dur 'H d aH'os s( ./ % rst & '" oA a =u&t 6&"<& '" co=="'t( S"co'd & '" oA a =u&t 6&<& '" co=="'t( /. Los comentarios LQ QL de varias l5neas no !ueden dividirse en varios lotes. %ing@n otro car0cter de comentario de"e a!arecer en ninguna l5nea del comentario. Por e?em!loF en el 3nali:ador de consultas de SQL Server y el !rograma osVlF el comando 8O indica el (inal de un lote. Si 4ay un 8O al inicio de una l5nea entre los delimitadores LQ y QLF cualIuier delimitador de comentario sin corres!ondencia ser0 enviado con cada lote IueF a su ve:F desencadenar0 errores de sinta1is. )uando las 4erramientas leen los caracteres 8O en los dos !rimeros "ytes de una l5neaF env5an todo el c digo desde el @ltimo 8O al servidor como un lote.comentarios se !ueden usar !ara descri"ir c0lculos com!licados o !ara e1!licar determinado m=todo de !rogramaci n. &odo lo incluido entre el !ar de a!ertura de comentario 7LQ9 y el !ar de cierre de comentario 7QL9 se considera !arte del comentario./ Th" K! ' th s co=="'t caus"s SELECT / %R!M Products K! t to 1" 1rAc"6tar"' ' ha&A /. Estos caracteres !ara los comentarios se !ueden usar en la misma l5nea Iue el c digo Iue se va a e?ecutar o en una l5nea a!arte. lstos son algunos comentarios v0lidosJ USE $orth0 'd K! << % rst & '" oA a =u&t 6&"<& '" co=="'t( << S"co'd & '" oA a =u&t 6&"<& '" co=="'t( SELECT / %R!M E=6&oy""s K! . El comentario com!leto de"e estar contenido en un @nico lote. Por e?em!loF la siguiente secuencia de comandos contiene errores de sinta1isJ USE $orth0 'd K! SELECT / %R!M E=6&oy""s . Estos caracteres !ara los comentarios se !ueden usar en la misma l5nea Iue el c digo Iue se va a e?ecutarF en l5neas se!aradas oF inclusoF en el c digo e?ecuta"le. En un comentario de varias l5neasF el !ar de caracteres de a!ertura de comentario 7LQ9 de"e iniciar el comentarioF y el !ar de caracteres de cierre de comentario 7QL9 de"e (inali:arlo. &odo lo Iue se encuentre entre los dos guiones y el (inal de la l5nea es !arte del comentario. • LQ q QL 7!ar de caracteres "arra diagonal y asterisco9. Microso(tj SQL Serverk admite dos ti!os de caracteres !ara indicar comentariosJ  7do"le gui n9. En el caso de Iue un comentario ocu!e varias l5neasF los guiones do"les de"en a!arecer al !rinci!io de cada l5nea de comentarios.

U.n comentario se !uede com!oner de una o m0s l5neas. 3unIue este m=todo !ermite la e1istencia de o"?etos cuyos nom"res son !ala"ras reservadasF se recomienda Iue no !onga a los o"?etos de la "ase de datos ning@n nom"re Iue coincida con el de una !ala"ra reservada. Last$a=" %R!M E=6&oy""s << Us 'H a co=="'t aAt"r th" cod" o' a & '"( USE $orth0 'd K! UPDATE Products SET U' tPr c" = U' tPr c" / (4 << Try to 1u &d =arQ"t shar"( K! 3 continuaci n se muestra in(ormaci n "0sica acerca de los comentariosJ • En los comentarios se !ueden usar todos los caracteres o s5m"olos al(anum=ricos.(-(N1$ )1-12$1& '-1%# $#&#$%1.P de &ransactGSQL en una sesi n del 3nali:ador de consultas de SQL Server u osVlF indica a SQL Server Iue 4aga una co!ia de seguridad de toda o de !arte de una "ase de datosF o una co!ia de seguridad del registro. • %o 4ay longitud m01ima !ara un comentario dentro de un lote. Por e?em!loF la utili:aci n de la !ala"ra clave D. SQL Server !asa !or alto todos los caracteres de un comentarioF aunIue el 3nali:ador de consultas de SQL ServerF osVl e isVl "uscar0n 8O como los !rimeros dos caracteres de las l5neas de un comentario Iue ocu!a varias. . %ing@n o"?eto de la "ase de datos de"e reci"ir un nom"re Iue coincida con una !ala"ra clave reservada.se una convenci n de nom"res Iue evite la utili:aci n de !ala"ras clave reservadas. %o se !ermite incluir las !ala"ras clave reservadas de una instrucci n de &ransactGSQL en ninguna !arte Iue no sea donde de(ine SQL Server. Sinónimos Los ti!os de datos sin nimos se incluyen !or com!ati"ilidad con SQLG92. Si el nom"re de un o"?eto se !arece a una !ala"ra reservada claveF se !ueden Iuitar del mismo las consonantes o vocalesX !or e?em!loF un !rocedimiento Iue reali:a instrucciones -3)D.SELECT E=6&oy""#D3 .1& Microso(tj SQL Serverk reserva ciertas !ala"ras clave !ara su uso e1clusivo.P !ara todas las "ases de datos de(inidas !or el usuario se !uede llamar (cXu%. Si e1iste tal nom"reF siem!re se de"e 4acer re(erencia al o"?eto usando identi(icadores delimitados./ % rst$a="3 /. . Entre las (unciones de los administradores de la "ase de datos y del sistema o del creador de la "ase de datos se encuentraF !recisamenteF la de com!ro"ar la e1istencia de !ala"ras clave reservadas en el c digo de &ransactGSQL y en los nom"res de las "ases de datos.MP o -3)D. .

Sinóni#o "inary varying c4ar varying )4aracter )4aracter c4aracter7n9 c4aracter varying7n9 Dec dou"le !recision (loatc7n9d !ara n [ 1GA (loatc7n9d !ara n [ 2G1. Integer national c4aracter7n9 national c4ar7n9 national c4aracter varying7n9 national c4ar varying7n9 national te1t numeric 0i%o de datos asignado al siste#a var"inary varc4ar c4ar c4ar719 c4ar7n9 varc4ar7nn9 decimal (loat real (loat int nc4ar7n9 nc4ar7n9 nvarc4ar7n9 nvarc4ar7n9 nte1t decimal .