14.- transact sql avanzado
TRANSCRIPT
-
8/17/2019 14.- Transact SQL Avanzado
1/34
TRANSACT SQL
T-SQL
-
8/17/2019 14.- Transact SQL Avanzado
2/34
TRANSACT-SQL• SQL (Structured Query Language) es un
lenguaje estructurado de interrogación y
administración de BD
• !Cómo "unciona SQL#
$eticiónSQL
Datos
Base deDatos
Sistema%estor de
BD
-
8/17/2019 14.- Transact SQL Avanzado
3/34
TRANSACT-SQL
• TRANSACT-SQL (T-SQL) es el lenguajede BD &ue usa 'S SQL Serer **+
T-SQL incluye las siguientes categor,asDQL (Data Query Language) .tili/adas 0arao1tener datos de BD 2jem0lo S2L2CTDDL (Data De3nition Language) .tili/adas 0ara
crear4 alterar o 1orrar o1jetos de BD 2jem0loCR2AT24 ALT2R y DR5$D'L (Data 'odi3cation Language) .tili/adas enla interrogación y mani0ulación de datos en
es&uemas ya e6istentes 2jem0lo 7NS2RT4.$DAT2 8 D2L2T2
-
8/17/2019 14.- Transact SQL Avanzado
4/34
TRANSACT-SQL
• T-SQL incluye las siguientes categor,as – TCL (Transaction Control Language) .tili/adas
0ara con3rmar o restaurar transacciones deBD 2jem0lo C5''7T4 R5LLBAC9
– DCL (Data Control Language) .tili/adas en elcontrol de acceso a datos en la BD 2jem0lo%RANT y R2:592
– CCL (Cursor Control Language) .tili/adas
0ara o0erar so1re 3las indiiduales de unata1la resultado &ue consta de arios registros2jem0lo D2CLAR2 C.RS5R4 ;2TC< 7NT5 y.$DAT2 =
-
8/17/2019 14.- Transact SQL Avanzado
5/34
DQL (Data Query Language)
Sentencia SELECT no puede escribirse sin lacláusula FROM. La sentencia SELECT recupera
flas de una o más tablas y su sintaxis mássimple esSELECT seleccionar los cam0os &ue deseamosrecu0erar de la 1ase de datos4 se0arados 0or comasSi se es0eci3ca el s,m1olo >4 se o1tendr?n todos los
cam0os de la ta1laITO crea una nuea ta1la en el gru0o de arc@ios0redeterminado e inserta las 3las resultantes de laconsulta en ella
FROM tabla origen!"ERE condición de origen#RO$% &' e60resión de agru0amiento"()I# condición de 1s&uedaOR*ER &' ordenado 0or ASC ascendente D2SCdescendente
Si if d
-
8/17/2019 14.- Transact SQL Avanzado
6/34
Si,nifcado
SELECT$ala1ra clae &ue indica &ue la sentencia de
SQL &ue &ueremos ejecutar es de selección
(LL
7ndica &ue &ueremos seleccionar todos los
alores2s el alor 0or de"ecto y no suele
es0eci3carse casi nunca
*ISTICT 7ndica &ue &ueremos seleccionar sólo losalores distintos
FROM
7ndica la ta1la (o ta1las) desde la &ue
&ueremos recu0erar los datos 2n el caso de
&ue e6ista m?s de una ta1la se denomina a la
consulta Fconsulta com1inadaF o FjoinF 2n las
consultas com1inadas es necesario a0licar unacondición de com1inación a traGs de una
cl?usula !"ERE
!"ERE
2s0eci3ca una condición &ue de1e cum0lirse
0ara &ue los datos sean deueltos 0or la
consulta Admite los o0eradores
lógicos (* y OR
#RO$% &'
2s0eci3ca la agru0ación &ue se da a los datos
Se usa siem0re en com1inación con "unciones
agregadas
2s0eci3ca una condición &ue de1e cum0lirse
0ara los datos2s0eci3ca una condición &ue
de1e cum0lirse 0ara &ue los datos seandeueltos 0or la consulta Su "uncionamiento
-
8/17/2019 14.- Transact SQL Avanzado
7/34
He aquí algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:
Seleccona los campos !nom"re! # !apelldos! de la ta"la !clentes!.
SELECT nombre,apellidos FROM clentes$
SELECT clentes.nom"re% producto FROM clentes% productos;
Selecciona el campo 'nombre' de la tabla 'clientes', y el campo 'producto' de la tabla
productos
!ay "ue tener en cuenta "ue si dos tablas poseen el mismo nombre de campo #un 'nombre'
de cliente y un 'nombre' de productos, $ay "ue especi%icar tambi&n la tabla a la cualpertenece dic$o campo, ya, "ue de lo contrario, seleccionara ambos nombres(
SELECT peddos.& FROM peddos$ o SELECT & FROM peddos;
Selecciona todos los campos de la tabla 'pedidos'
Select !'om"re : ! ( space)*+% nom"re FROM clentes
El resultado es )ombre* +ere
http://www.monografias.com/trabajos11/sercli/sercli.shtmlhttp://www.monografias.com/trabajos12/elproduc/elproduc.shtmlhttp://www.monografias.com/trabajos12/elproduc/elproduc.shtmlhttp://www.monografias.com/trabajos11/sercli/sercli.shtmlhttp://www.monografias.com/trabajos11/sercli/sercli.shtmlhttp://www.monografias.com/trabajos12/elproduc/elproduc.shtmlhttp://www.monografias.com/trabajos12/elproduc/elproduc.shtmlhttp://www.monografias.com/trabajos11/sercli/sercli.shtml
-
8/17/2019 14.- Transact SQL Avanzado
8/34
Clasula WhereLa cla-sula .!ERE es opcional, y permite seleccionar "u& re/istros aparecer0n en la
consulta #si no se especi%ica aparecer0n todos los re/istros( +ara indicar este con1unto
de re/istros se $ace uso de criterios o condiciones, "ue no es m0s "ue una comparaci2n
del contenido de un campo con un determinado 3alor #este 3alor puede ser constante #3alor predeterminado(, el contenido de un campo, una 3ariable, un control, etc(
He aquí algunos ejemplos que lustran el uso de esta cl,usula: SELECT & FROM clentes -HERE nom"re!/LFRE0O!$
Selecciona todos los campos de la tabla 'clientes', pero los re/istros de todos a"uellos
clientes "ue se llamen '4LFRE5O' SELECT & FROM a"onados -HERE pro1nca/rca! OR pro1nca2/nto3agasta4
OR pro1ncaSerena!$
Selecciona todos los campos de la tabla 'abonados', pero los re/istros de todos los
abonados de las pro3incias de 64rica7', 4nto%a/asta' o 6Serena' SELECT & FROM a"onados -HERE edad567 /'0 edad89$
Selecciona todos los abonados con edades comprendidas entre los 89 y los : a
-
8/17/2019 14.- Transact SQL Avanzado
9/34
SELECT & FROM daro -HERE 3ec>?
SELECT & FROM daro -HERE 3ec?A6?@>=$
Selecciona los apuntes de 'diario' realiados en =ulio de 8>>?
SELECT & FROM clentes -HERE nom"re LDE 2/L!$
Selecciona los clientes cuyo nombre comience con los caracteres '4L'
SELECT & FROM clentes -HERE apelldos LDE !E!$
Selecciona los clientes cuyos apellidos terminen con los caracteres 'EA'
SELECT & FROM clentes -HERE apelldos LDE !/MO!
Selecciona los clientes cuyos apellidos conten/an, en cual"uier posici2n, los caracteres
'A4MO'
SELECT & FROM clentes -HERE cudad )2Santago!% 2Rancagua!%
2C
-
8/17/2019 14.- Transact SQL Avanzado
10/34
Cl0usula Order By
La cl0usula OR5ER B suele escribirse al %inal de un mandato en
SDL 5ic$a cl0usula establece un criterio de ordenaci2n de los datos
de la consulta, por los campos "ue se especi%ican en dic$a cl0usula
La potencia de ordenaci2n de dic$a cl0usula radica en laespeci%icaci2n de los campos por los "ue se ordena, ya "ue el
pro/ramador puede indicar cu0l ser0 el primer criterio de ordenaci2n,
el se/undo, etc, as como el tipo de ordenaci2n por ese criterio*
ascendiente o descendiente
#( OR5ER B campo8 4SC@5ESC,campoG 4SC@5ESC
La palabra reser3ada 4SC es opcional e indica "ue el orden del
campo ser0 de tipo ascendiente #HI> @4IA(, mientras "ue, si se
especi%ica la palabra reser3ada 5ESC, se indica "ue el orden del
campo es descendiente #>IH AI4( Si no se especi%ica nin/una deestas palabras reser3adas, la cl0usula OR5ER B toma, por de%ecto,
el tipo ascendiente 4SC
H í l j l
-
8/17/2019 14.- Transact SQL Avanzado
11/34
He aquí algunos ejemplos:
SELECT nom"re% apelldos% telG3ono FROM clentes OR0ER ; apelldos% nom"re $
Crea una a/enda tele%2nica de 'clientes' ordenada por 'apellidos' y 'nombre'
SELECT & FROM peddos OR0ER ; 3ec
-
8/17/2019 14.- Transact SQL Avanzado
12/34
ElmnacIn 0n,mca 0e Regstros
KDui&n no $a sentido la necesidad de eliminar de un /olpe un /rupo
de re/istros en com-n , en lu/ar de $acerlo uno por uno Esta
operaci2n puede ser muc$o m0s $abitual de lo "ue parece en un
principio y, por ello, el len/ua1e SDL nos permitir0 eliminar re/istrosDue cumplan las condiciones o criterios "ue nosotros le indi"uemos
a tra3&s de la sentencia 5ELETE, cuya sintais es la si/uiente*
0ELETE FROM ta"las -HERE crteros
5onde el par0metro 'tablas' indica el nombre de las tablas de las
cuales se desea eliminar los re/istros, y, el par0metro 'criterios',representa las comparaciones o criterios "ue deben cumplir los
re/istros a eliminar, respetando a a"uellos re/istros "ue no los
cumplan Si por e1emplo I "uisi&ramos eliminar todos los pedidos
realiados por el cliente cuyo c2di/o sea : en el da de $oy,utiliaramos la si/uiente sentencia*0ELETE FROM peddos -HERE Jcodgo clenteK9 /'0 3ec
-
8/17/2019 14.- Transact SQL Avanzado
13/34
/rtmGtca Con SqlKDui&n no $a ec$ado en %alta el saber el total de in/resos o de
/astos de esta %ec$a a esta otra
KDui&n no $a deseado saber la media de 3entas de los comerciales
en este mes NTran"uilos* el len/ua1e SDL nos permitir0 resol3erestas y otras cuestiones de %orma muy sencilla, ya "ue posee una
serie de %unciones de car0cter aritm&tico*
Sumas O Totales
+ara sumar las cantidades num&ticas contenidas en un determinado
campo, $emos de utiliar la %unci2n SPM, cuya sintais es la
si/uiente* SPM#epresi2n(
5onde 'epresi2n' puede representar un campo o una operaci2n con
al/-n campo
La %unci2n SPM retorna el resultado de la suma de la epresi2nindicada en todos los re/istros "ue son a%ectados por la consulta
Qeamos al/unos e1emplos*
SELECT SM)undades+ FROM peddos$
http://www.monografias.com/trabajos7/cofi/cofi.shtmlhttp://www.monografias.com/trabajos10/rega/rega.shtmlhttp://www.monografias.com/trabajos12/evintven/evintven.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos34/el-caracter/el-caracter.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos34/el-caracter/el-caracter.shtmlhttp://www.monografias.com/trabajos7/mafu/mafu.shtmlhttp://www.monografias.com/trabajos12/evintven/evintven.shtmlhttp://www.monografias.com/trabajos10/rega/rega.shtmlhttp://www.monografias.com/trabajos7/cofi/cofi.shtml
-
8/17/2019 14.- Transact SQL Avanzado
14/34
SELECT SM)undades+ FROM peddos$
Retorna el total de unidades pedidas #la suma de todos los 3alores almacenados en el campo
'unidades' de la tabla 'pedidos'(
SELECT SM)ngresosNgastos+ /S saldo FROM daro$
Retorna el saldo %inal de una tabla llamada 'diario'
SELECT SM)undades+ /S total FROM peddos -HERE 3ec
-
8/17/2019 14.- Transact SQL Avanzado
15/34
Palores Mínmos M,mos
Tambi&n es posible conocer el 3alor mnimo o m0imo de un campo, mediante las %unciones
M) y M4, cuyas sintais son las si/uientes*
M')epresIn+
M/)epresIn+
He aquí algunos ejemplos:
SELECT M')undades+ /S mnmo FROM peddos$
Retorna el pedido m0s pe"ue
-
8/17/2019 14.- Transact SQL Avanzado
16/34
Contar RegstrosOtra operaci2n muy com-n es realiar un recuento de re/istros 4un"ue a primera 3ista
pueda parecer poco pr0ctico, la realidad es bien distinta KD "ui&n no le /ustara conocer
cu0ntos pedidos se $an realiado $oy KO comprobar cu0ntos pa/os se $an realiado por
una determinada cantidad KO saber cu0ntos clientes cumplen $oy a= /'0 =B?A?@>=$
Retorna el total, la media, el m0imo y el mnimo de unidades pedidas, y el n-mero de
pedidos realiados, durante el primer semestre de 8>>?
OmsIn 0e Regstros 0uplcados
http://www.monografias.com/trabajos/eltelefono/eltelefono.shtmlhttp://www.monografias.com/trabajos/eltelefono/eltelefono.shtml
-
8/17/2019 14.- Transact SQL Avanzado
17/34
OmsIn 0e Regstros 0uplcados
En una consulta podra ser -til omitir re/istros "ue est&n duplicados +or e1emplo,
en nuestros pedidos $ay duplicaci2n, puesto "ue un cliente realia 3arios pedidos
en el mismo da Dui0 necesitemos una $istoria para conocer los das y los
clientes "ue realiaron al/-n pedido, pero no necesitaremos toda la lista, si no "ue
nos di/a, -nicamente, mediante una lnea, "u& cliente reali2 al/-n pedido y en"u& da +ara ello, utiliaremos el predicado 5ST)CT, cuya sintais es la
si/uiente*
SELECT 0ST'CT lsta4campos ...
El predicado 5ST)CT omite a"uellos re/istros duplicados en los campos
especi%icados En el problema epuesto, utiliaremos la si/uiente sentencia*
SELECT 0ST'CT Jcodgo clenteK%3ec
-
8/17/2019 14.- Transact SQL Avanzado
18/34
rupo 0e Regstros
4 3eces, puede ser necesario mostrar un resumen de los datos "ue
tenemos, especi%icando el total I por e1emplo I, de los in/resos y de
los /astos de cada da, en lu/ar de 3isualiar todos los in/resos y
/astos realiados al detalle +ara lle3ar a cabo esta tarea $emos detener en cuenta, en primer lu/ar, ba1o "u& campo se 3an a a/rupar
los datos #en lo epuesto, sera el campo %ec$a(, y, a continuaci2n,
realiar la consulta mediante la cl0usula ROP+ B, cuya sintais es
la si/uiente*
SELECT ... FROM ... J-HERE ...K RO ; lsta4camposB0sicamente, la cl0usula RO ; a/rupa o combina re/istros con
id&ntico 3alor en los campos especi%icados, en un -nico re/istro Esto
si/ni%ica "ue en un s2lo re/istro se mostrar0 la in%ormaci2n com-n a
muc$os re/istros, como si di1&semos, al terminar las cuentas* U$oy se$a in/resado tanto y se $a /astado tanto, con lo "ue $ay un bene%icio
de tantoU, sin necesidad de especi%icar cada mo3imiento #cada
in/reso, cada cobro, cada pa/o, cada %actura, cada trans%erencia
bancaria, etc(
Imaginemos que queremos hacer un resumen de nuestros pedidos, y queremos saber cu0ntos
http://www.monografias.com/trabajos7/regi/regi.shtmlhttp://www.monografias.com/trabajos7/sisinf/sisinf.shtmlhttp://www.monografias.com/trabajos5/cuentas/cuentas.shtmlhttp://www.monografias.com/trabajos15/kinesiologia-biomecanica/kinesiologia-biomecanica.shtmlhttp://www.monografias.com/trabajos14/documenmercant/documenmercant.shtmlhttp://www.monografias.com/trabajos14/documenmercant/documenmercant.shtmlhttp://www.monografias.com/trabajos15/kinesiologia-biomecanica/kinesiologia-biomecanica.shtmlhttp://www.monografias.com/trabajos5/cuentas/cuentas.shtmlhttp://www.monografias.com/trabajos7/sisinf/sisinf.shtmlhttp://www.monografias.com/trabajos7/regi/regi.shtml
-
8/17/2019 14.- Transact SQL Avanzado
19/34
pedidos y unidades han realizado cada uno de nuestros clientes. Para ello, se escribira una sentenciacomo &sta:SELECT codigo_cliente, count(codigo_cliente) AS num_pedidos, SUM(unidades) AS cantidadFROM pedidos GROU !" codigo_cliente#
Para saber cuántos pedidos se realizaron cada día, escribiríamos esta línea:
SELECT $ec%a, count($ec%a) AS num_pedidos FROM pedidos GROU !" $ec%a#
+ara conocer cu0ntas unidades se pidieron cada da, tipearamos esta sentencia*SELECT 3ec>?
+ara conocer una estadtica de pedidos diaria, utiliaremos la si/uiente sentencia*
SELECT 3ec
-
8/17/2019 14.- Transact SQL Avanzado
20/34
Las consultas realizadas hasta ahora requeran de una dosis de habilidad paraconseguir crear un conunto de datos que tu!iese in"ormaci2n combinada de dostablas. Pero, podemos combinar datos de una manera mucho m0s sencilla y e"icaz:mediante las operaciones #$I%, las cuales permiten combinar datos de dos tablas.
La operaci2n #$I% m0s com-n es I%%&' #$I%, cuya sinta(is es:ta&la **ER +O* ta&la O*ta&la-campo_comUn.ta&la-campo_comUn)onde tabla* y tabla+ representan el nombre de las tablas a combinar. mbas tablashan de tener un campo com-n o igual para poder realizar correctamente lacombinaci2n de los datos+ero 3eamos un e1emplo para entenderlo me1or*
SELECT & FROM peddos ''ER VO' clentes O' peddos.codgo4clente
clentes.codgo4clente;
El resultado ser0 un con1unto de re/istros con los datos de las dos tablas Este
con1unto poseer0 el nombre de todos los campos de la tabla pedidos y de todos los
campos de la tabla clientes En cada re/istro aparecer0n los datos relacionados, esdecir, "ue en un pedido aparecer0n los datos del mismo y los datos personales del
cliente "ue reali2 el pedido
La operaci2n ))ER =O) combina los datos de las dos tablas siempre "ue $aya
3alores coincidentes en los campos comunes o enlaados
&(isten tambi&n otras dos "ormas de combinar: L&- #$I% y 'I/0 #$I% mbas
-
8/17/2019 14.- Transact SQL Avanzado
21/34
&(isten tambi&n otras dos "ormas de combinar: L&- #$I% y 'I/0 #$I%. mbastienen la misma sinta(is que I%%&' #$I%, pero estas operaciones incluyen todos los registros de una tabla y aquellos registros de la otra en que los campos comunes sean iguales. &n la operaci2n L&- #$I%, incluye todos los registros de la primeratabla 1par0metro tabla*2 y aquellos registros de la segunda tabla 1par0metro tabla+2en que los campos comunes sean iguales. &n la operaci2n 'I/0 #$I% ocurre locontrario: incluye todos los registros de la segunda tabla y aquellos registros de laprimera tabla en que los campos comunes sean iguales.
unque la di"erencia entre las tres operaciones parezca ine(istente, en realidad s e(iste. La operaci2n I%%&' #$I% realiza una combinaci2n con todos aquellos
registros de las dos tablas en que el campo com-n de ambas tenga el mismo !alor, mientras que las operaciones L&- #$I% y 'I/0 #$I% realizan la combinaci2nde todos los registros de la tabla que combinan 1ya sea la primera para L&- #$I% o la segunda para 'I/0 #$I%2, aunque en la otra tabla, en el campo com-n no hayacoincidencia. La prueba se !e r0pidamente si se introduce un c2digo de cliente en elcampo campo3cliente de la tabla pedidos que no e(ista:SELECT & FROM peddos ''ER VO' clentes O' peddos.codgo4clente clentes.codgo4clente$
&l registro que contiene el pedido del cliente que no e(iste no aparece,
-
8/17/2019 14.- Transact SQL Avanzado
22/34
&l registro que contiene el pedido del cliente que no e(iste no aparece,puesto que no hay coincidencia. 4i escribimos:SELECT / FROM pedidos LEFT +O* clientes O*pedidos-codigo_cliente .clientes-codigo_cliente#
$bser!aremos que aparecen todos los registros de la tabla pedidos,incluido aquel donde indicamos que el pedido "ue solicitado por elcliente ine(istente, pero en los campos relacionados 1campos de latabla clientes2 no habr0 ning-n dato relacionado o combinado. 4iahora escribimos lo siguiente:
SELECT / FROM pedidos LEFT +O* clientes O*pedidos-codigo_cliente .clientes-codigo_cliente# obtendremos el mismo resultado que con la operaci2n I%%&' #$I%,puesto que se !isualizan todos aquellos registros que e(isten en
clientes y aquellos que coincidan con el campo cla!e en la tablapedidos. Como el c2digo ine(istente no e(iste en la tabla clientes, esteregistro no aparece. Para comprobar el e"ecto a-n meor, modi"icar elc2digo ine(istente en el registro de la tabla pedidos por uno que s e(ista. ras ello, !ol!er a introducir las sentencias 45L para
comprobar la di"erencia.
Lo más normal es utilizar la operaci6n I%%&' #$I% para omitir aquellos registros
-
8/17/2019 14.- Transact SQL Avanzado
23/34
Lo más normal es utilizar la operaci6n I%%&' #$I% para omitir aquellos registrosno coincidentes, aunque las operaciones L&- #$I% y 'I/0 #$I% nos puedenser!ir para descubrir entradas err6neas en c6digos. 0eamos algunos e1emplos m,s2
SELECT $ec%a, codigo_p3oducto, unidades, apellidos, nom&3e FROMpedidos **ER +O* clientes O* pedidos-codigo_cliente .clientes-codigo_cliente 45ERE $ec%a67898:;7#Combina pedidos y clientes, !isualizando aquellos pedidos realizados antes del 7 de&nero de *889 por los campos "echa, codigo3producto, unidades, apellidos ynombre.
SELECT $ec%a, unidades, p3oductos-/ FROM pedidos **ER +O*p3oductos O* pedidos-codigo_p3oducto . p3oductos-codigo_p3oducto#Combina pedidos y productos, !isualizando los pedidos por los campos "echa yunidades, y por todos los campos de la tabla productos.SELECT $ec%a, unidades, p3oductos-/ FROM pedidos **ER +O*p3oductos O* pedidos-codigo_p3oducto . p3oductos-codigo_p3oducto
OR'ER !" $ec%a, p3oducto#&l resultado ser0 el mismo que con el anterior eemplo, sal!o que la presentaci2n delos registros se realizar0 ordenada por la "echa y el nombre del producto.
5ML #5ata Modi%ication Lan/ua/e(
-
8/17/2019 14.- Transact SQL Avanzado
24/34
5ML #5ata Modi%ication Lan/ua/e('SERT
Pna sentencia INSERT de SDL a/re/a uno o m0s re/istros a una #y s2lo una( tabla en una
base de datos relacional
Forma ",sca 'SERT 'TO ''tabla'' #''columna8'', ''columnaG, ''( P/LES #''3alor8'', ''3alorG,''(
Las cantidades de columnas y 3alores deben ser i/uales Si una columna no se especi%ica, le
ser0 asi/nado el 3alor por omisi2n Los 3alores especi%icados #o implcitos( por la
sentencia )SERT deber0n satis%acer todas las restricciones aplicables Si ocurre un error de
sintais o si al/una de las restricciones es 3iolada, no se a/re/a la %ila y se de3uel3e un error
Ejemplo
'SERT 'TO agenda4tele3onca )nom"re% numero+ P/LES )!Ro"erto VeldreW!%977B7+$
nsercones en mUltples 3las
Pna caracterstica de SDL #desde SDLI>G( es el uso de constructores de filas para insertar
m-ltiples %ilas a la 3e, con una sola sentencia SDL*
'SERT 'TO ''tabla'' #''columna8'', ''columnaG, ''(
P/LES #''3alor8a'', ''3alor8b,''(, #''3alueGa'', ''3alueGb,''(,Esta caracterstica es soportada por 5BG, +ost/reSDL #desde la 3ersi2n 9G(, MySDL, y !G
E1emplo #asumiendo "ue 'nombre' y 'n-mero' son las -nicas columnas en la tabla
'a/endaJtele%onica'(*
'SERT 'TO agenda4tele3onca P/LES )!Ro"erto Fern,ndeW!% !977B7!+% )!/lejandro
Sosa!% !9B!+$
ISERT ITO :2ND2D5R (C5D:2N4
-
8/17/2019 14.- Transact SQL Avanzado
25/34
ISERT ITO :2ND2D5R (C5D:2N4N5':2N)
)(L$ES (H4 I$ABL5 'AR'5LI)J
ISERT ITO B2B7DAS (C5DB2B4 N5'B2B4$R2B2B4 C5D2N:4 CANB2B4 ST5C94
C5DTB2))(L$ES (K4 IB7L 8 $A$I4 M**4 M4 4 K**4M)J
0/TE
P t i UPDATE d SDL tili d di%i l l d 1 t d
-
8/17/2019 14.- Transact SQL Avanzado
26/34
Pna sentencia UPDATE de SDL es utiliada para modi%icar los 3alores de un con1unto de
re/istros eistentes en una tabla
El len/ua1e SDL nos permite solucionar este problema en cuesti2n de pocos se/undos, ya
"ue posee una sentencia llamada Ppdate, "ue se ocupa de los c0lculos y reemplaos Su
sintais es la si/uiente*
0/TE lsta4ta"las SET camponue1o41alor J%camponue1o41alorK J-HERE...K
0/TE ;E;0/S
SET RE;E; 6
-HERE CO0;E; 6
0/TE ;E;0/S SET RE;E; @
-HERE 'OM;E; !F/'T/2 ma/inemos por un momento "ue el precio de los productos $a subido un 8HV, y "ue
tenemos "ue actualiar nuestra tabla de productos con el nue3o importe
0/TE productos SET p1cp1c&6.6
La sentencia P+54TE es muy 3ers0til y potente, por lo "ue podemos realiar reemplaoscondicionantes, ya "ue permite la cl0usula .!ERE 5e ello se deduce "ue I por e1emplo I, si
se desea ba1ar un 8HV el importe del se/uro a a"uellos ase/urados "ue cumplan m0s de
dos a
-
8/17/2019 14.- Transact SQL Avanzado
27/34
KDui&n no $a sentido la necesidad de eliminar de un /olpe un /rupo de re/istros en com-n,
en lu/ar de $acerlo uno por uno Esta operaci2n puede ser muc$o m0s $abitual de lo "ue
parece en un principio y, por ello, el len/ua1e SDL nos permitir0 eliminar re/istros "ue
cumplan las condiciones o criterios "ue nosotros le indi"uemos a tra3&s de la sentencia
5ELETE, cuya sintais es la si/uiente*
'ELETE FROM ta&las 45ERE c3ite3iosPna sentencia DELETE de SDL borra uno o m0s re/istros eistentes en una tabla 0ELETE
FROM QE)5E5OR
-HERE CO5QE) W :
55L #5ata 5e%inition Lan/ua/e(
-
8/17/2019 14.- Transact SQL Avanzado
28/34
# / / (
Create Ta"le: Crea una tabla
CRE4TE T4BLE nombre Tabla
#nombreJcampo8 TipoJdeJ3ariable #tama
-
8/17/2019 14.- Transact SQL Avanzado
29/34
CRE4TE T4BLE nombre Tabla
4S
SELECT #Sentencia SDL(;E1emplo
CRE4TE T4BLE CopiaJClientes
4S
SELECT [ FROM Clientes .!ERE Modi% W 8;
Esto, lo "ue realia, es una Select y el resultado de la misma se inserta como una
tabla nue3a
/lter Ta"le* Esta instrucci2n 55L se suele utiliar para cambiar caractersticas de
-
8/17/2019 14.- Transact SQL Avanzado
30/34
las tablas, como pueden ser insertar campos, modi%icar campos, a
-
8/17/2019 14.- Transact SQL Avanzado
31/34
necesario "ue en la tabla re%erenciada est& de%inida la +rimary Xey, por"ue la relaci2n se crea entre la
+rimary Xey de la tabla re%erenciada y las columnas "ue indicamos en la cl0usula Forei/n Xey
4LTER T4BLE )ombre Tabla
455 CO)STR4)T )ombreJRestricci2n
FORE) XE #)ombre de Campo8, )ombre de Campo G, etc( REFERE)CES Tabla Re%erenciada;
E1emplo
4LTER T4BLE Cliente
455 CO)STR4)T %YJCodi/oJCliente
FORE) XE #ClJCliente(
REFERE)CES )ominas;
/Xadr Campo 'ue1o a Ta"la* Sir3e para a
-
8/17/2019 14.- Transact SQL Avanzado
32/34
4LTER T4BLE )ombre Tabla
MO5F )ombreJCampo )ue3asJCondiciones
)o se pueden borrar ni modi%icar nombres de columnas ya eistentes S2lo se pueden modi%icar las
3ariables de tipo car0cter a otras 3ariables de tipo car0cter si toda la columna est0 compuesta de )PLL,
pero s est0 permitido aumentar el tama
-
8/17/2019 14.- Transact SQL Avanzado
33/34
4LTER T4BLE )ombre Tabla
455 CO)STR4)T CXJ)ombreTablaJ)ombreCampo
C!ECX #Condici2n(;
E1emplo*
4LTER T4BLE Curso
455 CO)STR4)T CXJCursoJ+reCurso
C!ECX # +recurso \ H (;
/lter Constrant * En muc$os casos debemos /arantiar "ue los 3alores de una columna o con1unto
de columnas de una tabla acepten s2lo 3alores -nicos
4LTER CO)STR4)T )ombre Tabla
455 CO)STR4)T )ombre Restricci2n
P)DPE #)ombre Campo 8, )ombre Campo G, etc(;
E1emplo
4LTER T4BLE 4lumno
455 CO)STR4)T PJ4lumnoJ)om4lumno
P)DPE #)om4lumno(;
0rop: Este comando se utilia para eliminar ob1etos de nuestra base de datos Se sueleutiliar la palabra 5rop, a continuaci2n el nombre del ob1eto "ue se desea eliminar #por
-
8/17/2019 14.- Transact SQL Avanzado
34/34
p p, 1 " #p
e1emplo, Table( y por -ltimo, el nombre de dic$o ob1eto #Clientes( Qeamos al/unos e1emplos*
5RO+ )ombreJOb1eto )ombreJElemento C4SC45E CO)STR4)TS;
Si se borra una tabla, se borran, a su 3e, los ndices a ella asociados, 3istas, 3istas creadasa partir de dic$as 3istas, etc
Si se borra una tabla a la "ue otras $acen re%erencia en cla3es eternas $abr0 "ue incluir la
cl0usula C4SC45E CO)STR4)T
E1emplos*
5RO+ T4BLE Clientes
5RO+ QE. n%ormeJClientesJ3]
5RO+ )5E pYJCodi/oJCliente