Sunteți pe pagina 1din 20

MANUALDESQL

LassumasdelasventasestnGROUPBYnegocios.LasintaxisSQLcorrespondientees,
SELECT"nombre1_columna",SUM("nombre2_columna")FROM"nombre_tabla"GROUPBY
"nombre1columna"
Ilustremosutilizandolasiguientetabla,
TablaStore_Information
store_nameSalesDate
LosAngeles150005Jan1999
SanDiego25007Jan1999
LosAngeles30008Jan1999
Boston70008Jan1999
Deseamossaberlasventastotalesparacadanegocio.Parahacerlo,ingresaramos,
SELECTstore_name,SUM(Sales)FROMStore_InformationGROUPBYstore_name
Resultado:
store_nameSUM(Sales)LosAngeles1800SanDiego250Boston>700
LapalabraclaveGROUPBYseutilizacuandoestamosseleccionadocolumnasmltiplesdesdeunatabla
(otablas)yaparecealmenosunoperadoraritmticoenlainstruccinSELECT.Cuandoestosucede,
necesitamosGROUPBYtodaslasotrascolumnasseleccionadas,esdecir,todaslascolumnasexcepto
aquella(s)queseoperanporunoperadoraritmtico.
EnvezdeutilizarlaclusulaWHEREenlainstruccinSQL,apesardequenecesitemosutilizarla
clusulaHAVING,quesereservaparafuncionesdeagregados.LaclusulaHAVINGsecoloca
generalmentecercadelfindelainstruccinSQL,ylainstruccinSQLconlaclusulaHAVING.puedeono
incluirlaclusulaGROUPBYsintaxisparaHAVINGes,
SELECT"nombre1_columna",SUM("nombre2_columna")FROM"nombre_tabla"GROUPBY
"nombre1_columna"HAVING(condicindefuncinaritmtica)
Nota:LaclusulaGROUPBYesopcional.
Ennuestroejemplo,tablaStore_Information,

TablaStore_Information
store_nameSalesDate
LosAngeles150005Jan1999
SanDiego25007Jan1999
LosAngeles30008Jan1999
Boston70008Jan1999
ingresaramos,
SELECTstore_name,SUM(sales)FROMStore_InformationGROUPBYstore_nameHAVING
SUM(sales)>1500
Resultado:
store_nameSUM(Sales)LosAngeles1800LasintaxispararealizarunauninexternaenSQLdepende
delabasededatos.Porejemplo,enOracle,colocaremosun"(+)"enlaclusulaWHEREdelotroladode
latablaparalaquequeremosincluirtodaslasfilas.
Digamosquetenemoslassiguientesdostablas:
TablaStore_Information
store_nameSalesDate
LosAngeles150005Jan1999
SanDiego25007Jan1999
LosAngeles30008Jan1999
Boston70008Jan1999
TablaGeography
region_namestore_name
EastBoston
EastNewYork
WestLosAngeles
WestSanDiego
yqueremossaberlasumadelasventasdetodoslosnegocios.Sirealizamosunauninregular,no
podramosobtenerloquedeseamosdebidoaquehabramosomitidoNuevaYork"yaquenoapareceenla
tablaStore_Information.Porlotanto,necesitamosrealizarunauninexternarespectodelasdostablas
anteriores:

SELECTA1.store_name,SUM(A2.Sales)SALESFROMGeographyA1,Store_InformationA2WHERE
A1.store_name=A2.store_name(+)GROUPBYA1.store_name
Notequeenestecaso,estamosutilizandolasintaxisOracleparauninexterna.
Resultado:
store_nameSALESBoston700NewYorkLosAngeles1800SanDiego250
Nota:SedevuelveNULLcuandonohaycoincidenciaenlasegundatabla.Enestecaso,NuevaYork"no
apareceenlatablaStore_Information,porlotantosucolumna"SALES"correspondienteesNULL.
MySQL:CONCAT()
Oracle:CONCAT(),||
SQLServer:+
LasintaxisparaCONCAT()eslasiguiente:
CONCAT(cad1,cad2,cad3,...):Concatenarcad1,cad2,cad3,ycualquierotracadenajuntas.Porfavor
notequelafuncinCONCAT()deOracleslopermitedosargumentosslodoscadenaspueden
colocarsejuntasalmismotiempoutilizandoestafuncin.Sinembargo,esposibleconcatenarmsdedos
cadenasalmismotiempoenOracleutilizando'||'.
Observemosalgunosejemplos.Supongamosquetenemoslasiguientetabla:
TablaGeography
region_namestore_name
EastBoston
EastNewYork
WestLosAngeles
WestSanDiego
Ejemplo1:
MySQL/Oracle:SELECTCONCAT(region_name,store_name)FROMGeographyWHEREstore_name
='Boston'
Resultado:

'EastBoston'
Ejemplo2:
Oracle:SELECTregion_name||''||store_nameFROMGeographyWHEREstore_name='Boston'
Resultado:
'EastBoston'
Ejemplo3:
SQLServer:SELECTregion_name+''+store_nameFROMGeographyWHEREstore_name=
'Boston'
Resultado:
'EastBoston'MySQL:SUBSTR(),SUBSTRING()
Oracle:SUBSTR()
SQLServer:SUBSTRING()
Losusosmsfrecuentessonlossiguientes(utilizaremosSUBSTR()aqu):
SUBSTR(str,pos):Seleccionatodosloscaracteresde<str>comenzandoconposicin<pos>.Noteque
estasintaxisnoescompatibleenSQLServer.
SUBSTR(str,pos,len):Comienzaconelcarcter<pos>enlacadena<str>yseleccionalossiguientes
caracteres<len>.
Supongamosquetenemoslasiguientetabla:
TablaGeography
region_namestore_name
EastBoston
EastNewYork
WestLosAngeles
WestSanDiego
Ejemplo1:
SELECTSUBSTR(store_name,3)FROMGeographyWHEREstore_name='LosAngeles'
Resultado:

'sAngeles'
Ejemplo2:
SELECTSUBSTR(store_name,2,4)FROMGeographyWHEREstore_name='SanDiego'
Resultado:
'anD'
LafuncinTRIMenSQLseutilizaparaeliminarunprefijoosufijodeterminadodeunacadena.Elpatrn
mscomnaeliminarsesonlosespaciosenblanco.Estafuncintienediferentesnombressegnlas
diferentesbasesdedatos:
MySQL:TRIM(),RTRIM(),LTRIM()
Oracle:RTRIM(),LTRIM()
SQLServer:RTRIM(),LTRIM()
Lasintaxisparaestasfuncionesdereduccines:
TRIM([[LOCATION][remstr]FROM]str):[LOCATION]puedeserLDER,REMANENTE,oAMBAS.Esta
funcinsedeshacedelpatrn[remstr]tantoparaelcomienzodelacadenacomoparaelfinal,opara
ambos.Sinoseespecificaningn[remstr],losespaciosenblancoseeliminarn.
LTRIM(str):Eliminatodoslosespaciosenblancodelcomienzodelacadena.
RTRIM(str):Eliminatodoslosespaciosenblancodelfinaldelacadena.
Ejemplo1:
SELECTTRIM('Sample')
Resultado:
'Sample'
Ejemplo2:
SELECTLTRIM('Sample')
Resultado:
'Sample'
Ejemplo3:
SELECTRTRIM('Sample')

Resultado:
'Sample'
LafuncinTRIMenSQLseutilizaparaeliminarunprefijoosufijodeterminadodeunacadena.Elpatrn
mscomnaeliminarsesonlosespaciosenblanco.Estafuncintienediferentesnombressegnlas
diferentesbasesdedatos:
MySQL:TRIM(),RTRIM(),LTRIM()
Oracle:RTRIM(),LTRIM()
SQLServer:RTRIM(),LTRIM()
Lasintaxisparaestasfuncionesdereduccines:
TRIM([[LOCATION][remstr]FROM]str):[LOCATION]puedeserLDER,REMANENTE,oAMBAS.Esta
funcinsedeshacedelpatrn[remstr]tantoparaelcomienzodelacadenacomoparaelfinal,opara
ambos.Sinoseespecificaningn[remstr],losespaciosenblancoseeliminarn.
LTRIM(str):Eliminatodoslosespaciosenblancodelcomienzodelacadena.
RTRIM(str):Eliminatodoslosespaciosenblancodelfinaldelacadena.
Ejemplo1:
SELECTTRIM('Sample')
Resultado:
'Sample'
Ejemplo2:
SELECTLTRIM('Sample')
Resultado:
'Sample'
Ejemplo3:
SELECTRTRIM('Sample')
Resultado:
'Sample'
MySQL:ALTERTABLEORDERSADDFOREIGNKEY(customer_sid)REFERENCESCUSTOMER(SID)

