Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TRANSACT - SQL
NIVEL BSICO
Conceptos bsico de una Base de datos (BD). Estructura de una tabla Partes que componen el analizador de consulta. Palabras Reservadas. Sintaxis de SQL. Consulta para ordenar (order by) Alias para los campos Condicin de busqueda (where)
Objetivos
Conocer los conceptos bsicos de una base de datos. Explicar para que se utiliza el lenguaje de SQL. Aprender las palabras reservadas para el uso de las consultas en SQL. Conocer la sintaxis bsica para la consulta de informacin. Aprender las funciones para ordenar y filtrar datos.
Qu es un Base de Datos?
Una base de datos es un conjunto de datos agrupados y ordenados. Una biblioteca puede considerarse una base de datos compuesta en su mayora por libros y documentos indizados para su consulta. Ejemplos de base de datos: gua telefnica, agenda de nmeros telefnicos
Pregunta
Cul es la utilidad de las base de datos computarizadas? La utilidad se basa en encontrar la informacin en segundos, lo que se demorara horas hojeando agendas, libros, peridicos.
http://www.paginasamarillas.com/pagamanet/web/home.aspx?ipa=4
Entonces, Cmo se guarda informacin en una base de datos? La informacin se guarda en Tablas: COLUMNAS = CAMPO NOMBRE DE LA TABLA
Datos Personales Nombre Yoni Hamed Apellido Sawransky Pealba Acevedo Direccin El Dorado Las Cumbres Bethania Telfono 300-0000 300-0011 300-0022
FILAS = REGISTROS
Maria Luisa
Estructura de la Tabla
Para facilitar el registro de datos en una determinada tabla se han creado formularios, cuya integracin se convierte en lo que denominamos un programa.
Nombre
UFC,S.A. Oportunity,S.A.
Nombre Extranjero
Universal Football Club Oportunidad,S.A.
R.U.C.
8-55-565-656-56 8-796-425-4485
Base de Datos
Buscador de Objetos
Tablas
Escribe aqu!
Campos
Palabras Reservadas
Son las palabras definidas por el lenguaje para realizar las diferentes consultas o acciones. Ejemplo de ellas: select, from, and, order by, insert. Nota : las palabras reservadas tendran un color azul en el sistema.
Sintaxis en SQL
SELECT campo1, campo2, campo3 FROM Nom_Tabla
SELECT = SELECCIONAR Campo 1,2,3 = nombres de los campos o columnas que se desea buscar la informacin. FROM = DESDE O DE Nom_tabla = nombre de la tabla donde se buscaran los datos.
De dnde?
Prctica #1
Escribe una consulta que muestre:
1.
2. 3.
Ordenar Datos empleando varios Campos SELECT Campo1, Campo2, Campo3 FROM Tabla ORDER BY Campo1, Campo2
Prctica #2
De la Tabla SOCIO DE NEGOCIOS (OCRD), escribe una consulta que muestre los siguientes datos : Pas (Country) Cliente (Cardname) Balance (Balance) Telfono (Phone1) Ordenando: Primero, por Pas de mayor a menor Segundo, por cliente de menor a mayor.
I RECESO
15 MINUTOS
Prctica #1 De la tabla Artculos (OITM) escribe una consulta que muestre: Itemcode: Cdigo de artculo ItemName: Nombre de artculo Onhand: Existencias Condicin: Donde Onhand sea mayor a cero. Asgnale los nombres propuestos.
WHERE
(condicin de busqueda)
Usando el signo de igual = SELECT Campo1, Campo2, Campo3 FROM Tabla WHERE Campo3 = 100 ORDER BY Campo1, Campo2 Usando el signo de mayor que > SELECT Campo1, Campo2, Campo3 FROM Tabla WHERE Campo3 > 100 ORDER BY Campo1, Campo2
WHERE
Utilizando el signo de menor igual que <= SELECT campo1 ,campo2,campo3 FROM Tabla WHERE campo3 <= 100 ORDER BY campo1,campo2 Usando el signo distinto de, <> SELECT campo1 ,campo2,campo3 FROM Tabla WHERE campo3 <> 100 ORDER BY campo1,campo2
WHERE
SELECT campo1, campo2, campo3 FROM Tabla WHERE campo2 = Y ORDER BY campo1, campo2
Prctica #2
De la tabla Artculos (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) Onhand (Inventario) BuyUnitMsr (Unidad de medida compras) NumInBuy (Cantidad de artculos por unidad) Donde: NumInBuy sea igual a 1.
Prctica #3
De la tabla Artculos (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) OnOrder (Pedido a Proveedor) Onhand (En Inventario) Donde: Onorder sea mayor que cero
Prctica #4
De la tabla Artculos (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) OnOrder (Pedido a Proveedor) Onhand (En Inventario) Donde: Onhand sea menor igual que cero
Prctica #5
De la tabla Artculos (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) Iscommited (Pedido por cliente) Onhand (En Inventario) Donde: Iscommited sea distinto de cero.
Prctica #6
De la tabla Artculos (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) Onhand (En Inventario) SellItem (Artculo de venta.Y/N) Donde: SellItem sea igual N.
Aprendimos que
SQL: Es un lenguaje que nos permite comunicarnos con una base de datos. La base de datos est organizada en tablas. La sintaxis bsica de SQL es: SELECT * FROM TABLA Es posible renombrar las columnas en una consulta asignndole un alias. Podemos elegir campos, filtrar y ordenar datos con: SELECT, WHERE y ORDER BY
Felicidades!
Has culminado el curso bsico de TRANSACT SQL
TRANSACT - SQL
NIVEL INTERMEDIO
Objetivos Incluir varios filtros en una misma consulta utilizando AND ,OR e IN. Comprender orden de evaluacin de los filtros y la utilizacin de parntesis. Emplear la palabra clave LIKE para filtrar datos. Unir campos (concatenar). Realizar clculos matemticos. Emplear alias para tablas. Consultar datos de dos o ms tablas en la misma consulta.
AND
Cmo utilizar ms de un filtro en una misma consulta?
Los registros recuperados cumplirn con ambas condiciones: Todos los valores en el campo2 sern igual A y en el campo4 igual a B
AB
SELECT campo1 ,campo2,campo3 FROM Tabla WHERE campo2 = A AND campo4 =B ORDER BY campo1, campo2
PRCTICA
Realice la siguiente consulta utilizando AND Selecciones los campos de Cdigo de Artculo y Descripcin de la tabla ? de los artculos. Donde solo muestre los artculo que tienen en Stock mayores de 4 y menores de 10. SELECT itemcode, itemname FROM oitm WHERE onhand <=10AND onhand >=4
OR
Cmo utilizar ms de un filtro en una misma consulta?
Los registros recuperados tendrn : En el campo2, valores A sin importar qu valor tenga el campo4. Tambin, en el campo4 valores B sin importar qu valor tenga el campo2. Alguna de las dos condiciones se cumplir o puede que ambas se cumplan.
SELECT campo1, campo2, campo3 FROM Tabla WHERE campo2 = A OR campo4 =B ORDER BY campo1, campo2
PRCTICA
Realice la siguiente consulta utilizando OR Selecciones los campos de Cdigo de Artculo y Descripcin de la tabla ? de los artculos. Donde solo muestre los artculo que tienen en Stock mayores de 4 menores de 10. SELECT itemcode, itemname FROM oitm WHERE onhand <=10 OR onhand >=4
IN / NOT IN
Cmo utilizar ms de un filtro en una misma consulta? SELECT campo1 ,campo2,campo3 FROM Tabla WHERE campo2 IN (C,L) ORDER BY campo1,campo2 SELECT campo1 ,campo2,campo3 FROM Tabla WHERE campo2 NOT IN (C,L) ORDER BY campo1,campo2
PRCTICA
Realice la siguiente consulta utilizando IN Selecciones los campos de Cdigo de Socio de Negocio y Descripcin de la tabla ? de los Socios de Negocios. Donde solo muestre los cdigos de los clientes desde D-CCT hasta C-FF. SELECT cardcode, cardname FROM ocrd WHERE cardcode IN(D-CCT, C-FF)
Orden de Evaluacin
SELECT campo1, campo2, campo3 FROM Tabla WHERE campo2 = Y OR campo3 =Y AND campo4=N ORDER BY campo1, campo2 SELECT campo1, campo2, campo3 FROM Tabla WHERE (campo2 = Y OR campo3 =Y) AND campo4=N ORDER BY campo1, campo2
Prctica #1
De la tabla ARTICULOS (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) Onhand (En Inventario) Iscommited(Pedido por cliente) Onorder (Pedido a Proveedor) Cardcode(Proveedor) DONDE: SellItem sea igual Y, Invntitem sea igual Y , tambin Prchseitem sea igual a Y y el inventario sea menor o igual a cero. O el proveedor es uno de estos: A-SONCEN, ATI, A-WO
RECESO
15 MINUTOS
LIKE Contiene SELECT campo1, campo2 FROM tabla WHERE campo1 LIKE %acb%
LIKE Inicia con SELECT campo1,campo2 FROM tabla WHERE campo1 LIKE acb%
LIKE
Termina en
SELECT campo1, campo2 FROM tabla WHERE campo1 LIKE %acb
NOT LIKE No Contiene SELECT campo1, campo2 FROM tabla WHERE campo1 NOT LIKE %acb%
NOT LIKE No Inicia con SELECT campo1, campo2 FROM tabla WHERE campo1 NOT LIKE acb%
NOT LIKE No termina en SELECT campo1, campo2 FROM tabla WHERE campo1 NOT LIKE %acb
PRCTICA
Realice la siguiente consulta utilizando LIKE Selecciones los campos de Cdigo de Socio de Negocio y Descripcin de la tabla ? de los Socios de Negocios. Donde muestre los socios que posean en su nombre la palabra Foto.
Prctica #2
De la tabla ARTICULOS (OITM), escribe una consulta que muestre los siguientes datos : Cdigo (Itemcode) Descripcin (Itemname) Onhand (En Inventario) Iscommited(Pedido por cliente) Onorder (Pedido a Proveedor) Cardcode(Proveedor) DONDE: La descripcin del artculo no contiene la palabra televisor y el cdigo no inicia con la letra K.
Prctica #3
De la tabla OCRD escribe una consulta que muestre en un solo campo y separados por comas los siguientes campos: Cardname: Nombre del Cliente Country: Pas City: Ciudad Address: Direccin Instruccin: Asgnale un alias.
Operadores Aritmticos
+ Aritmticos * / %
Prctica #5
De la tabla OITM escribe una consulta que muestre: Itemcode (Cdigo) Itemname (Nombre de artculo) Onhand (Existencias) menos Iscommited (Pedido por cliente) ms Onorder (Pedido a Proveedor) Onhand (Existencias) multiplicado por Avgprice (Precio Promedio)
ALIAS PARA TABLAS Se utiliza para asignarle un nombre corto a la tabla. SELECT T0.campo1, T0.campo2 FROM Tabla T0
Prctica #6
De la tabla Pedidos de Cliente (ORDR) escribe una consulta que muestre: Docnum (Numero de Documento) Cardcode (Cdigo de cliente) Cardname (Nombre de Cliente) Doctotal (Total de Documento) Indicacin: Asgnale alias a cada campo y a la tabla
Funciones de Cadena
FUNCIN LEFT
DESCRIPCIN Devuelve la parte de una cadena de caracteres que comienza en el nmero de caracteres especificado a partir de la izquierda.
LEN
Devuelve el nmero de caracteres, en lugar del nmero de bytes, de la expresin de cadena dada, excluidos los espacios finales en blanco.
Devuelve datos de tipo carcter obtenidos a partir de datos numricos. Devuelve la parte de una cadena de caracteres que comienza en el nmero de caracteres especificado en expresinEntera a partir de la derecha.
STR RIGHT
FUNCIN LEFT
SELECT LEFT(expresinCarcter, expresinEntera) SELECT cardname, LEFT(cardname,5) as LEFT FROM OCRD
LEFT REYES
FUNCIN LEN
SELECT LEN(expresinCadena) SELECT cardname, LEN(cardname) as LEN FROM OCRD
LEN 19
FUNCIN STR
SELECT STR(expresinFloat[, longitud[, decimales]])
FUNCIN RIGHT
SELECT RIGHT(expresinCarcter, expresinEntera) SELECT cardname, RIGHT(cardname,5) as RIGHT FROM OCRD
RIGHT COMP.
INNER JOIN
Obtener datos de dos o ms tablas en la misma consulta
SELECT T0.campo2, T1.campo3 FROM Tabla1 T0, Tabla2 T1 WHERE T0.campo2 = T1.campo2
SELECT T0.campo2, T1.campo3 FROM Tabla1 T0 INNER JOIN Tabla2 T1 ON T0.campo2 = T1.campo2
Prctica #9
Utiliza las siguientes tablas: OCRD, OITM, OCRT1. Escribe una consulta que muestre: Itemcode (Cdigo de Articulo) Itemname (Nombre de Articulo) Cardname (Nombre del Proveedor) Name (Nombre del pas del Proveedor) Condicin Ordnalo por pas
Aprendimos que
Puedo restringir la bsqueda de registros, utilizando varios filtros en una misma consulta con: AND ,OR , IN y LIKE. Con el signo + puedo unir campos alfanumricos adems de realizar clculos matemticos. Es buena prctica emplear alias para tablas. Debo utilizar INNER JOIN para relacionar y consultar datos de dos o ms tablas en la misma consulta.
Felicidades!
Has culminado el curso intermedio de TRANSACT SQL
Siguiente Nivel
INNER JOIN utilizando ms de un enlace. LEFT JOIN RIGHT JOIN FULL OUTER JOIN GROUP BY (SUM,MAX,MIN,COUNT) HAVING ISNULL/ IS NULL CASE CONVERT (Un dato numrico a alfanumrico) Funciones matemticas (ABS,FLOOR,CEILING,ROUND) Funciones de fecha (Getdate(), datediff y datepart)
TRANSACT - SQL
NIVEL AVANZADO
Objetivo
Utilizar INNER JOIN con ms de un enlace. Interpretar las relaciones con LEFT JOIN, RIGHT JOIN y FULL OUTER JOIN . Agrupar registros empleando la instruccin GROUP BY. Sumar y contar registros. Extraer el valor ms alto ms bajo de campo (SUM,MAX,MIN,COUNT). Aplicar filtro a los datos agrupados. HAVING Conocer los comandos ISNULL - IS NULL. Manipular resultados con CASE. CONVERT (Un dato numrico a alfanumrico). Utilizar funciones matemticas (ABS,FLOOR,CEILING,ROUND)
INNER JOIN
Obtener datos de dos o ms tablas en la misma consulta aplicando ms de un enlace SELECT T0.campo2,T1.campo3 FROM Tabla1 T0 INNER JOIN Tabla2 T1 ON T0.campo2 = T1.campo2 AND T0.campo3 = T1.campo3
LEFT JOIN
Obtener datos de dos o ms tablas en la misma consulta.
SELECT T0.campo2, T1.campo3 FROM tabla1 T0 LEFT JOIN tabla2 T1 ON T0.campo2 = T1.campo2
RIGHT JOIN
Obtener datos de dos o ms tablas en la misma consulta.
SELECT T0.campo2,T1.campo3 FROM tabla1 T0 FULL OUTER JOIN tabla2 T1 ON T0.campo2 = T1.campo2.
Prctica #1
1. De la tabla Socio de Negocios (OCRD) y Pas (OCRY). Escribe una consulta que muestre: Cardcode (cdigo del cliente), Cardname (nombre del cliente), Name (Nombre del Pas del cliente). Utiliza INNER JOIN LEFT JOIN. Donde Cardtype (tipo de socio) es igual C. Ordenar por cliente. 2. De la tabla OCRD(Socio de Negocios) y OCRY (Pas). Escribe una consulta que muestre: Name (Nombre del Pas),Cardcode(Cdigo de cliente),Cardname (Nombre del cliente). Debes listar todos los pases. Utiliza RIGHT JOIN. Donde Cardtype (tipo de socio) es igual a C. Ordenar por pas.
GROUP BY Y SUM()
SELECT T1.campo1, T1.campo2, T1.campo3, SUM(T1.campo4), SUM(T1.campo4 * T1.campo5) FROM tabla1 T0 INNER JOIN tabla2 T1 ON T0.campo2 = T1.campo2 GROUP BY T1.campo1, T1.campo2, T1.campo3
GROUP BY Y COUNT ()
SELECT T0.campo1, COUNT (T1.campo2) FROM Tabla1 T0 INNER JOIN tabla2 T1 ON T0.campo1 = T1.campo2 GROUP BY T1.campo1
SELECT T0.campo1, MAX (T1.campo2), MIN (T1.Campo2) FROM Tabla1 T0 INNER JOIN tabla2 T1 ON T0.campo1 = T1.campo2 GROUP BY T1.campo1
GROUP BY Y HAVING
SELECT T0.campo1, T0.campo2 FROM Tabla1 T0 INNER JOIN tabla2 T1 ON T0.campo1 = T1.campo2 GROUP BY T0.campo1, T0.campo2 HAVING SUM(T1.campo3) <= 0
RECESO
15 MINUTOS
SELECT campo1, campo2, campo3 FROM tabla WHERE campo2 IS NOT NULL
Prctica #3 De la tabla Artculos (OITM) escribe una consulta que te muestre: Cdigo de articulo, Nombre del artculo y Cdigo de proveedor. Filtro: Solo los artculos que tengan proveedor.
ISNULL
SELECT Campo1, Campo2, ISNULL (campo3,Puede ser nmero, smbolos o letras)
FROM Tabla
SubConsultas
SELECT T0.campo1, T0.campo2, (SELECT T1.campo1 FROM Tabla T1 WHERE T1.campo1 >10) FROM Tabla T0, WHERE T0.campo2 = Valor SELECT T0.campo1, T0.campo2, FROM Tabla T0, WHERE T0.campo2 = (SELECT T1.campo1 FROM Tabla T1 WHERE T1.campo1 =10) ORDER BY T0.campo1
Prctica #4
De la tablas de Entregas (ODLN), las Lneas(DLN1) y Artculos(OITM) Docdate (Fecha), Cardcode(Nombre de Socio) Itemcode (Cdigo de producto), Quantity(Cantidad), Price(Precio), Precio FOB(Donde el precio en los datos maestros(OITM) y lista de precio(ITM1) sean iguales y la lista de precio(ITM1) sea 1)
CASE I Sintaxis
SELECT CASE Campo1 WHEN C THEN Mi texto WHEN L THEN Otro ELSE Campo1 END FROM Tabla EN CASO DE QUE NO INCLUYAS LA INSTRUCCIN ELSE Y NO CONTEMPLES UN WHEN= CUANDO DETERMINADO VALOR PARA THEN= ENTONCES SER REEMPLAZADO EL ELSE= SINO RESULTADO SERN VALORES END= FIN NULL
Se interpreta as: cuando el valor en el campo1 sea C entonces reemplzalo con el valor: Mi texto, cuando el valor en el campo1 sea L entonces reemplzalo con el valor: Otro; sino es ninguno de los valores anteriores ,entonces trae el valor que tiene el campo1 y termina de evaluar.
Prctica #5
De la tablas Socio de Negocios (OCRD) Cardtype (Tipo de socio de negocios) Cardcode (Cdigo de socio), Cardname (Nombre socio) Phone1 (Telfono) E_mail (Correo electrnico) Si el campo OCRD.cardtype es igual a C entonces que muestre el texto: Cliente, L que muestre el texto : Prospecto, Si no es C ni L, entonces el texto debe ser: Proveedor.
CASE II Sintaxis
SELECT CASE WHEN Campo1 > 1000 THEN Mi texto WHEN Campo1 < 1000 THEN Otro texto ELSE Campo1 END FROM tabla
Prctica #6
De la tablas Pedido de Cliente (ORDR) y Vendedores (OSLP) escribe una consulta que muestre: SlpName (Nombre del vendedor) Doctotal-Vatsum (Valor Total de Pedidos de cliente) Condicin Si el resultado de la operacin ORDR.Doctotal menos ORDR.VatSum es mayor que 1000, entonces que muestre el texto: Paga comisin. Si no es mayor que 1000, entonces que muestre el texto (No paga comisin). Utiliza INNER JOIN para relacionar ORDR y OSLP, por medio del campo Slpcode. Suma el valor total de pedidos de cliente por vendedor, utiliza GROUP BY y SUM().
CONVERT
Supongamos que campo1 es un campo que contiene valores numricos.
Varchar?
Prctica #7
De la tabla de Pedido de Cliente (ORDR) escribe una consulta en la que:
Une los campos Docnum (Nmero de Documento) y Cardcode (Cdigo de Cliente) separado por guion -.
Funciones Matemticas
FUNCIN
ABS CEILING FLOOR ROUND
DESCRIPCIN
Devuelve el valor absoluto positivo de una expresin numrica especfica. Devuelve el entero ms pequeo mayor o igual que la expresin numrica especificada. Devuelve el entero ms grande menor o igual que la expresin numrica especificada Devuelve un valor numrico, redondeado a la longitud o precisin especificadas.
ABS SELECT ABS(-1.0), ABS(0.0), ABS(1.0) SELECT ABS(Campo_Numrico) FROM Tabla Nota: El resultado siempre ser con signo positivo.
CEILING
SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
124
-123
FLOOR
SELECT FLOOR($123.45), FLOOR($-123.45), FLOOR($0.0)
123
-124
ROUND
SELECT ROUND(123.2527,3), ROUND(123.2527,4), ROUND(123.2527,2)
123.2530
123.2527
123.2500
De 5 A 9 Redondea.
Prctica #8
De la tablas Pedido de Cliente lneas (RDR1) escribe una consulta que muestre:
Itemcode (Artculo) Price (Precio) Price * Quantity (Total) Al precio aplcale la funcin CEILING y al total ROUND sin decimales. Debes sumar (price * quantity) y agrupar articulo y precio.
Aprendimos que
Es posible realizar un INNER JOIN con ms de un enlace. Agrupar registros empleando la instruccin GROUP BY y filtrar los datos agrupados utilizando HAVING.. Sumar y contar registros. Extraer el valor ms alto ms bajo de campo.(SUM,MAX,MIN,COUNT) Se puede reemplazar valores NULL empleado ISNULL. Evitamos recuperar datos con valor NULL aplicando la condicin IS NOT NULL en el WHERE de una consulta Es posible convertir un dato numrico a alfanumrico mas no viceversa. Case es una instruccin que me permite manipular los resultados de una consulta, cambiando los valores siempre que se cumpla una condicin. La funcin matemtica ABS siempre me devuelve un valor positivo. FLOOR,CEILING y ROUND son funciones matemticas para redondear valores numricos.
Felicidades!
Has culminado el curso avanzado de TRANSACT SQL