Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Diapositiva 2
Diapositiva 3
Diapositiva 4
Base de datos relacional. En una base de datos relacional, los datos se organizan en
tablas. Una tabla tiene cero o ms filas, cada fila contiene la informacin de un
determinado 'sujeto' de la tabla, por ejemplo en una tabla de alumnos, en una fila
tenemos los datos de un alumno. Las filas en un principio estn desordenadas.
Cada columna representa un 'campo' de la tabla, sirve para almacenar una determinada
informacin, por ejemplo en una tabla de alumnos tendremos una columna para
almacenar el nombre de los alumnos. Todos los valores de una columna determinada
tienen el mismo tipo de dato, y stos estn extrados de un conjunto de valores legales
llamado dominio de la columna. A parte de los valores del dominio, una columna puede
contener el valor nulo (NULL) que indica que no contiene ningn valor. En una tabla
no pueden haber dos columnas con el mismo nombre pero ese nombre s se puede
utilizar en otra tabla.Normalmente todas las tablas deben tener una clave principal
definida. Una clave principal es una columna (o combinacin de columnas) que permite
identificar de forma inequvoca cada fila de la tabla, por lo que no pueden haber en una
tabla dos filas con el mismo valor en la columna definida como clave principal. Una
clave fornea es una columna (o combinacin de columnas) que contiene un valor que
hace referencia a una fila de otra tabla (en algunos casos puede ser la misma tabla).Por
ejemplo, tenemos dos tablas, la de alumnos y la de cursos, en la tabla de alumnos
pondramos una columna curso: para saber en qu curso est matriculado el alumno, la
columna curso en la tabla de alumnos es clave fornea, mientras que la columna codigo
de la tabla de cursos ser clave primaria.Una tabla tiene una nica clave primaria. Una
tabla puede contener cero o ms claves forneas.Cuando se define una columna como
clave principal, ninguna fila de la tabla puede contener un valor nulo en esa columna ni
tampoco se pueden repetir valores en la columna.Cuando se define una columna como
clave fornea, las filas de la tabla pueden contener en esa columna o bien el valor nulo,
o bien un valor que existe en la otra tabla. Eso es lo que se denomina integridad
referencial que consiste en que los datos que referencian otros (clave fornea) deben
1
ser correctos. Las bases de datos de Access2000 tienen la extensin .MDB para que el
ordenador las reconozca como tal.
http://www.aulaclic.es/sql/f_sql.htm
Diapositiva 5
Diapositiva 6
Introduccin
La integridad referencial es un sistema de reglas que utilizan la mayora de las bases
de datos relacionales para asegurarse que los registros de tablas relacionadas son
vlidos y que no se borren o cambien datos relacionados de forma accidental
produciendo errores de integridad.Primero repasemos un poco los tipos de relaciones.
Tipos de relaciones. Entre dos tablas de cualquier base de datos relacional pueden
haber dos tipos de relaciones, relaciones uno a uno y relaciones uno a muchos:
Relacin Uno a Uno: Cuando un registro de una tabla slo puede estar relacionado
con un nico registro de la otra tabla y viceversa.
Por ejemplo: tenemos dos tablas una de profesores y otra de departamentos y queremos
saber qu profesor es jefe de qu departamento, tenemos una relacin uno a uno entre
las dos tablas ya que un departamento tiene un solo jefe y un profesor puede ser jefe de
un solo departamento.
Relacin Uno a Varios: Cuando un registro de una tabla (tabla secundaria) slo
puede estar relacionado con un nico registro de la otra tabla (tabla principal) y un
registro de la tabla principal puede tener ms de un registro relacionado en la
tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla
'padre' y a la tabla secundaria como tabla 'hijo', entonces la regla se convierte en 'un
padre puede tener varios hijos pero un hijo solo tiene un padre (regla ms fcil de
recordar).
Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con
los habitantes, una poblacin puede tener ms de un habitante, pero un habitante
pertenecer (estar empadronado) en una nica poblacin. En este caso la tabla
principal ser la de poblaciones y la tabla secundaria ser la de habitantes. Una
poblacin puede tener varios habitantes pero un habitante pertenece a una sola
2
poblacin. Esta relacin se representa incluyendo en la tabla 'hijo' una columna que se
corresponde con la clave principal de la tabla 'padre', esta columna es lo denominamos
clave fornea (o clave ajena o clave externa).
Una clave fornea es pues un campo de una tabla que contiene una referencia a un
registro de otra tabla. Siguiendo nuestro ejemplo en la tabla habitantes tenemos una
columna poblacin que contiene el cdigo de la poblacin en la que est empadronado
el habitante, esta columna es clave ajena de la tabla habitantes, y en la tabla poblaciones
tenemos una columna codigo de poblacion clave principal de la tabla.
Relacin Varios a Varios: Cuando un registro de una tabla puede estar
relacionado con ms de un registro de la otra tabla y viceversa. En este caso las dos
tablas no pueden estar relacionadas directamente, se tiene que aadir una tabla entre las
dos que incluya los pares de valores relacionados entre s.
Por ejemplo: tenemos dos tablas una con los datos de clientes y otra con los artculos
que se venden en la empresa, un cliente podr realizar un pedido con varios artculos, y
un artculo podr ser vendido a ms de un cliente.
No se puede definir entre clientes y artculos, hace falta otra tabla (por ejemplo una
tabla de pedidos) relacionada con clientes y con artculos. La tabla pedidos estar
relacionada con cliente por una relacin uno a muchos y tambin estar relacionada con
artculos por un relacin uno a muchos.
Integridad referencial
Cuando se define una columna como clave fornea, las filas de la tabla pueden contener
en esa columna o bien el valor nulo (ningn valor), o bien un valor que existe en la otra
tabla, un error sera asignar a un habitante una poblacin que no est en la tabla de
poblaciones. Eso es lo que se denomina integridad referencial y consiste en que los
datos que referencian otros (claves forneas) deben ser correctos. La integridad
referencial hace que el sistema gestor de la base de datos se asegure de que no hayan en
las claves forneas valores que no estn en la tabla principal.
La integridad referencial se activa en cuanto creamos una clave fornea y a partir
de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.
Cundo se pueden producir errores en los datos?
Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave
fornea no existe en la tabla principal. insertamos un nuevo habitante y en la columna
poblacion escribimos un cdigo de poblacion que no est en la tabla de poblaciones
(una poblacin que no existe).
3
Esta opcin le indica al sistema gestor de la base de datos que cuando se cambie un
valor del campo clave de la tabla principal, automticamente cambiar el valor de
la clave fornea de los registros relacionados en la tabla secundaria.
Por ejemplo, si cambiamos en la tabla de poblaciones (la tabla principal) el valor 1 por
el valor 10 en el campo codigo (la clave principal), automticamente se actualizan todos
los habitantes (en la tabla secundaria) que tienen el valor 1 en el campo poblacion (en la
clave ajena) dejando 10 en vez de 1.
4
Si no se tiene definida esta opcin, no se puede cambiar los valores de la clave principal
de la tabla principal. En este caso, si intentamos cambiar el valor 1 del codigo de la
tabla de poblaciones , no se produce el cambio y el sistema nos devuelve un error o un
mensaje que los registros no se han podido modificar por infracciones de clave.
Eliminar registros en cascada:
Esta opcin le indica al sistema gestor de la base de datos que cuando se elimina un
registro de la tabla principal automticamente se borran tambin los registros
relacionados en la tabla secundaria.
INDICES
Ventajas:
Si una tabla tiene definido un ndice sobre una columna se puede localizar mucho ms
rpidamente una fila que tenga un determinado valor en esa columna.
Recuperar las filas de una tabla de forma ordenada por la columna en cuestin
tambin ser mucho ms rpido.
Inconvenientes:
Al ser el ndice una estructura de datos adicional a la tabla, ocupa un poco ms de
espacio en disco.
Cuando se aaden, modifican o se borran filas de la tabla, el sistema debe actualizar los
ndices afectados por esos cambios lo que supone un tiempo de proceso mayor.
Por estas razones no es aconsejable definir ndices de forma indiscriminada.
Los inconvenientes comentados en este punto no son nada comparados con las ventajas
si la columna sobre la cual se define el ndice es una columna que se va a utilizar a
menudo para buscar u ordenar las filas de la tabla. Por eso una regla bastante acertada es
definir ndices sobre columnas que se vayan a utilizar a menudo para recuperar u
ordenar las filas de una tabla.
El Access de hecho crea automticamente ndices sobre las columnas claves principales
y sobre las claves forneas ya que se supone que se utilizan a menudo para recuperar
filas concretas.
Diapositiva 7
Diapositiva 8
Alinstalar esta versin CTP de SQL Server 2005 con Visual Studio 2005 Release
Candidate (RC), debe instalar siempre SQL Server 2005 antes que Visual Studio 2005.
Tambin debe quitar todas las compilaciones anteriores de SQL Server 2005, Visual
Studio 2005 y .NET Framework antes de instalar esta versin CTP. Debido a que ambos
productos dependen de la misma versin de .NET Framework, se deben desinstalar en
el siguiente orden:
SQL Server 2005
SQL Server 2005 CTP se puede instalar simultneamente con versiones anteriores
seleccionadas de SQL Server. Para obtener ms informacin, consulte el tema sobre el
uso de varias versiones de SQL Server en la documentacin de instalacin.
http://download.microsoft.com/download/0/3/b/03bf2f3b-c3ee-4e33-ba4448fa39b72f92/ReadmeSQL2005.htm#_3460_installing_sql_server_2005_communit_fz
py
Diapositiva 9
SQL Computer Manager y SQL Command son el mismo para SQL Server Express
como para las otras ediciones de SQL Server 2005.
Diapositiva 10
Diapositiva 11
Diapositiva 12
pasando de una a otra. Con SQL Server Management Studio (SSMS) se utilizan
pestaas (tabs) para organizar las consultas abiertas.
Cambio de conexin. Con Query Analizer no se puede cambiar la conexin de una
consulta, slo cambiar de base de datos dentro del mismo servidor. Con SSMS si que
podemos conectar una consulta a cualquier servidor en cualquier momento.
Filtrado de datos. Se pueden filtrar los listados de tablas, de objetos que se estn
manipulando, cosa que agradecern los administradores con bases de datos de cientos
de objetos (tablas, vistas, procedimientos). De esta forma podemos indicar que nos
muestre slo los objetos que contienen la palabra ARTICULO, por ejemplo.
Diapositiva 13
Diapositiva 14
Diapositiva 15
SQL Server 2005 reemplazo el antiguo SQL Query Analyzer por el Query Editor, es un
componente del Server Management Studio y es una de las herramientas primarias para
testear sentencias T-SQL, queries, scripts, etc.
Con el Query Editor, usted puede escribir scripts en Transact-SQL y Expresiones
Multidimensionales (MDX). Usted puede tambien editar scripts que fueron creados
desde archivos o que automaticamente fueron generados por cuadros de dalogos del
SQL Server Management Studio o bien desde el SQL Object Explorer.
El Query Editor Posee:
AutoComplete de sentencias.
Color Coding
Templates
Representaciones Graficas
Diapositiva 16
Diapositiva 17
Diapositiva 18
10
Diapositiva 19
Que Yukon incorpore el CLR significa que los programadores podrn utilizar el
lenguaje que estn acostumbrados a usar (y no obligatoriamente T-SQL, aunque ste
sigue estando disponible, adems con diversas extensiones y mejoras) a la hora de
escribir un procedimiento almacenado o una funcin asociados a una base de datos. Las
posibilidades son casi infinitas ya que un procedimiento almacenado escrito con C#, por
poner un ejemplo, no tiene a su alcance slo las construcciones de este lenguaje de
programacin, mucho ms potentes que las de T-SQL, sino tambin el acceso a los
servicios de la biblioteca de clases, la seguridad en la ejecucin del cdigo .NET y el
rendimiento mejorado ya que dicho cdigo se compila a cdigo nativo. Usando esta
capacidad sera posible, a modo de ejemplo, escribir un procedimiento almacenado que
ante la solicitud de un cliente extrajese de la base de datos la informacin de un
producto y su imagen, tratando dicha imagen con los servicios de GDI+ en el propio
servidor de datos para entregarla con los atributos apropiados (esto difcilmente podra
hacerse usando solo T-SQL).
Diapositiva 20
11
Estando tan prximo el lanzamiento oficial de las versiones 2005 de Visual Studio
.NET y SQL Server en nuestro pas, este artculo pretende explorar una de las
caractersticas ms innovadoras de la prxima versin de SQL Server: La Creacin de
Procedimientos Almacenados y Funciones en SQL Server utilizando los lenguajes del
.NET Framework Desarrollo y Administracin de Base de Datos Si el trabajo que
realizas combina actividades tanto de administracin de base de datos como de
desarrollo, seguro que estas familiarizado con lo que es el CLR(Common Language
Runtime) del Framework .NET, pero si en tu trabajo solo desempeas tareas de
administracin de base de datos quizs an no lo estas. Seguramente hasta ahora no le
has prestado demasiada atencin porque creas que esto solo era algo concerniente a los
desarrolladores, este concepto est tendiendo a cambiar ya que en las prximas
versiones tanto de SQL Server como de VS.net ser importante y ventajoso comprender
y saber utilizar de manera oportuna y eficiente el CLR indistintamente del papel que
desempees en tu trabajo.
12
En SQL 2000 y versiones previas se poda acceder a cdigo externo mediante los
llamados procedimientos almacenados extendidos (extended procedures(xp), basados en
C/C++), algunos de estos invocaban a DLLs precompiladas. Esto es usado cuando se
desea realizar tareas ciertamente complejas, como por ejemplo clculos matemticos
complejos, acceder a funcionalidad expuesta por el sistema operativo o realizar tareas
que demanden un fuerte trabajo de la CPU, es decir tareas en las cuales el T-SQL es
insuficiente e incapaz de poder realizarlas por s solo.
El uso de los procedimientos almacenados extendidos tena ciertas desventajas, el
cdigo que se ejecutaba tena que ser un cdigo en el que el SQL Server confiara
plenamente, y adems el hecho de ser un cdigo no administrado haca que estos se
ejecutaran en el mismo espacio de memoria que el SQL Server, esto traa consigo el
riesgo de ocasionar algn error en el SQL Sever y hacer que este se colgara. Digamos
que los reemplazantes modernos de los xp son precisamente los Procedimientos basados
en CLR.
Algunas situaciones en las que utilizar el CLR sera una buena alternativa a los ya
clsicos procedimientos basados en T-SQL, seran las siguientes:
SQL Server 2005 soportar tres lenguajes: T-SQL, C# y VB.net. Los procedimientos
almacenados que actualmente se usan en SQL 2000 y versiones previas deberan
continuar corriendo y se podr crear nuevos procedimientos, funciones y UDT's (Tipos
Definidos por Usuario) en alguno de los tres lenguajes soportados. A diferencia del TSQL, los lenguajes .NET pueden utilizar las ms de 5000 clases que el Framework .Net
posee, y esto obviamente es una gran diferencia y ventaja.
Es importante resaltar que el uso de estos nuevos lenguajes de lado del Servidor de Base
de Datos, debe ser plenamente justificado, no se trata de que con las nueva versin de
SQL todos empecemos a crear procedimientos o funciones mediante los lenguajes
.NET, y ya no se utilice el T-SQL, esto sera un gran error, por el contrario, los
desarrolladores y administradores de bases de datos deben utilizar primariamente el TSQL, si en caso se presentara alguna situacin en la que el T-SQL quedase limitado,
entonces es en esta situacin que se debera utilizar alguno de los lenguajes .NET.
Si en principio el desarrollador utiliza de manera injustificada los lenguajes .net para
una tarea que pudo haber realizado con T-SQL tradicional, quizs al evaluar y comparar
el performance de uno versus el otro, encontrar que el procedimiento hecho en T-SQL
es ms rpido que el que se realiz con lenguajes .net; probablemente sta sea una
experiencia muy decepcionante y tal vez el desarrollador ya no quiera saber ms a cerca
del uso del CLR. Y esto, lgicamente, no es lo que se pretende; de all que se
recomienda usar los lenguajes .net bajo razones plenamente justificadas.
El ser rigurosos con el uso justificado de los procedimientos basados en CLR, pasa por
el hecho de que si los utilizamos para tareas muy simples, nos tomar ms tiempo la
ejecucin del procedimiento CLR que la del procedimiento T-SQL. El escenario cambia
si es que la tarea a realizar por el procedimiento no es sencilla, en tal caso el tiempo que
nos puede tomar el desarrollo del procedimiento CLR comparativamente con un
procedimiento T-SQL es muchsimo menor.
14
Caso de Aplicacin
Diapositiva 21
Estando tan prximo el lanzamiento oficial de las versiones 2005 de Visual Studio
.NET y SQL Server en nuestro pas, este artculo pretende explorar una de las
caractersticas ms innovadoras de la prxima versin de SQL Server: La Creacin de
Procedimientos Almacenados y Funciones en SQL Server utilizando los lenguajes del
.NET Framework Desarrollo y Administracin de Base de Datos Si el trabajo que
realizas combina actividades tanto de administracin de base de datos como de
desarrollo, seguro que estas familiarizado con lo que es el CLR(Common Language
Runtime) del Framework .NET, pero si en tu trabajo solo desempeas tareas de
administracin de base de datos quizs an no lo estas. Seguramente hasta ahora no le
has prestado demasiada atencin porque creas que esto solo era algo concerniente a los
desarrolladores, este concepto est tendiendo a cambiar ya que en las prximas
versiones tanto de SQL Server como de VS.net ser importante y ventajoso comprender
y saber utilizar de manera oportuna y eficiente el CLR indistintamente del papel que
desempees en tu trabajo.
15
En SQL 2000 y versiones previas se poda acceder a cdigo externo mediante los
llamados procedimientos almacenados extendidos (extended procedures(xp), basados en
C/C++), algunos de estos invocaban a DLLs precompiladas. Esto es usado cuando se
desea realizar tareas ciertamente complejas, como por ejemplo clculos matemticos
complejos, acceder a funcionalidad expuesta por el sistema operativo o realizar tareas
que demanden un fuerte trabajo de la CPU, es decir tareas en las cuales el T-SQL es
insuficiente e incapaz de poder realizarlas por s solo.
El uso de los procedimientos almacenados extendidos tena ciertas desventajas, el
cdigo que se ejecutaba tena que ser un cdigo en el que el SQL Server confiara
16
SQL Server 2005 soportar tres lenguajes: T-SQL, C# y VB.net. Los procedimientos
almacenados que actualmente se usan en SQL 2000 y versiones previas deberan
continuar corriendo y se podr crear nuevos procedimientos, funciones y UDT's (Tipos
Definidos por Usuario) en alguno de los tres lenguajes soportados. A diferencia del TSQL, los lenguajes .NET pueden utilizar las ms de 5000 clases que el Framework .Net
posee, y esto obviamente es una gran diferencia y ventaja.
Es importante resaltar que el uso de estos nuevos lenguajes de lado del Servidor de Base
de Datos, debe ser plenamente justificado, no se trata de que con las nueva versin de
17
Caso de Aplicacin
Diapositiva 23
Thread Management
SQL Server usa hilos de ejecucin por scheduling
CLR usa preferentemente thdread scheduling
Para asegurar la estabilidad, el CLR llama a las APIs del SQL Server para crear threads
Para sincronizar entre los hilos de ejecucin, el CLR llama a objetos del SQL Server
para sincronizar
Usted puede capitalizar de la integracin CLR para escribir cdigo con lgica ms
compleja y que sea ms apropiado para tareas de clculo, utilizando lenguajes como
Visual Basic .NET y C#. Adems, Visual Basic .NET y C# ofrecen capacidades
orientadas a objetos como encapsulamiento, herencia, y polimorfismo.
uede organizar fcilmente cdigo relacionado a clases y espacio de nombres, lo que
significa que puede organizar y mantener sus inversiones de cdigo con facilidad
cuando esta trabajando con grandes cantidades de cdigo. Esta habilidad para organizar
cdigo de manera lgica y fsica en asambleas y espacio de nombres es un beneficio
enorme, y le permitir encontrar y relacionar diferentes pedazos de cdigo con facilidad
en una implementacin grande de base de datos.
El cdigo managed es ms eficiente que Transact-SQL para procesar nmeros y lgica
de ejecucin complicada, y brinda un soporte extenso a manejo de strings, expresiones
regulares, etc. Tambin, con la funcionalidad disponible en la biblioteca de clases .NET
Framework, usted tendr acceso completo a miles de clases pre-construidas y rutinas a
las cuales podr acceder fcilmente de cualquier procedimiento almacenado,
disparadores, o funciones definidas por el usuario.
unciones mejoradas de manejo de strings, funciones de matemticas, operaciones de
fechas, acceso a recursos del sistema, algoritmos de encriptacin avanzados, acceso a
archivos, procesamiento de imgenes y manipulacin de datos XML, todos son
accesibles con facilidad desde procedimientos de almacenamiento managed, funciones,
disparadores y agregados.
Uno de los beneficios ms importantes de cdigo managed es la seguridad de tipo.
Antes de que el cdigo managed sea ejecutado, el CLR realiza varias verificaciones,
mediante un proceso conocido como verificacin, para asegurarse que el cdigo es
seguro. Por ejemplo, el cdigo es verificado para asegurarse que no se lea memoria a la
cual no se ha escrito.
Mejoras de Seguridad
SQL Server 2005 se beneficia de la iniciativa Trustworthy Computing, una iniciativa de
Microsoft para mejorar la experiencia de los clientes en las reas de seguridad,
privacidad, confiabilidad e integridad de negocios. Como parte de esta iniciativa que fue
presentada en Enero del 2002, hoy en da Microsoft sigue los procesos de desarrollo que
ayudan a asegurar que nuestros productos e instalaciones de productos sean seguras. El
21
Diapositiva 24
El Codigo Administrado es verificado por el runtime para asegurarse que es del tipo
seguro, y lo valida
El Codigo es cargado desde la tabla metadata de sys.assembly_files en la base de datos
ms bien en el file system
El cdigo precargado es verificado e SQL Server toma la responsabilidad de validar
todas las librerias
22
El CLR notificar al SQL Server acerca de la repercusin del la descarga por cada
solicitud de memoria
Diapositiva 25
23
24
Diapositiva 26
Diapositiva 27
Diapositiva 28
ALTER Assembly
SQL Server crea un nuego AppDomain para cargar el nuevo cdigo
existente
La session exitente continuar utilizando el viejo cdigo del AppDomain
original
Luego de finalizar la session, las nuevas sessiones se re-enrutarian al nuevo
AppDomain
Permissions
Cualquiera : Sysadmindb_owner, db_ddladmin,CREATE ASSEMBLY
25
Diapositiva 29
Diapositiva 30
Ejecutarlo como
Funciones Escalares
Las funciones que realizan operaciones de manipulacin de
secuencias, benefician al SQLCLR
Las funciones escalares implemetadas en XP para acomodar
prodecimientos complejos, pueden ser reemplazados por sql SQL CLR
Diapositiva 32
Diapositiva 33
Diapositiva 34
Diapositiva 35
26
Diapositiva 36
Diapositiva 37
TSQL (de aqu en ms) es un lenguaje que sirve para la definicion, tratamiento y control
de datos, ste modulo proprciona una breve informacin general del tsql como lenguaje
de programacin. Tambien describe los distintos tipos de instrucciones de tsql y los
elementos de su sitnaxis
Diapositiva 38
Diapositiva 39
Una consulta es una peticiono que se hace para obtener datos almacenados en SQL
server. Todas las consultas presentan al usuario el conjunto de resultados de uns
instruccin SELECT. Un conjutno de resultados es una tabla que muestra lod datos
obtenidos mediante la instruccin SQLECT. La tabla tiene filas y columnas.
27
Instrucciones del Lenguaje de definincion de datos (DDL), que se utilizan para crear
objetos en la base de datos.
Diapositiva 40
28
USE northwind
CREATE TABLE Customer
(cust_id int, company varchar(40), contact varchar(30), phone char(12))
GO
Diapositiva 41
Las instrucciones de DCL se utilizan para cambiar los permisos asociados con un
usuario o funcion de la base de datos. En la tabla siguiente se descibien algunos:
GRANT:
Crea una entrada en el sistema de seguridad que permite a un susuartio trabajar con
datos o ejecutar ciertas instrucciones de transact sql
DENY:
Crea una entrada en el sistema de seguridad que deniega un permiso de una cuenta de
seguridad e impide que el usuario, grupo o funcion herede el permiso a traves de su
pertenencia a grupos o funciones.
REVOKE:
Quita un permiso concedido o denegado previamente.
Diapositiva 42
29
SELECT
INSERT
UPDATE
DELETE
Ejemplo:
En ste caso se recuperar el identificador de categoria, nombre de producto,
identificador de producto y precio por unidad de los productos de la base de datos
Northwind
Diapositiva 43
SQL Server procesa en lotes una o varias instrucciones de TSQL. Una directiva de
proceso por lotes indica a SQL Server que debe analizar y ejecutar todas las
instrucciones que componen el lote. Hasy dos mtodos bsicos de iniciar procesos por
lotes en SQL Sever.
GO
Las utilidades de SQL Sever interpretan el comando GO como una seal para iniciar el
envo del lote actual de instrucciones de TSQL a SQL Server.
Un comando GO delimita lotes de instrucciones de TSQL para las herramientas y
utiulidades, y marca el final del lote. No se trata, realmente, de uns instruccin de
TSQL.
Al usar el comando GO debe tener en cuenta estas cuestiones:
El lote actual de instrucciones incluye todas las que se han escrito desde el comando GO
anterior o desde el inicio de la sesion ( o secuencia de comandos, si se trata del primer
comando GO).
Una instruccin de TSQL no puede ocupar la misma linea que el comando GO, auqneu
esa linea si puede contener comentarios.
Los usuarios deben seguir las nomras aplicables a los lotes.
Por ejemplo, algunas instrucciones de lenguamne de definicion de datos (DDL), deben
ejecutarse de forma independiente de otras instrucciones de TSQL, por lo que se
separan unas de otras por medio de un comando GO
30
El mbito de las variables locales (definidas por el usuario) se limita a un lote, con lo
que no se puede hacer referencia a ellas despues de un comando GO
EXEC
La directiva EXEC se usa para ejcecutar una funcion definida por el usuario, un
prodecimiento de sistema, un procedimiento almacenado definido por el usuario o un
procedimiento almacenado extendido. Tambien puede controlar la ejecucion de una
cadena de caracteres dentro de un lote de TSQL.
Se pueden pasar parmetros en forma de argumentos y tambien se puede asignar un
estado de retorno
Diapositiva 44
Comentarios en linea.
Se pueden crear comentarios en una linea mediante dos guiones (--) para establecer un
comentario aparte de una instruccin. TSQL pasa por alto el texto situado a la derecia
de los caracteres de comentario. ste carcter de comentario se puede utilizar tambien
para deshabilitar lineas de una instruccin.
Comentarios en Bloque
Para crear bloques de varias lineas de comentarios, coloque un carcter de comentario
(/*) al comienzo del texto del comentario, escriba suys anotaciones y , despues,
concluya el comentario con un carcter de cierre de comentario (*/).
Utilice este indicarod de carcter para cerar una o varias lineas de comentarios
Diapositiva 45
Diapositiva 46
Specifies the maximum number of decimal digits that can be stored to the right of the
decimal point. Scale must be a value from 0 through p. The default scale is 0; therefore,
0 <= s <= p. Maximum storage sizes vary, based on the precision.
Diapositiva 47
Smalldatetime
33
Date and time data from January 1, 1900, through June 6, 2079, with accuracy to the
minute. smalldatetime values with 29.998 seconds or lower are rounded down to the
nearest minute; values with 29.999 seconds or higher are rounded up to the nearest
minute.
Diapositiva 48
nchar(n)
Fixed-length Unicode character data of n characters. n must be a value from 1 through
4,000. Storage size is two times n bytes. The SQL-92 synonyms for nchar are national
char and national character.
nvarchar(n)
Variable-length Unicode character data of n characters. n must be a value from 1
through 4,000. Storage size, in bytes, is two times the number of characters entered. The
data entered can be 0 characters in length. The SQL-92 synonyms for nvarchar are
national char varying and national character varying.
Remarks
When n is not specified in a data definition or variable declaration statement, the default
length is 1. When n is not specified with the CAST function, the default length is 30.
Use nchar when the data entries in a column are expected to be consistently close to the
same size.
Use nvarchar when the data entries in a column are expected to vary considerably in
size.
Objects using nchar or nvarchar are assigned the default collation of the database,
unless a specific collation is assigned using the COLLATE clause.
SET ANSI_PADDING OFF does not apply to nchar or nvarchar. SET
ANSI_PADDING is always ON for nchar and nvarchar.
Diapositiva 49
35
image
Variable-length binary data from 0 through 231-1 (2,147,483,647) bytes.
Diapositiva 50
Arithmetic Operators
Arithmetic operators perform mathematical operations on two expressions of any of the
data types of the numeric data type category. For more information about data type
categories, see Transact-SQL Syntax Conventions.
Assignment Operator
Transact-SQL has one assignment operator, the equals sign (=). In this example, the
@MyCounter variable is created. Then, the assignment operator sets @MyCounter to
a value returned by an expression.
DECLARE @MyCounter INT SET @MyCounter = 1 The assignment operator can also
be used to establish the relationship between a column heading and the expression
defining the values for the column. This example displays two column headings named
FirstColumnHeading and SecondColumnHeading. The string xyz is displayed in the
FirstColumnHeading column heading for all rows. Then, each product ID from the
Products table is listed in the SecondColumnHeading column heading.
USE Northwind GO SELECT FirstColumnHeading = 'xyz', SecondColumnHeading =
ProductID FROM Products GO
Bitwise Operators
Bitwise operators perform bit manipulations between two expressions of any of the data
types of the integer data type category.
Comparison Operators
Comparison operators test whether or not two expressions are the same. Comparison
operators can be used on all expressions except expressions of the text, ntext, or image
data types.
The result of a comparison operator has the Boolean data type, which has three values:
TRUE, FALSE, and UNKNOWN. Expressions that return a Boolean data type are
known as Boolean expressions.
Unlike other SQL Server data types, a Boolean data type cannot be specified as the data
type of a table column or variable, and cannot be returned in a result set.
36
When SET ANSI_NULLS is ON, an operator that has one or two NULL expressions
returns UNKNOWN. When SET ANSI_NULLS is OFF, the same rules apply, except
an equals operator returns TRUE if both expressions are NULL. For example, NULL =
NULL returns TRUE if SET ANSI_NULLS is OFF.
Expressions with Boolean data types are used in the WHERE clause to filter the rows
that qualify for the search conditions and in control-of-flow language statements such as
IF and WHILE, for example:
USE Northwind GO DECLARE @MyProduct int SET @MyProduct = 10 IF
(@MyProduct <> 0) SELECT * FROM Products WHERE ProductID = @MyProduct
GO
Logical Operators
Logical operators test for the truth of some condition. Logical operators, like
comparison operators, return a Boolean data type with a value of TRUE or FALSE.
String Concatenation Operator
The string concatenation operator allows string concatenation with the addition sign (+),
which is also known as the string concatenation operator. All other string manipulation
is handled through string functions such as SUBSTRING.
By default, an empty string is interpreted as an empty string in INSERT or assignment
statements on data of the varchar data type. In concatenating data of the varchar, char,
or text data types, the empty string is interpreted as an empty string. For example, 'abc'
+ '' + 'def' is stored as 'abcdef'. However, if the sp_dbcmptlevel compatibility level
setting is 65, empty constants are treated as a single blank character and 'abc' + '' + 'def'
is stored as 'abc def'. For more information about the interpretation of empty strings, see
sp_dbcmptlevel.
When two character strings are concatenated, the collation of the result expression is set
following the rules of collation precedence. For more information, see Collation
Precedence.
Unary Operators
Unary operators perform an operation on only one expression of any of the data types of
the numeric data type category.
The + (Positive) and - (Negative) operators can be used on any expression of any of the
data types of the numeric data type category. The ~ (Bitwise NOT) operator can be used
only on expressions of any of the data types of the integer data type category.
37
Diapositiva 51
Operadores aritmticos
Los operadores aritmticos realizan operaciones matemticas con dos expresiones de
cualquiera de los tipos de datos de la categora del tipo de datos numrico. Para obtener
ms informacin acerca de las categoras de los tipos de datos, consulte Convenciones
de sintaxis de Transact-SQL.
OperadorSignificado+ (suma)Suma.- (resta)Resta.* (multiplicacin)Multiplicacin./
(divisin)Divisin.% (mdulo)Devuelve el resto entero de una divisin. Por ejemplo, 12
% 5 = 2 porque el resto de 12 dividido entre 5 es 2.
Tambin se pueden utilizar los operadores de suma (+) y resta (-) para realizar
operaciones aritmticas sobre valores datetime y smalldatetime.
Para obtener ms informacin acerca de la precisin y la escala de los resultados en las
operaciones aritmticas, consulte Precisin, escala y longitud.
Diapositiva 52
Operador de asignacin
Transact-SQL tiene un operador de asignacin, el signo igual (=). En este ejemplo, se
crea la variable @MyCounter. Entonces, el operador de asignacin establece
@MyCounter al valor devuelto por una expresin.
DECLARE @MyCounter INT SET @MyCounter = 1 El operador de asignacin
tambin se puede utilizar para establecer la relacin entre un encabezado de columna y
la expresin que define los valores para esa columna. Este ejemplo muestra dos
encabezados de columnas llamados FirstColumnHeading y SecondColumnHeading.
La cadena xyz se muestra en el encabezado de columna FirstColumnHeading para
todas las filas. Cada Id. de producto de la tabla Products se enumera en el encabezado
de columna SecondColumnHeading.
USE Northwind GO SELECT FirstColumnHeading = 'xyz', SecondColumnHeading =
ProductID FROM Products GO
Diapositiva 53
38
Los operandos para los operadores bit a bit pueden ser de cualquiera de los tipos de
datos de las categoras entero o cadena binaria (excepto el tipo de datos image), con la
excepcin de que ambos operandos no pueden ser de cualquiera de los tipos de datos de
la categora cadena binaria. La siguiente tabla muestra los tipos de datos de operando
admitidos.
Diapositiva 54
Operadores de comparacin
Los operadores de comparacin comprueban si dos expresiones son iguales o no. Se
pueden utilizar en todas las expresiones excepto en las de los tipos de datos text, ntext o
image.
= (igual a)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan
expresiones no nulas, el resultado es TRUE (verdadero) si ambos operandos son
iguales; en otro caso, el resultado es FALSE (falso). Si alguno o ambos operandos es
NULL y SET ANSI_NULLS est establecido en ON (activado), el resultado es NULL.
Si SET ANSI_NULLS est establecido en OFF (desactivado), el resultado es FALSE si
uno de los operandos es NULL y TRUE si los dos operandos son NULL.
> (Mayor que)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan
expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda
tiene un valor mayor que el de la derecha; en otro caso, el resultado es FALSE (falso).
Si alguno o ambos operandos es NULL y SET ANSI_NULLS est establecido en ON
(activado), el resultado es NULL. Si SET ANSI_NULLS est establecido en OFF
(desactivado), el resultado es FALSE si uno de los operandos es NULL y TRUE si los
dos operandos son NULL.
< (Menor que)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan
expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda
39
tiene un valor menor que el de la derecha; de otra forma, el resultado es FALSE (falso).
Si alguno o ambos operandos es NULL y SET ANSI_NULLS est establecido en ON
(activado), el resultado es NULL. Si SET ANSI_NULLS est establecido en OFF
(desactivado), el resultado es FALSE si uno de los operandos es NULL y TRUE si los
dos operandos son NULL.
>= (mayor que o igual a)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan
expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda
tiene un valor mayor que o igual al del operando de la derecha; de otra forma, el
resultado es FALSE (falso). Si alguno o ambos operandos es NULL y SET
ANSI_NULLS est establecido en ON (activado), el resultado es NULL. Si SET
ANSI_NULLS est establecido en OFF (desactivado), el resultado es FALSE si uno de
los operandos es NULL y TRUE si los dos operandos son NULL.
<= (menor que o igual a)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan dos
expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda
tiene un valor menor que o igual al operando de la derecha; de otra forma, el resultado
es FALSE (falso). Si alguno o ambos operandos es NULL y SET ANSI_NULLS est
establecido en ON (activado), el resultado es NULL. Si SET ANSI_NULLS est
establecido en OFF (desactivado), el resultado es FALSE si uno de los operandos es
NULL y TRUE si los dos operandos son NULL.
<> (distinto de)
Compara dos expresiones (es un operador de comparacin). Cuando se comparan
expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda es
distinto del operando de la derecha; de otra forma, el resultado es FALSE (falso). Si
alguno o ambos operandos es NULL y SET ANSI_NULLS est establecido en ON
(activado), el resultado es NULL. Si SET ANSI_NULLS est establecido en OFF
(desactivado), el resultado es FALSE si uno de los operandos es NULL y TRUE si los
dos operandos son NULL.
!= (distinto de)
Prueba si una expresin es distinta de otra expresin (es un operador de comparacin).
Funciona de la misma forma que el operador de comparacin <> (distinto de).
!< (no menor que)
40
El resultado del operador de comparacin es de tipo de datos Boolean, que tiene tres
valores: TRUE, FALSE y UNKNOWN. Las expresiones que devuelven tipos de datos
Boolean se conocen como expresiones booleanas.
A diferencia de los otros tipos de datos de SQL Server, el tipo de datos Boolean no se
puede especificar como tipo de datos de la variable o columna de una tabla, y no se
puede devolver en un conjunto de resultados.
Cuando SET ANSI_NULLS es ON, un operador con una o dos expresiones NULL
devuelve UNKNOWN. Cuando SET ANSI_NULLS es OFF, se cumple la misma regla,
excepto que el operador de igualdad devuelve TRUE si ambas expresiones son NULL.
Por ejemplo, NULL = NULL devuelve TRUE si SET ANSI_NULLS es OFF.
Las expresiones con tipos de datos Boolean se utilizan en la clusula WHERE para
filtrar las filas que cumplen las condiciones de bsqueda y en las instrucciones de
lenguajes de control de flujo tales como IF y WHILE, por ejemplo:
USE Northwind GO DECLARE @MyProduct int SET @MyProduct = 10 IF
(@MyProduct <> 0) SELECT * FROM Products WHERE ProductID = @MyProduct
GO
Diapositiva 55
41
ALL
Compara un valor escalar con un conjunto de valores de una sola columna.
AND
Combina dos expresiones booleanas y devuelve TRUE cuando ambas expresiones son
TRUE (verdaderas). Cuando en una instruccin se utiliza ms de un operador lgico,
primero se evalan los operadores AND. Puede cambiar el orden de la evaluacin si
utiliza parntesis.
ANY
Compara un valor escalar con un conjunto de valores de una sola columna. Para obtener
ms informacin, consulte SOME | ANY.
BETWEEN
Especifica el intervalo que se va a probar.
EXISTS
Especifica una subconsulta para probar la existencia de filas.
IN
Determina si un valor dado coincide con algn valor de una subconsulta o lista.
LIKE
Determina si una cadena de caracteres dada coincide o no con un determinado modelo.
Un modelo puede incluir caracteres normales y caracteres comodn. Durante la
coincidencia de patrones, los caracteres regulares deben coincidir exactamente con los
caracteres especificados en la cadena de caracteres. Sin embargo, los caracteres
comodn pueden coincidir con fragmentos arbitrarios de la cadena de caracteres. Con
los caracteres comodn el operador LIKE es ms flexible que los operadores de
comparacin de cadenas = y !=. Si alguno de los argumentos no es del tipo de datos de
cadena de caracteres, Microsoft SQL Server lo convierte al tipo de datos de cadena
de caracteres, si es posible.
NOT
Niega una entrada booleana.
OR
Combina dos condiciones. Cuando en una instruccin se utiliza ms de un operador
lgico, los operadores OR se evalan despus de los operadores AND. Sin embargo, se
puede cambiar el orden de evaluacin utilizando parntesis.
SOME | ANY
Compara un valor escalar con un conjunto de valores de una sola columna.
42
Diapositiva 56
Diapositiva 57
Diapositiva 58
Observaciones
SQL Server puede tener hasta dos mil millones de tablas por cada base de datos y 1.024
columnas por tabla. El nmero de filas y el tamao total de la tabla est limitado
solamente por el espacio de almacenamiento disponible. El nmero mximo de bytes
por fila es de 8.060. Si se crean tablas con columnas varchar, nvarchar o varbinary
en las que el ancho total definido excede de 8.060 bytes, se crea la tabla, pero aparece
43
Diapositiva 59
INSERT
Agrega una nueva fila a una tabla o vista.
Observaciones
INSERT anexa nuevas filas a una tabla. Para reemplazar datos en una tabla, se debe
utilizar las instrucciones DELETE o TRUNCATE TABLE para borrar los datos
existentes antes de cargar nuevos datos con INSERT. Para modificar los valores de
columnas en las filas existentes, utilice UPDATE. Para crear una nueva tabla y cargarla
de datos en un paso, utilice la opcin INTO de la instruccin SELECT.
Es posible tener acceso a una variable table, en su mbito, como si fuera una tabla
normal. Por tanto, se puede utilizar una variable table como la tabla a la que se van a
agregar filas en una instruccin INSERT. Para obtener ms informacin, consulte table.
Un nombre de cuatro partes generado con la funcin OPENDATASOURCE como la
parte de nombre de servidor, tambin se puede utilizar como una tabla de origen en
todos los lugares donde pueda aparecer un nombre de tabla en instrucciones INSERT.
44
Las columnas creadas con el tipo de datos uniqueidentifier almacenan valores binarios
de 16 bytes con formato especial. A diferencia de lo que sucede con las columnas de
identidad, SQL Server no genera automticamente valores de columnas con el tipo de
datos uniqueidentifier. Durante una operacin de insercin, se puede utilizar variables
con un tipo de datos uniqueidentifier y constantes de cadena con la forma xxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los guiones, donde x es un
dgito hexadecimal, en el intervalo 0-9, o a-f) para columnas uniqueidentifier. Por
ejemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF es un valor vlido para una
variable o columna uniqueidentifier. Utilice la funcin NEWID() para obtener un
identificador exclusivo global (GUID).
Diapositiva 60
INSERT
Agrega una nueva fila a una tabla o vista.
Observaciones
INSERT anexa nuevas filas a una tabla. Para reemplazar datos en una tabla, se debe
utilizar las instrucciones DELETE o TRUNCATE TABLE para borrar los datos
existentes antes de cargar nuevos datos con INSERT. Para modificar los valores de
columnas en las filas existentes, utilice UPDATE. Para crear una nueva tabla y cargarla
de datos en un paso, utilice la opcin INTO de la instruccin SELECT.
Es posible tener acceso a una variable table, en su mbito, como si fuera una tabla
normal. Por tanto, se puede utilizar una variable table como la tabla a la que se van a
agregar filas en una instruccin INSERT. Para obtener ms informacin, consulte table.
Un nombre de cuatro partes generado con la funcin OPENDATASOURCE como la
parte de nombre de servidor, tambin se puede utilizar como una tabla de origen en
todos los lugares donde pueda aparecer un nombre de tabla en instrucciones INSERT.
Las columnas creadas con el tipo de datos uniqueidentifier almacenan valores binarios
de 16 bytes con formato especial. A diferencia de lo que sucede con las columnas de
identidad, SQL Server no genera automticamente valores de columnas con el tipo de
datos uniqueidentifier. Durante una operacin de insercin, se puede utilizar variables
con un tipo de datos uniqueidentifier y constantes de cadena con la forma xxxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los guiones, donde x es un
45
Diapositiva 61
SELECT
Obtiene filas de la base de datos y permite realizar la seleccin de una o varias filas o
columnas de una o varias tablas. La sintaxis completa de la instruccin SELECT es
compleja, aunque las clusulas principales se pueden resumir del modo siguiente:
SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
Diapositiva 62
Clusula INTO
Crea una nueva tabla e inserta en ella las filas resultantes de la consulta.
El usuario que ejecuta una instruccin SELECT con la clusula INTO debe tener
permiso CREATE TABLE en la base de datos de destino. No se puede utilizar
SELECT...INTO con la clusula COMPUTE. Para obtener ms informacin, consulte
Transacciones y Transacciones explcitas.
Puede utilizar SELECT INTO para crear una definicin de tabla idntica (con diferente
nombre de tabla) sin datos mediante la definicin de una condicin FALSE en la
clusula WHERE.
Diapositiva 63
46
Devuelve la suma de todos los valores o de slo los valores DISTINCT en la expresin
especificada. SUM slo puede utilizarse con columnas numricas. Los valores nulos se
pasan por alto.
Diapositiva 64
Clusula WHERE
Especifica una condicin de bsqueda para restringir las filas que se van a devolver.
Sintaxis
[ WHERE < search_condition > | < old_outer_join > ]
< old_outer_join > ::=
column_name { * = | = * } column_name
Argumentos
<search_condition>
Limita las filas devueltas en el conjunto de resultados mediante el uso de predicados.
No hay lmite en el nmero de predicados que se pueden incluir en una condicin de
bsqueda. Para obtener ms informacin acerca de las condiciones de bsqueda y los
predicados, consulte Condicin de bsqueda.
< old_outer_join >
Especifica una combinacin externa con la sintaxis antigua especfica del producto y la
clusula WHERE. Se utiliza el operador *= para especificar una combinacin externa
izquierda y el operador =* para especificar una combinacin externa derecha.
Este ejemplo especifica una combinacin externa izquierda en que las filas de Tab1 que
no cumplen la condicin especificada se incluyen en el conjunto de resultados:
SELECT Tab1.name, Tab2.id FROM Tab1, Tab2 WHERE Tab1.id *=Tab2.id
Diapositiva 65
Clusula WHERE
Especifica una condicin de bsqueda para restringir las filas que se van a devolver.
Sintaxis
[ WHERE < search_condition > | < old_outer_join > ]
< old_outer_join > ::=
column_name { * = | = * } column_name
47
Argumentos
<search_condition>
Limita las filas devueltas en el conjunto de resultados mediante el uso de predicados.
No hay lmite en el nmero de predicados que se pueden incluir en una condicin de
bsqueda. Para obtener ms informacin acerca de las condiciones de bsqueda y los
predicados, consulte Condicin de bsqueda.
< old_outer_join >
Especifica una combinacin externa con la sintaxis antigua especfica del producto y la
clusula WHERE. Se utiliza el operador *= para especificar una combinacin externa
izquierda y el operador =* para especificar una combinacin externa derecha.
Este ejemplo especifica una combinacin externa izquierda en que las filas de Tab1 que
no cumplen la condicin especificada se incluyen en el conjunto de resultados:
SELECT Tab1.name, Tab2.id FROM Tab1, Tab2 WHERE Tab1.id *=Tab2.id
Diapositiva 66
LIKE
Determina si una cadena de caracteres dada coincide o no con un determinado modelo.
Un modelo puede incluir caracteres normales y caracteres comodn. Durante la
coincidencia de patrones, los caracteres regulares deben coincidir exactamente con los
caracteres especificados en la cadena de caracteres. Sin embargo, los caracteres
comodn pueden coincidir con fragmentos arbitrarios de la cadena de caracteres. Con
los caracteres comodn el operador LIKE es ms flexible que los operadores de
comparacin de cadenas = y !=. Si alguno de los argumentos no es del tipo de datos de
cadena de caracteres, Microsoft SQL Server lo convierte al tipo de datos de cadena
de caracteres, si es posible.
Diapositiva 67
Funciones de agregado
Las funciones de agregado realizan un clculo sobre un conjunto de valores y devuelven
un solo valor. Con la excepcin de COUNT, las funciones de agregado omiten los
valores NULL. Las funciones de agregado se suelen utilizar con la clusula GROUP
BY de la instruccin SELECT.
48
Todas las funciones de agregado son deterministas; devuelven siempre el mismo valor
cada vez que se les llama con un conjunto determinado de valores de entrada. Para
obtener ms informacin acerca del determinismo de funciones, consulte Funciones
deterministas y no deterministas.
Las funciones de agregado slo se aceptan como expresiones en:
La lista de seleccin de una instruccin SELECT (en una subconsulta o en la consulta
externa).
Clusulas HAVING.
AVG
Devuelve la media de los valores de un grupo. Los valores nulos se pasan por alto
COUNT
Devuelve el nmero de elementos de un grupo.
MIN
Devuelve el valor mnimo de la expresin.
MAX
Devuelve el valor mximo de la expresin.
SUM
Devuelve la suma de todos los valores o de slo los valores DISTINCT en la expresin
especificada. SUM slo puede utilizarse con columnas numricas. Los valores nulos se
pasan por alto.
STDEV
Devuelve la desviacin tpica estadstica de todos los valores de la expresin
especificada.
Diapositiva 68
Diapositiva 69
49
Funciones matemticas
Estas funciones escalares realizan un clculo, normalmente basado en valores de entrada
proporcionados como argumentos, y devuelven un valor numrico.
ABSDEGREESRANDACOSEXPROUNDASINFLOORSIGNATANLOGSINATN2L
OG10SQUARECEILINGPISQRTCOSPOWERTANCOTRADIANS
Nota Las funciones aritmticas, como ABS, CEILING, DEGREES, FLOOR, POWER,
RADIANS y SIGN, devuelven un valor del mismo tipo de datos que el valor de entrada.
Las funciones trigonomtricas y otras funciones, incluyendo EXP, LOG, LOG10,
SQUARE y SQRT, pasan los valores de entrada a float y devuelven un valor float.
Todas las funciones matemticas, excepto RAND, son funciones deterministas;
devuelven siempre el mismo resultado cada vez que se les llama con un conjunto
especfico de valores de entrada. RAND es determinista slo cuando se especifica un
parmetro de inicializacin. Para obtener ms informacin acerca del determinismo de
funciones, consulte Funciones deterministas y no deterministas.
ABS
Devuelve el valor absoluto, positivo de la expresin numrica dada.
RAND
Devuelve un valor float aleatorio de 0 a 1.
SIN
Devuelve el seno trigonomtrico del ngulo especificado (en radianes) en una expresin
numrica aproximada (float).
COS
Funcin matemtica que devuelve el coseno trigonomtrico del ngulo dado (en
radianes) en la expresin de entrada.
TAN
Devuelve la tangente de la expresin de entrada.
COT
Funcin matemtica que devuelve la cotangente trigonomtrica del ngulo especificado
(en radianes) en la expresin float.
SQRT
Devuelve la raz cuadrada de la expresin especificada.
50
POWER
Devuelve el valor de la expresin indicada elevada a la potencia especificada.
CEILING
Devuelve el entero ms pequeo mayor o igual que la expresin numrica dada.
FLOOR
Devuelve el entero ms grande menor o igual que la expresin numrica dada.
EXP
Devuelve el valor exponencial de la expresin float dada.
Diapositiva 70
Funciones de cadena
Estas funciones escalares realizan una operacin sobre una cadena de entrada y
devuelven un valor de cadena o un valor numrico.
Todas las funciones de cadena integradas, excepto CHARINDEX y PATINDEX, son
deterministas. Devuelven el mismo valor siempre que se llamen con un conjunto
determinado de valores de entrada. Para obtener ms informacin acerca del
determinismo de funciones, consulte Funciones deterministas y no deterministas.
LEFT
Devuelve la parte de una cadena de caracteres que comienza en un nmero de caracteres
especificado a partir de la izquierda.
RIGHT
Devuelve la parte de una cadena de caracteres que comienza en el nmero de caracteres
especificado en integer_expression a partir de la derecha.
LTRIM
Devuelve una expresin de caracteres despus de quitar los espacios en blanco a la
izquierda.
RTRIM
Devuelve una cadena de caracteres despus de truncar todos los espacios en blanco a la
derecha.
REPLACE
Reemplaza por una tercera expresin todas las apariciones de la segunda expresin de
cadena proporcionada en la primera expresin de cadena.
51
SUBSTRING
Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen. Para
obtener ms informacin acerca de los tipos de datos vlidos de Microsoft SQL
Server que pueden utilizarse con esta funcin, consulte Tipos de datos.
STUFF
Elimina el nmero de caracteres especificado e inserta otro conjunto de caracteres en un
punto de inicio indicado.
UPPER
Devuelve una expresin de tipo carcter con datos de carcter en minscula convertidos
a mayscula.
LOWER
Devuelve una expresin de caracteres despus de convertir a minsculas los datos de
caracteres que estn en maysculas.
LEN
Devuelve el nmero de caracteres, en lugar del nmero de bytes, de la expresin de
cadena dada, excluidos los espacios finales en blanco.
CHAR
Una funcin de cadena que convierte un cdigo ASCII int en un carcter.
REVERSE
Devuelve invertida una expresin de carcter.
Diapositiva 71
DATEADD
Devuelve un valor datetime nuevo que se basa en la suma de un intervalo a la fecha
especificada.
DATEDIFF
52
Devuelve el nmero de lmites de fecha y hora que hay entre dos fechas especificadas.
GETDATE
Devuelve la fecha y hora actuales del sistema en el formato interno estndar de
Microsoft SQL Server para los valores
DAY
Devuelve un entero que representa la parte del da de la fecha especificada.
MONTH
Devuelve un entero que representa el mes de una fecha especificada.
YEAR
Devuelve un entero que representa la parte de ao de la fecha especificada.
Diapositiva 72
Clusula ORDER BY
Especifica el orden del conjunto de resultados. La clusula ORDER BY no es vlida en
vistas, funciones en lnea, tablas derivadas ni subconsultas, salvo que se especifique
tambin TOP.
Sintaxis
[ ORDER BY { order_by_expression [ ASC | DESC ] }
[ ,...n] ]
Argumentos
order_by_expression
Especifica la columna segn la que se ordenar. Se puede especificar una columna de
orden como un nombre o alias de columna (que puede estar calificado con el nombre de
una tabla o vista), una expresin o un entero no negativo que representa la posicin del
nombre, alias o expresin en la lista de seleccin.
Se puede especificar varias columnas de orden. La secuencia de columnas de orden en
la clusula ORDER BY define la estructura del conjunto ordenado de resultados.
La clusula ORDER BY puede incluir elementos que no aparecen en la lista de
seleccin. Sin embargo, si se especifica SELECT DISTINCT, o si la instruccin
SELECT contiene un operador UNION, las columnas ordenadas deben aparecer en la
lista de seleccin.
Adems, cuando la instruccin SELECT contiene un operador UNION, los nombres o
los alias de las columnas deben ser los especificados en la primera lista de seleccin.
53
Nota Las columnas de tipo ntext, text o image no se pueden utilizar en una clusula
ORDER BY.
ASC
Indica que los valores de la columna especificada se deben ordenar de manera
ascendente, desde el valor ms bajo al ms alto.
DESC
Indica que los valores de la columna especificada se deben ordenar de manera
descendente, desde el valor ms alto al valor ms bajo.
Los valores NULL se tratan como los valores ms bajos posibles.
No hay lmite para el nmero de elementos en una clusula ORDER BY. Sin embargo,
existe un lmite de 8060 bytes en el tamao de fila de las tablas de trabajo intermedias,
necesarias para las operaciones de ordenacin. Este nmero limita el tamao total de las
columnas especificadas en una clusula ORDER BY.
Diapositiva 73
UPDATE
Cambia datos de una tabla.
Observaciones
Solamente se permiten las instrucciones UPDATE en el cuerpo de funciones definidas
por el usuario si la tabla a modificar es una variable table.
Es posible tener acceso a una variable table, en su mbito, como si fuera una tabla
normal. Por tanto, se puede utilizar una variable table como la tabla en la que se
actualizan los datos en una instruccin UPDATE.
Un nombre con cuatro partes, construido con la funcin OPENDATASOURCE como la
parte del nombre del servidor, puede utilizarse como origen de tabla en todas las
ocasiones en que puede aparecer un nombre de tabla en las instrucciones UPDATE.
Si la actualizacin de una fila infringe una restriccin o una regla, si infringe la
configuracin de valores NULL para la columna o si el nuevo valor es de un tipo de
datos incompatible, se cancela la instruccin, se devuelve un error y no se actualiza
ningn registro.
Cuando una instruccin UPDATE encuentra un error aritmtico (desbordamiento,
divisin por cero o un error de dominio) durante la evaluacin de la expresin, la
54
Diapositiva 74
DELETE
Es posible utilizar DELETE en el cuerpo de una funcin definida por el usuario si el
objeto que se va a modificar es una variable table.
Un nombre de tabla de cuatro partes (o un nombre de vistra) que utiliza la funcin
OPENDATASOURCE como el nombre de servidor, tambin se puede utilizar como un
origen de tabla en todos los lugares donde pueda aparecer un nombre de tabla.
La instruccin DELETE puede tener un error si infringe un desencadenador o intenta
quitar una fila a la que hacen referencia datos de otra tabla con una restriccin
FOREIGN KEY. Si la instruccin DELETE quita varias filas y cualquiera de las filas
eliminadas infringe un desencadenador o restriccin, se cancela la instruccin, se
devuelve un error y no se elimina ninguna fila.
Cuando se define un desencadenador INSTEAD-OF en las acciones DELETE en una
tabla o vista, se ejecuta el desencadenador en lugar de la instruccin DELETE. Las
versiones anteriores de SQL Server slo admitan desencadenadores AFTER en
DELETE y otras instrucciones de modificacin de datos.
Cuando una instruccin DELETE encuentra un error aritmtico (desbordamiento,
divisin entre cero o error de dominio) al evaluar una expresin, SQL Server trata ese
error como si SET ARITHABORT fuese ON. Se cancela el resto del proceso por lotes y
se devuelve un mensaje de error.
La configuracin de la opcin SET ROWCOUNT se ignora en las instrucciones
DELETE con tablas remotas y vistas divididas remotas y locales.
55
Si desea eliminar todas las filas de una tabla, TRUNCATE TABLE es ms rpido que
DELETE. DELETE quita fsicamente las filas de una en una y graba cada fila eliminada
en el registro de transacciones. TRUNCATE TABLE cancela la asignacin de todas las
pginas asociadas con la tabla. Por este motivo, TRUNCATE TABLE es ms rpido y
requiere menos espacio en el registro de transacciones que DELETE. TRUNCATE
TABLE es funcionalmente equivalente a DELETE sin clusula WHERE, pero no se
puede utilizar TRUNCATE TABLE con tablas a las que se hace referencia mediante
claves externas. DELETE y TRUNCATE TABLE dejan disponible el espacio ocupado
por las filas eliminadas para almacenar nuevos datos.
Diapositiva 75
Un cursor global al que se puede hacer referencia desde fuera del procedimiento
almacenado.
Los procedimientos almacenados contribuyen a conseguir una implementacin
coherente de una lgica entre las aplicaciones. Las instrucciones SQL y la lgica
56
necesarias para ejecutar una tarea de ejecucin frecuente se pueden disear, escribir y
probar de una sola vez en un procedimiento almacenado. As, las aplicaciones que
necesiten ejecutar dicha tarea slo tienen que ejecutar el procedimiento almacenado. La
escritura de la lgica comercial en un solo procedimiento almacenado tambin ofrece un
nico punto de control para asegurar la correcta ejecucin de dichas reglas comerciales.
Los procedimientos almacenados tambin pueden mejorar el rendimiento. Muchas
tareas estn implementadas como series de instrucciones SQL. La lgica condicional
aplicada a los resultados de las primeras instrucciones SQL determina las instrucciones
SQL que se ejecutan seguidamente. Si dichas instrucciones SQL y la lgica condicional
se escriben en un procedimiento almacenado, forman parte de un nico plan de
ejecucin en el servidor. No es necesario devolver los resultados al cliente para aplicar
la lgica condicional; todo el trabajo se realiza en el servidor. La instruccin IF de este
ejemplo muestra la inclusin de lgica condicional en un procedimiento para evitar el
envo de un conjunto de resultados a la aplicacin:
IF (@QuantityOrdered < (SELECT QuantityOnHand FROM Inventory WHERE PartID
= @PartOrdered) ) BEGIN -- SQL statements to update tables and process order. END
ELSE BEGIN -- SELECT statement to retrieve the IDs of alternate items -- to suggest
as replacements to the customer. END Las aplicaciones no tienen que transmitir todas
las instrucciones SQL del procedimiento: tienen que transmitir slo una instruccin
EXECUTE o CALL que contenga el nombre del procedimiento y los valores de los
parmetros.
Los procedimientos almacenados tambin aslan a los usuarios de los detalles de las
tablas de la base de datos. Si un conjunto de procedimientos almacenados admite todas
las funciones que los usuarios necesitan, los usuarios nunca tienen que tener acceso a las
tablas de forma directa; slo tienen que ejecutar los procedimientos almacenados que
implementan las funciones diarias de su trabajo.
Una ilustracin de este uso de los procedimientos almacenados es el sistema de
procedimientos almacenados que SQL Server utiliza para aislar a los usuarios de las
tablas del sistema. SQL Server incluye un conjunto de procedimientos almacenados del
sistema cuyos nombres suelen empezar por sp_. Dichos procedimientos almacenados
del sistema admiten todas las tareas administrativas requeridas para ejecutar un sistema
SQL Server. Los sistemas SQL Server se pueden administrar mediante las instrucciones
Transact-SQL destinadas a la administracin (como CREATE TABLE) o los
57
Diapositiva 76
Diapositiva 77
Diapositiva 78
58