Introducción al SQL Server


Objetivo.

Obtener una vista general del gestor de base de datos Microsoft SQL Server.

Introducción.

SQL server está diseñado para trabajar con grandes cantidades de información y la capacidad de cumplir con los requisitos de los procesos de información para aplicaciones comerciales y sitios Web.

SQL Server es un sistema administrador para Bases de Datos relacionales basadas en la arquitectura Cliente / Servidor (RDBMS) que usa Transact-SQL para mandar peticiones entre un cliente y el SQL Server.

clip_image002

Arquitectura cliente / servidor.

Se basa en un conjunto de nodos que realizan la función clientes y de otros que realizan la función de servidores. La lógica del negocio está distribuida entre clientes y el servidor. Los clientes llaman a los servicios. Es un modelo de sistemas distribuido que muestra como los datos y el procesamiento se distribuyen a lo largo de varios procesadores. Está compuesto por:

– Conjunto de Servidores independientes. Ofrecen servicios a otros subsistemas. Servidor de la BD, servidor de las reglas del negocio

– Conjunto de clientes. Llaman a los servicios de los servidores. Por lo general son subsistemas. Existen varias ocurrencias de un programa cliente. Concurrencia.

– Red de Datos. Permite a los clientes acceder a estos servicios.

La arquitectura cliente/servidor se clasifica en:

– Cliente Delgado. Todas las consultas y la lógica del negocio están en el servidor de datos.

– Cliente Grueso. Todas las consultas y la lógica del negocio están en el cliente.

– Cliente/Servidor Distribuido. Servidores que están conectados que a la vez hacen de cliente y servidor.

SQL Server usa la arquitectura Cliente / Servidor para separar la carga de trabajo en tareas que corran en computadoras tipo Servidor y tareas que corran en computadoras tipo Cliente:

– El Cliente es responsable de la parte lógica y de presentar la información al usuario. Generalmente, el cliente corre en una o más computadoras.

– SQL Server administra Bases de Datos y distribuye los recursos disponibles del servidor (tales como memoria, operaciones de disco, entre otros) entre las múltiples peticiones.

Historia de SQL-Server.

Historia de SQL Server

Versión

Año

Nombre de la versión

Code Name

1.0 (OS/2)

1989

SQL Server 1.0

4.21 (NT)

1993

SQL Server 4.21

6.0

1995

SQL Server 6.0

SQL95

6.5

1996

SQL Server 6.5

Hydra

7.0

1998

SQL Server 7.0

Sphinx

1999

SQL Server Herramientas OLAP

Platón

8.0

2000

SQL Server 2000

Shiloh

8.0

2003

SQL Server 2000 para 64 bits

Liberty

9.0

2005

SQL Server 2005

Yukon

10.0

2008

SQL Server 2008

katmai

La base de código, para MS SQL Server (antes a la versión 7.0) se originó en Sybase SQL Server y fue el inicio de Microsoft para el mercado a nivel de empresa de base de datos, compitiendo contra Oracle, IBM y Sybase en sí mismo. Microsoft, Sybase y Ashton-Tate originalmente se unieron para crear y la primera versión denominada SQL Server 1.0 para OS/2 (alrededor de 1989) que era esencialmente similar a Sybase SQL Server 3.0 en UNIX en el mercado. Microsoft SQL Server 4.2 se lanzó alrededor de 1992 (disponible con Microsoft OS/2 versión 1.3). Al mismo tiempo con Windows NT 3.1, fue liberado Microsoft SQL Server 4.21 para Windows NT. Microsoft SQL Server v6.0 fue la primera versión diseñada para NT.

En el momento en que Windows NT fue liberado, Sybase y Microsoft dividen caminos y cada uno persigue sus propios planes de diseño y comercialización. Microsoft  negoció derechos exclusivos a todas las versiones de SQL Server escrito para sistemas operativos Microsoft. Más tarde, Sybase cambió el nombre de su producto a Adaptive Server Enterprise para evitar confusiones con Microsoft SQL Server. Hasta 1994, Microsoft SQL Server llevó tres avisos de copyright de Sybase como una indicación de su origen.

