Vous êtes sur la page 1sur 43

SQL

SQL Server 2008


SQL SERVER 2005 Express Edition permite disear bases de datos y utilizarlas ms adelante en ASP.NET con su conjunto de objetos ADO.NET que estudiaremos ms adelante. Por lo tanto, nos centraremos en explicar nicamente lo necesario para el desarrollo de aplicaciones Web vinculadas a datos, sin profundizar excesivamente en todos los aspectos que nos ofrece SQL Server 2005.

Configuracin de SQL Server 2005.


Una vez instalado la versin Express de SQL Server 2005 veamos que ha quedado instalado en nuestro pc, para ello acudimos al men de inicio, todos los programas y localizamos el paquete aadido por nuestra instalacin:

Vemos que dentro del paquete Microsoft SQL Server 2005, accedemos a un men con unas herramientas de configuracin, estas herramientas son:

De estas herramientas, para nuestros intereses nos basta con conocer la primera de todas (SQL Server Configuration Manager). Desde ella podremos configurar el acceso y el modo de arranque de nuestro servidor de datos. Arrancamos la aplicacin y nos encontramos la siguiente pantalla:

SQL Server 2005

De todas las posibles herramientas de configuracin a las que podemos optar nosotros tenemos que destacar la primera de todas, SQL Server 2005 Services, desde la cual podremos configurar dos de los aspectos ms importantes de nuestro servidor. Por lo tanto hacemos doble click en el icono correspondiente y accedemos a los servidores de bases de datos instalados en nuestro pc. Teniendo que configurar el primero de todos:

Haciendo click con el botn derecho accedemos al men desde el cual vemos que tenemos habilitadas una serie de opciones. El primer bloque de opciones hace referencia al estado de nuestro servidor, la opcin propiedades para configuracin y la ltima una pequea ayuda que nos ofrecen en la instalacin. Opcin: start stop pause resume restart propiedades ayuda Funcin: Para activar nuestro servidor de modo manual. Si el servidor se encuentra en funcionamiento, lgicamente esta funcin aparecer deshabilitada, lo mismo suceder con el resto de opciones. Detiene el servidor. Detiene el servidor momentneamente. Una vez detenido el servidor mediante "pause", lo vuelve a poner en marcha. Detiene el servidor, e inmediatamente vuelve a activarlo. Accedemos a una ventana para llevar a cabo varias configuraciones. Pequea ayuda sobre este servicio.

SQL Server 2005

Veamos ahora como configurar ciertos aspectos del servidor desde la ventana de configuracin que aparece pulsando sobre propiedades:

La ventana aparece con la pestaa Log on, activada, desde esta ventana configuramos los permisos de acceso al servidor. Es muy importante configurar debidamente estos accesos. Primero podemos indicar el modo de la cuenta, o bien indicar que la cuenta ser la activada en nuestro servidor. En nuestro caso lo configuraremos para que el administrador de nuestro pc sea el usuario predeterminado para tener permisos de administracin. Cuando instalamos nuestros servicios en el servidor de una empresa debemos operar de diferente mtodo, creando un usuario especfico para la administracin de la base de datos, es bastante lgico crear un usuario para esta tarea, ya que es posible que modifiquemos las caractersticas de usuarios para otras tareas y para que estos cambios no afecten a SQL Server es mejor que tenga un nico usuario fijo para esta tarea. Y por ltimo tenemos a nuestra disposicin una serie de botones para actuar sobre el estado del servidor. Sigamos con la configuracin pinchando en la pestaa Service.

SQL Server 2005

Destacamos el nombre del servidor (Host Name) que ser importante para la cadena de conexin del servidor. La propiedad Start Mode, desde ella podemos habilitar 3 modos diferentes de activar nuestro servidor: Opcin: Funcin: Con esta opcin, el servidor arrancar conjuntamente con el sistema, es decir, cuando nuestro sistema operativo arranque, el servidor de base de datos se activar automticamente, esta es la opcin ms habitual y recomendad, ya que nuestro servidor estar permanentemente ofreciendo sus servcios. Deshabilitamos el arranque del servidor. El modo de gestionar el estado del servidor ser manual por parte del desarrollador mediante las opciones que vimos anteriormente.

Automatic

Disabled Manual

SQL Server 2005

SQL Server 2005 Management Studio Express


INTRODUCCION
Visual Studio 2005 nos permite trabajar mltiples tipos de bases de datos sean a nivel de usuario como Access o se alojen en servidores como pueden ser SQL Server, Oracle, MySql, etc. Las bases de datos locales, como Access estn orientadas a un uso ms limitado, se recomiendan para oficinas pequeas o uso personal. Si lo que se necesita es dar utilidad a mltiples usuarios se recomienda una base de datos de servidor como SQL SERVER. Visual Studio 2005 ofrece una edicin Express de SQL SERVER que lo nico que limitan es la cantidad de informacin a gestionar y el nmero de usuarios conectados a la base de datos (adems de otras funciones avanzadas).

BASE DE DATOS
Una base de datos es un sistema de almacenamiento de informacin relacionada y que cumple, en su diseo, con una serie de normas que la convierte es un sistema con facilidad de modificarse manteniendo la congruencia entre sus datos. En SQL SERVER se almacenan las credenciales de usuario junto con los datos para limitar el uso de stos. Las aplicaciones no trabajan directamente con los datos, necesitan de un enlace, que se encargue de recibir las rdenes de la aplicacin y en funcin de stas, trabaje sobre los datos. Este enlace recibe el nombre de Servidor de datos (RDBMS, Relational Database Management System). As pues, nuestro RDBMS ser SQL SERVER 2005 encargado de trabajar con las bases de datos en funcin de las peticiones que realizan las aplicaciones. En toda base de datos de SQL Server hay al menos dos ficheros.

Fichero de base de datos. En este fichero estarn almacenados los datos de las tablas y dems objetos, tiene extensin mdf Fichero de transacciones. EL fichero de transacciones consiste en una serie de registros de todas las modificaciones de la base de datos y de la transaccin que ha realizado cada modificacin. En el registro de transacciones figura el inicio de cada transaccin. Tambin registra los cambios de los datos y facilita suficiente informacin para deshacer las modificaciones (si fuera necesario posteriormente) realizadas durante cada transaccin. El fichero de transacciones tiene extensin ldf.

