Está en la página 1de 23

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............................................................4


Notas Iniciales.................................................................................................................................4 Lenguaje SQL .................................................................................................................................4
1. Clusula SELECT................................................................................................................................... 4 2. Clusula FROM...................................................................................................................................... 6 3. Clusula INTO ...................................................................................................................................... 11 4. Clusula WHERE ................................................................................................................................. 11

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

Cambios bsicos de Mba a Sql Server ......................................................20


Tipos.............................................................................................................................................. 20 Creacin de una cadena............................................................................................................... 20 Otros.............................................................................................................................................. 23

Curso de Formacin interna

Sql Bsico para Sql Server 2000

Notas Iniciales sobre curso


Este 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

Sql Bsico para Sql Server 2000

Particularidades en Sql Server 2000


Diversos aspectos relacionados con Sql Server y sus diferencias con Multibase

Notas Iniciales
El 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 SQL
La 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 SELECT
La 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

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 Argumentos
Se 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 la
cabecera 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

Sql Bsico para Sql Server 2000

2. Clusula FROM
Combinaciones internas
Generalmente, 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

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

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

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<="$HASTA$" and inpa.epis_key=epis.epis_key and epis.epis_key=episfirm.epis_key and episfirm.episfirmmain='Y' and episfirm.firm_key=$FIRM_KEY$ and epis.clip_key=clip.clip_key and clip.pers_key=pers.pers_key and inpa.inpaadmicode=inpaadmi.inpaadmicode and epis.docu_key=docudocu.docu_keysour and dash.docu_key=docudocu.docu_keydest and dash.dash_key=d1.dash_key and d1.dtpa_key=1 and

Curso de Formacin interna

Sql Bsico para Sql Server 2000

dash.dash_key=d2.dash_key and d2.dtpa_key=2 and episcsta.epis_key = epis.epis_key and episcsta.epicstalast = 'Y'

Sql Server: SELECT epis.epis_key, pers.perssur1, pers.perssur2, pers.persname, epis.episdatecrea, inpaadmi.inpaadmidesc, episcsta.episcstadate_end, d2.dashpartcval, d1.dashpartcval FROM inpa, episcsta,episfirm, clip, pers, inpaadmi, epis LEFT JOIN (((docudocu INNER JOIN dash ON dash.docu_key=docudocu.docu_keydest) INNER JOIN dashpart d1 ON dash.dash_key=d1.dash_key and d1.dtpa_key=1) INNER JOIN dashpart d2 ON dash.dash_key=d2.dash_key and d2.dtpa_key=2) ON epis.docu_key=docudocu.docu_keysour WHERE epis.episdatecrea>='$DESDE$' and epis.episdatecrea<='$HASTA$' and inpa.epis_key=epis.epis_key and epis.epis_key=episfirm.epis_key and episfirm.episfirmmain='Y' and episfirm.firm_key=$firm_key$ and epis.clip_key=clip.clip_key and clip.pers_key=pers.pers_key and inpa.inpaadmicode=inpaadmi.inpaadmicode and episcsta.epis_key = epis.epis_key and episcsta.epicstalast = 'Y'

Ejemplo 4

Multibase select pers.persname, pers.perssur1, pers.perssur2, pers.persbirtdate, tsex.tsexdesc, pers.persidencod1, firm.firmname, addr.troacode || "/ " || addr.addrnamestre, addr.addrnumb,terr.terrdesc, addr.addrtel1, addr.addrtel2 from pers, tsex, outer (patifirm, firm), outer (addr, outer terr) where pers.pers_key=$PERS_KEY$ and pers.pers_key=patifirm.pers_key and patifirm.firm_key=firm.firm_key and pers.tsexcode=tsex.tsexcodeand pers.addrcode=addr.addrcode and addr.terr_key3=terr.terr_key

Sql Server select pers.persname, pers.perssur1, pers.perssur2, pers.persbirtdate, tsex.tsexdesc, pers.persidencod1, firm.firmname, addr.troacode + '/ ' + addr.addrnamestre, addr.addrnumb,terr.terrdesc, addr.addrtel1,

Curso de Formacin interna

10

Sql Bsico para Sql Server 2000