SQL Server 7.0 fue una reescritura del código heredado de Sybase. Luego llegó SQL Server 2000, que fue la primera edición a iniciarse en una variante para la arquitectura IA-64.

En los ocho años desde la versión anterior de la actual de Microsoft  SQL Server (SQL Server 2000), se han dado avances en varios sistemas complementarios que se empaquetan con SQL Server 2005, las herramientas IDE de cliente y rendimiento. Estas incluyen: una herramienta ETL (SQL Server Integration Services o SSIS ), un servidor de informes, un servidor OLAP y minería de datos ( Analysis Services ) y varias tecnologías de mensajería, específicamente Service Broker y servicios de notificación.

SQL Server 2005 (con nombre de código Yukon), publicado en octubre de 2005, es el sucesor de SQL Server 2000. Se incluyeron la compatibilidad nativa para administrar los datos XML, además de datos relacionales. Para este propósito, define un tipo de datos XML que podría utilizarse como un tipo de datos en columnas de la base de datos o como literales en consultas. SQL Server 2005 también permite a un servidor de base de datos estar disponible sobre servicios web mediante paquetes TDS encapsulados dentro de las solicitudes SOAP (protocolo). Cuando se tiene acceso a los datos sobre los servicios web, los resultados se devuelven como XML.
Para datos relacionales, T-SQL ha sido ampliado con control de las características y apoyo para consultas recursivas de errores. SQL Server 2005 también se ha mejorado con nuevos algoritmos de indexación y mejores sistemas de recuperación de error. Las particiones en las tablas e índices admiten de forma nativa, por lo que escalado una base de datos en un clúster es más fácil. CLR de SQL se introdujo con SQL Server 2005 para dejarlo a integrar con el .NET Framework.

La versión actual de SQL Server, SQL Server 2008, (denominada «Katmai»,) fue liberado el 6 de agosto de 2008, y pretende hacer gestión de datos, autónomos de organizar y mantener, para proporcionar un tiempo de inactividad en cero. SQL Server 2008 incluirá también apoyo a datos estructurados y semiestructurados, incluyendo los formatos de medios de comunicación digital de imágenes, audio, vídeo y otros datos multimedia.

Otros nuevos tipos de datos que se incluyen son los de fecha y el de hora separados, así como datos espaciales
La funcionalidad de búsqueda de texto ha sido integrada con el motor de base de datos, que simplifica la gestión y mejora el rendimiento.

SQL Server incluye características de compresión, también incluye el Gobernador de recursos que permite reservar los recursos para ciertos usuarios o los flujos de trabajo. También incluye capacidades para cifrado transparente de datos, así como la compresión de las copias de seguridad. SQL Server 2008 apoya el marco de la entidad de ADO.NET y la definición de herramientas, replicación y datos de informes se construirá en el modelo entity framework. La versión de SQL Server Management Studio incluida con SQL Server 2008 admite IntelliSense para las consultas SQL contra un motor de base de datos SQL Server 2008. SQL Server 2008 también disponer las bases de datos a través de los proveedores de Windows PowerShell y funcionalidad de gestión disponible como cmdlets, para que el servidor y todas las instancias que se está ejecutando pueden administrarse desde Windows PowerShell.

Sistema administrador para bases de datos relacionales (rdbms):

El RDBMS es responsable de:

– Mantener las relaciones entre la información y la Base de Datos.

– Asegurarse de que la información es almacenada correctamente, es decir, que las reglas que definen las relaciones ente los datos no sean violadas.

– Recuperar toda la información en un punto conocido en caso de que el sistema falle.

Transact – SQL:

