Curso Completo de SQL Server
Transcript of Curso Completo de SQL Server
-
7/24/2019 Curso Completo de SQL Server
1/226
Unidad 1. El entorno grfico SSMS
1.1. Introduccin
SQL Server 2005 es un sistema gestor de bases de datos relacionales de Microsoft Corporation orientado
sistemas medianos y grandes aunque tambin puede rodar en ordenadores personales. SQL Server Management Stud
(SSMS) es la herramienta de SQL Server que permite definir y gestionar todas las bases de datos almacenadas en
servidor SQL Server 2005.
En este tema veremos cmo utilizar el SQL Server Management Studio para manejar las bases de datos del servidor
organizaremos el texto en los siguientes puntos:
Instalar SQL Server 2005.
Entrada al SQL Server Management Studio
Las bases de datos: Estructura interna, crear, adjuntar, conectar y desconectar.
Las tablas: crear tablas, definirlas, modificar su contenido, etc.
Relacionar tablas
Las Consultas
Las Vistas
Si no sabes lo que es una base de datos relacional o no tienes conocimientos previos acerca de las bases de datos, puede
leer una introduccin a las bases de datos en el siguiente bsico
Unidad 1. Bsico: Introduccin a las bases de datos (I)
Objetivos de un SGBD
Un sistema gestor de bases de datos por definicin debe cumplir los siguientes objetivos:
Independencia de los datos.
Recordando uno de los problemas que plantean los ficheros convencionales. La independencia de los datos consiste en
hacer que los programas no sean tan dependientes de la estructura de los datos.
Se han definido dos tipos de independencia:
1. La independencia fsica: consiste en poder modificar la definicin interna de los datos (el esquema interno) sin que
ello suponga una modificacin de los programas existentes.
Por ejemplo, se puede cambiar la ubicacin de la base de datos, o se puede aadir un ndice sobre una tabla para
que las consultas se ejecuten ms rpidamente, sin que eso suponga una variacin en los esquemas externos y
conceptual, por lo que los programas (que utilizan el esquema externo) no se vern afectados.
2. La independencia lgica: consiste en poder cambiar el esquema conceptual sin que ello suponga una modificacin
de los programas existentes.
-
7/24/2019 Curso Completo de SQL Server
2/226
Por ejemplo podemos aadir un nuevo dato en la tabla de clientes como la direccin de email sin que los esquemas
externos se vean afectados.
Seguridad e integridad.
La seguridadconsiste en que los usuarios no puedan acceder a datos sin autorizacin.
Si juntamos toda la informacin de la empresa en un mismo sitio, el SGBD debe tener mecanismos para que cualquier
usuario pueda tener acceso a nicamente la informacin que necesita para las tareas que tiene encomendadas.
Esta seguridad se consigue por medio de los esquemas externos, ya que el usuario slo tiene acceso a su esquema extern
que le proporciona los datos que el administrador ha considerado incluir en ese esquema. Para el usuario no habr ms
datos que estos.
Adems los SGBD tienen mecanismos para definir autorizaciones que pueden ser de distinto tipo: autorizacin de lectura, d
insercin, de actualizacin, autorizaciones especiales para poder variar el esquema conceptual etc.
La integridadse refiere a que la informacin almacenada en la base de datos est libre de errores. Esto no siempre es
posible ya que existen distintos tipos de errores que tienen diferentes soluciones:
* Fallos de hardware. Estos errores no los puede evitar el SGBD pero se pueden subsanar facilitando copias de seguridad
procesos de recuperacin.
* Fallos del programador. Puede que aparezcan datos errneos en la base de datos como consecuencia de errores en el
programa que genera estos datos. Para evitar al mximo este tipo de errores el sistema debe ser fcil de programar, cuanto
ms controles realice el sistema de forma automtica, menos controles habr que incluir a nivel de programacin por lo que
limitaremos la probabilidad de fallo y los programas deben ser probados con juegos de ensayos bien definidos.
* Fallos del usuario final. El usuario que introduce datos en la base de datos tambin puede cometer errores, el sistema deb
permitir controlar al mximo la informacin que se introduce para limitar el nmero de estos errores, para ello los SGBD
incluyen clusulas de validacin de los datos, validaciones de diferentes tipos que veremos con ms detalle ms adelante.
* Fallos derivados de la concurrencia. Ya que toda la informacin est centralizada y los distintos usuarios acceden a ella d
forma simultnea, pueden ocurrir problemas cuando dos usuarios quieren acceder al mismo dato a la vez. Por ello el SGBD
debe tener establecidos mecanismos para evitar este tipo de problema, bloquear registros, abortar automticamente
transacciones etc.
Redundancia mnima
La redundancia consiste en que exista algn dato repetido en varios lugares.
Por ejemplo si tenemos la direccin del cliente en la factura, en la cuenta contable, en los datos generales del cliente; esto
como ya vimos anteriormente nos producir varios problemas:
la informacin repetida ocupa espacio innecesario.
la variacin de un domicilio supone el variar ese domicilio en todos los lugares donde est almacenado.
o mayor tiempo de proceso
o posibilidad de inconsistencia
-
7/24/2019 Curso Completo de SQL Server
3/226
Por todo ello hay que evitar al mximo esa redundancia, esto se consigue utilizando herramientas de diseo y obteniendo u
diseo ptimo de la base de datos.
Facilidad de recuperacin de la informacin
Otro objetivo muy importante de un SGBD es el proporcionar al usuario (o programador) unas herramientas potentes de
manejo de datos para que pueda de manera sencilla y rpida, obtener toda la informacin que desea sin que, por ello se
tenga que hacer un programa complejo.
Veremos que el SQL, lenguaje empleado para recuperar informacin de la base de datos, es un lenguaje muy potente ycercano al lenguaje hablado, y adems los SGBD incluyen entornos grficos sencillos de utilizar.
El administrador de la base de datos
El administrador es el encargado de gestionar y controlar todo el sistema con la ayuda que le proporciona el SGBD. Tiene
una gran responsabilidad ya que de l depende que el sistema funcione correctamente y como tiene el mximo nivel de
privilegios, sus errores pueden ser desastrosos.
Entre sus responsabilidades se incluye:
Instalar el SGBD en el sistema informtico (a veces).
Realizar el diseo de la base de datos.
Crear las bases de datos que se vayan a gestionar.
Crear y mantener los esquemas de las bases de datos.
Crear y mantener las cuentas de los usuarios de las bases de datos.
Colaborar con el administrador del sistema en las tareas de ubicacin, dimensionado y control de los archivos y
espacios de disco ocupados por el SGBD.
Establecer estndares de uso, polticas de acceso y protocolos de trabajo diario para los usuarios de las bases dedatos.
Efectuar tareas de explotacin como:
o Vigilar el trabajo diario colaborando en la resolucin de las dudas de los usuarios.
o Controlar los tiempos de acceso, tasas de uso, cargas en los servidores, anomalas, etc.
o Llegado el caso, reorganizar las bases de datos.
o Disear y efectuar el planning de copias de seguridad peridicas.
o Restaurar la base de datos despus de un incidente.
o Estudiar las auditoras mediante el ajuste de parmetros y con ayuda de las herramientas de monitorizaci
del sistema y de las estadsticas.
El diccionario de datos
Dentro del SGBD, hay una parte que son datos sobre los datos, es una base de datos en la que se almacena toda la
informacin necesaria para que el sistema funcione. Esta base de datos es el diccionario de datos y contiene:
-
7/24/2019 Curso Completo de SQL Server
4/226
La estructura lgica y fsica de la base de datos.
Las definiciones de todos los objetos de la base de datos: tablas, vistas, ndices, disparadores (triggers) funciones,
procedimientos almacenados, etc.
El espacio asignado y utilizado por los objetos.
Los valores por defecto de las columnas de las tablas.
Los privilegios otorgados a los usuarios. Informacin que permita obtener estadsticas y evaluaciones del rendimiento del sistema.
Tipos de bases de datos
Podemos realizar distintas clasificaciones de las bases de datos:
Segn su ubicacin
Segn la organizacin lgica de la informacin.
Tipos de bases de datos segn su ubicacin
1. Bases de datos locales.
En modo local tenemos la base de datos y el usuario ubicados en el mismo ordenador. Un ejemplo de base de datos que
funciona en modo local es Microsoft Access, MS Access es una base de datos fcil de manejar por usuarios poco expertos
que funciona bien en modo local y mientras no tenga que albergar grandes cantidades de informacin.
Ventajas Desventajas
EconomaEs la ms barata.
Monousuario
En un instante determinado slo la puede utilizar una
persona.
Simplicidad
No se necesita llevar controles de accesos concurrentes, de
transmisin de datos, etc.
Capacidad
Suele tener una capacidad de almacenamiento limitado.
2. Bases de datos centralizadas
En los sistemas centralizados tenemos la base de datos completa en un mismo servidor, y todos los usuarios acceden a esservidor. Que la base de datos est en un mismo servidor no implica que est en un solo archivo o en el mismo disco, pued
estar repartida.
-
7/24/2019 Curso Completo de SQL Server
5/226
En modo Cliente/Servidor, la base de datos se encuentra en un ordenador (el Servidor) y los usuarios acceden
simultneamente a esa base de datos a travs de la red (sea una red local o Internet) desde sus ordenadores a travs de u
programa Cliente.
A nivel de empresas es el sistema que ms se utiliza en la actualidad.
Ventajas Desventajas
Multiusuario
Permite que varios usuarios accedan a la vez a la misma
informacin.
Complejidad
Tiene que incluir y gestionar un sistema de usuario y
subesquemas.
No redundancia
Al estar todos los datos en el mismo servidor, la informacin
no se duplica y es ms facil evitar fallos debidos a
redundancias.
Seguridad
Se tienen que realizar controles para garantizar la seguridad
de los datos, tanto a nivel interno como a nivel de
comunicaciones.
-
7/24/2019 Curso Completo de SQL Server
6/226
3. Bases de datos distribuidas
Tenemos la informacin repartida en distintas localizaciones unidas todas ellas mediante red y un sistema gestor de bases
de datos distribuidas.
Las distintas localizaciones suelen ser distintas geogrficamente.
Ventajas Desventajas
Rendimiento
Una clara ventaja es que es posible ubicar los datos en
lugares donde se necesitan con ms frecuencia, aunque
tambin se permita a usuarios no locales acceder a los datossegn sus necesidades. Esto hace que la informacin se
recupere de forma ms rpida y gil en las ubicaciones
locales. Adems los sistemas trabajan en paralelo, lo cual
permite balancear la carga en los servidores.
Complejidad en el diseo de datos
Adems de las dificultades que generalmente se encuentran
al disear una base de datos, el diseo de una base de dato
distribuida debe considerar la fragmentacin, replicacin yubicacin de los fragmentos en sitios especficos, se tiene
que trabajar tomando en cuenta su naturaleza distribuida, po
lo cual no podemos pensar en hacer joins que afecten a
tablas de varios sistemas, etc.
Disponibilidad
En caso de que falle la base de datos de alguna localidad, el
sistema no se colapsa, puede seguir funcionando excluyendo
los datos de la localidad que haya fallado.
Complejidad tcnica
Se debe asegurar que la base de datos sea transparente, se
debe lidiar con varios sistemas diferentes que pueden
presentar dificultades nicas.
Autonoma local
Un departamento puede controlar los datos que le
pertenecen.
Economa en el mantenimiento
La complejidad y la infraestructura necesaria implica que se
necesitar mayor mano de obra.
Economa en la implantacin Seguridad
-
7/24/2019 Curso Completo de SQL Server
7/226
Es ms barato crear una red de muchas mquinas pequeas,
que tener una sola mquina muy poderosa.
Se debe trabajar en la seguridad de la infraestructura as
como cada uno de los sistemas.
Modularidad
Se pueden modificar, agregar o quitar sistemas de la base de
datos distribuida sin afectar a los dems sistemas (mdulos).
Integridad
Se vuelve difcil mantener la integridad, aplicar las reglas de
integridad a travs de la red puede ser muy caro en trminos
de transmisin de datos.
Falta de experiencia
Las bases de datos distribuidas son un campo relativamente
nuevo y poco comn por lo cual no existe mucho personal
con experiencia o conocimientos adecuados.
Carencia de estndares
An no existen herramientas o metodologas que ayuden a
los usuarios a convertir un DBMS centralizado en un DBMS
distribuido.
Tipos de bases de datos segn la organizacin lgica de los datos
En un principio existan tres tipos de bases de datos segn su estructura interna (la manera de organizar la informacin):
Bases de datos jerrquicas
Bases de datos en red
Bases de datos relacionales.
Ms recientes son las bases de datos orientadas a objetos y las bases de datos multidimensionales.
1. Las bases de datos jerrquicas
En una base de datos jerrquica se organizan los datos utilizando estructuras arborescentes (en rbol).
Un RBOL es una estructura jerrquica en la que los elementos se suelen denominar NODOS y existen dependencias entr
los nodos.
La dependencia es de 1:M del tipo padre/hijo. Un hijo no puede tener ms de un padre, pero un padre varios hijos.
Un ejemplo de base de datos jerrquica es el sistema IMS.
-
7/24/2019 Curso Completo de SQL Server
8/226
2. Las bases de datos en red
Tambin en desuso, en una base de datos en red se utiliza la estructura de grafo/red, como en el caso anterior los distintos
objetos estn relacionados entre s mediante relaciones del tipo 1:M pero en este caso un objeto puede estar relacionado
como hijo con varios elementos que sern sus padres. Un este caso las relaciones que se crean se denominan SET y el
equivalente al padre se denomina PROPIETARIO (OWNER) y el equivalente al hijo se denomina MIEMBRO (MEMBER).
Un ejemplo de sistema en red es el CODASYL. Tambin existen modelos para realizar el diseo de datos orientado a base
de datos en red.
En red podramos representar lo mismo que la estructura anterior y adems lo siguiente:
Los sistemas jerrquico y en red constituyen la primera generacin de los SGBD. Pero estos sistemas presentan algunos
inconvenientes:
Es necesario escribir complejos programas de aplicacin para responder a cualquier tipo de consulta de datos, por
simple que sta sea.
La independencia de datos es mnima.
No incluyen controles de integridad.
Por lo que pronto fueron sustituidos por los sistemas relacionales.
3. Las bases de datos relacionales
Esta es la estructura que se ha impuesto para aplicaciones de gestin, consiste en organizar los datos en forma de tablas,
las relaciones entre los objetos se consiguen incluyendo en la tabla del hijo, la clave del objeto padre. Como son las que
utilizaremos durante todo el mdulo hemos reservado un apartado especial para ellas.
4. Las bases de datos orientadas a objetos
Es un modelo ms reciente, trata de almacenar en la base de datos los objetos completos (estado y comportamiento). La
informacin que contienen se organiza en atributos y el comportamiento en operaciones.
5. Las bases de datos mutidimensionales
En una base de datos multidimensional los datos se almacenan en tablas de mltiples dimensiones en vez de tablas
bidimensionales como las del modelo relacional. Se utilizan para grandes volmenes de informacin.
La base de datos relacional
Elementos de una base de datos relacional
Los datos se organizan en relacionescompuestas por tuplasde atributos. Si convertimos esta definicin a tablas
tenemos que los datos se organizan en tablascompuestas por filas(registros) y columnas(campos).
A cada tabla se le asigna un nombre nico.
-
7/24/2019 Curso Completo de SQL Server
9/226
Una tabla tiene 0 o ms filas, y cada fila contiene la informacin de un determinado sujeto de la relacin.
Las filas en un principio estn desordenadas.
La lista de los atributos dispuestos en un orden especfico de izquierda a derecha y que forman la definicin de una
tabla se denomina esquema de la tabla, mientras que los valores concretos de los datos que estn almacenados e
la tabla se llaman ocurrencias.
Por ejemplo, tenemos estas dos tablas:
El esquema de la tabla Piezasest compuesto por las columnas (Codigo, Denominacin, Precio, Fabricante,
Codigo_segn_fab).
Codigoes el cdigo de la pieza, Denominacionel nombre de la pieza, Fabricanteel cdigo del fabricante que nos suministr
la pieza y Cdigo_segn_fab el cdigo que utiliza ese fabricante para identificar la pieza en su sistema de gestin.
Una ocurrencia de fila de la tabla Piezassera:1, Taburete 3 patas, 25, Fab1, T123-34.
Todos los valores de una columna determinada tienen el mismo tipo de datos, y stos estn extrados de un
conjunto de valores legales llamado dominio de la columna. Muchas veces el dominio se corresponder con un tip
de datos estndar del sistema.
Por ejemplo en la tabla Piezasla columna Codigoest definida sobre el dominio de los enteros.
A parte de los valores del dominio, la columna puede contener un valor especial, el valor nulo. El valor nulo (NULL
es importante porque representa la ausencia de valor en el campo y no es lo mismo que el valor cero 0 o la caden
vaca o espacios en blanco. De hecho es un valor tan especial que no funciona como los dems valores, por ejemp
no podemos comparar (con el operador de comparacin =) un campo con el valor nulo, tenemos que utilizar un
operador especial (IS NULL). Incluso se han tenido que redefinir los operadores lgicos para tener en cuenta el val
nulo.
Ej. En la tabla Fabricantesel campo direccinde la primera fila contiene el valor nulo (null) esto significa que estefabricante no tiene direccin (al menos conocida).
En una tabla cada columna tiene un nico nombre y ste no se puede utilizar para nombrar otra columna de la
misma tabla pero s de otra tabla.
Por ejemplo en la tabla Piezasno se pueden definir dos columnas llamadas Codigo, por eso el segundo cdigo lo
hemos llamado Codigo_segun_fab. Pero en la tabla Fabricantesla columna IdFabse poda haber llamado Codigo
sin problema.
-
7/24/2019 Curso Completo de SQL Server
10/226
En una tabla no se admiten dos filas con los valores coincidentes en todos sus campos. Esta restriccin no se suel
cumplir.
Esta regla nos dice que por ejemplo en la tabla Fabricantesno pueden haber dos filas con los valores Fab1,
Muebles la Madera, null.
Realmente sera informacin redundante, por eso la existencia de esta regla, no obstante en algunos casos muy
concretos s es necesario poder almacenar dos ocurrencias de fila idnticas, por esta razn muchos SGBD no
cumplen esta regla.
Toda tabla debe tener una clave principal(clave primaria).
Una clave primaria es cualquier una columna (o combinacin de columnas) que permite identificar de forma unvoc
cada una de las filas de la tabla. Para que pueda cumplir su cometido, la clave primaria no puede contener
valores nulos ni valores duplicados(no podr haber dos filas con el mismo valor en este campo). Hay SGBD qu
incluyen el concepto de clave primaria pero no la hacen obligatoria, por lo que en estos sistemas se pueden definir
tablas sin clave primaria.
En una tabla pueden existir ms de una columna que permita identificar las filas de la tabla, si queremos utilizar tale
columnas como identificadores las definiremos como claves secundarias(alternativas). Una clave secundaria tien
las mismas restricciones que una clave primaria, pero como no podemos definir dos claves primarias, definimos laque se vaya a utilizar ms frecuentemente como clave primaria y la otra (u otras) como secundarias.
Por ejemplo en la tabla Piezasla clave primaria es el campo Codigoya que no hay ni puede haber dos piezas con
mismo cdigo. Este campo realmente sirve para identificar las filas de la tabla, sabiendo un valor de cdigo (por
ejemplo el 2) sabremos que nos referimos a la fila de la mesa ovalada.
En esta misma tabla tenemos una posible clave alternativa, la formada por los campos Fabricantey
Codigo_segun_fab ya que en la tabla Piezases imposible tener dos filas con la misma combinacin de valores en
estos campos (el cdigo_segun_fabes el cdigo que utiliza el fabricante para identificar sus piezas).
Otro concepto muy importante, fundamental en las bases de datos relacionales, es la clave ajena(externao
fornea).
Una clave ajena es un campo (o combinacin de campos) que contiene la referencia a una fila de otra tabla, tambi
puede referirse a la misma tabla. En otras palabras, es un campo que seala a un registro de otra tabla, contiene u
valor que identifica un registro de la otra tabla. Son los campos que se utilizan para relacionar las tablas entre s.
Una tabla puede tener 0, una o varias claves ajenas(externas, forneas).
Una clave ajena puede contener valores duplicados y valores nulos.
Siguiendo el ejemplo anterior, en la tabla Piezastenemos la clave ajena Fabricanteya que en este campo nos
guardamos un valor que seala a una fila de la tabla Fabricantes, en este campo tenemos el cdigo del fabricante
que nos suministra la pieza y este cdigo nos lleva al fabricante correspondiente en la tabla Fabricantes.
Por ejemplo la pieza 3 es servida por el fabricante Fab2, valor que seala al fabricante Maderas Asociados.
El SGBD deber velar por la integridad de los datos, para ello incluye varias reglas de integridad que se
comprobarn de forma automtica sin necesidad de la intervencin externa de los usuarios o de los programas de
aplicacin.
Existen distintos tipos de reglas de integridad:
-
7/24/2019 Curso Completo de SQL Server
11/226
o La integridad de entidades (integridad de claves): Toda tabla debe tener una clave primaria que permit
identificar unvocamente los registros que contiene, por lo tanto no puede contener el valor nulo ni valores
duplicados.
En el ejemplo anterior si intentamos insertar una nueva pieza con el cdigo 2, el sistema no nos dejar
porque ya hay una pieza con este mismo cdigo en la tabla.
o La integridad referencial: En una clave ajena no puede haber un valor no nulo que no exista en la tabla d
referencia. Para que no existan errores de integridad referencial en la base de datos, el sistema comprueb
automticamente que los valores introducidos en las claves ajenas existan en el campo de referencia en la
otra tabla, si no existe, no nos dejar insertar el registro.
Volviendo al ejemplo anterior, si intentamos insertar una pieza con un cdigo de fabricante que no existe en
la tabla de fabricantes, el sistema no nos dejar.
A nivel de control sobre los datos, el SGBD debe de proporcionar herramientas para poder definir restricciones de
dominio que se comprobarn de forma automtica (se comprueba que el valor introducido en una columna
pertenece al dominio de la columna, al tipo de datos), y reglas de negocio, que son reglas especficas sobre los
datos, en este tipo de reglas entran las reglas de validacin y reglas definidas a nivel superior que veremos ms
adelante.Una regla de validacin sera por ejemplo que el precio no pueda ser inferior a 10 euros, y una regla de negocio, qu
no pueda haber ms de 20 fabricantes.
Un SGBD relacional sigue la arquitectura de tres niveles en la que tenemos en el nivel externo las vistas, en nivel
conceptual el esquema conceptual con la definicin de todas las tablas, columnas que las componen y relaciones
entre ellas, en el nivel interno tenemos la definicin fsica de la base de datos.
Finalmente tenemos para poder manejar la informacin almacenada en la base de datos un lenguaje que cumple la
reglas de Codd, el lenguaje SQL que veremos en prximos temas.
1.2. Instalar SQL Server 2005
Existen diferentes versiones (ediciones) del producto, por lo que es un producto muy verstil, que puede cumplir con la
exigencias de cualquier empresa, puede ser utilizado para gestionar bases de datos en un PC en modo local a gestion
todo el sistema de informacin de grandes empresas pasando por sistemas que requieran menos potencia y por sistema
mviles.
Actualmente se utiliza ms en entornos Cliente/servidor con equipos medianos y grandes.
Para realizar este curso te recomendamos instalar la versin gratuita: Express. Puedes descargarla desde la pgina web d
Microsoft, desde el enlace para iniciar descarga. Si quieres ver las diferentes ediciones y sus caractersticas principales visel siguiente avanzado
Si la instalacin se realiza a partir del archivo descargado de Internet, la descarga se empaqueta como un nico ejecutab
mediante una tecnologa de instalacin de Microsoft llamada SFXCab. Al hacer doble clic en el .exe se inic
automticamente el proceso de instalacin.
Tan slo deberemos seguir el asistente. Los puntos ms importantes a tener en cuenta son:
-
7/24/2019 Curso Completo de SQL Server
12/226
Habilitar el SQL Server Management Studio en la instalacin (si no lo est por defecto) cuando nos pregunte q
componentes deseamos instalar.
Indicar que se trata de una Instancia predeterminada.
1.3. Entrada al SQL Server Management Studio
Aunque trabajemos en modo local, la entrada a la herramienta es la misma. Para empezar entramos a travs del acce
directo o a travs de Inicio, Programas, Microsoft SQL Server 2005, SQL Server Management Studio.
Lo primero que deberemos hacer es establecer la conexin con el servidor:
Seleccionamos el nombre del servidor y pulsamos el botn Conectar. Se abrir la ventana inicial del SQL Serv
Management Studio (en adelante SSMS):
-
7/24/2019 Curso Completo de SQL Server
13/226
En la parte izquierda tenemos abierto el panel Explorador de Objetos en el que aparece debajo del nombre del servidor co
el que estamos conectados una serie de carpetas y objetos que forman parte del servido
En el panel de la derecha se muestra la zona de trabajo, que vara segn lo que tengamos seleccionado en el Explorador d
objetos, en este caso vemos el contenido de la carpeta que representa el servidor ord01.
En la parte superior tenemos el men de opciones y la barra de herramientas Estndar.
Con las siguientes opciones:
1. Nueva consulta 6. Consulta de SQL Server Mobile 11. Resumen
2. Consulta de motor de Base de datos 7. Abrir archivo 12. Explorador de Objetos
3. Consulta MDX de Analysis Services 8. Guardar 13. Explorador de Plantillas
4. Consulta DMX de Analysis Services 9. Guardar todo 14. Ventana de Propiedades
5. Consulta MXLA de Analysis Services 10. Servidores registrados
En caso de que utilices la versin Express, es posible que no dispongas de algunos de stos botones.
1.4. Estructura interna de una base de datos
Antes de empezar tenemos que tener claro cmo se organiza la informacin en una base de datos SQL Server 2005.
Las bases de datos de SQL Server 2005 utilizan tres tipos de archivos:
Archivos de datos principales
En una base de datos SQLServer los datos se pueden repartir en varios archivos para mejorar el rendimiento de la
base de datos.
El archivo de datos principal es el punto de partida de la base de datos y apunta a los otros archivos de datos de la
base de datos. Cada base de datos tiene obligatoriamente un archivo de datos principal. La extensin recomendad
para los nombres de archivos de datos principales es .mdf.
Archivos de datos secundarios
Los archivos de datos secundarios son todos los archivos de datos menos el archivo de datos principal. Puede que
algunas bases de datos no tengan archivos de datos secundarios, mientras que otras pueden tener varios archivos
de datos secundarios. La extensin de nombre de archivo recomendada para los archivos de datos secundarios es
.ndf.
Adems los archivos de datos se pueden agrupar en grupos de archivos. Para cada base de datos pueden
especificarse hasta 32.767 archivos y 32.767 grupos de archivos.
-
7/24/2019 Curso Completo de SQL Server
14/226
Archivos de registro
Los archivos de registro (archivos de log) almacenan toda la informacin de registro que se utiliza para recuperar la
base de datos, el tambin denominado registro de transacciones. Como mnimo, tiene que haber un archivo de
registro por cada base de datos, aunque puede haber varios. La extensin recomendada para los nombres de
archivos de registro es .ldf.
SQL Server 2005 no exige las extensiones de nombre de archivo .mdf, .ndf y .ldf, pero estas extensiones ayudan
identificar las distintas clases de archivos y su uso.
Cada base de datos tiene al menos 2 archivos (un archivo de datos principal y un archivo de registro) y opcionalmente u
grupo de archivos.
Los archivos de datos y de registro de SQL Server se pueden colocar en sistemas de archivos FAT o NTFS. Se recomiend
utilizar NTFS por los aspectos de seguridad que ofrece. No se pueden colocar grupos de archivos de datos de lectura
escritura, y archivos de registro, en un sistema de archivos NTFS comprimido. Slo las bases de datos de slo lectura y l
grupos de archivos secundarios de slo lectura se pueden colocar en un sistema de archivos NTFS comprimido.
1.5. Crear una base de datos en SSMS
En el Explorador de objetos, si desplegamos la carpeta Bases de datos nos aparecen Bases de datos del sistema y la
bases de datos de usuario despus de la carpeta Instantneas...
Despus de la instalacin, en la carpeta Bases de datos del sistema se habr creado una especial denominada master se
utiliza como base de datos de usuario por defecto.
Las dems bases de datos forman tambin parte del diccionario de datos y las utiliza el sistema para llevar a cabo su
gestin.
-
7/24/2019 Curso Completo de SQL Server
15/226
Las bases de datos de los usuarios se deben crear preferentemente fuera de la carpeta Bases de datos del sistema.
Para crear una nueva base de datos de usuario nos posicionamos sobre la carpeta Bases de datos y con el botn derech
del ratn desplegamos el men contextual del que elegimos la opcin Nueva base de datos
Se abre a continuacin el cuadro de dilogo donde definiremos la base de datos que queremos crear:
-
7/24/2019 Curso Completo de SQL Server
16/226
Lo mnimo a introducir ser el campo Nombre de la base de datos, ste es el nombre de la base de datos lgica, la base d
datos a la que nos referiremos dentro del SSMS, a nivel conceptual (en la imagen Mibase).
Esta base de datos est asociada a dos archivos fsicos, en la parte inferior aparecen esos archivos. Para facilitarnos
tarea, al teclear el nombre de la bd lgica, se rellenan automticamente los nombres de los archivos fsicos, el de datos co
el mismo nombre y el del archivo de registro con el mismo nombre seguido de _log. Estos nombres son los nombres que s
asumen por defecto pero los podemos cambiar, posicionando el cursor en el nombre y cambindolo.
Para cada archivo fsico podemos definir una serie de parmetros como el tipo de archivo (si es de datos o de transaccioneRegistro) y su ocupacin inicial (Tamao inicial).
Si no indicamos ninguna ubicacin podemos ver que los guarda en la carpeta del SQL Server/MSSQL.n/MSSQL/DATA
n representa un nmero que puede variar de una instalacin a otra.
Estos son los archivos mnimos en los que se almacenar la base de datos, pero como ya vimos anteriormente se pued
almacenar en ms archivos, los tenemos que definir todos en esta ventana a continuacin de los dos obligatorios.
Para aadir ms archivos fsicos disponemos del botn Agregar.
Al pulsar el botn Agregar se crea una nueva fila en la tabla de archivos fsicos donde deberemos escribir el nombre d
archivo, su tipo (desplegando la lista podemos elegir entre de datos o de registro) y dems parmetros.
-
7/24/2019 Curso Completo de SQL Server
17/226
Al agregar un nuevo archivo se activa el botn Quitar, siempre que estemos posicionados encima de un archivo secunda
para poder as eliminarlo si lo queremos.
No podemos eliminar ni el de datos primario, ni el de registro inicial.
Si nos fijamos en la zona de la izquierda, vemos que nos encontramos en la pestaa General, podemos cambiar otro
parmetros de la base de datos pulsando en Grupos de archivos o en Opciones:
-
7/24/2019 Curso Completo de SQL Server
18/226
-
7/24/2019 Curso Completo de SQL Server
19/226
1.6. Adjuntar una base de datos
En ocasiones no necesitaremos crear la base de datos desde cero, porque sta ya estar creada. ste es el caso de lo
ejercicios del curso. Para realizarlos, debers adjuntar una base de datos ya existente a tu servidor. Para ello, lo qu
tenemos que hacer es pegar los archivos en la ubicacin que queramos, y luego indicar al SQL Server que vamos a utiliz
esta base de datos, de la siguiente manera:
En el Explorador de objetos, sobre la carpeta Bases de datos desplegar el men contextual y elegir Adjuntar...
En la siguiente ventana elegimos la base de datos:
-
7/24/2019 Curso Completo de SQL Server
20/226
Pulsando en Agregar indicamos el archivo de datos primario en su ubicacin y automticamente se adjuntar la base d
datos lgica asociada a este archivo.
Finalmente pulsamos en Aceptar y aparece la base de datos en nuestro servidor.
La opcin Adjuntar slo se utiliza la primera vez, cuando todava no tenemos la base de datos en el disco.
Unidad 1. Ejercicio paso a paso: Adjuntar base de datos
Objetivo
Importar bases de datos al servidor de SQL Server que has instalado.
Ejercicio paso a paso
1. En la carpeta Ejercicios del curso, busca U3_Consultas_simples.zip y GestionA.zip y extrae su contenido en una carpeta
que llamars Bases de datos.
2. Abre el SQL Server Management Studio Express.
-
7/24/2019 Curso Completo de SQL Server
21/226
3. Haz clic con el botn secundario del ratn sobre la carpeta Bases de datos que se encuentra en el Explorador de objetos
del SSMS.
4. En el men contextual, elige Adjuntar...
5. Pulsa el botn Agregar y busca el directorio Bases de datos que contiene las dos bases que has descargado.
6. Selecciona la primera base (Gestion.mdf) y pulsa Aceptar.
7. Pulsa el botn Agregar de nuevo y esta vez selecciona GestionA.mdf. Cambia su nombre lgico (el campo Adjuntar com
a Gestion. As es como nos referiremos a ella.
8. Si todo va bien, te indicar que se han adjuntado correctamente y las vers en el Explorador de objetos (GestionA y
GestionSimples). Si no las ves, pulsa el botn Actualizar .
1.7. Conectar y Desconectar la base de datos
Una vez hemos creado la base de datos o la hemos adjuntado a nuestro servidor, nos daremos cuenta de que no podremo
manipular los archivos de la base desde fuera del gestor SSMS, por ejemplo, desde el Explorador de Windows. Es decir, n
podremos copiar, cortar, mover o eliminar los archivos fuente mdf, ndf y ldf. Si lo intentamos se mostrar un aviso de que
base de datos est en uso.
sto es as porque SQL Server sigue en marcha, a pesar de que se cierre el gestor. Ten en cuenta que el servidor de bas
de datos normalmente se crea para que sirva informacin a diferentes programas, por eso sera absurdo que dejara d
funcionar cuando cerramos el programa gestor, que slo se utiliza para realizar modificaciones sobre la base.
Para poder realizar acciones sobre la base de datos, sta debe estar desconectada. Para ello, desde el SSM
desplegamos el men contextual de la base de datos que nos interese manipular y seleccionaremos la opcin Poner fue
de conexin:
Aparecer un smbolo a la izquierda de la base de datos indicndonos que la base de datos est desconectada, a par
de este momento Windows nos dejar manipular los archivos.
Para volver a conectar la base de datos y seguir trabajando con ella, accederemos al mismo men contextual peelegiremos la opcin Poner en conexin:
-
7/24/2019 Curso Completo de SQL Server
22/226
El caso ms inmediato en el que puedes necesitar conectar y desconectar la base de datos es copiar a un pendrive loarchivos de las bases que utilizars en los ejercicios para poder trabajar en diferentes ordenadores con ellos. Para aprende
cmo hacerlo, visita el siguienteEjercicio Trasladar una base de datos a otro equipo.
Unidad 1. Ejercicio paso a paso: Trasladar una base de datos a otro equipo
Objetivo
Copiar una base de datos que est en uso en un servidor, y adjuntarla o actualizarla en otro.
Ejercicio paso a paso
Vamos a suponer que tenemos una base de datos en el servidor de clase y queremos llevarnos la base de datos a
nuestra casa para seguir trabajando con ella.
1. Sabemos que la base de datos est en los archivos fsicos que definimos cuando definimos la base de datos, estos
archivos se localizan en una determina ruta. Esta informacin se encuentra en las propiedades de la base de datos, para
acceder a la ventana de propiedades de la base de datos (parecida la que se abri cuando creamos la base de datos)
utilizamos como siempre el men contextual que nos llevar a la ventana Propiedades de la base de datos:
2. Una vez sabemos la ruta, utilizamos el Explorador de Windows para abrir a la carpeta donde se encuentran los archivos.
3. Volvemos al SSMS y desconectamos la base de datos, como ya hemos visto: Desde el men contextual y eligiendo
Tareas > Poner fuera de conexin.
http://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htmhttp://www.aulaclic.es/sqlserver/epp_1_5_2.htm -
7/24/2019 Curso Completo de SQL Server
23/226
4. Ahora que ya est desconectada, copiamos los archivos desde el Explorador de Windows, por ejemplo, a nuestro
pendrive.
Ya tenemos una copia de la base de datos de clase. Ahora vamos a ver cmo incluirla en el otro ordenador, es decir, en
casa.
- En caso de que la base de datos no exista, debers adjuntarla como ya hemos visto: Desde el men contextual de bases
de datos y eligiendo la Adjuntar...
- En caso de que la base de datos ya exista y lo que quieras sea actualizarla, debers:
1. Desconectar la base existente desde SSMS.
2. Sobreescribir los archivos fsicos por los nuevos que llevas en el pendrive, desde el Explorador de Windows.
3. Volver a conectar la base de datos desde SSMS.
En caso de que tu versin de SQL Server no tenga las opciones Poner en conexin y Poner fuera de conexin, deber
utilizar la opcin Separar... y luego volver a adjuntarla.
Para crear una nueva tabla primero nos tenemos que posicionar en la base de datos donde queremos que se almacene
tabla, desplegar el men contextual y seleccionar la opcin Nueva tabla.
En la ventana que se abre debemos definir las columnas de la tabla:
A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema verem
las bsicas y las dems las veremos con ms detalle cuando veamos la instruccin SQL CREATE TABL
De momento no tenemos definida ninguna columna, al teclear un nombre se crea una primera entrada en esta tabla con
definicin de la primera columna. En la columna Tipo de datos elegimos qu tipo de valores se podrn almacenar en
columna.
-
7/24/2019 Curso Completo de SQL Server
24/226
1.8. Crear una nueva tabla
Para crear una nueva tabla primero nos tenemos que posicionar en la base de datos donde queremos que se almacene la
tabla, desplegar el men contextual y seleccionar la opcin Nueva tabla.
En la ventana que se abre debemos definir las columnas de la tabla:
A cada columna se le asigna un nombre, un tipo de datos, y opcionalmente una serie de propiedades, en este tema veremo
las bsicas y las dems las veremos con ms detalle cuando veamos la instruccin SQL CREATE TABLE.
De momento no tenemos definida ninguna columna, al teclear un nombre se crea una primera entrada en esta tabla con ladefinicin de la primera columna. En la columna Tipo de datos elegimos qu tipo de valores se podrn almacenar en la
columna.
1.9. Tipos de datos
Podemos elegir entre todos los tipos que aparecen arriba.
Algunos tipos no necesitan ms, como por ejemplo el tipo entero (int), y otros se pueden completar con una longitud, como
los tipos alfanumricos:
-
7/24/2019 Curso Completo de SQL Server
25/226
En este ejemplo hemos definido una columna (Codigo) de tipo Entero corto (Smallint), y una columna (Nombre) que
almacenar hasta 20 caracteres alfanumricos (nchar(20)), en este caso la longitud la indicamos en la pestaa Propiedade
de columna en la propiedad Longitud.
Las propiedades de la columna pueden variar dependiendo del tipo de datos de la columna seleccionada, por ejemplo los
campos enteros no tienen la propiedad longitud, ya que el propio tipo define la longitud del campo, en cambio los campos d
tipo numeric o decimal no tiene la propiedad longitud pero s las propiedades escala y precisin, los valores que permiten
definir el tamao del campo.
1.10. Valores nulos
Tambin podemos indicar si la columna permitir valores nulos o no, o bien cambiando la propiedad Permitir valores nulo
que aparece debajo de la propiedad Longitud, o bien simplemente marcando o desmarcando la casilla de la column
Permitir valores nulos que se encuentra al lado de la columna Tipo de datos. Si la casilla est marcada, el usuario podr
rellenar el campo cuando inserte una fila de datos en la tabla.
1.11. Columna con contador
-
7/24/2019 Curso Completo de SQL Server
26/226
En la mayora de los sistemas gestores de bases de datos tenemos un tipo de datos de tipo contador, autonumric
autoincremental, etc. Este tipo hace que el propio sistema es el encargado de rellenar el campo con un valor que vincrementando conforme se crean ms filas de datos en la tabla.
Las columnas de este tipo se utilizan normalmente para numerar las filas de la tabla, como no habrn dos filas con el mism
valor (el sistema se encarga de incrementar el valor cada vez que se crea una nueva fila), estos campos se suelen utiliz
como claves primarias.
En SQL Server 2005 no existe el tipo de datos Contador pero se consigue el mismo funcionamiento asignando a la column
un tipo de datos numrico y definiendo la columna como columna de identidad.
En las propiedades de la columna marcamos S en la propiedad (Identidad) y a continuacin podemos indicar en qu val
queremos que empiece el contador (Inicializacin de identidad) y en cunto incrementar cada vez que se cree un nuev
registro (Incremento de identidad).
Aunque este tipo de columnas se utiliza frecuentemente como clave primaria, SQL Server no le asigna automticamen
esta funcin, la tenemos que definir nosotros mismos, pero s fuerza a que sea una columna sin valores nulos. No se pued
definir ms de una columna de identidad por tabla.
1.12. Clave primaria
Para definir una columna como clave primaria, posicionamos el puntero del ratn sobre la columna, desplegamos el men
contextual y seleccionamos la opcin Establecer Clave principal:
-
7/24/2019 Curso Completo de SQL Server
27/226
Aparecer una llave a la izquierda del nombre, smbolo de las claves principales:
Para definir una clave primaria compuesta por varias columnas, seleccionamos las columnas manteniendo pulsada la tec
Ctrl y luego seleccionamos la opcin.
Para quitar una clave principal, hacemos lo mismo pero en esta ocasin seleccionamos la opcin Quitar clave principal.
Tambin podemos utilizar el icono de la barra de herramientas.
1.13. Aadir o eliminar columnas
Una vez definidas algunas columnas, si queremos aadir una nueva columna entre dos, nos posicionamos en la segunda
seleccionamos la opcin Insertar columna del men contextual.
La nueva columna se colocar delante:
Del mismo modo si queremos eliminar la definicin de una columna, nos posicionamos en la columna a eliminar
seleccionamos la opcin Eliminar columna:
-
7/24/2019 Curso Completo de SQL Server
28/226
O simplemente hacemos clic en la zona a la izquierda del nombre y pulsamos la tecla Supr.
Finalmente guardamos la tabla, nos pedir el nombre de la tabla:
La nueva tabla aparecer en la lista de tablas de la base de datos:
1.14. Modificar la definicin de una tablaPara entrar a la ventana de definicin de la tabla utilizamos la opcin Modificar de su men contextual (Tambin es posib
que se llame Diseo):
Se abrir la ventana que ya conocemos para definir las columnas de la tabla.
1.15. Insertar datos en la tabla
Ahora que tenemos la tabla creada podemos rellenarla con datos. Para eso debemos abrir la tabla:
-
7/24/2019 Curso Completo de SQL Server
29/226
Se abrir una ventana parecida a esta:
La primera columna sirve para indicarnos el estado de una fila, por ejemplo el * no
indica que es una nueva fila, esta fila realmente no est en la tabla, nos sirve de contenedor para los nuevos datos qu
queremos insertar.
Para insertar una nueva fila de datos slo tenemos que rellenar los campos que aparecen en esa fila (la del *), al cambiar d
fila los datos se guardarn automticamente en la tabla a no ser que alguno infrinja alguna regla de integridad, en ese caSQL Server nos devuelve un mensaje de error para que corrijamos el dato errneo, si no lo podemos corregir entonces s
podemos deshacer los cambios.
1.16. Modificar datos
Para modificar un valor que ya est en una fila de la tabla slo tenemos que posicionarnos en el campo y rectificar el valo
En cuanto modificamos un valor, la fila aparece con un lpiz escribiendo (ver imagen), este lpiz nos indica que la fila se h
modificado y tiene nuevos datos por guardar. Al salir de la f ila sta se guardar automticamente a no ser que el nuevo val
infrinja alguna regla de integridad. Si queremos salir de la fila sin guardar los cambios, tenemos que cancelar la actualizaci
pulsando la tecla ESC.
1.17. Eliminar filas
Para eliminar una fila completa, la seleccionamos y pulsamos la tecla Supr o bien desplegamos su men contextual
seleccionamos la opcin Eliminar.
En cualquiera de los dos casos nos aparece un mensaje de confirmacin.
-
7/24/2019 Curso Completo de SQL Server
30/226
1.18. Relacionar tablas
Como ya hemos visto, en una base de datos relacional, las relaciones entre las tablas se implementan mediante la definici
de claves ajenas, que son campos que contienen valores que sealan a un registro en otra tabla, en esta relacin a
creada, la tabla referenciada se considera principal y la que contiene la clave ajena es la subordinada.
Desde el entorno grfico del SSMS podemos definir claves ajenas entrando en el diseo de la tabla y desplegando el men
contextual del campo que va a ser clave ajena:
Seleccionamos la opcin Relaciones y se abre la ventana:
Al pulsar el botn que se encuentra en la fila Especificacin de tablas y columnas se abre el dilogo donde definiremos
relacin:
-
7/24/2019 Curso Completo de SQL Server
31/226
En la parte derecha tenemos la tabla en la que estamos y el campo que va a actuar como clave ajena, slo nos queda eleg
en el desplegable de la izquierda la tabla a la que hace referencia la clave y al seleccionar una tabla, a la izquierda d
campo clave ajena podremos elegir el campo de la otra tabla por el que se relacionarn las tablas. En nuestro caso ser:
De esta forma hemos definido una relacin entre las tablas Facturas y Clientes. Para ver las relaciones existentes entre ladiferentes tablas tenemos los diagramas.
Primero debemos definir el diagrama, para ello seleccionamos la opcin correspondiente:
Si no tenemos todava ningn diagrama creado, nos aparece un mensaje:
Elegimos S y se crea digamos el soporte donde se pintar el diagrama.
-
7/24/2019 Curso Completo de SQL Server
32/226
A continuacin nos aparece el nuevo diagrama ahora si elegimos crear un nuevo diagrama nos preguntar las tablas
incluir en el diagrama:
Seleccionamos cada una y pulsamos Agregar, cuando hayamos agregado al diagrama todas las que queremos pulsamos e
Cerrar y aparecern en el diagrama las tablas con las relaciones que tengan definidas en ese momento:
La llave indica la tabla principal (padre) y el smbolo infinito seala la tabla que contiene la clave ajena.
En el examinador de objetos en la carpeta Diagramas de base de datos aparecen todos los diagramas definidos hasta
momento:
Hemos aprendido hasta ahora lo bsico para poder crear una base de datos y rellenarla con tablas relacionadas entre s
con datos, ahora veamos cmo recuperar esos datos.
-
7/24/2019 Curso Completo de SQL Server
33/226
1.19. Abrir una nueva consulta
Vamos a ver ahora cmo crear consultas SQL y ejecutarlas desde el entorno del SSMS.
Para ello debemos abrir la zona de trabajo de tipo Query, abriendo una nueva consulta, seleccionando previamente
servidor y pulsando el botn de la barra de botones o si queremos realizar la consulta sobre un servid
con el cual todava no hemos establecido conexin, seleccionando de la barra de mens la opcin Nuevo > Consulta d
motor de base de datos:
.
En este ltimo caso nos aparecer el cuadro de dilogo para establecer la conexin (el mismo que vimos al principio d
tema).
A continuacin se abrir una nueva pestaa donde podremos teclear las sentencias SQL:
Adems aparece una nueva barra de botones que nos permitir ejecutar los comandos ms tiles del modo query.
1.20. Escribir y ejecutar cdigo TRANSACT-SQL
Slo tenemos que teclear la sentencia a ejecutar, por ejemplo empezaremos por crear la base de datos.
Utilizaremos la sentencia CREATE DATABASE mnima:
-
7/24/2019 Curso Completo de SQL Server
34/226
CREATE DATABASE ventas;
Al pulsar el botn Ejecutar se ejecuta la sentencia y aparece en la parte inferior el resultado de la ejecucin, en la pesta
Mensajes:
Si ahora desplegamos la carpeta Bases de Datos del Explorador de Objetos, observaremos la base de datos que hem
creado:
Si la ejecucin de la sentencia produce un error, el sistema nos devolver el mensaje de error escrito en rojo en la pesta
Mensajes.
Podemos incluir en una misma consulta varias sentencias SQL, cuando pulsamos Ejecutar se ejecutarn todas una detr
de otra. Si tenemos varias consultas y slo queremos ejecutar una, la seleccionaremos antes de ejecutarla.
-
7/24/2019 Curso Completo de SQL Server
35/226
1.21. La base de datos predeterminada
Cuando ejecutamos consultas desde el editor, nos tenemos que fijar sobre qu base de datos se va a actua
Fijndonos en la pestaa de la consulta, en el nombre aparece el nombre del servidor seguido de un punto y el nombre de
base de datos sobre la que se va a actuar y luego un guin y el nombre de la consulta.
En la imagen anterior tenemos ord01.masterSQLQuery1.sql, lo que nos indica que la consulta se llama SQLQuery1.sql
que se va a ejecutar sobre la base de datos master que se encuentra en el servidor ord01.
Cuando creamos una nueva consulta, sta actuar sobre la base de datos activa en ese momento. Por defecto la base d
datos activa es la predeterminada (master). Si queremos que la base de datos activa sea por ejemplo la base de dato
ventas, hacemos clic sobre su nombre en el Explorador de objetos, y sta pasar a ser la base de datos activa. Si aho
creamos una nueva consulta, sta actuar sobre la base de datos ventas.
Si queremos crear una consulta que siempre acte sobre una determinada base de datos y no nos queremos preocupar d
qu base de datos tenemos activa podemos aadir al principio de la consulta la instruccin USE nombreBaseDatos; es
har que todas las instrucciones que aparezcan despus, se ejecuten sobre la base de datos indicada.
Por ejemplo:
USE ventas;
SELECT * FROM pedidos;
Obtiene todos los datos de la tablapedidosque se encuentra en la base de datos ventas.
Si no utilizamos USE y almacenamos la consulta, al abrirla otra vez, coger como base de datos la predeterminada (no
activa) y se volver a ejecutar sobre la base de datos master.
Normalmente utilizaremos como base de datos la nuestra y no la base de datos master, por lo que nos ser til cambiar
nombre de la base de datos por defecto, esto lo podemos hacer cambiando la base de datos por defecto en el id de sesin
Para ello, cuando vamos a conectar con el servidor:
Pulsamos en el botn Opciones >>
-
7/24/2019 Curso Completo de SQL Server
36/226
En la pestaa Propiedades de conexin, en el cuadro Conectar con base de datos: Seleccionamos
-
7/24/2019 Curso Completo de SQL Server
37/226
trabajo y as asegurarnos de que los nombres de los objetos (por ejemplo nombre de tabla, de columna, etc.) sean lo
correctos.
Como hemos dicho el texto que se escribe en este editor de cdigo se colorea por categora. Los colores son los mismo
que se utilizan en todo el entorno SQL Server. En esta tabla aparecen los colores ms comunes.
Color Categora
Rojo Cadena de caracteres
Verde oscuro Comentario
Negro sobre fondo plateado Comando SQLCMD
Fucsia Funcin del sistema
Verde Tabla del sistema
Azul Palabra clave
Verde azulado Nmeros de lnea o parmetro de plantilla
Rojo oscuro Procedimiento almacenado de SQL Server
Gris oscuro Operadores
1.23. Configurar un esquema de colores personalizado
En el men Herramientas > Opciones, desplegando la opcin Entorno, Fuentes y colores, se puede ver la lista completa d
colores y sus categoras, as como configurar un esquema de colores personalizado:
-
7/24/2019 Curso Completo de SQL Server
38/226
En la lista Mostrar valores para, seleccionamos el entorno que se ver afectado.
El botn Usar predeterminados nos permite volver a la configuracin predeterminada.
Ahora slo nos queda aprender a redactar sentencias SQL, cosa que se ver en otro momento, mientras tanto podem
utilizar el Generador de Consulta que incluye SSMS y que veremos a continuacin en el apartado sobre vistas.
1.24. Las Vistas
Las consultas que hemos visto hasta ahora son trozos de cdigo SQL que podemos guardar en un archivo de texto y abrir
ejecutar cuando queramos, pero si queremos que nuestra consulta de recuperacin de datos se guarde en la propia base d
datos y se comporte como una tabla (algo parecido a una consulta almacenada de Access), la tenemos que definir com
una vista. Esta vista tiene la ventaja entre otras de poder ser utilizada como si fuese una tabla en otras consultas. Realmen
al ejecutarla obtenemos una tabla lgica almacenada en memoria y lo que se guarda en la base de datos es su definicin,
instruccin SQL que permite recuperar los datos.
-
7/24/2019 Curso Completo de SQL Server
39/226
Para definir una vista en el Explorador de Objetos desplegamos la base de datos donde la guardaremos y elegimos
opcin Nueva vista del men contextual de la carpeta Vistas, se pondr en funcionamiento el generador de consulta
pidindonos las tablas en las que se basar la vista. Pulsamos sobre la tabla a aadir al diseo de la vista y pulsamos e
botn Agregar, podemos aadir as cuntas tablas queramos.
Despus de Cerrar, vemos a la derecha del Explorador de Objetos la pestaa con la definicin de la vista que puede inclu
varios paneles:
-
7/24/2019 Curso Completo de SQL Server
40/226
4
La aparicin de estos paneles es configurable, en la barra de herramientas Diseador de vistas los iconos remarcados e
azul son los correspondientes a cada pan
-
7/24/2019 Curso Completo de SQL Server
41/226
4
1.25. El panel de diagrama
Es el primero que aparece, incluye una representacin grfica de las tablas con sus campos y de la forma en que se junta
en la vista. En este caso, como las tablas tienen relaciones definidas (claves ajenas), esta relacin ha aparecid
automticamente al aadir la segunda tabla. Pero se puede cambiar el tipo de relacin eligiendo la opcin correspondien
en el men contextual que aparece con el clic derecho sobre la relacin:
Desde el panel diagrama podemos aadir cmodamente campos de las tablas a la consulta marcando la casi
correspondiente. En la imagen anterior la nica casilla seleccionada es la del * en la tabla Librospor lo que se visualizar
todas las columnas de la tabla Librosy ninguna de la tabla Prstamos.
Conforme vamos marcando casillas de las tablas del panel diagrama, los cambios se ven reflejados en los dems panele
excepto en el panel de resultados que se actualiza ejecutando la consulta.
1.26. El panel de criterios
Es una rejilla en la que podemos definir las columnas del resultado de la consulta (las columnas de la vista).
En cada fila de la rejilla se define una columna del resultado o una columna que se utiliza para obtener el resultado
En Columnatenemos el nombre de la columna de la se obtienen los datos o la expresin cuando se trata de un
columna calculada.
En Alias escribimos el nombre que tendr la columna en la vista, tambin corresponde con el encabezado de
columna en la rejilla de resultado. Si se deja el campo en blanco, por defecto se asume el mismo nombre que hay e
Columna.
En Tabla tenemos el nombre de la tabla del origen de la consulta a la que pertenece la Columna, por ejemplo
primera columna del resultado se saca de la columna Codigode la tabla LIBROSy se llamar CodLibro. La cuar
columna de la vista coger sus datos de la columna Usuariode la tabla Prestamosy se llamar Usuario(Aliasse
dejado en blanco por lo que asume el nombre que hay en Columna.
-
7/24/2019 Curso Completo de SQL Server
42/226
4
En la columna Resultados indicamos si queremos que la columna se visualice o no, las columnas con la casi
marcada se visualizan.
Las columnas Criterio de ordenacin y Tipo de orden permiten ordenar las filas del resultado segn una o m
columnas. Se ordena por las columnas que tienen algo en Tipo de ordeny cuando se ordena por varias column
Criterio de ordenacinindica que primero se ordena por la columna que lleva el n 1 y despus por la columna q
lleva el n 2 y as sucesivamente. En el ejemplo las filas del resultado se ordenarn primero por cdigo de libro
despus por cdigo de prstamo, todas las f ilas dentro del mismo libro se ordenarn por cdigo de prstamo.
Si queremos aadir unos criterios de seleccin tenemos las columnas Filtroy O
En cada celda indicamos una condicin que debe cumplir la columna correspondiente y se puede combinar varia
condiciones mediante O (OR) e Y (AND) segn coloquemos las condiciones en la misma columna o en columnas diferente
En el ejemplo anterior tenemos la condicin compuesta: ((usuario=1) AND (Dias>5)) OR (Usuario=2).
Podemos variar el orden de aparicin de las columnas arrastrando la fila correspondiente de la rejilla hasta el lugar deseado
Tambin podemos Elimnar filas de la rejilla para eliminar columnas del resultado, lo conseguimos seleccionando la f
haciendo clic sobre su extremo izquierda y cuando aparece toda la fila remarcada pulsamos Supr o desde el men
contextual de la fila.
Podemos definir consultas ms complejas como por ejemplo consultas de resumen, pulsando sobre el botn Agrupar por d
la barra de herramientas, se aade a la rejilla una nueva columna Agrupar por con las siguientes opciones:
1.27. El panel SQL
-
7/24/2019 Curso Completo de SQL Server
43/226
4
En l vemos la instruccin SQL generada, tambin podemos redactar directamente la sentencia SQL en el panel y ver lo
cambios equivalentes en los distintos paneles. Para ver estos cambios debemos de ejecutar o Comprobar la sintaxis pa
que se actualicen los dems paneles.
Por defecto el generador aade a la consulta una clusula TOP (100) PERCENT que indica que se visualizarn el 100% d
las filas. Esta clusula no la hemos definido nosotros sino que la aade automticamente el generador.
Una vez tenemos la vista definida la guardamos y podremos hacer con ella casi todo lo que podemos hacer con una tabl
De hecho si nos fijamos en el Explorador de objetos, en la carpeta Vistas:
Vemos que la estructura es muy similar a la estrutura de una tabla. Y que podemos modificar su definicin y ejecutarla, igu
que con las tablas:
Modificar para modificar la definicin de la vista
Abrir vista para ejecutarla y ver los datos como si fuese una tabla real.
-
7/24/2019 Curso Completo de SQL Server
44/226
4
Unidad 2. Introduccin al SQL. Transact-SQL (I)
2.1. Conceptos bsicos de SQL
SQL (Structured Query Language), Lenguaje Estructurado de Consulta es el lenguaje utilizado para definir, controlar
acceder a los datos almacenados en una base de datos relacional.
Como ejemplos de sistemas gestores de bases de datos que utilizan SQL podemos citar DB2, SQL Server, Oracle, MySq
Sybase, PostgreSQL o Access.
El SQL es un lenguaje universal que se emplea en cualquier sistema gestor de bases de datos relacional. Tiene un estnd
definido, a partir del cual cada sistema gestor ha desarrollado su versin propia.
En SQL Server la versin de SQL que se utiliza se llama TRANSACT-SQL.
EL SQL en principio es un lenguaje orientado nicamente a la definicin y al acceso a los datos por lo que no se pued
considerar como un lenguaje de programacin como tal ya que no incluye funcionalidades como son estructur
condicionales, bucles, formateo de la salida, etc. (aunque veremos que esto est evolucionando).
Se puede ejecutar directamente en modo interactivo, pero tambin se suele emplear embebido en programas escritos e
lenguajes de programacin convencionales. En estos programas se mezclan las instrucciones del propio lengua
(denominado anfitrin) con llamadas a procedimientos de acceso a la base de datos que utilizan el SQL como lenguaje d
acceso. Como por ejemplo en Visual Basic, Java, C#, PHP .NET, etc.
Las instrucciones SQL se clasifican segn su propsito en tres grupos:
El DDL (Data Description Language) Lenguaje de Descripcin de Datos.
El DCL (Data Control Language) Lenguaje de Control de Datos.
El DML (Data Manipulation Language) Lenguaje de Manipulacin de Datos.
El DDL, es la parte del SQL dedicada a la definicin de la base de datos, consta de sentencias para definir la estructu
de la base de datos, permiten crear la base de datos, crear, modificar o eliminar la estructura de las tablas, crear ndice
definir reglas de validacin de datos, relaciones entre las tablas, etc. Permite definir gran parte del nivel interno de la base
datos. Por este motivo estas sentencias sern utilizadas normalmente por el administrador de la base de datos.
El DCL (Data Control Language) se compone de instrucciones que permiten:
Ejercer un control sobre los datos tal como la asignacin de privilegios de acceso a los datos (GRANT/REVOKE).
La gestin de transacciones (COMMIT/ROLLBACK).
Una transaccin se puede definir como un conjunto de acciones que se tienen que realizar todas o ninguna para preservar
integridad de la base de datos.
Por ejemplo supongamos que tenemos una base de datos para las reservas de avin. Cuando un usuario pide reservar un
plaza en un determinado vuelo, el sistema tiene que comprobar que queden plazas libres, si quedan plazas reservar la qu
-
7/24/2019 Curso Completo de SQL Server
45/226
4
quiera el usuario generando un nuevo billete y marcando la plaza como ocupada. Aqu tenemos un proceso que consta d
dos operaciones de actualizacin de la base de datos (crear una nueva fila en la tabla de billetes y actualizar la plaz
reservada en el vuelo, ponindola como ocupada) estas dos operaciones se tienen que ejecutar o todas o ninguna,
despus de crear el billete no se actualiza la plaza porque se cae el sistema, por ejemplo, la base de datos quedara en u
estado inconsistente ya que la plaza constara como libre cuando realmente habra un billete emitido para esta plaza. E
este caso el sistema tiene el mecanismo de transacciones para evitar este error. Las operaciones se incluyen las dos en un
misma transaccin y as el sistema sabe que las tiene que ejecutar las dos, si por lo que sea no se pueden ejecutar las do
se encarga de deshacer los cambios que se hubiesen producido para no ejecutar ninguna.
Las instrucciones que gestionan las autorizaciones sern utilizadas normalmente por el administrador mientras que las otra
referentes a proceso de transacciones sern utilizadas tambin por los programadores.
No todos los sistemas disponen de ellas.
El DML se compone de las instrucciones para el manejo de los datos, para insertar nuevos datos, modificar dato
existentes, para eliminar datos y la ms utilizada, para recuperar datos de la base de datos. Veremos que una so
instruccin de recuperacin de datos es tan potente que permite recuperar datos de varias tablas a la vez, realizar clculo
sobre estos datos y obtener resmenes.
El DML interacta con el nivel externo de la base de datos por lo que sus instrucciones son muy parecidas, por no decir ca
idnticas, de un sistema a otro, el usuario slo indica lo que quiere recuperar no cmo se tiene que recuperar, no influye
cmo estn almacenados los datos.
Es el lenguaje que utilizan los programadores y los usuarios de la base de datos.
A lo largo del curso se explicarn cada una de las formas de explotacin de la base de datos. Dependiendo de tu pe
profesional (programador o administrador) o de tu inters personal te resultar ms til un bloque u otro.
2.2. Introduccin al TRANSACT-SQL
Como hemos dicho, el sistema gestor de base de datos SQL-Server 2005 utiliza su propia versin del lenguaje SQL,
TRANSACT-SQL.
TRANSACT-SQL es un lenguaje muy potente que nos permite definir casi cualquier tarea que queramos efectuar sobre
base de datos. En este tema veremos que TRANSACT-SQL va ms all de un lenguaje SQL cualquiera ya que inclu
caractersticas propias de cualquier lenguaje de programacin, caractersticas que nos permiten definir la lgica necesar
para el tratamiento de la informacin:
Tipos de datos.
Definicin de variables.
Estructuras de control de flujo.
Gestin de excepciones.
Funciones predefinidas.
-
7/24/2019 Curso Completo de SQL Server
46/226
4
Sin embargo no permite:
Crear interfaces de usuario.
Crear aplicaciones ejecutables, sino elementos que en algn momento llegarn al servidor de datos y ser
ejecutados.
Debido a estas restricciones se emplea generalmente para crear procedimientos almacenados, triggers y funciones
usuario.
Puede ser utilizado como cualquier SQL como lenguaje embebido en aplicaciones desarrolladas en otros lenguajes d
programacin como Visual Basic, C, Java, etc. Y por supuesto los lenguajes incluidos en la plataforma .NET.
Tambin lo podremos ejecutar directamente de manera interactiva, por ejemplo desde el editor de consultas de SSMS (SQ
Server Management Studio) el entorno de gestin que ya conocemos. Esta es la forma en que lo utilizaremos nosotros.
2.3. Caractersticas generales del lenguaje Transact-SQL
El lenguaje SQL se cre con la finalidad de ser un lenguaje muy potente y a la vez muy fcil de utilizar, se ha conseguido e
gran medida ya que con una sola frase (instruccin) podemos recuperar datos complejos (por ejemplo datos que s
encuentran en varias tablas, combinndolos, calculando resmenes), y utilizando un lenguaje muy cercano al lenguahablado (suponiendo que hablamos ingls, claro!).
Por ejemplo:
SELECT codigo, nombre FROM Clientes WHERE localidad=Valencia;
Esta instruccin nos permite SELECCIONAR el cdigo y nombre DE los Clientes CUYA localidad sea Valencia.
La sencillez tambin radica en que lo que indicamos es lo que queremos obtener, no el cmo lo tenemos que obtener, d
eso se encargar el sistema automticamente.
Las sentencias SQL adems siguen todas el mismo patrn:
Empiezan por un verbo que indica la accin a realizar,
completado por el objeto sobre el cual queremos realizar la accin,
seguido de una serie de clusulas (unas obligatorias, otras opcionales) que completan la frase, y proporcionan m
detalles acerca de lo que se quiere hacer.
Si sabemos algo de ingls nos ser ms fcil interpretar a la primera lo que quiere decir la instruccin, y de lo contrari
como el nmero de palabras que se emplean es muy reducido, enseguida nos las aprenderemos.
Por ejemplo en el DDL (acciones sobre la definicin de la base de datos), tenemos 3 verbos bsicos:
CREATE (Crear)
DROP (Eliminar)
ALTER (Modificar)
-
7/24/2019 Curso Completo de SQL Server
47/226
4
Completados por el tipo de objeto sobre el que actan y el objeto concreto:
CREATE DATABASE mibase .......;
Permite crear una base de datos llamada mibase, a continuacin escribiremos las dems clusulas que completarn
accin, en este caso dnde se almacenar la base de datos, cunto ocupar, etc...
CREATE TABLE mitabla (.....);
Permite crear una nueva tabla llamada mitabla, entre parntesis completaremos la accin indicando la definicin de la
columnas de la tabla.
CREATE INDEX miindex...;
Lo mismo para crear un ndice (a que lo habais adivinado?).
DROP DATABASE mibase;
Permite borrar, eliminar la base de datos mibase.
DROP TABLE mitabla;
Elimina la tabla mitabla.ALTER TABLE mitabla.....;
Permite modificar la definicin de la tabla mitabla.
En el DML (acciones sobre los datos almacenados) utilizaremos los verbos:
INSERT (Crear, es decir, insertar una nueva fila de datos)
DELETE (Eliminar filas de datos)
UPDATE (Modificar filas de datos)
SELECT (Seleccionar, obtener)
Por ejemplo:
INSERT INTO mitabla ..... Inserta nuevas filas en mitabla
DELETE FROM mitabla Eliminar filas de mitabla
UPDATE mitabla ....... Actualiza filas de mitabla
Como ejemplo de clusula dentro de una instruccin tenemos:
SELECT codigo, nombre
FROM Clientes
WHERE localidad=Valencia;
En esta sentencia nos aparecen dos clusulas, la clusula FROM que nos permite indicar de dnde hay que coger los dato
y la clusula WHERE que permite indicar una condicin de seleccin.
Otra caracterstica de una sentencia SQL es que acaba con un punto y coma (;) originalmente ste era obligatorio y serv
para indicar el fin de la instruccin, pero ahora se puede omitir, aunque se recomienda su uso.
-
7/24/2019 Curso Completo de SQL Server
48/226
4
En una sentencia utilizaremos palabras reservadas (las fijas del lenguaje), y nombres de objetos y variable
(identificadores).
Las palabras reservadas no se pueden utilizar para otro propsito, por ejemplo una tabla no se puede llamar FROM, y lo
nombres (los identificadores) siguen las reglas detalladas en el punto siguiente.
Nombres cualificados. En ocasiones deberemos utilizar nombres cualificados, por ejemplo cuando se escribe un nomb
de tabla, SQL presupone que se est refiriendo a una de las tablas de la base de datos activa, si queremos hacer referenc
a una tabla de otra base de datos utilizamos su nombre cualificado nombrebasedatos.nombredeesquema.nombretabl
utilizamos el punto para separar el nombre del objeto y el nombre de su contenedor.
O por ejemplo si en una consulta cuyo origen son dos tablas, queremos hacer referencia a un campo y ese nombre d
campo es un nombre de campo en las dos tablas, pues utilizaremos su nombre cualificado nombretabla.nombrecampo.
El valor NULL.
Puesto que una base de datos es un modelo de una situacin del mundo real, ciertos datos pueden inevitablemente falta
ser desconocidos o no ser aplicables, esto se debe de indicar de alguna manera especial para no confundirlo con un val
conocido pero que sea cero por ejemplo, SQL tiene para tal efecto el valor NULL que indica precisamente la ausencia d
valor.
Por ejemplo: no es lo mismo que el alumno no tenga nota a que tenga la nota cero, esto afectara tambin a todos lo
clculos que se pueden realizar sobre la columna nota.
2.4. Reglas de formato de los identificadores
Los identificadores son los nombres de los objetos de la base de datos. Cualquier elemento de Microsoft SQL Server 200
puede tener un identificador: servidores, bases de datos, tablas, vistas, columnas, ndices, desencadenadore
procedimientos, restricciones, reglas, etc.
Las reglas de formato de los identificadores normales dependen del nivel de compatibilidad de la base de datos, que s
estableca con el parmetro sp_dbcmptlevel pero que ahora Microsoft aconseja no utilizar ya que desaparecer en version
posteriores en vez de eso se tiene que utilizar la clusula SET COMPATIBILITY_LEVEL de la instruccin ALTER TABL
Cuando el nivel de compatibilidad es 90, (el asignado por defecto) se aplican las reglas siguientes para los nombres de lo
identificadores:
No puede ser una palabra reservada.
El nombre debe tener entre 1 y 128 caracteres, excepto para algunos tipos de objetos en los que el nmero es m
limitado.
El nombre debe empezar por:
o Una letra, como aparece definida por el estndar Unicode 3.2. La definicin Unicode de letras incluye l
caracteres latinos de la "a" a la "z" y de la "A" a la "Z".
o El carcter de subrayado ( _ ), arroba ( @ ) o nmero ( # ).
Ciertos smbolos al principio de un identificador tienen un significado especial en SQL Server. Un identificador q
empieza con el signo de arroba indica un parmetro o una variable local. Un identificador que empieza con el sign
-
7/24/2019 Curso Completo de SQL Server
49/226
4
de nmero indica una tabla o procedimiento temporal. Un identificador que empieza con un signo de nmero dob
(##) indica un objeto temporal global.
Algunas funciones de Transact-SQL tienen nombres que empiezan con un doble signo de arroba (@@). Para evit
confusiones con estas funciones, se recomienda no utilizar nombres que empiecen con @@.
No se permiten los caracteres especiales o los espacios incrustados.
Si queremos utilizar un nombre que no siga estas reglas, normalmente para poder incluir espacios en blanco, lo tenemo
que escribir encerrado entre corchetes [ ] (tambin se pueden utilizar las comillas pero recomendamos utilizar los corchetes
2.5. Tipos de datos
En SQL Server 2005, cada columna, expresin, variable y parmetro est asociado a un tipo de dato
Un tipo de datos, realmente define el conjunto de valores vlidos para los campos definidos de ese tipo. Indica si el camp
puede contener: datos numricos, de caracteres, moneda, fecha y hora, etc.
SQL Server proporciona un conjunto de tipos de datos del sistema que define todos los tipos de datos que pueden utilizars
Tambin podemos definir nuestros propios tipos de datos en Transact-SQL o Microsoft .NET Framework.
Los tipos de datos ms utilizados son:
Los numricos: int, decimal, money
Los de fecha y hora: datetime
Y las cadenas de caracteres: varchar
Si quieres conocer todos los tipos de datos disponibles en SQLServer 2005, visita el siguiente avanzado .
2.6. Las constantes
Una constante es un valor especfico o un smbolo que representa un valor de dato especfico. El formato de las constante
depende del tipo de datos del valor que representan. En este apartado veremos las ms utilizadas.
Las constantes numricas se escriben mediante una cadena de nmeros, con la consideracin de que el separad
decimal es un punto, no una coma, y que si se trata de un valor monetario deberemos incluir la moneda al inicio d
la constante. Por ejemplo: 85.90 y 85.90, el primero sera un valor decimal y el segundo un valor money. De form
predeterminada, los valores sern positivos. Para indicar lo contrario escribimos el signo - al principio.
Las constantes de fecha y hora van entre comillas simples y con un formato de fecha y hora adecuado. Por ejemp
'03/10/90'.
Y las constantes en cadenas de caracteres van entre comillas simples. Por ejemplo: 'Juan Garca Lpez'.
Para indicar valores negativos y positivos aadimos el prefijo + o - segn sea el valor positivo o negativo. Sin prefijo s
entiende que el valor es positivo.
Si quieres ver cmo definir constantes para otros tipos de datos, visita el siguiente avanzado .
-
7/24/2019 Curso Completo de SQL Server
50/226
2.7. Las expresiones
Una expresin es una combinacin de smbolos y operadores que el motor de base de datos de SQL Server evala pa
obtener un nico valor. Una expresin simple puede ser una sola constante, variable, columna o funcin escalar. Lo
operadores se pueden usar para combinar dos o ms expresiones simples y formar una expresin complej
Dos expresiones pueden combinarse mediante un operador si ambas tienen tipos de datos admitidos por el operador y s
cumple al menos una de estas condiciones:
Las expresiones tienen el mismo tipo de datos.
El tipo de datos de menor prioridad se puede convertir implcitamente al tipo de datos de mayor prioridad.
La funcin CAST puede convertir explcitamente el tipo de datos con menor prioridad al tipo de datos con may
prioridad o a un tipo de datos intermedio que pueda convertirse implcitamente al tipo de datos con la may
prioridad.
Tipos de operadores:
- Operadores numricos:
suma +
resta -
multiplicacin *
divisin /
mdulo
(resto de una divisin)%
- Operadores bit a bit: realizan manipulaciones de bits entre dos expresiones de cualquiera de los tipos de datos de
categora del tipo de datos entero.
AND &
OR |
OR exclusivo ^
-
7/24/2019 Curso Completo de SQL Server
51/226
- Operadores de comparacin:
Igual a =
Mayor que >
Menor que =
Menor o igual que
- Operadores lgicos:
Aqu slo los nombraremos ya que en el tema de consultas simples los veremos en detalle.
ALL IN
AND LIKE
ANY NOT
BETWEEN OR
EXISTS SOME
- Operadores de cadenas:
Concatenacin +
Resultados de la expresin
- Si se combinan dos expresiones mediante operadores de comparacin o lgicos, el tipo de datos resultante es booleano
el valor es uno de los siguientes: TRUE, FALSE o UNKNOWN.
-
7/24/2019 Curso Completo de SQL Server
52/226
- Cuando dos expresiones se combinan mediante operadores aritmticos, bit a bit o de cadena, el operador determina el ti
de datos resultante.
Las expresiones complejas formadas por varios smbolos y operadores se evalan como un resultado formado por un so
valor. El tipo de datos, intercalacin, precisin y valor de la expresin resultante se determina al combinar las expresione
componentes de dos en dos, hasta que se alcanza un resultado final. La prioridad de los operadores de la expresin defin
la secuencia en que se combinan las expresiones.
2.8. FuncionesSQL Server 2005 proporciona numerosas funciones integradas y permite crear funciones definidas por el usuario.
Existen diferentes tipos de funciones:
Funciones de conjuntos de filas: devuelven un objeto que se puede utilizar, en instrucciones Transact-SQL, en lug
de una referencia a una tabla.
Funciones de agregado (tambin llamadas funciones de columna): Operan sobre una coleccin de valores
devuelven un solo valor de resumen. Por ejemplo, la funcin de suma sobre la columna importe para conocer
importe total: SUM(importe)
Funciones de categora: Devuelven un valor de categora para cada fila de un conjunto de filas, por ejemp
devuelve el nmero de la fila, el ranking de la fila en una determinada ordenacin, etc.
Funciones escalares: Operan sobre un valor y despus devuelven otro valor. Son las funciones que estam
acostumbrados a utilizar. Las funciones escalares se clasifican segn el tipo de datos de sus operandos
Las variables
En Transact-SQL podemos definir variables, que sern de un tipo de datos determinado, como tipos de datos podem
utilizar los propios de la base de datos SQL-SERVER, pero tambin podemos utilizar tipos propios del lenguaje que
pueden ser utilizados en DDL. El tipo Cursor y el tipo Table son dos de estos tipos.
Las variables se definen utilizando la instruccin DECLARE con el siguiente formato:
DECLARE @nbvariable tipo
El nombre de la variable debe empezar por el smbolo @, este smbolo hace que SQL interprete el nombre como un nomb
de variable y no un nombre de objeto de la base de datos.
Por ejemplo: DECLARE @empleados INT
Con esto hemos definido la variable @empleados de tipo entero.
Para asignar un valor a una variable, la asignacin se realiza con la palabra SELECT y el signo igual con el formato:
SELECT @nbvariable = valor
El valor puede ser cualquier valor constante, otro nombre de variable, una expresin vlida o algo ms potente, parte de un
sentencia SELECT de SQL.
-
7/24/2019 Curso Completo de SQL Server
53/226
Por ejemplo:
SELECT @empleados = 0;
SELECT @empleados = @otra * 100;
SELECT @EMPLEADOS = COUNT(numemp) FROM empleados;
El valor almacenado en la variable se puede visualizar mediante la orden PRINT. o SELECT
PRINT @nbvariable o SELECT @nbvariable
El valor almacenado en la variable se visualizar en la pestaa de resultados. Tambin se puede usar para escrib
mensajes:
PRINT 'Este es el mensaje'
Otros elementos del lenguaje
Comentarios. Como en cualquier otro lenguaje de programacin, debemos utilizar comentarios destinados a facilitar
legibilidad del cdigo. En SQL se insertan comentarios con los signos:
/* */ Varias lneas/* Esto es un comentario
en varias lneas */
-- Una nica lnea -- Esto es un comentario en una nica lnea.
USE. Cambia el contexto de la base de datos al de la base de datos especificada.
USE nbBaseDeDatos
Hace que la base de datos activa pase a ser la base de datos indicada en la instruccin, las consultas que se ejecuten
continuacin se harn sobre tablas de esa base de datos si no se indica lo contrario. Es una instruccin til paasegurarnos de que la consulta se ejecuta sobre la base de datos correcta.
GO
GO no es una instruccin Transact-SQL, sino un comando reconocido por las utilidades sqlcmd y osql, as como por
Editor de cdigo de SQL Server Management Studio.
Las utilidades de SQL Server interpretan GO como una seal de que deben enviar el lote actual de instrucciones Transa
SQL a una instancia de SQL Server. El lote actual de instrucciones est formado por todas las instrucciones especficada
desde el ltimo comando GO o desde el comienzo de la sesin o script si se trata del primer comando G
Por ejemplo si queremos crear una consulta para crear una base de datos y sus tablas, despus del CREATDATABASE; tenemos que poner GO antes del primer CREATE TABLE para que el sistema efecte la primera operacin
la base de datos est creada antes de ejecutar el primer CREATE TABLE.
BEGIN...END
Encierra un conjunto de instrucciones Transact-SQL de forma que estas instrucciones formen un bloque de instrucciones.
-
7/24/2019 Curso Completo de SQL Server
54/226
Unidad 3. Consultas simples (I)
3.1. Introduccin
Vamos a empezar por la instruccin que ms se utiliza en SQL, la sentencia SELECT. La sentencia SELECT es, co
diferencia, la ms compleja y potente de las sentencias SQL, con ella podemos recuperar datos de una o ms tabla
seleccionar ciertos registros e incluso obtener resmenes de los datos almacenados en la base de datos. Es tan comple
que la estudiaremos a lo largo de varias unidades didcticas incorporando poco a poco nuevas funcionalidades.
El resultado de una SELECT es una tabla lgica que alberga las filas resultantes de la ejecucin de la sentencia.
La sintaxis completa es la siguiente:
SELECT sentencia::=[WITH [,...n]]
[ORDER BY {expression_columna|posicion_columna[ASC|DESC] }
[ ,...n ]]
[COMPUTE{{AVG|COUNT|MAX|MIN|SUM} (expression)}[ ,...n ] [BY expression[ ,...n ]]
]
[]
[OPTION ([ ,...n])] ::=
{ | ( ) }
[ {UNION [ALL]|EXCEPT|INTERSECT}
| () [...n ]
]
::=
SELECT [ALL|DISTINCT]
[TOP expresion[PERCENT] [WITH TIES] ]
[INTO nueva_tabla]
[FROM { } [ ,...n] ]
[WHERE ]
[GROUP BY [ ALL ] expresion_agrupacion [ ,...n]
[WITH { CUBE | ROLLUP } ]] [HAVING < condicion_busqueda > ]
-
7/24/2019 Curso Completo de SQL Server
55/226
Debido a la complejidad de la sentencia (en la sintaxis anterior no se han detallado algunos elementos), la iremos viend
poco a poco, empezaremos por ver consultas bsicas para luego ir aadiendo ms clusulas.
Empezaremos por ver las consultas ms simples, basadas en una sola tabla y nos limitaremos a la siguiente sintaxis:
SELECT [ALL|DISTINCT]
[TOP expresion[PERCENT] [WITH TIES]]
FROM
[WHERE ]
[ORDER BY {expression_columna|posicion_columna[ASC|DESC]} [ ,...n ]]
3.2. Origen de datos FROM
De la sintaxis anterior, el elemento indica de dnde se va a extraer la informacin y se indica en la clusula FROM
es la nica clusula obligatoria. En este tema veremos un origen de datos basado en una sola tabla.
La sintaxis ser la siguiente:
::=
nb_tabla| nb_vista[[ AS ] alias_tabla]