Las bases de datos, por tanto, tienen dos archivos: uno con extensin mdf y otro ldf, cada uno de ellos puede estar almacenado en unidades diferentes. Las bases de datos estn formadas por:

Tablas. Una tabla es un conjunto de informacin con caractersticas comunes. Por ejemplo, en la base de datos de un videoclub, existir una

SQL Server 2005 Management Studio Express

tabla que guarde informacin de las pelculas, otra que almacene los datos de los socios, etc. Las tablas estn compuestas de registros. Registros. Un registro es cada uno de los elementos de informacin de la tabla. En el ejemplo de la base de datos del video club, un registro es cada uno de los socios almacenados en la tabla de socios. Los registros a su vez se componen de campos. Campos. Un campo es la unidad de informacin que interesa almacenar para cada registro. En nuestro ejemplo, los registros de las tablas de socios estaran compuestos por los siguientes campos: nombre, direccin, telfono, etc. ndices. Los ndices son tablas de acceso que permiten acelerar las bsquedas de registros en la base de datos. Los valores de los ndices han de ser nicos para las tablas y se corresponden con valores de un campo de los registros. Procedimientos almacenados (stored prodedures). Un servidor de base de datos no slo puede manipular informacin de sus tablas, sino que tiene la capacidad de interpretar cdigo en lenguaje SQL para la realizacin de una serie de funciones u operaciones. Este cdigo SQL se puede encapsular en un procedimiento o varios y se almacena en la propia base de datos. Vistas. Son consultas de uso habitual que se pueden almacenar con la base de datos. Se trata de tablas especiales en las que sus datos provienen de una o ms tablas en funcin de la consulta SQL creada. Por ejemplo, se podra crear un vista para que simplemente mediante un nmero de socio nos devuelva toda la informacin necesitada (alquileres pendientes, alquileres realizados, etc.) Triggers. Un trigger es un suceso que se dispara cuando se provoca un determinado evento. Es habitual vincular un trigger a un procedimiento almacenado, de modo que cuando se provoque un trigeer, se ejecute el procedimiento almacenado. Diagrama de base de datos. Es una herramienta grfica donde podemos situar las tablas y establecer las relaciones existentes entre ellas. De este modo podemos tener una vista de la estructura genrica de nuestra base de datos. Usuarios. En la base de datos podemos aadir tantos usuarios como necesitemos y otorgarles los permisos que nos parezcan adecuados.

HERRAMIENTA DE ADMINISTRACIN Y GESTIN DE SQL SERVER 2005


Se pueden realizar las bases de datos desde Visual Studio pero una forma ms profesional de hacerlo es utilizar SQL Server Management Studio Express CTP, que se instala con el paquete SQLEXPR_TOOLKIT_ESN y es de descarga gratuita.

SQL Server 2005 Management Studio Express

Comienzo

Antes de comenzar a trabajar con el administrador debemos indicar a que servidor y con que usuario queremos conectar Propiedad: Opciones: Funcin:

Nombre del servidor

El nombre del servidor, que elijamos para conectar con el administrador. Debes Elegimos el servidor con recordar este nombre, porque ser el que el que conectaremos. se utilice en las cadenas de conexin desde .NET. Si elegimos la opcin "Windows Authentication" estaremos conectando con la misma cuenta de usuario con la que iniciamos nuestro sistema.

Windows Authentication Autentificacin: SQL Server Authentication

Si seleccionamos "SQL Server Authentication" deberemos indicar con que cuenta vamos a conectar e introducir la contrasea especfica para conectar con SQL Server. Con la versin SQL Server 2005 Express es ms recomendable trabjar con "Windows Authentication" ya que de otro modo podemos encontrar problemas por la limitacin de la versin gratuita.

Elegidas las opciones adecuadas pulsamos Conectar, en ese momento nos muestra una ventana con el proceso de conexin y si todo ha resultado correcto, arranca la herramienta de administracin

SQL Server 2005 Management Studio Express

ADMINISTRACIN DE BASES DE DATOS


Durante la tarea de creacin de nuevas bases de datos, se fija el nombre, sus propiedades, y la ubicacin fsica de los archivos que la componen. Para iniciar el proceso de creacin, se despliegan las carpetas y se pulsa con el botn derecho sobre la carpeta de las bases de datos. Y seleccionamos la opcin "Nueva Base de Datos"

SQL Server 2005 Management Studio Express

Opcin: Nombre de la base de datos Propietario Nombre de la base de datos. Propietario de la base de datos.

Funcin:

Nombre lgico Nombre lgico para los archivos que se generan junto con la base de datos. Tipo de archivo. Anteriormente hemos mencionado que en la creacin de Tipo de archivo una base de datos se generan dos tipos de archivos: el archivo principal y el de transacciones. Grupo de archivos Grupo de archivos a los que pertenecen cada uno de los tipos de archivo.

Tamao inicial Tamao inicial que se reserva para la base de datos. Crecimiento automtico Autocrecimiento. Los archivos de datos aumentan automticamente de tamao de dos modos posibles: en megabytes o en porcentaje. Adems podemos restringir o no el crecimiento a una cantidad fija de megabytes.

Ruta de acceso Ruta fsica del directorio donde se almacenarn los dos tipos de ficheros. Nombre de archivo Nombre de esos ficheros.

La configuracin de estas propiedades son suficientes para la creacin de la base de datos. Una vez pulsado y aceptados los cambios, nuestra base de datos ya ha sido creada y preparada para se gestionada mediante el administrador.

SQL Server 2005 Management Studio Express

10

BASES DE DATOS
CREACIN DE TABLAS
Como ya sabemos las tablas son los objetos que almacenan los datos. A la hora de disear una base de datos, se debe hacer un estudio de que tablas sern necesarias y que tipo de datos van a almacenar. Al disear la tabla es obligatorio evaluar las columnas que vamos a aadir, el tipo de dato para cada columna, y la longitud mxima si es necesaria.

Tipos de datos.
Los tipos de datos indican que valores se pueden almacenar en una determinada columna. En Sql Server tenemos los siguientes tipos de datos fundamentales: Tipo de dato: binarios carcter Unicode fecha y hora numricos moneda usuario especiales Nmeros hexadecimales. Combinaciones de letras, smbolos y nmeros. Cualquier carcter que cumpla el estndar unicode Fechas, horas... Permiten positivos, negativos, enteros, decimales y fraccionales. Valores monetarios positivos y negativos. Tipos de datos definidos por el usuario. Cualquiera que no se pueda ubicar en los tipos mencionados. Descripcin