Transact-SQL es el lenguaje que se utiliza para administrar instancias del SQL Server Database Engine (Motor de base de datos de SQL Server), para crear y administrar objetos de base de datos, y para insertar, recuperar, modificar y eliminar datos. Transact-SQL es una extensión del lenguaje definido en los estándares de SQL publicados por International Standards Organization (ISO) y American National Standards Institute (ANSI).

Componentes de SQL Server.

SQL Server Database Engine. SQL Server Database Engine (Motor de base de datos de SQL Server) incluye Database Engine (Motor de base de datos), el servicio principal para almacenar, procesar y proteger datos; también incluye replicación, búsqueda de texto completo y herramientas para administrar datos XML y relacionales.

Analysis Services. Analysis Services incluye las herramientas para crear y administrar aplicaciones de procesamiento analítico en línea (OLAP) y de minería de datos.

Reporting Services. Reporting Services incluye componentes de servidor y de cliente para crear, administrar e implementar informes tabulares, matriciales, gráficos y de forma libre. Reporting Services también es una plataforma extensible que puede utilizarse para desarrollar aplicaciones de informes.

Integration Services. Integration Services es un conjunto de herramientas gráficas y objetos programables para mover, copiar y transformar datos.

Motor de Base de Datos.

Para implementar una aplicación con el motor de base de datos se debe tomar en cuenta las siguientes tareas que se puede realizar con este:

– Diseñar y crear una base de datos que contenga las tablas relacionales o los documentos XML que el sistema necesita.

– Implementar sistemas para obtener acceso y cambiar los datos almacenados en la base de datos, lo que incluye implementar los sitios Web o las aplicaciones que funcionan con los datos, así como crear procedimientos que utilicen las herramientas y utilidades de SQL Server para trabajar con los datos.

– Aplicar los sistemas implementados en la organización o en los clientes.

– Proporcionar soporte técnico administrativo diario para optimizar el rendimiento de la base de datos.

Procesamiento de instrucciones SQL.

Una instrucción SELECT no es de procedimiento, no expone los pasos exactos que el servidor de la base de datos debe utilizar para recuperar los datos solicitados. Esto significa que el servidor de la base de datos debe analizar la instrucción para determinar la manera más eficaz de extraer los datos solicitados. Este proceso se denomina optimizar la instrucción SELECT. El componente que lo lleva a cabo se denomina optimizador de consultas. La entrada al optimizador consta de la consulta, el esquema de la base de datos (definiciones de tabla e índice) y las estadísticas de base de datos. La salida del optimizador es un plan de ejecución de la consulta, en ocasiones denominado plan de la consulta o simplemente plan.

Una instrucción SELECT define únicamente los siguientes elementos:

– El formato del conjunto de resultados.

– Las tablas que contienen los datos de origen.

– Cómo se relacionan lógicamente las tablas para la instrucción SELECT.

– Las condiciones que deben cumplir las filas de las tablas de origen para satisfacer los requisitos de la instrucción SELECT.

Un plan de ejecución de consulta es una definición de los siguientes elementos:

– La secuencia en la que se tiene acceso a las tablas de origen.
Normalmente, hay muchas secuencias diferentes en las que el servidor de la base de datos puede tener acceso a las tablas base para generar el conjunto de resultados. Por ejemplo, si la instrucción SELECT hace referencia a tres tablas, el servidor de la base de datos podría tener acceso primero a TablaA, utilizar datos de TablaA para extraer las filas que coincidan con las de TablaB y, finalmente, utilizar datos de TablaB para extraer datos de TablaC. Las demás secuencias en las que el servidor de base de datos podría tener acceso a las tablas son:
TablaC, TablaB, TablaA
TablaB, TablaA, TablaC
TablaB, TablaC, TablaA
TablaC, TablaA, TablaB