addr.addrtel2 FROM tsex, pers LEFT JOIN (patifirm INNER JOIN firm ON patifirm.firm_key=firm.firm_key) ON pers.pers_key=patifirm.pers_key LEFT JOIN (addr LEFT JOIN terr ON addr.terr_key3=terr.terr_key) ON pers.addrcode=addr.addrcode WHERE pers.pers_key=$pers_ket$ and pers.tsexcode=tsex.tsexcode

3. Clusula INTO
Permite recuperar datos de una tabla o tablas y ubicar las filas resultado en una nueva tabla. La nueva tabla se crea automticamente cuando se ejecuta la instruccin SELECT ... INTO y se defina segn las columnas en la lista de seleccin.

SELECT <lista_de_seleccin> INTO <nueva_tabla>

Se puede utilizar SELECT ... INTO para seleccionar filas en una tabla temporal o en una tabla permanente. Para una tabla local temporal (que es visible solamente a la conexin actual o usuario) se debe incluir el smbolo (#) antes del nombre de la tabla. Para una tabla temporal global (que es visible a cualquier usuario) se deben incluir dos smbolos (##) antes del nombre de la tabla. Una tabla temporal se borra automticamente despus de que todos los usuarios que estn utilizando la tabla se hayan desconectado de SQL Server. SELECT employee.fname,employee.lname,jobs.job_desc INTO emp_info FROM employee,jobs WHERE employee.job_id =jobs.job_id GO

4. Clusula WHERE
Se puede utilizar la clusula WHERE para restringir las filas que se devuelven de una consulta segn las condiciones de bsqueda especificadas.

Operadores lgicos:

AND, OR y NOT

Curso de Formacin interna

11

Sql Bsico para Sql Server 2000

Operaciones:

Operacin

Condicin comprobada

Analiza la igualdad entre dos expresiones.

<>

Analiza si dos expresiones no son iguales.

!=

Analiza si dos expresiones no son iguales (igual que <>)

>

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

<

Analiza si una expresin es menor que otra

<=

Analiza si una expresin es menor o igual que otra

!<

Analiza si una expresin no es menor que otra

Curso de Formacin interna

12

Sql Bsico para Sql Server 2000

Otras palabras claves


LIKE

Comodn

Busca

Cualquier cadena de cero o ms caracteres.

Cualquier carcter nico.

[]

Cualquier carcter nico dentro del rango especificado (pe. [a-f]) o del conjunto espceficado (pe. [abcdef]).

[^]

Cualquier carcter nico que no est dentro del rango especificado (pe. [^a-f]) o del subconjunto especificado (pe. [^abcdef]).

Formato

Busca

LIKE Mc%

Todos los nombres que empiezan por las letras Mc (como McBadden).

LIKE %inger

Todos los nombres que terminen por inger (como Ringer y Stringer).

LIKE %en%

Todos los nombres que incluyan las letras en (como Bennet y Green).

LIKE ~heryl

Todos los nombres que de seis letras que terminen por heryl (Sheryl).

LIKE [CK]ars[eo]n

Todos los nombres que empiecen por C K, lleven despus ars, a continuacin e o y terminen por n (como Carsen, Carson y Karson).

Curso de Formacin interna

13

Sql Bsico para Sql Server 2000

LIKE [M-Z]inger

Todos los nombres que terminen por inger y que empiecen por una nica letra comprendida entre M y Z (como Ringer).

LIKE M[^c]%

Todos los nombres que empiecen por la letra M y cuya segunda letra no sea la c (como MacFaether).

ESCAPE La palabra clave ESCAPE permite realizar coincidencia de patrones con los propios caracteres comodn tales como, %, y _. select * from msgs where msgsdesc like '%z_%' escape 'z' GO

BETWEEN La palabra clave BETWEEN se utiliza siempre con AND y especifica un rango inclusivo para verificar una condicin de bsqueda. La sintaxis es la siguiente: <expresin de comprobacin>BETWEEN <expresin inicial>AND <expresin final>

SELECT FROM WHERE GO IS NULL

price,title titles price BETWEEN 5.00 AND 25.00

La palabra clave IS NULL se utiliza en una condicin de bsqueda para seleccionar filas que tienen un valor nulo en una columna especificada. SELECT FROM WHERE GO title,notes titles notes IS NULL

Curso de Formacin interna

14

Sql Bsico para Sql Server 2000

IN La palabra clave IN se utiliza en una condicin de bsqueda para determinar si la expresin dada coincide con algn valor en una subconsulta o lista de valores <expresin de comprobacin>IN subconsulta <expresin de comprobacin>IN lista de valores SELECT FROM WHERE Manager","Designer") GO EXISTS La palabra clave EXISTS se utiliza para verificar la existencia de filas en la subconsulta. La sintaxis es la siguiente: EXISTS subconsulta Si alguna fila satisface la subconsulta, se devuelve TRUE. SELECT FROM WHERE au_fname,au_lname authors EXISTS (SELECT FROM WHERE job_id jobs job_desc IN ("Operations Manager","Marketing

au_id titleauthor titleauthor.au_id =authors.au_id)