Datos binarios.
Tipo de dato: binary varbinary Caractersticas. Tamao mximo de 8 KB para sus filas. Los datos varan sus dgitos hexadecimales hasta 8 KB Datos binarios de cualquier longitud superior a 8 KB, entre estos datos podemos encontrar documentos de Word, imgenes (jpeg, bmp, gif). Hay que ser muy precavidos al utilizarlo para no incrementar innecesariamente el tamao de la base de datos.

image

Datos carcter.
Tipo de dato: char varchar Caractersticas. Longitud fija no superior a 8 Kb. Ocupa el mismo nmero de caracteres independientemente del valor introducido en el campo Longitud variable no superior a 8 Kb. Se le especifica la longitud mxima y si se introduce un nmero menor de caracteres la 11

Bases de Datos

ocupacin en memoria se adapta al dato introducidol text Caracteres ASCII con longitud superior a 8 Kb.

En este mismo grupo se pueden situar los tipos de datos para caracteres Unicote y ocupan 2 bytes por caracter. Que seran nchar, nvarchar y ntext.

Datos de fecha y hora.


Tipo de dato: datetime smalldatetime Caractersticas. Intervalo: 01/01/1753 - 31/12/9999, se necesitan 8Kb para almacenar este tipo de dato. Intervalo: 01/01/1900 - 06/06/2079, se necesitan 4 Kb de capacidad para este tipo.

Datos Numricos.
Tipo de dato: bigint int smallint tinyint decimal o numeric float y real Caractersticas. Intervalo: -2^63 y 2^63-1. Capacidad: 8 bytes. Intervalo: -2.147.483.648 y 2.147.483.647. Capacidad: 4 bytes. Intervalo: -32.768 a 32.767. Capacidad: 2 bytes. Intervalo: 0 a 255: Capacidad: 1 byte Datos que almacenan hasta el dgito menos significativo de los decimales. Conocidos como numricos aproximados o de coma flotante, almacenan tantos decimales como permita el sistema binario. Tipo de datos entero que puede aceptar los valores 1, 0 o NULL. Los valores de cadena TRUE y FALSE se pueden convertir en valores de tipo bit: TRUE se convierte en 1 y FALSE en 0.

bit

Datos monetarios.
Los datos monetarios almacenan hasta un mximo de 4 decimales. Tipo de dato: money smallmoney Caractersticas. Intervalo: -922.337.203.685.477,5808 y 922.337.203.685.477,5807. Capacidad: 8 bytes. Intervalo: -214.748,3648 y 21.748,3647 Capacidad: 4 bytes.

Correspondencia entre tipos con .NET


Tipo SQL Server Tipo .NET bigint binary bit char Bases de Datos Int64 Byte[] Bolean String, Char[] 12

Tipo SQL Server Tipo .NET datetime decimal float image int money nchar ntext numeric nvarchar real smaldatetime smallint smallmoney sql_variant text timestamp tinyint uniqueidentifier varbinary varchar DateTime Decimal Double Byte[] Int32 Decimal String, Char[] String, Char[] Decimal String, Char[] Single DateTime Int16 Decimal Object String, Char[] Byte[] Byte Guid Byte[] String, Char[]

Crear tablas con el administrador


Las tablas se crean pulsando con el botn derecho en la carpeta Tablas de la base de datos creada.

Bases de Datos

13

A continuacin se abre una pestaa con la siguiente ventana, donde podemos configurar todas las propiedades de una tabla

Caractersticas fundamentales de la columna


Nombre de la columna Tipo de dato/Longitud Si permite o no almacenar valores nulos

Especificacin de identidad: Si se asigna una columna con especificacin de identidad, el campo ser numrico que aumenta su valor automticamente. El valor se va incrementando segn se vayan aadiendo registros a la tabla, el valor de incremento y el valor de inicio puede ser indicado mediante las propiedades Incremento de identidad e Inicializacin de identidad.

Si pulsamos el botn de la barra de herramientas mientras estamos en una columna, establecemos sta como clave principal.

Bases de Datos

14

Si pulsamos el botn de la barra de herramientas las relaciones entre las tablas

podemos cambiar

Para realizar cualquier modificacin el la tabla, una vez almacenada, pulsamos sobre el botn derecho y elegimos Modificar tabla. Para introducir datos en la tabla debemos pulsar Abrir tabla.

RELACIONES
El objetivo principal que se busca al relacionar tablas es el conseguir no tener datos repetidos o redundantes. Las relaciones entre tablas se consiguen a travs de vnculos establecidos entre una columna o varias de las tablas a relacionar. Vamos a ver un ejemplo, con el que entenders mejor la finalidad de las relaciones. Piensa en la gestin de una biblioteca, para almacenar los datos de los libros, nos creamos una tabla a la que llamaremos tabla_libros. Esta tabla debe almacenar los siguientes campos:

ISBN. Titulo. Numero_pginas. Fecha_Publicacin. Nombre_Autor. Apellidos_Autor. Fecha_Nacimiento_Autor. Nacionalidad_Autor. Nombre_Editorial. Nacionalidad_Editorial.

Estudiando un poco el tipo de informacin que va a almacenar nuestra tabla, vemos con claridad que los campos ISBN, Titulo y nmero de pginas son especficas para un libro, en cambio habr muchos libros que hayan sido escritos por el mismo autor y publicados por la misma editorial. Supongamos que slo trabajamos con libros de dos editoriales y de dos autores. Si tenemos 1000 libros en nuestra biblioteca, los campos Nombre_Autor, Fecha_Nacimiento_Autor, Nacionalidad_Autor, Nombre_Editorial y Nacionalidad_Editorial aparecern repetidos, ya que son campos compartidos por muchos de los libros que son creados por el mismo autor y editados por la misa editorial. Estamos duplicando informacin de un modo innecesario. La solucin ms eficaz es situar a los autores en una tabla independiente para ellos y a las editoriales en otra tabla. De este modo, y siguiendo con las suposiciones de nuestro ejemplo, si nicamente trabajamos con dos autores y con dos editoriales, estas tablas nuevas slo tendrn dos registros. Y bastara con buscar el modo de relacionar a cada libro con su correspondiente autor y su correspondiente editorial. tabla_libros ISBN Titulo Bases de Datos tabla_autores Nombre_Autor Apellidos_Autor tabla_editoriales Nombre_Editorial Nacionalidad_Editorial 15

