guía sql server 2008
Post on 05-Apr-2018
238 Views
Preview:
TRANSCRIPT
-
8/2/2019 Gua SQL Server 2008
1/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
Para crear una DB mediante codigo, se hace de la siguiente manera:USEmasterGO
CREATEDATABASENombreDB
GO
...
Para cambiar el nombre de una DB:ALTERDATABASENomActualDBMODIFYNAME=NuevoNombreDB
GO
tambin:EXECSP_RENAMEDB'NomActualDB','NvoNombreDB'
Para eliminar una DB:DROPDATABASENombreDB
BETWEEN AND: Se utiliza dentro del WHERE como una condicin para limitar dentro deun intervalo el resultado de una consulta:SELECT*FROMTablaWHERECampoBETWEEN Valor1 AND Valor2
DISTINCT: Para eliminar tuplas que tengan los mismos datos al ejecutar la consulta:SELECTDISTINCTCampo1,Campo2FROMTabla
FROM: Para definir las tablas de las cuales se van a seleccionar los campos:SELECT*FROMTabla
LIKE: Se utiliza dentro del WHERE como una condicin para comparar un campo en unacadena alfanumrica, es decir, para realizar una bsqueda dentro de los registros:SELECT*FROMTablaWHERECampoLIKE'NumeroCaracter%'
Para los criterios de bsqueda, tener en cuenta: '_' Resultados que contengan solo 1 carcter. '_ _' Resultados que contengan solo 2 caracteres, etc. (Lineas unidas) 'A%' Resultados que empiecen por A. '_A%' Resultados que su segundo carcter sea A. '_ _A%' Resultados que su tercer carcter sea A, etc. '%A%' Resultados que contengan A. 'A%B%' Resultados que empiecen por A y contengan B, etc. '%A%B%' Resultados que contengan A y B, etc. '_A%B%' Resultados que la segunda letra sea A y contengan B, etc.
'[A-B]%' Resultados que esten entre A y B, etc. '[A-B]%' Resultados desde A hasta B, etc.
-
8/2/2019 Gua SQL Server 2008
2/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
'[A-B]%C%' Resultados desde A hsta B y que contenga C, etc. '[A,B]%' Resultados solo con A y B, etc. '[A,B]%C%' Resultados solo con A y B, que contengan C, etc. 'A[BC]% ' Resultados que empiecen con AB o AC, etc. '%A' Resultados que terminen en A.
'%A_' Resultados que cuya penultima letra sea A, etc.
IN: Se utiliza dentro del WHERE, para alterar el uso del OR. Su funcin es retornar en laconsulta el resultado de al menos uno de los valores:SELECT*FROMTablaWHERECampoIN('Valor1','Valor2','ValorN')
ORDER BY: Para especificar el criterio de ordenacin del conjunto de resultados.SELECTCampo1FROMTablaORDERBYCampo1
Para ordenar de forma ascendente:SELECTCampo1FROMTablaORDERBYCampo1 ASCPara ordenar de forma descendente:SELECTCampo1FROMTablaORDERBYCampo1 DESC
Para ordenar, tambin se puede con el nmero del campo:SELECTCampo1,Campo2, Campo3FROMTabla
ORDERBY 2(Odenar solo el campo2)
Para especificar el orden, se puede con los nmeros de los campos:SELECTCampo1,Campo2, Campo3FROMTabla
ORDERBY 2, 1, 3 (Ordenar primero el campo2, luego el 1 y luego el 3)
ALIAS: Para cambiar temporalmente el nombre a una tabla, con el fin de facilitar elllamado de los campos. Este cambio no se aplica fsicamente, solo virtualmente:SELECTTB.Campo1,TB.Campo2,TB.CampoNFROMTablaASTB
tambin:SELECTTB.Campo1,TB.Campo2,TB.CampoNFROMTablaTB
WHERE: Se utiliza despus del FROM para aplicar una condicin a la consulta:SELECT*FROMTablaWHERECondicin
-
8/2/2019 Gua SQL Server 2008
3/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
CREATE
Para crear una DB mediante codigo, se hace de la siguiente manera:USEmaster
GOCREATEDATABASENombreDB
...
Para crear las tablas o registros que conformarn la base de datos:CREATETABLETabla(Campo1TipoDato(Tamao)NOTNULL,Campo2TipoDato(Tamao)NULL,...)
Para declarar la PK dentro de la creacin de la tabla:CREATETABLETabla(Campo1TipoDato(Tamao)NOTNULL,
Campo2TipoDato(Tamao)NULL,...
CONSTRAINTPKTablaPRIMARYKEY(Campo1))
Crear Vistas (create view)Una vista se puede considerar como una tabla virtual, lo que quiere decir que noalmacena datos fsicamente. La podemos usar cuando nos interesa que los usuariostengan acceso a una parte de la informacin de una tabla, pero no a toda la tabla:CREATEVIEWNombreVistaASSELECTCampo1, Campo2,FROMTabla
Para conocer el contenido de esta vista:
SELECT*FROMNombreVista
Crear ndices (create index)Un ndice permite acceder a diferentes registros de una misma tabla a travs de uncampo (o campos clave), lo cual permite un acceso mucho ms rpido a los datos.CREATEUNIQUEINDEXNombreIndiceONTabla(PKCampo)
Para saber cual es el ndice de una tabla:EXECsp_helpindex'Tabla'
Para ver todos los ndices de la base de datos activa creados:SELECTNAMEFROMSYSINDEXESWHERENAMELIKE'I%'
ALTER
Para modificar o actualizar el valor asignado a una tabla:ALTERTABLETablaSETCampoaModificar='NuevoValor'WHERECondicion
Para aadir un nuevo campo a una tabla existente:ALTERTABLETablaADDNvoCampoTipoDato(Tamao)
Para modificar el tamao del campo de una tabla:ALTERTABLETablaALTERCOLUMNCampo TipoDato(NvoTamao)
-
8/2/2019 Gua SQL Server 2008
4/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
Para modificar el nombre de un campo de la tabla:EXECsp_rename'Tabla.CampoActual','NvoNombreCampo'
Para aadir un constraint, es decir, para asignar una restriccin a un campo:ALTERTABLETablaADDCONSTRAINTNombreConstraintCHECK(Parametros)
Para aadir una PK fuera de la creacin a una tabla, si no se le asign:ALTERTABLETablaADDCONSTRAINTPKPRIMARYKEY(CampoNvaPK)
Para cambiarle laPK a una tabla, primero se borra la que tiene por el constraint:ALTERTABLETablaDROPCONSTRAINTNombreConstPK
Luego, se aade el constraint de la nueva PK:ALTERTABLETablaADDCONSTRAINTNomConstNvaPKPRIMARYKEY(CampoNvaPK)
Para aadir una FK fuera de la creacin a una tabla:ALTERTABLETabla2ADDCONSTRAINTFKFOREIGNKEY(CampoTabla2)REFERENCESTabla1(CampoPKa)
DROPPara eliminar una DB:DROPDATABASENombreDB
Para eliminar una tabla de la DB:DROPTableTabla
Para eliminar un campo de una tabla:ALTERTABLETablaDROPCOLUMNCampo
Para eliminar un constraint de una tabla:ALTERTABLETablaDROPCONSTRAINTNombreConstraint
Para eliminar el indice de una tabla:DROPINDEXTabla.NombreIndice
TRUNCATE
Para eliminar todos los registros de una tabla, pero conservar la tabla:TRUNCATETABLETabla
INSERT
Para insertar un nuevo registro a una tabla:
INSERTINTOTabla(Campo1,Campo2,...CampoN)VALUES(ValorCampo1,ValorCampo2,...ValorCampoN)
Variantes:
Tambin se pueden insertar si necesidad de poner los nombres de los campos:INSERTINTOTablaVALUES(Campo1,Campo2,...CampoN)
No interesa el orden en el que se pongan los campos:INSERTINTOTabla(Campo3,Campo1,Campo2,...ValorCampoN)VALUES(ValorCampo3,ValorCampo1,ValorCampo2,...ValorCampoN)
Se pueden poner solamente los campos que no admitan valores nulos:INSERTINTOTabla(Campo1,Campo2)VALUES(ValorCampo1,ValorCampo2)
-
8/2/2019 Gua SQL Server 2008
5/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
Donde los campos 1 y 2 se declararon NOT NULL inicialmente. Se pueden copiar todos los registros de una tabla a otra nueva tabla creada,
siempre y cuando los campos esta ultima sean del mismo tipo de datos:INSERTINTONvaTablaaLlenarSELECT*FROMTablaActual
Se puede crear una copia exacta de una tabla existente, la cual va a contener los
mismos campos con sus tipos de datos y los registros que tenga almacenados:SELECT*INTONombreTablaCopiaFROMTablaActual
UPDATE
Para actualizar o modificar el valor existente de un campo:UPDATETablaSETCampo='NuevoValor'WHERECondicion
DELETE
Utilizada para eliminar uno o varios registros de un campo o tabla:DELETEFROMTablaWHERECondicion
Para eliminar todos los registros de una tabla:DELETEFROMTabla
SELECT
Indica que la sentencia de SQL que queremos ejecutar es de seleccin.Para mostrar un mensaje:SELECT ('Bienvenido a SQL Server!')
Para mostrar un mensaje que concatene los valores adquiridos:SELECTCampo1,' mensaje 'AS' ',Campo2FROMTabla2
Para mostrar solo algunos campos de una tabla con sus registros:SELECTCampo1,Campo2, CampoNFROMTabla
Para mostrar todos los campos de una tabla con sus registros:SELECT*FROMTabla
Para renombrar las columnas al mostrar sus registros:SELECTCampo1, 'NombreaPoner',Campo2AS'NombreaPoner'FROMTabla
ABS: Para hallar el valor absoluto:SELECTABS(Numero)
CEILING: Para mostrar el valor entero superior o igual a un nmero:SELECTCEILING(Numero)
FLOOR: Para mostrar el valor entero inferior o igual a un nmero:SELECTFLOOR(Numero)
POWER: Para calcular la potencia de un nmero:SELECTPOWER(Numero, Exponente)
-
8/2/2019 Gua SQL Server 2008
6/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
SQRT: Para calcular la raz cuadrada de un valor:SELECTSQRT(Numero)
ASCII: Para convertir una letra o nmero a cdigo ASCII:SELECTASCII('LetraoNumero')
UNICODE: Para convertir una letra, cadena o nmero a UNICODE:SELECTUNICODE('LetraCadenaoNumero')
LEN: Para mostrar la cantidad de caracteres que tiene un campo o una cadena:SELECTLEN(Campo) AS'Culquier Nombre'FROMTabla
SELECTLEN('Hola Mundo') AS'Culquier Nombre'
DATALENGHT: Tambin se puede Utilizar:SELECTDATALENGTH(Campo) AS'Culquier Nombre'FROMTabla
SELECTDATALENGTH('Hola Mundo') AS'Culquier Nombre'
SUM: Para hallar la suma total de un campo nicamente numrico:SELECTSUM(Campo)FROMTabla
AVG: Para hallar el promedio de los valores de un campo numrico:
SELECTAVG(Campo)FROMTabla
COUNT: Para hallar la cantidad de registros que hay en un campo:SELECTCOUNT(Campo)FROMTabla
O tambin se puede con:SELECTCOUNT(*)FROMTabla
MAX: Para hallar cual es el valor mximo que hay en un campo:SELECTMAX(Campo)FROMTabla
MIN: Para hallar cual es el valor mnimo que hay en un campo:SELECTMIN(Nota1)FROMNOTAS
GROUP BY: Para cuando seleccionamos uno o ms campos de una tabla y aparece unafuncin de agregacin aplicndose a un campo. Dentro de esta clusula solo se ponenlos campos que no estn siendo operados por la funcin de agregacin.SELECTCampo1,FunciondeAgregado(Campo2)FROMTablaGROUPBYCampo1
-
8/2/2019 Gua SQL Server 2008
7/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
HAVING: Selecciona o rechaza un grupo de registros retornados por GROUP BY:Para el siguiente caso, mostrar el campo1 y el valor de la funcion de agregado delcampo2, en donde este ultimo valor sea mayor, menor, diferente o igual a un valor dado:SELECTCampo1,FunciondeAgregado(Campo2)FROMTablaGROUPBYCampo1HAVINGFunciondeAgregado(Campo2)!==5Valor
CHAR: Para convertir un cdigo ASCII en una cadena de caracteres:SELECTCHAR(CodigoASCII)
RTRIM: Para quitar los espacios en blanco que hayan por la derecha:SELECTRTRIM('ABC ')
LTRIM: Para quitar los espacios en blanco que hayan por la izquierda:SELECTLTRIM(' ABC')
LEFT: Para mostrar primeros n caracteres de una cadena:SELECTLEFT('Mensaje', Numero)
RIGHT: Para mostrar ltimos n caracteres de una cadena:SELECTRIGHT('Mensaje', Numero)
UPPER: Para cambiar un campo a mayscula:SELECTUPPER(Campo)ASCampoFROMTabla
LOWER: Para cambiar un campo a minscula:SELECTLOWER(Campo)ASCampoFROMTabla
Para cambiar los datos de forma permanente en la tabla a mayscula o a minscula:UPDATETablaSETCampo=UPPER(Campo)
UPDATETablaSETCampo=LOWER(Campo)
REPLACE: Para reemplazar una posicin en una cadena de caracteres:SELECTREPLACE(CadenaoNumero, Posicion, Reemplazo)
STUFF: Para insertar una cadena dentro de otra existente:SELECTSTUFF('cadenainicial', posinicial, longitud,'cadenaainsertar')
REVERSE: Para mostrar una cadena, campo o numero invertido:SELECTREVERSE(Campo) AS'Culquier Nombre'FROMTabla
REPLICATE: Para repetir n veces una cadena o un valor de un campo:SELECTREPLICATE('Cadena', Cantidad)
-
8/2/2019 Gua SQL Server 2008
8/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
SUBSTRING: Para mostrar una parte de una cadena o valor de un campo:SELECTSUBSTRING('Cadena', Posicion, CantidadaMostrar)
CAST: Para extraer y operar cada uno de los caracteres de una cadena VARCHARprimero se convierte a INT:SELECTCAST(SUBSTRING(CampoCadena, Posicion, CantidadaMostrar)ASINT)
FROMTABLALuego, para operar cada uno de los caracteres de un campo de una cadena se hace lamisma conversin anterior:SELECTNombre,Cedula,CAST(SUBSTRING(CampoCadena, Posicion, CantidadaMostrar)ASINT)+CAST(SUBSTRING(CampoCadena, Posicion, CantidadaMostrar)ASINT)+CAST(SUBSTRING(CampoCadena, Posicion, CantidadaMostrar)ASINT) + AS'Nombre Campo'FROMTabla
SPACE: Para mostrar n espacios en blanco:SELECTSPACE(Numero)
Para mostrar un mensaje separado por n espacios:SELECT'Hola'+SPACE(Numero)+'Mundo!'
ROUND: Para redondear un decimal:SELECTROUND(Decimal, Numero)
TOP: Para mostrar n registros de una tabla:SELECTTOP Cantidad(Campo)FROMTabla
O, para mostrar todos los campos:SELECTTOP Cantidad *FROMTabla
Para mostrar la fecha y hora actual del sistema:SELECTSYSDATETIME()
SELECTGETDATE()
Para mostrar solo el da actual:SELECTDAY(GETDATE())
Para mostrar solo el mes actual:SELECTMONTH(GETDATE())
Para mostrar solo el ao actual:SELECTYEAR(GETDATE())
DATEPART: Retorna la parte especfica de una fecha:Para mostrar el ao actual:SELECTDATENAME(YEAR,GETDATE())
Para mostrar solamente el nmero mes actual:SELECTDATEPART(MONTH,GETDATE())
Para mostrar cuantas semanas han transcurrido hasta ahora:SELECTDATEPART(WEEK,GETDATE())
Para mostrar el nmero de das transcurridos del ao:
-
8/2/2019 Gua SQL Server 2008
9/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
SELECTDATEPART(DAYOFYEAR,GETDATE())
Para mostrar el da del mes actual:SELECTDATEPART(DAY,GETDATE())
Para mostrar cuantas horas lleva el da actual:SELECTDATEPART(HOUR,GETDATE())
Para mostrar los minutos de la hora actual:
SELECTDATEPART(MINUTE,GETDATE())Para mostrar los segundos que lleva el minuto de la hora actual:SELECTDATEPART(SECOND,GETDATE())
Para mostrar los milisegundos que lleva el segundo del minuto de la hora actual:SELECTDATEPART(MILLISECOND,GETDATE())
DATENAME: Retorna el nombre de la parte especfica de una fecha:Para mostrar el ao actual:SELECTDATENAME(YEAR,GETDATE())Para mostrar solamente el nombre mes actual:SELECTDATENAME(MONTH,GETDATE())
Para mostrar el nmero de das transcurridos del ao:SELECTDATENAME(DAYOFYEAR,GETDATE())
Para mostrar el da actual:SELECTDATENAME(DAY,GETDATE())
Para mostrar el nombre del da actual:SELECTDATENAME(WEEKDAY,GETDATE())
DATEADD: Para agregar aos, meses, das, etc., a una fecha dada:Para agregar n aos a una fecha:SELECTDATEADD(YEAR, Cantidad,'YYYY-MM-DD')
Para agregar n meses a una fecha:SELECTDATEADD(MONTH, Cantidad,'YYYY-DD-MM')
Para agregar n das a una fecha:SELECTDATEADD(DAY, Cantidad,'YYYY-DD-MM')
Para agregar n horas a la fecha actual:SELECTDATEADD(HOUR, Cantida,GETDATE())
Para agregar n minutos a la fecha actual:SELECTDATEADD(MINUTE, 5,GETDATE())
As sucesivamente para las dems.
DATEDIFF: Para calcular el intervalo de tiempo entre dos fechas:
Para calcular los aos que hay de diferencia:SELECTDATEDIFF(YEAR,'YYYY-DD-MM','YYYY-DD-MM')Para calcular los meses que hay de diferencia:SELECTDATEDIFF(MONTH,'YYYY-DD-MM','YYYY-DD-MM')
Para calcular los das que hay de diferencia:SELECTDATEDIFF(DAY,'YYYY-DD-MM','YYYY-DD-MM')
Para calcular las horas que hay de diferencia:SELECTDATEDIFF(HOUR,'YYYY-DD-MM','YYYY-DD-MM')
Para convertir una fecha:SELECTCAST(FechaASDATETIME)
-
8/2/2019 Gua SQL Server 2008
10/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
CAST: Para cambiar el tipo de dato de un campo:SELECTCAST(CampoASNuevoTipoDato(Tamao))FROMTabla
UNION:Consiste en tomar dos tablas y obtener una tabla con las filas de las dos tablas,en el resultado aparecern las filas de una tabla y, a continuacin, las filas de la otratabla. Las dos tablas deben tener el mismo nmero de columnas y el mismo tipo dedatos. La tabla resultante hereda los encabezados de la primera tabla y solo puede haberuna nica clausula ORDER BY (si se quiere) al final:SELECTTabla1.CampoFROMTabla1UNIONSELECTTabla2.CampoFROMTabla2
ORDERBYCampo
Si se desea hacer la unin con ms tablas, se agrega otro UNION con la misma sintaxis.
EXCEPT: Aparecen en la tabla resultante los registros de la primera tabla que noaparecen en la segunda:SELECTTabla1.CampoFROMTabla1EXCEPTSELECTTabla2.Campo
FROMTabla2
INTERCECT: En el resultado de la interseccin aparecen las filas que estnsimultneamente en las dos tablas:SELECTTabla1.CampoFROMTabla1INTERSECT
SELECTTabla2.CampoFROMTabla2
Se obtiene una tabla con los campos de la primera tabla unidos a los campos de lasegunda tabla, y los registros de la tabla resultante son todas las posiblesconcatenaciones de los registros de la primera tabla con los registros de la segundatabla. Se agrega un WHERE para relacionar las dos tablas, la PK de una tabla con la FKde la otra:SELECTTabla1.Campo,Tabla2.Campo
FROMTabla1,Tabla2WHERETabla1.CampoPK=Tabla2.CampoFK
-
8/2/2019 Gua SQL Server 2008
11/12
Diego A. Carrin Neira / Ing. Sistemas / 2012
Si se quiere relacionar con una tercera tabla, se aade un AND al final del WHERE con elnombre de la siguiente tabla con la misma sintaxis:SELECTTabla1.Campo,Tabla2.Campo,Tabla3.CampoFROMTabla1,Tabla2WHERETabla1.CampoPK=Tabla2.CampoFK ANDTabla2.CampoPK=Tabla3.CampoPK
Permite combinar registros de dos o ms tablas en una base de datos relacional. Losposibles tipos de JOIN son: CROSS, INNER, LEFT, RIGHT, SELF, OUTER FULL.
CROSS JOIN: Retorna el producto cartesiano de dos o ms tablas, es decir, combinacada registro de una tabla con cada registro de otra tabla. CROSS JOIN no debera llevarla clausula ON:SELECT*FROMTabla1CROSSJOINTabla2
El CROSS, casi no se utiliza, ya que solo se puede utilizar una coma (,) para separar las
tablas:SELECT*
FROMTabla1,Tabla2
INNER JOIN: Se utiliza para cuando quiera relacionar dos tablas que tienen campos encomn (mismo tipo de dato y tamao) en una o ms columnas:SELECTTabla1.Campo,Tabla2.CampoFROMTabla1INNERJOINTabla2ONTabla1.CampoPK=Tabla2.CampoFK
Si se quiere relacionar con una tercera tabla, se aade INNER JOIN al final del ON con elnombre de la siguiente tabla y con la misma sintaxis:SELECTTabla1.Campo,Tabla2.Campo,Tabla3.CampoFROMTabla1INNERJOINTabla2ONTabla1.CampoPK=Tabla2.CampoFKINNERJOINTabla3ONTabla2.CampoPK=Tabla3.CampoPK
LEFT JOIN: Se utiliza cuando hay registros de la primera tabla que noestn relacionados con los registros de la segunda tabla y nos interesa que salgan en elresultado:SELECTTabla1.Campo,Tabla2.CampoFROMTabla1LEFTJOINTabla2ONTabla1.CampoPK=Tabla2.CampoFK
RIGHT JOIN: Se utiliza cuando hay registros de la segunda tabla que noestn relacionados con los registros de la primera tabla y nos interesa que salgan en elresultado:SELECTTabla1.Campo,Tabla2.CampoFROMTabla1RIGHTJOINTabla2ONTabla1.CampoPK=Tabla2.CampoFK
OUTER JOIN FULL JOIN: Combina los resultados de dos o ms tablas, tengan o nocoincidencia entre s:SELECTTabla1.Campo,Tabla2.CampoFROMTabla1FULLJOINTabla2ONTabla1.CampoPK=Tabla2.CampoFK
http://es.wikipedia.org/wiki/Registro_%28base_de_datos%29http://es.wikipedia.org/wiki/Tabla_%28base_de_datos%29http://es.wikipedia.org/wiki/Base_de_datos_relacionalhttp://es.wikipedia.org/wiki/Base_de_datos_relacionalhttp://es.wikipedia.org/wiki/Tabla_%28base_de_datos%29http://es.wikipedia.org/wiki/Registro_%28base_de_datos%29 -
8/2/2019 Gua SQL Server 2008
12/12
Diego A Carrin Neira / Ing Sistemas / 2012
SELF JOIN: Se utiliza cuando un campo de una tabla debe referenciar un campodiferente en la misma tabla.
top related