Está en la página 1de 196

Ing.

Danny Omar Macario

Programacion

Manual SQL Server 2000

Ing. Danny Omar Macario

Programacion

SQL SERVER DESCRIPCIN DEL ENTORNO Y CREACIN DE BASES DE DATOS ........................................................................................................... 5


Introduccin a SQL Server 2000 .................................................................................................................5 Ediciones e Instalacin de SQL Server .......................................................................................................9 Ediciones SQL Server 2000........................................................................................................................9 Instalaci n de SQL Server ........................................................................................................................11 Alguna edicin 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 autenticacin 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.....................................................................................................................).reacin 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 ..........................................................................................................+.

CREACIN 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

Ing. Danny Omar Macario

Programacion

.reacin 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 INFORMACIN.......................................................................... 97


*(+etivos& ......................................................................................................................................................9/ 0e#as& ...........................................................................................................................................................9/ Select .........................................................................................................................................................9A Insert ........................................................................................................................................................10; ,!date .....................................................................................................................................................10; Delete ......................................................................................................................................................10+ 4ecu%erar in$or#acin 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

Ing. Danny Omar Macario

Programacion

GLOSARIO ...................................................................................................... 151 REFERENCIA DEL TRANSACT"SQL ............................................................ 153


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

Manual SQL Server 2000

Ing. Danny Omar Macario

Programacion

UPDATE Products .........................................................................................................192 ,tili:ar !ala"ras clave reservadas ..........................................................................................................192 Sin nimos................................................................................................................................................192

Manual SQL Server 2000

Ing. Danny Omar Macario

Programacion

SQL S#$%#$ D#&'$()'(*+ ,#- E+./$+/ 0 C$#1'(*+ ,# B1&#& ,# D1./& O23#.(%/&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

Introduccin 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". 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%. 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. SQL Server 2000 est0 diseKado !ara tra"a?ar con dos ti!os de "ases de datos J OLTP 6O+L(+# T$1+&1'.(/+ 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. Por e?em!lo J entrada de !edidos en l5neaF inventarioF conta"ilidad o (acturaci n. OLAP 6O+L(+# A+1-0.('1- 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.

Manual SQL Server 2000

Ing. 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. 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&#$%(,/$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. 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.$:'.:$#, 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. 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&#& ,# ,1./& $#-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. En una "ase de datos relacionalF los datos est0n organi:ados en ta"las 7llamadas relaciones en la teor5a relacional9. ,na ta"la re!resenta una clase de o"?eto Iue tiene im!ortancia !ara una organi:aci n. 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. Las ta"las est0n com!uestas de columnas y (ilas 7atri"utos y tu!las en la teor5a relacional9. 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. )ada (ila re!resenta una instancia del o"?eto re!resentado !or la ta"la. Por e?em!loF una (ila de la ta"la E5)-#1,/& re!resenta el em!leado cuyo Id. de em!leado es 12.6;. 3l organi:ar los datos en ta"lasF se !ueden encontrar varias (ormas de de(inirlas. 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

Ing. 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.
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. 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.

Manual SQL Server 2000

Ing. Danny Omar Macario


Como soporte para las aplicaciones clientes tenemos:

Programacion

1. 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. 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. .. $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. 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. 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. /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. 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. Por e?em!loJ NList all customersOF NEo$ many "lue dress $ere sold in 2001>OF 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. Los Meta Data Services !roveen tres est0ndaresJ Meta Data Coalition Open Information Model (MDC OIM)F Inter(aces )OM y XML Encoding. 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.

Manual SQL Server 2000

Ing. Danny Omar Macario


)om!onentes de SQL Server 2000

Programacion

Ediciones e Instalacin de SQL Server

E,('(/+#& SQL S#$%#$ ;;; SQL Server 2000 est disponible en seis diferentes versiones adems en cualquier edicin se incluye el SQL Server 2000 Des)to# Engine:

E+.#$)$(&#F so!orta todas las caracter5sticas de SQL Server 2000. 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. 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.
Entre las caractersticas ms saltantes que no se encuentran disponibles para el motor relacional podemos mencionar:

)lustering Log S4i!!ing 'istas inde1adas

Manual SQL Server 2000

10

Ing. Danny Omar Macario

Programacion

Entre las caractersticas ms destacadas que no se encuentran disponibles para los servicios de anlisis:

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. Esta edici n !uede ser em!leada !ara a!licaciones standalone y usuarios m viles Iue reIuieran un almacenamiento local de in(ormaci n. =(+,/>& CE E,(.(/+F es em!leado !ara almacenar in(ormaci n en dis!ositivos #indo$s )E. SQL Server 2000 )E es im!lementado como un con?unto de li"rer5as 7DLLs9 Iue o!eran como un OLE D- )E Provider. Est0 im!lementaci n !ermite Iue SQL Server 2000 )E so!ortar Active* Data Objects (or $indows +E ADO+E" y OLE D- )E 3PIs en #indo$s )E versiones dis!oni"les !ara 'isual -asic y 'isual )PP. 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.
Los dispositivos !indo"s CE pueden conectarse a la red empleando #emote $ata %ccess &#$%' caracterstica 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. Ser suscri!tor en una re!licaci n de ti!o merge. D#%#-/)#$ 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. Esta edici n s lo esta licenciada !ara desarrollo y !rue"a de los sistemas. E+.#$)$(&# E%1-:1.(/+ E,(.(/+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 li"re y se !uede descargar desde el #e" aunIue s lo !odr0 e?ecutarla !or 120 d5as. SQL S#$%#$ ;;; 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 em!leada !ara aIuellas a!licaciones Iue no reIuieran la im!lementaci n de tareas administrativas !ara el cliente. De"e recordar Iue las "ases de datos no de"en e1ceder los 2 8". de tamaKo.

Manual SQL Server 2000

11

Ing. Danny Omar Macario

Programacion

I+&.1-1'(*+ ,# 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. em!leeJ
R#':$&/ R#@:#$(5(#+./

)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+.#$)$(&# E&.<+,1$ E%1-:1.(/+ D#%#-/)#$ P#$&/+1- 0 D#&?./) E+7(+#

Alguna 2() *+ &,2- 2() *+ &,2- 2() *+ &,2- 2() *+ &,2- 2() *+ &,2edicin de *+ *+ *+ *+ *+ Windows 2000 soportado' soportado' soportado' soportado' soportado' Server
%l.una edicin 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,2- *+ &)1 *+ soportado' )1 *+ ,2- *+ recomendado &)1 *+ soportado' ,2- *+ recomendado &)1 *+ soportado' ,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 ;.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 ;.0 o !osterior. 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

Ing. Danny Omar Macario

Programacion

O)'(*+ ,# I+&.1-1'(*+ &#-#''(/+1,1

E&)1'(/ #+ ,(&'/ $#@:#$(,/

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;G2A0 M- de!endiendo de las o!ciones seleccionadas 2;0 M- 71A2 M- !ara el sistemaF m0s A2 M- !ara !rogramas y arc4ivos de datos9 110 M- 7A. M- !ara el sistemaF m0s .A M- !ara !rogramas y arc4ivos de datos9 11. M- 7sistema solamente9 .0 M- 7sistema solamente9 6A M- m5nimo 120 M- ty!ical 20 M66 M-

Pasos para la instalacin 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.

Ing. 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.

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

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.

3ce!te las condiciones del licenciamientoJ

Manual SQL Server 2000

1;

Ing. 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. 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.+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+

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

Ing. Danny Omar Macario


..

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.

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. Danny Omar Macario

Programacion

;.

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

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

Ing. Danny Omar Macario

Programacion

+.

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,inish9 !ara (inali:arJ

Manual SQL Server 2000

21

Ing. Danny Omar Macario

Programacion

Manual SQL Server 2000

22

Ing. Danny Omar Macario

Programacion

Verificar la instalacin de SQL Server 8na ve9 finali9ada la instalacin debe revisar la instalacin 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.uiente aspecto:

Se.uidamente observar una ca;a de dilo.o con el si.uiente aspecto:

<tra de las formas de verificar el estado de la instalacin es :aciendo pruebas con las sentencias a nivel del smbolo del sistema que ofrece SQL Server como es el caso del utilitario <SQL para comprobar su funcionamiento abra una ventana del sistema y di.ite el si.uiente comando:

)JRSosIl TSAS:&:1$(/%(,/$B G,A:&:1$(/B TPA'/+.$1&#C1B TI USelect )ategory%ame Brom %ort4$ind..)ategoriesU A):-&# E+.#$B
#eemplace el te=to en ne.rita por los valores adecuados2 El resultado ser:

Manual SQL Server 2000

2.

Ing. Danny Omar Macario


Cate.ory/ame >>>>>>>>>>>>>>> +evera.es Condiments Confections $airy 3roducts ?rains5Cereals *eat53oultry 3roduce Seafood &- ro"s affected' 1S Iuit A):-&# E+.#$B

Programacion

Otra manera de poder verificar la instalacin de SQL Server es revisar los servicios que se cargan, para ello presione el botn del men Inicio (Start), seleccione Programas (Programs), erramientas !dministrativas (!dministrative "ools) # $aga clic en Servicios (Services)%

Compruebe que los si.uientes servicios se encuentren iniciados:

MSSQL Server &ste servicio es el motor de base de datos, 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, entre sus principales funciones podemos mencionar% La asignacin de recursos del servidor entre mltiples usuarios concurrentes( Previene los problemas lgicos, como por e)emplo prevenir que los usuarios modifiquen la misma informacin al mismo

Manual SQL Server 2000

26

Ing. Danny Omar Macario


tiempo( !segura la consistencia e integridad de datos(

Programacion

Manual SQL Server 2000

2;

Ing. Danny Omar Macario

Programacion

SQL Server Agent &ste servicio traba)a )unto al *SSQL Server para crear # administrar !lertas, "areas (locales o multiserver) # Operadores( &ntre sus principales funciones podemos mencionar% Las alertas proveen informacin acerca del estado de un proceso, como por e)emplo indicar cuando finali+o una tarea con ,-ito o fracaso( &ste servicio inclu#e un motor que permite crear tareas # programarlos para que se e)ecuten autom.ticamente( Puede enviar correos electrnicos, puede indicar la e)ecucin de una tarea cuando una alerta ocurre( MS DTC Permite incluir mltiples or/genes de datos en una transaccin, se encarga de coordinar # asegurar que las actuali+aciones sobre todos los servidores sean permanentes, # si en caso estos cambios causaran un error des$acer todos( Microsoft Search &ste es un servicio opcional # se encarga de reali+ar bsquedas sobre informacin tipo car.cter creando /ndices para facilitar estas consultas( !dem.s de ello podr. ingresar a la consola de administracin de SQL Server denominada !dministrador 0orporativo (!dministrador &mpresarial), 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+

Ing. Danny Omar Macario

Programacion

Manual SQL Server 2000

2A

Ing. 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.

INICIO DE SESIN

&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.
=(+,/>& 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.resa al sistema operativo2

Para modificar la autenticacin realice los siguientes asos!


, Aa.a clic derec:o sobre el servidor en el menB conte=tual :a.a clic sobre la opcin 3roperties2

Manual SQL Server 2000

22

Ing. Danny Omar Macario

Programacion

En la ca;a de dilo.o :a.a clic sobre la fic:a S#7:$(,1, se presentar la si.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. Seleccione NS lo #indo$sO cuando los datos estar0n dis!oni"les s lo a los em!leados de la organi:aci n. 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. Eec4o esto ,d. !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

Ing. 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. Pulse 3ce!tar al (inali:ar.

Manual SQL Server 2000

.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

.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

Ing. 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. Danny Omar Macario

Programacion

B1&#& ,# D1./& ,# SQL S#$%#$


SQL Server so!orta "ases de datos del sistema y "ases de datos del usuario. 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. Las "ases de datos del sistema sonJ
51&.#$ La base de datos 51&.#$ se compone de las tablas de sistema que reali9an el se.uimiento de la instalacin del servidor y de todas las bases de datos que se creen posteriormente2 %simismo controla las asi.naciones de arc:ivos los parmetros de confi.uracin que afectan al sistema las cuentas de inicio de sesin2 Esta base de datos es crtica para el sistema as que es bueno tener siempre una copia de se.uridad actuali9ada2 .#5),2 Es una base de datos temporal fundamentalmente un espacio de traba;o es diferente a las dems bases de datos puesto que se re.enera cada ve9 que arranca SQL Server2 Se emplea para las tablas temporales creadas e=plcitamente por los usuarios para las tablas de traba;o intermedias de SQL Server durante el procesamiento y la ordenacin de las consultas2 5/,#Se utili9a como plantilla para todas las bases de datos creadas en un sistema2 Cuando se emite una instruccin C#E%0E $%0%+%SE la primera parte de la base de datos se crea copiando el contenido de la base de datos 5/,#- el resto de la nueva base de datos se llena con p.inas vacas2 5&,2 Es empleada por el servicio SQL Server %.ent para .uardar informacin con respecto a tareas de automati9acin como por e;emplo copias de se.uridad y tareas de duplicacin asimismo solucin a problemas2 La informacin contenida en las tablas que contiene esta base de datos es fcilmente accedida desde el %dministrador Empresarial as que se debe tener cuidado de modificar esta informacin directamente a menos que se cono9ca muy bien lo que se esta :aciendo2 D(&.$(2:.(/+ %lmacena toda la informacin referente a la distribucin de datos basada en un proceso de replicacin2

$#%etos de una &ase de "atos

Manual SQL Server 2000

.+

Ing. 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. )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. 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(&.1 es un o"?eto de(inido !or una consulta- 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. 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. Bundamental em!lean !ara mostrar la in(ormaci n relevante !ara el usuario y ocultar la com!le?idad de las consultas. 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. ,n P$/'#,(5(#+./ A-51'#+1,/ 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

.A

Ing. Danny Omar Macario

Programacion

control. ,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. Para e?ecutarlos de"en ser invocados e1!l5citamente !or los usuarios. ,n D#&#+'1,#+1,/$ es un Procedimiento 3lmacenado es!ecial el cual se invoca autom0ticamente ante una o!eraci n de InsertF ,!date o Delete so"re una 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. Los V1-/$#& P$#,#.#$5(+1,/& 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. 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. Las /eglas son asociadas a una columna o a un ti!o de dato de(inido !or el usuario. ,na columna o un &i!o de dato !uede tener solamente una /egla asociada con el. Las R#&.$(''(/+#& son restricciones Iue se asignan a las columnas de una ta"la y son controladas autom0ticamente !or SQL Server. 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 creacin y alteracin 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. Los G+,('#& 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 5ndice contiene valores y !unteros a las (ilas donde estos valores se encuentran.

Manual SQL Server 2000

.2

Ing. Danny Omar Macario

Programacion

'reacin 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.

Manual SQL Server 2000

.9

Ing. Danny Omar Macario

Programacion

Pginas

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.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.#& 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. del o"?eto !ro!ietario de la !0gina. E1isten oc4o ti!os de !0ginas en los arc4ivos de datos de una "ase de datos SQL Server 2000.
T()/ ,# )<7(+1 $atos C/+.#+(,/

Bilas con todos los datos e1ce!to los de ti!o .#H.F +.#H. e (517#.

Endice Entradas de ndices 0e=to o ima.en Datos de ti!o .#H.F +.#H. e (517#. *apa de asi.nacin .lobal5 *apa de asi.nacin .lobal Dnformacin acerca de las e=tensiones asi.nadas2 Secundario Dnformacin acerca del espacio libre disponible en Espacio libre en la p.ina las p.inas2 *apa de asi.nacin de Dnformacin acerca de las e=tensiones utili9adas ndices2 por una tabla o un ndice

Manual SQL Server 2000

60

Ing. Danny Omar Macario

Programacion

+ul6 C:an.ed *ap $ifferential C:an.ed *ap

Dnformacin de los e=tends modificados por operacin bul6 desde el Bltimo bac6up del lo.2 Dnformacin de los e=tends modificados desde el Bltimo full database bac6up2

Los arc4ivos de registro 7LO89 no contienen !0ginasF contienen series de registros. Las !0ginas de datos contienen todos los datos de las (ilas de datos e1ce!to los datos .#H.F +.#H. e (517#F Iue est0n almacenados en !0ginas se!aradas. 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. Las entradas de la ta"la de !osiciones de (ilas est0n en orden inverso a la secuencia de las (ilas de la !0gina.

En SQL ServerF las (ilas no !ueden continuar en otras !0ginas. Las e=tensiones son la unidad "0sica de asignaci n de es!acio a las ta"las e 5ndices. )onsta de 2 !0ginas contiguasF es decir +6 D-. Lo cual re!resenta 1+ e1tensiones !or M-. 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. SQL Server 2000 tiene dos ti!os de e1tensionesJ
Las e=tensiones uniformes son propiedad de un Bnico ob;etoF slo el ob;eto propietario puede utili9ar las oc:o p.inas de la e=tensin2 E=tensiones mi=tas pueden estar compartidas por :asta oc:o ob;etos2

Manual SQL Server 2000

61

Ing. Danny Omar Macario

Programacion

Las tablas o ndices nuevos son asi.nados a p.inas de e=tensiones mi=tas2 Cuando la tabla o el ndice crecen :asta el punto de ocupar oc:o p.inas se pasan a e=tensiones uniformes2

"rc#ivos

gr$pos de arc#ivos f%sicos de la base de datos

,n arc4ivo de "ase de datos no es mas Iue un arc4ivo del sistema o!erativo. ,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. Princi!almente SQL Server divide su tra"a?o en un arc4ivo !ara datos y otro !ara el registro de las transacciones 7log9. SQL Server 2000 !ermite los tres siguientes ti!os de arc4ivosJ
A$'I(%/& ,# ,1./& )$(51$(/& 0oda base de datos tiene un arc:ivo de datos primario que reali9a el se.uimiento de todos los dems arc:ivos adems de almacenar datos2 3or convenio este arc:ivo tiene la e=tensin *$G2 A$'I(%/& ,# ,1./& &#':+,1$(/& 8na base de datos puede tener cero o varios arc:ivos de datos secundarios2 3or convenio la e=tensin recomendada para los arc:ivos de datos secundarios es /$G2 A$'I(%/& ,# $#7(&.$/ 6LOG8 0odas las bases de datos por lo menos tendrn un arc:ivo de re.istro que contiene la informacin necesaria para recuperar todas las transacciones que suceden sobre la misma2 3or convenio la e=tensin 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
,2 0odas las +ases de $atos tienen un arc:ivo de base de datos primario &2mdf' y uno para el Lo. de 0ransacciones &2ldf'2 %dems puede tener arc:ivos de datos secundarios &2ndf'2

Manual SQL Server 2000

62

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 informacin necesaria para la recuperacin de la +ase de $atos en una eventual cada 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.uracin como punto de partida y a;uste de acuerdo a las necesidades de su aplicacin2 "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 modificacin de datos es enviada por la aplicacin cliente2 22 Cuando una modificacin es e;ecutada las p.inas afectadas son ledas del disco a memoria &+uffer Cac:e' provista de las p.inas que no estn todava en la $ata Cac:e del query previo2 42 Cada comando de modificacin 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%&.
*reacin 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

Ing. 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.

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. 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

;1

Ing. 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

;2

Ing. Danny Omar Macario

Programacion

,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.
$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+,A-, *A-ABAS, &om$reBase*atos . O& ./+0MA+1 &AM, 2 nom$reArchivo3%gico '03,&AM, 2 4nom$reArchivoSO4 S05, 2 tama#o MA6S05, 2 7 tama#oM89imo : U&30M0-,* ; '03,G+O<-= 2 incrementoCrecimiento> . ?n@ @ . 3OG O& &AM, 2 nom$reArchivo3%gico '03,&AM, 2 4nom$reArchivoSO4 S05, 2 tama#o MA6S05, 2 7 tama#oM89imo : U&30M0-,* ; '03,G+O<-= 2 incrementoCrecimiento> . ?n@

Manual SQL Server 2000

;.

Ing. Danny Omar Macario


.CO33A-, nom$re_collation@ . 'O+ 3OA* : 'O+ A--AC= @

Programacion

A$7:5#+./& +/52$#B1&#D1./&

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. 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.
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. 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.
PRIMARY

Es!eci(ica Iue la lista de arc4ivos est0 asociada al gru!o !rinci!al. Este gru!o contiene todas las ta"las del sistema de "ase de datos. &am"i=n contiene todos los o"?etos no asignados a los gru!os de arc4ivos de usuario. 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. ,na "ase de datos s lo !uede tener un arc4ivo !rinci!al. 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.
LOG ON

Es!eci(ica Iue los arc4ivos de registro de la "ase de datos 7arc4ivos de registro9 se 4an de(inido e1!l5citamente. La !ala"ra clave va seguida de una lista delimitada !or comas la cual de(ine las caracter5sticas de los arc4ivos de registro. 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;Y de la suma de los tamaKos de todos los arc4ivos de datos de la "ase de datos.
FOR LOAD

)l0usula Iue se mantiene !or com!ati"ilidad con versiones anteriores de SQL Server. La "ase de datos se crea con la o!ci n de "ase de datos ,2/ :&# /+-0 activada y el estado se esta"lece en UcargandoU. En realida esto no es necesario en SQL Server A.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.
FOR ATTACJ

)rea la "ase de datos desde un con?unto e1istente de arc4ivos del sistema o!erativo. 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..1'IK,2 en lugar de em!lear +.EA'E DA'A/ASE ,O. A''A+0 directamenteF esto de"er0 em!learlo si de"e es!eci(icar m0s de 1+ arc4ivos.

Manual SQL Server 2000

;6

Ing. 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. 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. %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.
FILENAME

Es!eci(ica el nom"re de arc4ivo del sistema 7arc4ivo (5sico9. 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. La ruta de acceso de"e es!eci(icar un directorio en el servidor so"re el Iue se instalo SQL Server. %o se !uede es!eci(icar un directorio en un sistema com!rimido de arc4ivos.
SILE

Es!eci(ica el tamaKo !ara el arc4ivo. De no 4acerlo SQL Server utili:a el tamaKo del arc4ivo !rinci!al de la "ase de datos model. )uando este !ar0metro no es es!eci(icado !ara un arc4ivo secundario o de registro SQL Server autom0ticamente le asigna 1 M-. El valor m5nimo a asignar es de ;12 D-. Si no se es!eci(ica tamaKoF el valor !redeterminado es 1 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.
MAMSILE

Es!eci(ica el tamaKo m01imo de crecimiento del arc4ivo. Se !ueden utili:ar los su(i?os D- y M-F el valor !redeterminado es M-. Es!eci(iIue un n@mero enteroX no incluya decimales. Si no se es!eci(icaF el arc4ivo aumenta 4asta Iue el disco est= lleno.
UNLIMITED

Es!eci(ica Iue el arc4ivo aumenta de tamaKo 4asta Iue el disco est= lleno.
FILEGRO=TJ

Es!eci(ica el incremento de crecimiento del arc4ivoF este valor no !uede e1ceder el valor M3HSIZE. Em!lee un n@mero entero. ,n valor 0 indica Iue no 4ay crecimiento. El valor se !uede es!eci(icar en M-F D- o YF el valor !redeterminado es M-. )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. De no em!lear BILE8/O#&EF el valor !redeterminado es 10Y y el valor m5nimo es +6 D-. El tamaKo es!eci(icado se redondea al m@lti!lo de +6 D- m0s cercano.

O"servaciones Em!lee )/E3&E D3&3-3SE !ara crear una "ase de datos y los arc4ivos Iue almacenan =sta. SQL Server im!lementa )/E3&E D3&3-3SE en dos !asosJ

Manual SQL Server 2000

;;

Ing. 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.inas vacas e=cepto las p.inas que ten.an datos internos que re.istren cmo 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. )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. En un servidor se puede especificar un m=imo de 42 J)J bases de datos2 Cuando especifica una instruccin C#E%0E $%0%+%SE nombre+ase$atos sin parmetros 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#,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#-),2. Para o"tener un in(orme acerca del es!acio utili:ado en una "ase de datosF em!lee &)K&)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.

KQuiCnes pueden crear bases de datosL

En (orma !redeterminada !odr0n 4acerlos los usuarios Iue !ertenecen al rol &0&1,5(+ y ,2'$#1./$. Los miem"ros de las (unciones (i?as de servidor &0&1,5(+ y S#':$(.0A,5(+ !ueden conceder !ermisos )/E3&E D3&3-3SE a otros inicios de sesi n. Los miem"ros de las (unciones (i?as de servidor &0&1,5(+ y ,2'$#1./$ !ueden agregar otros inicios de sesi n a la (unci n ,2'$#1./$. El !ermiso )/E3&E D3&3-3SE de"e concederse e1!l5citamenteX no se concede mediante la instrucci n 8/3%& 3LL. 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.

E;emplos de creacin de base de datos empleando el %nali9ador de Consultas 3rimero in.rese al %nali9ador de Consultas para ello primero debe especificar el tipo de autentificacin a reali9ar del sistema o estndar vea la si.uiente fi.ura:

Manual SQL Server 2000

;+

Ing. Danny Omar Macario

Programacion

E3#5)-/ 1

)rear la "ase de datos Prue"a1 con los !ar0metros En (orma !redeterminada.


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. Para ello em!lee el siguiente !rocedimiento almacenado del sistemaJ
Sp_=elp*B /rue$a" GO

De"e o"tener el siguiente resultadoJ

+15#

,2K&(N#

/>+#$ ,2(,

'$#1.#,

Prue"a1 1.12 M-

sa

Be" 22 2002

&.1.:& C/5)1.(2(-(.0 L#%#S.1.:&[O%LI%EF

U),1.#12(-(.0M#E%$N!#D0E U&:1$(/A''#&&[M,L&IW,S,3/IOF R#'/%#$0[B,LLF V#$&(/+[;.9F C/--1.(/+[SQLWLatin1W8eneralW)P1W)IW3SF SQLS/$.O$,#$[;2F I&T/$+P17#D#.#'.(/+E+12-#,F

IsAuto.reateStatisticsF Is3uto,!dateStatistics

2.0

3dem0s se mostrar0 un in(orme con los arc4ivos Iue se crearon autom0ticamenteJ

Manual SQL Server 2000

;A

Ing. Danny Omar Macario


C/-:5+1& A$'I(%/ ,# ,1./& +15# prueba, D(-#(, , C:O3ro.ram GilesO*icrosoft SQL ServerO*SSQLOdataO3rueba,2 mdf D(-#+15# 3#D*%#P D(-#7$/:) )10Hb &(N# 8nlimited 51H&(N# ,0I 7$/>.I data only :&17#

Programacion
A$'I(%/ ,# L/7 prueba,Nlo. 2 C:O3ro.ram GilesO*icrosoft SQL ServerO*SSQLOdataO3rueba,NLo.2 ldf /8LL (01Hb 8nlimited ,0I lo. 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".F el arc4ivo de registro de"e asumir los valores !or de(ault.
Use Master GO Create *ata$ase /rue$aA On /rimar( B&AM, 2 /rue$aA_*ata '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aA _*ataGMdE S05, 2 "!M$ MA6S05, 2 A!M$ '03,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. Ejemplo 3 )rear la "ase de datos Prue"a. es!eci(icando un arc4ivo de datos con un tamaKo inicial de 1;M"F un tamaKo m01imo de .0M" y un crecimiento de ;M".F el arc4ivo de registro de"e tener un tamaKo inicial de ;M- y uno m01imo de 10M-F el crecimiento de"e ser de 1M-.
Use Master GO Create *ata$ase /rue$aH On /rimar( B&AM, 2 /rue$aH_*ata

Manual SQL Server 2000

;2

Ing. Danny Omar Macario


'03,&AM, 2 CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aH _*ataGMdE S05, 2 "IM$ MA6S05, 2 H!M$ '03,G+O<-=2 IM$> 3og On B&AM, 2 /rue$aH_3og '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD/rue$aH _3ogG3dE S05, 2 IM$ MA6S05, 2 "!M$ '03,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.
Use Master GO Select *$0* &ame 'rom S(s*ata$ases GO

/evise los resultados.

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- y !or alg@n motivo ocurre una (alla y desea recu!erar desde el "acMu!F necesitar5a una unidad de 1; 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- Iue unidades de 1;8-. )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. Para !oder reali:ar esta tarea em!lee la sentencia 3L&E/ D3&3-3SE Sinta@is
A3-,+ *A-ABAS, &om$reB*

Manual SQL Server 2000

;9

Ing. Danny Omar Macario

Programacion

7 A** '03, M,speciEicaci%n del archivoN . ?n@ .-O '03,G+OU/ nom$reGrupoArchivos@ : A** 3OG '03, MM,speciEicaci%n del archivoN . ?n@ : +,MOK, '03, nom$reArchivo3%gico : A** '03,G+OU/ nom$reGrupoArchivos : +,MOK, '03,G+OU/ nom$reGrupoArchivos : MO*0'1 '03, MM,speciEicaci%n del archivoN : MO*0'1 '03,G+OU/ nom$reGrupoArchivos propiedadGrupoArchivos : S,- M optionspec N . GGGn @ . <0-= M termination N @ : CO33A-, M collation_name N ;

Argu#entos
ADD FILE Especifica que se est a.re.ando un arc:ivo2

TO FILEGROUP Especifica el .rupo de arc:ivos al que debe a.re.arse el arc:ivo especificado2

ADD LOG FILE Especifica que se a.re.ue un arc:ivo de re.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 adems de eliminar el arc:ivo fsico2 Este arc:ivo no podr eliminarse si no est vaco2

ADD FILEGROUP Especifica que se va a a.re.ar un .rupo de arc:ivos2

REMOVE FILEGROUP Quita el .rupo de arc:ivos de la base de datos no se puede reali9ar si el .rupo de arc:ivos no est vaco2

MODIFY FILE Especifica que el arc:ivo dado se debe modificar incluidas las opciones ,%LE1AME& S%2E& ,%LE3.O$'0 y MA*S%2E- Slo se puede cambiar una de estas propiedades a la ve92

MODIFY FILEGROUP +/52$#G$:)/A$'I(%/& )$/)(#,1,G$:)/A$'I(%/& Especifica la propiedad que se aplicar a los arc:ivos que pertenecen al .rupo de arc:ivos2

Manual SQL Server 2000

+0

Ing. Danny Omar Macario


Los valores de ro iedad(ru oArc)ivos son:

Programacion

READONLY Especifica que el .rupo de arc:ivos es de slo lectura2 $e tal manera que no se podrn reali9ar modificaciones sobre los arc:ivos pertenecientes a este .rupo2

READ=RITE Dnvierte la propiedad #E%$</LP2 Estn :abilitadas las actuali9aciones para los ob;etos del .rupo de arc:ivos2

DEFAULT Especifica que el .rupo de arc:ivos es el predeterminado de la base de datos2 Slo un .rupo puede ser el predeterminado esta propiedad se quita del .rupo de arc:ivos que :aba sido anteriormente el predeterminado2 C#E%0E $%0%+%SE :ace que el .rupo de arc:ivos principal sea el .rupo predeterminado inicialmente2 Si no se especifica nin.Bn .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 .rupo predeterminado2 SET 3ermite establecer valores para al.unas de las caractersticas de traba;o en una base de datos por e;emplo el tipo de recovery que se emplear para los bac6ups2 COLLATE Especifica el con;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,P. Ejemplo 1
*odificar la base de datos 3rueba2 de tal manera que le debe a.re.ar un arc:ivo de datos secundario de (*+ y un tama@o m=imo de ,0 *+2 con un crecimiento de ,*+2 %ntes de e;ecutar el si.uiente comando utilice SpNAelp$+ 3rueba2 para comparar lue.o con los resultados despuCs de e;ecutar la sentencia2
US, master GO A3-,+ *A-ABAS, /rue$aA A** '03, B &AM, 2 /rue$aASec_*ata '03,&AM, 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD /rueA*ataGndE4 S05, 2 IMB MA6S05, 2 "!MB

Manual SQL Server 2000

+1

Ing. 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 informacin de los arc:ivos emplee la si.uiente sentencia:


Use /rue$aA GO Sp_=elp'ile GO

Si desea ver las caractersticas slo del arc:ivo que a.re.o utilice la si.uiente sentencia:
Sp_=elp'ile /rue$aASec_*ata GO /* ,l resultado le mostrar8 inEormaci%n del archivo Lue aca$a de agregar */

Ejemplo 2
Crear dos .rupos de arc:ivos en la base de datos 3rueba2 el primer .rupo se llamar C</S8L0<#ES y el otro se llamar <3E#%CD</ES2
A3-,+ *A-ABAS, /rue$aA A** '03,G+OU/ Consultores GO A3-,+ *A-ABAS, /rue$aA A** '03,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.uiente resultado: 7$/:)+15# 7$/:)(, D(-#'/:+. 2 4 , 0 0 2

)onsultores O!eraciones P/IM3/C Ejemplo 3

% cada uno de los .rupos creados anteriormente a@adale dos arc:ivos de datos para ello considere lo si.uiente: los arc:ivos del .rupo C</S8L0<#ES deben tener un tama@o de ,0 *+2 cada uno con un tama@o m=imo de 20 *+ y un crecimiento de

Manual SQL Server 2000

+2

Ing. Danny Omar Macario

Programacion

2 *+2 mientras que los del .rupo <3E#%CD</ES tendrn un tama@o inicial de ( *+ y un m=imo de 40 *+2 con un crecimiento de ( *b2
Use Master GO A3-,+ *A-ABAS, /rue$aA A** '03, B&AM, 2 *atCons!" '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atCons"GndE S05, 2 "!MB MA6S05, 2 A!MB '03,G+O<-= 2 AMB> B&AM, 2 *atCons!A '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atConsAGndE S05, 2 "!MB MA6S05, 2 A!MB '03,G+O<-= 2 AMB> -O '03,G+OU/ CO&SU3-O+,S GO A3-,+ *A-ABAS, /rue$aA A** '03, B&AM, 2 *atOper!" '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atOper"GndE S05, 2 IMB MA6S05, 2 H!MB '03,G+O<-= 2 IMB> B&AM, 2 *atOper!A '03,&AM, 2 CCD/rogram 'ilesDMicrosoEt ServerDMSSF3DdataD*atOperAGndE S05, 2 IMB MA6S05, 2 H!MB '03,G+O<-= 2 IMB> -O '03,G+OU/ O/,+AC0O&,S GO

SF3

SF3

SF3

SF3

,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$/:)(,

D(-#'/:+. 2 4 , 2 2 2

)onsultores O!eraciones P/IM3/C

Manual SQL Server 2000

+.

Ing. 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".
Use Master GO A3-,+ *A-ABAS, /rue$aA MO*0'1 '03, B &AM, 2 *atOper!" MA6S05, 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.


Use Master GO A3-,+ *A-ABAS, /rue$aA +,MOK, '03, *atOper!" GO

Ejemplo 6 Eacer Iue el gru!o de arc4ivos O!eraciones sea el gru!o En (orma !redeterminada.
Use Master GO A3-,+ *A-ABAS, /rue$aA MO*0'1 '03,G+OU/ Operaciones *,'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.uiente: DROP DATABASE ,1.121&#K+15# O9...+P

Ejemplo 7 Eliminar la "ase de datos Prue"a2.


Use Master

Manual SQL Server 2000

+6

Ing. Danny Omar Macario


GO *+O/ *A-ABAS, /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, /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. Para cam"iar el nom"re de una "ase de datosF utilice &)K$#+15#,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. 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. Prue"a1 Prue"a2

Manual SQL Server 2000

+;

Ing. 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. I( D-)) !rinted error messagesF contact your system administrator. &4e data"ase is renamed and in single usuario mode. 3 mem"er o( t4e sysadmin rol must reset t4e data"ase to multiusuario mode $it4 s!Wd"o!tion.
/* 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

++

Ing. Danny Omar Macario

Programacion

C$#1'(*+ ,# T12-1&

O23#.(%/&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

Ing. 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. Los siguientes o"?etos tienen ti!os de datosJ )olumnas de ta"las y vistas. Par0metros de !rocedimientos almacenados. 'aria"les. Bunciones de &ransactGSQL Iue devuelven uno o m0s valores de datos de un ti!o de datos es!ec5(ico. Procedimientos almacenados Iue devuelven un c digoF Iue siem!re es de ti!o (+.#7#$. 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. La longitud del valor almacenado o su tamaKo. La !recisi n del n@mero 7s lo ti!os de datos num=ricos9. La !recisi n es el n@mero de d5gitos Iue !uede contener el n@mero. Por e?em!loF un o"?eto s#allint !uede contener 4asta ; d5gitosF con lo Iue tiene una !recisi n de ;. La escala del n@mero 7s lo ti!os de datos num=ricos9. La escala es el m01imo n@mero de d5gitos a la derec4a del se!arador decimal. Por e?em!loF un o"?eto int no !uede ace!tar un se!arador decimal y tiene una escala de 0. ,n o"?eto #oney !uede tener 4asta 6 d5gitos a la derec4a del se!arador decimal y tiene una escala de 6. 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. El o"?eto usa 2 "ytes !ara almacenar los datos. 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.(-(N1$ ,1./& 2(+1$(/&

Los ti!os de datos 2(+1$0 y %1$2(+1$0 almacenan cadenas de "its. 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. Los datos 2(+1$0 y %1$2(+1$0 !ueden tener una longitud de 4asta 2.000 "ytes. 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 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 siguiente es una ta"la Iue descri"e los ti!os de datos !rovistos !or SQL ServerJ

Manual SQL Server 2000

+2

Ing. Danny Omar Macario

Programacion

Manual SQL Server 2000

+9

Ing. Danny Omar Macario


C1.#7/$G1 D#&'$()'(*+ T()/ ,# D1./

Programacion
D#&'$()'(*+

3lmacenan cadenas de "inary "its. La data consiste de n@meros 4e1adecimales. Por e?em!lo el decimal var"inary +inario 26; es B; en 4e1adecimal. image )onsisten de una c4ar com"inaci n de letrasF s5m"olos y n@meros. 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. Gec:a y %o !uede se!arar en ti!os Aora distintos el almacenamiento de s lo smalldatetime (ec4as o s lo 4oras. )onsisten en in(ormaci n Iue almacena in(ormaci n signi(icativa decimal des!u=s del !unto Decimal decimal.

La data de"e tener una longitud (i?a 74asta 2 D-9. Los datos !ueden variar en el n@mero de d5gitos 4e1adecimales 74asta 2 D-9. La data !uede tener una longitud varia"le y e1ceder los 2D". Los datos de"en tener una longitud (i?a 7Easta 2 D-9. La data !uede variar en el n@mero de caracteres 7Easta 2 D-.9 Los datos !ueden ser caracteres 3S)II Iue e1cedan los 2 D-. Bec4as en el rango 01 Ene 1A;. 4asta el .1 Dic 9999 7Se reIuiere 2 "ytes !or valor9. Bec4as en el rango 01 Ene 1900 4asta 0+ Vun 20A9 7Se reIuiere reIuires 6 "ytes !or valor9. Los datos !ueden tener 4asta .2 d5gitosF todos los cuales !odr5an estar a la derec4a del !unto decimal. 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. Datos en el rango de 1.A9E P .02 4asta 1.A9E P .02. Datos en el rango de ..60E P .2 4asta ..60E P .2. Datos en el rango de 2]+. 7T 922..A20.+2;6AA;2029 4asta 2]+.T1 7922..A20.+2;6AA;20A9. Se reIuieren de 2 "ytes !ara almacenar estos valores. Datos en el rango de G 2F16AF62.F+62 4asta 2F16AF62.F+6A. Se reIuieren de 6 "ytes !ara almacenar estos valores.

numeric %@meros a!ro1imados 7Punto (lotante9. (loat real )onsiste en in(ormaci n num=rica !ositiva o negativa como !or "igint e?em!lo T;F 0 y 2;.

Punto Blotante

Enteros

int

Manual SQL Server 2000

A0

Ing. Danny Omar Macario


C1.#7/$G1 D#&'$()'(*+ T()/ ,# D1./

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. 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.2FA+2 4asta .2FA+A. Se reIuieren 2 "ytes !or cada valor de este ti!o. Datos entre 0 y 2;;F se reIuiere de 1 "yte. Datos monetarios entre T 922F..AF20.F+2;F6AA.;202 y P922F..AF20.F+2;F6AA.;20A 7Se reIuieren 2 "ytes !or valor9. Datos monetarios entre T 216FA62..+62 y 216FA62..+6A 7Se reIuieren de 6 "ytes !or valor9. Datos Iue consisten de 1 o 0. Em!lear este ti!o de dato !ara re!resentar &/,E o B3LSE CES o %O. Este ti!o de dato es em!leado !or varia"les o !rocedimientos almacenados Iue em!lean !ar0metros O,&P,& re(erenciados a un cursor. Este ti!o de dato es em!leado !ara indicar la actividad Iue ocurre so"re una (ila. La secuencia de este n@mero se incrementa en (ormato "inario. )onsiste en un n@mero 4e1adecimal Iue es!eci(ica un glo"ally uniIue identi(ier 78,ID9F es @til cuando se desea asegurar la unicidad de una (ila entre muc4as otras. 3lmacena varios ti!os de datosF a e1ce!ci n de te1tF nte1tF timestam!F image y sIlWvariant. 3lmacena un resultado de una consulta !ara su !osterior !rocesamiento. 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. Datos con longitud (i?aF 4asta 6000 caracteres ,nicode.

Manual SQL Server 2000

A1

Ing. Danny Omar Macario


C1.#7/$G1 D#&'$()'(*+ T()/ ,# D1./

Programacion
D#&'$()'(*+

so"re una columna nvarc4ar valores Iue incluyan este con?unto de caracteres. Eay Iue recordar Iue los datos ,nicode em!lean nte1t dos "ytes !or cada car0cter a re!resentar.

Datos Iue !ueden variarF 4asta 6000 caracteres ,nicode. Datos Iue e1ceden los 6000 caracteres ,nicode.

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. 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 ,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

Ing. 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 .Pt(pename 2@ tipo .Pph(st(pe 2@ tipo*atosSistema . .Pnullt(pe 2@ 4tipo&ull4@

Argu#entos
OS.0)#+15# TP .()/

Es el nom"re !ara el ti!o de datos de(inido de usuarioF de"en ser @nicos en cada "ase de datos.
OS)I0&.0)# TP .()/D1./&S(&.#51

Es el ti!o de datos !ro!orcionado !or SQL ServerF 7decimalF intF etc.9 en el Iue se "asa el ti!o de datos del usuario.
OS+:--.0)# TP Q.()/N:--R

Indica la (orma en Iue el ti!o de datos del usuario trata los valores nulos. Este argumento !uede tener como valor ^%,LL_F ^%O& %,LL_ o ^%O%,LL_. Si no se de(ine e1!l5citamente ti!o%ullF se esta"lece de acuerdo al criterio !redeterminado !ara valores nulos. 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 /,) de ti!o c4ar7119 el cual no !ermitir0 valores %,LL.
US, master GO C+,A-, *A-ABAS, ,Qemplo

Manual SQL Server 2000

A.

Ing. Danny Omar Macario


O& /+0MA+1 B&AM, 2 4,Qem_*ata4 '03,&AM, 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD,Qem*ataGMdE4 S05, 2 A!M$ MA6S05, 2 O!M$ '03,G+O<-= 2 AM$> 3OG O& B&AM, 2 4,Qem_3og4 '03,&AM, 2 4CCD/rogram 'ilesDMicrosoEt SF3 ServerDMSSF3DdataD,Qem3ogG3dE4 S05, 2 IM$ MA6S05, 2 "!M$ '03,G+O<-= 2 "M$> GO Use ,Qemplo GO Sp_Addt(pe +UC 4C=A+B"">4 4&O- &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 %,LL.
,6,C sp_addt(pe Onomastico datetime 4&U334 GO

Los ti!os de datos Iue se agregan son inscritos en la ta"la &0&.0)#&F estos ti!os de datos son eliminados con el !rocedimiento almacenado del sistema &)K,$/).0)#.
sp_dropt(pe .Pt(pename 2@ 4tipode dato4

E?em!loJ
Use ,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

Ing. Danny Omar Macario

Programacion

Em leo de 'omandos ""LL +"ata "efinition Language, 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". 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. Las ta"las se de(inen !ara los o"?etos cr5ticos de una "ase de datosF !or e?em!lo .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. )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. Las ta"las suelen estar relacionadas entre s5F !ara (acilitar el 4ec4o de consultas entre m@lti!les ta"las. Podemos distinguir los siguientes ti!os de ta"lasJ
T12-1& ,#- S(&.#51

La in(ormaci n usada !or SQL Server y sus com!onentes son almacenadas en ta"las es!eciales denominadas como .12-1& ,#- &(&.#51. 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. Procedimientos 3lmacenados de sistema. Instrucciones &ransactGSQL y (unciones. SQLGDMO. )at0logo de (unciones 3PI.

Las ta"las del sistema almacenan in(ormaci nF llamada MetadataF acerca del sistema y de los o"?etos de las "ases de datos. &odas las ta"las del sistema comien:an con el !re(i?o SCS. Ejemplo:
S,3,C- * '+OM S1SUSUA+0OS

*a#las del -suario

Manual SQL Server 2000

A;

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.

'reacin 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

Ing. 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. Danny Omar Macario


E3#$'('(/&4

Programacion

En la "ase de datos E?em!loF crear las siguientes ta"lasJ CLIENTES


N/52$# ,# C/-:5+1 T()/ ,# ,1./

numWclie em!resa re!Wclie limiteWcredito

integer varc4ar7209 Integer Money

P#$5(.# 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. RepVentas
N/52$# ,# C/-:5+1 T()/ ,# ,1./

numWem!l nom"re edad o(icinaWre!

integer varc4ar71;9 integer integer

P#$5(.# NULL /<0 /8LL /<0 /8LL

Manual SQL Server 2000

20

Ing. 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 ,Qemplo GO C+,A-, -AB3, 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$# ,# C/-:5+1 T()/ ,# ,1./

numW!edido (ec4aW!edido )lie /e! Ba" Producto )ant Im!orte PR D!CT S


N/52$# ,# C/-:5+1

integer datetime Integer integer c4ar7.9 c4ar7;9 integer money

P#$5(.# NULL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL

T()/ ,# ,1./

idW(a" idW!roducto Descri!ci n Precio E1istencias

c4ar7.9 c4ar7;9 varc4ar7209 Money Integer

P#$5(.# NULL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL /<0 /8LL

%otaJ ,na ve: Iue termin de crear las ta"las e?ecute el scri!t 3gregaDatos.sIl !ara !oder !o"lar la in(ormaci n de las ta"las.

M/,(D('1'(*+ ,# -1 #&.$:'.:$1 ,# -1& .12-1&

Manual SQL Server 2000

21

Ing. 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 ,Qemplo GO Create -a$le /rue$a B cod charB"> nom charBA!> pat varcharBA!> mat varcharBA!> GO

&O- &U33 &U33 &O- &U33 &O- &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 %,LL
A3-,+ -AB3, /rue$a A3-,+ CO3UM& nom varcharBA!> &O- &U33 GO

'eri(iIue em!leandoJ
Sp_=elp /rue$a GO

Luego agregaremos un cam!o llamado Sueldo de ti!o moneyJ


A3-,+ -AB3, /rue$a A** Sueldo mone( GO

,na o"servaci n es Iue cuando agrega una columna con 3L&E/ &3-LE no !uede utili:ar %O& %,LLF salvo Iue em!lee la !ro!iedad IDE%&I&C en una columna. '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, /rue$a A** Eecha_nac datetime

Manual SQL Server 2000

22

Ing. Danny Omar Macario


GO Sp_=elp /rue$a GO

Programacion

34ora eliminaremos la columna sueldoJ


A3-,+ -AB3, /rue$a *+O/ CO3UM& sueldo GO Sp_=elp /rue$a GO

,na o"servaci n im!ortanteF antes de eliminar una columna de"er0 eliminar los 5ndices "asados en esa columna. 34ora eliminaresmo la columna codJ
A3-,+ -AB3, /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. 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.

Ing. Danny Omar Macario

Programacion

V1-/$#& 1:./7#+#$1,/& )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. Para em!lear esta !ro!iedad de"e es!eci(icar un valor de inicio y uno de incremento. /ecuerde Iue este ti!o de columnas no son edita"les.
E;emplo:
US, ,R,M/3O GO A3-,+ -AB3, /rue$a A** CO3UM& cod integer 0dentit(B" "> &O- &U33 GO

Para com!ro"ar la generaci n de los valores e?ecute la siguiente secuencia de comandosJ


US, ,R,M/3O

Manual SQL Server 2000

26

Ing. Danny Omar Macario

Programacion

GO 0&S,+- /+U,BA KA3U,S B4ROS,4 4+ORAS4 4CA3*,+O&4 "!!!> GO 0&S,+- /+U,BA KA3U,S B4A&A MA+0A4 4SA3AS4 4GU033,&4 "!!!> GO S,3,C- CO* &OM /A- MA- SU,3*O '+OM /+U,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

,$ncin N-W+D

Datos de tipo .N+Q.-+D-NT+,+-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,ID. 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. Para !oder o"servar un e?em!lo de lo antes e1!licadoF e?ecute la siguiente secuencia de comandosJ
C+,A-, -AB3, /rue$aA B c%digo uniLueidentiEier &O- &U33 nom$re charBA!> &O- &U33> GO *,'AU3- &,<0*B>

0&S,+- /rue$aA Bnom$re> KA3U,S BMauricio> GO 0&S,+- /rue$aA Bnom$re> KA3U,S BGina> GO 0&S,+- /rue$aA Bnom$re> KA3U,S BCristina> GO S,3,C- * '+OM /rue$aA GO

-li/inacin de tablas

Manual SQL Server 2000

2;

Ing. 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. Otra (orma es utili:ando la sentencia D/OP &3-LE cuya sinta1is es la siguienteJ
*+O/ -AB3, M&om$re de la -a$laN

Manual SQL Server 2000

2+

Ing. Danny Omar Macario

Programacion

Para !ro"ar el em!leo de esta instrucci n utilice la siguiente sentenciaJ


*+O/ -AB3, /rue$aA GO

)om!rue"e Iue las ta"las Prue"a y Prue"a2 est0n eliminadasF con la siguiente instrucci nJ
S,3,C- &AM, '+OM S1SOBR,C-S <=,+, -1/,24U4 GO

I5)-#5#+.1$ R#&.$(''(/+#&

,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 ,PD3&E y DELE&E. 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.

Manual SQL Server 2000

2A

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. 3l momento de de(inir las columnas de una ta"la !odr0 asignar a cada columna la es!eci(icaci n %,LL o %O& %,LL. )ontrol de valide:F !ermite controlar los valores Iue se le asignar0n a una columna. 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. Integridad de entidadF re(erido a Iue una clave !rinci!al asegura la unicidad de cada registro. 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. /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. 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. Para utili:ar integridad declarativa se !uede em!lear constraintsF de(aults y rules. 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. En esta !arte del ca!5tulo revisaremos la integridad declarativa de(ini=ndola a !artir de los )O%S&/3I%&S. 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. 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. Los )O%S&/3I%&S se e?ecutan antes Iue la in(ormaci n se registre en el log.

Manual SQL Server 2000

22

Ing. Danny Omar Macario

Programacion

Definir restrinccin PR+0"R1 2-1


A3-,+ -AB3, M&om$re de la -a$laN A** CO&S-+A0&- M&om$re del ConstraintN /+0MA+1 S,1 Bcolumna" GGG> GO

,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 %,LL. En (orma !redeterminada crea un 5ndice )L,S&E/ED. Ejemplos: Im!lementar un P/IM3/C DEC )onstraint Iue asegure la unicidad de cada cliente.
Use ,Qemplo GO Select * 'rom Clientes /* &ote el orden de los c%digos de clientes */ GO A3-,+ -AB3, Clientes A** CO&S-+A0&- /S_Cli_numclie /+0MA+1 S,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.

Manual SQL Server 2000

29

Ing. Danny Omar Macario

Programacion

Select * 'rom +epKentas /* &ote el orden de los c%digos de empleados */ GO A3-,+ -AB3, +epKentas A** CO&S-+A0&- /S_num_clie /+0MA+1 S,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.


Select * 'rom OEicinas /* &ote el orden de los c%digos de oEicinas */ GO A3-,+ -AB3, OEicinas A** CO&S-+A0&- /S_OEicina /+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.


Select * 'rom /edidos /* &ote el orden de los c%digos de pedidos */ GO A3-,+ -AB3, /edidos A** CO&S-+A0&- /S_num_pedido /+0MA+1 S,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.


Select * 'rom /roductos /* &ote el orden de los c%digos de producto */ GO A3-,+ -AB3, /roductos A** CO&S-+A0&- /S_Ea$_prod /+0MA+1 S,1 Bid_Ea$ id_producto> GO Select * 'rom /roductos /* &ote Lue las Eilas aparecen ordenadas */

Manual SQL Server 2000

90

Ing. Danny Omar Macario


GO

Programacion

Definir ,'R-+(N 2-1 *onstraint


A3-,+ -AB3, M&om$re de la -a$laN A** CO&S-+A0&- M&om$re del ConstraintN 'O+,0G& S,1 Bcolumna" GGG> +,',+,&C,S -a$laBcolumna ?> GO

,n (oreign Mey constraint !erm?ite (or:ar la integridad de datos manteniendo la relaci n entre una llave !rimaria y una llave secundaria. 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.7un re! de ventas de"e de tener !or lo menos un cliente registrado9
US, ,Qemplo GO A3-,+ -AB3, Clientes A** CO&S-+A0&- 'S_Cli_+epKentas 'O+,0G& S,1 B+ep_Clie> +,',+,&C,S +epKentasB&um_,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. 7 un re! de ventas de"e tener un director registrado9
A3-,+ -AB3, +epKentas A** CO&S-+A0&- 'S_*ir_+epKentas 'O+,0G& S,1 B*irector> +,',+,&C,S +epKentasB&um_,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.
A3-,+ -AB3, +epKentas A** CO&S-+A0&- 'S_OEi_OEicinas 'O+,0G& S,1 BoEicina_rep> +,',+,&C,S OEicinasBOEicina> GO

Im!lementar un (oreign Mey constraint Iue veri(iIue el c digo de director de la o(icina.

Manual SQL Server 2000

91

Ing. Danny Omar Macario


A3-,+ -AB3, OEicinas A** CO&S-+A0&- 'S_*irec_+epKentas 'O+,0G& S,1 Bdir> +,',+,&C,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.
A3-,+ -AB3, /edidos A** CO&S-+A0&- 'S_+ep_+epKentas 'O+,0G& S,1 Brep> +,',+,&C,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.
A3-,+ -AB3, /edidos A** CO&S-+A0&- 'S_'a$/ro_/roductos 'O+,0G& S,1 BEa$ producto> +,',+,&C,S /roductosBid_Ea$ id_producto> GO

D#D(+($ CJECU CONSTRAINT


A3-,+ -AB3, M&om$re de la ta$laN A** CO&S-+A0&- M&om$re del ConstraintN C=,CS M+egla a validarN GO

,n )4ecM )onstraint restringe a los usuarios la !osi"ilidad de ingresar valores ina!ro!iados a una columna. Este constraint act@a cuando el usuario em!lea una instrucci n I%SE/& o ,PD3&E.
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.
A3-,+ -AB3, +epKentas A** CO&S-+A0&- CS_+K_"!! C=,CS B&um_,mpl N "!!> GO

Im!lementar un c4ecM constraint Iue veri(iIue Iue los c digos de los !edidos sean mayores Iue 100000.

Manual SQL Server 2000

92

Ing. Danny Omar Macario


A3-,+ -AB3, /edidos A** CO&S-+A0&- CS_/edidos C=,CS Bnum_pedido N "!!!!!> GO

Programacion

I5)-#5#+.1$ DEFAULT CONSTRAINTS


A3-,+ -AB3, M&om$re de la ta$laN A** CO&S-+A0&- M&om$re del constraintN *,'AU3- MKalor ,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 .

Manual SQL Server 2000

9.

Ing. 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+.
A3-,+ -AB3, +epKentas A** CO&S-+A0&- *'_+K_*irector *,'AU3- "!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. 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 /* ,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 *,'AU3- *,'AU3- "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

Ing. Danny Omar Macario

Programacion

0nsert +epKentas Kalues BI! 4SoEia Fuevedo4 HH AA 4+epGKentas4 4H/I/"VV"4 *,'AU3- *,'AU3- "A!!!> GO /* ,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;

Ing. Danny Omar Macario

Programacion

D(17$151 ,# B1&# ,# D1./&


,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. &am"i=n se convierte en una 4erramienta gr0(ica !ara crearF modi(icar e im!lementar integridad y constancia de datos. Ejemplo: 1. 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+

Ing. 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. Danny Omar Macario

Programacion

Luego de !ulsar Binali:ar tendr0 la siguiente re!resentaci n en !antallaJ

Manual SQL Server 2000

92

Ing. 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 ,PD3&E Sentencia DELE&E /ecu!erar in(ormaci n de dos o m0s ta"las Desencadenadores

,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)&.

S#-#'.

#ecupera informacin de la +ase de $atos y permite la seleccin de una o ms filas o columnas de una o muc:as tablas2 La sinta=is completa de la instruccin SELEC0 es comple;a sus clusulas principales pueden ser resumidas de la si.uiente manera2 SELEC0 listaNcols RD/0< nuevaNtablaS G#<* tabla4origen R!AE#E condici5nS

Manual SQL Server 2000

99

Ing. Danny Omar Macario


R?#<83 +P columna6&7S RA%TD/? condici5nS R<#$E# +P columna, U R%SCSR$ESCSS

Programacion

-(&.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. Esta o!eraci n no es registrada en el log.
FROM =JERE GROUP BY

'eter#ina la ta"la o ta"las de donde se muestra la in(ormaci n. Esta"lece un criterio de seleccin 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,P -C Permite ordenar la in(ormaci n de acuerdo a los reIuerimientos.

in(ormaci n.
JAVING ORDER BY

Ejemplos
En los si.uientes e;emplos veremos el uso del SELEC0 la creacin de campos calculados el uso de operadores de funciones a.re.adas y de .roup by2 ,2 *ostrar las lista de las oficinas de ventas con sus ob;etivos y ventas reales 8SE E;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 cdi.o ,0J SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E /8*NE*3L M ,0J

Manual SQL Server 2000

100

Ing. Danny Omar Macario


?<

Programacion

/tese que en esta Bltima consulta se :a empleado la clusula !AE#E para restrin.ir el nBmero de filas a devolver a diferencia de la primera que le devolva 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;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;emplo no se obtienen filas con lo cual queda demostrado que no siempre las consultas deben devolver filas esto representa que nin.Bn re.istro cumpli con la condicin e=presada en la clusula !AE#E2 )2 *ostrar la CD8$%$ #E?D</ y el D*3<#0E de por encima o por deba;o del <+VE0DT< SELEC0 CD8$%$ #E?D</ &TE/0%S > <+VE0DT<' %s SD08%CD</ G#<* <GDCD/%S ?< /tese que en el e;emplo se emplea la clusula A& que permite asi.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.o y $enver aun se encuentran por deba;o del ob;etivo mientras que las dems oficinas ya superaron el ob;etivo2

A.

Mostrar el valor del inventario !ara cada !roducto


Select DdNGab DdN3roducto $escripcion &E=istenciasY3recio' %s Talor Grom 3roductos ?< Similar al e;emplo anterior se emplea un campo calculado 1- ':1- &# -# 1&(7+1 :+ #+'12#N1,/ 1 .$1%V& ,#- #5)-#/ ,# -1 '-<:&:-1 A&.

-2

*uestra que sucedera si se eleva el monto de la cuota decada vendedor en un 4I de sus ventas anuales

Manual SQL Server 2000

101

Ing. Danny Omar Macario

Programacion

SELEC0 /<*+#E C8<0% &C8<0%Y,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 ?< ,,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 ,22 *ostrar todos los campos de la tabla <GDCD/%S asi como tambiCn una columna que indique si se alcan9o o no el ob;etivo2 SELEC0 Y &TE/0%S > <+VE0DT<' as SD08%CD</ G#<* <GDCD/%S ?< ,42 Comparar las si.uientes consultas: SELEC0 $D# G#<* <GDCD/%S ?< SELEC0 $DS0D/C0 $D# G#<* <GDCD/%S ?< /ote que en el primer caso se muestran los ( cdi.os de director uno por cada fila e=istente en la tabla mientras que con la se.unda no se muestran los duplicados2 ,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< ?< ,(2 *ostrar los vendedores que estn diri.idos por Vor.e Castro &cdi.o ,01' SELEC0 /<*+#E TE/0%S G#<* #E3TE/0%S

Manual SQL Server 2000

102

Ing. Danny Omar Macario


!AE#E $D#EC0<# M ,01 ?< ,)2 *uestre a los vendedores contratados antes de ,7-SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E C</0#%0< \ ]0,>0,>--] ?< ,J2 *ostrar las oficinas que estn por deba;o del -0I del ob;etivo SELEC0 CD8$%$ TE/0%S <+VE0DT< G#<* <GDCD/%S !AE#E TE/0%S \ &02- Y <+VE0DT<' ?< ,-2 *ostrar las oficinas que no estn a car.o de 3aola *arin SELEC0 CD8$%$ $D# G#<* <GDCD/%S !AE#E $D# \W ,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 lmite 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,2

*ostrar a los vendedores que traba;an en /e" Por6 $enver o %tlanta SELEC0 /<*+#E C8<0% TE/0%S G#<* #E3TE/0%S !AE#E <GDCD/%N#E3 D/ &,, ,4 22' ?<

222

*ostrar a los clientes cuya ra9n 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 ra9n social incluye una P en su nombre SELEC0 E*3#ES% LD*D0ENC#E$D0< G#<* CLDE/0ES

Manual SQL Server 2000

10.

Ing. Danny Omar Macario


!AE#E E*3#ES% LDHE [IPI[ ?< 212 *ostrar los vendedores que no tiene asi.nada una oficina SELEC0 /<*+#E G#<* #E3TE/0%S !AE#E <GDCD/%N#E3 DS /8LL ?< 2(2 *ostrar los vendedores que tienen asi.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;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;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 informacin de las oficinas ordenadas por #e.in 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.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

Ing. Danny Omar Macario


?< 4,2

Programacion

*ostrar las oficinas or.ani9adas por #E?D</ y dentro de cada re.in 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 funcin %T? primero suma todos los valores de la columna especificada en el ar.umento y lue.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 funcin S8* suma todos los valores de la columna especificada en el ar.umento2

412

*ostrar el importe promedio del cliente de cdi.o ,04 SELEC0 %T?&D*3<#0E' G#<* 3E$D$<S !AE#E CLDE M 2,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 funcin *D/ devuelve el menor valor de los datos almacenados en la columna especificada en el ar.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 funcin C<8/0 cuenta los re.istros en base al campo especificado en el ar.umento2

4J2

*ostrar cuantos pedidos superaron el importe de los 2(000

Manual SQL Server 2000

10;

Ing. 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 clusula ?#<83 +P permite a.rupar los valores con la finalidad de aplicarles al.una de las funciones a.re.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.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.nados a cada oficina SELEC0 <GDCD/%N#E3 C<8/0&Y' G#<* #E3TE/0%S ?#<83 +P <GDCD/%N#E3 ?< 1,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.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 clusula C<*380E debe ordenar primero la informacin2 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+

Ing. Danny Omar Macario


?#<83 +P #E3 A%TD/? S8*&D*3<#0E' W 40000 ?<

Programacion

/tese que la clusula A%TD/? permite filtar los .rupos .enerados por ?##<83 +P a diferencia de !AE#E que filtra los re.istros que se a.ruparan2

I+&#$.

,tilice la sentencia I%SE/& !ara agregar registros a una ta"la. La sinta1is reducida !uede ser J
INSERT OINTOP AN/52$# ,# -1 T12-1B VALUES 6V1-/$19 ....8 GO #ecuerde que si el valor que intenta a.re.ar a una de las columnas no cumple con al.uno de los constraints establecidos la operacin abortar inmediatamente2 0ambiCn es posible a.re.ar mBltiples filas a travCs del si.uiente formato: INSERT OINTOP AN/52$# ,# -1 T12-1B SELECT A-(&.1 ,# '15)/&B FROM AT12-1B

Ejemplos: Insertar los siguientes registros a la ta"la de )lientes


D/SE#0 Clientes Talues &(00 [*auricio Aidal.o[ ,01 1(000' ?< D/SE#0 Clientes Talues &(0, [?aby *ansilla[ ,01 1(000' ?< D/SE#0 Clientes Talues &(02 [Cristina $onayre[ ,01 1(000' ?< Select Y Grom Clientes ?<

U),1.#

Esta sentencia nos permite modificar la informacin de las tablas2 La sinta=is reducida puede ser: UPDATE AN/52$# ,# -1 T12-1B SET A'/-:5+1B T AN:#%/ V1-/$B O=JERE A'/+,('(*+BP GO

Manual SQL Server 2000

10A

Ing. 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 %,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. Ejemplos 3ctuali:ar la in(ormaci n del registro del cliente de c digo ;02
83$%0E Clientes SE0 empresa M [Cristina Aidal.o[ !AE#E numNclie M (02 ?< Select Y Grom Clientes !:ere numNclieM (02 ?<

3 cada c digo sumarle ;00 !ara los c digos menores Iue 1000
83$%0E Clientes SE0 numNclie M numNclie ^ (00 !AE#E numNclie \ ,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 ,22 ?< SELEC0 Y G#<* *EV<#ESCLD ?< S3N$+<30D</ [EVE*3L<[ [SELEC0 D/0<5+8LHC<3P[ [G%LSE[ ?<

D#-#.#

Las instrucciones DELE&E y &/,%)3&E &3-LE remueven (ilas de una ta"la. La sinta1is de DELE&E !uede serJ
$ELE0E \/ombre de la tablaW

Manual SQL Server 2000

102

Ing. Danny Omar Macario


R!AE#E \CondicinWS

Programacion

,sar la instrucci n DELE&E !ara eliminar una o m0s (ilas de una ta"la. &ener en cuenta las siguientes consideracionesJ
El SQL Server borra todas las filas de una tabla a menos que se use la clusula !AE#E2 Cada fila borrada .enera :istoria en el Lo. de 0ransacciones2

Ejemplos:
Eliminar el re.istro de cdi.o ,000 en la tabla de clientes $ELE0E Clientes !AE#E /umNClie M ,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 &/,%)3&E &3-LEF Iue resulta m0s r0!ida Iue DELE&E !uesto Iue no genera entradas en el log de transacciones. Su sinta1is esJ
TRUNCATE TABLE AN/52$# ,# -1 T12-1B

Ejemplo:
0#8/C%0E 0%+LE *e;oresCli ?< Select Y Grom *e;oresCli ?<

Luego de !ro"ar este e?em!lo elimine la ta"la Me?ores)li


$#<3 0%+LE *e;oresCli ?<

Manual SQL Server 2000

109

Ing. Danny Omar Macario

Programacion

.ecu erar informacin de dos o m/s ta#las +0oins, 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. )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.
SELECT A-(&.1 ,# '/-:5+1&B FROM A.12-1 / %(&.1 B OINNER X LEFTXRIGJTXFULL OOUTERPP WOIN AT12-1 / V(&.1 B ON A'/+,('(*+B

La lista de columnas !uede incluir cam!os de di(erentes ta"las. VOI% es!eci(ica las ta"las incolucradas en la consulta. 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.n Hey2 Si una tabla tiene un 3rimary Hey compuesta se debe referenciar a la clave entera en la clusula </ del V<D/ de tablas2 Las columnas comunes a las tablas deben ser del mismo tipo de dato2 Si dos o ms 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 ms tablas el SQL Server se tomar ms tiempo para resolver la consulta2 La clusula LEG0 <80E# V<D/ nos permite observar todos los re.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 clusula #D?A0 <80E# V<D/ nos permite observar todos los re.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 clusula G8LL <80E# V<D/ nos muestra la combinacin de todos los re.istros de la tabla de la i9quierda con los re.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

Ing. 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.in 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 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;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

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. Danny Omar Macario


"esencadenadores

Programacion

,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. Los desencadenadores 7Triggers9 est0n asociados a ta"las. 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. El grueso de instrucciones de la de(inici n del Desencadenador de"en ser I%SE/&F ,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. Los desencadenadores 7Triggers9 siem!re toman acci n des!u=s de Iue la o!eraci n (ue registrada en el log. Para crear un Desencadenador !uede utili:ar el siguiente (ormatoJ
CREATE DESENCADENADOR AN/52$# ,#- D#&#+'1,#+1,/$B ON AN/52$# ,# -1 T12-1B FOR AINSERT - UPDATE - DELETEB AS S#+.#+'(1&Y. 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. Para ello de"e crear el siguiente DesencadenadorJ ,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.

Ing. 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 (,K)$/,:'./ ,#&'$()'(*+ 1,00, 3rticulo &i!o 1 )$#'(/ #H(&.#+'(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

':/.1 200000

%#+.1& ,12(71

Insert Pedidos 'alues 7111000F `;L1;L199+`F 2101F 106F `3)I`F `61001`F ;F 2A;9 8O LQ 'eri(iIue los resultados anteriores QL Select Q Brom Productos #4ere IdWBa"[ `3)I` 3%D IdWProducto[`61001` 8O /!taJ
(,KD12 (,K)$/,:'./ ,#&'$()'(/+ 1,00, 3rticulo &i!o 1 )$#'(/ #H(&.#+'(1& ((200 2)(

3)I

Select nom"reF cuotaF ventas Brom /e!'entas #4ere numWem!l [ 106 8O /!taJ
+/52$# ':/.1 200000 %#+.1& ,12-)7

Vorge )astro

Manual SQL Server 2000

116

Ing. 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. -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. ,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. ,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. 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 .oles y1o Permisos 2 'omandos "cl +"ata 'ontrol Language,

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. Para esto se de"en 4a"er de(inido los usuarios Iue tendr0n acceso a nuestra "ase de datos. Los comandos D)L se !ueden asignar !or sentencias o !or o"?etos. 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 ,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 ^,suario01_F ^contraseKa_ n ^,suario02_F ^contraseKa_ n ^,suario0._F ^contraseKa_ n ^,suario06_F ^contraseKa_ n ^,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;

Ing. Danny Omar Macario

Programacion

,se E?em!lo 8O S!W8rantD-3ccess ^,suario01_ 8O S!W8rantD-3ccess ^,suario02_ 8O S!W8rantD-3ccess ^,suario0._ 8O S!W8rantD-3ccess ^,suario06_ 8O S!W8rantD-3ccess ^,suario0;_ 8O )reados los usuarios !odemos asignarF revocar o negar !ermisos so"re cada uno de los o"?etos de la "ase de datos. 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 ,suariosL/ol 8O


REVOUE

/emueve la asignaci n o negaci n del recurso de "ase de datos.

/E'ODE asentenciaS O% O"?eto &O ,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 ,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 ,S,3/IO01 y ,S,3/IO06
?#%/0 Select

O%

Pedidos

Manual SQL Server 2000

11+

Ing. Danny Omar Macario


&O 8O O% &O 8O ,suario01F ,suario06

Programacion

?#%/0 Select

)lientes ,suario01F ,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 ,suario06

$E/P D/SE#0 $ELE0E

)lientes ,suario01F ,suario06

Para com!ro"ar las asignaciones reali:adasF conectese al 3nali:ador de )onsultas con la cuenta del ,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`. 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.

Manual SQL Server 2000

11A

Ing. 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. )omo demostraci n con=ctese a 3nali:ador de )onsultas como NsaO y e?ecute la siguiente secuencia de instruccionesJ ,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 ,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 ^,S,3/IO02_ 8O S!W3dd/oleMem"er ^MISPE/MISOS_F ^,S,3/IO06_ 8O 34ora Iue com!leto la secuenciaF con=ctese al 3nali:ador de )onsultas con la cuenta del ,S,3/IO02 y e?ecute la siguiente secuenciaJ ,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 ,S,3/IO06. Los resultados de"en ser los mismos. Luego de"e conectarse con el ,S,3/IO0. y e?ecutarJ ,se e?em!lo go Select Q Brom )lientes LQ !ermiso negado QL

Manual SQL Server 2000

112

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

Ing. Danny Omar Macario

Programacion

,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. Estos roles son el eIuivalente de tra"a?ar con gru!os de usuarios en #indo$s %&. &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. 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. Para ello e1!anda la car!eta de ,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

Ing. Danny Omar Macario

Programacion

Luego de ello !odr0 o"servar una ventana donde !odr0 !ermitir o negar accesos so"re los o"?etos. &al como lo muestra la siguiente imagenJ

E0E.'I'I$S P.$P-ES*$S

)rear la "ase de datos Matriculas con el arc4ivo de datos de 10 M".F tamaKo m01imo de 1; M". y un crecimiento de 1 M". El arc4ivo de log de"e tener inicialmente un tamaKo de . M"F con un tamaKo m01imo de ; M". y un crecimiento de 1 M". ,na ve: creada la "ase de datos de(ina la creaci n de las siguientes ta"lasJ

ALUMNOS

Manual SQL Server 2000

121

Ing. Danny Omar Macario

Programacion

CALIFICACIONES

CATEGORIAS

Manual SQL Server 2000

122

Ing. Danny Omar Macario

Programacion

INSCRITOS

PROFESORES

Manual SQL Server 2000

12.

Ing. Danny Omar Macario

Programacion

SECCIONES

,na ve: Iue termine recu!ere el scri!t 3lumnado.sIlF revise el scri!t y e?ec@telo con la (inalidad de !o"lar la "ase de datos.

Manual SQL Server 2000

126

Ing. 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. 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.oriasNcate. 3#D*%#P HEP &cate.' ?< %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.
%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;

Ing. 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.oriasNcate. G<#ED?/ HEP &cate.' #EGE#E/CES Cate.orias&cate.' ?<

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. En este caso tra"a?a PDWInscritosWalusec. QL Insert )ali(icaciones 'alues 7`300.`F `2.1;`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. QL Insert Secciones 'alues 7`2.12`F `D009`F `;L1;L2001`F +00F 1;F 609

Manual SQL Server 2000

12+

Ing. 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. 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. E?ecute el siguiente c digoJ ,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.Sec [ Inserted.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.)odaluF Inserted.SecF 0F 0 Brom Inserted ,PD3&E Secciones SE& 'acantes [ 'acantes G 1 B/OM Secciones VOI% Inserted On Secciones.Sec [ Inserted.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

Ing. 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. 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. 34ora !ara !racticar los Iuerys im!lementaremos las siguientes consultasJ
M/&.$1$ -1 -(&.1 ,# 1-:5+/& ,# -1 &#''(*+ 315 /$,#+1,/& 1-D12V.('15#+.# SELEC0 3at *at /om Grom %lumnos Dnner Voin Dnscritos <n %lumnos2codalu M Dnscritos2codalu %/$ Dnscritos2Sec M [24,([ <rder +y 3at *at /om ?<

El segundo car0cter de la secci n indica el curso tomando en cuenta lo siguienteJ c1d '.-asic c2d '.Bo1 c.d SQL Server.
M/&.$1$ :+ $#)/$.# @:# 5:#&.$# #- '*,(7/ ,#- 1-:5+/9 #- ':$&/ @:# #&.:,(1 0 #)$/5#,(/ SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at'

Manual SQL Server 2000

122

Ing. Danny Omar Macario


Curso M Case !:en SubStrin.&Dnscritos2Sec 2 ,'M[,[ 0:en [T2+asic[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[2[ 0:en [T2Go=[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[4[ 0:en [SQL Server[ End 3romedio 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 ?<

Programacion

M/&.$1$ ./,/& -/& 1-:5+/& '/+ (+,('1'(*+ ,# -/& ':$&/& @:# #&.:,(1+ '/+ (+,('1'(*+ ,# &:& )$/5#,(/& #+ '1&/ .#+#$-/. SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at' Curso M Case !:en SubStrin.&Dnscritos2Sec 2 ,'M[,[ 0:en [T2+asic[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[2[ 0:en [T2Go=[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[4[ 0:en [SQL Server[ End 3romedio M &/,^/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/&.$1$ #- )$/5#,(/ 7#+#$1- ,# -/& 1-:5+/& @:# '/5)-#.1$/+ -/& .$#& ':$&/& SELEC0 /om%pe M &*a=&/om' ^ [ [ ^ *a=&3at' ^ [ [ ^ *a=&*at'' 3romedioGinal M %T?&&/,^/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. count&Dnscritos2codalu' M 4 ?<

M/&.$1$ #- +Z5#$/ ,# 1-:5+/& @:# #&.:,(1 #+ '1,1 &#''(*+

Manual SQL Server 2000

129

Ing. Danny Omar Macario


Select Sec %lumnadoMCount&codalu' Grom Dnscritos ?roup +y sec ?<

Programacion

M/&.$1$ 1 -/& 1-:5+/& ':0/ )$/5#,(/ #& 510/$ @:# 149 (+,(@:# &#''(*+9 ':$&/ 0 )$/D#&/$ SELEC0 /om%pe M &/om ^ [ [ ^ 3at ^ [ [ ^ *at' Dnscritos2Sec Curso M Case !:en SubStrin.&Dnscritos2Sec 2 ,'M[,[ 0:en [T2+asic[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[2[ 0:en [T2Go=[ !:en SubStrin.&Dnscritos2Sec 2 ,'M[4[ 0:en [SQL Server[ End 3romedio M &/,^/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 &/,^/2'52 W ,1 ?<

Manual SQL Server 2000

1.0

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 clusulas <#$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. 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 .4EA0E >IEW FAo#(re de la vistaG HEnca(eIado1= ....J HWI0K EA.4L"0I*AJ AS Sentencias Select HWI0K .KE.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.

Manual SQL Server 2000

1.6

Ing. Danny Omar Macario

Programacion

Ejemplos:
Utilice el Administrador Empresarial para definir una vista con las caractersticas que muestra la ilustracin:

,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. 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.;

Ing. Danny Omar Macario


S!WEel!&e1t c/elacion de Promediosd 8O

Programacion

Manual SQL Server 2000

1.+

Ing. 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. )/E3&E 'IE# /esumen 3S Select Inscritos.Sec 3s SeccionF M3H7nom"re9 3s Pro(esorF )ount7Inscritos.)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.cod3lu [ )ali(icaciones.codalu 3%D Inscritos.sec [ )ali(icaciones.Sec I%%E/ VOI% Secciones On Inscritos.Sec [ Secciones.Sec I%%E/ VOI% Pro(esores On Secciones.)odPro(e [ Pro(esores.)odPro(e 8rou! "y Inscritos.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/,(D('1$ V(&.1&

Para modi(icar la vista utilice la siguiente sinta1isJ AL0E4 >IEW FAo#(re de la >istaG H1Enca(eIado1= ...2J HWI0K EA.4L"0I*AJ

Manual SQL Server 2000

1.A

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

Para !oder com!ro"ar el em!leo de esta sentenciaF e?ecute el siguiente comandoJ 3L&E/ 'IE# /ES,ME% #I&E E%)/CP&IO% 3S Select Inscritos.Sec 3s SeccionF M3H7nom"re9 3s Pro(esorF )ount7Inscritos.)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.cod3lu [ )ali(icaciones.codalu 3%D Inscritos.sec [ )ali(icaciones.Sec I%%E/ VOI% Secciones On Inscritos.Sec [ Secciones.Sec I%%E/ VOI% Pro(esores On Secciones.)odPro(e [ Pro(esores.)odPro(e 8rou! "y Inscritos.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. Select Q Brom Sys)omments 8O

E-(5(+1$ V(&.1&

Para eliminar una vista em!lear la siguiente sinta1isJ '4*" >IEW FAo#(re de la vistaG H=...nJ )omo e?em!lo !odr5a utili:ar la siguiente instrucci nJ D/OP 'IE# c/elacion de Promediosd 8O

Select Q Brom c/elacion de Promediosd 8O

Procedimientos Almacenados

,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. Los !rocedimientos almacenados so!ortan el em!leo de varia"les declaradas !or el usuarioF sentencias !ara toma de decisiones entre otras caracter5sticas. En SQL Server e1isten ; 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. En el nom"re usan como !re(i?o s%E. Procedimientos localesF son los !rocedimientos almacenados en una "ase de datos. 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. Procedimientos remotosF son !rocedimientos almacenados en servidores distri"uidos. Procedimientos e1tendidosF son aIuellos Iue nos !ermiten a!rovec4ar las (uncionalidades de otras li"rer5as e1ternas a SQL Server. Estos !rocedimientos usan el !re(i?o @%E y se encuentran en la "ase de datos #aster. Entre las !rinci!ales caracter5sticas de un !rocedimiento almacenado !odemos mencionarJ
%ceptar parmetros de entrada y devolver varios valores en forma de parmetros de salida al lote o al procedimiento que reali9a la llamada2 Contener instrucciones de pro.ramacin que realicen operaciones en la base de datos incluidas las llamadas a otros procedimientos2 $evolver un valor de estado que indica si la operacin se :a reali9ado correctamente o :abido un error &y el motivo del mismo'2 3ermiten una e;ecucin ms rpida ya que los procedimientos son anali9ados y optimi9ados en el momento de su creacin y es posible utili9ar una versin del procedimiento que se encuentra en la memoria despuCs de que se e;ecute por primera ve92 3ueden reducir el trfico de red2 3ueden utili9arse como mecanismo de se.uridad ya que se puede conceder permisos a los usuarios para e;ecutar un procedimiento almacenado incluso si no cuentan con permiso para e;ecutar directamente las instrucciones del procedimiento2

Crear *odificar y Eliminar un P$/'#,(5(#+./ A-51'#+1,/

*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. Siga las instrucciones !ara a!rovec4ar el asistenteJ 1. En el men@ Eerramientas 4aga clic so"re la o!ci n 3sistentesF y seleccione la o!ci n Iue muestra la (iguraJ

2. 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.

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.

;. 3l !ulsar Binali:ar a!arecer0 un mensa?e indicando cuantos !rocedimientos se 4an creado.

&am"i=n !uede crear los !rocedimientos con la sentencia )/E3&E P/O)ED,/E. .4EA0E "4*.HE'34EJ FAo#(re "rocedi#ientoG H OPparmetro tipoDatosQ HR predeterminadoJ H*30"30J J H=...nJ HWI0K O 4E.* "ILE S EA.4L"0I*A Q J AS Sentencias SQL H...nJ
A$7:5#+./&

S)1$<5#.$/ El usuario puede tener :asta m=imo de ,021 parmetros2 El nombre del parmetro debe comen9ar con un si.no &_' 2 Los parmetros son locales al procedimiento2 ,#D1:-. Es un valor predeterminado para el parmetro2 OUTPUT Dndica que se trata de un parmetro de salida2 El valor de esta opcin puede devolverse a EQECR80ES2 8tilice los parmetros <80380 para devolver informacin al procedimiento que llama2 Los parmetros de te=to no se pueden utili9ar como parmetros <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;ecuta2 8tilice la opcin #EC<*3DLE cuando emplee valores atpicos o temporales para no anular el plan de e;ecucin que est almacenado en la memoria cac:C2 E/C#P30D</ indica que tabla &0&'/55#+.& que instruccin 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". ,n !rocedimiento s lo !uede crearse en la "ase de datos actual. Se !uede crear otros o"?etos de "ase de datos dentro de un !rocedimiento almacenado. 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. Puede 4acer re(erencia a ta"las tem!orales dentro de un !rocedimiento almacenado. 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. 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. 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. Los !rocedimientos almacenados remotos no intervienen en las transacciones. Las siguientes instrucciones no se !ueden em!lear dentro de un !rocedimiento.

)/E3&E DEB3,L& )/E3&E P/O)ED,/E )/E3&E /,LE

)/E3&E DESE%)3DE%3DO/ )/E3&E 'IE#

Para crear un !rocedimiento desde el 3nali:ador de )onsultas e?ecute las siguientes instruccionesJ ,se Matriculas 8O )/E3&E P/O)ED,/E ListaPromedios as SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.SecF )urso [ )ase #4en Su"String7Inscritos.SecF 2F 19[`1` &4en `'.-asic` #4en Su"String7Inscritos.SecF 2F 19[`2` &4en `'.Bo1` #4en Su"String7Inscritos.SecF 2F 19[`.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.codalu [ Inscritos.codalu I%%E/ VOI% )ali(icaciones On Inscritos.codalu [ )ali(icaciones.codalu 3%D Inscritos.sec [ )ali(icaciones.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

0odificar Procedi/ientos "l/acenados

Si se desea modi(icar el !rocedimiento almacenado utilice la siguiente sinta1isJ AL0E4 "4*.HE'34EJ FAo#(re "rocedi#ientoG H OPparmetro tipoDatosQ HR predeterminadoJ H*30"30J J H=...nJ HWI0K O 4E.* "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,/E ListaPromedios #I&E E%)/CP&IO% as SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.SecF )urso [ )ase #4en Su"String7Inscritos.SecF 2F 19[`1` &4en `'.-asic` #4en Su"String7Inscritos.SecF 2F 19[`2` &4en `'.Bo1` #4en Su"String7Inscritos.SecF 2F 19[`.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.codalu [ Inscritos.codalu I%%E/ VOI% )ali(icaciones On Inscritos.codalu [ )ali(icaciones.codalu 3%D Inscritos.sec [ )ali(icaciones.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,/E PromPorSeccion 7bseccion c4ar769 [ %,LL9 as

IB bseccion IS %,LL -E8I% /3ISE//O/ 7`De"e indicar un codigo`F 10F 19 /E&,/% 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%D SELE)& %om3!e [ 7%om P ` ` P Pat P ` ` P Mat9F Inscritos.SecF )urso [ )ase #4en Su"String7Inscritos.SecF 2F 19[`1` &4en `'.-asic` #4en Su"String7Inscritos.SecF 2F 19[`2` &4en `'.Bo1` #4en Su"String7Inscritos.SecF 2F 19[`.` &4en `SQL Server` EndF Promedio [ 7%1P%29L2 Brom 3lumnos I%%E/ VOI% Inscritos On 3lumnos.codalu [ Inscritos.codalu I%%E/ VOI% )ali(icaciones On Inscritos.codalu [ )ali(icaciones.codalu 3%D Inscritos.sec [ )ali(icaciones.sec #EE/E Inscritos.Sec [ bSeccion 8O Para e?ecutar reali:aremos lo siguienteJ EHE) PromPorSeccion 8O EHE) PromPorSeccion ^9090_ 8O EHE) PromPorSeccion ^2.1;_ 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*.E'34E FAo#(re del %rocedi#ientoG

8unciones en SQL Server 2000 +912,

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. 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.
T()/& ,# 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. Los tres ti!os de (unciones ace!tan !ar0metros de cualIuier ti!o e1ce!to el ro$version. Las (unciones escalares devuelven un solo valorF ta"la en linea y Multisentencias devuelven un ti!o de dato ta"la.
,$nciones -scalares

Las (unciones escalares devuelven un ti!o de los datos tal como intF moneyF varc4arF realF etc. Pueden em!learse en cualIuier lugar incluso incor!orada dentro de sentencias SQL. La sinta1is !ara una (unci n escalar es la siguienteJ )/E3&E B,%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro !arametroWscalar c [ de(aultdg cF..ndd9 /E&,/%S ti!oWdeWdatoWscalarWdeWretorno c#I&E ao!ci n S SJJ[fS)EEM3-I%DI%8 h E%)/CP&IO%d c3Sd -E8I%
C*,(7/ ,# -1 D:+'(*+

/E&,/% 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,%)&IO% d"o.)u"o7 b%umero (loat9 /E&,/%S (loat 3S -E8I% /E&,/%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% d"o.Bactorial 7 b%umero int 9 /E&,/%S I%&

3S -E8I% DE)L3/E bi int IB b%umero a[ 1 SE& bi [ 1 ELSE SE& bi [ b%umero Q d"o.Bactorial7 b%umero G 1 9 /E&,/% 7bi9 E%D
,$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 salida se !uede utili:ar adentro de ?oins o Iuerys como si (uera un ta"la de est0ndar. La sinta1is !ara una (unci n de ta"la en linea es como sigueJ )/E3&E B,%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro ti!oW!arametroWscalar c [ de(aultdg cF..ndd9 /E&,/%S &3-LE c#I&E ao!cion SJJ[fS)EEM3-I%DI%8 h E%)/CP&IO%gd /E&,/% c7d sentenciaWselect c9d ,na (unci n InLine !odr5a retornar los autores de un estado en !articularJ )/E3&E B,%)&IO% d"o.3utoresPorEstado 7bState c4ar729 9 /E&,/%S &3-LE 3S /E&,/% 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. Este ti!o de (unci n se usa en situaciones donde se reIuiere m0s l gica y !roceso. Lo Iue sigue es la sinta1is !ara una (unci n de ta"la de multi sentenciasJ )/E3&E B,%)&IO% c!ro!ietariod %om"reWdeWBunci n 7 cf b!arametro ti!oW!arametroWscalar c [ de(aultdg cF..ndd9 /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/ ,# -1 D:+'(*+

/E&,/% E%D

L-151+,/ F:+'(/+#&

SQL 2000 !ro!orciona algunas (unciones de(inidas !or el usuario a nivel sistema en la "ase de datos Master. Estas (unciones del sistema se invocan con un sinta1is levemente distinta a las Iue usted !uede crear. Las (unciones del sistema Iue devuelven un ta"la tienen la sinta1is siguienteJ %om"re de Buncion7 cargumentoWe1!rdF cF...d9 Las (unciones escalares y las de con?unto de (ilas son invocadas con el siguiente (ormatoJ c-Dd !ro!ietario. Buncion 7cargumentoWe1!rdF cF...d9

L(5(.1'(/+#&

Las (unciones de(inidas !or el usuario tienen algunas restricciones. %o todas las sentencias SQL son v0lidas dentro de una (unci n. 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 ,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 ),/SO/ BE&)E Iue devuelven datos del cliente

C/-:5+1& '/5):.1,1&

Las (unciones escalares se !ueden utili:ar !ara crear columnas calculadas en una de(inicion de ta"la. 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,%)&IO% d"o.'olume 7 bEeig4t decimal7;F29F bLengt4 decimal7;F29F

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

G-/&1$(/
12&.$1'. ,1.1 .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. &4e (unctions are "ot4 de(ined onF y o!eradas en el set o( values
1-.#$+1.# ?#0

)olumnas o columnas cuyo valor @nicamente identi(ica a un registro en una ta"la y no son llaves !rimarias en una columna.
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.
'-:&.#$#, (+,#H

Indice en el cual el orden (5sico y el orden l gico7inde1ado9 es el mismo.


'/-:5+

Estructura de datos Iue contiene un dato individual !or registroF eIuivalente a un cam!o en un modelo de -ase de Datos.
'/+&.$1(+.

/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.
,/51(+

Predetermina ti!os de datos usados mas (recuentemente !or los data item
#H.#+,#, 1.$(2:.#

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.
47-

3!licaci n e1terna "asada en un Lengua?e de )uarta 8eneraci nF usada usualmente !ara generar 3!licaciones )liente L Servidor.

(+,#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.
/,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
/,2' ,$(%#$

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.
PRIMARY UEY

)olumna o columnas cuyos valores son identi(icados como valores @nicos en el registro de una ta"la.
REFERENCE

/elaci n entre una ta"la !adre y una ta"la 4i?o. ,na re(erencia !uede relacionar ta"las !or llaves com!artidas o !or columnas es!eci(icas.
REFERENCIAL INTEGRITY

/eglas de consistencia de datosF es!ec5(icamente las relaciones e1istentes entre !rimary Meys y (oreign Meys de ta"las di(erentes.
TABLE

)olecci n de registros Iue tienen columnas asociadas.


DESENCADENADOR Gorma especial de 3rocedimientos %lmacenados el cual toma efecto cuando se reali9a una transaccin SQL en la +ase de $atos ya sea un 83$%0E D/SE0 o $ELE0E2

R#D#$#+'(1 ,#- T$1+&1'."SQL


*IP$S "E 7AL$.
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 ). %umeralesF como 1F 2 .F !or e?em!lo. )aracteres es!ecialesF comoF !or e?em!loF bF \ y i. Los datos cNar o varcNar !ueden ser un car0cter individual o una cadena de 4asta 2.000 caracteres. Las constantes de caracteres de"en incluirse entre comillas sim!les 7^9 o comillas do"les 7N9. Siem!re se !uede incluir una constante de caracteres entre comillas sim!lesX adem0sF =sta es una !r0ctica recomenda"le. )uando la o!ci n Q,O&ED IDE%&IBIE/ est0 activadaF algunas veces no se !ermite incluir una constante de car0cter entre comillas do"les. 3 continuaci n se muestra un e?em!lo de &ransactGSQL donde se asigna un valor a una varia"le de car0cter.
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. 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 cNar es un ti!o de datos de longitud (i?a cuando se es!eci(ica la cl0usula %O& %,LL. Si en una columna cNar %O& %,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. 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. El ti!o de datos varcNar es de longitud varia"le. Los valores m0s cortos Iue el tamaKo de la columna no se rellenan a la derec4a 4asta com!letar el tamaKo de la misma. Si la o!ci n 3%SIWP3DDI%8 esta"a desactivada cuando se cre la columnaF cualIuier

"lanco a la derec4a ser0 recortado de los valores de car0cter almacenados en la columna. Si 3%SIWP3DDI%8 esta"a activado cuando se cre la columnaF los "lancos a la derec4a no se recortar0n. Si 3%SIWP3DDI%8 est0 activado cuando se crea una columna cNar %,LLF se com!orta igual Iue una columna cNar %O& %,LL y los valores son rellenados a la derec4a 4asta el tamaKo de la columna. Si 3%SIWP3DDI%8 est0 desactivado cuando se crea la columna cNar %,LLF se com!orta igual Iue una columna varcNar con 3%SIWP3DDI%8 desactivadoF y se recortan los "lancos de relleno. La (unci n )E3/ se !uede usar !ara convertir un c digo entero a un car0cter 3S)II. 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. ,tilice )E3/71.9 y )E3/7109 !ara colocar una nueva l5nea y un retorno de carro en una cadena de caracteresJ
PR#$T '% rst & '"(' ) CHAR(*+) ) CHAR(*,) ) '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. ,n o"?eto cNar o varcNar !uede contener cualIuier car0cter de la !0gina de c digos de SQL Server. 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 +.; o anteriores s lo admiten 4asta 2;; "ytes de datos de caracteres. Si estas a!licaciones intentan recu!erar !ar0metros de car0cter de SQL Server versi n A.0 o columnas de con?untos de resultados Iue contengan m0s de 2;; "ytes de datosF los datos de car0cter se truncan a 2;; "ytes.

U.(-(N1$ ,1./& ,# 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. %o 4ay ti!os de datos di(erentes de 4ora y (ec4a !ara almacenar s lo 4oras o s lo (ec4as. 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. Si s lo se es!eci(ica una (ec4aF la 4ora ser0F de (orma !redeterminadaF 12J00 a.m. 7medianoc4e9. En los datos de (ec4a y 4ora !uede reali:ar las siguientes o!eracionesJ Escri"ir (ec4as nuevas o cam"iar las e1istentes. /eali:ar c0lculos de (ec4a y 4oraF como sumar o restar (ec4as. -uscar una 4ora yLo (ec4a determinada. En los datos dateti#eF !uede reali:ar algunos c0lculos aritm=ticos con las (unciones de (ec4a del sistema.

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. 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.m. 7de (orma !redeterminada9. Para "uscar un valor !arcial de (ec4a u 4oraF use el o!erador LIDE. SQL Server convierte !rimero las (ec4as al (ormato dateti#e yF a continuaci nF a varcNar. 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. SQL Server A.0 eval@a las constantes dateti#e en tiem!o de e?ecuci n. ,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. Por e?em!loF la vista siguiente (unciona correctamente en cone1iones reali:adas con el idioma con(igurado como ingl=s de EE.,,.F !ero no (unciona en las cone1iones reali:adas con otros idiomasJ
CREATE V#E- USA.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. 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.. 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; de a"ril de 1992`9 Bormatos num=ricos de (ec4a 7!or e?em!loF `1;L6L1992`F `1; 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./ 1-D12V.('/ ,# -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. 3lgunas directrices !ara la utili:aci n de (ormatos al(a"=ticos de (ec4a sonJ

Incluya los datos de (ec4a y 4ora entre comillas sim!les 7^9. 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. 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;0 7valor !redeterminado9F 2; se inter!reta como 202; y ;0 se inter!reta como 19;0. Para evitar la am"igmedadF utilice aKos de cuatro d5gitos. Si (alta el d5aF se su!one el !rimer d5a del mes. 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.
F/$51./ +:5V$('/ ,# 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. Por e?em!loF ;L20L9A es el d5a 20 de mayo del aKo 199A. )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. 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,8:;*5;7*4849 << 7,8:<*5<7*4849 << R0S12,(2R,7S7) >> &mdy' 7,:8;7*4849;*5 << *5;7,8:;7*4849 << *5;7*4849;7,8: << 7*4849;*5;7,8: << 7*4849;7,:8;*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. )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.

La con(iguraci n de SE& D3&EBO/M3& determina c mo se inter!retan los valores de (ec4a. 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. Por e?em!loF 12L10L02 se !uede inter!retar de seis (ormas distintasF seg@n la con(iguraci n de D3&EBO/M3&.
F/$51./ ,# '1,#+1 &(+ &#)1$1$

Microso(tj SQL Serverk !ermite es!eci(icar datos de (ec4a como una cadena sin se!arar. 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. 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. Las cadenas de seis u oc4o d5gitos se inter!retan siem!re como amd. El mes y el d5a de"en ser siem!re de dos d5gitos. lste es el (ormato v0lido de una cadena sin se!ararJ
7*4849,:*5

,na cadena de s lo cuatro d5gitos se inter!reta como el aKo. El mes y el d5a se esta"lecen a 1 de enero. )uando se es!eci(ican s lo cuatro d5gitosF es necesario incluir el siglo.
F/$51./& ,# I/$1

Microso(tj SQL Serverk reconoce los siguientes (ormatos de datos de 4ora. Incluya cada (ormato entre comillas sim!les 7^9.
*:>+, *:>+,7>2,>4448 *:>+,7>2,(48 :a= : PM 7,8:7>+,>2,>5,,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. %o se distingue entre may@sculas y min@sculas en 3M o PM. Las 4oras se !ueden es!eci(icar con el relo? de 12 o de 26 4oras. De (orma !redeterminadaF las 4oras del intervalo de 0 a 12 son a.m. 73M9F y las 4oras del intervalo de 1. a 2. son !.m. 7PM9. 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. Las 4oras del intervalo 1. a 2. re!resentan 4oras !osteriores al mediod5aF inde!endientemente de si se es!eci(ica PM. %o es v0lido es!eci(icar PM en una 4ora del intervalo de 0 a 12. El valor 26J00 no es v0lidoJ use 12J003MF 12J00 o 00J00 !ara re!resentar la medianoc4e.

Los milisegundos se !ueden !receder de dos !untos 7J9 o un !unto 7.9. 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. Por e?em!loF 12J.0J20J1 signi(ica las 12J.0F veinte segundos y una mil=simaX 12J.0J20.1 signi(ica las 12J.0F veinte segundos y una d=cima.
F/$51./ ,1.#.(5# ,# 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. Este (ormato de marca de 4ora de OD-) lo admite tam"i=n la de(inici n del lengua?e de OLE D- 7D-8,IDGSQL9 ace!tada !or Microso(t OLE D- Provider (or SQL Server. Las a!licaciones Iue usan las 3PI "asadas en OD-)F OLE D- y 3DO !ueden usar este (ormato de marca de 4ora de OD-) !ara re!resentar (ec4as y 4oras. Las secuencias de esca!e de marcas de 4ora de OD-) tienen el (ormatoJ O tipoLiteral TvalorConstanteT Q
.()/L(.#$1Especifica el tipo de la secuencia de escape2 Las marcas de :ora tienen tres indicadores ti#oLiteral: , M slo fec:a2 . M slo :ora2 .& M marca de :ora &:ora ^ fec:a'2 ]%1-/$C/+&.1+.#] Es el valor de la secuencia de escape2 valor+onstante debe se.uir estos formatos para cada ti#oLiteral2

tipoLiteral d t ts

$or#ato valorConstante aaaa,mmGdd ""JmmJssc.fffd aaaaGmm,dd ""JmmJssc.fffd

Los siguientes son e?em!los de constantes de 4ora y (ec4a de OD-)J f ts `1992G0;G02 01J2.J;+.12.` g f d `1990G10G02` g f t `1.J..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. El ti!o de datos de marca de 4ora de OD-) y OLE D- guarda (ec4as y 4oras. El ti!o de datos ti#esta#% de &ransactGSQL es un ti!o de datos "inario con valores no relacionados con el tiem!o.

U.(-(N1$ ,1./& #+.#$/&

Los enteros son n@meros com!letos. %o contienen decimales o (racciones. 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.16A.62..+62 y 2.16A.62..+6A. smallint &iene una longitud de 2 "ytes y almacena n@meros entre G.2.A+2 y .2.A+A. tinyint &iene una longitud de 1 "yte y almacena n@meros entre 0 y 2;;. Los o"?etos y e1!resiones enteras se !ueden usar en cualIuier o!eraci n matem0tica. )ualIuier (racci n generada !or estas o!eraciones ser0 truncadaF no redondeada. Por e?em!loF SELE)& ;L. devuelve el valor 1F no el valor 2 Iue devolver5a si se redondeara el resultado (raccionario. 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. La !ro!iedad IDE%&I&C se usa normalmente !ara generar autom0ticamente n@meros e1clusivos de identi(icaci n o claves !rinci!ales. %o es necesario incluir los datos enteros entre comillas sim!les como los datos de car0cter o de (ec4a y 4ora.
U.(-(N1$ ,1./& ,#'(51-9 D-/1. 0 $#1-

El ti!o de datos deci#al !uede almacenar 4asta .2 d5gitos y todos !ueden estar a la derec4a del se!arador decimal. 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 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. s Es!eci(ica la escalaF o el n@mero de d5gitos Iue !uede ir a la derec4a del se!arador decimal. p y s de"en seguir la reglaJ 0 a[ s a[ p a[ .2. ,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. En 0ransactUSQL= nu#eric es un sinni#o del ti%o de datos deci#al.

U.(-(N1$ ,1./& D-/1. 0 $#1-

Los ti!os de datos $loat y real se conocen como ti!os de datos a!ro1imados. El com!ortamiento de $loat y real sigue la es!eci(icaci n IEEE A;6 acerca de los ti!os de datos num=ricos a!ro1imados. 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. 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. Sin em"argoF a veces la di(erencia se 4ace notar. 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. En su lugarF use los ti!os de datos enterosF deci#alF #oney o s#all#oney. Evite usar columnas $loat o real en las condiciones de "@sIueda de la cl0usula #EE/EF es!ecialmente los o!eradores [ y aS. Es me?or limitar las columnas $loat y real a las com!araciones S o a. La es!eci(icaci n IEEE A;6 !ro!orciona cuatro modos de redondeoJ redondear al m0s cercanoF redondear 4acia arri"aF redondear 4acia a"a?o y redondear 4acia cero. Microso(tj SQL Serverk usa el redondeo 4acia arri"a. &odos son !recisos !ara garanti:ar la e1actitudF aunIue !ueden dar como resultado valores en !unto (lotante ligeramente distintos. 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.
U.(-(N1$ ,1./& .#H. # (517#

Microso(tj SQL Serverk almacena cadenas de caracteres con m0s de 2.000 caracteres y datos "inarios con m0s de 2.000 "ytes en ti!os de datos es!eciales llamados te@t e i#age. Las cadenas ,nicode su!eriores a 6.000 caracteres se almacenan en el ti!o de datos nte@t. Por e?em!loF su!onga Iue tiene un arc4ivo grande de te1to 7.&H&9 de in(ormaci n de clientes Iue es necesario im!ortar a la "ase de datos de SQL Server. Estos datos desea Iue se almacenen como un @nico datoF en lugar de integrarlos en las diversas columnas de las ta"las de datos. )on este !ro! sito !uede crear una columna del ti!o de datos te@t. Sin em"argoF si necesita almacenar logoti!os de em!resaF almacenados actualmente como im0genes &IBB 7.&IB9 de 10 D- cada unoF cree una columna del ti!o de datos i#age. Si los datos del te1to Iue desea almacenar se encuentran en (ormato ,nicodeF use el ti!o de datos nte@t. Por e?em!loF una carta modelo creada !ara clientes internacionales seguramente contendr0 ortogra(5as y caracteres internacionales usados en varias culturas distintas. 3lmacene estos datos en una columna nte@t.

SQL Server inter!reta los datos te@t como series de caracteres mediante la !0gina de c digos instalada con SQL Server. SQL Server inter!reta los datos nte@t como series de caracteres con la es!eci(icaci n de ,nicode. Los datos de ti!o i#age se almacenan como una cadena de "its y no son inter!retados !or SQL Server. )ualIuier inter!retaci n de los datos de una columna i#age de"e ser reali:ada !or la a!licaci n. Por e?em!loF una a!licaci n !odr5a almacenar datos en una columna i#age con el (ormato -MPF &IBBF 8IB o VPE8. 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. &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.
U.(-(N1$ C/+&.1+.#&

,na constante es un s5m"olo Iue re!resenta el valor es!ec5(ico de un dato. El (ormato de las constantes de!ende del ti!o de datos del valor Iue re!resenta. Las constantes se llaman tam"i=n literales. 3lgunos e?em!los de constantes sonJ )adenas de caracteresJ
'!''?r "'' 'Th" &"@"& Aor Bo1. d> Cd shou&d 1" 1"t0""' Cd a'd Cd('

)adenas ,nicodeJ
$'M chD&'

)onstantes de cadenas "inariasJ


,E*2EA ,E94,:FAE%DD,*,E

Las constantes (it se re!resentan con los n@meros 0 o 1. )onstantes dateti#eJ


'A6r & *53 *44F' ',:;*5;4F' '*:>+,>2:' ',:>2: PM'

)onstantes integerJ
*F4: 2

)onstantes deci#alJ
*F4:(*2,: 2(,

)onstantes $loat y real


*,*(5E5 ,(5E<2

)onstantes #oneyJ
G*2 G5:2,2+(*:

)onstantes uniVueidenti$ierJ
,EAA*4499AF9F1**d,1:2d,,c,:Ac49:AA '9%49*4%%<F?F9<D,**<?:2D<,,C,:%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

)G*59(:5 <5+(52EF <*24(:2 )::2

U.(-(N1$ '/+&.1+.#& #+ T$1+&1'."SQL

Las constantes se !ueden usar de muc4as (ormas en &ransactGSQL. 3 continuaci n se muestran algunos e?em!losJ )omo un valor constante de una e1!resi n aritm=ticaJ
SELECT Pr c" ) G(*, %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,,(,2

)omo el valor Iue de"e colocarse en una columna de la (ila actual. Esto se es!eci(ica con la cl0usula SE& de la instrucci n ,PD3&E o la cl0usula '3L,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*,,,,,(,,) EJECUTE K @".?o'us.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. Las categor5as en Iue se dividen las (unciones sonJ
F:+'(/+#& ,# 17$#71,/ #eali9an operaciones que combinan varios valores en uno2 E;emplos son C<8/0 S8* *D/ y *%Q2 F:+'(/+#& ,# '/+D(7:$1'(*+ Son funciones escalares que devuelven informacin acerca de la confi.uracin2 F:+'(/+#& ,# ':$&/$#&

$evuelven informacin acerca del estado de un cursor2 F:+'(/+#& ,# D#'I1 0 I/$1 0ratan valores ,1.#.(5# y &51--,1.#.(5#2 F:+'(/+#& 51.#5<.('1& #eali9an operaciones tri.onomCtricas operaciones numCricas2 F:+'(/+#& ,# 5#.1,1./& $evuelven informacin acerca de los atributos de las bases de datos y de los ob;etos de base de datos2 F:+'(/+#& ,# '/+3:+./& ,# D(-1& $evuelven con;untos de filas que se pueden usar en el lu.ar de una referencia de tabla de una instruccin de 0ransact>SQL2 F:+'(/+#& ,# &#7:$(,1, $evuelven informacin acerca de usuarios y funciones2 F:+'(/+#& ,# '1,#+1 0ratan valores 'I1$ %1$2(+1$02 F:+'(/+#& ,#- &(&.#51 Guncionan en o informan acerca de varias opciones y ob;etos del sistema2 F:+'(/+#& ,# #&.1,G&.('1& ,#- &(&.#51 $evuelven informacin relacionada con el rendimiento de SQL Server2 F:+'(/+#& ,# .#H./ # (517#+ 0ratan valores .#H. e (517#2 %1$'I1$ +'I1$ +%1$'I1$ 2(+1$0 y .eomCtricas y dems

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.
SELECT D?.$AME()

,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 ,PD3&E9 !ara limitar las (ilas adecuadas !ara la consulta.
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.
CREATE V#E- Sho0MyE=6&oy="'t#'Ao AS SELECT / %R!M E=6&oy""s -HERE E=6&oy""#D = SUSUAR#!.S#D() K!

)ualIuier e1!resi n. ,n desencadenador o restricci n )EE)D !ara com!ro"ar los valores es!eci(icados cuando se insertan datos.

CREATE TA?LE Sa&"sCo'tacts (Sa&"sR"6#D #$T PR#MARM NEM CHECN (Sa&"sR"6#D = SUSUAR#!.S#D() )3 Co'tact$a=" VARCHAR(5,) $ULL3 Co'tactPho'" VARCHAR(*+) $ULL)

,n desencadenador o restricci n DEB3,L& !ara suministrar un valor en el caso de Iue no se es!eci(iIue ninguno en una instrucci n I%SE/&.

CREATE TA?LE Sa&"sCo'tacts ( Sa&"sR"6#D #$T PR#MARM NEM CHECN (Sa&"sR"6#D = SUSUAR#!.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#!.S#D() ) K!

Las (unciones se usan siem!re con !ar=ntesisF incluso cuando no 4aya !ar0metros. ,na e1ce!ci n son las (unciones nil0dicas 7(unciones Iue no toman !ar0metros9 usadas con la !ala"ra clave DEB3,L&. 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. 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. Las (unciones se !ueden anidar 7una (unci n se usa dentro de otra (unci n9.

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. 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,3/IOWID y S,S,3/IOW%3ME 7o S,S,3/IOWSID y S,S,3/IOWS%3ME9 ,S,3/IOWID y ,S,3/IOW%3ME

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. de "ase de datos en lugar de e?ecutar una instrucci n SELE)& de la ta"la syso(+ects. En este e?em!lo se recu!era el nom"re del usuario actual conectado 7mediante 3utenticaci n de SQL Server9.
SELECT SUSUAR#!.$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. )OLWLE%8&E Devuelve la longitud de una columna. I%DEHW)OL Devuelve el nom"re de la columna de un 5ndice. )OLWLE%8&E devuelve la longitud de una columnaF no la longitud de ninguna cadena individual almacenada en la columna. ,se la (unci n D3&3LE%8&E !ara determinar el n@mero total de caracteres en un valor determinado. 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.
SELECT C!L.LE$KTH('E=6&oy""s'3 'Last$a="') AS Co&.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. Las ta"las del sistema !ueden cam"iar signi(icativamente entre versiones de SQL Server.

U.(-(N1$ D:+'(/+#& ,# '1,#+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. 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. En los datos (inary y var(inary se !ueden usar tam"i=n unas cuantas (unciones de cadena. Las (unciones de cadena se !ueden usar !araJ /ecu!erar s lo una !arte de una cadena 7S,-S&/I%89.

-uscar similitudes en el sonido de una cadena de caracteres 7SO,%DEH y DIBBE/E%)E9. -uscar una !osici n de inicio de una cadena !articular en una columna o e1!resi n. Por e?em!loF la !osici n de la letra 3 en NnQu= d5a tan "onitoiO. )oncatenar o com"inar cadenas en una sola. Por e?em!loF com"inar un nom"reF a!ellido y segundo nom"re o inicial en un nom"re com!leto. )onvertir un valor Iue no sea de cadena a un valor de cadena 7comoF !or e?em!loF convertir el valor 1;FAF almacenado como $loatF a cNar9. Insertar una cadena es!ec5(ica en una cadena e1istente. Por e?em!loF insertar la cadena Nuna ve:O en una cadena e1istente NlraseO !ara !roducir la cadena Nlrase una ve:O.
U.(-(N1$ SUBSTRING

La (unci n S,-S&/I%8 devuelve una !arte de un car0cter o cadena "inariaF o una cadena de te1toF y toma tres !ar0metrosJ ,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. La !osici n en la Iue de"e em!e:ar la su"cadena. La longitud 7en n@mero de caracteres o en n@mero de "ytes !ara (inary9 de la cadena Iue se va a devolver. 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.
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(.
SELECT E = SU?STR#$K('a1cd"A'3 23 +) E <<<<<<<<<< 1cd (* ro0(s) aAA"ct"d)

C/5)1$1'(*+ ,# 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. P3&I%DEH !uede usar caracteres comod5nF mientras Iue )E3/I%DEH no !uede. Las (unciones toman dos !ar0metrosJ El !atr n cuya !osici n se desea o"tener. )on P3&I%DEHF el !atr n es una cadena de literales Iue !uede contener caracteres comod5n. )on )E3/I%DEHF el !atr n es una cadena de literales 7sin caracteres comod5n9.

,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. 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.
USE 6u1s SELECT CHAR#$DEJ('0o'd"rAu&'3 'ot"s) %R!M t t&"s -HERE t t&". 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. 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 .ategories.
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 ,

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. 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 %,LLF IS %O& %,LL y LIDE 7las @nicas com!araciones adicionales v0lidas con te@t en una cl0usula #EE/E9.
U.(-(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. Los !ar0metros longitud y decimal de S&/ 7si se suministran9 de"en ser !ositivos. La longitud !redeterminada es 10. De (orma !redeterminada o si el !ar0metro decimal es 0F el n@mero se redondea a un entero. 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. En este e?em!lo se convierte la e1!resi n (loat 12.F6; a un car0cterF con una longitud de + caracteres y 2 lugares decimales.

SELE)& S&/712..6;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. Por e?em!loF el n@mero 12.6;+AF29 tiene A d5gitos a la i:Iuierda del se!arador decimal. 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. Si el !ar0metro Iue indica la longitud de S&/ es + o menosF se devuelven asteriscos. 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.
U.(-(N1$ STUFF

La (unci n S&,BB inserta una cadena en otra. 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. 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. Si la longitud Iue se va a eliminar es mayor Iue la !rimera cadenaF se elimina 4asta el !rimer car0cter de la !rimera cadena. 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.
SELEC0 S08GG&[abc[ 2 4 [=y9['

Este es el con?unto de resultadosJ


<<<< aEyO (* ro0(s) aAA"ct"d)

C/5)1$1'(*+ ,# 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. En la com!araci n se !asan !or alto las vocales.

Para determinar la com!araci n se usan caracteres no al(a"=ticos. Esta (unci n siem!re devuelve un valor. En este e?em!lo se muestran los resultados de la (unci n SO,%DEH !ara las cadenas similares de caracteres NSmit4O y NSmyt4eO. )uando las cadenas de caracteres son similaresF am"as tienen los mismos c digos SO,%DEH.
SELECT S!U$DEJ ('s= th')3 S!U$DEJ ('s=yth"')

lste es el con?unto de resultadosJ


<<<<< <<<<< S5+, S5+, (* ro0(s) aAA"ct"d)

La (unci n DIBBE/E%)E com!ara los valores SO,%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. 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.
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 . Iue indica Iue las dos cadenas de caracteres tienen un sonido similarF aunIue di(ieren en varios caracteres.
SELECT D#%%ERE$CE('P"AA'3 'K"oAA"')

U.(-(N1$ -1& D:+'(/+#& .#H.9 +.#H. # (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. El !untero es v0lido 4asta Iue se elimina la (ila. La (unci n &EH&'3LID com!rue"a si un determinado !untero de te1to es v0lido o no. Los !unteros de te1to se !asan a las instrucciones /E3D&EH&F ,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. 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. 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.+ en la ta"la %u(Ein$o de la "ase de datos %u(s. Primero se declara la varia"le local Pval. El siguiente !untero 7una cadena "inaria larga9 se coloca

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. 'Ao) %R!M 6u1. 'Ao -HERE 6u1. d = ',5+9' READTEJT 6u1. 'Ao(6r. 'Ao @@a& : *,

lste es el con?unto de resultadosJ


(* ro0(s) aAA"ct"d) 6r. '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.000 "ytes y los datos nte@t se truncan a 6.000 "ytes. %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. 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(*,) ) AS #$T )(

U.(-(N1$ D:+'(/+#& 51.#5<.('1&

,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. 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. La !recisi n de las o!eraciones integradas !ara el ti!o de datos $loat esF de (orma !redeterminadaF de seis lugares decimales. De (orma !redeterminadaF un n@mero !asado a una (unci n matem0tica ser0 inter!retado como un ti!o de datos deci#al. 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. Por e?em!loF el valor devuelto !or la (unci n BLOO/ tiene el ti!o de datos del valor de entrada. La entrada de esta instrucci n SELE)& es de ti!o deci#al y BLOO/ devuelve 12.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+(,,,,,, (* 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. El

resultado devuelto ser0 0F0 y no se mostrar0 ning@n mensa?e de error. 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. Por e?em!loF los valores es!eci(icados !ara la (unci n 3SI% de"en encontrarse entre G1F00 y 1F00. Si se es!eci(ica el valor G2F !or e?em!loF se !roduce un error de dominio. Los errores de intervalo se !roducen cuando el valor es!eci(icado se encuentra (uera de los valores !ermitidos. Por e?em!loF PO#E/710F0F 6009 e1cede el valor m01imo 7o2eP.029 del intervalo !ara el ti!o de datos $loatF mientras Iue PO#E/7G10F0F 6019 es menor Iue el valor m5nimo 7o G2eP.029 del intervalo !ara el ti!o de datos $loat. En esta ta"la se muestran (unciones matem0ticas Iue !roducen un error de dominio o de intervalo. ?uncin #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. Puede usarJ SE& 3/I&E3-O/& O%F Iue termina la consulta y sale de la transacci n de(inida !or el usuario. La con(iguraci n de SE& 3/I&E3-O/& su!lanta la con(iguraci n de SE& 3%SIW#3/%I%8S. SE& 3%SIW#3/%I%8S O%F Iue detiene el comando. SE& 3/I&EI8%O/E O%F Iue 4ace Iue no se muestre ning@n mensa?e de advertencia. &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. Si no se 4a esta"lecido ninguna de estas o!cionesF Microso(tj SQL Serverk devuelve %,LL y muestra un mensa?e de advertencia des!u=s de e?ecutar la consulta. 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.
U.(-(N1$ D:+'(/+#& .$(7/+/5V.$('1&

Microso(tj SQL Serverk !ro!orciona (unciones trigonom=tricas Iue devuelven radianes. ?unciones Vue devuelven radianes 3)OS )OS &3% SI% 3se radianes co#o valor de entrada

3&3% 3&%2 )O&


"*'S *'S

3SI%

&anto 3)OS como )OS son (unciones trigonom=tricas. La (unci n 3)OS devuelve el 0nguloF en radianesF cuyo coseno es la e1!resi n $loat dada. La (unci n )OS devuelve el coseno del 0ngulo es!eci(icadoF en radianesF dada la e1!resi n $loat. Por e?em!loF la siguiente instrucci n SELE)& calcula el 3)OS de G0F99A y el )OS del valor 1F1.6J
SELECT AC!S(<(445)3 C!S(*(*+:)

3s5F el coseno del 0ngulo Iue mide .F0+611.+02++;91 radianes es G0F99A y el coseno del 0ngulo Iue mide 1F1.6 radianes es 1F1.6. El intervalo v0lido de 3)OS es de G1 a 1.
"S+N S+N

&anto 3SI% como SI% son (unciones trigonom=tricas Iue usan una e1!resi n $loat. La (unci n 3SI% calcula el 0nguloF medido en radianesF cuyo seno es la e1!resi n $loat dada. La (unci n SI% calcula el valor del seno trigonom=trico del 0nguloF medido en radianesF como una e1!resi n $loat. En este e?em!lo se calcula el 3SI% de G0FA;22 y el SI% de ;. El seno del 0ngulo Iue mide G0F2+0;6202.22.9.2F en radianesF es G0FA;22 y seno del 0ngulo Iue mide ; radianes tiene un valor de G0F9;29262A6++.1.2.
SELECT AS#$(<(55F2)3 S#$(5)

El intervalo v0lido de 3SI% es de G1 a 1.


"T"N 3 "TN43 T"N *'T

Las (unciones 3&3%F 3&%2F &3% y )O& son (unciones matem0ticas. La (unci n 3&3% devuelve la medida del 0nguloF en radianesF cuya tangente es la e1!resi n $loat dada. ,n 0ngulo Iue tenga un valor de tangente de G2AF29 medir0 G1F;.61+92;;.+29+ radianes. La (unci n 3&%2 devuelve el 0nguloF en radianesF cuya tangente se encuentra entre las dos e1!resiones $loat dadas. ,n 0ngulo con una tangente entre .F2A. y 1; mide 0F2162.2A;;9+2+29 radianes. La (unci n &3% devuelve la tangente trigonom=trica de la e1!resi n $loat dada. ,n 0ngulo Iue mide 2AF92 radianes tiene una tangente de G0F.+996A++1+.+1+. 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 de 9AF1922 radianes tiene un valor de cotangente de G;F0216962626999A.
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. ,n 0ngulo Iue mide G16F;A2 radianes mide G2.;F2;A2A.A61A16090000 grados.
SELECT DEKREES(<*:(55F)

R"D+"NS

La (unci n /3DI3%S calcula el 0ngulo en radianes dada la medida del 0ngulo en grados. Para calcular la medida en radianes de un 0ngulo Iue mide 10FA; gradosF useJ
SELECT RAD#A$S(*,(55)

*o/paracin de *-+L+N(

,L''R

La (unci n )EILI%8 devuelve el menor entero Iue sea mayor o igual Iue la e1!resi n num=rica dada. La (unci n BLOO/ devuelve el mayor entero Iue sea menor o igual Iue la e1!resi n num=rica dada. Por e?em!loF dada la e1!resi n num=rica 12F92A.F )EILI%8 devuelve 1.F y BLOO/ devuelve 12. 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.
*o/paracin de L'( L'(56

La (unci n LO8 devuelve el logaritmo natural de la e1!resi n $loat dada. Los logaritmos naturales se calculan con el sistema de "ase 2. Sin em"argoF la (unci n LO810 devuelve el logaritmo en "ase 10. ,se am"as (uncionesF LO8 y LO810F !ara a!licaciones trigonom=tricas. Por e?em!loF la siguiente instrucci n SELE)& calcula el LO8 y el LO810 del valor 1FA;.
SELECT L!K(*(55)3 L!K*,(*(55)

U.(-(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. PO#E/72F.9 devuelve 2 elevado a la tercera !otenciaJ el valor 2. Se !ueden es!eci(icar !otencias negativasF con lo Iue PO#E/72F000F G.9 devuelve 0F12;. O"serve Iue el resultado de PO#E/72F G.9 es 0. Esto es as5 !orIue el resultado ser0 del mismo ti!o de datos 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. La (unci n EHP devuelve el valor e1!onencialF en notaci n cient5(icaF de la e1!resi n $loat dada. 3s5F con el valor 192F19.2.2AF la (unci n EHP devuelve el valor 1F12A101;9;9A9;.eP02+.
SELECT EJP(*4F(*4+F+25)

U.(-(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. Este e?em!lo calcula dos n@meros aleatorios. 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 . !ara la !osici n de inicio.
SELECT RA$D()3 RA$D(+)

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 ). Si no se !ro!orciona el valor de inicioF el sistema generar0 sus !ro!ios valores varia"les. Si llama a /3%D con un valor de inicioF de"e usar valores de inicio varia"les !ara generar n@meros aleatorios. Si llama a /3%D varias veces con el mismo valor de inicioF devolver0 el mismo valor generado. 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:)

,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()) / *,,,,, ) ) (DATEPART(ss3 KETDATE()) / *,,, ) ) 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. Esto es lo Iue ocurrir0 con m0s !ro"a"ilidad si las llamadas a /3%D se incluyen en un @nico lote. 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. En este casoF incor!ore un valor "asado en algo di(erente al tiem!o !ara generar los valores de inicio.
F:+'(/+#& ,# D#'I1

Las (unciones de (ec4a se utili:an !ara mostrar in(ormaci n acerca de (ec4as y 4oras. Se usan !ara el tratamiento de valores dateti#e y s#alldateti#e y !ara reali:ar o!eraciones aritm=ticas en los mismos. Las (unciones de (ec4a se !ueden usar en cualIuier !arte donde se !ueda usar una e1!resi n. SQL Server reconoce una am!lia variedad de (ormatos de entrada de datos dateti#e. 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. )uando escri"a valores dateti#e o s#alldateti#eF incl@yalos entre comillas sim!les.
.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. 8E&D3&E ace!ta el !ar0metro %ull 7 9. En este e?em!lo se averigua la (ec4a y 4ora actuales del sistema.
SELECT KETDATE()

lste es el con?unto de resultadosJ


<<<<<<<<<<<<<<<<<<<<<<<<<

Pu&y 24 *445 2>5, 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. 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. Puede usar 8E&D3&E en cualIuier !arte !ara devolver la (ec4a actual del sistema. 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/paracin 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.9 como un entero o como una cadena 3S)II. 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/paracin de D"T-"DD

D"T-D+,,

La (unci n D3&E3DD agrega un intervalo a la (ec4a Iue es!eci(iIue. 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. 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.

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. En otras !ala"rasF encuentra un intervalo entre dos (ec4as. El resultado es un valor entero con signoF igual a fec"a- , fec"a. en !artes de (ec4a. Esta consulta usa la (ec4a .0 de noviem"re de 199; y "usca el n@mero de d5as Iue 4ay entre %u(date 7(ec4a de !u"licaci n9 y esa (ec4a.
USE 6u1s SELECT DATED#%%(day3 6u1dat"3 '$o@ +, *445') %R!M t t&"s

Para las (ilas de los t5tulos Iue tengan una %u(date de 21 de octu"re de 199;F el resultado !roducido !or la @ltima consulta es 60. 7Eay 60 d5as entre el 21 de octu"re y el .0 de noviem"re9. Para calcular un intervalo en mesesF utilice esta consultaJ
USE 6u1s SELECT 't"r@a& = DATED#%%(=o'th3 6u1dat"3 '$o@ +, *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 ; !ara las (ilas con una %u(date en ?unio. )uando la !rimera (ec4a de la (unci n D3&EDIBB sea !osterior a la segunda (ec4a es!eci(icadaF el valor resultante ser0 negativo. 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. Si uno o am"os argumentos de (ec4a son un valor s#alldateti#eF !ara el c0lculo ser0n convertidos internamente a valores dateti#e. 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.
F:+'(/+#& @:# ,#%:#-%#+ (,#+.(D('1,/$#& 0 +/52$#& ,# :&:1$(/&

'arias (unciones del sistema devuelven identi(icadores y nom"res de usuarios. 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. )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. Eay dos ti!os de nom"res de inicio de sesi nJ

%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 sesin. 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 %&. )ada nom"re de cuenta o gru!o de #indo$s %& se almacena en #aster.d(o.sys@Inicios de sesin.na#e. El identificadorDeSeguridad (Seguridad/identifier) de #indo$s %& de la cuenta o gru!o de #indo$s %& est0 almacenado en sysInicios de sesin.sid. %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. 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 sesin. )ada nom"re de inicio de sesi n de SQL Server est0 almacenado en #aster.d(o.sys@Inicios de sesin.na#e. SQL Server genera un 8,ID Iue se utili:a como identificadorDeSeguridad (Seguridad/identifier) y lo almacena en sys@Inicios de sesin.sid. SQL Server utili:a #aster.d(o.sys@Inicios de sesin.sid como identificadorDeSeguridad del nom"re de inicio de sesi n. Las versiones anteriores de SQL Server utili:a"anF en su lugarF un Id0suarioServidor de una ta"la di(erenteJ #aster.d(o.sysInicios de sesin.suid. Para mantener la com!ati"ilidad con versiones anterioresF SQL Server im!lementa sysInicios de sesin como una vista de sys@Inicios de sesin y sysInicios de sesin.suid es una columna calculada Iue genera un Id0suarioServidor a !artir del identificadorDeSeguridad de sys@Inicios de sesin. %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. 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. )ada nom"re de usuario de "ase de datos est0 asociado con un identi(icador de usuario de "ase de datos almacenado en sysusuarios.uid. El identificadorDeSeguridad de cada usuario se almacena en sysusuarios.sidX !or lo tantoF se !uede asociar de nuevo los usuarios a sus inicios de sesi n corres!ondientes. /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.
O2.#+#$ (,#+.(D('1,/$#& / ':#+.1& ,# (+('(/ ,# &#&(*+

)uando se conecte a SQL ServerF utiliceJ

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

Si se es!eci(ic identificadorDeSeguridad en lugar de Id0suarioSistemaF S,S,3/IOW%3ME devuelve %,LL. S,S,3/IOWSID7^cuentaInicioSesi n_9 Esta (unci n se admite !ara mantener la com!ati"ilidad con versiones anteriores. ,tilice S,S,3/IOWSID cuando se conecte a SQL Server cuentaInicioSesi1n !uede serJ ,n nom"re de cuenta o gru!o de #indo$s %&F en cuyo caso S,S,3/IOWSID devuelve el identificadorDeSeguridad de #indo$s %& de la cuenta o gru!o de #indo$s %&. ,n nom"re de inicio de sesi n de SQL ServerF en cuyo caso S,S,3/IOWSID devuelve el (also identificadorDeSeguridad generado !ara ese nom"re de inicio de sesi n de SQL Server. Si no se es!eci(ica cuentaInicioSesi1n en una cone1i n reali:ada con la 3utenticaci n de #indo$s %&F S,S,3/IOWSID devuelve el identificadorDeSeguridad de #indo$s %& asociado con la cone1i n. Si se reali: la cone1i n con la 3utenticaci n de SQL ServerF S,S,3/IOWS%3ME devuelve el (also identificadorDeSeguridad asociado con la cone1i n. SCS&EMW,S,3/IO Esta (unci n de SQLG92 se im!lementa como sin nimo de S,S,3/IOWS%3ME79 7S,S,3/IOWS%3ME es!eci(icado sin el !ar0metro identificadorDeSeguridad9 en &ransactGSQL.

O2.#+#$ +/52$#& ,# :&:1$(/ ,# 21&# ,# ,1./& / (,#+.(D('1,/$#& ,# :&:1$(/

)uando se conecte a SQL Server utiliceJ ,S,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. ,S,3/IOWID79 !ara o"tener el identi(icador de usuario de "ase de datos asociado con la cone1i n actual. ,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. ,na de las (unciones de SQLG92F ),//E%&W,S,3/IO o SESSIO%W,S,3/IOF !ara o"tener el nom"re de usuario de "ase de datos asociado con la cone1i n actual. En &ransactGSQLF estas (unciones se im!lementan como sin nimo de ,S,3/IOW%3ME79 7,S,3/IOW%3ME es!eci(icado sin el !ar0metro Id0suario2aseDatos9. La (unci n ,S,3/IO de &ransactGSQL tam"i=n se im!lementa como sin nimo de ,S,3/IOW%3ME79. 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. SQLG92

es!eci(ica Iue SESSIO%W,S,3/IO siem!re devuelva el identi(icador de autori:aci n del usuario Iue reali: la cone1i n. ),//E%&W,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. Si el m dulo de SQL no tiene un identi(icador de autori:aci n inde!endienteF SQLG 92 es!eci(ica Iue ),//E%&W,S,3/IO devuelva el mismo valor Iue SESSIO%W,S,3/IO. Microso(t SQL Server no tiene identi(icadores de autori:aci n inde!endientes !ara m dulos de SQLX !or lo tantoF ),//E%&W,S,3/IO y SESSIO%W,S,3/IO siem!re son el mismo. La (unci n ,S,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. Se es!eci(ica Iue devuelva el mismo valor Iue ),//E%&W,S,3/IO. En SQL ServerF la (unci n Iue devuelve nom"res de inicio de sesi n o cuentas (unciona de esta (ormaJ ,S,3/IOWID7^nom"re,suario-aseDeDatos_9 ,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. Si no se es!eci(ica nom3re0suario2aseDeDatos4 ,S,3/IOWID devuelve el identi(icador de usuario de "ase de datos asociado con la cone1i n actual. ,S,3/IOW%3ME7Id,suario-aseDeDatos9 ,S,3/IOW%3ME devuelve el nom"re de usuario de "ase de datos asociado con el identi(icador de usuario es!eci(icado. Si no se es!eci(ica Id,suario-aseDeDatosF ,S,3/IOW%3ME devuelve el nom"re de usuario de "ase de datos asociado con la cone1i n actual. ),//E%&W,S,3/IOF SESSIO%W,S,3/IOF ,S,3/IO Estas (unciones son sin nimos de ,S,3/IOW%3ME79 7,S,3/IO %3ME es!eci(icado sin el !ar0metro Id0suario2aseDeDatos9.

F:+'(/+#& ,# '/+%#$&(*+

,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. Estas (unciones de conversi n se usan tam"i=n !ara o"tener varios (ormatos es!eciales de datos. )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. ,se )3S& en lugar de )O%'E/& si desea Iue el c digo del !rograma &ransactGSQL cum!la con SQLG92. ,se )O%'E/& en lugar de )3S& !ara a!rovec4ar la (uncionalidad del estilo de )O%'E/&. )uando se usa )3S& o )O%'E/&F se necesitan dos clases de in(ormaci nJ

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. 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.

3 menos Iue guarde el valor convertidoF una conversi n s lo ser0 v0lida mientras dure la (unci n )3S& o )O%'E/&. 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.
USE 6u1s SELECT CAST(t t&" AS char(5,)3 ytd.sa&"s %R!M t t&"s -HERE ty6" = 'trad.coAc"6tar'

G O "ien G
USE 6u1s SELECT C!$VERT(char(5,)3 t t&")3 ytd.sa&"s %R!M t t&"s -HERE ty6" = 'trad.coAc"6tar'

lste es el con?unto de resultados de las consultasJ


ytd.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,49 Sush 3 A'yo'"R :,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.
USE 6u1s SELECT t t&"3 ytd.sa&"s %R!M t t&"s -HERE CAST(ytd.sa&"s AS char(2,)) L#NE '*5C' A$D ty6" = 'trad.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

SQL Server controla autom0ticamente ciertas conversiones de ti!os de datos. 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. Esto se denomina conversi n im!l5cita. %o es necesario Iue use la (unci n )3S& !ara reali:ar estas conversiones. Sin em"argoF se !uede usar )3S&J )uando dos e1!resiones son e1actamente del mismo ti!o de datos.

)uando dos e1!resiones son converti"les im!l5citamente. )uando es necesario convertir e1!l5citamente los ti!os de datos.

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. Si no es!eci(ica ninguna longitud cuando se convierte al ti!o de datosF SQL Server suministra autom0ticamente la longitud .0. 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;.9. 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. El valor de la 4ora se redondea al minuto m0s cercano. )onvertir a (it cam"ia cualIuier valor distinto de cero a 1. )uando convierta a #oney o s#all#oneyF se su!one Iue los enteros son unidades de moneda. Por e?em!loF el valor entero 6 se convierte al eIuivalente de moneda de 6 d lares 7!ara usEenglisNF el idioma !redeterminado9. 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. 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 "lancos situados a la i:Iuierda se !asan !or alto. 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. 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. )uando las e1!resiones num=ricas son demasiado grandes !ara Iue se !resente el nuevo ti!o de datosF se truncan los valores. 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.sa&"s) %R!M t t&"s -HERE ty6" = 'trad.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)

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.69+ 3S money9 es p10F.;. Puede convertir e1!l5citamente datos te@t a cNar o varcNarF y datos i#age a (inary o var(inary. Puesto Iue estos ti!os de datos est0n limitados a 2.000 caracteresF estar0 limitado a la longitud m01ima de los ti!os de datos cNaracter y (inaryF es decirF 2.000 caracteres. Puede convertir e1!l5citamente datos nte@t a ncNar o nvarcNarF !ero la longitud m01ima es de 6.000 caracteres. Si no es!eci(ica la longitudF el valor convertido tiene una longitud !redeterminada de .0 caracteres. %o se admite la conversi n im!l5cita.
-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. El n@mero Iue se suministra como el !ar0metro estilo determina la (orma en la Iue se muestran los datos dateti#e. El aKo se !uede mostrar con dos o con cuatro d5gitos. De (orma !redeterminadaF SQL Server suministra un aKo de cuatro d5gitos. 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. En este e?em!lo se muestra )O%'E/& con el !ar0metro estilo.
SELECT C!$VERT(char(*2)3 KETDATE()3 +)

Esta instrucci n convierte la (ec4a actual al estilo .F ddLmmLaa.

E: resiones ,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. 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. ,na e1!resi n !uede ser unaJ )onstante. Bunci n. %om"re de columna. 'aria"le. Su"consulta. )3SEF %,LLIB o )O3LES)E. ,na e1!resi n tam"i=n !uede generarse a !artir de la com"inaci n de estas entidades y o!eradores. 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.

SELECT Last$a=" %R!M $orth0 'd((E=6&oy""s

,na e1!resi n !uede ser tam"i=n un c0lculoF comoF !or e?em!lo 7%rice Q 1.;9 o 7%rice P salesEta@9. En una e1!resi nF incluya los valores de caracteres de (ec4a entre comillas sim!les. 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. Por e?em!loF col1F S,-S&/I%8F col)F %rice y 1.; son e1!resiones.
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,/$#& #+ #H)$#&(/+#&

Los o!eradores !ermiten reali:ar o!eraciones aritm=ticasF com!aracionesF concatenaciones o asignaciones de valores. Por e?em!loF !uede !ro"ar si la columna country con datos de clientes est0 rellena 7o no es %,LL9. 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. 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. -uscar (ilas o columnas Iue cum!lan una condici n determinada. Im!lementar una decisi n entre columnas de datos o entre e1!resiones. Pro"ar determinadas condiciones antes de iniciar o con(irmar una transacci nF o antes de e?ecutar determinadas l5neas de c digo. SQL Server tiene siete categor5as de o!eradores. "ara realiIar este ti%o de o%eracin )om!arar un valor con otro valor o una e1!resi n. 3se esta categorWa de o%erador O!eradores de com!araci n

Pro"ar si una condici n es ciertaF como 3%DF O/F %O&F LIDEF 3%CF 3LL o I%. SumaF restaF multi!licaci nF divisi nF m dulo. /eali:ar una o!eraci n en un o!erandoF como !ositivo o negativoF o el com!lementario. )onvertir tem!oralmente valores num=ricos normales 7como 1;09 a enteros y reali:ar aritm=tica de "its 70 y 19. )om"inar !ermanente o tem!oralmente dos cadenas 7de caracteres o de datos "inarios9 en una cadena. 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 ,nario.

O!eradores "inarios

O!erador de concatenaci n de cadenas

3signaci n

,na e1!resi n se !uede generar a !artir de varias e1!resiones m0s !eIueKas com"inadas mediante o!eradores. 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. Los o!eradores con mayor !re(erencia se e?ecutan antes Iue los o!eradores con menor !re(erencia.
'peradores arit/8ticos

Los o!eradores aritm=ticos se !ueden usar !ara reali:ar cualIuier c0lculo aritm=ticoF comoJ Suma. /esta. Multi!licaci n. 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. )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. Las e1!resiones entre !ar=ntesis tienen !re(erencia so"re el resto de las o!eraciones. 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. El resultado es la cantidad de dinero Iue reci"e el editor. El !roducto de ytdEsales y royalty se calcula

!rimero !orIue el o!erador es una multi!licaci n. 3 continuaci nF el total se divide !or 100. Este resultado se resta de ytdEsales.
USE 6u1s SELECT t t&". d3 ytd.sa&"s < ytd.sa&"s / roya&ty ; *,, %R!M t t&"s

Para conseguir una mayor claridadF !uede usar !ar=ntesisJ


USE 6u1s SELECT t t&". d3 ytd.sa&"s < ((ytd.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. Los c0lculos entre !ar=ntesis se eval@an !rimero. Si los !ar=ntesis est0n anidadosF el c0lculo con una anidaci n m0s !ro(unda es el Iue tiene !re(erencia. 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&". d3 (ytd.sa&"s < ytd.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. El o!erador o 7%O& "inario9 !uede usar tam"i=n datos (it. &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. Por e?em!loF el o!erador o 7%O& "inario9 cam"ia los 1 "inarios a 0F y los 0 a 1. Para com!ro"ar las o!eraciones "inariasF !uede convertir o calcular los valores decimales. Por e?em!loF su!onga Iue desea sumar 1;0 y A;F !ero no s lo desea el valor decimal de 22;F sino Iue desea usar aritm=tica "inaria 7suma de 0 y 19. Para este (inF use el o!erador "inario 3%D 7\9. Si est0 almacenando datos de enteros 7valores decimales normalesF como el 1;0 y A; mencionado anteriormente9 y desea reali:ar una conversi n interna !ara reali:ar c0lculos "inariosF use los o!eradores "inarios. Los o!eradores "inarios tam"i=n son @tiles !ara o"tener un valor %O& Iue no sea necesariamente el o!uesto e1acto.
'peradores de co/paracin

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. Los o!eradores de com!araci n dan como resultado un ti!o de datos -ooleanJ devuelven &/,E o B3LSE seg@n el resultado de la condici n !ro"ada. Por e?em!loF !ara calcular una "oni(icaci n !ara aIuellos em!leados Iue 4an sido contratados antes del 1; 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; de mar:o de 1992 !ro!orcionar0 una lista de los em!leados Iue de"en reci"ir la "oni(icaci n. Los o!eradores de com!araci n v0lidos sonJ

S 7mayor Iue9. a 7menor Iue9. [ 7igual9. a[ 7menor o igual Iue9. S[ 7mayor o igual Iue9. i[ 7distinto de9. i[ 7distinto de9. ia 7no menor Iue9. iS 7no mayor Iue9.

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. Por e?em!loF si la columna del !a5s es /, en lugar de Es!aKaF !uede Iue se a!liIuen distintas tari(as de env5o. 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^/,_9 y una !ala"ra clave de !rogramaci n de control de (lu?o 7IB9F !ara conseguir este !ro! sito. )ualIuier !ersona Iue tenga acceso a los datos reales 7!ara consultas9 !uede usar los o!eradores de com!araci n en consultas adicionales. 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. 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. Por e?em!loF !ara im!rimir todas las (ilas de cliente si el !a5s es el /eino ,nido. En la ta"la se muestran e?em!los de com!araci n de cadenas entre datos ,nicode y no ,nicodeX S&1 es cNar y S&2 es ncNar. .o#%aracin S&1 [ S&2 S&1 [ `cadena no ,nicode` S&2 [ `cadena no ,nicode` S&2 [ %`cadena ,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 ,nicode entre !ar=ntesis9 `` 7cadena vac5a no ,nicode9 'escri%cin EIuivalente a )O%'E/&7ncNarF S&19 [ S&2 o )3S&7S&1 como ncNar9 [ S&2. )om!araci n normal de cadena de SQLG92. EIuivalente a S&2 [ )O%'E/&7ncNarF `cadena no ,nicode`9 o S&2 [ )3S&7`cadena no ,nicode` 3S ncNar9. )om!araci n ,nicode. )om!araci n ,nicode.

)om!araci n normal de cadena de SQLG92.

)adena vac5a. ,na cadena vac5a o una cadena Iue contiene un car0cter "lanco 7de!endiendo

de la con(iguraci n de SQLG929.
'perador de concatenacin de cadenas

El o!erador de concatenaci n de cadenas es el signo m0s 7P9. Puede com"inarF o concatenarF dos o m0s cadenas de caracteres en una @nica cadena. &am"i=n !uede concatenar cadenas "inarias. 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.
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.
USE 6u1s SELECT 'Th" du" dat" s ' ) CAST(6u1dat" AS @archar(*2F)) %R!M t t&"s -HERE t t&". d = '?U*,+2'

lste es el con?unto de resultadosJ


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Th" du" dat" s Pu' *2 *44* *2>,,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)

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. Para este e?em!loF si s%Ed(c#%tlevel es +;F los literales vac5os se tratan como un "lanco individual.

V1-/$#& NULL

%,LL indica Iue el valor es desconocido. Es distinto de un valor vac5o o cero. Dos valores %,LL no son iguales. La com!araci n entre dos valores %,LLF o entre un valor %,LL y cualIuier otro valorF tiene un resultado desconocido !orIue el valor de cada %,LL es desconocido. Los valores %,LL indican normalmente Iue el dato es desconocidoF no es a!lica"le o Iue se agregar0 !osteriormente. Por e?em!loF la inicial de un cliente !uede Iue no sea conocida en el momento en Iue =ste 4ace un !edido. 3 continuaci n se muestra in(ormaci n acerca de los valores %,LLJ Para com!ro"ar valores %,LL en una consultaF use IS %,LL o IS %O& %,LL en la cl0usula #EE/E. )uando se visuali:an los resultados en el 3nali:ador de consultas de SQL ServerF los valores %,LL se muestran como 1null2 en el con?unto de resultados. Los valores %,LL se !ueden insertar en una columna si se indica e1!l5citamente %,LL en una instrucci n I%SE/& o ,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. Los 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. En el c digo del !rogramaF !uede com!ro"ar la e1istencia de valores %,LL de (orma Iue determinados c0lculos s lo se realicen en (ilas con datos v0lidos 7o no %,LL9. 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. La eliminaci n de los valores %,LL cuando realice c0lculos !uede ser im!ortante !orIue algunos 7comoF !or e?em!loF un !romedio9 !ueden ser incorrectos si se incluyen columnas %,LL. Es !osi"le Iue 4aya valores %,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 %,LL o los trans(ormen en alg@n otro valor 7si no desea Iue a!are:can en los datos9. 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 %,LL. Planee sus consultas e instrucciones de modi(icaci n de datos de (orma Iue los valores %,LL tengan un e(ecto m5nimo.

)uando 4ay valores %,LL en los datosF los o!eradores l gicos y de com!araci n !ueden devolver un tercer resultado desconocido 7,%D%O#%9 en lugar de sim!lemente &/,E 7verdadero9 o B3LSE 7(also9. Esta necesidad de una l gica de tres valores es el origen de muc4os errores de la a!licaci n. Estas ta"las destacan el e(ecto de escri"ir com!araciones con %,LL. AA' con valor &/,E ,%D%O#% B3LSE *4 con valor &/,E ,%D%O#% B3LSE A*0 &/,E ,%D%O#% B3LSE 043E &/,E ,%D%O#% B3LSE 3AMA*WA ,%D%O#% ,%D%O#% B3LSE 3AMA*WA &/,E ,%D%O#% ,%D%O#% EvalYa a B3LSE ,%D%O#% &/,E ?ALSE B3LSE B3LSE B3LSE ?ALSE &/,E ,%D%O#% B3LSE

043E &/,E &/,E &/,E

El est0ndar SQLG92 escri"e las !ala"ras clave IS %,LL e IS %O& %,LL !ara com!ro"ar la !resencia de valores %,LL. IS A3LL &/,E %,LL B3LSE EvalYa a B3LSE &/,E B3LSE IS A*0 A3LL &/,E %,LL B3LSE EvalYa a &/,E B3LSE &/,E

&ransactGSQL o(rece tam"i=n una am!liaci n !ara el !rocesamiento de los valores %,LL. Si la o!ci n 3%SIW%,LLS est0 desactivadaF las com!araciones entre los valores %,LLF como %,LL [ %,LLF da como resultado &/,E. Las com!araciones entre %,LL y cualIuier valor de datos da como resultado B3LSE.

Miscelaneo

U.(-(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. 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. La utili:aci n de comentarios 4ace m0s (0cil el mantenimiento (uturo del c digo del !rograma. 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. Los

comentarios se !ueden usar !ara descri"ir c0lculos com!licados o !ara e1!licar determinado m=todo de !rogramaci n. Microso(tj SQL Serverk admite dos ti!os de caracteres !ara indicar comentariosJ 7do"le gui n9. 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. &odo lo Iue se encuentre entre los dos guiones y el (inal de la l5nea es !arte del comentario. 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. LQ q QL 7!ar de caracteres "arra diagonal y asterisco9. 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. &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. 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. %ing@n otro car0cter de comentario de"e a!arecer en ninguna l5nea del comentario. Los comentarios LQ QL de varias l5neas no !ueden dividirse en varios lotes. El comentario com!leto de"e estar contenido en un @nico lote. 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. )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. 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. Por e?em!loF la siguiente secuencia de comandos contiene errores de sinta1isJ
USE $orth0 'd K! SELECT / %R!M E=6&oy""s ;/ Th" K! ' th s co=="'t caus"s SELECT / %R!M Products K!

t to 1" 1rAc"6tar"'

' ha&A /;

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! ;/ % rst & '" oA a =u&t 6&"<& '" co=="'t( S"co'd & '" oA a =u&t 6&<& '" co=="'t( /; SELECT / %R!M Products K! << Us 'H a co=="'t ' a Tra'sact<SLL stat"="'t << dur 'H d aH'os s(

SELECT E=6&oy""#D3 ;/ % rst$a="3 /; 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. 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. %o 4ay longitud m01ima !ara un comentario dentro de un lote. ,n comentario se !uede com!oner de una o m0s l5neas.
U.(-(N1$ )1-12$1& '-1%# $#&#$%1,1&

Microso(tj SQL Serverk reserva ciertas !ala"ras clave !ara su uso e1clusivo. Por e?em!loF la utili:aci n de la !ala"ra clave D,MP o -3)D,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 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. %ing@n o"?eto de la "ase de datos de"e reci"ir un nom"re Iue coincida con una !ala"ra clave reservada. Si e1iste tal nom"reF siem!re se de"e 4acer re(erencia al o"?eto usando identi(icadores delimitados. 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. 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. ,se una convenci n de nom"res Iue evite la utili:aci n de !ala"ras clave reservadas. 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,P !ara todas las "ases de datos de(inidas !or el usuario se !uede llamar (cXu%.

Sinnimos

Los ti!os de datos sin nimos se incluyen !or com!ati"ilidad con SQLG92.

Sinni#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