Numero_Paginas Fecha_Nacimientos_Autor codig_autor codigo_editorial Nacionalidad_Autor codigo_autor

codigo_editorial

Por lo tanto debemos crear de algn modo unos punteros que apunten a la tabla autores y otro para la tabla editoriales, para conocer en todo momento el autor y la editorial de cada libro. De este modo, aadimos un campo a cada tabla, para que sirva de vnculo entre ellas (codigo_autor y codigo_editorial). Veremos como hacerlo ms adelante, de momento qudate con la idea los problemas planteados y las soluciones que vamos adoptando y explicando. En el momento de relacionar las tablas podemos obligar a que se sincronicen mediante relaciones de integridad, de modo que por ejemplo un libro siempre apunte a una editorial que exista en nuestra tabla de editoriales. Las relaciones se asocian a columnas clave y suelen identificarse con el mismo nombre. Por norma general (no siempre es as), la relacin vincula la clave principal de una tabla (recuerda que la clave principal asegura que un registro sea nico) con la clave externa (FOREIGN KEY) de la otra tabla. Existen los siguientes tipos de relacin:

Relacin uno a varios. Relacin varios a varios. Relacin uno a uno.

La ms utilizada es la primera de ellas, Relacin uno a varios. Que indica que un mismo registro aparece varias veces vinculado en otra tabla y que sin embargo asegura que el registro de la tabla destino slo aparece una vez. No es tan complicado como parece, en nuestro ejemplo, sabemos que una editorial aparece vinculada para varios libros, este es un buen ejemplo de relacin uno a varios. La relacin varios a varios, permite que la tabla1 tenga varios registros que coincidan en la tabla2 y viceversa. Para estas relaciones se utilizan tablas auxiliares "puente" entre las relaciones de las tablas. Y por ltimo la relacin uno a uno, exige que una fila de la tabla1 slo pueda coincidir con una fila de la tabla2 y viceversa. Este tipo de relacin a penas es utilizado.

Diagramas de bases de datos.


Los diagramas de bases de datos permiten obtener una vista de la estructura de la base de datos que hemos creado. De este modo podremos visualizar las tablas creadas y sus relaciones. Podemos tener todos los diagramas de bases de datos que deseemos, en cada diagrama podemos mostrar la totalidad de las tablas o bien un determinado nmero. Una misma tabla puede aparecer en varios diagramas. Desde los diagramas podemos crear nuevas tablas y realizar modificaciones en ellas. Pero para esta tarea se aconseja utilizar los mtodos que hemos explicado hasta ahora por ser ms claros y extensos.

Bases de Datos

16

La principal ventaja que nos ofrecen los diagramas es el la comodidad de poder realizar y estudiar las relaciones entre tablas de un modo visual, lo cual ofrece una informacin muy clara de cual es la estructura de las relaciones creadas. De este modo, podemos identificar rpidamente el tipo de relacin existente entre dos tablas. Dos tablas relacionadas aparecen unidas por lneas y en el extremo de estas lneas tenemos unos iconos que nos indican el tipo de relacin. Adems, el estilo de estas lneas ofrece informacin sobre el tipo de sincronizacin o de las restricciones establecidas en la relacin. Iconos. ----------------------------------------Tipo de relacin. Relacin uno a varios. Relacin varios a varios. Relacin uno a uno.

Los diagramas de bases de datos se almacenan en la carpeta Diagramas de Base de Datos Una vez abierta la ventana para los diagramas, podemos pulsar con el botn derecho en una zona libre de la ventana y se nos muestra un men para realizar la mayora de operaciones posibles.

Bases de Datos

17

SQL
El lenguaje SQL (Structured Query Language), es un lenguaje estructurado de administracin de base de datos. Con el lenguaje SQL tenemos dos tipos de sentencias, que permiten administrar la base de datos de diferente modo: Tipo de Sentencia DDL Descripcin Lenguaje de Definicin de Datos, con este tipo de sentencias se consigue crear y modificar nuestro sistema, podemos aadir, modificar, eliminar tablas, ndices, etc... Lenguaje de Modificacin de Datos, este tipo de sentencias se utiliza para la modificacin de datos, como pueden ser las consultas, actualizaciones, eliminaciones de registros.

DML

Comenzaremos explicando el primer tipo de sentencias de datos, el lenguaje de definicin de datos, DDL. Para escribir y practicar con las sentencias SQL que vamos a ir explicando utilizaremos la herramienta SQL Server 2005 Management Studio Express. Previamente, creamos una base de datos con el nombre PrimeraSQL, sobre la que realizaremos posteriormente diversas tareas. Para escribir y ejecutar estas tareas sobre esta base de datos, pulsamos con el botn derecho en esta base de datos y seleccionamos la opcin Nueva Consulta: Esto abrir una nueva pestaa para escribir nuestras sentencias. Escribimos, por ejemplo:
SELECT * FROM USUARIOS

En este panel, escribimos una consulta, al ejecutarla mediante el botn Ejecutar Consulta, abre una nueva seccin en la parte inferior donde se muestran los resultados y mensajes de la sentencia ejecutada:

Estas sentencias SQL puedes almacenarlas, con extensin .sql para recuperarlas en el momento que desees.

SQL

18/43

LENGUAJE DE DEFINICIN DE DATOS


Creacin de tablas
Para crear tablas se utiliza la siguiente sentencia
CREATE TABLE nombre_tabla (nombre_columna tipo restricciones) [restricciones (nombre_columna)]

Esta sentencia crea una nueva tabla en la base de datos en la que estemos trabajando, el nombre de la tabla creada nombre_tabla. El nombre de los campos se introduce entre parntesis, especificando el tipo de dato y las restricciones para esa columna. Las restricciones pueden especificarse junto al tipo separndola con un espacio en blanco, o bien al final indicando la restriccin y colocando entre parntesis el nombre de la columna a la que se aplica esa restriccin. Para crear una tabla en la base de datos PrimeraSQL para introducir los empleados de una empresa, estimamos necesarias las siguientes columnas:

