SlideShare una empresa de Scribd logo
1 de 78
Clase VII
     •[nombre instructor]
                 •[fecha]
Agenda
   Bases de Datos Relacionales
   SQL Server 2005
       Instalación
       Computer Manager
       SQL Server Management Studio
       Object Explorer
       Project Management
       Query Editor
       Assisted Editors
       SQLiMail
   Sentencias Transact-SQL
Agenda
   Bases de Datos Relacionales
   SQL Server 2005
       Instalación
       Computer Manager
       SQL Server Management Studio
       Object Explorer
       Project Management
       Query Editor
       Assisted Editors
       SQLiMail
   Sentencias Transact-SQL
Base de Datos Relacionales
                                 Se organizan por Tablas
                                     Contiene Filas y Columnas
                                     Una columna representa un “campo” en la tabla
                                 Los valores de una columna tienen un “tipo de dato”
                                  definido
                                 Las tablas pueden contener Claves Primarias
Bases de Datos Relacionales




                                  (Primary Key) y/o Claves Foraneas
                                 Utilizando Claves entre tablas obtenemos una
                                  integridad referencial entre ellas
                                 Utilización de Indices mejora el rendimiento en la
                                  búsqueda



                                                                             Ejemplo a continuación…
Bases de Datos Relacionales
                              Base de Datos Relacionales
Base de Datos Relacionales
                                 Tipos de Relaciones
                                     Uno a uno
                                     Uno a varios
                                     Varios a varios
                                 Integridad Referencial
                                     Es un sistema de reglas
Bases de Datos Relacionales




                                     Mantiene la consistencia de los datos entre tablas
                                      relacionadas
                                     Actualizar y/o eliminar registros en cascada
                                 Indices
                                     Estructura de datos que permite recuperar filas rápidamente
                                     Proporciona ordenación
                                     Se define sobre una columna o varias o conjunto de
                                      columnas
Agenda
   Bases de Datos Relacionales
   SQL Server 2005
       Instalación
       Computer Manager
       SQL Server Management Studio
       Object Explorer
       Project Management
       Query Editor
       Assisted Editors
       SQLiMail
   Sentencias Transact-SQL
SQLServer 2005
                 Instalación
                    Fácil de usar: Instalación basada en Windows Installer

                    Inspector de configuración del sistema para verificar la
                     máquina destino

                    Utilidades Command-line
                     para ejecución desatendida
                     e instalación remota

                    Permite instalar o
                     desinstalar componentes
                     SQL Server 2005 desde
SQLServer 2005




                     Add/Remove.

                    Logging de error mejorado y
                     reporte de fallas
SQLServer 2005
                 Computer Manager
                  Computer Manager combina la funcionalidad de las siguientes
                   herramientas SQL Server en la versión anterior:
                      Server Network Utility
                      Client Network Utility
                      Server Manager
                  Los siguientes servicios son administrados por el “Computer Manager” :
                      SQL Server
                      SQL Server Agent
                      SQL Server Analysis Services
                      Report Server
                       Microsoft Search
SQLServer 2005




                   

                      Distributed Transaction Coordinator (DTC)
                      Full Text Search
                  El computer manager usa el WMI para cambiar los seteos del server y es
                   parte del Microsoft Management Console (MMC)
SQLServer 2005
                 Computer Manager
SQLServer 2005
SQLServer 2005
                 SQL Server Management Studio
                  Provee un entorno centralizado integrado para la
                   gestión de múltiples servers, tareas y servicios
                  Las características incluyen:
                      Explorador de Objetos
                      Editores Asistidos
                      Ventana de resumen
                      Extensiones para Editor de Consultas de SQLCMD
                      Explorador de Templates
SQLServer 2005




                      Manejo de errores mejorado
                      Administración de Proyectos
                      Dialog Boxes no modales
                      Scripting y Schedulling mejorado
SQLServer 2005
                 SQL Server Management Studio
SQLServer 2005
SQLServer 2005
                 Object Explorer (Explorador de Objetos)
                  Muestra los componentes SQL en una jerarquía de árbol grafica
                  Permite al usuario expandir múltiples nodos del árbol
                   simultáneamente.
                  Permite al
                   usuario filtrar un
                   nodo basado en
                   uno o múltiples
                   criterios de filtro.
                  Provee una
                   interface de
                   usuario amigable
SQLServer 2005




                   para la
                   administración
SQLServer 2005
                 Project Management
                 (Administrador de Proyectos)
                  Las funcionalidades disponibles para administrar un proyecto
                   son:
                      Organiza scripts relacionados dentro de un único proyecto
                      Mantiene el control de versiones sobre scripts (Si VSS esta
                       disponible)
                      Conexión almacenada y opciones resultantes con cada script
SQLServer 2005
SQLServer 2005
                 Query Editor (Editor de consultas)
                  Permite la ejecución de scripts T-SQL y sentencias contra SQL Server y SQL
                   Server Mobile Edition,
                  Permite ejecución de expresiones:
                      multidimensionales (MDX)
                      data mining (DMX)
                      XMLA
                  Escritura de scripts en
                   modo desconectado
                  Ayuda dinámica
                  Display mejorado para
                   resultados XML.
                      Resultados en forma
SQLServer 2005




                       XML cuando usa la
                       columna XML
                      Funciones XML para
                       Transact-SQL
                  Legibilidad mejorada
                   por el uso de color-
                   coding
SQLServer 2005
                 Assisted Editors & Templates
                 (Editores Asistidos)
                  Editores asistidos para creación de objetos SQL Server con
                   propiedades de texto como stored procedures, triggers y
                   funciones
                  Ejemplo de cómo acceder a Editores asistidos:
                      Abrir SQL Server Management Studio
                      Explorar Object Browser. Seleccionar SQL Instance → Databases→
                       <database> →Programmability→ Stored Procedures
                      Click derecho sobre Stored Procedures → New Stored Procedure
                      Esto abrirá el editor asistido con información de cabecera para crear
SQLServer 2005




                       el stored procedure
SQLServer 2005
                 Assisted Editors & Templates
SQLServer 2005
SQLServer 2005
                 SQLiMail
                  Usa SMTP para enviar mail. No necesita Outlook o MAPI
                   extendida
                  Corre out-of-process desde SQL Server para confiabilidad
                  Provee background y entrega asíncrona para escalabilidad
                  Failover múltiple de cuentas SMTP y perfiles permitidos
                  Cluster y compatibilidad con 64-bit
                  Servicio esta off por default
                  Fuerza la seguridad para perfiles de usuario
SQLServer 2005




                  El tamaño y tipo de adjuntos pueden ser configurados
                  Logs activity para SQL Server y monitores de rendimiento
SQLServer 2005
                 SQL-CLR
                    Beneficios del CLR
                    Beneficios para la Programación
                    Assemblies
                    La Nueva Arquitectura de
                     SQL Server 2005
                    Confiabilidad
                    Seguridad
                    Configuración del CLR en SQL Server 2005
                    Creación y distribución
                     Functions
SQLServer 2005




                 
                    Tipos de datos definidos por el usuario
                    Triggers
                    Performance Tuning
SQLServer 2005
                 Beneficios del CLR
                  Modelo de programación mejorado
                  User Defined Types y Aggregates
                  Seguridad mejorada
                  Compatibilidad Cross-Language
                  Performance y Escalabilidad
SQLServer 2005
SQLServer 2005
                 Beneficios para la Programación
                  Modelo de programación mejorado
                  Soporte en Visual Studio 2005
                  Fácil construcción y distribución de soluciones utilizando el
                   entorno de Visual Studio
                  Mejor debugging
SQLServer 2005
SQLServer 2005
                 Assemblies
                  Assemblies archivos ejecutables que actúan como punto de
                   entrada para una aplicación
                  Contienen el código que el CLR ejecuta
                  Estos no son creados si no poseen un manifest asociado
                   (información de la metadata)
                  Contienen toda la información requerida acerca de tipos y
                   recursos que la aplicación necesita para ejecutarse
                  Dependencia entre assemblies
SQLServer 2005
SQLServer 2005
                 La Nueva Arquitectura de SQL Server 2005
                  La Hosting layer provee coordinación para:
                      Carga de los Assembly
                      Manejo de Memoria                    SQL Engine
                      Modelo de Seguridad
                      Confiabilidad
                      Threads & Fibers
                      Deteccion de Deadlock                CLR
                      Contexto de Ejecución
                                                            Hosting
                                                             Layer
                  SQL OS
SQLServer 2005




                      Manejador de Conexiones                  SQL OS
                      Manejo de Memoria
                      Manejo de Thread                         Windows
                      Servicios de Sincronización
SQLServer 2005
                 Confiabilidad
                  AppDomain

                      AppDomain, el dominio de la aplicación, es un dominio aislado para
                       la ejecución.

                      Todos los assemblies de un usuario en particular residen en un
                       AppDomain

                      Assemblies de un usuario no pueden ser referenciados por ningun
                       otro usuario
SQLServer 2005




                      AppDomain aísla completamente todos los recursos que el
                       código .NET desde los recursos de SQL Server
SQLServer 2005
                 Seguridad
                  La seguridad en el CLR es definida por Code Access Security
                   (CAS)

                  En CAS, los permisos son seteados en tres niveles:

                      Políticas de Maquina: Son las políticas para todo el código
                       manejado por la maquina que ejecuta el SQL Server

                      Políticas de Usuario: Son las políticas para el código manejado que
                       sea hosteado por un proceso. En SQL Server, esta política es
                       especifica para la cuenta de Windows que levanta los servicios para
SQLServer 2005




                       SQL Server

                      Políticas de Host : Son las políticas seteadas por el Host del CLR,
                       concretamente para el código manejado ejecutándose en ese
                       servidor
SQLServer 2005
                 Configuración del CLR en SQL Server 2005
                  La configuración del CLR se encuentra en las opciones de
                   advanced server configuration
                  Para deshabilitar la ejecución del CLR :

                     sp_configure ‘show_advanced_options’, 1
                     GO
                     RECONFIGURE
                     GO
                     sp_configure ‘clr enabled’, 0
                     GO
SQLServer 2005




                     RECONFIGURE
                     GO
SQLServer 2005
                 Creación y distribución

                                                 Build
                                                                   Assembly


                        .NET database objects                   SQL Data Definition:
                        written in C#,VB.NET….                         create assembly
                                                                …     create function
                                                                …       create
                                                            d   procedure …      create
                                                         Loa
                                                                trigger …       create
                                                                type …
SQLServer 2005




                                          SQL SERVER
SQLServer 2005
                 Manejando Assemblies
                  Cargar un Assembly
                      Para cargar una dll llamada ‘sqlclr.dll’ en un assembly con permisos
                       ‘SAFE’ :

                       CREATE ASSEMBLY SQLCLR
                       FROM ‘C: YukonAppssqlclr.dll’
                       With PERMISSION_SET = SAFE
SQLServer 2005
SQLServer 2005
                 Meta Data de los Assemblies




                                                     Assembly
                                            Create
                   Detalles del Assembly:       Codigo fuente:           Referencias:
                      Sys.assemblies          Sys.assembly_files   Sys.assembly_references
SQLServer 2005




                             Otra informacion en la metadata
                                  •SYS.OBJECTS
                                  •SYS.ASSEMBLY_MODULES
                                  •SYS.ASSEMBLY_TYPES
SQLServer 2005
                 Creando Stored Procedures CLR
                   CREATE ASSEMBLY Module15_assembly
                   FROM ‘MachineNameModule15binDebugModule15_library.dll’
                   GO
                   CREATE PROCEDURE NewProc
                   @name varchar(255)
                   AS
                   EXTERNAL NAME
                   Module15_assembly.Class1.getSSNbasedOnName
SQLServer 2005
SQLServer 2005
                 Functions
                  Tipos:
                      Scalar
                      Table Valued


                  Ejemplo de creacion de una UDF

                   CREATE ASSEMBLY ValidateString
                   FROM 'MachineNameModule15binDebugvalidateString.dll';
                   GO
SQLServer 2005




                   CREATE FUNCTION ValidateAreaCode ()
                   RETURNS int
                   AS EXTERNAL NAME
                   ValidateString.StringcheckClass.validateString;
                   GO
SQLServer 2005
                 Tipos de datos definidos por el usuario
                  Para extender los tipos de datos escalares
                  Soporte a indexado, queries distribuidos, integridad referencial,
                   replicación y operaciones bcp sobre columnas definidas por
                   UDTs
                  Para distribuir un UDT, se deben seguir los siguientes pasos en
                   este orden:
                      Definir el UDT como una clase de lenguaje .NET
                      Distribuir el assembly que referencie el objeto CLR creado
                      Crear el tipo que referencie al assembly registrado
                       CREATE ASSEMBLY GISmeasures
                       FROM 'MachineNameModule15binDebugGIS.dll' ;
SQLServer 2005




                       GO
                       CREATE TYPE area
                       EXTERNAL NAME GISmeasures.GISclass.latitudeLongitude ;
                       GO
SQLServer 2005
                 Triggers
                  Standard: Fuerzan reglas de negocios e integridad referencial de
                   datos
                      Insert, Delete, Update
                  DDL Triggers: Permiten al usuario prevenir cambios al schema
                   de la base de datos o disparar algun otro cambio en el schema
                   changes en respuesta a alguna otra modificacion de la base de
                   datos
                  Create, Alter, Drop
SQLServer 2005
SQLServer 2005
                 Performance - CLR Vs T-SQL
                  Performance
                      Puede reemplazar cursores T-SQL del lado del servidor
                      Grandes mejoras en la performance
                      Para llevar adelante grandes accesos a datos o implementar un
                       spool de datos en estadios intermedios


                  Nota: Si no se usan las UDAgg, se debe considerar la escritura
                   de stored procedures usando código manejado para un mejor
                   aprovechamiento en la performance sobre T-SQL
SQLServer 2005
SQLServer 2005
                 Performance Tuning
                  Utilizar la herramienta Profiler para monitorear los planes de
                   ejecución y el funcionamiento de SQL con los objetos .NET
                  Observar los siguientes contadores
                      Contadores de SQL Server
                      Contadores de .NET CLR
                  Relacionar los contadores de performance con los datos del
                   profiler
SQLServer 2005
Agenda
   Bases de Datos Relacionales
   SQL Server 2005
       Instalación
       Computer Manager
       SQL Server Management Studio
       Object Explorer
       Project Management
       Query Editor
       Assisted Editors
       SQLiMail
   Sentencias Transact-SQL
Sentencias Transact-SQL

                  El Lenguaje de programación Transact-SQL
                  Tipos de intrucciones de Transact-SQL
                  Elementos de sintaxis del Transact-SQL
Transact-SQL
Sentencias Transact-SQL

                  Implementa el estándar ISO de nivel básico de la
                   especificación ANSI-SQL99

                  Se pueden ejecutar desde cualquier producto que
                   cumpla los requisitos básicos

                  Incluye una funcionalidad ampliada
Transact-SQL
Sentencias Transact-SQL
               Tipos de intrucciones
                  Instrucciones del Lenguaje de definincion de datos (DDL)

                  Instrucciones del Lenguaje de Control de Datos (DCL)

                  Instrucciones del Lenguaje de tratamientos de datos (DML)
Transact-SQL
Sentencias Transact-SQL
               Tipos de intrucciones
                   Instruciones del Lenguaje de definicion de datos
                  Definen los objetos de la base de datos
                      CREATE nombreobjeto
                      ALTER nombreobjeto
                      DROP nombreobjeto

                  Deben tener los permisos adecuados
Transact-SQL
Sentencias Transact-SQL
               Tipos de intrucciones
                   Instruciones del Lenguaje de control de datos
                  Establecer o cambiar los permisos
                      GRANT
                      DENY
                      REVOKE

                  Deben tener los permisos adecuados
Transact-SQL
Sentencias Transact-SQL
               Tipos de intrucciones
                   Instrucciónes del Lenguaje de Tratamiento de datos
                    Las instrucciones DML se utilizan para cambiar datos
                     o recuperar información
                        SELECT
                        INSERT
                        UPDATE
                        DELETE

                    Deben tener los permisos adecuados
