You are on page 1of 42

Manual Prctico de SQL

ORIENTADO A SQL Server 2012 Preparado por: Pedro P. Picn Granados pedrop !"o#$ai%.co$

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

)NDI*E
INTROD+**I,N PASOS PARA I&PLE&ENTAR +NA .D *REAR +NA .D SENTEN*IA *REATE LIGAD+RAS ELI&INA*I,N DE TA.LAS SENTEN*IA ALTER *ONS+LTAS SI&PLES SENTEN*IA SELE*T 5 6RO& *OL+&NAS *AL*+LADAS *ONDI*IONES DE .7SQ+EDA ORDENA*I,N DE RES+LTADOS 8ORDER .9: *ONS+LTAS A &7LTIPLES TA.LAS 8INNER ;OIN: *ONS+LTAS RES+&EN *ON*L+SI,N .I.LIOGRA6)A / 0 1 2 13 13 14 12 21 22 2/ 20 -0 -2 --

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

INTROD+**I,N. SQL (Lenguaje de Consulta Estructurado) E% SQL 8S#r'c#'re Q'er< Lan 'a e:= es 'n %en 'a>e de cons'%#a es#r'c#'rado es#a?%ecido c%ara$en#e co$o e% %en 'a>e de a%#o nive% es#(ndar para sis#e$as de ?ase de da#os re%aciona%es. Los responsa?%es de p'?%icar es#e %en 'a>e co$o es#(ndar= @'eron precisa$en#e %os encar ados de p'?%icar es#(ndar= %a ANSI 8Ins#i#'#o A$ericano de Nor$a%iAacin: < %a ISO 8or anis$o In#ernaciona% de Nor$a%iAacin:. Es por %o an#erior B'e es#e %en 'a>e %o vas a encon#rar en c'a%B'iera de %os D.&S re%aciona%es B'e eCis#en en %a ac#'a%idad= por e>e$p%o= ORA*LE= S9.ASES= SQL SERDER por $encionar a% 'nos.

E% SQL a r'pa #res #ipos de par#ic'%ares= en %os si 'ien#es %en 'a>es:

sen#encias

con

o?>e#ivos

Len 'a>e de De@inicin de Da#os 8DDL= Da#a De@ini#on Lan 'a e: Len 'a>e de &anip'%acin de Da#os 8D&L= Da#a &ana e$en# Lan 'a e: Len 'a>e de *on#ro% de Da#os 8D*L= Da#a *on#ro% Lan 'a e:

SQL SERVER 2012

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

E% SS&S es 'na ap%icacin in#e rada de es#in < desarro%%o de cons'%#as con $'c"as carac#erEs#icas para eCp%orar < #ra?a>ar con %as ?ases de da#os "ospedadas en SQL Server o SQL AA're es#ando %a $is$a ?asada ?a>o %a @i%oso@Ea de #ra?a>o de% en#orno pro ra$(#ico de Dis'a% S#'dio. A #ravFs de %os r(@icos si 'ien#es= se %es eCpondr( vis'a%$en#e so?re c$o acceder a% $is$o= e in resar va%id(ndose con 'n 's'ario re is#rado en dic"o servidor para eCp%orar #odos %os o?>e#os B'e posee:

Grfico No. 1 5 Acceder a% en#orno de SS&S desde e% ?o#n Inicio

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Grfico No. 2 5 Dis'a%iAar e% sp%as" de &S SQL Server 2012

Grfico No. 3 5 In resar a% en#orno de SS&S d(ndo%e c%icG a% ?o#n H*onnec#I "a?iendo asi nado e% #ipo de servidor= s' no$?re < e% $odo de a'#en#icacin con e% c'a% se desea #ra?a>ar

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Grfico No. 4 5 En#orno r(@ico de% SS&S Es#e en#orno se ri e por %a con@i 'racin B'e %e "a<a$os es#a?%ecido desde e% $enJ HToo%sI= s'?$enJ HOp#ionsKI= %os c'a%es se en'nciaran en %os si 'ien#es r(@icos a con#in'acin:

Grfico No.

5 &enJ Too%s= S'?$enJ Op#ionsK

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Grfico No. ! 5 Opciones de con@i 'racin de %a in#er@aA r(@ica de SS&S Las opciones $(s represen#a#ivas B'e de?e$os #ener en c'en#a desde $i p'n#o de vis#a son %as si 'ien#es:

Grfico No. " 5 Opcin: *on#ro% de versiones Es#a opcin nos per$i#e co$p%e#ar %as #areas de con#ro% de cdi o @'en#e "a?i#'a%es $edian#e Tea$ 6o'nda#ion co$o son %as si 'ien#es:

E%e ir despro#e er #odos %os arc"ivos de $anera prede#er$inada. E%e ir ac#ivar o desac#ivar $ensa>es c'ando se es#(n co$pro?ando arc"ivos de en#rada o de sa%ida. 4

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

*on@i 'rar e% servidor ProC< para $e>orar e% rendi$ien#o de 'n eB'ipo de desarro%%o re$o#o en#re o#ros. Si desea conocer $as so?re Tea$ 6o'nda#ion= @avor in resar aB'E.

Grfico No. # 5 *on@i 'rar e% edi#or de cdi o Es#a p( ina nos per$i#e ca$?iar e% co$por#a$ien#o prede#er$inado de% edi#or para 'n %en 'a>e de desarro%%o de#er$inado o para #odos e%%os.