codEmpleado de tipo entero y clave principal de nuestra tabla. Nombre de tipo varchar con tamao 50, no admite valores nulos Apellidos del mismo tipo que nombre, no admite valores nulos. Salario de tipo float, no admite valores nulos.. codOficina de tipo int que almacenar el codigo de la oficina donde trabaja el empleado, no admite valores nulos.

El siguiente cdigo crea una tabla con estas caractersticas:

Ahora creamos una tabla llamada Oficinas donde interesan las siguientes columnas:

codOficina, clave primaria de la tabla de tipo entero. Direccion, de tipo varchar y tamao 50. Localidad, de tipo varchar y tamao 50. Provincia, de tipo varchar y tamao 50.

SQL

19/43

Despus de ejecutar esta sentencia, nuestro diagrama de base de datos queda del siguiente modo:

Modificacin de tablas
Para modificar las tablas se utiliza ALERT TABLE
ALTER TABLE nombre_tabla ADD atributo tipo NULL

Para modificar la tabla Empleados e introducir en ella un nuevo campo fecha_nacimiento ejecutaramos
ALTER TABLE Empleados ADD [fecha] DateTime

Si queremos crear una relacin entre la tabla Empleados y la tabla Oficina debemos, primero, modificar las tablas aadiendo esta relacin, para esto la columna codOficina de la tabla Empleados debe tener la restriccin FOREIGN KEY para modificarla como clave fornea.
ALTER TABLE Empleados ADD CONSTRAINT [FK_CodOficina] FOREIGN KEY ( CodOficina )REFERENCES Oficinas ( CodOficina )

Con la sentencia CONSTRAINT indicamos que vamos a aadir una nueva restriccin, a continuacin indicamos el nombre de la relacin que vamos a crear, con la sentencia FOREGIN KEY le damos entre parntesis las columnas que sern las claves forneas de la relacin, seguido indicamos la sentencia REFERENCES para indicar cual ser la tabla con la que vamos a relacionar y le damos entre parntesis la columna con la clave primaria con la que enlazaremos.

SQL

20/43

Despus de ejecutar esta consulta nuestro diagrama queda:

Eliminacin de tablas.
La sentencia DROP TABLE permite eliminar tablas de la base de datos. Su sintaxis es la siguiente:
DROP TABLE nombre_de_tabla

EJERCICIO
Vamos a seguir trabajando con el ejemplo que estamos desarrollando. Vamos a crear las siguientes tablas:

Vehiculos. Almacena los vehculos de la empresa. o codVehiculo, tipo entero y clave primaria. o descripcion, descripcin del vehiculo de empresa. Reservas. Almacena la reserva que hace un empleado de uno de los vehculos de la empresa. o codReserva. Tipo entero, clave principal de la tabla. Identity. o codVehiculo. Cdigo del vehiculo del que se hace la reserva. o fecha. Fecha de la reserva. o destino. Destino para el que se utiliza la reserva. o kilometros. Kilmetros estimados que se harn con la reserva. o codEmpleado. Cdigo del empleado que realiza la reserva.

Por ltimo aadimos las relaciones requeridas entre la tabla Empleados con la tabla Reservas y la tabla Vehiculos con la tabla Reservas.

SQL

21/43

En la siguiente tabla vemos el diagrama de base de datos que queremos construir:

Creamos las tablas Vehiculos y Reservas:

Nos damos cuenta que para la tabla Reservas hemos olvidado aadir la columna CodEmpleado, modificamos la tabla para aadirla:

Creamos la relacin entre la tabla Empleados y la tabla Reservas:

SQL

22/43

Por ltimo creamos la relacin entre la tabla Vehiculos y Reservas:

LENGUAJE DE MANIPULACIN DE DATOS (DML)


Como ya hemos comentado el lenguaje de manipulacin de datos que permite gestionar la informacin de las bases de datos. Las sentencias principales de este lenguaje son:

SELECT INSERT UPDATE DELETE

En esta unidad comenzaremos explicando la sentencia INSERT que nos permite aadir registros a nuestras tablas, de modo que luego podamos realizar nuestros ejemplos de la sentencia SELECT con los registros que vamos a aadir.

Insertando registros.
La sentencia INSERT se utiliza para aadir nuevos registros a las tablas. Su sintaxis es la siguiente:
INSERT INTO nombre_tabla (columna1, columna2,..., columnaN) VALUES (valor1, valor2, ..., valorN)

En la sintaxis vemos que introducimos el nombre de la tabla en la que vamos a aadir los siguientes valores para las columnas que especificamos entre parntesis. La lista de valores que vamos a introducir se coloca entre parntesis despus de la sentencia VALUES. El orden debe corresponder con el de las columnas. En caso de introducir un valor no vlido en alguna de las columnas se produce un error y el registro no se aade. Vamos a aadir dos vehculos a nuestra tabla Vehculos:

En la segunda sentencia no hemos introducido las columnas en las que vamos a incluir los datos, ya que si vamos a aadir valores para todas las columnas de un registro, no es necesario indicar las columnas. Debes recordar que si una columna es autoincremental no debemos especificar el valor aqu tampoco.

SQL

23/43

Si todo ha ido correctamente, SQL Server nos indica el nmero de columnas que se han visto afectadas:

Vamos a aadir los registros para nuestro ejemplo: Oficinas y Empleados:

SQL

24/43

Reservas:

Recuperacin de registros.
La sentencia SELECT permite obtener la informacin almacenada en nuestras tablas. Su sintaxis general es la siguiente:
SELECT <columnas> FROM tablas

Despus de la sentencia SELECT se introducen el nombre de las columnas a las que queremos acceder, en caso de estar consultando varias tablas se introduce primero el nombre de la tabla a la que pertenece la columna y se separa con un punto del nombre de la columna:
nombre_tabla.nombre_columna

Si vamos a acceder a todas las columnas de la tabla se utiliza el operador *. Seguido de la clusula FROM se introducen el nombre de las tablas a las que vamos a acceder separndolas con una coma. Si por ejemplo queremos recoger todos los registros de nuestra tabla empleados:

SQL

25/43

Y si nos interesa nicamente los nombres y apellidos de nuestros empleados:

Filas duplicadas.
Una consulta que incluye una clave primaria, los resultados obtenidos sern nico, pero si tenemos el caso de que una consulta no incluye una clave primara puede darse el caso de obtener filas repetidas. Si por ejemplo listamos el campo codOficina de la tabla empleados obtenemos:

Si aadimos la clusula DISTINCT, evitamos la duplicacin de resultados:

Ordenando los resultados.


Tenemos la posibilidad de ordenar los resultados que obtenemos mediante la clusula ORDER BY. Adems podemos indicar si deseamos que se ordene de modo ascendente (ASC) o descendente (DESC). Por defecto se ordena en modo ascendente.

SQL

26/43

Si deseamos ordenar por ms de un campo, podemos separas las expresiones de ordenacin por comas. En el siguiente ejemplo mostramos el salario y el nombre del empleado, ordenados en orden descendente por salario y en caso de coincidir por orden ascendente del nombre. Observa la posicin de las filas 6 y 7 como han quedado ordenadas al coincidir el salario:

Renombrar columnas.
Mediante la clusula AS, podemos utilizar en la salida de columnas de resultado, nombre distintos a los reales dados en las tablas. Lo que hacemos es dar un alas para distinguir una determinada columna con un nombre modificado.
SELECT nombre_columna AS 'Nuevo_nombre' FROM tabla

En el siguiente ejemplo renombramos la columna nombre con Empleado, observa como en la zona de resultados se modifica:

SQL

27/43

Columnas calculadas.
Con SQL podemos utilizar columnas que son el resultado de una serie de operaciones. En el siguiente ejemplo, duplicamos el salario de los empleados y le damos el nombre de Salario2:

Tambin podemos realizar operaciones entre columnas. En este ejemplo unimos el nombre del empleado y su apellido mediante un guin:

Consultas con condiciones.


La clusula WHERE permite introducir una serie de condiciones sobre los valores de los campos de los registros, para recoger slo aquellos registros que cumplan esa condicin. Estas condiciones suelen denominarse contrastes de comparacin. Tenemos los siguientes contrastes de comparacin: Contraste de comparacin: Descripcin:

Contraste de comparacin Comparan el valor de una expresin con el valor de otra.

SQL

28/43

Contrastes de rango

Comprueba si el valor se encuentra entre unos lmites.

Contrastes de pertenencia a Comprueba si el valor de una expresin pertenece a un un grupo. determinado grupo. Contrastes de Comprueba si los datos cumplen con un patrn dado. correspondencia de patrn. Contrastes de valor nulo. Comprueba si alguna de las columnas contiene el valor nulo.

Contraste de comparacin.
Con estas condiciones SQL compara los valores dados entre dos expresiones para cada registro. Los operadores de comparacin que tenemos a nuestra disposicin son: Operador: = < > <= >= <> Descripcin: Compara si los valores son iguales. Compara si una expresin es menor que otra. Compara si una expresin es mayor que otra. Compara si una expresin es menor o igual que otra. Compara si una expresin es mayor o igual que otra. Compara si las dos expresiones son distintas.

La sintaxis es la siguiente:
SELECT <columnas> FROM <tablas> WHERE expresion1 operador expresion2

SQL

29/43

En el siguiente ejemplo se muestran todos los empleados que superen un salario mayor o igual que 1200:

Contrastes de rango.
El contraste de rango comprueba si un valor se encuentra entre dos valores determinados. Para realizar esta comparacin contamos con la clusula BETWEEN...AND Como ejemplo vamos a mostrar aquellos empleados nacidos entre el 1 de enero de 1960 y el 31 de diciembre de 1969:

Contraste de pertenencia a un grupo.


Este tipo de condicin comprueba si el valor de una determinada expresin aparece en una lista de valores determinada. Para esta tarea utilizaremos la clusula IN En el siguiente ejemplo mostramos aquellos empleados que tengan un salario que coincida con la siguiente lista de valores: {1000, 1200}

SQL

30/43

Contraste de correspondencia con patrn.


Este tipo de consultas devuelve los registros para el que el valor de una columna de texto se corresponde con una expresin dada. La clusula LIKE, permite este tipo de comparaciones, y utiliza el operador % como comodn. El smbolo % se sustituye por cualquier conjunto de caracteres. En el siguiente ejemplo mostramos aquellos trabajadores que comiencen por la letra R:

Ahora modificamos la consulta para mostrar aquellos empleados donde su apellido aparezca la letra R, sin importar donde:

Otro comodn que utiliza la clusula LIKE es el guin bajo '_' que representa la posicin de un carcter. El smbolo % permite cualquier nmero de caracteres, y toma como coincidencia la ausencia de caracteres, en cambio el smbolo '_' permite slo un nico carcter coincidente. En el siguiente ejemplo se obtienen los registros de la tabla Empleados cuyo campo Apellidos contenga una cadena donde la segunda letra sea una 'a':

SQL

31/43

Contrastes de valor nulo.


La clusula IS NULL devuelve aquellos registros que tienen una columna determinada con valor nulo, para la operacin opuesta tenemos la clusula IS NOT NULL. En el siguiente ejemplo se muestra aquellos empleados que no tienen un valor nulo en campo codOficina, es decir aquellos empleados que tienen asignada una oficina (en este caso todos).

Contrastes compuestos.
Es muy frecuente el uso de consultas que requieren ms de una condicin de bsqueda. Los operadores AND, OR y NOT, pueden combinarse para unir condiciones que utilicen las reglas de la lgica para obtener un nico resultado. En el siguiente ejemplo se muestran aquellos empleados que tengan un salario superior a 1200 y hayan nacido antes de la fecha '01/01/1970':

Combinacin de consultas.
Mediante la clusula UNION podemos unir los resultados de dos o ms tablas en una nica tabla. En el siguiente ejemplo mostramos en una nica tabla los salarios de los empleados y los kilmetros realizados en las reservas de vehculos:

SQL

32/43

Puedes ver que toma como nombre de columna el de la primera consulta, en este caso salario. Por defecto este tipo de consultas elimina los valores duplicados, para evitar esto podemos aadir el operador ALL a la clusula UNION como se ve en el siguiente ejemplo:

Condiciones para utilizar el operador UNION:

Las columnas devueltas como resultado de las consultas utilizadas con el operador UNION deben ser del mismo tipo de datos, o tener la posibilidad de convertir los tipos de datos de modo implcito o explcito. Los nombres de columna de la tabla que obtenemos de UNION se toman de la primera consulta individual.

