Curso Basico de SQL Server

download Curso Basico de SQL Server

of 23

Transcript of Curso Basico de SQL Server

ltima actualizacin: 12 de octubre de 2005

SQL Bsico para Sql Server 2000.Curso de formacin interna.

Sql Bsico para Sql Server 2000

TEMARIO

Notas Iniciales sobre curso...........................................................................3 Particularidades en Sql Server 2000............................................................4Notas Iniciales.................................................................................................................................4 Lenguaje SQL .................................................................................................................................41. Clusula SELECT................................................................................................................................... 4 2. Clusula FROM...................................................................................................................................... 6 3. Clusula INTO ...................................................................................................................................... 11 4. Clusula WHERE ................................................................................................................................. 11

Otros.............................................................................................................................................. 16Herramienta bcp ....................................................................................................................................... 16 Bulk Insert .................................................................................................................................................. 18

Cambios bsicos de Mba a Sql Server ......................................................20Tipos.............................................................................................................................................. 20 Creacin de una cadena............................................................................................................... 20 Otros.............................................................................................................................................. 23

Curso de Formacin interna

2

Sql Bsico para Sql Server 2000

Notas Iniciales sobre cursoEste curso va dirigido especialmente a traducir la sintaxis que se utilizaba en Multibase a Sql Server 2000.

En el software cliente de sql server exitste una potente herramienta de consultas llamada Analizador de consultas de Sql Server, que se encuentra en Inicio-Programas-Microsoft Sql Server-Analizador de consultas.

Curso de Formacin interna

3

Sql Bsico para Sql Server 2000

Particularidades en Sql Server 2000Diversos aspectos relacionados con Sql Server y sus diferencias con Multibase

Notas InicialesEl modo de intercalacin de la base de datos de Sql Server que se utiliza en Kewan es: Modem_Spanish_CS_AS

En Kewan, en el servidor de Sql Server se activa el check de: distingue las minsculas de las maysculas.

Lenguaje SQLLa sintaxis para la instruccin SELECT consiste en varias clusulas, la mayora de las cuales son opcionales. Una instruccin SELECT debe incluir al menos una clusula SELECT y una clusula FROM. Las dos clusulas identifican qu columna o columnas de datos recuperar y desde qu tabla o tablas recuperar los datos, respectivamente. Las instruccin SELECT consta de las siguientes clusulas, las cuales deben ir en el orden que se ve a continuacin: SELECT INTO FROM WHERE GROUP BY HAVING ORDER BY

1. Clusula SELECTLa clusula SELECT consiste en una lista de seleccin y posiblemente algunos argumentos opcionales. La lista de seleccin es la lista de expresiones o columnas que se especifican en la clusula SELECT

Curso de Formacin interna

4

Sql Bsico para Sql Server 2000

para indicar qu datos hay que devolver. Se describen en esta seccin los argumentos opcionales y la lista de seleccin.

1.1 ArgumentosSe pueden utilizar los siguientes dos argumentos en la instruccin SELECT para controlar que filas se devuelven:

DISTINCT Devuelve solamente filas nicas. Si la lista de seleccin contiene varias columnas, las filas se considerarn nicas si los valores correspondientes en al menos una de las columnas son diferentes. Para que se dupliquen dos filas deben contener valores idnticos en cada columna.

TOP n [PERCENT] Devuelve solamente las primeras filas del conjunto resultado. Si se especifica PERCENT, solamente el primer porcentaje de las filas se devuelve. Cuando se utiliza PERCENT, debe estar entre 0 y 100. Si la consulta incluye una clusula ORDER BY, las filas se ordenan primero y posteriormente se devuelve el porcentaje del conjunto resultado ordenado. SELECT FROM GO SELECT FROM GO SELECT FROM GO DISTINCT au_fname,au_lname authors TOP 50 PERCENT au fname,au_lname authors TOP 5 au_fname,au_lname authors

1.2 Alias de columna: El uso de una columna alias en la lista de seleccin permite especificar lacabecera de la columna que se desea que aparezca en el resultado. SELECT FROM GO au_fname AS Apellidos ,au_lname AS Nombre authors

1.3 Funciones: COUNT(), MAX(), MIN(), SUM(), AVG()