Transact-SQL
Sentencias Transact-SQL
               Elementos de la sintaxis de Transact-SQL
                   Directivas de proceso por lotes
                    GO
                        Envia lotes de instrucciones de TSQL a las herramientas y
                         utilidades
                        No se trata, realmente, de una instrucción de TSQL

                    EXEC
                        Ejecuta una funcion definida por el usuario, un
                         prodecimiento de sistema, un prodecimiento definido por el
                         usuario o un prodecimiento almacenado extendido
                        Controla la ejecución de una cadena de caracteres dentro de
Transact-SQL




                         un lote de TSQL
Sentencias Transact-SQL
               Elementos de la sintaxis de Transact-SQL
                   Comentarios
                   Comentarios en línea




                   Comentarios en Bloque
Transact-SQL
Sentencias Transact-SQL
               DataTypes
                  Números Enteros
                        Bigint
                              Números enteros entre -2E63 (-9.223.372.036.845.775.808) y 2E-
                               63 (9.223.372.036.845.775.807)
                        Int
                              Números enteros entre -2E31 (-2,147,483,648 ) y 2E-
                               31(2,147,483,647 )
                        Smallint
                              Números enteros entre 2E15 (-32.768) y 2E-15 (32.767)
                        Tinyint
                              Números enteros entre 0 y 255
Transact-SQL




                  Bit
                        Bit
                              Enteros entre 0 y 1
Sentencias Transact-SQL
               DataTypes

                  Decimal y númericos
                      Decimal
                          Dátos númericos con precisión fija de -10E38 a 10E-38
                      Numeric
                          Función equivalente a decimal

                  Money & SmallMoney
                      Money
                          Valores monetarios entre -2E63 y 2E63-1 con precisión de hasta
                           10 dígitos.
                      SmallMoney
                          Valores monetarios entre -214.748,3648 y +214.748,3647
Transact-SQL
Sentencias Transact-SQL
               DataTypes

                  Números aproximádos
                      Float
                          Dátos numéricos de punto flotante entre -1.79E+308 y
                           1.79E+308
                      Real
                          Dátos numéricos de punto flotante entre -3.40E+38 y 3.40E+38


                  Datetime & Smalldatetime
                      Datetime
                          Fechas entre 1 de Enero del 1753 y 31 de diciembre de 9999 con
                           una precisión de 3 milésimas de segúndo
Transact-SQL




                      Smalldatetime
                          Fechas entre 1 de Enero de 1900 y 6 de Junio de 2079, con una
                           precisión de 1 minúto
Sentencias Transact-SQL
               DataTypes
                  Caracteres
                      Char
                          Carácter de longitud fija (no unicode) con un máximo de 8000
                           caracteres
                      Varchar
                          Caracteres de longitud variable (no unicode) con un máximo de 8000
                           caracteres
                      Text
                          Caracteres de longitud variable (no unicode) con un máximo de
                           2.147.483.647 caracteres
                      Nchar
                          Carácter de longitud fija (unicode) con un máximo de 4000 caracteres
                      Nvarchar
Transact-SQL




                          Caracteres de longitud variable (unicode) con un máximo de 8000
                           caracteres
                      Ntext
                          Caracteres de longitud variable (unicode) con un máximo de
                           1,073,741,823 caracteres
Sentencias Transact-SQL
               DataTypes

                  Binary
                      Binary
                          Datos binarios de longitud fija con un máximo de 8000 bytes
                      Varbinary
                          Datos binarios de longitud variable con un máximo de 8000
                           bytes
                      Image
                          Datos binarios de lóngitud variable con un máximo de
                           2.147.483.647 bytes
Transact-SQL
Sentencias Transact-SQL
               Operadores

                  Operadores Aritméticos
                  Operadores de Asignación
                  Operadores Bitwise
                  Operadores de Comparación
                  Operadores Lógicos
                  Operadores de Concatenación
                  Operadores Unarios
Transact-SQL
Sentencias Transact-SQL
               Operadores Aritméticos

                  Realizan operaciones matemáticas entre dos
                   expresiones
                  Operadores aritméticos
                      + (suma)
                      - (resta)
                      * (Muliplicación)
                      / (División)
                      % (Módulo) , devuelve el resto Devuelve el resto entero de
                       una división. Por ejemplo, 12 % 5 = 2 porque el resto de 12
                       dividido entre 5 es 2.
Transact-SQL
Sentencias Transact-SQL
               Operadores de Asignación

                  Operadores de Asignación
Transact-SQL
Sentencias Transact-SQL
               Operadores bit a bit

                  Operadores bit a bit
                   & (operador bit a bit AND)
                      Realiza una operación lógica AND a nivel de bit entre dos
                      valores enteros.
                   | (operador bit a bit OR)
                      Realiza una operación OR lógica a nivel de bit entre dos
                      valores enteros dados que se convirtieron a expresiones
                      binarias dentro de instrucciones de Transact-SQL.
                   ^ (operador bit a bit OR exclusivo)
                      Realiza una operación OR exclusivo a nivel de bit entre dos
                      valores enteros dados que se convierten a expresiones
Transact-SQL




                      binarias dentro de instrucciones de Transact-SQL.
Sentencias Transact-SQL
               Operadores de comparación

                  Operadores de comparación
                   = (igual al)
                   > (mayor que)
                   < (menor que)
                   >= (mayor que o igual que)
                   <= (menor que o igual que)
                   <> (no es igual a)
                   != (no es igual a)
                   !< (no es menor que)
Transact-SQL




                   !> (no es mayor que)
Sentencias Transact-SQL
               Operadores lógicos

                  Comprueban la veracidad de alguna condición
                  Operadores Lógicos
                     ALL
                     AND
                     ANY
                     BETWEEN
                     EXISTS
                     IN
                     LIKE
                     NOT
                     OR
Transact-SQL




                     SOME
Sentencias Transact-SQL
               Operadores de concatenación de cadenas

                  Permite concatenar cadenas de textos

                  Operadores de concatenación
                      Signo + (mas)
Transact-SQL
Sentencias Transact-SQL
               Operadores unarios

                  Los operadores unarios realizan una operación sobre
                   una única expresión de cualquiera de los tipos de
                   datos de la categoría del tipo de datos numérico.
                      + (positivo)
                       Es un operador unario que devuelve el valor positivo de una
                          expresión numérica (un operador unario).
                      - (negativo)
                       Es un operador unario que devuelve el valor negativo de una
                          expresión numérica (un operador unario).
                      ~ (operador bit a bit NOT)
                       Realiza una operación NOT lógica a nivel de bit en un valor entero
                          dado que se convierte a una expresión binaria dentro de
Transact-SQL




                          instrucciones de Transact-SQL.
Sentencias Transact-SQL
               Crear Tablas

                  La sintaxis para crear tablas es:
                   CREATE TABLE "table_name"
                      ("column 1" "data_type_for_column_1",
                      "column 2“ "data_type_for_column_2",... )
Transact-SQL
Sentencias Transact-SQL
               Sentencia de INSERT

                  La sintaxis para insertar registros es:
                   Insert into <tablename>
                   (<fieldname>, <fieldname>, <fieldname>)
                   Values
                   (@fieldname, @fieldname, @fieldname);
Transact-SQL
Sentencias Transact-SQL
               INSERT FROM
                  Ésta técnica es usada para copiar datos desde una tabla a la
                   tabla indicada
                  La sintaxis para insertar copiando registros de otra tabla es
                   insert new_studentdetails
                   select id_number, passwd from studentdetails
Transact-SQL
Sentencias Transact-SQL
               SELECT
                    La sentencia SELECT es usada para seleccionar registros desde
                     una tabla de la base de datos
                     SELECT <Col_1>, <Col_2>,…
                     FROM <Table_name>

               Ej:
Transact-SQL
Sentencias Transact-SQL
               SELECT INTO
                  La sentencia SELECT INTO es usado para copiar los registros
                   seleccionados de una tabla e insertarla en una tabla diferente al
                   mismo tiempo
                  La sintaxis es la siguiente:
                   SELECT Column1, Column2, Column3,
                   INTO Table2 FROM Table1

                   SELECT *
                   INTO Customers_copy FROM Customers
Transact-SQL
Sentencias Transact-SQL
               DISTINCT
                  La clausula DISTINCT es usada para devolver sólo los valores
                   en la expresión especificada
Transact-SQL
Sentencias Transact-SQL
               WHERE
                  La clausula WHERE es utilizada para seleccionar datos
                   condicionalmente en base a criterios especificados

                  SELECT * FROM Customers
                  WHERE LastName <> 'Smith‘

                  SELECT * FROM Customers
                  WHERE DOB > '1/1/1970‘

                  SELECT * FROM Customers
                  WHERE DOB >= '1/1/1970‘
Transact-SQL
Sentencias Transact-SQL
               WHERE - EJEMPLO
Transact-SQL
Sentencias Transact-SQL
               WHERE con LIKE
Transact-SQL
Sentencias Transact-SQL
               Funciones de Agregado

                  Funciones de Agregado:
                   AVG
                   COUNT
                   MIN
                   MAX
                   SUM
                   STDEV
Transact-SQL
Sentencias Transact-SQL
               Funciones de Agregado - Ejemplo
Transact-SQL
Sentencias Transact-SQL
               Funciones Matemáticas

                  Funciones Matemáticas

                   ABS          SQRT
                   RAND         SQUARE
                   SIN          POWER
                   COS          CEILING
                   TAN          FLOOR
                   COT          EXP
Transact-SQL
Sentencias Transact-SQL
               Funciones de Texto

                  Funciones de Texto

                   LEFT
                   RIGHT
                   LTRIM
                   RTRIM
                   REPLACE
                   SUBSTRING
                   STUFF
                   REVERSE
                   CHAR
Transact-SQL




                   LEN
                   LOWER
                   UPPER
Sentencias Transact-SQL
               Funciones de Fecha

                  Funciones de Fecha

                   DATEADD
                   DATEDIFF
                   GETDATE
                   DAY
                   MONTH
                   YEAR…
Transact-SQL
Sentencias Transact-SQL
               ORDER BY
                  La clausula ORDER BY es usado para ordernar los registros de
                   una sentencia SELECT previamente indicada
                  La sintaxis es la siguiente:
                   [ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n] ]
Transact-SQL
Sentencias Transact-SQL
               UPDATE
                 La sentencia UPDATE es utilizada para modificar los valores de
                  los registros especirficando algún criterio.
                 La sintaxis es la siguiente:
               UPDATE tablename SET (campo1 = valor1, campo2 = valor2,…) WHERE
               Campo4 = Criterio1
Transact-SQL
Sentencias Transact-SQL
               DELETE
                 Ésta sentencia elimina los registros que especifiquemos dentro
                  de la clausula WHERE
                 La sintaxis es la siguiente:
               DELETE FROM tablename Campo4 = Criterio1
Transact-SQL
Sentencias Transact-SQL
               STORE PROCEDURE
                  Un procedimiento almacenado es un grupo de instrucciones
                   compiladas en un único plan de ejecución

                      Parámetros de salida, que pueden devolver datos (por ejemplo, un
                       valor entero o de carácter) o una variable de cursor (los cursores
                       son conjuntos de resultados que pueden devolver filas de una en
                       una).

                      Códigos de retorno, que siempre son un valor entero.

                      Un conjunto de resultados por cada instrucción SELECT contenida
                       en el procedimiento almacenado o en cualquier otro procedimiento
                       almacenado invocado por el procedimiento almacenado original.
Transact-SQL




                      Un cursor global al que se puede hacer referencia desde fuera del
                       procedimiento almacenado.
Sentencias Transact-SQL
               STORE PROCEDURE – Crear un SP
Transact-SQL
Sentencias Transact-SQL
               STORE PROCEDURE – Consumir
Transact-SQL
Demo
•Crear un Base de Datos con tablas, campos y registros

Más contenido relacionado

La actualidad más candente (16)

Unidad 2. actividad 1
Unidad 2. actividad 1Unidad 2. actividad 1
Unidad 2. actividad 1
 
Sql server 2008. madrigal
Sql server 2008. madrigalSql server 2008. madrigal
Sql server 2008. madrigal
 
SQL SERVER
SQL SERVERSQL SERVER
SQL SERVER
 
Admnistracion de la seguridad
Admnistracion de la seguridadAdmnistracion de la seguridad
Admnistracion de la seguridad
 
Microsoft SQL
Microsoft  SQLMicrosoft  SQL
Microsoft SQL
 
Bd T1 Eq7 Caracteristicas Sql Server 2008 Todos
Bd T1 Eq7 Caracteristicas Sql Server 2008 TodosBd T1 Eq7 Caracteristicas Sql Server 2008 Todos
Bd T1 Eq7 Caracteristicas Sql Server 2008 Todos
 
Oracle enterprise manager
Oracle enterprise managerOracle enterprise manager
Oracle enterprise manager
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Componentes de sql
Componentes de sqlComponentes de sql
Componentes de sql
 
103305862 t-sql
103305862 t-sql103305862 t-sql
103305862 t-sql
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Entornos apex onpremise
Entornos apex onpremiseEntornos apex onpremise
Entornos apex onpremise
 
Tutorial Sql Server 7
Tutorial Sql Server 7Tutorial Sql Server 7
Tutorial Sql Server 7
 
MICROSOFT SQL SERVER 2012
MICROSOFT SQL SERVER 2012MICROSOFT SQL SERVER 2012
MICROSOFT SQL SERVER 2012
 
Oracle enterprise manager
Oracle enterprise managerOracle enterprise manager
Oracle enterprise manager
 
Administracion de la seguridad
Administracion de la seguridadAdministracion de la seguridad
Administracion de la seguridad
 

Similar a Clase vii

Sql server express edition 2011 - Oracle db 11 g ex
Sql server express edition 2011 - Oracle db 11 g ex Sql server express edition 2011 - Oracle db 11 g ex
Sql server express edition 2011 - Oracle db 11 g ex
Equipo 3
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
Martha
 
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos SqlHerramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Olaya Molina
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
google
 
Versiones Microsoft SQL
Versiones Microsoft SQLVersiones Microsoft SQL
Versiones Microsoft SQL
Luis Vázquez
 
Características SQL 2005 y SQL 2008
Características SQL 2005 y SQL 2008Características SQL 2005 y SQL 2008
Características SQL 2005 y SQL 2008
Luis Vázquez
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
Miguel Amgo
 

Similar a Clase vii (20)

Presentacion
PresentacionPresentacion
Presentacion
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Sql server express edition 2011 - Oracle db 11 g ex
Sql server express edition 2011 - Oracle db 11 g ex Sql server express edition 2011 - Oracle db 11 g ex
Sql server express edition 2011 - Oracle db 11 g ex
 
Cuadro Comparativo
Cuadro ComparativoCuadro Comparativo
Cuadro Comparativo
 
Comparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracleComparación entre microsoft sql server express edition 2012 y oracle
Comparación entre microsoft sql server express edition 2012 y oracle
 
Generalidades en SQL Server 2012
Generalidades en SQL Server 2012Generalidades en SQL Server 2012
Generalidades en SQL Server 2012
 
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos SqlHerramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
Herramientas Control, Monitoreo Y Estadisticas De Bases De Datos Sql
 
Presentación SQL Server 2012
Presentación SQL Server 2012Presentación SQL Server 2012
Presentación SQL Server 2012
 
Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5Introduccion A Linq 1205779028184546 5
Introduccion A Linq 1205779028184546 5
 
Tipos de base de datos
Tipos de base de datosTipos de base de datos
Tipos de base de datos
 
Comparacion entre my sql y sql server
Comparacion entre my sql y sql serverComparacion entre my sql y sql server
Comparacion entre my sql y sql server
 
Versiones Microsoft SQL
Versiones Microsoft SQLVersiones Microsoft SQL
Versiones Microsoft SQL
 
Introduccion a LINQ
Introduccion a LINQIntroduccion a LINQ
Introduccion a LINQ
 
Características SQL 2005 y SQL 2008
Características SQL 2005 y SQL 2008Características SQL 2005 y SQL 2008
Características SQL 2005 y SQL 2008
 
Curso online-programacion-sql-server-2005-lw
Curso online-programacion-sql-server-2005-lwCurso online-programacion-sql-server-2005-lw
Curso online-programacion-sql-server-2005-lw
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sqlF004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
F004 p006-gfpi guia de aprendizaje 1-fundamentosde sql
 