CONSULTAS JOIN
Un JOIN de dos tablas es una combinacin de estas tablas, en la condicin fijada entre dos columnas, una de cada tabla. El JOIN opera de modo que compara por parejas de filas, haciendo coincidir los contenidos de las columnas relacionadas.
SELECT columnas FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 COMPARACIN tabla2.campo2

En la condicin de bsqueda se comparan las columnas de las dos tablas y slo se muestran aquellas que tienen el mismo contenido. Para practicar con las consultas JOIN debemos adjuntar la base de datos Northwind a nuestro servidor, para ello se debe pulsar el botn derecho sobre Bases de Datos y pulsar la opcin Adjuntar, buscar la base de datos en el disco y ya est.

SQL

33/43

En el siguiente ejemplo, vamos a realizar una consulta sobre las tablas Employees y EmployeeTerritories, que estn relacionadas tal y como puedes ver en la siguiente figura del diagrama:

Como ya sabemos para realizar la consulta, tenemos que poner la consulta con una condicin que realice una comparacin de la clave fornea de una tabla y la clave principal de la otra. Por lo tanto, vamos a obtener las columnas FirstName, LastName y TerritoryID:

JOIN EXTERNO izquierdo y derecho

JOIN IZQUIERDO. Por cada fila de la primera tabla que no corresponda a ninguna fila de la segunda tabla, se crea una fila en los resultados, utilizando los valores de las columnas de la primera tabla y suponiendo un valor NULL para todas aquellas columnas de la segunda tabla que corresponden con el emparejado. 34/43

SQL

JOIN DERECHO. Para cada fila de la segunda tabla que no corresponda a ninguna fila de la tabla consultada, se crea una fila a los resultados, utilizando los valores de las columnas de la segunda tabla y suponiendo un valor NULL para todas las columnas de la primera tabla correspondientes en el emparejamiento.

SELECT Columnas FROM tabla1 LEFT JOIN tabla2 ON tabla1.campo1 comparacin tabla2.campo2

SELECT Columnas FROM tabla1 RIGHT JOIN tabla2 ON tabla1.campo1 comparacin tabla2.campo2

En nuestro ejemplo la ejecucin de estas dos consultas obtiene el mismo resultado, ya que existe condicin estricta en todos los casos.

Consultas resumen.
Con SQL podemos hacer consultas que resumen los datos a travs de funciones de columnas y mediante clusulas especiales de la sentencia SELECT. Este tipo de funciones aceptan una columna de datos como argumento, y producen un nico resultado que resume esa columna. Por este motivo, a este tipo de consultas se les SQL 35/43

conoce como consultas resumen, y en caso de que devuelvan un nico resumen de una nica columna tambin se les conoce como consultas escalares.

Funciones de agregado en la lista de seleccin.


Las funciones de agregado generan valores que resumen los conjuntos de resultados de las consultas. Estas funciones gestionan todos los valores seleccionados de una nica columna para obtener un resultado nico. Una funcin de agregado se puede aplicar a todas las filas de una tabla, a un grupo de la tabla determinado por la clusula WHERE o a uno o varios grupos de filas de tablas. Por lo tanto, concluimos que una funcin de agregado, obtiene un valor nico para cada uno de lo grupos de filas.

Funcin COUNT.
La funcin COUNT() obtiene el nmero de elementos de un grupo. Su sintaxis es:
COUNT(argumento)

Pudiendo usar los siguientes argumentos:


ALL, aplica la funcin a todos los valores. Es el valor por defecto. DISTINCT, devuelve la cantidad de valores nicos que no son NULL de la columna. Expresin, podemos colocar una expresin para que se aplique sobre el argumento ALL o DISTINCT. * : Determina que la funcin COUNT debe contar todas las filas. No puede recibir ningn parmetro ni ser utilizado con el argumento DISTINCT, ni ninguna expresin.

Por lo tanto podemos utilizar las siguientes combinaciones de argumentos:


COUNT (*) COUNT (ALL expresin) COUNT (DISTINCT expresin)

Como ejemplo, vamos a contar el nmero de empleados que tenemos en la tabla Empleados de la base de datos PrimeraSQL:

Agrupar filas con GROUP BY.


La clusula GROUP BY se usa para conseguir resultados de agregado para cada registro del conjunto de resultados. Si no utilizamos la clusula GROUP BY (como hasta ahora) las funciones de agregado obtienen un nico valor para la instruccin SELECT.

SQL

36/43

En el siguiente ejemplo vamos a obtener el nmero de empleados que tenemos en cada oficina de la tabla empleados de base de datos PrimeraSQL:

Podemos utilizar la clusula GROUP BY junto con la clusula ORDER BY para ordenar los resultados, como ves en el siguiente ejemplo:

Observa que colocamos la clusula ORDER BY en ltimo lugar, y podemos ordenar por el alias que hemos creado para nombrar la operacin de conteo.

Clusula HAVING
Esta clusula establece las condiciones de la clusula GROUP BY, de un modo muy parecido a como establece la clusula WHERE las condiciones de la clusula SELECT. La clusula WHERE aplica sus condiciones antes de que se produzca ninguna operacin de agrupamiento, en cambio HAVING las aplica despus. Su sintaxis es muy parecida a la de la clusula WHERE con la diferencia de que HAVING permite funciones de agregado en sus condiciones, mientras que WHERE no.

SQL

37/43

En el siguiente ejemplo vamos a mostrar el nmero de reservas de la base de datos PrimeraSQL, que superan un total de 350 kilmetros para cada empleado:

Subconsultas.
Una subconsulta es una consulta SELECT que devuelve un nico valor y que se encuentra anidada a una instruccin SELECT, INSERT, UPDATE o DELETE, o dentro de otro subconsulta. Pueden ser utilizadas en cualquier parte donde se permita una expresin. En el siguiente ejemplo se muestran los empleados que superan la media salarial de la empresa, utilizando subconsultas:

Puedes ver como hemos encerrado la subconsulta entre parntesis.

Subconsultas con IN
El resultado de una subconsulta con IN (o NOT IN) es una lista de varios valores (o ninguno). Una vez que obtenemos estos valores, la consulta externa o principal los utiliza. En el siguiente ejemplo vamos a mostrar el nombre y apellidos de aquellos empleados que no superen los 300 Kilmetros en sus reservas:

SQL

38/43

Subconsultas con EXISTS