GO

Curso de Formacin interna

15

Sql Bsico para Sql Server 2000

Otros
Herramienta bcp
La herramienta bcp copia datos entre Microsoft SQL Server 2000 y un archivo de datos con el formato especificado por el usuario. Sintaxis bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F first_row] [-L last_row] [-b batch_size] [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6] [-q] [-C code_page] [-t field_term] [-r row_term] [-i input_file] [-o output_file] [-a packet_size] [-S server_name[\instance_name]] [-U login_id] [-P password] [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"] database_name Es el nombre de la base de datos en la que reside la tabla o vista especificada. Si no se especifica, es la base de datos predeterminada para el usuario. Owner Es el nombre del propietario de la tabla o vista. El argumento owner es opcional si el usuario que realiza la copia masiva es propietario de la tabla o vista especificada. Si no se especifica el argumento owner y el usuario que realiza la copia masiva no es propietario de la tabla o de la vista especificada, Microsoft SQL Server 2000 devuelve un mensaje de error y se cancela la operacin de copia masiva. table_name Es el nombre de la tabla de destino cuando se copian datos en SQL Server (in), y de la tabla de origen cuando se copian datos desde SQL Server (out). view_name Es el nombre de la vista de destino cuando se copian datos en SQL Server (in), y de la vista de origen cuando se copian datos desde SQL Server (out). Slo pueden utilizarse como vistas de destino aquellas vistas en las que todas las columnas hacen referencia a la misma tabla. Consulta in | out | queryout | format Especifica la direccin de la copia masiva. Con la opcin in se realiza una copia desde un archivo a la tabla o a la vista de la base de datos. Con la opcin out se realiza una copia desde la tabla o desde la vista de la base de datos a un archivo. Slo se debe especificar queryout al realizar copias de datos masivas desde una consulta. Con la opcin format se crea un archivo de formato basado en la opcin especificada

Curso de Formacin interna

16

Sql Bsico para Sql Server 2000

(-n, -c, -w, -6 o -N) y en los delimitadores de tabla o vista. Si se utiliza format, tambin debe especificarse la opcin -f. data_file Es la ruta de acceso completa del archivo de datos que se utiliza en la copia masiva de una tabla o de una vista desde, o hacia, un disco. Cuando se realiza una copia de datos masiva en SQL Server, el archivo de datos contiene los datos que deben copiarse en la tabla o en la vista especificada. Cuando se realiza una copia de datos masiva desde SQL Server, el archivo de datos contiene los datos copiados desde la tabla o desde la vista. La ruta de acceso puede contener de 1 a 255 caracteres. -t field_term Especifica el terminador del campo. El valor predeterminado es \t (carcter de tabulador). Utilice este parmetro para sustituir el terminador de campo predeterminado. -r row_term Especifica el terminador de la fila. El valor predeterminado es \n (carcter de nueva lnea). Utilice este parmetro para sustituir el terminador de fila predeterminado. -S server_name[\instance_name] Especifica la instancia de SQL Server a la que se va a conectar. Especifique server_name para conectarse a la instancia predeterminada de SQL Server en ese servidor. Especifique server_name\instance_name para conectarse a una instancia con nombre de SQL Server 2000 en ese servidor. Si no se especifica ningn servidor, bcp se conecta a la instancia predeterminada de SQL Server en el equipo local. Esta opcin es necesaria cuando se ejecuta bcp desde un equipo remoto conectado a la red. -U login_id Especifica el identificador de inicio de sesin utilizado para conectar a SQL Server. -P password Especifica la contrasea para el identificador de inicio de sesin. Si no se utiliza esta opcin, bcp le pide una contrasea. Si se utiliza esta opcin al final del smbolo del sistema sin especificar ninguna contrasea, bcp utiliza la contrasea predeterminada (NULL). -h "hint [,...n]" Especifica las sugerencias que deben utilizarse durante una copia de datos masiva en una tabla o en una vista. No se puede utilizar esta opcin cuando se realicen copias de datos masivas en SQL Server 6.x ni en versiones anteriores. Sugerencia ORDER (column [ASC | DESC] [,...n]) Descripcin Orden de los datos en el archivo de datos. El rendimiento de la copia masiva mejora si los datos cargados se ordenan segn el ndice agrupado de la tabla. Si el archivo de datos se ordena de forma distinta, o si no hay ndice agrupado en la tabla, se pasar por alto la sugerencia ORDER. Los nombres de columna

Curso de Formacin interna

17

Sql Bsico para Sql Server 2000

facilitados deben ser columnas vlidas en la tabla de destino. De forma predeterminada, bcp supone que el archivo de datos no est ordenado. TABLOCK Se obtiene un bloqueo en la tabla durante la operacin de copia masiva. Esta sugerencia mejora notablemente el rendimiento, dado que, al mantenerse el bloqueo nicamente durante la operacin de copia masiva, se reduce la contencin en la tabla por bloqueo. Una tabla puede ser cargada simultneamente por varios clientes si no tiene ndices y se especifica TABLOCK. De forma predeterminada, el comportamiento del bloqueo viene determinado por la opcin de tabla table lock on bulk load (bloqueo de tabla en cargas masivas). Durante la operacin de copia masiva, se comprueba la existencia de restricciones en la tabla de destino. De forma predeterminada, las restricciones se pasan por alto. Especificado con el argumento in, se ejecutarn todos los desencadenadores de insercin definidos en la tabla de destino durante la operacin de copia masiva. Si no se especifica FIRE_TRIGGERS, no se ejecutar ningn desencadenador de insercin. FIRE_TRIGGERS se ignora con los argumentos out, queryout, y format.

CHECK_CONSTRAINTS

FIRE_TRIGGERS

Ejemplos: bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname queryout c:\tmp\authors.txt -c -t "|" -r "\n" -S ERECTEO\KEWAN -U sa -P sa bcp "Northwind.Jane Doe.Jane's Orders" out "Jane's Orders.txt" -c -q -U"Jane Doe" -P"go dba" bcp "Northwind.[Jane Doe].[Jane's Orders]" out "Jane's Orders.txt" -c -U"Jane Doe" -P"go dba"

Bulk Insert
Copia un archivo de datos a una tabla o vista de base de datos en un formato especificado por el usuario. Hay que tener en cuenta que la ruta del fichero que vayamos a insertar debe ser la ruta local del servidor de la Base de Datos

Curso de Formacin interna

18

Sql Bsico para Sql Server 2000

Sintaxis
BULK INSERT [ [ 'database_name'.] [ 'owner' ].] { 'table_name' FROM 'data_file' } [WITH ( [ BATCHSIZE [ = batch_size ] ] [ [ , ] CHECK_CONSTRAINTS ] [ [ , ] CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ] ] [ [ , ] DATAFILETYPE [ = { 'char' | 'native'| 'widechar' | 'widenative' } ] ] [ [ , ] FIELDTERMINATOR [ = 'field_terminator' ] ] [ [ , ] FIRSTROW [ = first_row ] ] [ [ , ] FIRE_TRIGGERS ] [ [ , ] FORMATFILE = 'format_file_path' ] [ [ , ] KEEPIDENTITY ] [ [ , ] KEEPNULLS ] [ [ , ] KILOBYTES_PER_BATCH [ = kilobytes_per_batch ] ] [ [ , ] LASTROW [ = last_row ] ] [ [ , ] MAXERRORS [ = max_errors ] ] [ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ] [ [ , ] ROWS_PER_BATCH [ = rows_per_batch ] ] [ [ , ] ROWTERMINATOR [ = 'row_terminator' ] ] [ [ , ] TABLOCK ] ) ] FIELDTERMINATOR [ = 'field_terminator' ] Especifica el terminador de campo que se utilizar para los archivos de datos de tipo char y widechar. El valor predeterminado es \t (carcter de tabulador). ROWTERMINATOR [ = 'row_terminator' ] Especifica el terminador de fila que se va a utilizar para archivos de datos de tipo char y widechar. El valor predeterminado es \n (carcter de nueva lnea).