Sql server
Sql serverSql server
Sql server
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
Presentación: Administración y programación de bases de datos relacionales.
Presentación: Administración y programación de bases de datos relacionales.Presentación: Administración y programación de bases de datos relacionales.
Presentación: Administración y programación de bases de datos relacionales.
 

Más de Roberto Moreno Doñoro (20)

21 bibsw tablasyotros
21 bibsw tablasyotros21 bibsw tablasyotros
21 bibsw tablasyotros
 
20 curvaselipticas
20 curvaselipticas20 curvaselipticas
20 curvaselipticas
 
19 protocoloscripto
19 protocoloscripto19 protocoloscripto
19 protocoloscripto
 
18 correoseguro
18 correoseguro18 correoseguro
18 correoseguro
 
17 certdigitalespkcs
17 certdigitalespkcs17 certdigitalespkcs
17 certdigitalespkcs
 
16 autenticafirma
16 autenticafirma16 autenticafirma
16 autenticafirma
 
15 funcioneshash
15 funcioneshash15 funcioneshash
15 funcioneshash
 
14 cifraasimetrica
14 cifraasimetrica14 cifraasimetrica
14 cifraasimetrica
 
13 ciframochilas
13 ciframochilas13 ciframochilas
13 ciframochilas
 
12 cifrasimetrica
12 cifrasimetrica12 cifrasimetrica
12 cifrasimetrica
 
11 cifraflujo
11 cifraflujo11 cifraflujo
11 cifraflujo
 
10 ciframoderna
10 ciframoderna10 ciframoderna
10 ciframoderna
 
09 cifraclasica
09 cifraclasica09 cifraclasica
09 cifraclasica
 
08 compalgoritmos
08 compalgoritmos08 compalgoritmos
08 compalgoritmos
 
07 teorianumeros
07 teorianumeros07 teorianumeros
07 teorianumeros
 
06 teoriainfo
06 teoriainfo06 teoriainfo
06 teoriainfo
 
05 gestionseg
05 gestionseg05 gestionseg
05 gestionseg
 
04 calidadinfo
04 calidadinfo04 calidadinfo
04 calidadinfo
 
02 breveintrocripto
02 breveintrocripto02 breveintrocripto
02 breveintrocripto
 
01 presentalibro
01 presentalibro01 presentalibro
01 presentalibro
 