Las subconsultas con EXISTS realizan comprobaciones de existencias, no devuelven ningn conjunto de resultados, nicamente devuelve TRUE o FALSE en funcin de si la subconsulta encuentra algn resultado. En el siguiente ejemplo mostramos los empleados que hayan realizado alguna reserva de vehculos, en este caso, todos:

Funciones.

Funciones de cadena.
Funcin ASCII(cadena) CHAR(cadena) Descripcin Obtiene el cdigo ASCII del carcter de la izquierda en la cadena. Obtiene el cdigo ASCII de la cadena entera.

Devuelve la posicin de la primera cadena en la CHARINDEX(cadena1, cadena2) segunda empezando a contar desde el inicio de la segunda cadena. CHARINDEX (cadena1, cadena2, Devuelve la posicin de la primera cadena en la posicin_inicial) segunda comenzando a contar desde la posicin SQL 39/43

indicada. ESPACE(n) LEFT(cadena, n) LEN(cadena) LOWER(cadena) LTRIM(cadena) NCHAR(n) REPLACE(cadena1, cadena2, cadena3) RIGTH(cadena, n) RTRIM(cadena) SUBSTRING(cadena, m, n) UNICODE(expresin) UPPER(cadena) Genera n espacios. Obtiene n caracteres de la izquierda de la cadena. Devuelve la longitud de la cadena. Devuelve la cadena en minsculas. Suprime los espacios iniciales de la cadena. Obtiene el carcter UNICODE relativo al entero n. Encuentra la coincidencia de la segunda cadena en la primera y las remplaza por la tercera. Devuelve n caracteres de la derecha de la cadena. Elimina los espacios en blanco del final de la cadena. Extrae la subcadena de la cadena que se encuentre entre las posiciones m y n. Devuelve el valor entero UNICODE del primer carcter de la expresin UNICODE. Devuelve la cadena en maysculas.

Funciones numricas
Funciones a+b a-b a*b a/b ABS(a) CEILING(a) FLOOR(a) POWER(a,b) RAND(semilla) ROUND(a,b) SIGN(a) SQRT(a) SQUARE(a) Suma de a y b. Resta de a menos b. Multiplicacin de a y b. Cociente de a y b. Valor absoluto. Entero ms pequeo mayor o igual que a. Mayor entero menor o igual que a. Calcula a elevado a b. Calcula un nmero aleatorio entre 0 y 1 a partir del semilla. Redondea a con precisin b. Devuelve 1 si a es positivo o cero, y -1 si a es negativo. Raz cuadrada de a. Cuadrado de a. Descripcin

Funciones estadsticas.
Funcin SQL Descripcin 40/43

AVG(columna) COUNT(columna) MAX(columna) MIN(columna) SUM(columna) VAR(columna)

Media de la columna, ignora valores nulos. Nmero de elementos en la columna, incluye valores nulos. Mximo valor de una columna. Mnimo valor de una columna. Suma valores de la columna. Varianza de la columna.

Funciones de fecha.
Funciones DATEADD(tipo, fecha, a) DATEDIF(tipo, f1, f2) DATEPART(tipo, fecha) Day(fecha) GETDATE DAY(fecha) MONTH(fecha) YEAR(fecha) Descripcin Aade a unidades de fecha del tipo dado (Day, Week, Month, Quarter, Year) Nmero de unidades de fecha del tipo dado (Day, Week, Month, Quarter, Year) Da el valor entero del tipo de fecha dado (Day, Week, Month, Quarter, Year) Da el da especificado en la fecha como un valor entero. Devuelve la fecha y hora actuales del sistema. Da el da especificado en la fecha como un valor entero. Da el mes especificado en la fecha como un valor entero. Devuelve el ao especificado en la fecha como valor entero.

Eliminar registros.
Para eliminar registros existentes en nuestras tablas, utilizamos la sentencia DELETE Su sintaxis es la siguiente:
DELETE FROM tabla WHERE condicin.

Esta sentencia elimina los registros de una tabla, pero incluso eliminando todos los registros de una tabla, esta sigue permaneciendo en nuestra base de datos. Para eliminar una tabla vaca de nuestra base de datos, utilizaremos la instruccin DROP TABLE.
DROP TABLE tabla.

Tenemos otra instruccin que permite eliminar todos los registros de una tabla de un modo ms rpido que si utilizamos la instruccin DELETE sin condicin, su sintaxis es la siguiente:
TRUNCATE TABLE tabla

En caso de existir claves forneas en la tabla no se puede utilizar, estamos obligados a utilizar la sentencia DELETE sin condicin.

SQL

41/43

Actualizar registros.
La instruccin UPDATE nos permite modificar los valores de una fila, varias o todos los registros de una fila en funcin de su condicin o condiciones. Esta instruccin slo puede modificar los registros de una nica tabla a la vez. Su sintaxis es la siguiente:
UPDATE tabla SET columna1 = valor1, columna2 = valor2, .... , columnaN = valoreN WHERE condicin

En el siguiente ejemplo se incrementa en 100 euros el salario de los empleados que tengan un salario menor a 1200 euros. Al principio tenemos los siguientes salarios:

Ejecutamos la consulta de actualizacin, y vemos que nos indica que 5 registros han sido modificados:

Si listamos ahora los empleados vemos las modificaciones que hemos realizado:

SQL

42/43

NDICE
SQL SERVER 2005 .................................................................................................................................... 2 CONFIGURACIN DE SQL SERVER 2005. .................................................................................................. 2 SQL SERVER 2005 MANAGEMENT STUDIO EXPRESS .................................................................. 6 INTRODUCCION ................................................................................................................................... 6 BASE DE DATOS ................................................................................................................................... 6 HERRAMIENTA DE ADMINISTRACIN Y GESTIN DE SQL SERVER 2005 ............................. 7 ADMINISTRACIN DE BASES DE DATOS ....................................................................................... 9 BASES DE DATOS .................................................................................................................................. 11 CREACIN DE TABLAS .................................................................................................................... 11 RELACIONES ...................................................................................................................................... 15 SQL ............................................................................................................................................................ 18 LENGUAJE DE DEFINICIN DE DATOS ......................................................................................... 19 LENGUAJE DE MANIPULACIN DE DATOS (DML) ..................................................................... 23

INDICE

43/43

Vous aimerez peut-être aussi