Oracle:ALTERTABLEORDERSADD(CONSTRAINTfk_orders1)FOREIGNKEY(customer_sid)
REFERENCESCUSTOMER(SID)
SQLServer:ALTERTABLEORDERSADDFOREIGNKEY(customer_sid)REFERENCES
CUSTOMER(SID)
Operadoresrelacionales
OperadorAccinCdigo
<
Menorque
?23<54
>
Mayorque
?1>2
=
Igualque
?cVar1=cVar
<>,#,!=
Distintode
?.T.<>.F.
<=
Menoroigualque
?{^1998/02/16}<={^1998/02/16}
>=
Mayoroigualque
?32>=nHisAge
==
Comparacindecadenas
decaracteres?status=="Open"
Sepuedeusareloperador==pararealizarunacomparacinexactadecadenasdecaracteres.Alcomparardos
expresionesdecaracteresconeloperador==,lasexpresionesaambosladosdedichooperadorseconsideran
igualessicontienen

exactamentelosmismoscaracteres,incluidoslosespaciosenblanco.LaconfiguracindeSETEXACTsepasa
poraltoalcompararcadenasdecaracteresconeloperador==.VeaSETEXACTsideseaobtenerms
informacinacercadelusodeloperador==paracompararcadenasdecaracteres.
Tambinpuedeusareloperadorigualque(=)enestaversindeVisualFoxProparadeterminarsidos
referenciasaobjetoshacenreferenciaalmismoobjeto.Enelsiguienteejemplosemuestraunusosencillo:
CLEARALLX=CREATEOBJECT('Form')Y=CREATEOBJECT('Form')?X=Y&&Displaysfalse(.F.)Z=
X?X=Z&&Displaystrue(.T.)
LosoperadoreslgicossonAND,ORyNOT.ANDyORseusanparaconectarcondicionesdebsquedaenlas
clusulasWHERE.NOTinvierteelresultadodeunacondicindebsqueda.
ANDcombinadoscondicionesyslodevuelveTRUEcuandoambassonciertas.Porejemplo,laconsulta
siguienteslodevuelvelafilaenlaqueelId.declientecomienzaconelnmero1yelnombredealmacn
empiezaconBicycle:
CopiarSELECTCustomerID,NameFROMAdventureWorks.Sales.StoreWHERECustomerIDLIKE'1%'
ANDNameLIKEN'Bicycle%'
ORconectatambindoscondiciones,perodevuelveTRUEcuandoalgunadeellasesverdadera.Laconsulta
siguientedevuelvelas116filascuyoId.declienteempiezacon1ocuyonombredealmacncomienzacon
Bicycle:
CopiarSELECTCustomerID,NameFROMAdventureWorks.Sales.StoreWHERECustomerIDLIKE'1%'
ORNameLIKEN'Bicycle%'
tienenlamismaprecedencia.
SmbolodeoperadorTipodeoperacinCapacidaddeasociacin
()ExpresinDeizquierdaaderecha
,!,~UnarioDederechaaizquierda
conversionesdetiposUnarioDederechaaizquierda

*,/,%MultiplicativaDeizquierdaaderecha
+,AditivaDeizquierdaaderecha
<,>,<=,>=RelacionalesDeizquierdaaderecha
==,!=IgualdadDeizquierdaaderecha
&ANDbitabitDeizquierdaaderecha
^ORexclusivobitabitDeizquierdaaderecha
|ORinclusivobitabitDeizquierdaaderecha
&&ANDlgicoDeizquierdaaderecha
||ORlgicoDeizquierdaaderecha
?:ExpresincondicionalDederechaaizquierda
B)ACTUALIZACINDEINFORMACIONMEDIANTELENGUAJEDESQL
AgregaunaovariasfilasnuevasaunatablaounavistaenSQLServer2008R2.Paraobtenerejemplos,vea
EjemplosdeINSERT(TransactSQL).
ConvencionesdesintaxisdeTransactSQL
Sintaxis
Copiar
StandardINSERTsyntax
[WITH<common_table_expression>[,...n]]
INSERT
{
[TOP(expression)[PERCENT]]

[INTO]
{<object>|rowset_function_limited
[WITH(<Table_Hint_Limited>[...n])]}
{
[(column_list)]
[<OUTPUTClause>]
{VALUES({DEFAULT|NULL|expression}[,...n])[,...n]
|derived_table
|execute_statement
|<dml_table_source>
|DEFAULTVALUES
}
}
}
[]
Copiar
Externaltoolonlysyntax
INSERT
{
[BULK]
[database_name.[schema_name].|schema_name.]
[table_name|view_name]
(<column_definition>)
[WITH(
[[,]CHECK_CONSTRAINTS]