Ejemplo: BULK INSERT Northwind.dbo.[Order Details] FROM 'f:\orders\lineitem.tbl' WITH ( FIELDTERMINATOR = '|', ROWTERMINATOR = ':\n' )

Curso de Formacin interna

19

Sql Bsico para Sql Server 2000

Cambios bsicos de Mba a Sql Server


Tipos
Multibase
char(n) char(n)

Sql Server

varchar(n)

integer

int

(de -2-31 a 231 -1) 4 bytes

smallint

smallint

(de -2-15 a 215 -1) 2 bytes

decimal(n,m) decimal(n,m) , si m<>0

float

, si m=0

time datetime

(de 01/01/1753 al 21/12/9999, con precision de centesimas de segundo)

date smalldatetime (de 1 de enero de 1900 al 6 de junio de 2079, con precision de un minuto)

Creacin de una cadena


No se pueden concatenar campos de tipos diferentes, o sea, char con datetime, char con int

Para esto habr que pasar los campos de tipo datetime e int a char.

Curso de Formacin interna

20

Sql Bsico para Sql Server 2000

Multibase

Sql Server

||

LOWER ( character_expression ) , Devuelve una expresin de caracteres despus de convertir a minsculas los datos de caracteres que estn en maysculas.

UPPER ( character_expression ) , Devuelve una expresin de tipo carcter con datos de carcter en minscula convertidos a mayscula.