Grfico No. $ 5 *on@i 'rar %a vis'a%iAacin de res'%#ados de da#os en %a e>ec'cin de cdi o +#i%ice es#a p( ina para especi@icar %as opciones de vis'a%iAacin de 'n con>'n#o de res'%#ados de cons'%#a en @or$a#o de c'adrEc'%a. 1

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Grfico No. 1% 5 *on@i 'rar %as opciones de% diseLador #an#o de ?ases de da#os asE co$o de #a?%as Acceda a es#as opciones para de#er$inar e% co$por#a$ien#o de% diseLador de o?>e#os en SS&S. Si deseas o?#ener $(s in@or$acin so?re #odas %as opciones= p'edes in resar aB'E para aprender $(s pro@'nda$en#e so?re %as $is$as. *on %os #picos an#erior$en#e en'nciados= nos da$os c'en#a B'e %a in#er@aA r(@ica de% SS&S p'ede a<'darnos a ser $(s prod'c#ivo a %a "ora de #ra?a>ar con e% $is$o. HExplorar una instancia de SQL Server utilizando el Explorador de ObjetoH A% $o$en#o de conec#arnos a 'na ins#ancia de SQL Server o SQL AA're= pode$os '#i%iAar e% ECp%orador de O?>e#os para ad$inis#rar ins#ancias < ?ases de da#os. La $is$a= es 'na de %as #an#as ven#anas pane%es disponi?%es desde e% $enJ HDieMI.

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Gr(@ico No. 11 5 Opcin de $enJ HDieMI Es#e pane%= nos provee a s' veA= in#eraccin direc#a con cien#os o?>e#os de da#os co$o %o son: Ta?%as= Dis#as < Procedi$ien#os A%$acenados en#re o#ros. En cada 'na de %as opciones $os#radas desde e% $enJ con#eC#'a% so?re cada 'na= nos per$i#e desp%e ar sensi#iva$en#e co$andos B'e inc%'<en eneradores de cons'%#as asE co$o scrip#s TNSQL donde se de@inen %os $is$os.

Grfico No. 12 5 Pane%= ECp%orador de O?>e#os

10

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Grfico No. 13 5 Opcin sensi#ivo= crear scrip# de #a?%a

Grfico No. 14 5 Opcin sensi#ivo= crear scrip# de @'nciones

11

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

A con#in'acin se descri?en cada 'no de %os %en 'a>es:


Len 'a>e de De@inicin de Da#os 8DDL= Da#a De@ini#on Lan 'a e:

Gr'po de sen#encias de% SQL B'e sopor#an %a de@inicin < dec%aracin de %os o?>e#os de %a ?ase de da#os. O?>e#os #a%es co$o: %a ?ase de da#os $is$a8DATA.ASE:= %as #a?%as8TA.LE:= %asDis#as 8DIEO:= %os Endices 8INDEP:= %os procedi$ien#os a%$acenados 8PRO*ED+RE:= %os disparadores 8TRIGGER:=

12

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Re %as 8R+LE:= 8DE6A+LT:. *REATE= ALTER DROP <

Do$inios

8Do$ain:

<

Da%ores

por

de@ec#o

Len 'a>e de &anip'%acin de Da#os 8D&L= Da#a &ana e$en# Lan 'a e:

Gr'po de sen#encias de% SQL para $anip'%ar %os da#os B'e es#(n a%$acenados en %as ?ases de da#os= a nive% de @i%as 8#'p%as: <Qo co%'$nas 8a#ri?'#os:. 9a sea B'e se reB'iera B'e %os da#os sean $odi@icados= e%i$inados= cons'%#ados o B'e se a re aren n'evas @i%as a %as #a?%as de %as ?ase de da#os. INSERT= +PDATE= DELETE SELE*T
Len 'a>e de *on#ro% de Da#os 8D*L= Da#a *on#ro% Lan 'a e:

<

Gr'po de sen#encias de% SQL para con#ro%ar %as @'nciones de ad$inis#racin B'e rea%iAa e% D.&S= #a%es co$o %a a#o$icidad < se 'ridad. *O&&IT TRANSA*TION= ROLL.A*R TRANSA*TION= GRANT REDORE

1-

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Pasos para i$p%e$en#ar 'na ?ase de da#os:


PASO Descripcin Definir en el disco duro, el rea fsica que contendr las tablas de la base de datos. Sentencia SQL --> !"A#" DA#A$AS". S #e%a & de este %anual rear las diferentes tablas de la base de dato. Sentencia SQL --> !"A#" #A$L" #e%a '.( del contenido de este curso. )nsertar las filas de las diferentes tablas, sin *iolar la inte+ridad de datos. Sentencia SQL --> ),S"!# ),#O. #e%a -.'.& del contenido de este curso. Actuali.ar los datos que ca%bien con el tie%po en las diferentes tablas. Sentencia SQL --> /PDA#". #e%a -.'.( del contenido de este curso. "li%inar las filas que 0a no se requieran en las diferentes tablas. Sentencia SQL --> D"L"#" #e%a -.'.- del contenido de este curso. !eali.ar las consultas deseadas a las tablas de la base de datos a tra*1s de la poderosa sentencia de consultas del SQL, Lla%ada S"L" #. #e%a '.- 2asta '.3 del contenido de este curso. Dar no%bre a las consultas. "laboradas en el paso ,o.3 cuando se requiera ocultar el dise4o 0 colu%nas de las tablas a tra*1s de la creacin de *istas l+icas. Sentencia SQL ----> !"A#" 5)"6. #e%a -.7 del contenido de este curso.

1 2 3 4 5 6

13

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

*rear 'na ?ase de da#os: Sen#encia SQL *REATE DATA.ASE SINTAPIS:


crea#e da#a?ase nombre_basededatos ON PRI&AR9 8 na$e T nombre_basededatos Uda#a= @i%ena$e T Vc:W.DTRANSITO.$d@V= QXDireccin donde se creaXQ siAe T -$?= QXTa$aLo de %a ?ase de da#osXQ $aCsiAe T 4$?= QXTa$aLo de $aCi$o de %a ?ase de da#osXQ @i%e roM#" T 2 $? QXcreci$ien#o de %a ?ase de da#osXQ : %o on 8 na$e T .DTRANSITOU%o = @i%ena$e T Vc:W.DTRANSITO.%d@V= siAe T -$?= $aCsiAe T 4$?= @i%e roM#" T 2 $? : Tipo de archivo Archivo de datos principal Archivo de datos secundario Archivo de registro de transacciones

Extensin de nombre de archivo recomendada .mdf .ndf .ldf

An#es de proceder a crear %a ?ase de da#os de?e$os a v e r i ' a r si eCis#e o#ra ?ase de da#os DENTAS para ?orrar%a < crear %a n'es#ra. Rec'erde no '#i%iAar es#as sen#encias en 'n servidor de prod'ccin de SQL SERDER. *orra e% si 'ien#e cdi o en e% Q'er< Ana%<ser de SQLSERDER. I6 D.UID8VDENTASV: IS NOT N+LL .EGIN DROP DATA.ASE DENTAS END A con#in'acin %a sen#encia *REATE DATA.ASE= B'e 'sare$os para %a creacin de% espacio B'e con#endr( %a ?ase de da#os Den#as es e% si 'ien#e

1/

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

CREATE DATABASE VENTAS ON PRIMARY ( NAME=VENTAS_data, FILENAME='c:\VENTAS.md ', SI!E="MB, MA#SI!E=$%MB, FILE&RO'T(=$MB ) LO& ON ( NAME=VENTAS_*+,, FILENAME='c:\VENTAS.*d ', SI!E="MB, MA#SI!E=$%MB, FILE&RO'T(=$MB ) En e% e>e$p%o B'e se aca?a de presen#ar se crea 'n arc"ivo principa% de eC#ensin $d@ de #a$aLo inicia% de / &.= c'ando es#e espacio se a o#e= es#e se eCpandir( en 1 &. $(s para #ener espacio %i?re < $e#er $(s re is#ros o #a?%as < c'ando se a o#e n'eva$en#e e% arc"ivo @Esico de 1&.= Fs#e se eCpandir( en 1 &. n 'e va $en # e < asE en %o s'cesivo "as#a a%canAar e% $(Ci$o 10 &. <a de a"E no crecer( $(s.

10

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Sen#encia *REATE Den#ro de% Len 'a>e de De@inicin 8DL: de% SQL= %a sen#encia *REATE per$i#en %a de@inicin o creacin de $'c"os o?>e#os de %a ?ase de da#os #a%es co$o: #a?%as 8esB'e$as:= Endices= vis#as= do$inios= %i ad'ras de in#e ridad < procedi$ien#os. En es#a opor#'nidad vere$os %as sen#encias correspondien#es a %a creacin de %os esB'e$as o %o B'e es %o $is$o %as #a?%as B'e con#endr(n %os da#os de %a ?ase de da#os= La sen#encia *REATE TA.LE. La sen#encia *REATE TA.LE= de@ine e% no$?re de %a #a?%a= %as co%'$nas con s' #ipo de da#os= %as %i ad'ras de in#en ridad B'e vi i%an e% va%or B'e se 'arde co$o da#o en %as co%'$nas o a#ri?'#os sean %%aves o no.

Sin#aCis: *REATE TA.LE no$?reU#a?%a 8 ca$po1 #ipo da#o YN+LLQNOT N+LLZ [ *\E*R8eCpresinL ica: [YDE6A+LT eCpresin*ons#an#eZ= ca$po2 #ipo da#o YN+LLQNOT N+LLZ[ *\E*R 8eCpresinL ica: [YDE6A+LT eCpresin*ons#an#e Z= ca$poNN= PRI&AR9 RE98ca$poU%%ave:= 6OREIGN RE9 8ca$poU%%ave: RE6EREN*ES #a?%a2 8ca$poU%%aveN#a?%a2: :

14

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Li ad'ras
Es#o de %as %i ad'ras es $'< i$por#an#e B'e %e presen#en a#encin. A<'da a B'e de>es %a vi i%ancia de %a en#rada de da#os a% D.&S < no a% B'e pro ra$a %a ap%icacin B'e a veces p'ede darse B'e no "a a #a% va%idacin en %a en#rada de %os da#os. Es#o #iene %a ven#a>a de a"orrar %Eneas de cdi os en %os pro ra$as < no #e B'e se i$p%e$en#an en %a sen#encia SQL *REATE TA.LE.
Tipo: Integridad de Dominio o Columna Especifica un conjunto de valores ue son v!lidos a ingresar sobre una columna espec"fica para una tabla de la base de datos. Esta integridad se verifica a trav#s de una la validacin de los valores de datos ue se ingresan $ el tipo de los datos a introducir %num#rico& alfanum#rico& alfab#tico& etc.'. Descripcin Cl!usula )*+ DE/A0+T ,or ejemplo& s" las reglas del negocio dicen ue no se contratan a menores de edad& en la columna EDAD en la tabla E1,+EAD2 se restringe a ue si una edad para un empleado ue ingresa no es se3alada expl"citamente& el D41) asigne 56 ue es la ma$or"a de edad.

Tipos de (estriccin

C(EATE TA4+E E1,+EAD2 %ID7E1,+ int ,rimar$ 8E9& EDAD int not null default 56' C;EC8 Espec"fica los valores de datos ue el D41) ,or :alidacin acepta le sean C(EATE TA4+E E1,+EAD2 % ID I.T Ingresados para una ,(I1A(9 8E9& EDAD I.T DE/A0+T 56& )E<2 columna. :A(C;A(%5' C;EC8 % )E<2 I. %=/=&=1=' ' ' ,or ejemplo& la columna )E<2& solo permitir! el ingreso del car!cter / o 1. (E/E(E.CE) C(EATE TA4+E ?24) %job7id int primar$ @e$ not null& func7id int uni ue' C(EATE TA4+E E1,+EAD2 % ID I.T ,(I1A(9 8E9& EDAD I.T DE/A0+T 56& )E<2 :A(C;A(%5' C;EC8 % )E<2 I. %=/=&=1=' ' & .27/0.C int (E/E(E.CE) jobs%func7id'' El valor de lo ue entre en la c o l u m n a .27/0.C en la tabla E1,+EAD2 deber! ser uno de los valores contenido en la columna /0.C7ID en la Tabla ?24).

Esta restriccin asigna un valor espec"fico a una columna c u a n d o el valor para ello no ha$a sido ,or Defecto expl"citamente proporcionado para tal columna en una sentencia -I.)E(T- o de adicin de un nuevo registro en la tabla.

Especifica los valores de datos ue son aceptables para actuali>ar una columna $ ue est!n basados en ,or (eferencia valores de datos locali>ados en una columna de otra tabla.

11

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Tipo: Integridad de Entidad o Tabla


Espec"fica ue en una tabla o entidad& todas sus filas tenga un identificador Anico ue diferencie a una fila de otra $ tambi#n ue se estable>can columnas cu$o contenido es un valor Anico ue las hace llaves candidatas para un futuro como por ejemplo: nAmero de c#dula& nAmero de seguro social o cuenta de eB mail. Descripcin Este tipo de restriccin se aplica a todas las filas permitiendo ue Exista un identificador& ue se conoce como llave primaria $ ue se asegura ue los usuarios no introdu>can valores duplicados. Adem!s asegura ue se cree un "ndice para mejorar el desempe3o. +os valores nulos no est!n permitidos ,ara este tipo de restriccin. Cl!usula )*+

Tipos de (estriccin

,(I1A(9 8E9
C(EATE TA4+E C+IE.TE %.01C+I I.T not null& .21C+I char%CD' not null& DI(C+I char%CD'& /A< I.T& E71AI+ C;A(%CD' 0.I*0E not null& )A+D7D7CD DECI1A+ %5D&E'& )A+D7C57FD DECI1A+ %5D&E'& )A+D7F57GD DECI1A+ %5D&E'& primar$ @e$ %.01C+I' ' En este ejemplo& .01C+I corresponder! a ser la llave primaria de la tabla C+IE.TE.

,or +lave ,rimaria

,or :alor 0nico

Con esta restriccin 0.I*0E se previene la duplicacin de C(EATE TA4+E C+IE.TE %.01C+I I.T not valores en columnas null& ue tienen valor Anico .21C+I char%CD' not null& DI(C+I char%CD'& $ ue no son llave /A< I.T& E71AI+ C;A(%CD' 0.I*0E not primaria pero ue null& )A+D7D7CD DECI1A+ %5D&E'& pueden ser una llave )A+D7C57FD DECI1A+ %5D&E'& )A+D7F57GD alternativa o DECI1A+ %5D&E'& primar$ @e$ %.01C+I' ' candidata para el futuro. Asegura ue se cree %,or parte del En este ejemplo& E71AI+ correponder! a D41)' un "ndice para ser una columna de valores Anico en la tabla C+IE.TE mejorar el desempe3o. 9 al igual ue las llaves primarias& no se le est! permitido ue se introdu>can valores nulos.

12

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Tipo: Integridad (eferencial


+a Integridad (eferencial asegura ue las relaciones ue existe entre llave primaria %en la tabla referenciada' $ la llave for!nea %en las tablas referenciantes' ser!n siempre mantenidas. 0na fila o registro en la tabla referenciada %tabla donde reside la llave primaria' no puede ser borrada o su llave primaria cambiada si existe una fila o registro con una llave for!nea %en la tabla referenciante' ue se refiere a esa llave primaria. Descripcin Cl!usula )*+

Tipos de (estriccin

,or +lave /or!nea

En esta restriccin se /2(EIH. 8E9 define una columna o combinacin de C(EATE TA4+E ,EDID2 %.01,ED I.T not columnas en las null ,(I1A(9 8E9& cuales su valor debe .01C+I I.T not null& /EC;A7,ED corresponder al valor DATETI1E& de la llave primaria en T2T7DE)C DECI1A+ %5D&E'& la misma u en otra /2(EIH. 8E9 %.01C+I' (E/E(E.CE) tabla. C+IE.TE%.01C+I' ' En este ejemplo de la creacin de la tabla ,EDID2& la columna .01C+I correponder! a ser la llave for!nea ue hace referecia a la llave primaria .01C+I %no necesariamente deben llamarse igual las columnas pero deben tener igual tipo de datos' en la tabla C+IE.TE

20

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

A con#in'acin se $'es#ran %as sen#encias *REATE TA.LE B'e crean %as #a?%as de %a .ase de Da#os DENTAS= de %a c'a% <a se cre e% (rea a% principio de es#e $an'a%. Es $'< i$por#an#e e% orden en B'e se crean %as #a?%as. Se de?e a B'e no de?e vio%arse %a re@erencia cr'Aada en#re %as %i ad'ras de in#e ridad de% #ipo re@erencia% 8es decir %%ave pri$aria con @or(neas:. Por e>e$p%o no p'ede crear %a #a?%a de PEDIDO pri$ero B'e %a #a?%a de c%ien#e= p'es %a #a?%a de PEDIDO "ace re@erencia a *LIENTE. Pri$ero crear %as #a?%as B'e so%o #ienen %%ave pri$aria < %'e o %as #a?%as B'e inc%'<en %%aves @or(neas. En n'es#ro caso= pri$ero crea$os a %as #a?%as: *LIENTE= ARTI*+LO < DENDEDOR < desp'Fs a PEDIDO < a DETALLEUPED.

21

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

reacin de #abla liente !"A#" #A$L" L)",#" 8,/9 L) ),# not null, ,O9 L) :A!8-;< not null, D)! L) c2ar8-;<, =A> ),#, "?9A)L :A!8-;< D"=A/L# 8@Desconocido@<, SALD?;?-; D" )9AL 8&;,(<, SALD?-&?3; D" )9AL 8&;,(<, SALD?3&?A; D" )9AL 8&;,(<, pri%ar0 Be0 8,/9 L)< < reacin de #abla 5endedor !"A#" #A$L" 5",D"DO! 8 OD5",D ),# not null, ,O95",D c2ar8(;< not null,AP"LL5",D c2ar8(;< not null, D)!5",D c2ar8-;<, #"L5",D ),#, "?9A)L :A!8-;< D"=A/L#8@Desconocido@<, /O#A D" )9AL 8&;,(<, 5",#AS D" )9AL 8&;,(<, pri%ar0 Be0 8 OD5",D< < reacin de #abla Artculo !"A#" #A$L" A!#) /LO 8,/9A!# c2ar8'< not null P!)9A!C D"C, D"S !)P )O, :A!8-;<, P!" )O D" )9AL 8&;,(< ,O# ,/LL :" D 8P!" )O >E ;.;;<, ">)S#", )A ),#, A#"FO!)A?A!# :A! 8&7<< reacin de #abla Pedido !"A#" #A$L" P"D)DO 8,/9P"D ),# not null P!)9A!C D"C, ,/9 L) ),# not null, =" :A?P"D DA#"#)9", #O#?D"S D" )9AL 8&;,(<, =O!")F, D"C 8,/9 L)< !"="!", "S L)",#"8,/9 L)< , =O!")F, D"C 8 OD5",D< !"="!", "S 5",D"DO!8 OD5",D<< reacin de #abla Detalle?Ped !"A#" #A$L" D"#ALL"?P"D 8,/9P"D ),# not null, ,/9A!# c2ar 8'< not null, A,#)DAD ),# :" D 8 A,#)DAD >E ;<, P!)9A!C D"C 8,/9P"D,,/9A!#<, =O!")F, D"C 8,/9P"D< !"="!", "S P"D)DO8,/9P"D<, =O!")F, D"C 8,/9A!#< !"="!", "S A!#) /LO 8,/9A!#< <

22

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

E%i$inacin de Ta?%as:
La sen#encia para e%i$inar 'na #a?%a < por ende #odo %os o?>e#os asociados con esa #a?%a co$o: %as vis#as= disparadores= e#c.= DROP TA.LE= donde r es e% no$?re de 'na #a?%a eCis#en#e.

DROP TA.LE

r
ARTI*+LOUPANA&A=

Por e>e$p%o si desea$os e%i$inar a %a #a?%a revise$os "a?er si es#a <a eCis#e= de %a si 'ien#e $anera SELE*T X @ro$ ARTI*+LOUPANA&A

Pos#erior$en#e 'na veA veri@icada B'e %a #a?%a eCis#e= se procede a ?orrar %a #a?%a= escri?iendo %o si 'ien#e en %a in#er@ace de cons'%#as de% SQL:

Sen#encia ALTER
Desp'Fs B'e 'na #a?%a "a sido '#i%iAada d'ran#e a% Jn #ie$po= %os 's'arios s'e%en desc'?rir B'e desean a%$acenar in@or$acin adiciona% con respec#o a %as #a?%as. Por e>e$p%o en %a ?ase de da#os DENTAS= se podrEa desear: ALadir e% no$?re < nJ$ero de 'na persona de con#ac#o a cada @i%a de %a #a?%a *LIENTES para con#ac#ar a %os c%ien#es. ALadir 'na co%'$na de p'n#o de reorden $Eni$o en %a #a?%a ARTI*+LO= para B'e %a ?ase de da#os p'eda a%er#ar a'#o$(#ica$en#e c'ando %a can#idad o s#ocG de 'n prod'c#o en par#ic'%ar es#( por de?a>o de %o p#i$o para %a ven#a. Por %o enera%= es#a sen#encia ALTER TA.LE se '#i%iAa so?re #a?%as B'e <a poseen desde cien#os a $i%es de @i%as por ser #a?%as de 'n s i s # e $ a s de .ase de Da#os B'e <a es#( en prod'ccin.

2-

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Los ca$?ios B'e se p'eden rea%iAar con %a sen#encia SQL ALTER TA.LE son 8ver e>e$p%o con %a @i 'ra::

Tabla para ejemplos de sentencia A+TE( TA4+E. 1. ALadir 'na de@inicin de %a co%'$na de 'na #a?%a. P'ede crearse con va%ores n'%os o va%ores ALTER TA.LE no$?reUdeU%aU#a?%a ADD no$?reUdeUco%'$naUn'eva TIPOUDEUDATO N+LL Y*ONSTRAINT no$?reUdeUn'evaUres#riccion *\E*R Q DE6A+LTZ E>e$p%o: ALTER TA.LE T1 ADD a0 DAR*\AR 8-0: N+LL 2. E%i$inar 'na co%'$na de %a #a?%a. Pero an#es de s' e%i$inacin de?en ser e%i$inados por ALTER TA.LE #odas %as res#ricciones B'e es#Fn de@inidas so?re es#a co%'$na. E>e$p%o: ALTER TA.LE T1 DROP *OL+&N a3 -. E%i$inar %a de@inicin de: %%ave pri$aria= @or(nea o res#ricciones de %i ad'ras de in#e ridad 8c"ecG:= eCis#en#es para 'na #a?%a. Es#a accin no e%i$ina %a a %a co%'$na con s's va%ores= e%%a per$anece #a% c'a% co$o es#a= so%o se e%i$ina s' de@inicin. Es#e procedi$ien#o varia de D.&S= con SQL SEDER= Pri$ero se de?e averi 'ar e% no$?re de %a res#riccin o %i ad'ra de in#e ridad 8*ONSTRAINT: e%i$inar se e>ec'#a e% procedi$ien#o a%$acenado SPU\ELP no$?reUdeUTa?%a < en e% res'%#ado se ?'sca en %a co%'$na cons#rain#Una$e a %a derec"a de cons#rain#U#<pe para sa?er e% no$?re B'e e% D.&S %e p'so a %a res#riccin de %%ave pri$aria < %'e o se e>ec'#a %a sen#encia ALTER TA.LE con e% no$?re de %a de@inicin de %%ave pri$aria a e%i$inar. E>e$p%o: ALTER TA.LE PR T1 n'$eroB'easi nae%D.&S T1 DROP *ONSTRAINT

Es#o e%i$ina c'a%B'iera %i ad'ra de in#e ridad #ra#ada en e% #e$a 3.2.1. Para veri@icar a% e>ec'#ar n'eva$en#e SPU\ELP no$?reUdeUTa?%a= en e% res'%#ado <a no sa%e en cons#rain#U#<pe e% no$?re de %a %%ave pri$aria.

23

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

3. De@inir 'na %%ave pri$aria para 'na #a?%a. La co%'$na8s: a %a c'a% se %e dar( es#a responsa?i%idad de?e con#ener previa$en#e va%ores Jnicos por @i%a. E>e$p%o: ALTER TA.LE T1 ADD PRI&AR9 RE9 8a1=a2:

/. De@inir 'na n'eva %%ave @or(nea para 'na #a?%a. La co%'$na a de@inir co$o %%ave @or(nea de?e con#ener previa$en#e va%ores B'e corresponden a %a %%ave pri$aria de o#ra #a?%a. Es si$i%ar a% descri#o en %%ave pri$aria= so%o B'e %a pa%a?ra c%ave reservada es ADD 6OREIGN RE9 . 0. Se p'ede "a?i%i#ar o in"a?i%i#ar %os disparadores 8#ri er: en 'na #a?%a. ALTER TA.LE no$?reUdeU%aU#a?%a ENA.LE TRIGGER no$?reUdeU#ri er ALTER TA.LE no$?reUdeU#ri er no$?reUdeU%aU#a?%a DISA.LE TRIGGER

La persona B'e p'ede rea%iAar es#a operacin de a%#erar %a #a?%a p'ede ser: e% D.A o e% creador de %a #a?%a= ' o#ra persona B'e e% creador o D.A "a<a a'#oriAado. Para %a J%#i$a si#'acin en B'e a 'na persona se %e o#or a e% per$iso en %a operacin= e% 's'ario= de?e ca%i@icar e% no$?re de %a #a?%a con e% no$?re de s' creador por de%an#e < a%#erar %a de@inicin de %a #a?%a de o#ro 's'ario= por e>e$p%o: ALTER TA.LE no$?red'eLo.no$?re#a?%a

2/

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Consultas Si&'les
E% coraAn o poder de% Len 'a>e SQL es e% poder "acer cons'%#as de c'a%B'ier #ipo a %a ?ase de da#os en @or$a no proced'ra%. La sen#encia SELE*T es $'< poderosa < a$p%ia$en#e rica en s's c%('s'%as < varian#es per$i#iendo %a capacidad de a#ender en poco #ie$po a cons'%#as co$p%e>as so?re %a ?ase de da#os. Es#( en e% especia%is#a desarro%%ador de ap%icaciones conocer%o a pro@'ndidad para eCp%o#ar %as ?ondades < vir#'des. Gracias a es#a sen#encia es B'e se p'eden rea%iAar #odas %as operaciones de% A% e?ra Re%aciona%= #ra#adas en %a seccin -.2 < -.- de% $d'%o III. En es#a seccin vere$os %a sin#aCis de co$o se '#i%iAa.

La sen#encia SELE*T= o?#iene @i%as de %a ?ase de da#os < per$i#e rea%iAar %a se%eccin de 'na o varias @i%as o co%'$nas de 'na o varias #a?%as. La sin#aCis co$p%e#a de %a ins#r'ccin SELE*T es co$p%e>a= pero %a vo< res'$ir co$o si 'e 8%os corc"e#es c'adrados indican B'e %a c%('s'%a no es o?%i a#oria:: SELE*T no$?res de %as co%'$nas YINTO n'eva Ta?%a des#ino para res'%#ados de% se%ec#UZ 6RO& ori enTa?%a YO\ERE condicin de .JsB'edaZ YGRO+P .9 no$?res de co%'$nas por %a c'a% A r'parZ Y\ADING condicin.JsB'eda para Gro'p .< Z YORDER .9 no$?re de co%'$nas YAS* [ DES*Z Z

Ta$?iFn se p'ede 'nir es#as sen#encias con o#ras por e% operador +NION en#re cons'%#as para co$?inar s's res'%#ados en 'na so%a #a?%a de res'%#ados sin no$?re.

20

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Dea$os ca%es son %as @'nciones de cada 'na de %as c%('s'%as de %a sen#encia SELE*T. La c%('s'%a SELE*T: Se 'sa para %is#ar %as co%'$nas de %as #a?%as B'e se desean ver en e% res'%#ado de 'na cons'%#a. Ade$(s de %as co%'$nas se p'eden %is#as co%'$nas a ca%c'%ar por e% SQL c'ando ac#'F %a sen#encia. Es#a c%('s'%a no p'ede o$i#irse. La c%('s'%a 6RO&: Lis#a %as #a?%as B'e de?en ser ana%iAadas en %a eva%'acin de %a eCpresin de %a c%('s'%a O\ERE < de donde se %is#ar(n %as co%'$nas en'nciadas en e% SELE*T. Es#a c%('s'%a no p'ede o$i#irse. La c%('s'%a O\ERE: es#a?%ece cri#erios de se%eccin de cier#as @i%as en e% res'%#ado de %a cons'%#a racias a %as condiciones de ?JsB'eda. Si no se reB'iere condiciones de ?JsB'eda p'ede o$i#irse < e% res'%#ado de %a cons'%#a ser(n #odas %as @i%as de %as #a?%as en'nciadas en e% 6RO&. La c%('s'%a GRO+P .9: especi@ica 'na cons'%#a s'$aria. En veA de prod'cir 'na @i%a de res'%#ados por cada @i%a de da#os de %a ?ase de da#os= 'na cons'%#a s'$aria a r'pa #odas %as @i%as si$i%ares < %'e o prod'ce 'na @i%a s'$aria de res'%#ados para cada r'po de %os no$?res de co%'$nas en'nciado en es#a c%('s'%a. En o#ras pa%a?ras= es#a c%('s'%a per$i#ir( a r'par 'n con>'n#o de co%'$nas con va%ores repe#idos < '#i%iAar %as @'nciones de a re acin so?re %as co%'$nas con va%ores no repe#idas. Es#a c%('s'%a p'ede o$i#irse. La c%('s'%a \ADING: %e dice a% SQL B'e inc%'<a s%o cier#os r'pos prod'cidos por %a c%('s'%a GRO+P .9 en %os res'%#ados de %a cons'%#a. A% i 'a% B'e %a c%('s'%a O\ERE= '#i%iAa 'na condicin de ?JsB'eda para especi@icar %os r'pos deseados. La c%('s'%a \ADING es %a encar ada de condicionar %a se%eccin de %os r'pos en ?ase a %os va%ores res'%#an#es en %as @'nciones a re adas '#i%iAadas de?idas B'e %a c%('s'%a O\ERE condiciona so%o para %a se%eccin de @i%as individ'a%es. Es#a c%('s'%a p'ede o$i#irse. La c%('s'%a ORDER .9: per$i#ir( es#a?%ecer %a co%'$na o co%'$nas so?re %as c'a%es %as @i%as res'%#an#es de %a cons'%#a de?er(n ser ordenadas. Es#a c%('s'%a p'ede

24

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Sentencia

SELEC()*+,-

E% '#i%iAar %a sen#encia SELE*T= con es#as dos c%('s'%as SELE*T N 6RO&= $'es#ra co$o res'%#ado a #odas %as @i%as eCis#en#es en %as #a?%as especi@icadas en e% 6RO&. E>e$p%o ] 1: Se%eccionar #odas %as co%'$nas < @i%as de %a #a?%a *LIENTE SELE*T X

6RO& *LIENTE

Da co$o res'%#ado 'n #o#a% de 1 @i%as con %as 4 co%'$nas B'e posee %a #a?%a *LIENTE.

E>e$p%o ] 2:
*LIENTE

Se%eccionar co%'$nas: no$c%i <

eU$ai% de %a #a?%a

SELE*T N+&*LI= NO&*LI= EN&AIL 6RO& *LIENTE


Da co$o res'%#ado 'n #o#a% de 1 @i%as con so%o - co%'$nas.

E>e$p%o ] -: Es#e e>e$p%o se%ecciona %as

co%'$nas < %as $'es#ra con e% #E#'%o especi@icado en AS= es decir con 'n a%ias. A N+&*LI %o $'es#ra co$o N+&ERO DE *LIENTE < NO&*LI %o $'es#ra con e% no$?re especi@icado en e% AS co$o NO&.RE DEL *LIENTE. Es#o per$i#e $os#rar 'na co%'$na con enca?eAados $(s @a$i%iares a %os 's'arios @ina%es.

SELE*T N+&*LI AS VN+&ERO DE VNO&.RE DE *LIENTEV 6RO& *LIENTE


Da co$o res'%#ado 'n #o#a% de 1 @i%as.

*LIENTEV=

NO&*LI

AS

La c%('s'%a AS p'ede o$i#irse < e% res'%#ado es e% $is$o. SELE*T N+&*LI *LIENTEV 6RO& VN+&ERO DE *LIENTEV= NO&*LI *LIENTE VNO&.RE DE

Da co$o res'%#ado 'n #o#a% de 1 @i%as.

21

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

SENTEN*IA DE 6ILAS D+PLI*ADAS 8DISTIN*T:


Si 'na cons'%#a inc%'<e %a %%ave pri$aria 8pG: de 'na #a?%a en s' %is#a de se%eccin= en#onces cada @i%a de res'%#ados ser( Jnica 8<a B'e %a %%ave pri$aria 8pG: #iene 'n va%or di@eren#e en cada @i%a:. Si no se inc%'<e %a %%ave pri$aria en %os res'%#ados= p'eden prod'cirse @i%as d'p%icadas. Dea$os e% si 'ien#e e>e$p%o= E>e$p%o ] /: Se%eccionar e% cdi o de ar#Ec'%os B'e "an sido pedidos. Sin 'sar %a pa%a?ra reservada DISTIN*T. E% res'%#ado #endrEa 11 @i%as < con cdi os de prod'c#os repe#idos.

SELE*T N+&ART 6RO& DETALLEUPED ORDER .9 N+&ART


E>e$p%o ] 0: Se%eccionar e% cdi o de ar#Ec'%os +#i%iAando %a pa%a?ra reservada DISTIN*T. B'e "an sido pedidos.

E% res'%#ado con#iene $enos @i%as= 2 @i%as < con cdi os de prod'c#os Jnicos= es decir no se repi#en por %as veces B'e @'eron co$prados co$o en e% e>e$p%o ]/.

SELE*T 6RO& .9

DISTIN*T N+&ART DETALLEUPED ORDER N+&ART

22

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados Colu&nas Calculadas Ade$(s de %as co%'$nas c'<os va%ores ser(n in#rod'cidos a %a ?ase de da#os a #ravFs de %a sen#encia INSERT= 'na cons'%#a SQL p'ede inc%'ir en s' c%('s'%a SELE*T co%'$nas ca%c'%adas c'<o va%or se ca%c'%an a par#ir de %os va%ores de %as o#ras co%'$nas a%$acenadas en %as #a?%as. Es#as co%'$nas= son especie de 'na co%'$na vir#'a% p'es no eCis#en @Esica$en#e en %a #a?%a < s's va%ores ca%c'%ados corresponden a %os va%ores por @i%a. Es#a es 'na ven#a>a de% SQL B'e evi#a B'e se #en an B'e diseLar co%'$nas ca%c'%adas @Esicas en %a ?ase de da#os #ra<endo perdida en a%$acena$ien#o @Esico < inconsis#encia por @a%#a de $an#eni$ien#o de %a $is$a. E>e$p%o ] 4: De#er$inar a %os c%ien#es con sa%do. Rec'erde B'e e% sa%do se enc'en#ra a%$acenado en #res co%'$nas di@eren#es: SALDU0U-0 ^ SALDU-1U00 ^ SALDU01U20.

SELE*T N+&*LI= NO&*LI= 8SALDU0U-0 ^SALDU-1U00 ^ SALDU01U20: as _Sa%do de% *%ien#e_ 6RO& *LIENTE O\ERE 8SALDU0U-0 ^SALDU-1U00 ^ SALDU01U20: `a 0
E>e$p%o ] 1: Para de#er$inar e% $on#o de dinero B'e %%evan ac'$'%ados en ven#as por arri?a de s's c'o#as %os vendedores= %a cons'%#a SELE*T con co%'$nas ca%c'%adas por vendedor es=

SELE*T *ODDEND= NO&DEND= APELLDEND= 8DENTAS N *+OTA: AS V&on#o por Arri?a de *o'#asV 6RO& DENDEDOR O\ERE 8DENTAS N *+OTA: a 0

-0

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Condiciones de ./s0ueda (12 342 42 32 412 312 .E(5EEN2 6N2 L67E2 6S N8LL2 co&'uestas (9N:2 ,+2 N,())
SQL 'sa %as conec#ivas % icas AND= OR < NOT en %a c%('s'%a O\ERE. Los operandos de %as conec#ivas % icas p'eden ser eCpresiones B'e con#en an %os operadores de co$paracin `= `T=a= a T= T < `a. SQL per$i#e 'sar %os operadores de co$paracin para co$parar cadenas < eCpresiones ari#$F#icas= asE co$o #ipos especia%es= #a%es co$o e% #ipo @ec"a.

*ondiciones de .JsB'eda 8T= `a= a= `= aT= `T:: E>e$p%o ] 2: Se%eccionar a %os c%ien#es c'<o nJ$ero de c%ien#e
con#enido en#re e% ran o 1-02 < 12/0. es#(

SELE*T N+&*LI AS VN+&ERO DE *LIENTEV= NO&*LI AS VNO&.RE DE *LIENTEV 6RO& *LIENTE O\ERE N+&*LI aT 1-02 AND N+&*LI `T 12/0
Se o?#iene e% $is$o res'%#ado '#i%iAando %a pa%a?ra reservada .ETOEEN. Es#e especi@ica B'e 'n va%or sea $enor o i 'a% B'e 'n va%or < $a<or o i 'a% B'e o#ro va%or.

*ondiciones de .JsB'eda con .ETOEEN: E>e$p%o ] 10: Para se%eccionar a %os c%ien#es c'<o nJ$ero de c%ien#e es#( con#enido
en#re e% ran o 1-02 < 12/0= es:

SELE*T N+&*LI= NO&*LI .ETOEEN 1-02 AND 12/0


SELE*T es:

6RO& *LIENTE O\ERE N+&*LI

E>e$p%o ] 11: Para se%eccionar %os c%ien#es con no$?re en#re \ 9 P= %a sen#encia SELE*T N+&*LI AS VN+&ERO DE *LIENTEV= NO&*LI AS VNO&.RE DE *LIENTEV 6RO& *LIENTE O\ERE 8NO&*LI .ETOEEN V\V AND VPV:

-1

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Condiciones de ./s0ueda Co&'uestas con 9N:2 ,+ ; N,(< E>e$p%o ] 12: Se p'ede


co$?inar %as conec#ivas % icas AND= OR or < NOT < @i%#rar $a<or %a se%eccin en %a cons'%#a. Por e>e$p%o a% se%eccionar a %os c%ien#es c'<o nJ$ero de c%ien#e es#( con#enido en#re e% ran o 1-02 < 12/0 < B'e "an co$prado o incre$en#ado s' sa%do den#ro de% $es en c'rso= es decir s' sa%do en $es corrien#e no es cero.

SELE*T N+&*LI AS VN+&ERO DE *LIENTEV= NO&*LI AS VNO&.RE DE *LIENTEV= SALDU0U-0 6RO& *LIENTE O\ERE N+&*LI .ETOEEN 1-02 AND 12/0 AND NOT SALDU0U-0 T 0

E>e$p%o ] 1-: +#i%iAando e% operador


cdi o d'da$os si es 123 o 132.

OR pode$os ?'scar 'n c%ien#e c'<o

SELE*T NO&*LI= N+&*LI 6RO& *LIENTE O\ERE N+&*LI T 132 OR N+&*LI T 123 E>e$p%o ] 13: Para se%eccionar %os vendedores c'<as ven#as es $a<or B'e %a c'o#a
B'e se espera de?en vender < B'e s's ven#as son s'periores a .Q1000.00.

SELE*T *ODDEND= NO&DEND= APELLDEND= DENTAS= *+OTA 6RO& DENDEDOR O\ERE DENTAS a *+OTA AND DENTAS a 1000 *ondiciones de .JsB'eda con LIRE: E>e$p%o ] 1/: Se%eccionar a #odos %os c%ien#es B'e con#en an %a %e#ra _\_ den#ro de s'
no$?re.

SELE*T N+&*LI AS VN+&ERO DE *LIENTEV= NO&*LI AS VNO&.RE DE *LIENTEV 6RO& *LIENTE O\ERE NO&*LI LIRE Vb\bV

-2

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Condiciones de ./s0ueda con la funci=n S,8N:E>< Se e$p%ea en si#'aciones donde se #iene idea de% sonido de 'n va%or de co%'$na pero B'e no se conoce s' correc#a escri#'ra 8es 'na @'ncin n'eva incorporada en e% SELE*T:. E>e$p%o ] 10: Se%eccionar a #odos %os c%ien#es c'<o no$?re s'ene parecido a% especi@icado en %a @'ncin SO+NDEP 8 :. SELE*T N+&*LI= NO&*LI 6RO& *LIENTE SO+NDEP 8NO&*LI: T SO+NDEP 8 VD+ITV : Condiciones de ./s0ueda con 6S N8LL< Los va%ores de N+LL crean 'na % ica #riva%'ada para %as condiciones de ?JsB'eda en SQL. Para 'na @i%a de#er$inada= e% res'%#ado de 'na condicin de ?JsB'eda p'ede ser TR+E o 6ALSE= o p'ede ser N+LL de?ido a B'e 'na de %as co%'$nas '#i%iAadas en %a eva%'acin de %a condicin de ?JsB'eda con#en a 'n va%or N+LL. A veces es J#i% co$pro?ar eCp%Eci#a$en#e %os va%ores N+LL en 'na condicin de ?JsB'eda < $ane>ar%as direc#a$en#e. E>e$p%o ] 14: *ons'%#ar B'e @i%as de %a #a?%a ARTI*+LO #ienen va%or N+LL
en a% 'nas *ATEGORIAUART. de s's co%'$nas: DES*RIP*ION= EPISTEN*IA 9

O\ERE

SELE*T X6RO& ARTI*+LO O\ERE DES*RIP*ION IS N+LL OR EPISTEN*IA IS N+LL OR *ATEGORIAUART IS N+LL

--

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

,rdenaci=n de resultados de Consulta (clusula ,+:E+ .?)


A% i 'a% B'e %as @i%as de 'na #a?%a en %a ?ase de da#os %as @i%as de %os res'%#ados de 'na cons'%#a no es#(ndisp'es#as en nin Jn orden par#ic'%ar. ECis#en si#'aciones en %a B'e es necesario ver %a in@or$acin en 'n orden en especia%= co$o en orden a%@a?e#ico 8AS*= ascenden#e: ' ver a %as ci@ras de dinero %is#adas de $a<or $on#o a $enor 8DES*= descenden#e:. Se p'ede pedir a SQL B'e ordene %os res'%#ados de 'na cons'%#a inc%'<endo %a c%('s'%a ORDER .9 en %a sen#encia SELE*T. E>e$p%o ] 11: Para ?'scar %a in@or$acin de %os vendedores por orden de s' ape%%ido o no$?re= %a sen#encia se%ec# con %a c%('s'%a ORDER .9 seria %a si 'ien#e:

SELE*T X 6RO& DENDEDOR ORDER .9 APELLDEND


E>e$p%o ] 12: Para de#er$inar en 'na %is#a res'%#an#e de% e>e$p%o ]1= B'ien e% no$?re de% vendedor con $a<or e% $on#o de dinero es convenien#e ordenar por es#a B'e %%evan ac'$'%ados en ven#as por arri?a de s's c'o#as %os vendedores= %a cons'%#a SELE*T con co%'$nas ca%c'%adas por vendedor es=

SELE*T *ODDEND= NO&DEND= APELLDEND= 8DENTAS N *+OTA: AS V&on#o por Arri?a de *o'#asV 6RO& DENDEDOR O\ERE 8DENTAS N *+OTA: a 0 ORDER .9 8DENTAS N *+OTA: DES*

-3

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Consultas a -/lti'les (a@las Genera%$en#e e% poder de %a sen#encia SELE*T se ?asa en s' capacidad de poder en 'na so%a sen#encia cons'%#ar $J%#ip%es #a?%as si$'%#(nea$en#e. Es#a operacin #a$?iFn se %e %%a$a ;OIN < es %o B'e en par#ic'%ar %%a$o 'n _pe 'e de #a?%as en @or$a "oriAon#a%_ < oc'rre racias a B'e eCis#en co%'$nas de coneCin sea a#ri?'#os de asociacin co$'nes en %as #a?%as B'e se 'nen en es#a @or$a= vea @i 'ra:

Para B'e se p'edan rea%iAar cons'%#as a $J%#ip%es #a?%as e% reB'isi#o principa% es B'e %as #a?%as a re'nirse en 'na cons'%#a #en an co%'$nas con va%ores o do$inios co$'nes= es decir co%'$na de coneCin. Si re'ni$os a %as #a?%as de %a @i 'ra 3.3.a= de #a% @or$a B'e %a Ta?%a1 se reJna con %a Ta?%a2 < %a Ta?%a2 se re'niera con %a Ta?%a-= e% reB'isi#o indispensa?%e serEa: %a Ta?%a1 de?e #ener 'na co%'$na co$Jn en %a Ta?%a2 < Ta?%a2 de?e #ener 'na co%'$na de coneCin en %a Ta?%a-. Por %o enera% es#as co%'$nas co$'nes son: en 'na #a?%a %a co%'$na es %a %%ave pri$aria < en %a o#ra #a?%a %a co%'$na asociada es %a %%ave @or(nea B'e re@erencia a %a pri$aria. Para es#e #ipo de cons'%#as a $J%#ip%es #a?%as %a c%('s'%a 6RO& es %a responsa?%e de indicar c'(% ser( %a8s: #a?%a8s: @'en#es. ECis#en dos @or$as de sin#aCis per$i#idas para %a escri#'ra de %a sen#encia SELE*T para %a re'nin de #a?%as= ?asada en %a @i 'ra 3.3.a= es#as @or$as son %as si 'ien#es: 6OR&A 1: SELE*T a1= a2= a/= ?1= ?2= ?-= c1= c2= c-

-/

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados 6RO& Ta?%a1= Ta?%a2= Ta?%aO\ERE Ta?%a1.a1 T Ta?%a2.?2 AND 6OR&A 2: SELE*T a1= a2= a/= ?1= ?2= ?-= c1= c2= c6RO& Ta?%a1 INNER ;OIN Ta?%a2 ON Ta?%a1.a1 T Ta?%a2.?2 INNER ;OIN Ta?%aTa?%a2. ?1 T Ta?%a-.c1 Ta?%a2. ?1 T Ta?%a-.c1

No#e B'e %as co%'$nas co$'nes en a$?as #a?%as "an de ca%i@icarse con e% no$?re de %a #a?%a B'e per#enecen para evi#ar errores de a$?i cedad. La 6or$a 2= #iene %a ven#a>a de %i?erar a %a c%('s'%a O\ERE < de>ar es#a para @i%#ros especE@icos so?re %as @i%as res'%#an#es de %a re'nin de #a?%as.

-0

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados E>e$p%o ]21: Si se desea 'nir %a #a?%a de *LIENTES con PEDIDO 8ver @i 'ra 3.3.?.:= para a$?as #a?%as= %a co%'$na de coneCin es N+&*LI= %a cons'%#a SELE*T B'e rea%iAa es#a re'nin es %a si 'ien#e: 6OR&A 1: SELE*T *LIENTE.N+&*LI= NO&*LI= N+&PED= 6E*\AUPED= TOTUDES* 6RO& *LIENTE= PEDIDO O\ERE *LIENTE.N+&*LI T PEDIDO.N+&*LI 6OR&A 2: SELE*T *LIENTE.N+&*LI= NO&*LI= N+&PED= 6E*\AUPED= TOTUDES* 6RO& *LIENTE INNER ;OIN PEDIDO ON *LIENTE.N+&*LI T PEDIDO.N+&*LI E>e$p%o ] 23: Se%eccionar #odos %os pedidos con s' in@or$acin co$p%e#a= es#o inc%'<e: da#os de% c%ien#e= da#os de% pedido= da#os de% de#a%%e de %a co$pra= da#os de% ar#Ec'%o de %a co$pra < da#os den vendedor B'e a#endi e% pedido. Es#a cons'%#a reB'iere B'e se rea%ice %a 'nin 8>oin: de %as cinco #a?%as: *%ien#e= Pedido= De#a%%eUPed= Ar#Ec'%o < Dendedor= B'e son #odas %as #a?%as de %a ?ase de da#os de% DENTAS.
SELE*T PEDIDO.N+&PED= *LIENTE.N+&*LI=NO&*LI=DIR*LI= APELLDEND AS DENDEDOR= 6E*\AUPED=ARTI*+LO.N+&ART= DES*RIP*ION=PRE*IO=*ANTIDAD=8PRE*IOX*ANTIDAD: AS TOTAL 6RO& *LIENTE INNER ;OIN PEDIDO ON *LIENTE.N+&*LITPEDIDO.N+&*LI INNER ;OIN DETALLEUPED ON PEDIDO.N+&PED T DETALLEUPED.N+&PED INNER ;OIN ARTI*+LO ON DETALLEUPED.N+&ARTTARTI*+LO.N+&ART INNER ;OIN DENDEDOR ON PEDIDO.*ODDEND T DENDEDOR.*ODDEND ORDER .9 PEDIDO.N+&PED

-4

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados RES+LTADO:

-1

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Consultas +esu&en Es#as cons'%#as res'%#an ven#a>osas para "acer ?JsB'edas a nive% de %os va%ores de %as co%'$nas a nive% de #odas %as @i%as. Por e>e$p%o si se desea sa?er en 'na #a?%a de 10=000 @i%as: e% $a<or sa%do ade'dado= %a c'o#a $Eni$a o $(Ci$a asi nada a %os vendedores= e% #a$aLo pro$edio de pedidos= e% #o#a% de c%ien#es o vendedores 8es decir #o#a% de @i%as:.
E>e$p%o ] 24: De#er$inar en 'na $is$a cons'%#a %o si 'ien#e:
d d d d d

To#a% de Dendedores. *O+NT 8NO&DEND: &on#o To#a% de *O+TAS B'e de?en a%canAarse en#re #odos %os vendedores. S+& 8*+OTA:. E% $on#o pro$edio de c'o#as asi nado a 'n vendedor. ADG 8*O+TA: E% va%or de %a c'o#a $(Ci$a asi nado a 'n vendedor. &AP 8*O+TA: E% va%or de %a c'o#a $Eni$a asi nado a 'n vendedor. &IN 8*O+TA:

SENTEN*IA SQL: +SE DENTAS SELE*T *O+NT 8NO&DEND: AS _TOTAL DENDEDORES_= S+&8*+OTA:_&ONTO DE *+OTAS_=ADG8*+OTA: AS _*+OTA PRO&EDIO_= &AP8*+OTA: _*+OTA &AP._= &IN8*+OTA:_*+OTA &IN._ 6RO& DENDEDOR E% res'%#ado de es#a cons'%#a es 'na @i%a con %os si 'ien#es va%ores:
TOTAL DENDEDORES &ONTO DE *+OTAS *+OTA PRO&EDIO *+OTA &AP. *+OTA &IN. NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNN NNNN NNNNNNN NNNNNNNNNNNNNNN 10 2/-31.00 2/-3.10 140/.00 200.00

,tros eje&'los< Sentencia S8-< SELE*T S+& 8can#idad: as VS'$a de %as *an#idadesV Sentencia 9AG< SELE*T ADG 8can#idad: as V*an#idad Pro$edio PedidaV 6RO& de#a%%eUped 6RO& de#a%%eUped

-2

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

Sentencia -6N< SELE*T &IN 8can#idad: as V*an#idad &Eni$o PedidaV 6RO& de#a%%eUped Sentencia -9>< SELE*T &AP 8can#idad: as V*an#idad &(Ci$a PedidaV 6RO& de#a%%eUped Sentencia C,8N( SELE*T *O+NT 8X: as VTo#a% de *%ien#esV 6RO& *LIENTE Sentencia :6S(6NC( SELE*T *O+NT 8DISTIN*T n'$ped: as VTo#a% de Pedidos So%ici#adosV 6RO& de#a%%eUped En es#a J%#i$a cons'%#a "ace B'e %os nJ$eros de pedidos en DETALLEUPED= B'e son repe#idos= %a c%('s'%a DISTIN*T c'en#e so%o nJ$eros de 'no de %os B'e se repi#en.

30

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

C,NCL8S6BN Es#e $an'a% @'e "ec"o con e% propsi#o de a<'dar a %os es#'dian#es 'niversi#arios B'e #ienen 'n deseo de aprender= $(s @'er#e cada dEa. Ta$?iFn para a<'dar$e a $E $is$o en %a codi@icacin de SQL. *'a%B'ier co$en#ario o s' erencia 8cons#r'c#ivas c%aro:= $e %o p'eden "acer a $i correo e%ec#rnico:

pedrop !"o#$ai%.co$ 6E*\A DE *REA*I,N: L'nes 22 de oc#'?re de% 2012

31

&an'a% Pr(c#ico de SQL Preparado por: Pedro P. Picn Granados

.I.LIOGRA6)A &d'%os - < 3 de% c'rso de Sis#e$as de In@or$acin II Dir#'a% de %a +niversidad Tecno% ica de Pana$(= 8200-: No#a: #a%es $d'%os Ta$ara .a#is#a @'eron creados por %a in eniera

32

You might also like