Beruflich Dokumente
Kultur Dokumente
AGENDA
1. TIPOS DE DATOS Y DEFINICIN DE VARIABLES, VALORES NULOS. 2. COLUMNAS CON CONTADOR, MODIFICAR ESTRUCTURA DE LA TABLA. 3. SENTENCIAS Y FUNCIONES BSICAS DE TRANSACT SQL. 4. CREAR Y EJECUTAR SCRIPTS DE CONSULTA. 5. USO DE CRITERIOS Y CLASULAS. IN LIKE, BETWEEN. 6. USO DE DISTINC, TOP , CASE. 7. INSERCIN DE REGISTROS. 8. APLICACIONES Y CASOS PRCTICAS
TIPOS DE FECHA
TIPOS DE DATOS BINARIOS. TIPOS DE DATOS XML OTROS TIPOS DE DATOS. TIPOS DE DATOS PERSONALIZADOS.
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
Datos numricos
SQL Server dispone de varios tipos de datos numricos. Cuanto mayor sea el nmero que puedan almacenar mayor ser en consecuencia el espacio utilizado para almacenarlo. Como regla general se recomienda usar el tipo de dato mnimo posible. Todos los datos numricos admiten el valor NULL.
Datos numricos
Todos los tipos de datos enteros pueden marcarse con la propiedad identity para hacerlos auto numricos.
Datos de carcter
Datos de fecha
Formato 24/8/2013 ------------> DD/MM/YYYY August 24,2013 ------> MM/DD/YYYY 2013 AUGUST 24 ----> YYYY/MM/DD
Datos de binarios
Datos de XML
XML. Es una de las herramientas ms tiles mejoras que incorporadas en el SQL Server, el soporte nativo para XML. Como podemos deducir, este tipo de datos se utiliza para almacenar datos XML.
Un punto a tener en cuenta cuando asignamos variables de este modo, es que si la consulta SELECT devuelve ms de un registro, las variables quedarn asignadas con los valores de la ltima fila devuelta.
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
Operador especial para controlar si un valor es nulo (IS NULL o IS NOT NULL). edad > 21 - true o false Cundo la edad es null? Qu pasa con el AND, OR y NOT ? Surge la necesidad de una 3-valued logic (true, false and unknown). Hay que ser cuidadoso con la clausula WHERE. En SQL el WHERE elimina toda fila que NO evalua a TRUE en el WHERE (O sea condiciones que evaluan a False o Unknown no califican.)
ALTER TABLE tCoches add constraint FK_Coches_Marcas foreign key (marca) references tMarcas (codigo);
a) SENTENCIAS
Estructuras de Control
Estructura Condicional IF
Estructuras de Control
Estructura Condicional CASE
Estructuras de Case
Estructura Condicional WHILE
Estructuras de Case
Estructura Condicional WHILE - CONTINUE
Estructuras de Case
Estructura Condicional WHILE - BREAK
a) Es
SENTENCIAS
SELECT
Lo que hace una consulta SELECT, es obtener datos de una Tabla determinada, en las que se especifican filas y columnas. La sintaxis bsica de una consulta SELECT es:
En la consulta anterior, el asterisco (*) indica que deben recuperarse todas las columnas de la tabla nombreDeTabla. Ahora para recuperar solo ciertas columnas de una tabla, debemos de reemplazar el asterisco (*), por los nombres de las columnas, separando cada columna con una coma. Por ejemplo, para recuperar solamente las columnas IdAlumno, ApeAlumno, NomAlumno, para todas las filas de la tabla Alumno. Utilizamos la siguiente consulta:
WHERE
En la mayora de casos es necesario localizar, en una base de datos, filas que cumplan con ciertos criterios de seleccin. SQL utiliza la clusula WHERE en una consulta SELECT para especificar los criterios de seleccin para la consulta. La forma bsica de una consulta SELECT con criterios condicin de seleccin es:
Los criterios de la clusula WHERE pueden contener lo siguientes operadores de comparacin: =, >, <, >=, <=, !=, <>, IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE. Adems, se puede construir condiciones mltiples usando los operadores lgicos AND, OR y NOT. Se puede utilizar parntesis si se desea forzar algn orden de evaluacin.
ORDER BY
ER BY.- El resultado de una consulta puede ordenarse en forma ascendente o descendente, mediante el uso de la clusula ODER BY opcional. La forma bsica de una instruccin SELECT con una clusula ORDER BY es:
En donde ASC especifica el orden ascendente (de menor a mayor), DESC especifica el orden descendente (de mayor a menor) y columna1 especifica la columna en la cual se basa el ordenamiento. Por ejemplo, para obtener la lista de cursos en orden ascendente por nombre de curso.
b)CLAUSULAS
GROUP BY: Esta clausula ordena por grupos.
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
HAVING: Se utiliza cuando se emplea funciones agregadas.
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
c) FUNCIONES
AVG(): Devuelve el promedio de una columna de datos.
IN
El operador IN permite especificar varios valores en una clusula WHERE.
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
EJEMPLO
SELECT * FROM Customers WHERE City IN ('Paris','London');
LIKE
Existe un operador relacional que se usa para realizar comparaciones exclusivamente de cadenas, "like" y "not like".
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
Entonces el operador LIKE,nos permite comparar trozos de cadenas de caracteres para realizar consultas.
select *from libros where autor like "%Borges%";
El smbolo "%" (porcentaje) reemplaza cualquier cantidad de caracteres (incluyendo ningn carcter). Es un carcter comodn. "like" y "not like" son operadores de comparacin que sealan igualdad o diferencia.
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
Note que el smbolo "%" ya no est al comienzo, con esto indicamos que el ttulo debe tener como primera letra la "M" y luego, cualquier cantidad de caracteres. Para seleccionar todos los libros que NO comiencen con "M":
select *from libros where titulo not like 'M%';
EJEMPLOS
... like '[a-cf-i]%': busca cadenas que comiencen con a,b,c,f,g,h o i;
... like '[-acfi]%': busca cadenas que comiencen con -,a,c,f o i; ... like 'A[_]9%': busca cadenas que comiencen con 'A_9'; ... like 'A[nm]%': busca cadenas que comiencen con 'An' o 'Am
... like '%[%]%': busca cadenas que contengan el signo '%'; ... like '%[_]%': busca cadenas que contengan el signo '_'; ... like '%[[]%': busca cadenas que contengan el signo '[';
El cuarto caracter comodn es [^] reemplaza cualquier caracter NO presente en el conjunto especificado dentro de los corchetes.
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
EJEMPLOS
"like" se emplea con tipos de datos char, nchar, varchar, nvarchar o datetime. Si empleamos "like" con tipos de datos que no son caracteres, SQL Server convierte (si es posible) el tipo de dato a carcter.
Por ejemplo, queremos buscar todos los libros cuyo precio se encuentre entre 10.00 y 19.99:
select titulo,precio from libros where precio like '1_.%';
BETWEEN
Hemos visto los operadores relacionales: = (igual), <> (distinto), > (mayor), < (menor), >= (mayor o igual), <= (menor o igual), is null/is not null (si un valor es NULL o no).
Otro operador relacional es "between", trabajan con intervalos de valores.
Hasta ahora, para recuperar de la tabla "libros" los libros con precio mayor o igual a 20 y menor o igual a 40, usamos 2 condiciones unidas por el operador lgico "and":
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
NOT BETWEEN
Between" significa "entre". Trabaja con intervalo de valores. Este operador se puede emplear con tipos de datos numricos y money (en tales casos incluyen los valores mnimo y mximo) y tipos de datos fecha y hora (incluye slo el valor mnimo).Otro operador relacional es "between", trabajan con intervalos de valores.
Si agregamos el operador "not" antes de "between" el resultado se invierte, es decir, se recuperan los registros que estn fuera del intervalo especificado. Por ejemplo, recuperamos los libros cuyo precio NO se encuentre entre 20 y 35, es decir, los menores a 15 y mayores a 25:
select *from libros where precio not between 20 and 35;
AGENDA
USO DE DISTINC, TOP , CASE.
DISTINC
Con la clusula "distinct" se especifica que los registros con ciertos datos duplicados sean obviadas en el resultado.
SELECT DISTINCT column_name,column_name FROM table_name;
Note que en los tres casos anteriores aparece "null" como un valor para "autor" Si slo queremos la lista de autores conocidos, es decir, no queremos incluir "null" en la lista, podemos utilizar la sentencia siguiente:
select distinct autor from libros where autor is not null;
EJEMPLOS DISTINC
Para contar los distintos autores, sin considerar el valor "null" usamos:
select count(distinct autor) from libros;
Note que si contamos los autores sin "distinct", no incluir los valores "null" pero si los repetidos:
select count(autor) from libros;
Podemos combinarla con "where". Por ejemplo, queremos conocer los distintos autores de la editorial "Planeta":
select distinct autor from libros where editorial='Planeta';
EJEMPLOS DISTINC
Tambin puede utilizarse con "group by" para contar los diferentes autores por editorial:
select editorial, count(distinct autor) from libros group by editorial;
La clusula "distinct" afecta a todos los campos presentados. Para mostrar los ttulos y editoriales de los libros sin repetir ttulos ni editoriales, usamos:
select distinct titulo,editorial from libros order by titulo;
Note que los registros no estn duplicados, aparecen ttulos iguales pero con editorial diferente, cada registro es diferente.La palabra clave "distinct" no est permitida con las clusulas "compute" y "compute by". Entonces, "distinct" elimina registros duplicados.
TOP
La palabra clave "top" se emplea para obtener slo una cantidad limitada de registros, los primeros n registros de una consulta.
SELECT TOP number|percent column_name(s) FROM table_name;
Con la siguiente consulta obtenemos todos los datos de los primeros 2 libros de la tabla:
select top 2 *from libros;
TOP Y ORDER BY
Cuando se combina con "order by" es posible emplear tambin la clusula "with ties". Esta clusula permite incluir en la seleccion, todos los registros que tengan el mismo valor del campo por el que se ordena, que el ltimo registro retornado si el ltimo registro retornado (es decir, el nmero n) tiene un valor repetido en el registro n+1. Es decir, si el valor del campo por el cual se ordena del ltimo registro retornado (el nmero n) est repetido en los siguientes registros (es decir, el n+1 tiene el mismo valor que n, y el n+2, etc.), lo incluye en la seleccin.
select top 3 with ties *from libros order by autor;
Esta consulta solicita el retorno de los primeros 3 registros; en caso que el registro nmero 4 (y los posteriores), tengan el mismo valor en "autor" que el ltimo registro retornado (nmero 3), tambin aparecern en la seleccin. Si colocamos un valor para "top" que supera la cantidad de registros de la tabla, SQL Server muestra todos los registros.
CASE
CASE se utiliza para brindar un tipo de lgica "si-entonces-otro" para SQL. Su sintaxis es:
SELECT CASE (Column_name(s) WHEN "condition1" THEN "result1" WHEN "condition2" THEN "result2" ... [ELSE "resultN"] END FROM Table_name";
"condition" puede ser un valor esttico o una expresin. La clusula ELSE es opcional.
EJEMPLO CASE
Si deseamos multiplicar las sumas de ventas de 'Los Angeles' por 2 y las sumas de ventas de 'San Diego' por 1,5, ingresamos, Nuevas Ventas" es el nombre que se le otorga a la columna con la instruccin CASE
SELECT Store_Name, CASE Store_Name WHEN 'Los Angeles' THEN Sales * 2 WHEN 'San Diego' THEN Sales * 1.5 ELSE Sales END "Nuevas Ventas", Txn_Date FROM Store_Information;
Ing. Carlos Manuel Rodrguez Palomino
TRANSACTION - SQL SERVER
INSERCIN DE REGISTROS
AGENDA
1. TIPOS DE DATOS Y DEFINICIN DE VARIABLES, VALORES NULOS. 2. COLUMNAS CON CONTADOR, MODIFICAR ESTRUCTURA DE LA TABLA. 3. SENTENCIAS Y FUNCIONES BSICAS DE TRANSACT SQL. 4. CREAR Y EJECUTAR SCRIPTS DE CONSULTA. 5. USO DE CRITERIOS Y CLASULAS. IN LIKE, BETWEEN. 6. USO DE DISTINC, TOP , CASE. 7. INSERCIN DE REGISTROS. 8. APLICACIONES Y CASOS PRCTICAS