RTRIM ( character_expression ) , Devuelve una cadena de caracteres despus de truncar todos los espacios en blanco a la derecha.

SUBSTRING ( expression , start , length ) ,Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen

STR ( float_expression [ , length [ , decimal ] ] ) ,Devuelve datos de tipo carcter obtenidos a partir de datos numricos

CAST ( expression AS data_type ) , Convierte explcitamente una expresin de un tipo de datos en otro (se utiliza bsicamente para pasar datos tipo int a char(n) )

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) , Convierte explcitamente una expresin de un tipo de datos en otro (es una funcin similar a

Curso de Formacin interna

21

Sql Bsico para Sql Server 2000

cast. Aunque se utiliza bsicamente para pasar datos tipo datetime a char(n) )

fecha convert ( varchar, [col_datetime], 103 )

, convierte a dd/mm/yyyy

hora convert ( varchar, [col_datetime], 108 )

, convierte a hh:mm:ss

today

getdate()

rowid

IDENTITY(int, 1,1)

, tipo de datos de Sql Server (Autonumrico)

Ejemplos: SELECT x = SUBSTRING('abcdef', 2, 3) Resultado: x: bcd SELECT STR(123.45, 6, 1) GO Resultado: 123.5 (cadena de 6 posiciones) Multibase SELECT Pago realizado con fecha || paymdone.paymdonedate || || firm.firmname FROM paymdone,firm WHERE paymdone.paymdone_key = $PADO and paymdone.firm_key = firm.firm_key

Sql Server SELECT 'Pago realizado con fecha ' + rtrim(convert(char,paymdone.paymdonedate,103)) + ' ' + firm.firmname FROM paymdone,firm WHERE paymdone.paymdone_key = $PADO and paymdone.firm_key = firm.firm_key

Multibase SELECT S/FRA. No. || invpnumb FROM invp WHERE invp.invp_key = $INVP

Sql Server

Curso de Formacin interna

22

Sql Bsico para Sql Server 2000

SELECT 'S/FRA. No.' + Cast(invpnumb as varchar) FROM invp WHERE invp.invp_key = $INVP

Otros
En las estaciones de gestin, las variables que estn en maysculas, se pasan a minsculas (pero slo aquellas que se refieren a nombre de campos).

Multibase SELECT persname, perssur1, perssur2 FROM pers WHERE pers.pers_key=$PERS_KEY$

Sql Server SELECT persname, perssur1, perssur2 FROM pers WHERE pers.pers_key=$pers_key$

NOTA: las variables que se pasan con ? no se cambian (pe. $?PERS_KEY$).

Curso de Formacin interna

23