Curso de Formacin interna

5

Sql Bsico para Sql Server 2000

2. Clusula FROMCombinaciones internasGeneralmente, las combinaciones estn basadas en las claves primarias y externa de las tablas implicadas, aunque no es necesario que tengan claves declaradas explcitamente. SELECT Author=RTRIM(au_lname) + , + au_fname,Titulo= title FROM authors AS A JOIN titleauthors AS TA ON A.au_id=TA.au_id --condiciones de la combinacion JOIN titles AS T ON T.title_id=TA.title_id --condiciones de la combinacin WHERE A.state CA ORDER BY 1 La operacin del anterior ejemplo se denomina combinacin equivalente (INNER JOIN JOIN), que significa que la condicin que vincula las dos tablas est basada en la igualdad. Es la operacin de combinacin ms habitual.

Aunque la sintaxis ANSI JOIN (utiliza la palabra JOIN) es algo ms larga, la sintaxis de JOIN explcita es ms legible.

No existe ninguna diferencia en rendimiento (las operaciones son las mismas).

Combinaciones Externas (outer join de multibase)El JOIN es una buena solucin para realizar una mezcla entre dos tablas, pero conlleva una prdida de informacin, ya que si no existe el enlace entre las dos tablas no muestra las filas existentes de forma individual.

Por ello, aparece el OUTER JOIN (combinacin externa), que tiene el mismo significado que el JOIN pero con la particularidad de que permite mostrar las filas de la primera tabla que no estn relacionadas con la segunda, es decir, muestra todas las filas de la primera tabla, tengan o no correspondencia con la segunda.

LEFT OUTER JOIN TablaA LEFT [OUTER] JOIN TablaB ON condicin_combinacin

Curso de Formacin interna

6

Sql Bsico para Sql Server 2000

LEFT OUTER JOIN devuelve todas las filas para las que existe una conexin entre TablaA y TablaB; adems, devuelv todas las filas de TablaA para las que no existe una fila correspondiente en TablaB. En otras palabras, conserva las filas sin concordancia de TablaA. TablaA se llama a veces la tabla conservada. Al devolver las filas sin concordancia de TablaA, las columnas seleccionadas de TablaB se devuelven como NULL.

RIGHT OUTER JOIN TablaA RIGHT [OUTER] JOIN TablaB ON condicin_combinacin

RIGHT OUTER JOIN devuelve todas las filas para las que existe una conexin entre TablaA y TablaB; adems, devuelv todas las filas de TablaB para las que no existe una fila correspondiente en TablaA. En otras palabras, conserva las filas sin concordancia de TablaB, y en este caso la TablaB es la tabla conservada. Al devolver las filas sin concordancia de TablaA, las columnas seleccionadas de TablaB se devuelven como NULL.

FULL OUTER JOIN TablaA FULL [OUTER] JOIN TablaB ON condicin_combinacin

FULL OUTER JOIN devuelve todas las filas para las que existe una conexin entre TablaA y TablaB; adems, devuelve todas las filas de TablaA para las que no existe una fila correspondiente en TablaB, devolviendo todos los valores seleccionados desde TablaB como NULL. Ademas, devuelve todas las filas de TablaB para las que no existe una fila correspondiente en TablaA, devolviendo todos los valores seleccionados desde TablaA como NULL.FULL OUTER JOIN acta como una combinacin de LEFT JOIN y RIGHT JOIN.

Ejemplo 1:

Multibase: SELECTdiagdate, diagcode, diagdesc, cacodesc, vcodvers, diagmain FROM diag, outer caco WHERE epis_key = $epis_key$ And diag.caco_key = caco.caco_key ORDER BY diagdate

Curso de Formacin interna

7

Sql Bsico para Sql Server 2000

Sql Server SELECT diagdate, diagcode, diagdesc, cacodesc, vcodvers, diagmain FROM diag LEFT JOIN caco ON diag.caco_key = caco.caco_key WHERE epis_key = $epis_key$ ORDER BY diagdate

Ejemplo 2