Clase vii

  • 1. Clase VII •[nombre instructor] •[fecha]
  • 2. Agenda  Bases de Datos Relacionales  SQL Server 2005  Instalación  Computer Manager  SQL Server Management Studio  Object Explorer  Project Management  Query Editor  Assisted Editors  SQLiMail  Sentencias Transact-SQL
  • 3. Agenda  Bases de Datos Relacionales  SQL Server 2005  Instalación  Computer Manager  SQL Server Management Studio  Object Explorer  Project Management  Query Editor  Assisted Editors  SQLiMail  Sentencias Transact-SQL
  • 4. Base de Datos Relacionales  Se organizan por Tablas  Contiene Filas y Columnas  Una columna representa un “campo” en la tabla  Los valores de una columna tienen un “tipo de dato” definido  Las tablas pueden contener Claves Primarias Bases de Datos Relacionales (Primary Key) y/o Claves Foraneas  Utilizando Claves entre tablas obtenemos una integridad referencial entre ellas  Utilización de Indices mejora el rendimiento en la búsqueda Ejemplo a continuación…
  • 5. Bases de Datos Relacionales Base de Datos Relacionales
  • 6. Base de Datos Relacionales  Tipos de Relaciones  Uno a uno  Uno a varios  Varios a varios  Integridad Referencial  Es un sistema de reglas Bases de Datos Relacionales  Mantiene la consistencia de los datos entre tablas relacionadas  Actualizar y/o eliminar registros en cascada  Indices  Estructura de datos que permite recuperar filas rápidamente  Proporciona ordenación  Se define sobre una columna o varias o conjunto de columnas
  • 7. Agenda  Bases de Datos Relacionales  SQL Server 2005  Instalación  Computer Manager  SQL Server Management Studio  Object Explorer  Project Management  Query Editor  Assisted Editors  SQLiMail  Sentencias Transact-SQL
  • 8. SQLServer 2005 Instalación  Fácil de usar: Instalación basada en Windows Installer  Inspector de configuración del sistema para verificar la máquina destino  Utilidades Command-line para ejecución desatendida e instalación remota  Permite instalar o desinstalar componentes SQL Server 2005 desde SQLServer 2005 Add/Remove.  Logging de error mejorado y reporte de fallas
  • 9. SQLServer 2005 Computer Manager  Computer Manager combina la funcionalidad de las siguientes herramientas SQL Server en la versión anterior:  Server Network Utility  Client Network Utility  Server Manager  Los siguientes servicios son administrados por el “Computer Manager” :  SQL Server  SQL Server Agent  SQL Server Analysis Services  Report Server Microsoft Search SQLServer 2005   Distributed Transaction Coordinator (DTC)  Full Text Search  El computer manager usa el WMI para cambiar los seteos del server y es parte del Microsoft Management Console (MMC)
  • 10. SQLServer 2005 Computer Manager SQLServer 2005
  • 11. SQLServer 2005 SQL Server Management Studio  Provee un entorno centralizado integrado para la gestión de múltiples servers, tareas y servicios  Las características incluyen:  Explorador de Objetos  Editores Asistidos  Ventana de resumen  Extensiones para Editor de Consultas de SQLCMD  Explorador de Templates SQLServer 2005  Manejo de errores mejorado  Administración de Proyectos  Dialog Boxes no modales  Scripting y Schedulling mejorado
  • 12. SQLServer 2005 SQL Server Management Studio SQLServer 2005
  • 13. SQLServer 2005 Object Explorer (Explorador de Objetos)  Muestra los componentes SQL en una jerarquía de árbol grafica  Permite al usuario expandir múltiples nodos del árbol simultáneamente.  Permite al usuario filtrar un nodo basado en uno o múltiples criterios de filtro.  Provee una interface de usuario amigable SQLServer 2005 para la administración
  • 14. SQLServer 2005 Project Management (Administrador de Proyectos)  Las funcionalidades disponibles para administrar un proyecto son:  Organiza scripts relacionados dentro de un único proyecto  Mantiene el control de versiones sobre scripts (Si VSS esta disponible)  Conexión almacenada y opciones resultantes con cada script SQLServer 2005
  • 15. SQLServer 2005 Query Editor (Editor de consultas)  Permite la ejecución de scripts T-SQL y sentencias contra SQL Server y SQL Server Mobile Edition,  Permite ejecución de expresiones:  multidimensionales (MDX)  data mining (DMX)  XMLA  Escritura de scripts en modo desconectado  Ayuda dinámica  Display mejorado para resultados XML.  Resultados en forma SQLServer 2005 XML cuando usa la columna XML  Funciones XML para Transact-SQL  Legibilidad mejorada por el uso de color- coding
  • 16. SQLServer 2005 Assisted Editors & Templates (Editores Asistidos)  Editores asistidos para creación de objetos SQL Server con propiedades de texto como stored procedures, triggers y funciones  Ejemplo de cómo acceder a Editores asistidos:  Abrir SQL Server Management Studio  Explorar Object Browser. Seleccionar SQL Instance → Databases→ <database> →Programmability→ Stored Procedures  Click derecho sobre Stored Procedures → New Stored Procedure  Esto abrirá el editor asistido con información de cabecera para crear SQLServer 2005 el stored procedure
  • 17. SQLServer 2005 Assisted Editors & Templates SQLServer 2005
  • 18. SQLServer 2005 SQLiMail  Usa SMTP para enviar mail. No necesita Outlook o MAPI extendida  Corre out-of-process desde SQL Server para confiabilidad  Provee background y entrega asíncrona para escalabilidad  Failover múltiple de cuentas SMTP y perfiles permitidos  Cluster y compatibilidad con 64-bit  Servicio esta off por default  Fuerza la seguridad para perfiles de usuario SQLServer 2005  El tamaño y tipo de adjuntos pueden ser configurados  Logs activity para SQL Server y monitores de rendimiento
  • 19. SQLServer 2005 SQL-CLR  Beneficios del CLR  Beneficios para la Programación  Assemblies  La Nueva Arquitectura de SQL Server 2005  Confiabilidad  Seguridad  Configuración del CLR en SQL Server 2005  Creación y distribución Functions SQLServer 2005   Tipos de datos definidos por el usuario  Triggers  Performance Tuning
  • 20. SQLServer 2005 Beneficios del CLR  Modelo de programación mejorado  User Defined Types y Aggregates  Seguridad mejorada  Compatibilidad Cross-Language  Performance y Escalabilidad SQLServer 2005
  • 21. SQLServer 2005 Beneficios para la Programación  Modelo de programación mejorado  Soporte en Visual Studio 2005  Fácil construcción y distribución de soluciones utilizando el entorno de Visual Studio  Mejor debugging SQLServer 2005
  • 22. SQLServer 2005 Assemblies  Assemblies archivos ejecutables que actúan como punto de entrada para una aplicación  Contienen el código que el CLR ejecuta  Estos no son creados si no poseen un manifest asociado (información de la metadata)  Contienen toda la información requerida acerca de tipos y recursos que la aplicación necesita para ejecutarse  Dependencia entre assemblies SQLServer 2005
  • 23. SQLServer 2005 La Nueva Arquitectura de SQL Server 2005  La Hosting layer provee coordinación para:  Carga de los Assembly  Manejo de Memoria SQL Engine  Modelo de Seguridad  Confiabilidad  Threads & Fibers  Deteccion de Deadlock CLR  Contexto de Ejecución Hosting Layer  SQL OS SQLServer 2005  Manejador de Conexiones SQL OS  Manejo de Memoria  Manejo de Thread Windows  Servicios de Sincronización
  • 24. SQLServer 2005 Confiabilidad  AppDomain  AppDomain, el dominio de la aplicación, es un dominio aislado para la ejecución.  Todos los assemblies de un usuario en particular residen en un AppDomain  Assemblies de un usuario no pueden ser referenciados por ningun otro usuario SQLServer 2005  AppDomain aísla completamente todos los recursos que el código .NET desde los recursos de SQL Server
  • 25. SQLServer 2005 Seguridad  La seguridad en el CLR es definida por Code Access Security (CAS)  En CAS, los permisos son seteados en tres niveles:  Políticas de Maquina: Son las políticas para todo el código manejado por la maquina que ejecuta el SQL Server  Políticas de Usuario: Son las políticas para el código manejado que sea hosteado por un proceso. En SQL Server, esta política es especifica para la cuenta de Windows que levanta los servicios para SQLServer 2005 SQL Server  Políticas de Host : Son las políticas seteadas por el Host del CLR, concretamente para el código manejado ejecutándose en ese servidor
  • 26. SQLServer 2005 Configuración del CLR en SQL Server 2005  La configuración del CLR se encuentra en las opciones de advanced server configuration  Para deshabilitar la ejecución del CLR : sp_configure ‘show_advanced_options’, 1 GO RECONFIGURE GO sp_configure ‘clr enabled’, 0 GO SQLServer 2005 RECONFIGURE GO
  • 27. SQLServer 2005 Creación y distribución Build Assembly .NET database objects SQL Data Definition: written in C#,VB.NET…. create assembly … create function … create d procedure … create Loa trigger … create type … SQLServer 2005 SQL SERVER
  • 28. SQLServer 2005 Manejando Assemblies  Cargar un Assembly  Para cargar una dll llamada ‘sqlclr.dll’ en un assembly con permisos ‘SAFE’ : CREATE ASSEMBLY SQLCLR FROM ‘C: YukonAppssqlclr.dll’ With PERMISSION_SET = SAFE SQLServer 2005
  • 29. SQLServer 2005 Meta Data de los Assemblies Assembly Create Detalles del Assembly: Codigo fuente: Referencias: Sys.assemblies Sys.assembly_files Sys.assembly_references SQLServer 2005 Otra informacion en la metadata •SYS.OBJECTS •SYS.ASSEMBLY_MODULES •SYS.ASSEMBLY_TYPES
  • 30. SQLServer 2005 Creando Stored Procedures CLR CREATE ASSEMBLY Module15_assembly FROM ‘MachineNameModule15binDebugModule15_library.dll’ GO CREATE PROCEDURE NewProc @name varchar(255) AS EXTERNAL NAME Module15_assembly.Class1.getSSNbasedOnName SQLServer 2005
  • 31. SQLServer 2005 Functions  Tipos:  Scalar  Table Valued  Ejemplo de creacion de una UDF CREATE ASSEMBLY ValidateString FROM 'MachineNameModule15binDebugvalidateString.dll'; GO SQLServer 2005 CREATE FUNCTION ValidateAreaCode () RETURNS int AS EXTERNAL NAME ValidateString.StringcheckClass.validateString; GO
  • 32. SQLServer 2005 Tipos de datos definidos por el usuario  Para extender los tipos de datos escalares  Soporte a indexado, queries distribuidos, integridad referencial, replicación y operaciones bcp sobre columnas definidas por UDTs  Para distribuir un UDT, se deben seguir los siguientes pasos en este orden:  Definir el UDT como una clase de lenguaje .NET  Distribuir el assembly que referencie el objeto CLR creado  Crear el tipo que referencie al assembly registrado CREATE ASSEMBLY GISmeasures FROM 'MachineNameModule15binDebugGIS.dll' ; SQLServer 2005 GO CREATE TYPE area EXTERNAL NAME GISmeasures.GISclass.latitudeLongitude ; GO
  • 33. SQLServer 2005 Triggers  Standard: Fuerzan reglas de negocios e integridad referencial de datos  Insert, Delete, Update  DDL Triggers: Permiten al usuario prevenir cambios al schema de la base de datos o disparar algun otro cambio en el schema changes en respuesta a alguna otra modificacion de la base de datos  Create, Alter, Drop SQLServer 2005
  • 34. SQLServer 2005 Performance - CLR Vs T-SQL  Performance  Puede reemplazar cursores T-SQL del lado del servidor  Grandes mejoras en la performance  Para llevar adelante grandes accesos a datos o implementar un spool de datos en estadios intermedios  Nota: Si no se usan las UDAgg, se debe considerar la escritura de stored procedures usando código manejado para un mejor aprovechamiento en la performance sobre T-SQL SQLServer 2005
  • 35. SQLServer 2005 Performance Tuning  Utilizar la herramienta Profiler para monitorear los planes de ejecución y el funcionamiento de SQL con los objetos .NET  Observar los siguientes contadores  Contadores de SQL Server  Contadores de .NET CLR  Relacionar los contadores de performance con los datos del profiler SQLServer 2005
  • 36. Agenda  Bases de Datos Relacionales  SQL Server 2005  Instalación  Computer Manager  SQL Server Management Studio  Object Explorer  Project Management  Query Editor  Assisted Editors  SQLiMail  Sentencias Transact-SQL
  • 37. Sentencias Transact-SQL  El Lenguaje de programación Transact-SQL  Tipos de intrucciones de Transact-SQL  Elementos de sintaxis del Transact-SQL Transact-SQL
  • 38. Sentencias Transact-SQL  Implementa el estándar ISO de nivel básico de la especificación ANSI-SQL99  Se pueden ejecutar desde cualquier producto que cumpla los requisitos básicos  Incluye una funcionalidad ampliada Transact-SQL
  • 39. Sentencias Transact-SQL Tipos de intrucciones  Instrucciones del Lenguaje de definincion de datos (DDL)  Instrucciones del Lenguaje de Control de Datos (DCL)  Instrucciones del Lenguaje de tratamientos de datos (DML) Transact-SQL
  • 40. Sentencias Transact-SQL Tipos de intrucciones Instruciones del Lenguaje de definicion de datos  Definen los objetos de la base de datos  CREATE nombreobjeto  ALTER nombreobjeto  DROP nombreobjeto  Deben tener los permisos adecuados Transact-SQL
  • 41. Sentencias Transact-SQL Tipos de intrucciones Instruciones del Lenguaje de control de datos  Establecer o cambiar los permisos  GRANT  DENY  REVOKE  Deben tener los permisos adecuados Transact-SQL
  • 42. Sentencias Transact-SQL Tipos de intrucciones Instrucciónes del Lenguaje de Tratamiento de datos  Las instrucciones DML se utilizan para cambiar datos o recuperar información  SELECT  INSERT  UPDATE  DELETE  Deben tener los permisos adecuados Transact-SQL
  • 43. Sentencias Transact-SQL Elementos de la sintaxis de Transact-SQL Directivas de proceso por lotes  GO  Envia lotes de instrucciones de TSQL a las herramientas y utilidades  No se trata, realmente, de una instrucción de TSQL  EXEC  Ejecuta una funcion definida por el usuario, un prodecimiento de sistema, un prodecimiento definido por el usuario o un prodecimiento almacenado extendido  Controla la ejecución de una cadena de caracteres dentro de Transact-SQL un lote de TSQL
  • 44. Sentencias Transact-SQL Elementos de la sintaxis de Transact-SQL Comentarios  Comentarios en línea  Comentarios en Bloque Transact-SQL
  • 45. Sentencias Transact-SQL DataTypes  Números Enteros  Bigint  Números enteros entre -2E63 (-9.223.372.036.845.775.808) y 2E- 63 (9.223.372.036.845.775.807)  Int  Números enteros entre -2E31 (-2,147,483,648 ) y 2E- 31(2,147,483,647 )  Smallint  Números enteros entre 2E15 (-32.768) y 2E-15 (32.767)  Tinyint  Números enteros entre 0 y 255 Transact-SQL  Bit  Bit  Enteros entre 0 y 1
  • 46. Sentencias Transact-SQL DataTypes  Decimal y númericos  Decimal  Dátos númericos con precisión fija de -10E38 a 10E-38  Numeric  Función equivalente a decimal  Money & SmallMoney  Money  Valores monetarios entre -2E63 y 2E63-1 con precisión de hasta 10 dígitos.  SmallMoney  Valores monetarios entre -214.748,3648 y +214.748,3647 Transact-SQL
  • 47. Sentencias Transact-SQL DataTypes  Números aproximádos  Float  Dátos numéricos de punto flotante entre -1.79E+308 y 1.79E+308  Real  Dátos numéricos de punto flotante entre -3.40E+38 y 3.40E+38  Datetime & Smalldatetime  Datetime  Fechas entre 1 de Enero del 1753 y 31 de diciembre de 9999 con una precisión de 3 milésimas de segúndo Transact-SQL  Smalldatetime  Fechas entre 1 de Enero de 1900 y 6 de Junio de 2079, con una precisión de 1 minúto
  • 48. Sentencias Transact-SQL DataTypes  Caracteres  Char  Carácter de longitud fija (no unicode) con un máximo de 8000 caracteres  Varchar  Caracteres de longitud variable (no unicode) con un máximo de 8000 caracteres  Text  Caracteres de longitud variable (no unicode) con un máximo de 2.147.483.647 caracteres  Nchar  Carácter de longitud fija (unicode) con un máximo de 4000 caracteres  Nvarchar Transact-SQL  Caracteres de longitud variable (unicode) con un máximo de 8000 caracteres  Ntext  Caracteres de longitud variable (unicode) con un máximo de 1,073,741,823 caracteres
  • 49. Sentencias Transact-SQL DataTypes  Binary  Binary  Datos binarios de longitud fija con un máximo de 8000 bytes  Varbinary  Datos binarios de longitud variable con un máximo de 8000 bytes  Image  Datos binarios de lóngitud variable con un máximo de 2.147.483.647 bytes Transact-SQL
  • 50. Sentencias Transact-SQL Operadores  Operadores Aritméticos  Operadores de Asignación  Operadores Bitwise  Operadores de Comparación  Operadores Lógicos  Operadores de Concatenación  Operadores Unarios Transact-SQL
  • 51. Sentencias Transact-SQL Operadores Aritméticos  Realizan operaciones matemáticas entre dos expresiones  Operadores aritméticos  + (suma)  - (resta)  * (Muliplicación)  / (División)  % (Módulo) , devuelve el resto Devuelve el resto entero de una división. Por ejemplo, 12 % 5 = 2 porque el resto de 12 dividido entre 5 es 2. Transact-SQL
  • 52. Sentencias Transact-SQL Operadores de Asignación  Operadores de Asignación Transact-SQL
  • 53. Sentencias Transact-SQL Operadores bit a bit  Operadores bit a bit & (operador bit a bit AND) Realiza una operación lógica AND a nivel de bit entre dos valores enteros. | (operador bit a bit OR) Realiza una operación OR lógica a nivel de bit entre dos valores enteros dados que se convirtieron a expresiones binarias dentro de instrucciones de Transact-SQL. ^ (operador bit a bit OR exclusivo) Realiza una operación OR exclusivo a nivel de bit entre dos valores enteros dados que se convierten a expresiones Transact-SQL binarias dentro de instrucciones de Transact-SQL.
  • 54. Sentencias Transact-SQL Operadores de comparación  Operadores de comparación = (igual al) > (mayor que) < (menor que) >= (mayor que o igual que) <= (menor que o igual que) <> (no es igual a) != (no es igual a) !< (no es menor que) Transact-SQL !> (no es mayor que)
  • 55. Sentencias Transact-SQL Operadores lógicos  Comprueban la veracidad de alguna condición  Operadores Lógicos ALL AND ANY BETWEEN EXISTS IN LIKE NOT OR Transact-SQL SOME
  • 56. Sentencias Transact-SQL Operadores de concatenación de cadenas  Permite concatenar cadenas de textos  Operadores de concatenación  Signo + (mas) Transact-SQL
  • 57. Sentencias Transact-SQL Operadores unarios  Los operadores unarios realizan una operación sobre una única expresión de cualquiera de los tipos de datos de la categoría del tipo de datos numérico.  + (positivo) Es un operador unario que devuelve el valor positivo de una expresión numérica (un operador unario).  - (negativo) Es un operador unario que devuelve el valor negativo de una expresión numérica (un operador unario).  ~ (operador bit a bit NOT) Realiza una operación NOT lógica a nivel de bit en un valor entero dado que se convierte a una expresión binaria dentro de Transact-SQL instrucciones de Transact-SQL.
  • 58. Sentencias Transact-SQL Crear Tablas  La sintaxis para crear tablas es: CREATE TABLE "table_name" ("column 1" "data_type_for_column_1", "column 2“ "data_type_for_column_2",... ) Transact-SQL
  • 59. Sentencias Transact-SQL Sentencia de INSERT  La sintaxis para insertar registros es: Insert into <tablename> (<fieldname>, <fieldname>, <fieldname>) Values (@fieldname, @fieldname, @fieldname); Transact-SQL
  • 60. Sentencias Transact-SQL INSERT FROM  Ésta técnica es usada para copiar datos desde una tabla a la tabla indicada  La sintaxis para insertar copiando registros de otra tabla es insert new_studentdetails select id_number, passwd from studentdetails Transact-SQL
  • 61. Sentencias Transact-SQL SELECT  La sentencia SELECT es usada para seleccionar registros desde una tabla de la base de datos SELECT <Col_1>, <Col_2>,… FROM <Table_name> Ej: Transact-SQL
  • 62. Sentencias Transact-SQL SELECT INTO  La sentencia SELECT INTO es usado para copiar los registros seleccionados de una tabla e insertarla en una tabla diferente al mismo tiempo  La sintaxis es la siguiente: SELECT Column1, Column2, Column3, INTO Table2 FROM Table1 SELECT * INTO Customers_copy FROM Customers Transact-SQL
  • 63. Sentencias Transact-SQL DISTINCT  La clausula DISTINCT es usada para devolver sólo los valores en la expresión especificada Transact-SQL
  • 64. Sentencias Transact-SQL WHERE  La clausula WHERE es utilizada para seleccionar datos condicionalmente en base a criterios especificados  SELECT * FROM Customers  WHERE LastName <> 'Smith‘  SELECT * FROM Customers  WHERE DOB > '1/1/1970‘  SELECT * FROM Customers  WHERE DOB >= '1/1/1970‘ Transact-SQL
  • 65. Sentencias Transact-SQL WHERE - EJEMPLO Transact-SQL
  • 66. Sentencias Transact-SQL WHERE con LIKE Transact-SQL
  • 67. Sentencias Transact-SQL Funciones de Agregado  Funciones de Agregado: AVG COUNT MIN MAX SUM STDEV Transact-SQL
  • 68. Sentencias Transact-SQL Funciones de Agregado - Ejemplo Transact-SQL
  • 69. Sentencias Transact-SQL Funciones Matemáticas  Funciones Matemáticas ABS SQRT RAND SQUARE SIN POWER COS CEILING TAN FLOOR COT EXP Transact-SQL
  • 70. Sentencias Transact-SQL Funciones de Texto  Funciones de Texto LEFT RIGHT LTRIM RTRIM REPLACE SUBSTRING STUFF REVERSE CHAR Transact-SQL LEN LOWER UPPER
  • 71. Sentencias Transact-SQL Funciones de Fecha  Funciones de Fecha DATEADD DATEDIFF GETDATE DAY MONTH YEAR… Transact-SQL
  • 72. Sentencias Transact-SQL ORDER BY  La clausula ORDER BY es usado para ordernar los registros de una sentencia SELECT previamente indicada  La sintaxis es la siguiente: [ ORDER BY { order_by_expression [ ASC | DESC ] } [ ,...n] ] Transact-SQL
  • 73. Sentencias Transact-SQL UPDATE  La sentencia UPDATE es utilizada para modificar los valores de los registros especirficando algún criterio.  La sintaxis es la siguiente: UPDATE tablename SET (campo1 = valor1, campo2 = valor2,…) WHERE Campo4 = Criterio1 Transact-SQL
  • 74. Sentencias Transact-SQL DELETE  Ésta sentencia elimina los registros que especifiquemos dentro de la clausula WHERE  La sintaxis es la siguiente: DELETE FROM tablename Campo4 = Criterio1 Transact-SQL
  • 75. Sentencias Transact-SQL STORE PROCEDURE  Un procedimiento almacenado es un grupo de instrucciones compiladas en un único plan de ejecución  Parámetros de salida, que pueden devolver datos (por ejemplo, un valor entero o de carácter) o una variable de cursor (los cursores son conjuntos de resultados que pueden devolver filas de una en una).  Códigos de retorno, que siempre son un valor entero.  Un conjunto de resultados por cada instrucción SELECT contenida en el procedimiento almacenado o en cualquier otro procedimiento almacenado invocado por el procedimiento almacenado original. Transact-SQL  Un cursor global al que se puede hacer referencia desde fuera del procedimiento almacenado.
  • 76. Sentencias Transact-SQL STORE PROCEDURE – Crear un SP Transact-SQL
  • 77. Sentencias Transact-SQL STORE PROCEDURE – Consumir Transact-SQL
  • 78. Demo •Crear un Base de Datos con tablas, campos y registros

Notas del editor

  1. Base de datos relacional.   En una base de datos relacional, los datos se organizan en tablas . Una tabla tiene cero o más filas, cada fila contiene la información de un determinado &apos;sujeto&apos; de la tabla, por ejemplo en una tabla de alumnos, en una fila tenemos los datos de un alumno. Las filas en un principio están desordenadas. Cada columna representa un &apos;campo&apos; de la tabla, sirve para almacenar una determinada información, 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 están extraídos 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 ningún 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 combinación de columnas) que permite identificar de forma inequívoca 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 foránea es una columna (o combinación 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 pondríamos una columna curso : para saber en qué curso está matriculado el alumno, la columna curso en la tabla de alumnos es clave foránea, 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 más claves foráneas.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 foránea, 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 foránea) deben ser correctos. Las bases de datos de Access2000 tienen la extensión .MDB para que el ordenador las reconozca como tal. http://www.aulaclic.es/sql/f_sql.htm
  2. Introducción   La integridad referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos 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: Relación Uno a Uno : Cuando un registro de una tabla sólo 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 relación 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. Relación Uno a Varios : Cuando un registro de una tabla (tabla secundaria) sólo puede estar relacionado con un único registro de la otra tabla (tabla principal) y un registro de la tabla principal puede tener más de un registro relacionado en la tabla secundaria, en este caso se suele hacer referencia a la tabla principal como tabla &apos;padre&apos; y a la tabla secundaria como tabla &apos;hijo&apos;, entonces la regla se convierte en &apos;un padre puede tener varios hijos pero un hijo solo tiene un padre (regla más fácil de recordar). Por ejemplo: tenemos dos tablas una con los datos de diferentes poblaciones y otra con los habitantes, una población puede tener más de un habitante, pero un habitante pertenecerá (estará empadronado) en una única población. En este caso la tabla principal será la de poblaciones y la tabla secundaria será la de habitantes. Una población puede tener varios habitantes pero un habitante pertenece a una sola población. Esta relación se representa incluyendo en la tabla &apos;hijo&apos; una columna que se corresponde con la clave principal de la tabla &apos;padre&apos;, esta columna es lo denominamos clave foránea (o clave ajena o clave externa). Una clave foránea 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 población que contiene el código de la población 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. Relación Varios a Varios : Cuando un registro de una tabla puede estar relacionado con más de un registro de la otra tabla y viceversa . En este caso las dos tablas no pueden estar relacionadas directamente, se tiene que añadir 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 artículos que se venden en la empresa, un cliente podrá realizar un pedido con varios artículos, y un artículo podrá ser vendido a más de un cliente. No se puede definir entre clientes y artículos , hace falta otra tabla (por ejemplo una tabla de pedidos) relacionada con clientes y con artículos. La tabla pedidos estará relacionada con cliente por una relación uno a muchos y también estará relacionada con artículos por un relación uno a muchos. Integridad referencial   Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en la otra tabla, un error sería asignar a un habitante una población 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 foráneas) 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 foráneas valores que no estén en la tabla principal. La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla. ¿ Cuándo se pueden producir errores en los datos? Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal . insertamos un nuevo habitante y en la columna poblacion escribimos un código de poblacion que no está en la tabla de poblaciones (una población que no existe). Cuando modificamos el valor de la clave principal de un registro que tiene &apos;hijos&apos; , modificamos el codigo de Valencia, sustituimos el valor que tenía (1) por un nuevo valor (10), si Valencia tenía habitantes asignados, qué pasa con esos habitantes, no pueden seguir teniendo el codigo de población 1 porque la población 1 ya no existe, en este caso hay dos alternativas, no dejar cambiar el codigo de Valencia o bien cambiar el codigo de población de todos los habitantes de Valencia y asignarles el código 10. Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal . Por ejemplo cambiamos la población de un habitante, tenía asignada la población 1 (porque estaba empadronado en valencia) y ahora se le asigna la población 2 porque cambia de lugar de residencia. La población 2 debe existir en la tabla de poblaciones. Cuando queremos borrar una fila de la tabla principal y ese registro tiene &apos;hijos&apos; , por ejemplo queremos borrar la población 1 (Valencia) si existen habitantes asignados a la población 1, estos no se pueden quedar con el valor 1 en la columna población porque tendrían asignada una población que no existe. En este caso tenemos dos alternativas, no dejar borrar la población 1 de la tabla de poblaciones, o bien borrarla y poner a valor nulo el campo poblacion de todos sus &apos;hijos&apos;. Asociada a la integridad referencial están los conceptos de actualizar los registros en cascada y eliminar registros en cascada.   Actualización y borrado en cascada   El actualizar y/o eliminar registros en cascada, son opciones que se definen cuando definimos la clave foránea y que le indican al sistema gestor qué hacer en los casos comentados en el punto anterior Actualizar registros en cascada : Esta opción le indica al sistema gestor de la base de datos que cuando se cambie un valor del campo clave de la tabla principal , automáticamente cambiará el valor de la clave foránea 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), automáticamente 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. Si no se tiene definida esta opción, 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 opción le indica al sistema gestor de la base de datos que cuando se elimina un registro de la tabla principal automáticamente se borran también los registros relacionados en la tabla secundaria . Por ejemplo: Si borramos la población Onteniente en la tabla de poblaciones, automáticamente todos los habitantes de Onteniente se borrarán de la tabla de habitantes. Si no se tiene definida esta opción, no se pueden borrar registros de la tabla principal si estos tienen registros relacionados en la tabla secundaria. En este caso, si intentamos borrar la población Ontenyente, no se produce el borrado y el sistema nos devuelve un error o un mensaje que los registros no se han podido eliminar por infracciones de clave. INDICES Definición   Un índice en informática es como el índice de un libro donde tenemos los capítulos del libro y la página donde empieza cada capítulo. No vamos a entrar ahora en cómo se implementan los índices internamente ya que no entra en los objetivos del curso pero sí daremos unas breves nociones de cómo se definen, para qué sirven y cuándo hay que utilizarlos y cuando no.Un índice es una estructura de datos que permite recuperar las filas de una tabla de forma más rápida además de proporcionar una ordenación distinta a la natural de la tabla. Un índice se define sobre una columna o sobre un grupo de columnas , y las filas se ordenarán según los valores contenidos en esas columnas. Por ejemplo, si definimos un índice sobre la columna poblacion de la tabla de clientes , el índice permitirá recuperar los clientes ordenados por orden alfabético de población. Si el índice se define sobre varias columnas , los registros se ordenarán por la primera columna, dentro de un mismo valo r de la primera columna se ordenarán por la segunda columna , y así sucesivamente. Por ejemplo si definimos un índice sobre las columnas provincia y poblacion se ordenarán los clientes por provincia y dentro de la misma provincia por población, aparecerían los de ALICANTE Denia, ALICANTE Xixona, VALENCIA Benetússer, VALENCIA Oliva. El orden de las columnas dentro de un índice es importante , si retomamos el ejemplo anterior y definimos el índice sobre poblacion y provincia , aparecerían los de VALENCIA Benetusser, ALICANTE Denia, VALENCIA Oliva, ALICANTE Xixona. Ahora se ordenan por población y los clientes de la misma población se ordenarían por el campo provincia. Ventajas e inconvenientes  Ventajas: Si una tabla tiene definido un índice sobre una columna se puede localizar mucho más rápidamente una fila que tenga un determinado valor en esa columna. Recuperar las filas de una tabla de forma ordenada por la columna en cuestión también será mucho más rápido .   Inconvenientes: Al ser el índice una estructura de datos adicional a la tabla, ocupa un poco más de espacio en disco. Cuando se añaden, 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 automáticamente índices sobre las columnas claves principales y sobre las claves foráneas ya que se supone que se utilizan a menudo para recuperar filas concretas.
  3. Al instalar esta versión CTP de SQL Server 2005 con Visual Studio 2005 Release Candidate (RC), debe instalar siempre SQL Server 2005 antes que Visual Studio 2005. También debe quitar todas las compilaciones anteriores de SQL Server 2005, Visual Studio 2005 y .NET Framework antes de instalar esta versión CTP. Debido a que ambos productos dependen de la misma versión de .NET Framework, se deben desinstalar en el siguiente orden: SQL Server 2005 Visual Studio 2005 .NET Framework 2.0 SQL Server 2005 CTP se puede instalar simultáneamente con versiones anteriores seleccionadas de SQL Server. Para obtener más información, consulte el tema sobre el uso de varias versiones de SQL Server en la documentación de instalación. 3.4 Desinstalar SQL Server 2005 Para obtener información acerca de cómo desinstalar esta versión CTP de SQL Server 2005, consulte el tema sobre cómo desinstalar una instancia existente de SQL Server 2005 (programa de instalación) en la documentación de instalación. Para obtener información acerca de cómo desinstalar una instancia agrupada de SQL Server 2005, consulte el tema sobre cómo quitar una instancia agrupada de conmutación por error de SQL Server 2005 (programa de instalación) en la documentación de instalación. Para obtener información acerca de cómo obtener acceso a la documentación de instalación, vea la sección 3.1, Acceso a la documentación de instalación . Al desinstalar una versión anterior de SQL Server 2005 con Agregar o quitar programas , no se guardan las bases de datos del sistema. Si necesita guardar las bases de datos del sistema de una versión CTP de SQL Server 2005, use el Asistente para limpieza de la compilación. Para obtener más información, vea la sección 5.11 Asistente para limpieza de la compilación . Los perfiles de SQL Mail y el correo del Agente SQL Server también se eliminan del registro de Windows. Para utilizar SQL Mail y el correo del Agente SQL Server, debe volver a crear los perfiles después de instalar esta versión CTP. http://download.microsoft.com/download/0/3/b/03bf2f3b-c3ee-4e33-ba44-48fa39b72f92/ReadmeSQL2005.htm#_3460_installing_sql_server_2005_communit_fzpy
  4. SQL Computer Manager es un MMC snap-in que permite a los administradores el configurar servicios básicos y configuraciones de protocolo de redes. Este es el equivalente de SQL Server 2005 a herramientas antiguas como Server Network Utility, Client Network Utility, y Service Manager. El mismo no está pensado para ajustar características de performance u operaciones de SQL Server. En Computer Manager existirá un nodo para “Microsoft SQL Servers” bajo el cual existirán todos los servicios, protocolos de redes de servidores, y protocolos de redes de clientes. El nodo de servicios lista todos los servicios disponibles de Express y brinda detalles como el nombre de la instancia del servidor, el estatus del servicio, y el tipo de inicio. Usted puede seleccionar un servicio en particular y realizar operaciones como iniciar, detener, pausa, o reiniciar el servicio. El nodo Server Network Protocols enumera el listado de protocolos por cada instancia en la maquina. Haciendo click en el botón derecho del mouse sobre el protocolo (por ejemplo, TCP) le permitirá habilitar o deshabilitar el protocolo, o cambiar sus propiedades. Existen opciones similares en el nodo de protocolos de redes de cliente. Por favor tenga en cuenta que el nodo Server Network Protocols trabaja directamente con la característica del protocolo en la instancia SQL Server, mientras que el nodo Client Network Protocol trata con las características de protocolo de clientes como MDAC o SQL Native Client. El nodo Client Network Protocol tambien le permite crear un alias que es un nombre alternativo para SQL Server, y puede contener información como nombre del servidor, protocolo utilizado, string de conexión, e información de encriptación. SQL Command es una versión OLE DB de la herramienta existente osql . La misma no solo intenta mantener la compatibilidad funcional con osql, sino que tambien incluye soporte para los nuevos tipos de datos de SQL Server 2005. Todas las opciones de línea de comando brindan la información de salida standard, excepto los mensajes de error que pueden aparecer cuando falla una operación. El comando SqlCmd-? muestra el resumen sintáctico de los conmutadores sqlcmd. SQL Computer Manager y SQL Command son el mismo para SQL Server Express como para las otras ediciones de SQL Server 2005.
  5. SQL Server Management Studio Ese es el nombre de la herramienta que sustituirá al SQL Server Enterprise Manager en SQL Server 2005. Viene con varias novedades entre las que podemos destacar: Manejo por tabs . En la versión actual, con el Query Analizer podemos tener varias consultas abiertas de forma simultánea, en una aplicación MDI, pero es un engorro ir pasando de una a otra. Con SQL Server Management Studio (SSMS) se utilizan pestañas (tabs) para organizar las consultas abiertas. Cambio de conexión . Con Query Analizer no se puede cambiar la conexión de una consulta, sólo 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 están manipulando, cosa que agradecerán los administradores con bases de datos de cientos de objetos (tablas, vistas, procedimientos). De esta forma podemos indicar que nos muestre sólo los objetos que contienen la palabra “ARTICULO”, por ejemplo.
  6. SQL Server Management Studio Ese es el nombre de la herramienta que sustituirá al SQL Server Enterprise Manager en SQL Server 2005. Viene con varias novedades entre las que podemos destacar: Manejo por tabs . En la versión actual, con el Query Analizer podemos tener varias consultas abiertas de forma simultánea, en una aplicación MDI, pero es un engorro ir pasando de una a otra. Con SQL Server Management Studio (SSMS) se utilizan pestañas (tabs) para organizar las consultas abiertas. Cambio de conexión . Con Query Analizer no se puede cambiar la conexión de una consulta, sólo 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 están manipulando, cosa que agradecerán los administradores con bases de datos de cientos de objetos (tablas, vistas, procedimientos). De esta forma podemos indicar que nos muestre sólo los objetos que contienen la palabra “ARTICULO”, por ejemplo.
  7. 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 díalogos del SQL Server Management Studio o bien desde el SQL Object Explorer. El Query Editor Posee: AutoComplete de sentencias. Color Coding Templates Representaciones Graficas
  8. Soporte ampliado de lenguajes de programación  Con el CLR (“common language runtime”) alojado en el motor de la base da datos, los desarrolladores tendrán la opción de escoger entre una variedad de lenguajes familiares para desarrollar aplicaciones de bases de datos, incluyendo Transact-SQL, Microsoft Visual Basic .NET y Microsoft Visual C#® .NET. Además, el almacenamiento de CLR proporcionará a los desarrolladores más flexibilidad mediante el uso de tipos y funciones definidos por el usuario. El CLR también procurará oportunidades de usar el código de terceros para el desarrollo rápido de aplicaciones de bases de datos. SQL Server 2005 integrará en su núcleo el CLR (Common Language Runtime) de la plataforma .NET; es decir, el entorno que permite la ejecución de aplicaciones .NET, escritas con cualquier lenguaje capaz de producir MSIL (Microsoft Intermediate Language). Esta capacidad es análoga a la de otros RDBMS que incorporan en su producto la máquina virtual Java, obviamente con las diferencias propias de ambas plataformas. Que Yukon incorpore el CLR significa que los programadores podrán utilizar el lenguaje que están acostumbrados a usar (y no obligatoriamente T-SQL, aunque éste sigue estando disponible, además con diversas extensiones y mejoras) a la hora de escribir un procedimiento almacenado o una función 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 sólo las construcciones de este lenguaje de programación, mucho más potentes que las de T-SQL, sino también el acceso a los servicios de la biblioteca de clases, la seguridad en la ejecución del código .NET y el rendimiento mejorado ya que dicho código se compila a código nativo. Usando esta capacidad sería posible, a modo de ejemplo, escribir un procedimiento almacenado que ante la solicitud de un cliente extrajese de la base de datos la información 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 difícilmente podría hacerse usando solo T-SQL).
  9. Estando tan próximo el lanzamiento oficial de las versiones 2005 de Visual Studio .NET y SQL Server en nuestro país, este artículo pretende explorar una de las características más innovadoras de la próxima versión de SQL Server: La Creación de Procedimientos Almacenados y Funciones en SQL Server utilizando los lenguajes del .NET Framework Desarrollo y Administración de Base de Datos Si el trabajo que realizas combina actividades tanto de administración 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 desempeñas tareas de administración de base de datos quizás aún no lo estas. Seguramente hasta ahora no le has prestado demasiada atención porque creías que esto solo era algo concerniente a los desarrolladores, este concepto está tendiendo a cambiar ya que en las próximas 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 desempeñes en tu trabajo. C# y VB.net en SQL Server Cada vez el Visual Studio integra más herramientas que permiten la manipulación y la ejecución de distintas tareas contra el servidor de base de datos, de igual manera en el próximo release de SQL Server, se tendrá un entorno mucho más integrado y familiar para desarrolladores, para esto solo hay que ver la interfaz que posee, por ejemplo, el Managment Studio de SQL 2005, es un entorno con muchas más funcionalidades para desarrolladores. En SQL 2000 y en versiones previas podíamos crear los distintos objetos de base de datos tales como procedimientos almacenados, funciones o triggers utilizando T-SQL, con la versión de SQL que será liberada este año, estaremos en capacidad de crear estos y otros objetos ya no solo utilizando el T-SQL, sino también C# y VB.net. El SQL 2005 ha sido creado, en una parte muy significativa, justamente con estos lenguajes. SQL 2005 expone la funcionalidad del .NET framework permitiéndonos realizar, entre otras cosas, lo siguiente: Crear procedimientos almacenados y triggers utilizando C# o VB.net e invocar estos procedimientos de la misma manera como se hace para los procedimientos T-SQL. Crear funciones basadas en CLR, ya sea en C# o VB.net e invocarlas de la misma manera como se hace para las f unciones de T-SQL. Crear UDTs(Tipos Definidos por Usuario) basados en CLR y utilizarlos para definir tablas y reglas de negocio. Procedimientos almacenados extendidos En SQL 2000 y versiones previas se podía acceder a código 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 cálculos matemáticos 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 tenía ciertas desventajas, el código que se ejecutaba tenía que ser un código en el que el SQL Server confiara plenamente, y además el hecho de ser un código no administrado hacía que estos se ejecutaran en el mismo espacio de memoria que el SQL Server, esto traía consigo el riesgo de ocasionar algún 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 sería una buena alternativa a los ya clásicos procedimientos basados en T-SQL, serían las siguientes: Reemplazando o ampliando la funcionalidad de extensos y complejos procedimientos almacenados, especialmente los que realizan cálculos matemáticos complejos o fórmulas de negocio complejas. Procedimientos que necesitan acceder a algunas estructuras de datos externas que no tienen una interface tradicional de acceso a datos. El uso del CLR permite interactuar directamente con la estructura de datos externa, algo que no podría hacerse con el T-SQL. Por ejemplo se podría acceder a un archivo de MS Project para actualizar complejas programaciones de tareas. Realizar algoritmos complejos. Por ejemplo algoritmos geográficos de mapeo. Realizar complejos cálculos de ingeniería. Acceso a Clases del Framework 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 deberían continuar corriendo y se podrá crear nuevos procedimientos, funciones y UDT&apos;s (Tipos Definidos por Usuario) en alguno de los tres lenguajes soportados. A diferencia del T-SQL, los lenguajes .NET pueden utilizar las más de 5000 clases que el Framework .Net posee, y esto obviamente es una gran diferencia y ventaja. Procedimientos almacenados extendidos 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 versión de SQL todos empecemos a crear procedimientos o funciones mediante los lenguajes .NET, y ya no se utilice el T-SQL, esto sería un gran error, por el contrario, los desarrolladores y administradores de bases de datos deben utilizar primariamente el T-SQL, si en caso se presentara alguna situación en la que el T-SQL quedase limitado, entonces es en esta situación que se debería 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, quizás al evaluar y comparar el performance de uno versus el otro, encontrará que el procedimiento hecho en T-SQL es más rápido que el que se realizó con lenguajes .net; probablemente ésta sea una experiencia muy decepcionante y tal vez el desarrollador ya no quiera saber más a cerca del uso del CLR. Y esto, lógicamente, 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á más tiempo la ejecución 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 muchísimo menor. Caso de Aplicación Para mostrar de manera práctica la creación de Procedimientos Almacenados utilizando los lenguajes .NET hemos creado una pequeña aplicación que utiliza procedimientos basados en CLR para realizar funciones de encriptación y desencriptación. En esta aplicación de ejemplo se crearán tres Procedimientos Almacenados utilizando Visual Basic .Net, estos procedimientos generarán claves de encriptación, luego se usan estas claves para encriptar y desencriptar un dato en particular; en este caso, un password de usuario. T-SQL no podría realizar estas operaciones de encriptación sin acceder a las funciones de encriptación del .NET Framework, entonces en este caso se justifica plenamente la implementación de procedimientos almacenados basados en CLR. A continuación se muestra un gráfico que ilustra la secuencia en la que se han utilizado las herramientas (Visual Studio .Net y SQL Server) para la creación y generación de los procedimientos almacenados CLR; hasta su uso en la aplicación Windows .NET.
  10. Estando tan próximo el lanzamiento oficial de las versiones 2005 de Visual Studio .NET y SQL Server en nuestro país, este artículo pretende explorar una de las características más innovadoras de la próxima versión de SQL Server: La Creación de Procedimientos Almacenados y Funciones en SQL Server utilizando los lenguajes del .NET Framework Desarrollo y Administración de Base de Datos Si el trabajo que realizas combina actividades tanto de administración 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 desempeñas tareas de administración de base de datos quizás aún no lo estas. Seguramente hasta ahora no le has prestado demasiada atención porque creías que esto solo era algo concerniente a los desarrolladores, este concepto está tendiendo a cambiar ya que en las próximas 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 desempeñes en tu trabajo. C# y VB.net en SQL Server Cada vez el Visual Studio integra más herramientas que permiten la manipulación y la ejecución de distintas tareas contra el servidor de base de datos, de igual manera en el próximo release de SQL Server, se tendrá un entorno mucho más integrado y familiar para desarrolladores, para esto solo hay que ver la interfaz que posee, por ejemplo, el Managment Studio de SQL 2005, es un entorno con muchas más funcionalidades para desarrolladores. En SQL 2000 y en versiones previas podíamos crear los distintos objetos de base de datos tales como procedimientos almacenados, funciones o triggers utilizando T-SQL, con la versión de SQL que será liberada este año, estaremos en capacidad de crear estos y otros objetos ya no solo utilizando el T-SQL, sino también C# y VB.net. El SQL 2005 ha sido creado, en una parte muy significativa, justamente con estos lenguajes. SQL 2005 expone la funcionalidad del .NET framework permitiéndonos realizar, entre otras cosas, lo siguiente: Crear procedimientos almacenados y triggers utilizando C# o VB.net e invocar estos procedimientos de la misma manera como se hace para los procedimientos T-SQL. Crear funciones basadas en CLR, ya sea en C# o VB.net e invocarlas de la misma manera como se hace para las f unciones de T-SQL. Crear UDTs(Tipos Definidos por Usuario) basados en CLR y utilizarlos para definir tablas y reglas de negocio. Procedimientos almacenados extendidos En SQL 2000 y versiones previas se podía acceder a código 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 cálculos matemáticos 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 tenía ciertas desventajas, el código que se ejecutaba tenía que ser un código en el que el SQL Server confiara plenamente, y además el hecho de ser un código no administrado hacía que estos se ejecutaran en el mismo espacio de memoria que el SQL Server, esto traía consigo el riesgo de ocasionar algún 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 sería una buena alternativa a los ya clásicos procedimientos basados en T-SQL, serían las siguientes: Reemplazando o ampliando la funcionalidad de extensos y complejos procedimientos almacenados, especialmente los que realizan cálculos matemáticos complejos o fórmulas de negocio complejas. Procedimientos que necesitan acceder a algunas estructuras de datos externas que no tienen una interface tradicional de acceso a datos. El uso del CLR permite interactuar directamente con la estructura de datos externa, algo que no podría hacerse con el T-SQL. Por ejemplo se podría acceder a un archivo de MS Project para actualizar complejas programaciones de tareas. Realizar algoritmos complejos. Por ejemplo algoritmos geográficos de mapeo. Realizar complejos cálculos de ingeniería. Acceso a Clases del Framework 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 deberían continuar corriendo y se podrá crear nuevos procedimientos, funciones y UDT&apos;s (Tipos Definidos por Usuario) en alguno de los tres lenguajes soportados. A diferencia del T-SQL, los lenguajes .NET pueden utilizar las más de 5000 clases que el Framework .Net posee, y esto obviamente es una gran diferencia y ventaja. Procedimientos almacenados extendidos 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 versión de SQL todos empecemos a crear procedimientos o funciones mediante los lenguajes .NET, y ya no se utilice el T-SQL, esto sería un gran error, por el contrario, los desarrolladores y administradores de bases de datos deben utilizar primariamente el T-SQL, si en caso se presentara alguna situación en la que el T-SQL quedase limitado, entonces es en esta situación que se debería 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, quizás al evaluar y comparar el performance de uno versus el otro, encontrará que el procedimiento hecho en T-SQL es más rápido que el que se realizó con lenguajes .net; probablemente ésta sea una experiencia muy decepcionante y tal vez el desarrollador ya no quiera saber más a cerca del uso del CLR. Y esto, lógicamente, 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á más tiempo la ejecución 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 muchísimo menor. Caso de Aplicación Para mostrar de manera práctica la creación de Procedimientos Almacenados utilizando los lenguajes .NET hemos creado una pequeña aplicación que utiliza procedimientos basados en CLR para realizar funciones de encriptación y desencriptación. En esta aplicación de ejemplo se crearán tres Procedimientos Almacenados utilizando Visual Basic .Net, estos procedimientos generarán claves de encriptación, luego se usan estas claves para encriptar y desencriptar un dato en particular; en este caso, un password de usuario. T-SQL no podría realizar estas operaciones de encriptación sin acceder a las funciones de encriptación del .NET Framework, entonces en este caso se justifica plenamente la implementación de procedimientos almacenados basados en CLR. A continuación se muestra un gráfico que ilustra la secuencia en la que se han utilizado las herramientas (Visual Studio .Net y SQL Server) para la creación y generación de los procedimientos almacenados CLR; hasta su uso en la aplicación Windows .NET.
  11. Cuando un código es compilado dentro de un assembly, el código es convertido de alto nivel a código intermedio (IL) Cuando el programa es ejecutado, el primer assembly que contiene el punto de entrada, se carga en memoria El CLR chequea que el manifiesto del assembly para determinar los requerimientos para ejecutar la aplicación Si el permiso solicitado es otorgado, el CLR crea un proceso para la aplicación que se ejecuta El Just-In-Time (JIT) cimplila conviertiendo la primera porcion de código cargada en memoria, el JIT compila el resto del código a tiempo y es ubicado en memoria en código binario
  12. Common Memory Management El CLR no distingue entre virtual y memoria fisica SQL Server administra directamente la memoria física En SQL Server, administra la alocación de memoria por el CLR El CLR llama al SQL Server primitivo para alocar y de-alocar éste en memoria La memoria usada por el CLR se considera en el uso total de la memoria del sistema Thread Management SQL Server usa hilos de ejecución 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 ejecución, el CLR llama a objetos del SQL Server para sincronizar Integración con .NET Framework Con el lanzamiento de Microsoft SQL Server 2005 Beta 2, los programadores de bases de datos pueden tomar ventaja de la biblioteca de clases de Microsoft .NET Framework y lenguajes modernos de programación para implementar funcionalidades en el servidor. Utilizando la integración con common language runtime (CLR), usted puede codificar sus procedimientos almacenados, funciones, y disparadores en el lenguaje .NET Framework de su elección. Microsoft Visual Basic .NET y C# ofrecen construcciones orientadas a los objetos, manejo de excepciones estructurados, vectores, espacio de nombres, y clases. Además, .NET Framework brinda miles de clases y métodos que contienen extensas capacidades incorporadas que puede utilizar fácilmente en el servidor. Muchas tareas que fueron extrañas o difíciles de realizar en Transact-SQL pueden lograrse con facilidad al utilizar código managed, además, existen dos tipos nuevos de objetos de base de datos – agregados y tipos definidos por usuarios. Ahora, puede utilizar mejor el conocimiento y las habilidades que ya tiene incorporadas para escribir código en proceso. En resumen, SQL Server 2005 Beta 2 le permite extender su servidor de base de datos para realizar más procesos de cálculo y operaciones en el back-end con más facilidad. Esta integración entre SQL Server y CLR brinda varios beneficios importantes: Mejora en el modelo de programación: Los lenguajes de programación que son compatibles con .NET Framework son, en muchos aspectos, más ricos que Transact-SQL, ofreciendo construcciones y capacidades que antes no estaban disponibles para desarrolladores SQL. Mejoras en seguridad: El código managed corre en un ambiente CLR, el cual esta hosted por el motor de base de datos. Esto permite a los objetos de la base de datos de .NET Framework estar más seguros que los procedimientos de almacenamientos extendidos disponibles anteriormente en versiones previas de SQL Server. Tipos y agregados definidos por el usuario : Dos nuevos objetos de bases de datos que expanden el almacenamiento y las capacidades de consulta de SQL Server son permitidas al hostear el CLR. Ambiente de desarrollo común: El desarrollo de base de datos esta integrado con el ambiente de desarrollo de Visual Studio 2005. Usted puede utilizar las mismas herramientas para desarrollar y eliminar los errores de objetos de bases de datos y scripts que utiliza para escribir componentes y servicios .NET Framework capa media o capa cliente. Performance y escalabilidad : Debido a que el código managed compila a código nativo antes de la ejecución, usted puede mejorar significativamente la performance en algunos escenarios. Usted puede capitalizar de la integración CLR para escribir código con lógica más compleja y que sea más apropiado para tareas de cálculo, utilizando lenguajes como Visual Basic .NET y C#. Además, Visual Basic .NET y C# ofrecen capacidades orientadas a objetos como encapsulamiento, herencia, y polimorfismo. uede organizar fácilmente código relacionado a clases y espacio de nombres, lo que significa que puede organizar y mantener sus inversiones de código con facilidad cuando esta trabajando con grandes cantidades de código. Esta habilidad para organizar código de manera lógica y física en asambleas y espacio de nombres es un beneficio enorme, y le permitirá encontrar y relacionar diferentes pedazos de código con facilidad en una implementación grande de base de datos. El código managed es más eficiente que Transact-SQL para procesar números y lógica de ejecución complicada, y brinda un soporte extenso a manejo de strings, expresiones regulares, etc. También, 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 fácilmente de cualquier procedimiento almacenado, disparadores, o funciones definidas por el usuario. unciones mejoradas de manejo de strings, funciones de matemáticas, operaciones de fechas, acceso a recursos del sistema, algoritmos de encriptación avanzados, acceso a archivos, procesamiento de imágenes y manipulación de datos XML, todos son accesibles con facilidad desde procedimientos de almacenamiento managed, funciones, disparadores y agregados. Uno de los beneficios más importantes de código managed es la seguridad de tipo. Antes de que el código managed sea ejecutado, el CLR realiza varias verificaciones, mediante un proceso conocido como “verificación”, para asegurarse que el código es seguro. Por ejemplo, el código 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 día Microsoft sigue los procesos de desarrollo que ayudan a asegurar que nuestros productos e instalaciones de productos sean seguras. El equipo de desarrollo de Microsoft SQL Server ha incorporado estos procesos al desarrollo de SQL Server 2005. Después del lanzamiento, Microsoft brinda soporte a los clientes y a los socios de negocios con comunicaciones acerca de problemas de seguridad. El resultado es que SQL Server 2005 incorporará las características de seguridad más extensivas que ningún otro lanzamiento de SQL Server hasta este momento. Generalmente, estas características y mejoras se agrupan en tres áreas: Restringiendo el acceso de usuarios al servidor SQL : Mayor control de acceso a SQL Server, e inversiones en mecanismos que permiten al administrador controlar el acceso a SQL Server mediante políticas. Deshabilitar servicios y restringir configuraciones de servicios : Brindar a los administradores la habilidad de restringir el acceso a los recursos dentro de SQL Server, en el panorama del administrador designado y con un fino grado de granularidad, y para asegurarse que tengan un sistema fácil de manejar sin violar el principio de menor privilegios. Debido a que ciertos servicios están deshabilitados de manera predeterminada para instalaciones de nuevos servidores, ahora los clientes pueden estar más involucrados en decidir que servicios adicionales específicos desean habilitar. Reduciendo la superficie de ataque para nuevas características : Comenzando con la instalación de SQL Server, la superficie de ataque se minimiza. A lo largo del ciclo de desarrollo del producto, las nuevas características fueron revisadas y evaluadas por seguridad para ayudar a reducir el área de ataque.
  13. 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 más bien en el file system El código precargado es verificado e SQL Server toma la responsabilidad de validar todas las librerias Para manejar el out of memory El CLR notificará al SQL Server acerca de la repercusión del la descarga por cada solicitud de memoria Bajo la condicion de baja memoria, puede ser dirijido permitiendo a la GC a ejecutarse más frecuentemente, esperando por otro procedimiento que lo finalize ántes de invocar prodecimientos adicionales
  14. Seguridad en Microsoft SQL Server 2005 Publicado: 24 de Mayo de 2004 | Actualizado: 28 de Julio de 2005 En enero de 2002, Microsoft presentó la iniciativa de la Informática Fiable (Trustworthy Computing), pensada para mejorar cuestiones de seguridad, privacidad, confiabilidad e integridad de negocios. Como parte de esta iniciativa, Microsoft cumple con procesos de desarrollo que apuntan a que los productos sean seguros en materia de diseño, configuración y desarrollo. El equipo de desarrollo de SQL Server ha incorporado estos procesos en el desarrollo de SQL Server 2005, la nueva versión de SQL Server. Informática Fiable y SQL Server 2005 La iniciativa de la Informática Fiable (en inglés) delimita un marco que define los pasos necesarios para respaldar la seguridad informática y, de esta manera, tomar las medidas que servirán al desarrollo y el mantenimiento de un entorno seguro. Estos pasos ayudan a proteger la confidencialidad, la integridad y la disponibilidad de datos y sistemas en cada fase del ciclo de vida del software -el diseño, la entrega, el mantenimiento-. Para Microsoft, los objetivos de la iniciativa de la Informática Fiable apuntan a: • Reducir problemas potenciales de seguridad a partir del diseño y testeo de productos.• Reducir el área de ataques potenciales a partir de la inhabilitación de funciones que pueden resultar innecesarias. También asegurar que, durante su instalación, el producto elija los valores de configuración correctos para todas las opciones.• Proporcionar las herramientas y las guías necesarias que fomentan las acciones de protección, detección, defensa, recuperación y mantenimiento.• Crear la documentación necesaria que comunique de forma regular la última información sobre seguridad, para que los mismos clientes puedan ocuparse de la seguridad e integridad de su entorno de SQL Server. Para más información sobre estos objetivos, visite la página sobre Seguridad en el sitio de Informática Fiable de Microsoft. En consonancia con los cuatro preceptos de la iniciativa de la Informática Fiable, Microsoft y el equipo de SQL Server adoptaron las siguientes medidas: • Seguridad en el diseño. El equipo de desarrollo de SQL Server realizó numerosas intervenciones en materia de seguridad y dedicó más de dos meses al estudio de los componentes de SQL Server. Para cada amenaza potencial de seguridad, el equipo hizo un análisis de la situación y realizó trabajos de diseño y testeo suplementarios que apuntan a neutralizar problemas potenciales de seguridad. Como resultado de estos esfuerzos de diseño, SQL Server 2005 incluirá nuevas funciones de seguridad.• Seguridad por defecto. Para su instalación, SQL Server 2005 elegirá los valores de configuración correctos para todas las opciones, asegurándose así de que la instalación de los sistemas se realice en el estado seguro por defecto.• Seguridad en el desarrollo. Microsoft creó contenido para que las organizaciones puedan desarrollar SQL Server con las credenciales de seguridad apropiadas y para que comprendan los pasos y permisos requeridos. Las herramientas de desarrollo de SQL Server proporcionan la información necesaria para comprender las decisiones que deben tomarse durante la etapa de desarrollo. Por otra parte, las actualizaciones de seguridad son fáciles de encontrar y de instalar (de elegir la opción correspondiente, las actualizaciones se instalarán automáticamente). Las herramientas también se encuentran disponibles para enfrentar los riesgos de seguridad que corren las organizaciones.• Comunicaciones. Para asegurar el soporte del desarrollo de SQL Server, Microsoft difunde comunicaciones permanentes sobre cuestiones de seguridad. La página sobre Recursos de Seguridad sirve como una archivo central con toda la información sobre seguridad relacionada con SQL Server, incluyendo amenazas de seguridad y parches y herramientas que sirven para mitigar dichas amenazas. SQL Server 2005 incorporará mejoras y funciones de seguridad que coinciden con los objetivos de la iniciativa de la Informática Fiable. En general, estas funciones y mejoras recaen en las siguientes áreas: • Restricción del acceso de usuarios al servidor. SQL Server 2005 proporciona más control de acceso a SQL Server y permite que los administradores controlen dicho acceso a través de distintas políticas.• Inhabilitación de servicios y restricción de la configuración del servicio. Los administradores podrán restringir el acceso a los recursos de SQL Server en función del alcance otorgado al administrador y con una fina variedad de opciones. Los administradores también contarán con un sistema manejable que no viola el principio de menos privilegios. Al contar con ciertos servicios inhabilitados por defecto para nuevas instalaciones de servidores, los administradores se involucrarán de un modo más activo en la elección de los servicios que pretenden habilitar.• Reducción del área de ataques potenciales en las nuevas funciones. Empezando por la configuración e instalación de SQL Server, el área de ataques potenciales se encontrará minimizada. A través del ciclo de desarrollo del producto, se ha repasado y evaluado la seguridad de las nuevas funciones para ayudar a reducir la superficie de ataque.
  15. ALTER Assembly SQL Server crea un nuego AppDomain para cargar el nuevo código existente La session exitente continuará utilizando el viejo código 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 EXTERNAL_ACCESS : All the above, CREATE ASSEMBLY WITH EXTERNAL_ACCESS permission
  16. Ejecutarlo como CALLER:Especificia que la funcion se ejecutará en el contexto del usuario que lo llama. (CALLER es el predeterminado) SELF: Especifica que la funcion se ejecutará en el contexto del usuario que creo la funcion. OWNER; Especifica que la funcion se ejecutará en el contexto del propietario de la funcion
  17. Funciones Escalares Las funciones que realizan operaciones de manipulación de secuencias, benefician al SQLCLR Las funciones escalares implemetadas en XP para acomodar prodecimientos complejos, pueden ser reemplazados por sql SQL CLR
  18. To monitor memory,the DMVs critical are: sys.dm_os_memory_allocations sys.dm_os_memory_caches sys.dm_os_memory_clerks sys.dm_os_memory_pools Sys.dm_os_loaded_modules shows whether CLR is currently loaded for example: select name, description, * from sys.dm_os_loaded_modules where description like &apos;%Common Language Runtime%‘ SQL Server manages the memory for CLR objects
  19. TSQL (de aquí en más) es un lenguaje que sirve para la definicion, tratamiento y control de datos, ëste modulo proprciona una breve información general del tsql como lenguaje de programación. Tambien describe los distintos tipos de instrucciones de tsql y los elementos de su sitnaxis
  20. 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 instrucción SELECT. Un conjutno de resultados es una tabla que muestra lod datos obtenidos mediante la instrucción SQLECT. La tabla tiene filas y columnas. La escritura y ejecucion de instrucciones de TSQL es una de las formas en que se puede realizar una consulta en SQL Server. Cuando esfriba y ejecute instrucciones de TSQL, utilizará: Instrucciones del Lenguaje de definincion de datos (DDL), que se utilizan para crear objetos en la base de datos. Instrucciones del Lenguaje de control de datos (DCL), que se utilizan`para deteminar quen puede ver o modificar los datos Instrucciones del Lenguaje de tratamientos de datos (DML), que se utilizan para consultar y modificar datos
  21. Las instrucciones de DDL definen la base de datos mediante la creacion de bases de datos, tablas y tipo de datos definidos por el usuario. Las intrucciones de DDL se utilizan tambien para administrar los objtos de la base de datos. Algunas instrucciones de DDL son : CREATE nombreobjeto ALTER nombreobjeto DROP nombreobjeto De forma predeterminada, solo los miembors de la funcion sysadmin, dbcreator, db_owner o db_ddladmin pueden ejecutar instrucciones de DDL, En General, se recomienda no utilizar otra cuentas para crear objetos de base de datos. Si distintos usuarios crean sus propios objetos en una base de datos, se requerie que el propietario de cada objeto conceda los permisos adecuados a cada usuario de esos objetos. Esto genera trabajo administrativo y debe evitarse. Restringir los permisos de instrucciones a esas funciones tambien evita los problemas de propiedad de los objetos que se pueden producir cuando el propietario de un objeto se ha quietado de ujna base de datos o cuando el propuetario de un procedimiento almacenado o vista no es propietario de las tablas subadyacentes. La secuencia de comandos siguiente crea una tabla llamada customers en la base de datos Northwind.incluye las columnas cust_id, company, contact y phone. USE northwind CREATE TABLE Customer (cust_id int, company varchar(40), contact varchar(30), phone char(12)) GO
  22. 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. De forma predeterminada, sólo los miembros del a funcion sysadmin, dbcreator, db_owner o db_securityadmin puede ejecutar instrucciones DCL.
  23. Las instrucciones de DML funcionan con los datos de la base de datos. Mediante estas instrucciones puede cambiarlos o recuperar información Las instrucciones DML incluyen: 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
  24. 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 métodos básicos de iniciar procesos por lotes en SQL Sever. GO Las utilidades de SQL Sever interpretan el comando GO como una señal para iniciar el envío 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 instrucción 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 instrucción 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 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 parámetros en forma de argumentos y tambien se puede asignar un estado de retorno
  25. Los comentarios son cadenas de texto que no se ejecutarn, colocadas en las instrucciones para describir la accion que la instrucción está realizando o para deshabilitar una o varias lineas de la instrucción. Se pueden utilizar de una de estas dos formas: en una linea de una instrucción o como bloque. Comentarios en linea. Se pueden crear comentarios en una linea mediante dos guiones (--) para establecer un comentario aparte de una instrucción. TSQL pasa por alto el texto situado a la derecia de los caracteres de comentario. Éste carácter de comentario se puede utilizar tambien para deshabilitar lineas de una instrucción. Comentarios en Bloque Para crear bloques de varias lineas de comentarios, coloque un carácter de comentario (/*) al comienzo del texto del comentario, escriba suys anotaciones y , despues, concluya el comentario con un carácter de cierre de comentario (*/). Utilice este indicarod de carácter para cerar una o varias lineas de comentarios
  26. int, bigint, smallint, and tinyint Exact number data types that use integer data. bigint Integer (whole number) data from -2^63 (-9223372036854775808) through 2^63-1 (9223372036854775807). Storage size is 8 bytes. int Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647). Storage size is 4 bytes. The SQL-92 synonym for int is integer . smallint Integer data from -2^15 (-32,768) through 2^15 - 1 (32,767). Storage size is 2 bytes. tinyint Integer data from 0 through 255. Storage size is 1 byte. Remarks The bigint data type is supported where integer values are supported. However, bigint is intended for special cases where the integer values may exceed the range supported by the int data type. The int data type remains the primary integer data type in SQL Server. bigint fits between smallmoney and int in the data type precedence chart. Functions will return bigint only if the parameter expression is a bigint data type. SQL Server will not automatically promote other integer data types ( tinyint , smallint , and int ) to bigint .
  27. decimal and numeric Numeric data types with fixed precision and scale. decimal [ ( p [ , s ] ) ] and numeric [ ( p [ , s ] ) ] Fixed precision and scale numbers. When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1. The SQL-92 synonyms for decimal are dec and dec( p , s ) . p (precision) Specifies the maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. The precision must be a value from 1 through the maximum precision. The maximum precision is 38. s (scale) 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 &lt;= s &lt;= p . Maximum storage sizes vary, based on the precision. money and smallmoney Monetary data types for representing monetary or currency values. money Monetary data values from -2^63 (-922,337,203,685,477.5808) through 2^63 - 1 (+922,337,203,685,477.5807), with accuracy to a ten-thousandth of a monetary unit. Storage size is 8 bytes. smallmoney Monetary data values from - 214,748.3648 through +214,748.3647, with accuracy to a ten-thousandth of a monetary unit. Storage size is 4 bytes.
  28. float and real Approximate number data types for use with floating point numeric data. Floating point data is approximate; not all values in the data type range can be precisely represented. Syntax float [ ( n ) ] Is a floating point number data from - 1.79E + 308 through 1.79E + 308. n is the number of bits used to store the mantissa of the float number in scientific notation and thus dictates the precision and storage size. n must be a value from 1 through 53 . datetime and smalldatetime Date and time data types for representing date and time of day. datetime Date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007 seconds, as shown in the table. smalldatetime 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.
  29. char and varchar Fixed-length ( char ) or variable-length ( varchar ) character data types. char [( n )] Fixed-length non-Unicode character data with length of n bytes. n must be a value from 1 through 8,000. Storage size is n bytes. The SQL-92 synonym for char is character . varchar [( n )] Variable-length non-Unicode character data with length of n bytes. n must be a value from 1 through 8,000. Storage size is the actual length in bytes of the data entered, not n bytes. The data entered can be 0 characters in length. The SQL-92 synonyms for varchar are char varying or character varying . ntext, text, and image Fixed and variable-length data types for storing large non-Unicode and Unicode character and binary data. Unicode data uses the UNICODE UCS-2 character set. ntext Variable-length Unicode data with a maximum length of 230 - 1 (1,073,741,823) characters. Storage size, in bytes, is two times the number of characters entered. The SQL-92 synonym for ntext is national text . text Variable-length non-Unicode data in the code page of the server and with a maximum length of 231-1 (2,147,483,647) characters. When the server code page uses double-byte characters, the storage is still 2,147,483,647 bytes. Depending on the character string, the storage size may be less than 2,147,483,647 bytes. nchar and nvarchar Character data types that are either fixed-length ( nchar ) or variable-length ( nvarchar ) Unicode data and use the UNICODE UCS-2 character set. 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 .
  30. binary and varbinary Binary data types of either fixed-length (binary) or variable-length (varbinary). binary [ ( n ) ] Fixed-length binary data of n bytes. n must be a value from 1 through 8,000. Storage size is n +4 bytes. varbinary [ ( n ) ] Variable-length binary data of n bytes. n must be a value from 1 through 8,000. Storage size is the actual length of the data entered + 4 bytes, not n bytes. The data entered can be 0 bytes in length. The SQL-92 synonym for varbinary is binary varying. image Variable-length binary data from 0 through 231-1 (2,147,483,647) bytes.
  31. 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 = &apos;xyz&apos;, 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. 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 &lt;&gt; 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, &apos;abc&apos; + &apos;&apos; + &apos;def&apos; is stored as &apos;abcdef&apos;. However, if the sp_dbcmptlevel compatibility level setting is 65, empty constants are treated as a single blank character and &apos;abc&apos; + &apos;&apos; + &apos;def&apos; is stored as &apos;abc def&apos;. 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.
  32. Operadores aritméticos Los operadores aritméticos realizan operaciones matemáticas con dos expresiones de cualquiera de los tipos de datos de la categoría del tipo de datos numérico. Para obtener más información acerca de las categorías de los tipos de datos, consulte Convenciones de sintaxis de Transact-SQL . OperadorSignificado + (suma) Suma. - (resta) Resta. (multiplicación)Multiplicación. / (división) División. % (módulo) Devuelve el resto entero de una división. Por ejemplo, 12 % 5 = 2 porque el resto de 12 dividido entre 5 es 2. También se pueden utilizar los operadores de suma (+) y resta (-) para realizar operaciones aritméticas sobre valores datetime y smalldatetime . Para obtener más información acerca de la precisión y la escala de los resultados en las operaciones aritméticas, consulte Precisión, escala y longitud .
  33. Operador de asignación Transact-SQL tiene un operador de asignación, el signo igual (=). En este ejemplo, se crea la variable @MyCounter . Entonces, el operador de asignación establece @MyCounter al valor devuelto por una expresión. DECLARE @MyCounter INT SET @MyCounter = 1 El operador de asignación también se puede utilizar para establecer la relación entre un encabezado de columna y la expresión 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 = &apos;xyz&apos;, SecondColumnHeading = ProductID FROM Products GO
  34. Operadores bit a bit Los operadores bit a bit realizan tratamientos de bits entre dos expresiones de cualquiera de los tipos de datos de la categoría del tipo de datos enteros. Los operandos para los operadores bit a bit pueden ser de cualquiera de los tipos de datos de las categorías entero o cadena binaria (excepto el tipo de datos image ), con la excepción de que ambos operandos no pueden ser de cualquiera de los tipos de datos de la categoría cadena binaria. La siguiente tabla muestra los tipos de datos de operando admitidos.
  35. Operadores de comparación Los operadores de comparación 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 comparación). 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. &gt; (Mayor que) Compara dos expresiones (es un operador de comparación). 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. &lt; (Menor que) Compara dos expresiones (es un operador de comparación). Cuando se comparan expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda 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. &gt;= (mayor que o igual a) Compara dos expresiones (es un operador de comparación). 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. &lt;= (menor que o igual a) Compara dos expresiones (es un operador de comparación). 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. &lt;&gt; (distinto de) Compara dos expresiones (es un operador de comparación). 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 expresión es distinta de otra expresión (es un operador de comparación). Funciona de la misma forma que el operador de comparación &lt;&gt; (distinto de). !&lt; (no menor que) Compara dos expresiones (es un operador de comparación). Cuando se comparan expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda no tiene un valor menor que el 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. !&gt; !&gt; (no mayor que) Compara dos expresiones (es un operador de comparación). Cuando se comparan expresiones no nulas, el resultado es TRUE (verdadero) si el operando de la izquierda no tiene un valor mayor que el 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. El resultado del operador de comparación 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 cláusula WHERE para filtrar las filas que cumplen las condiciones de búsqueda 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 &lt;&gt; 0) SELECT * FROM Products WHERE ProductID = @MyProduct GO
  36. 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 instrucción se utiliza más de un operador lógico, primero se evalúan los operadores AND. Puede cambiar el orden de la evaluación si utiliza paréntesis. ANY Compara un valor escalar con un conjunto de valores de una sola columna. Para obtener más información, 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 algún 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 comodín. Durante la coincidencia de patrones, los caracteres regulares deben coincidir exactamente con los caracteres especificados en la cadena de caracteres. Sin embargo, los caracteres comodín pueden coincidir con fragmentos arbitrarios de la cadena de caracteres. Con los caracteres comodín el operador LIKE es más flexible que los operadores de comparación 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 instrucción se utiliza más de un operador lógico, los operadores OR se evalúan después de los operadores AND. Sin embargo, se puede cambiar el orden de evaluación utilizando paréntesis. SOME | ANY Compara un valor escalar con un conjunto de valores de una sola columna.
  37. Operador de concatenación de cadenas El operador de concatenación de cadenas permite concatenar cadenas con el signo de suma (+), también conocido como operador de concatenación de cadenas. Cualquier otro tratamiento de cadenas se controla a través de funciones de cadenas como SUBSTRING. De manera predeterminada, una cadena vacía se interpreta como tal cadena vacía en INSERT o en instrucciones de asignación con datos de tipo varchar . En la concatenación de datos de tipo varchar , char o text la cadena vacía se interpreta como tal cadena vacía. Por ejemplo, &apos;abc&apos; + &apos;&apos; + &apos;def&apos; se almacena como &apos;abcdef&apos;. Sin embargo, si el nivel de compatibilidad sp_dbcmptlevel es 65, las constantes vacías se tratan como caracteres en blanco y &apos;abc&apos; + &apos;&apos; + &apos;def&apos; se almacena como &apos;abc def&apos;. Para obtener más información acerca de la interpretación de cadenas vacías, consulte sp_dbcmptlevel . Cuando se concatenan dos cadenas de caracteres, la intercalación de la expresión del resultado se configura según las reglas de la precedencia de intercalación. Para obtener más información, consulte Precedencia de intercalación .
  38. Los operadores + (positivo) y - (negativo) se pueden utilizar en cualquier expresión de cualquiera de los tipos de datos de la categoría del tipo de datos numérico. El operador ~ (operador bit a bit NOT) sólo se puede utilizar en expresiones de cualquiera de los tipos de datos de la categoría del tipo de datos entero.
  39. Observaciones SQL Server puede tener hasta dos mil millones de tablas por cada base de datos y 1.024 columnas por tabla. El número de filas y el tamaño total de la tabla está limitado solamente por el espacio de almacenamiento disponible. El número máximo 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 un mensaje de advertencia. Al intentar insertar más de 8.060 bytes en tal fila o actualizar una fila de tal forma que su tamaño total de fila exceda de 8.060, se genera un mensaje de error y no se puede realizar la instrucción. Las instrucciones CREATE TABLE que incluyen una columna sql_variant pueden generar la siguiente advertencia: The total row size ( xx ) for table &apos; yy &apos; exceeds the maximum number of bytes per row (8060). Rows that exceed the maximum number of bytes will not be added. Esta advertencia se produce porque sql_variant puede tener una longitud máxima de 8016 bytes. Cuando una columna sql_variant contiene valores cercanos a la longitud máxima, puede superar el límite del tamaño máximo de la fila. Cada tabla puede contener un máximo de 249 índices no agrupados y 1 índice agrupado. Éstos incluyen los índices generados para admitir las restricciones PRIMARY KEY y UNIQUE definidas para la tabla. SQL Server no impone un orden en que DEFAULT, IDENTITY, ROWGUIDCOL o las restricciones de columna se especifican en una definición de columna.
  40. 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 opción INTO de la instrucción 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 instrucción INSERT. Para obtener más información, consulte table . Un nombre de cuatro partes generado con la función OPENDATASOURCE como la parte de nombre de servidor, también 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 automáticamente valores de columnas con el tipo de datos uniqueidentifier . Durante una operación de inserción, se puede utilizar variables con un tipo de datos uniqueidentifier y constantes de cadena con la forma xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los guiones, donde x es un dígito hexadecimal, en el intervalo 0-9, o a-f) para columnas uniqueidentifier . Por ejemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF es un valor válido para una variable o columna uniqueidentifier . Utilice la función NEWID() para obtener un identificador exclusivo global (GUID).
  41. 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 opción INTO de la instrucción 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 instrucción INSERT. Para obtener más información, consulte table . Un nombre de cuatro partes generado con la función OPENDATASOURCE como la parte de nombre de servidor, también 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 automáticamente valores de columnas con el tipo de datos uniqueidentifier . Durante una operación de inserción, se puede utilizar variables con un tipo de datos uniqueidentifier y constantes de cadena con la forma xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 caracteres incluidos los guiones, donde x es un dígito hexadecimal, en el intervalo 0-9, o a-f) para columnas uniqueidentifier . Por ejemplo, 6F9619FF-8B86-D011-B42D-00C04FC964FF es un valor válido para una variable o columna uniqueidentifier . Utilice la función NEWID() para obtener un identificador exclusivo global (GUID).
  42. SELECT Obtiene filas de la base de datos y permite realizar la selección de una o varias filas o columnas de una o varias tablas. La sintaxis completa de la instrucción SELECT es compleja, aunque las cláusulas 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 ] ]
  43. Cláusula INTO Crea una nueva tabla e inserta en ella las filas resultantes de la consulta. El usuario que ejecuta una instrucción SELECT con la cláusula INTO debe tener permiso CREATE TABLE en la base de datos de destino. No se puede utilizar SELECT...INTO con la cláusula COMPUTE. Para obtener más información, consulte Transacciones y Transacciones explícitas . Puede utilizar SELECT INTO para crear una definición de tabla idéntica (con diferente nombre de tabla) sin datos mediante la definición de una condición FALSE en la cláusula WHERE.
  44. Devuelve la suma de todos los valores o de sólo los valores DISTINCT en la expresión especificada. SUM sólo puede utilizarse con columnas numéricas. Los valores nulos se pasan por alto.
  45. Cláusula WHERE Especifica una condición de búsqueda para restringir las filas que se van a devolver. Sintaxis [ WHERE &lt; search_condition &gt; | &lt; old_outer_join &gt; ] &lt; old_outer_join &gt; ::=      column_name { * = | = * } column_name Argumentos &lt;search_condition&gt; Limita las filas devueltas en el conjunto de resultados mediante el uso de predicados. No hay límite en el número de predicados que se pueden incluir en una condición de búsqueda. Para obtener más información acerca de las condiciones de búsqueda y los predicados, consulte Condición de búsqueda . &lt; old_outer_join &gt; Especifica una combinación externa con la sintaxis antigua específica del producto y la cláusula WHERE. Se utiliza el operador *= para especificar una combinación externa izquierda y el operador =* para especificar una combinación externa derecha. Este ejemplo especifica una combinación externa izquierda en que las filas de Tab1 que no cumplen la condición especificada se incluyen en el conjunto de resultados: SELECT Tab1.name, Tab2.id FROM Tab1, Tab2 WHERE Tab1.id *=Tab2.id
  46. Cláusula WHERE Especifica una condición de búsqueda para restringir las filas que se van a devolver. Sintaxis [ WHERE &lt; search_condition &gt; | &lt; old_outer_join &gt; ] &lt; old_outer_join &gt; ::=      column_name { * = | = * } column_name Argumentos &lt;search_condition&gt; Limita las filas devueltas en el conjunto de resultados mediante el uso de predicados. No hay límite en el número de predicados que se pueden incluir en una condición de búsqueda. Para obtener más información acerca de las condiciones de búsqueda y los predicados, consulte Condición de búsqueda . &lt; old_outer_join &gt; Especifica una combinación externa con la sintaxis antigua específica del producto y la cláusula WHERE. Se utiliza el operador *= para especificar una combinación externa izquierda y el operador =* para especificar una combinación externa derecha. Este ejemplo especifica una combinación externa izquierda en que las filas de Tab1 que no cumplen la condición especificada se incluyen en el conjunto de resultados: SELECT Tab1.name, Tab2.id FROM Tab1, Tab2 WHERE Tab1.id *=Tab2.id
  47. LIKE Determina si una cadena de caracteres dada coincide o no con un determinado modelo. Un modelo puede incluir caracteres normales y caracteres comodín. Durante la coincidencia de patrones, los caracteres regulares deben coincidir exactamente con los caracteres especificados en la cadena de caracteres. Sin embargo, los caracteres comodín pueden coincidir con fragmentos arbitrarios de la cadena de caracteres. Con los caracteres comodín el operador LIKE es más flexible que los operadores de comparación 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.
  48. Funciones de agregado Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo valor. Con la excepción de COUNT, las funciones de agregado omiten los valores NULL. Las funciones de agregado se suelen utilizar con la cláusula GROUP BY de la instrucción SELECT. 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 más información acerca del determinismo de funciones, consulte Funciones deterministas y no deterministas . Las funciones de agregado sólo se aceptan como expresiones en: La lista de selección de una instrucción SELECT (en una subconsulta o en la consulta externa). Cláusulas COMPUTE o COMPUTE BY. Cláusulas HAVING. AVG Devuelve la media de los valores de un grupo. Los valores nulos se pasan por alto COUNT Devuelve el número de elementos de un grupo. MIN Devuelve el valor mínimo de la expresión. MAX Devuelve el valor máximo de la expresión. SUM Devuelve la suma de todos los valores o de sólo los valores DISTINCT en la expresión especificada. SUM sólo puede utilizarse con columnas numéricas. Los valores nulos se pasan por alto. STDEV Devuelve la desviación típica estadística de todos los valores de la expresión especificada.
  49. Funciones matemáticas Estas funciones escalares realizan un cálculo, normalmente basado en valores de entrada proporcionados como argumentos, y devuelven un valor numérico. ABS DEGREES RAND ACOS EXP ROUND ASIN FLOOR SIGN ATAN LOG SIN ATN2 LOG10 SQUARE CEILING PI SQRT COS POWER TANCOTRADIANS  Nota   Las funciones aritméticas, como ABS, CEILING, DEGREES, FLOOR, POWER, RADIANS y SIGN, devuelven un valor del mismo tipo de datos que el valor de entrada. Las funciones trigonométricas 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 matemáticas, excepto RAND, son funciones deterministas; devuelven siempre el mismo resultado cada vez que se les llama con un conjunto específico de valores de entrada. RAND es determinista sólo cuando se especifica un parámetro de inicialización. Para obtener más información acerca del determinismo de funciones, consulte Funciones deterministas y no deterministas. ABS Devuelve el valor absoluto, positivo de la expresión numérica dada. RAND Devuelve un valor float aleatorio de 0 a 1. SIN Devuelve el seno trigonométrico del ángulo especificado (en radianes) en una expresión numérica aproximada ( float ). COS Función matemática que devuelve el coseno trigonométrico del ángulo dado (en radianes) en la expresión de entrada. TAN Devuelve la tangente de la expresión de entrada. COT Función matemática que devuelve la cotangente trigonométrica del ángulo especificado (en radianes) en la expresión float . SQRT Devuelve la raíz cuadrada de la expresión especificada. POWER Devuelve el valor de la expresión indicada elevada a la potencia especificada. CEILING Devuelve el entero más pequeño mayor o igual que la expresión numérica dada. FLOOR Devuelve el entero más grande menor o igual que la expresión numérica dada. EXP Devuelve el valor exponencial de la expresión float dada.
  50. Funciones de cadena Estas funciones escalares realizan una operación sobre una cadena de entrada y devuelven un valor de cadena o un valor numérico. 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 más información acerca del determinismo de funciones, consulte Funciones deterministas y no deterministas. LEFT Devuelve la parte de una cadena de caracteres que comienza en un número de caracteres especificado a partir de la izquierda. RIGHT Devuelve la parte de una cadena de caracteres que comienza en el número de caracteres especificado en integer_expression a partir de la derecha. LTRIM Devuelve una expresión de caracteres después de quitar los espacios en blanco a la izquierda. RTRIM Devuelve una cadena de caracteres después de truncar todos los espacios en blanco a la derecha. REPLACE Reemplaza por una tercera expresión todas las apariciones de la segunda expresión de cadena proporcionada en la primera expresión de cadena. SUBSTRING Devuelve parte de una expresión de caracteres, binaria, de texto o de imagen. Para obtener más información acerca de los tipos de datos válidos de Microsoft® SQL Server™ que pueden utilizarse con esta función, consulte Tipos de datos. STUFF Elimina el número de caracteres especificado e inserta otro conjunto de caracteres en un punto de inicio indicado. UPPER Devuelve una expresión de tipo carácter con datos de carácter en minúscula convertidos a mayúscula. LOWER Devuelve una expresión de caracteres después de convertir a minúsculas los datos de caracteres que estén en mayúsculas. LEN Devuelve el número de caracteres, en lugar del número de bytes, de la expresión de cadena dada, excluidos los espacios finales en blanco. CHAR Una función de cadena que convierte un código ASCII int en un carácter. REVERSE Devuelve invertida una expresión de carácter.
  51. Funciones de fecha y hora Estas funciones escalares realizan una operación sobre un valor de fecha y hora de entrada, y devuelven un valor de cadena, numérico o de fecha y hora. Esta tabla presenta las funciones de fecha y hora y su propiedad determinista. Para obtener más información acerca del determinismo de funciones, consulte Funciones deterministas y no deterministas. DATEADD Devuelve un valor datetime nuevo que se basa en la suma de un intervalo a la fecha especificada. DATEDIFF Devuelve el número de límites de fecha y hora que hay entre dos fechas especificadas. GETDATE Devuelve la fecha y hora actuales del sistema en el formato interno estándar de Microsoft® SQL Server™ para los valores DAY Devuelve un entero que representa la parte del día 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 año de la fecha especificada.
  52. Cláusula ORDER BY Especifica el orden del conjunto de resultados. La cláusula ORDER BY no es válida en vistas, funciones en línea, tablas derivadas ni subconsultas, salvo que se especifique también TOP. Sintaxis [ ORDER BY { order_by_expression [ ASC | DESC ] }     [ , ... n ] ] Argumentos order_by_expression Especifica la columna según 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 expresión o un entero no negativo que representa la posición del nombre, alias o expresión en la lista de selección. Se puede especificar varias columnas de orden. La secuencia de columnas de orden en la cláusula ORDER BY define la estructura del conjunto ordenado de resultados. La cláusula ORDER BY puede incluir elementos que no aparecen en la lista de selección. Sin embargo, si se especifica SELECT DISTINCT, o si la instrucción SELECT contiene un operador UNION, las columnas ordenadas deben aparecer en la lista de selección. Además, cuando la instrucción SELECT contiene un operador UNION, los nombres o los alias de las columnas deben ser los especificados en la primera lista de selección. Nota   Las columnas de tipo ntext , text o image no se pueden utilizar en una cláusula ORDER BY. ASC Indica que los valores de la columna especificada se deben ordenar de manera ascendente, desde el valor más bajo al más alto. DESC Indica que los valores de la columna especificada se deben ordenar de manera descendente, desde el valor más alto al valor más bajo. Los valores NULL se tratan como los valores más bajos posibles. No hay límite para el número de elementos en una cláusula ORDER BY. Sin embargo, existe un límite de 8060 bytes en el tamaño de fila de las tablas de trabajo intermedias, necesarias para las operaciones de ordenación. Este número limita el tamaño total de las columnas especificadas en una cláusula ORDER BY.
  53. 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 instrucción UPDATE. Un nombre con cuatro partes, construido con la función 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 actualización de una fila infringe una restricción o una regla, si infringe la configuración de valores NULL para la columna o si el nuevo valor es de un tipo de datos incompatible, se cancela la instrucción, se devuelve un error y no se actualiza ningún registro. Cuando una instrucción UPDATE encuentra un error aritmético (desbordamiento, división por cero o un error de dominio) durante la evaluación de la expresión, la actualización no se lleva a cabo. El resto del lote no se ejecuta y se devuelve un mensaje de error. Si una actualización de una o varias columnas que participan en un índice agrupado provoca que el tamaño del índice agrupado y de la fila sea superior a 8.060 bytes, la actualización falla y se devuelve un mensaje de error. Cuando se define un desencadenador INSTEAD-OF en acciones UPDATE en una tabla, se ejecuta el desencadenador en lugar de la instrucción UPDATE. Las versiones anteriores de SQL Server sólo admitían desencadenadores AFTER en INSERT y otras instrucciones de modificación de datos.
  54. DELETE Es posible utilizar DELETE en el cuerpo de una función 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 función OPENDATASOURCE como el nombre de servidor, también se puede utilizar como un origen de tabla en todos los lugares donde pueda aparecer un nombre de tabla. La instrucción 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 restricción FOREIGN KEY. Si la instrucción DELETE quita varias filas y cualquiera de las filas eliminadas infringe un desencadenador o restricción, se cancela la instrucción, 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 instrucción DELETE. Las versiones anteriores de SQL Server sólo admitían desencadenadores AFTER en DELETE y otras instrucciones de modificación de datos. Cuando una instrucción DELETE encuentra un error aritmético (desbordamiento, división entre cero o error de dominio) al evaluar una expresión, 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 configuración de la opción SET ROWCOUNT se ignora en las instrucciones DELETE con tablas remotas y vistas divididas remotas y locales. Si desea eliminar todas las filas de una tabla, TRUNCATE TABLE es más rápido que DELETE. DELETE quita físicamente las filas de una en una y graba cada fila eliminada en el registro de transacciones. TRUNCATE TABLE cancela la asignación de todas las páginas asociadas con la tabla. Por este motivo, TRUNCATE TABLE es más rápido y requiere menos espacio en el registro de transacciones que DELETE. TRUNCATE TABLE es funcionalmente equivalente a DELETE sin cláusula 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.
  55. Procedimientos almacenados de SQL Un procedimiento almacenado es un grupo de instrucciones Transact-SQL compiladas en un único plan de ejecución. Los procedimientos almacenados de Microsoft® SQL Server™ 2000 devuelven datos de cuatro formas distintas: Parámetros de salida, que pueden devolver datos (por ejemplo, un valor entero o de carácter) o una variable de cursor (los cursores son conjuntos de resultados que pueden devolver filas de una en una). Códigos de retorno, que siempre son un valor entero. Un conjunto de resultados por cada instrucción SELECT contenida en el procedimiento almacenado o en cualquier otro procedimiento almacenado invocado por el procedimiento almacenado original. Un cursor global al que se puede hacer referencia desde fuera del procedimiento almacenado. Los procedimientos almacenados contribuyen a conseguir una implementación coherente de una lógica entre las aplicaciones. Las instrucciones SQL y la lógica necesarias para ejecutar una tarea de ejecución frecuente se pueden diseñar, escribir y probar de una sola vez en un procedimiento almacenado. Así, las aplicaciones que necesiten ejecutar dicha tarea sólo tienen que ejecutar el procedimiento almacenado. La escritura de la lógica comercial en un solo procedimiento almacenado también ofrece un único punto de control para asegurar la correcta ejecución de dichas reglas comerciales. Los procedimientos almacenados también pueden mejorar el rendimiento. Muchas tareas están implementadas como series de instrucciones SQL. La lógica condicional aplicada a los resultados de las primeras instrucciones SQL determina las instrucciones SQL que se ejecutan seguidamente. Si dichas instrucciones SQL y la lógica condicional se escriben en un procedimiento almacenado, forman parte de un único plan de ejecución en el servidor. No es necesario devolver los resultados al cliente para aplicar la lógica condicional; todo el trabajo se realiza en el servidor. La instrucción IF de este ejemplo muestra la inclusión de lógica condicional en un procedimiento para evitar el envío de un conjunto de resultados a la aplicación: IF (@QuantityOrdered &lt; (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 sólo una instrucción EXECUTE o CALL que contenga el nombre del procedimiento y los valores de los parámetros. Los procedimientos almacenados también aíslan 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; sólo tienen que ejecutar los procedimientos almacenados que implementan las funciones diarias de su trabajo. Una ilustración 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 administración (como CREATE TABLE) o los procedimientos almacenados del sistema, y nunca se tienen que actualizar directamente las tablas del sistema.
  56. Crear base de datos y realizar consultas en AdventureWorks o Northwinds