– Los métodos que se utilizan para extraer los datos de cada tabla.
Por lo general, hay métodos diferentes para tener acceso a los datos de cada tabla. Si solo se necesitan unas cuantas filas con valores de clave específicos, el servidor de la base de datos puede utilizar un índice. Si se necesitan todas las filas de una tabla, el servidor de la base de datos puede omitir los índices y realizar un recorrido de la tabla. Si se necesitan todas las filas de la tabla, pero hay un índice cuyas columnas de clave están ordenadas con ORDER BY, realizar un recorrido del índice en lugar de un recorrido de la tabla puede evitar otra ordenación del conjunto de resultados. Si la tabla es muy pequeña, el recorrido de la misma puede ser el método más eficaz para la mayoría de los accesos a la tabla.

El proceso de selección de un plan de ejecución entre varios planes posibles se conoce como optimización. El optimizador de consultas es uno de los componentes más importantes de un sistema de base de datos SQL. Mientras que parte de la carga de trabajo se debe al análisis de la consulta y selección de un plan por parte del optimizador de consultas, esta carga suele reducirse cuando dicho optimizador elige un plan de ejecución eficaz. Por ejemplo, se pueden dar a dos constructoras planos idénticos para una casa. Si una de las constructoras tarda unos días más en planear cómo construirá la casa y la otra comienza a construir inmediatamente sin planear, la que ha planeado su proyecto probablemente terminará antes.

El optimizador de consultas de SQL Server es un optimizador basado en el costo. Cada plan de ejecución posible tiene asociado un costo en términos de la cantidad de recursos del equipo que se utilizan. El optimizador de consultas debe analizar los planes posibles y elegir el de menor costo estimado. Algunas instrucciones SELECT complejas tienen miles de planes de ejecución posibles. En estos casos, el optimizador de consultas no analiza todas las combinaciones posibles. En lugar de esto, utiliza algoritmos complejos para encontrar un plan de ejecución que tenga un costo razonablemente cercano al mínimo posible.

El optimizador de consultas de SQL Server elige, además del plan de ejecución con el costo de recursos mínimo, el plan que devuelve resultados al usuario con un costo razonable de recursos y con la mayor brevedad posible. Por ejemplo, el procesamiento de una consulta en paralelo suele utilizar más recursos que el procesamiento en serie, pero completa la consulta más rápidamente. El optimizador de SQL Server utilizará un plan de ejecución en paralelo para devolver resultados si esto no afecta negativamente a la carga del servidor.

El optimizador confía en las estadísticas de distribución cuando calcula los costos de recursos de métodos diferentes para extraer información de una tabla o un índice. Las estadísticas de distribución se mantienen para las columnas y los índices. Indican la posibilidad de seleccionar los valores de un índice o de una columna determinados. Por ejemplo, en una tabla que representa automóviles, muchos automóviles tienen el mismo fabricante, pero cada uno dispone de un único número de identificación de vehículo (NIV). Un índice del NIV es más selectivo que un índice del fabricante. Si las estadísticas de los índices no están actualizadas, puede que el optimizador de consultas no realice la mejor elección para el estado actual de la tabla.

El optimizador de consultas es importante porque permite que el servidor de la base de datos se ajuste dinámicamente a las condiciones cambiantes de la base de datos, sin necesitar la entrada de un programador o de un administrador de base de datos. Esto permite a los programadores centrarse en la descripción del resultado final de la consulta. Pueden estar seguros de que el optimizador de consultas creará un plan de ejecución eficaz para el estado de la base de datos cada vez que se ejecuta la instrucción.

Procesar una instrucción Select.