MBA: SELECT appo.epis_key,appo.appostatcode,appo.pers_keypati, appostat.appostatdesc, book.diardate, pati.pati_hfn,perspati.perssur1,perspati.perssur2,perspati.persname,book.bookhini,book.bookhend,appo. appoharr,agen.agenname,agenproc.agenprocdesc,csta.cstadesclong,persmedi.perssur1,persmedi.perssur2 ,persmedi.persname,appofail.appofaildesc,apporend.apporenddesc,appo.appofailcode,appo.apporendcod e,btimetab.btimetabamou,btimetab.btimetabappointe,btimetab.btimetabhourinit,btimetab.btimetabhour_ end FROM book,agen,btimetab,appo,appostat,epis,pers perspati,pati,csta,bookproc,agenproc,Outer (cstahper,Outer pers persmedi), Outer apporend, Outer appofail WHERE bookproc.bookprocorde = 1 AND csta.cent_key = 2 AND appo.appostatcode IN ('P','D') AND (book.diardate BETWEEN '01/01/2004' AND '02/03/2004') AND appo.appostatcode=appostat.appostatcode AND appo.epis_key=epis.epis_key AND book.agencode=agen.agencode AND book.agencode=btimetab.agencode AND book.btimetabcode=btimetab.btimetabcode AND appo.pers_keypati=perspati.pers_key AND appo.pers_keypati=pati.pers_key AND appo.book_key=book.book_key AND appo.csta_keymake=csta.csta_key AND bookproc.book_key=book.book_key AND bookproc.agenproc_key=agenproc.agenproc_key AND cstahper.pers_key=persmedi.pers_key AND appo.cstahper_keymake=cstahper.cstahper_key AND appo.apporendcode=apporend.apporendcode AND appo.appofailcode=appofail.appofailcode;

Sql Server SELECT appo.epis_key,appo.appostatcode,appo.pers_keypati,appostat.appostatdesc,book.diardate, pati.pati_hfn,perspati.perssur1,perspati.perssur2,perspati.persname,book.bookhini,book.bookhend,

Curso de Formacin interna

8

Sql Bsico para Sql Server 2000

appo.appoharr,agen.agenname,agenproc.agenprocdesc,csta.cstadesclong,persmedi.perssur1,persmedi.pe rssur2, persmedi.persname,appofail.appofaildesc,apporend.apporenddesc,appo.appofailcode,appo.apporendcod e, btimetab.btimetabamou,btimetab.btimetabappointe,btimetab.btimetabhourinit,btimetab.btimetabhour_en d FROM book,agen,btimetab,appostat,epis,pers perspati,pati,csta,bookproc, agenproc,appo left join (cstahper left join pers as persmedi on cstahper.pers_key=persmedi.pers_key ) on appo.cstahper_keymake=cstahper.cstahper_key left join apporend on appo.apporendcode=apporend.apporendcode left join appofail on appo.appofailcode=appofail.appofailcode WHERE bookproc.bookprocorde = 1 AND csta.cent_key = 69 AND appo.appostatcode IN ('P','D') AND (book.diardate BETWEEN '01/01/2004' AND '02/03/2004') AND appo.appostatcode=appostat.appostatcode AND appo.epis_key=epis.epis_key AND book.agencode=agen.agencode AND book.agencode=btimetab.agencode AND book.btimetabcode=btimetab.btimetabcode AND appo.pers_keypati=perspati.pers_key AND appo.pers_keypati=pati.pers_key AND appo.book_key=book.book_key AND appo.csta_keymake=csta.csta_key AND bookproc.book_key=book.book_key AND bookproc.agenproc_key=agenproc.agenproc_key;

Ejemplo 3

Multibase SELECT epis.epis_key, pers.perssur1, pers.perssur2, pers.persname, epis.episdatecrea, inpaadmi.inpaadmidesc, episcsta.episcstadate_end, d2.dashpartcval, d1.dashpartcval FROM inpa, epis, episcsta,episfirm, clip, pers, inpaadmi, outer (dash, docudocu, dashpart d1, dashpart d2) WHERE epis.episdatecrea>="$DESDE$" and epis.episdatecrea='$DESDE$' and epis.episdatecrea

Analiza si una expresin es mayor que otra

>=

Analiza si una expresin es mayor o igual que otra

!>

Analiza si una expresin no es mayor que otra