Los pasos básicos que SQL Server utiliza para procesar una única instrucción SELECT incluyen lo siguiente:

  1. El analizador examina la instrucción SELECT y la divide en unidades lógicas como palabras clave, expresiones, operadores e identificadores.
  2. Se genera un árbol de la consulta, a veces denominado árbol de secuencia, que describe los pasos lógicos que se requieren para transformar los datos de origen en el formato que necesita el conjunto de resultados.
  3. El optimizador de consultas analiza diferentes formas de acceso a las tablas de origen. A continuación, selecciona la serie de pasos que devuelve los resultados de la forma más rápida utilizando el menor número posible de recursos. El árbol de la consulta se actualiza para registrar esta serie exacta de pasos. La versión final y optimizada del árbol de la consulta se denomina plan de ejecución.
  4. El motor relacional comienza a ejecutar el plan de ejecución. A medida que se procesan los pasos que necesitan datos de las tablas base, el motor relacional solicita al motor de almacenamiento que pase los datos de los conjuntos de filas solicitados desde el motor relacional.
  5. El motor relacional procesa los datos que devuelve el motor de almacenamiento en el formato definido para el conjunto de resultados y devuelve el conjunto de resultados al cliente.

Base de Datos Ejemplo

clip_image004

Sentencias SQL básicas

Tipos de datos.

– Bit. Tipo de datos entero que puede aceptar valores de 1 y 0.

– Char. Datos de carácter de longitud fija.

– Date. Define una fecha. AAAA-MM-DD.

– Datetime. Define una fecha que combina con una hora del día con fracciones de segundos en un reloj de 24 horas.

– Decimal (p,s). Tipo de dato numérico que tiene precisión y escala fija. p à el número máximo de dígitos decimales que se puede almacenar. sà el número máximo de decimales que se pueden almacenar a la derecha del separador de decimal. 0<=s<=p.

– Image. En futuras versiones será eliminado. Datos binarios de longitud variable desde 0 a 2147483647.

– Int. Tipo de dato numérico exacto que utilizan datos enteros. -2147483648 a 2147483647. 4bytes

– Money. Tipos de datos que representan valores monetarios o de moneda.

– Nchar (n). Datos de carácter de longitud fija. N deb estar comprendido entre 1 y 4000. El tamaño de almacenamiento en bytes es dos veces el número de caracteres especificado.

– Ntext. En futuras versiones será eliminado. Datos de longitud variable con una longitud máxima 2^30

– Numeric(p,s). Tipo de dato numérico que tiene precisión y escala fija. p à el número máximo de dígitos decimales que se puede almacenar. sà el número máximo de decimales que se pueden almacenar a la derecha del separador de decimal. 0<=s<=p.

– Nvarchar(n). Datos de carácter de longitud variable. N puede ser un valor comprendido entre 1 y 4000. El tamaño de almacenamiento en bytes es dos veces el número de caracteres especificado.

– Real. Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de coma flotante. Sinónimo ISO es float(24). De -3,40E+38 a 3,40E+38.

– Tinyint. Tipo de dato numérico exacto que utilizan datos enteros. De 0 a 255. 1byte

– Smallint. Tipo de dato numérico exactos que utilizan datos enteros. De -32768 a 32767. 2bytes

– Text. En futuras versiones será eliminado. Datos de longitud variable de la página de códigos del servidor y con una longitud máxima de 2147483647 caracteres.

– Time. Define una hora de un día. La hora no distingue la zona horaria y está basada en el reloj de 24 horas. Hh:mm:ss.nnnnnnn. 5bytes

– Varchar(n). Datos de caracteres. N puede ser un valor entre 1 y 8000. Los sinónimos ISO son char varying o character varying. Se utiliza este tipo de datos cuando los tamaños de las entradas de datos columnas varíen de forma considerable.

– Uniqueidentifier. 6F9619FF-8B86-D011-B42D-00C04FC964FF. La replicación de mezcla y transaccional con suscripciones de actualización utiliza columnas uniqueidentifier para garantizar que las filas se identifican de forma exclusiva en varias copias de la tabla. 16bytes

CREATE TABLE.

– Crear un nueva tabla.

CREATE TABLE ActividadDiaria

(

CodigoActividad int identity(1,1) not null,

CodigoTopico int null,

FechaInicio datetime null,

FechaFinalizacion datetime null,

Estado char(1) null,

Id_Empleado int null

)

Deja un comentario