Академический Документы
Профессиональный Документы
Культура Документы
CONTENIDO
INTRODUCCION A SQL 2005 SERVER ............................................................................................................... 7
Presentacin............................................................................................................................................................ 7
Microsoft SQL Server 2005 ............................................................................................................................... 9
Versiones de SQL Server 2005 ................................................................................................................. 10
Requisitos .............................................................................................................................................................. 11
Requisitos de Software ............................................................................................................................... 11
Requisitos de Hardware ............................................................................................................................. 12
Pasos Previos ....................................................................................................................................................... 13
Instalacin ............................................................................................................................................................. 16
SQL Server Configuration Manager ............................................................................................................ 29
Modificar el estado de los servicios. ...................................................................................................... 30
COMPONENTES DEL LENGUAJE SQL ............................................................................................................. 32
Comandos .............................................................................................................................................................. 32
Elementos de sintaxis: ...................................................................................................................................... 33
Directivas de procesos por lotes.............................................................................................................. 33
Comentarios en SQL ..................................................................................................................................... 33
Tablas en SQL: ..................................................................................................................................................... 33
Identificadores para los objetos: .................................................................................................................. 33
Tipos de datos:..................................................................................................................................................... 34
Numricos: ....................................................................................................................................................... 34
Fechas: ............................................................................................................................................................... 34
Caracteres:........................................................................................................................................................ 34
Texto e Imagen: .............................................................................................................................................. 34
Binario: .............................................................................................................................................................. 34
Identificadores nicos:................................................................................................................................ 34
Clusulas ................................................................................................................................................................ 34
Operadores Lgicos........................................................................................................................................... 35
Operadores de Comparacin ......................................................................................................................... 35
CONSULTAS DE SELECCIN ............................................................................................................................... 36
Consultas Bsicas ............................................................................................................................................... 36
Sentencia Select-From ................................................................................................................................. 36
Sentencia de filas duplicadas (distinct)................................................................................................ 36
[1]
Capacitacin Informtica y Extensin Profesional
RAND .................................................................................................................................................................. 48
ROUND ............................................................................................................................................................... 49
SIGN ..................................................................................................................................................................... 49
SQUARE ............................................................................................................................................................. 49
SQRT ................................................................................................................................................................... 49
Funciones de Sistema ....................................................................................................................................... 49
APP_NAME () ................................................................................................................................................... 49
DATALENGTH (Expresion) ........................................................................................................................ 49
ISDATE (Expresion)...................................................................................................................................... 49
ISNUMERIC (Expresion) ............................................................................................................................. 50
ISNULL (Expresin , ExpresionDevuelta) ............................................................................................ 50
PARSENAME (NombreObjeto, ParteNombre) ................................................................................. 50
SYSTEM_USER ................................................................................................................................................. 50
USER_NAME() ................................................................................................................................................. 51
COALESCE (expresin1, expresin2, ...) .............................................................................................. 51
Funciones de Fecha ........................................................................................................................................... 51
GetDate .............................................................................................................................................................. 51
DateName ......................................................................................................................................................... 51
DatePart............................................................................................................................................................. 52
DateAdd ............................................................................................................................................................. 52
DateDiff .............................................................................................................................................................. 52
Funciones de Agregado.................................................................................................................................... 52
COUNT ................................................................................................................................................................ 52
AVG ...................................................................................................................................................................... 53
MAX ..................................................................................................................................................................... 53
MIN ...................................................................................................................................................................... 53
SUM ..................................................................................................................................................................... 53
SENTENCIAS SQL SERVER .................................................................................................................................. 55
Variables ................................................................................................................................................................ 55
Bucles ...................................................................................................................................................................... 55
Nivel De fila ........................................................................................................................................................... 56
Sentencia Case ................................................................................................................................................ 56
Sentencia Convert ......................................................................................................................................... 57
INSERCIN, ELIMINACIN Y MODIFICACIN DE DATOS ...................................................................... 58
Insercin de una fila mediante valores: .................................................................................................... 58
[3]
Capacitacin Informtica y Extensin Profesional
Tabla ......................................................................................................................................................................113
Drop Function ....................................................................................................................................................114
Create Function With SchemaBinding .....................................................................................................114
INDICES .....................................................................................................................................................................119
Como se almacenan los datos ......................................................................................................................119
Como se accede a los datos ...........................................................................................................................119
Ventajas y desventajas de los ndices .......................................................................................................119
CREACIN Y MANTENIMIENTO DE NDICES .......................................................................................126
Create Index ...................................................................................................................................................126
FillFactor .........................................................................................................................................................127
[6]
Capacitacin Informtica y Extensin Profesional
PRESENTACIN
Tanto para aprender y practicar con el lenguaje SQL, como para administrar y mantener una
base de datos nos apoyaremos en el servidor de base de datos Microsoft SQL Server 2005.
Al finalizar el curso, el alumno ser capaz de implementar sentencias SQL para realizar las
ms complejas consultas y sentencias de manipulacin de datos. Por otro lado, tendr los
conocimientos necesarios para comenzar a administrar y mantener una base de datos
empresarial mediante SQL Server 2005.
Por lo tanto este curso pretende que los alumnos que se inician en el mundo de las bases de
datos sean capaces de disear y administrar una base de datos y desenvolverse con soltura
en estos entornos. Para aquellos alumnos que ya tengan nociones de bases de datos o
lenguaje SQL, podrn afianzar y ampliar esos conocimientos y realizar las principales tareas
de administracin de uno de los servidores preferidos por muchas empresas, SQL Server
2005.
Los servidores de bases de datos, herramientas cuya nica y principal funcin era la
administracin de informacin. Mediante diferentes protocolos de comunicacin las
diferentes aplicaciones pueden enlazarse con estos servidores, ordenar las tareas que
necesiten para que el servidor se encargue de operar esas tareas y devolver los resultados
deseados.
Capa Descripcin
[7]
Capacitacin Informtica y Extensin Profesional
Es comn referirse a los servidores de datos como RDBMS, siglas de Relational DataBase
Management System. Es el modo ms comn y tambin ms correcto de nombrarlos.
Una persona encargada de la administracin de una base de datos tiene como misin no slo
controlar la base de datos empresarial, sino tambin de aconsejar, asesorar a los
desarrolladores, usuarios y directiva de la empresa. Por normal general una empresa cuenta
con una o varias personas encargadas de controlar el sistema de base de datos,
programacin, sistemas operativos, hardware, comunicacin, redes, etc...
Podemos decir que la persona que controla la administracin de base de datos, tiene las
siguientes funciones:
[8]
Capacitacin Informtica y Extensin Profesional
Oracle
DB2
MySQL
SQL Server
...
SQL Server 2005 es la siguiente edicin de su predecesor en el mercado, SQL Server 2000, el
cual tuvo muy buena aceptacin en las empresas por su alta calidad.
Con esta ltima versin se ha conseguido mejorar an ms SQL Server 2000, mejorando la
fiabilidad, escalabilidad, rendimiento y manejo. Muchas de las empresas controlan sus redes
locales con el conocido sistema operativo Windows Server 2003, siendo uno de los ms
extendidos y preferidos por la mayora de empresas. Este sistema operativo de Microsoft es
el entorno ideal para la instalacin de SQL Server 2005, convirtindose en la mejor pareja
posible para la administracin.
Adems la reciente aparicin de SQL Server 2005, conlleva que este preparado para la
expansin por la red de redes (Internet) ya que por ejemplo es capaz de generar
automticamente documentos XML, se trata del formato estndar de datos que facilita la
transmisin de datos en Internet.
Como veremos en el siguiente punto, tenemos diferentes versiones de SQL Server 2005, cada
una orientada a cubrir unas determinadas necesidades de diferentes tipos de empresas o
clientes, pero podemos enumerar una serie de propiedades comunes para todas ellas, que
demuestran que SQL Server es bastante ms que un servidor de base de datos:
Como acabamos de ver SQL Server 2005 tiene una serie de propiedades comunes a las cuales
se le aaden una serie de herramientas para ir formando diferentes versiones orientadas a
diferentes tipos de empresas y funciones.
Estas ediciones las presentamos a continuacin comenzando con la que menos posibilidades
ofrece hasta llegar a la ms completa:
Versin Descripcin
[10]
Capacitacin Informtica y Extensin Profesional
REQUISITOS
En funcin de la edicin con la que vayamos a trabajar tendremos unos requisitos mnimos
que nuestras mquinas debern cumplir y del mismo modo nuestro software, y
especialmente el sistema operativo sobre el que va a trabajar. Debes pensar que no estamos
instalando un programa de escritorio, se trata de un potente RDBMS que cuenta con una
serie de servicios avanzados, adems de accesos desde Internet etc...
REQUISITOS DE SOFTWARE
Sin lugar a duda, para un entorno empresarial, con informacin de un tamao muy
importante, el mejor entorno de trabajo para SQL Server 2005, es Windows Server 2003/R2,
ltima versin de este sistema operativo.
Ahora bien si vamos a trabajar con las versiones Express o Professional que estn dirigidas a
uso personal, o para desarrolladores, es posible instalarlas bajo Windows XP Professional.
[11]
Capacitacin Informtica y Extensin Profesional
Si tenemos como sistema operativo Windows 2000 ser imprescindible instalar el SP4 o
superior. Es imposible que podamos instalar SQL Server 2005 sobre versiones anteriores a
Windows XP (98, Me...) y en Windows NT.
Por lo tanto en cuanto a software los requisitos son bastante lgicos, tanto que sera muy
difcil encontrar una empresa que no los cumpla por pequea que sea.
REQUISITOS DE HARDWARE
Estos son los requisitos mnimos, pero cuanta mayor memoria tengamos, mejor se
aprovecharn las caractersticas de SQL Server 2005, sobretodo para ediciones que trabajen
con 64 bits y bases de datos de gran tamao.
La memoria en disco mnima que tenemos que tener vara con las caractersticas que
vayamos a instalar, ya que como veremos en este mismo captulo, podremos elegir las
herramientas que deseamos instalar.
[12]
Capacitacin Informtica y Extensin Profesional
PASOS PREVIOS
Antes de comenzar con la instalacin de SQL Server 2005 debemos tener en cuenta una seria
de requisitos previos a cumplir. Alguno de estos requisitos debemos cumplirlos por
seguridad y otros son obligatorios para poder finalizar la instalacin correctamente.
Con versiones anteriores a SQL Server 2005, no tenamos la posibilidad de tener varias
instancias del servidor de base de datos conviviendo en un mismo PC. Incluso podemos tener
en el mismo equipo varias versiones de SQL Server.
En cualquier caso, si vamos a realizar una instalacin sobre otra versin es ms que
recomendable realizar una copia de seguridad de toda la informacin, y sobre todo de
nuestras bases de datos, para evitar problemas y sorpresas.
Si vamos a realizar la instalacin en un servidor con Windows 2000 Server o Windows 2003
Server, es muy probable que tengamos instalado y en funcionamiento el Servidor de pginas
Web, IIS (Internet Information Server). En ese caso debemos parar este servicio antes de
proseguir con la instalacin. Para llevar a cabo esta tarea, abrimos el panel de control:
[13]
Capacitacin Informtica y Extensin Profesional
Esto nos abre una ventana con las herramientas administrativas que tenemos instaladas en
nuestro equipo, siempre y cuando tengamos instalado los servicios de IIS encontraremos el
icono:
[14]
Capacitacin Informtica y Extensin Profesional
Adems de parar el servicio de servidor de pginas Web debemos parar tambin el visor de
sucesos y el editor de registros de Windows:
[15]
Capacitacin Informtica y Extensin Profesional
Para concluir, si no estamos instalando SQL Server 2005 como una copia personal para
realizar pruebas o desarrollar, y lo estamos haciendo para explotar la base de datos en un
servidor al que tendrn acceso clientes y usuarios, primero deberemos iniciar sesin en el
servidor como Administrador para instalar SQL Server.
El siguiente paso ser crear las correspondientes cuentas de usuario para los clientes de SQL
Server.
INSTALACIN
Explicaremos la instalacin de la versin gratuita que ser con la que trabajaremos en este
curso, desde que se lanz al mercado SQL Server 2005, han aadido una versin ms
avanzada a SQL Server 2005 Express Edition, que por suerte incluye alguna herramienta ms
avanzada que la que en un principio publicaron. La versin se denomina Microsoft SQL
Server 2005 Express Edition With Advanced Services. Para descargarte esta versin pincha
en el siguiente enlace:
Aceptamos las condiciones y proseguimos con el asistente. En la siguiente ventana nos indica
los componentes que se van a instalar:
[16]
Capacitacin Informtica y Extensin Profesional
[17]
Capacitacin Informtica y Extensin Profesional
Una vez comprobada la configurada, comienza el asistente de instalacin real de SQL Server
2005:
[18]
Capacitacin Informtica y Extensin Profesional
Una vez que el asistente comprueba que todo est correcto, pulsamos en siguiente, donde el
asistente sigue recogiendo los paquetes necesarios para la instalacin:
[19]
Capacitacin Informtica y Extensin Profesional
[20]
Capacitacin Informtica y Extensin Profesional
Seguimos con el asistente, y nos pide el modo de autenticacin para conectar con SQL
Server. Tenemos dos modos de autenticacin:
Modo Windows.
Modo mixto (Windows y SQL Server)
[21]
Capacitacin Informtica y Extensin Profesional
Continuando con el asistente nos pide "permiso" para enviar a Microsoft los errores que
puedan darse sobre el servidor de base de datos, e informes del uso que hacemos de las
herramientas, todo esto para que Microsoft tenga datos para llevar a cabo actualizaciones
para solucionar errores o mejoras para el rendimiento.
[22]
Capacitacin Informtica y Extensin Profesional
En nuestro caso, no queremos que nuestro servidor dedique recursos al envo de esta
informacin. Adems de que seguramente a nuestra empresa no le interese que exista la
posibilidad de enviar informacin personal por error, por lo tanto desmarcamos estas
casillas y continuamos.
En la siguiente venta, nos muestra los componentes y las herramientas que se van a instalar
a continuacin.
[23]
Capacitacin Informtica y Extensin Profesional
Cuando finaliza la instalacin para cada uno de los productos, podemos continuar con el
asistente:
[24]
Capacitacin Informtica y Extensin Profesional
Para realizar la primera prueba, vamos a inicio -> programas y ejecutaremos "SQL Server
Management Studio Express":
La primera vez que se ejecuta realiza una configuracin previa del entorno de trabajo:
Una vez finalizada esta configuracin, nos muestra la pantalla de presentacin mientras que
trabaja en segundo plano para lanzar la herramienta:
[25]
Capacitacin Informtica y Extensin Profesional
Lo primero que nos muestra cuando arrancamos SQL Server 2005, es una ventana para
seleccionar el modo de autorizacin con el que vamos a conectar al servidor:
[26]
Capacitacin Informtica y Extensin Profesional
[27]
Capacitacin Informtica y Extensin Profesional
Si has llegado hasta este punto, enhorabuena, hemos conseguido instalar correctamente SQL
Server 2005 en nuestro equipo y ya tenemos todo lo necesario para comenzar a practicar
con las caractersticas de este servidor de base de datos.
[28]
Capacitacin Informtica y Extensin Profesional
SQL Server Management Studio es una potente herramienta utilizada por desarrolladores y
administradores para trabajar y gestionar bases de datos.
SQL Server Configuration Manager es una herramienta muy til para trabajar con los
servicios de SQL Server.
Como ya has visto, SQL Server se ejecuta como si fuese un servicio, que puede ponerse en
marcha de modo automtico junto con el sistema operativo en caso de que lo indiquemos as
en el momento de la instalacin.
El servicio recibe el nombre por defecto de MSSQLServer , este nombre puede variar si
instalamos diversas instancias con diferente nombre.
No slo tenemos el servicio MSSQLServer, tenemos otros como puede ser el MSDTC
(Microsoft Distributed Transaction Coordinator) o coordinador de transacciones
distribuidas, tambin tenemos el Agente de SQL Server o SQL - ServerAgent, entre otros...
La ventana que nos muestra esta herramienta podemos dividirla en diferentes zonas.
Al tener seleccionado este elemento, en el panel de la derecha, aparecen como una lista todos
los servicios que hay instalados, el estado y una serie de caractersticas.
El estado podemos comprobarlo tambin gracias al icono que aparece junto al nombre del
servicio, un cuadradillo rojo indica que el servicio se encuentra detenido, mientras que un
triangulillo verde indica que el servicio est activo.
Mediante la barra de tareas que aparece sobre este panel, podemos realizar cambios sobre el
estado de los servicios, entre otras cosas.
[29]
Capacitacin Informtica y Extensin Profesional
En funcin de la edicin de SQL Server instalada tendremos una lista de servicios mayor o
menor, adems estos servicios se pueden elegir en el momento de la instalacin (servicios de
informes, anlisis, integracin, etc...)
Para variar de un estado en otro, podemos realizarlo con la barra de herramientas que
encontramos en la parte superior.
O bien, mediante el men emergente que se muestra al pulsar con el botn derecho sobre el
servicio del cual queremos variar su estado.
En este men tendremos unas opciones u otras en funcin del estado en el que se encuentre
actualmente.
[30]
Capacitacin Informtica y Extensin Profesional
Es muy probable que nos interese que un servicio arranque de modo automtico junto con el
sistema operativo, de este modo no tendremos que ponerlo en funcionamiento cada vez que
se reinicie el servidor, por citar alguna de la ventajas.
Para modificar el modo en el que se inician los servicios debemos pulsar con el botn
derecho en uno de los servicios y seleccionar la opcin "Propiedades".
En la pestaa servicio, tenemos la opcin "Modo de inicio", donde podemos seleccionar los
tres modos:
[31]
Capacitacin Informtica y Extensin Profesional
COMANDOS
Comandos DLL
Comando Descripcin
Utilizado para modificar las tablas agregando campos o cambiando la definicin de los
ALTER
campos.
Comandos DML
Comando Descripcin
INSERT Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
UPDATE Utilizado para modificar los valores de los campos y registros especificados.
DELETE Utilizado para eliminar registros de una tabla de una base de datos.
[32]
Capacitacin Informtica y Extensin Profesional
Comandos DCL
Comando Descripcin
ELEMENTOS DE SINTAXIS:
COMENTARIOS EN SQL
En lnea: --
En Bloque: /* comentario */
TABLAS EN SQL:
Tabla master: Es la tabla que contiene como generar una base de datos y sobre
ella, se crean todas las bases de datos.
Tabla model: Es la tabla modelo, las bases de datos creadas se basan en esta
tabla como modelo.
Tabla Northwind y Pubs: Son tablas de ejemplos que vienen con SQL y todo
usuario puede trabajar con ellas.
Los nombres que se le dan a las tablas, lo primero es que no pueden empezar por un
nmero, deben empezar por un signo alfabtico, pueden incluir el guionbajo ( _ ), la
arroba @ y la almohadilla #.
Generalmente para las variables locales se usan @ + el nombre.
EJEMPLO: @Contador.
Para las variables totales se usan dos arrobas + el nombre @@Contador
EJEMPLO: @@Error
#Nombre: indica una tabla o procedimiento temporal (Local)
[33]
Capacitacin Informtica y Extensin Profesional
TIPOS DE DATOS:
NUMRICOS:
Enteros: int, tinyint, smallint, bigint
Decimales: numeric, decimal, money, smallmoney
Coma Flotante: float, real
FECHAS:
datetime
smalldatetime
CARACTERES:
Ancho fijo: char, nchar
Ancho Variable: varchar, nvarchar
TEXTO E IMAGEN:
Text
Ntext
Rowversion
BINARIO:
Binary, varbinary Valores tipo byte
Bit Un solo bit (1 o ninguno)
IDENTIFICADORES NICOS:
Representa un identificador global nico (GUID).
Si queremos que no se repita el dato en la base de datos, usamos este Identificador.
Uniqueidentifier
CLUSULAS
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea
seleccionar o manipular.
Clusula Descripcin
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros.
Utilizada para especificar las condiciones que deben reunir los registros que se van
WHERE
a seleccionar.
[34]
Capacitacin Informtica y Extensin Profesional
HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo.
OPERADORES LGICOS
Operador Uso
Es el "y" lgico. Evala dos condiciones y devuelve un valor de verdad slo si ambas son
AND
ciertas.
Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdad si alguna de las dos
OR
es cierta.
OPERADORES DE COMPARACIN
Operador Uso
= Igual que.
[35]
Capacitacin Informtica y Extensin Profesional
CONSULTAS DE SELECCIN
CONSULTAS BSICAS
El corazn o poder del Lenguaje SQL es el poder hacer consultas de cualquier tipo a la base
de datos en forma no procedimental. La sentencia SELECT es muy poderosa y ampliamente
rica en sus clusulas y variantes permitiendo la capacidad de atender en poco tiempo a
consultas complejas sobre la base de datos. La sintaxis de las consultas se muestra a
continuacin:
SENTENCIA SELECT-FROM
El utilizar la sentencia SELECT, con estas dos clusulas SELECT FROM, muestra como
resultado a todas las filas existentes en las tablas especificadas en el from.
Ejemplos
COLUMNAS CALCULADAS
Adems de las columnas cuyos valores sern introducidos a la base de datos a travs de la
sentencia INSERT, una consulta SQL puede incluir en su clasula SELECT columnas
calculadas cuyo valor se calculan a partir de los valores de las otras columnas almacenadas
en las tablas. Estas columnas, son especie de una columna virtual pues no existen fsicamente
en las tablas y sus valores calculados corresponden a los valores por fila.
Ejemplo
Mostrar el salario anual, con las dos extras para todos los empleados.
SELECT SALARIO * 14 AS "SALARIO ANUAL" FROM EMPLEADOS
CONDICIONES DE BSQUEDA
SQL usa las conectivas lgicas AND, OR y NOT en la clusula WHERE. Los operandos de las
conectivas lgicas pueden ser expresiones que contengan los operadores de comparacin
<,<=,>,>=,= y <>. SQL permite usar los operadores de comparacin para comparar cadenas y
expresiones aritmticas, as como tipos especiales, tales como el tipo de fecha.
Operacionales
Ejemplos
Visualizar los empleados de la tabla emp que no se dieron de alta entre el 01/01/80
y el 12/12/82.
SELECT * FROM EMP WHERE FECHA_ALT NOT BETWEEN '01/01/1980' AND
'31/12/1982'
Mostrar aquellos empleados con fecha de alta posterior al 1 de Julio de 1985, con el
salario entre 150000 y 400000.
SELECT * FROM EMP
WHERE FECHA_ALT > '01-01-1985'
AND SALARIO BETWEEN 150000 AND 4000000
Igual que en el ejercicio anterior, pero tambin incluimos aquellos que no siendo
analista pertenecen al departamento 20.
SELECT * FROM EMP
WHERE FECHA_ALT > '01-01-1985'
[37]
Capacitacin Informtica y Extensin Profesional
A veces es til comprobar explcitamente los valores NULL en una condicin de bsqueda y
manejarlas directamente.
Ejemplos
Consultar que filas de la tabla ARTCULO tienen un valor NULL en alguna de sus
columnas: DESCRIPCION, EXISTENCIA Y CATEGORIA_ART
SELECT * FROM ARTICULO
WHERE DESCRIPCION IS NULL OR EXISTENCIA IS NULL OR CATEGORIA_ART IS NULL
Ejemplos:
Seleccione todos los datos de los enfermos nacidos antes de 1970 ordenados por
nmero de inscripcin descendente
SELECT * FROM ENFERMO WHERE FECHA_NAC < '01/01/1970'
ORDER BY INSCRIPCION DESC
Para que se puedan realizar consultas a mltiples tablas el requisito principal es que las
tablas a reunirse en una consulta tengan columnas con valores o dominios comunes, es decir
columnas de conexin. Si reunimos a las tablas de la figura anterior, de tal forma que la
Tabla1 se rena con la Tabla2 y esta a su vez con la Tabla3, el requisito indispensable sera:
la Tabla1 debe tener una columna comn en la Tabla2 y Tabla2 debe tener una columna de
conexin en la Tabla3. Por lo general estas columnas son: en una tabla la columna es la clave
primaria y en la otra tabla la columna asociada es la clave fornea que referencia a la
primaria.
Existen dos formas de sintaxis permitidas para la escritura de la sentencia SELECT para la
reunin de tablas, basada en la figura anterior, estas formas son las siguientes:
FORMA 1
SELECT a1,a2,a5,b1,b2,b3,c1,c2,c3
FROM TABLA1, TABLA2, TABLA3
WHERE TABLA1.A1=TABLA2.B2 AND TABLA2.B1=TABLA3.C1
FORMA 2
SELECT a1,a2,a5,b1,b2,b3,c1,c2,c3
FROM TABLA1 INNER JOIN TABLA2 ON TABLA1.A1=TABLA2.B2
INNER JOIN, TABLA3 ON TABLA2.B1=TABLA3.C1
[39]
Capacitacin Informtica y Extensin Profesional
Note que las columnas comunes en ambas han de calificarse con el nombre de la tabla que
pertenecen para evitar errores de ambigedad.
La Forma 2, tiene la ventaja de liberar a la clusula WHERE y dejar esta para filtros
especficos sobre las filas resultantes de la reunin de tablas.
FORMA 1:
SELECT CLIENTE.NUMCLI, NOMCLI, NUMPED, FECHA_PED, TOT_DESC
FROM CLIENTE, PEDIDO
WHERE CLIENTE.NUMCLI=PEDIDO.NUMCLIE
FORMA 2
SELECT CLIENTE.NUMCLI, NOMCLI, NUMPED, FECHA_PED, TOT_DESC
FROM CLIENTE INNER JOIN PEDIDO ON CLIENTE.NUMCLI=PEDIDO.NUMCLI
CONSULTAS INTERNAS
Combina las tablas comparando los valores comunes de los campos indicados mediante
combinaciones cruzadas.
Sintaxis:
Select TablaPrincipal.Campo, Tablaconlaquecombinar.Campo
From TablaPrincipal
Inner Join / Full Join Tablaconlaquecombinar
ON
Condicin para combinar los campos
o Inner Join: Indica que combine los campos con resultados comunes
o Full Join: Indica que combine todos los campos aunque los resultados sean
diferentes.
[40]
Capacitacin Informtica y Extensin Profesional
SELECT
APELLIDO,OFICIO,DNOMBRE
FROM EMP
INNER JOIN DEPT
ON
EMP.DEPT_NO=DEPT.DEPT_NO
ORDER BY DEPT.DNOMBRE
SELECT APELLIDO,OFICIO,DNOMBRE
FROM EMP
FULL JOIN DEPT
ON EMP.DEPT_NO=DEPT.DEPT_NO
ORDER BY DEPT.DNOMBRE
La combinacin Full Join muestra las coincidencias de la tabla Dept con Emp, ms los
valores que no coincidan, como el Empleado SERRA que no tiene departamento y el
departamento EDICIN, que no tiene empleados.
Se podra decir que es como la suma de utilizar left join y right join.
CONSULTAS EXTERNAS
Al igual que las consultas de combinacin internas, combina los valores comunes de los
campos indicados y adems de la tabla que queramos, devuelve tambin el resto de
valores aunque no coincidan. Para ello usaremos las siguientes opciones combinadas
con join: Sintaxis:
Select tablaprincipal.campo, tablaacombinar.campo
From tablaprincipal
left join / right join / cross join
tabla on condicin
o left Join: Indica que muestre todos los resultados de la columna de la izquierda.
o Right Join: Indica que muestre todos los resultados de la columna de la derecha.
[41]
Capacitacin Informtica y Extensin Profesional
SELECT APELLIDO,OFICIO,DNOMBRE
FROM EMP
LEFT OUTER JOIN DEPT
ON EMP.DEPT_NO=DEPT.DEPT_NO
ORDER BY DEPT.DNOMBRE
El empleado Serra tiene el nombre del departamento con el valor null porque no tiene
ningn departamento asociado y nosotros en la consulta le estamos diciendo que
seleccione los empleados aunque no tengan departamento asociado, ponemos como
principal la tabla de la izquierda (EMP).
SELECT APELLIDO,OFICIO,DNOMBRE
FROM EMP
RIGHT OUTER JOIN DEPT
ON EMP.DEPT_NO=DEPT.DEPT_NO
ORDER BY DEPT.DNOMBRE
En esta consulta el departamento de edicin tiene valores null porque le hemos dicho que
seleccione la tabla de la derecha como principal (dept), con lo cual selecciona todos los
campos de la tabla departamentos con coincidencias con emp o sin ellas.
SELECT APELLIDO,OFICIO,DNOMBRE
[42]
Capacitacin Informtica y Extensin Profesional
FROM EMP
CROSS JOIN DEPT
Para ello crearemos dos copias de la misma tabla ponindole un alas, para posteriormente
combinar los resultados de ambas copias.
Devuelve los 3 primeros registros con oficio empleado, y si existe algn empleado
ms, tambin lo devuelve, porque coincide con lo que buscamos.
SELECT TOP 3 WITH TIES OFICIO, APELLIDO FROM EMP WHERE OFICIO = 'EMPLEADO'
ORDER BY OFICIO
SUBCONSULTAS
[43]
Capacitacin Informtica y Extensin Profesional
[44]
Capacitacin Informtica y Extensin Profesional
Recomendaciones:
[45]
Capacitacin Informtica y Extensin Profesional
ASCII
Devuelve el cdigo ASCII del carcter ms a la izquierda de una expresin de caracteres.
SELECT ASCII('A')-->65
SELECT ASCII('A')-->97
SELECT ASCII('AULA')-->97
CHAR
Una funcin de cadena que convierte un cdigo ASCII int en un carcter.
SELECT CHAR(65)-->A
SELECT CHAR(97)-->A
CHARINDEX
Devuelve la posicin inicial de la expresin especificada en una cadena de caracteres.
Argumentos
Expression1
Es una expresin que contiene la secuencia de caracteres que se desea buscar. Expression1
es una expresin del tipo de cadenas cortas de caracteres.
Expression2
Es una expresin, normalmente una columna, en la que se busca la cadena especificada.
Expression2 es de la categora del tipo de datos cadena de caracteres.
start_location
Es la posicin del carcter de expression2 en el que se empieza la bsqueda de expression1.
Si no se especifica start_location, es un nmero negativo o es cero, la bsqueda empieza al
principio de la cadena expression2.
LEFT
Devuelve la parte de una cadena de caracteres que comienza en un nmero de caracteres
especificado a partir de la izquierda.
SELECT LEFT('MURCIELAGO',5)-->MURCI
[46]
Capacitacin Informtica y Extensin Profesional
RIGHT
Devuelve la parte de una cadena de caracteres que comienza en el nmero de caracteres
especificado en integer_expression a partir de la derecha.
SELECT RIGHT('HOLA QUE TAL',5)-->E TAL
LEN
Cuenta el nmero de caracteres que se incluyen en la cadena.
SELECT LEN('MURCIELAGO')-->10
LOWER
Convierte a Minsculas la cadena especificada.
SELECT LOWER('MURCIELAGO') AS [MINUSCULAS]-->MURCIELAGO
UPPER
Convierte a Maysculas la cadena especificada
SELECT UPPER('MURCIELAGO') AS [MAYUSCULAS]-->MURCIELAGO
RTRIM Y LTRIM
Elimina los espacios que existen a la izquierda y a la derecha respectivamente.
SELECT RTRIM (' MURCIELAGO ') AS [SIN ESPACIOS]-->MURCIELAGO
SELECT LTRIM (' MURCIELAGO ') AS [SIN ESPACIOS]-->MURCIELAGO
SELECT LTRIM(RTRIM(' HOLA '))+'.'
REPLACE
Reemplaza por una tercera expresin todas las apariciones de la segunda expresin de
cadena proporcionada en la primera expresin de cadena.
SELECT REPLACE('HOLA QUE TAL ESTAS','A','A')-->HOLA QUE TAL ESTAS
SELECT REPLACE('BUENOS DIAS, QUE TAL ESTAS','UE','')-->BNOS DIAS,Q
TAL ESTAS
SPACE
Coloca el nmero de espacios que se le indiquen para entre una cadena de caracteres.
SELECT 'HOLA'+SPACE(5)+'QUE TAL'-->HOLA QUE TAL
SUBSTRING
Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen.
Sintaxis:
Argumentos
Expression
Es una cadena de caracteres, cadena binaria, texto, imagen, columna o expresin que incluye
una columna. No deben usarse expresiones que incluyan funciones de agregado.
start
Es un entero que especifica el punto en que comienza la subcadena.
length
Es un entero que especifica la longitud de la subcadena (el nmero de caracteres o bytes que
se devuelven).
[47]
Capacitacin Informtica y Extensin Profesional
SELECT SUBSTRING('MURCIELAGO',3,5)-->RCIEL
SELECT SUBSTRING('MURCIELAGO',3,LEN('MURCIELAGO'))-->RCIEL
REVERSE
Devuelve invertida una expresin de carcter.
SELECT REVERSE('HOLA')
REPLICATE
Repite una expresin de caracteres un nmero especificado de veces.
SELECT REPLICATE('MURCIELAGO',5)
replicate, replicate, replicate, replicate, replicate
STUFF
Elimina el nmero de caracteres especificados e inserta otro conjunto de caracteres en un
punto de inicio indicado.
SELECT STUFF('MURCIELAGO', 2, 3, 'IJKLMN') MIJKLMNIELAGO
FUNCIONES MATEMATICAS
ABS
Es el valor Absoluto
SELECT ABS(-4) AS 'VALOR ABSOLUTO'-->4
CEILING
Devuelve el entero ms pequeo mayor o igual que la expresin numrica dada.
SELECT CEILING(5.4) AS 'CEILING'--6
FLOOR
Devuelve el entero ms grande menor o igual que la expresin numrica dada.
SELECT FLOOR(5) AS 'FLOOR'-->5
POWER
Devuelve el valor de la expresin indicada elevada a la potencia especificada.
SELECT POWER(3,2) AS '3 ELEVADO A 2'-->9
RAND
Devuelve un valor float aleatorio de 0 a 1.
Las llamadas repetitivas de RAND() en una nica consulta producirn el mismo
valor.
SELECT RAND(6) AS 'ALEATORIO'--0.71368515806921451
SELECT RAND(6) AS 'ALEATORIO'--0.71368515806921451
SELECT RAND(4) AS 'ALEATORIO'--0.7136478921266981
ROUND
Devuelve una expresin numrica, redondeada a la longitud o precisin especificada.
Round(Numero, Redondeo del Nmero)
ROUND siempre devuelve un valor. Si length es un valor negativo y mayor que el nmero de
dgitos anteriores al separador decimal, ROUND devuelve 0.
SELECT ROUND(123.4567,2)-->123.4600
SELECT ROUND(123.4567,-2)-->100.0000
SELECT ROUND(123.4567,0)-->123.0000
SELECT ROUND(123.4567,-3)--->0
SIGN
Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresin especificada.
Dice el valor negativo, positivo o neutro (0) del valor especificado
SELECT SIGN(-3)-->-1
SELECT SIGN(3)-->1
SELECT SIGN(0)-->0
SQUARE
Devuelve el cuadrado de la expresin especificada.
SELECT SQUARE(4) AS CUADRADO-->16.0
SQRT
Devuelve la raz cuadrada de la expresin especificada.
SELECT SQRT(4) AS [RAIZ CUADRADA]-->2.0
FUNCIONES DE SISTEMA
APP_NAME ()
Devuelve el nombre de la aplicacin actual
SELECT APP_NAME() AS [NOMBRE DE LA APLICACION]
DATALENGTH (EXPRESION)
Devuelve un entero que es numero de bites necesarios para representar esa expresin int
SELECT DATALENGTH('NINONI') AS [NUMERO DE BITES]
ISDATE (EXPRESION)
Dice si la expresin es una fecha o no. Devuelve 1 si la expresin es una fecha y 0 si no es una
fecha.
SELECT ISDATE ('12/10/01') AS [VALIDACION FECHA]
[49]
Capacitacin Informtica y Extensin Profesional
ISNUMERIC (EXPRESION)
Dice si la expresin es un numero o no. Devuelve 1 si la expresin es un nmero y 0 si la
expresin no es nmero.
SELECT ISNUMERIC('DDD') AS [VALIDACION NUMERO]
SYSTEM_USER
Devuelve el usuario del sistema actual. Depende de la autentificacin con la que te hayas
conectado
[50]
Capacitacin Informtica y Extensin Profesional
USER_NAME()
Devuelve el nombre del usuario actual
SELECT USER_NAME()
FUNCIONES DE FECHA
GETDATE
Funcion que recupera la fecha actual del sistema.
SELECT GETDATE()
DATENAME
Devuelve una cadena de caracteres que representa la parte de la fecha especificada de la
fecha especificada. Los calculos para las horas no son exactos cuando se trata de
smallDateTime, por lo que devuelve 0.
SELECT DATENAME(MONTH,FECHA_ALT) AS 'NOMBRE MES' FROM EMP WHERE EMP_NO = 7867 DICIEMBRE
SELECT DATENAME(M,FECHA_ALT) AS 'NOMBRE MES' FROM EMP WHERE EMP_NO =7867 DICIEMBRE
[51]
Capacitacin Informtica y Extensin Profesional
Horas:
DATEPART
Devuelve la parte de la fecha u hora indicada. Sintaxis:
Datepart(Valoradevolver, fecha)
DATEADD
Aade un nmero a la fecha puesta
DateAdd( datepart , number, date )
DatePart es el formato de lo que queremos aadir.
Number es el nmero que queremos incrementar la fecha expuesta.
SELECT CONVERT(DATETIME,'1-1-02')
SELECT DATEADD(DD,7,'1-1-02')
DATEDIFF
FUNCIONES DE AGREGADO
Son funciones que se utilizan para calcular valores en las tablas. Si queremos usarlas
combinndolas junto con otros campos debemos utilizar Group by y agrupar los datos que
no son funciones.
Con la sentencia group by no se utiliza la clausula where, se utilizara una clausula propia de
la expresin: HAVING. Equivalente a where
COUNT
Cuenta los registros que hay en la consulta.
Si pongo un valor dentro de la expresin devolver la cuenta de todos los registros no nulos.
[52]
Capacitacin Informtica y Extensin Profesional
Si pongo un asterisco contar todos los registros aunque tengan valores nulos.
SELECT COUNT(*) FROM EMP Valores con Nulos
SELECT COUNT(OFICIO) FROM EMP Valores sin Nulos
AVG
Realiza la media sobre la expresin dada, debe ser un tipo de dato Int.
SELECT AVG(SALARIO) FROM EMP
MAX
Saca el valor mximo de una consulta.
SELECT MAX(FECHA_ALT) FROM EMP
MIN
Devuelve el valor mnimo de una consulta.
SELECT MIN(FECHA_ALT) FROM EMP
SUM
Devuelve la suma de los salarios
SELECT SUM(SALARIO) FROM EMP
Ejemplos:
Encontrar el salario mas alto, mas bajo y la diferencia entre ambos de todos los
empleados con oficio EMPLEADO.
[53]
Capacitacin Informtica y Extensin Profesional
SELECT DEPT_NO AS [N DE
DEPARTAMENTO], COUNT(*) AS [N
DE PERSONAS], OFICIO
FROM EMP GROUP BY DEPT_NO,
OFICIO ORDER BY 1
[54]
Capacitacin Informtica y Extensin Profesional
BUCLES
Nivel de instruccin:
Bloques BEGIN......END
Bloques IF.............ELSE
Construcciones WHILE
Sacar Nmeros pares con IF
--IF
declare @n int
set @n = 5
if (@n % 2)= 0
print 'PAR'
else
print 'IMPAR'
--BUCLES Declare
@n int set @n = 0
while @n < 10 begin
if (@n % 2) = 0
select @n as Numero
set @n = @n + 1
end
[55]
Capacitacin Informtica y Extensin Profesional
NIVEL DE FILA
SENTENCIA CASE
CASE expresion
WHEN valor1 THEN resultado1
ELSE resultadoN
END
CASE
WHEN verdadero THEN resultado1
ELSE resultado2
END
--CASE
DECLARE @N INT
SET @N = 1
WHILE (@N<100)
BEGIN
SELECT @N AS 'NUMERO', CASE WHEN
(@N % 2) = 1 THEN
'IMPAR'
ELSE
'PAR'
END AS 'TIPO' SET
@N = @N + 1
END
EJEMPLO:
Esto se puede utilizar tambin para inicializar variables. Es el mismo caso pero utilizando el
CASE para inicializar una variable.
[56]
Capacitacin Informtica y Extensin Profesional
SENTENCIA CONVERT
Se usa para convertir el numero a una cadena de dos caracteres y lo concatenamos con @tipo.
CAST realiza lo mismo que CONVERT
DECLARE @N INT,@TIPO CHAR(10) SET
@N = 5
IF (@N BETWEEN 4 AND 6)
BEGIN
WHILE (@N > 0)
BEGIN
SET @TIPO = CASE (@N % 2)
WHEN 1 THEN 'IMPAR'
ELSE 'PAR'
END
SELECT @N AS 'NUMERO', @TIPO AS 'TIPO'
PRINT CONVERT (CHAR(2),@N) + @TIPO
PRINT CAST (@N AS CHAR(2)) + @TIPO SET
@N = @N - 1
END
END
Ponemos Cast y Convert para poder concatenar un valor de tipo Int con un valor de tipo Char,
sino intentara sumarlos y dara error.
[57]
Capacitacin Informtica y Extensin Profesional
Cuando hay llaves es porque se debe elegir entre uno de los dos, esta barra | indica que se
debe poner uno de los dos valores.
USO INSERT...SELECT:
Se introducen en la tabla las columnas y filas que devuelva con sus respectivos datos. La
consulta SELECT debe devolver los datos adecuados para la tabla donde vamos a introducir
los valores.
Con esta sentencia se pone el valor predeterminado que tenga la tabla, si no tiene valor por
defecto, pondr null, lo que equivale a no poner el dato.
[58]
Capacitacin Informtica y Extensin Profesional
ELIMINACIN DE DATOS
DELETE:
Elimina una o varias filas. Hay un control de las modificaciones (Borrado) que se estan
haciendo.
TRUNCATE TABLE
Elimina todas las filas de la tabla (La tabla con su estructura no se elimina, slo los datos de la
tabla). No crea filas en el registro de transacciones, con lo cual es el mtodo ms rpido de
borrar.
ACTUALIZACIONES
ACTUALIZACIN DE FILAS BASADAS EN DATOS DE LA PROPIA TABLA
USE Northwind
UPDATE products
SET unitprice = (unitprice * 1.1 )
[59]
Capacitacin Informtica y Extensin Profesional
Cambiar el salario de los empleados del dept 30 donde el departamento sea 60.
[60]
Capacitacin Informtica y Extensin Profesional
[Order Details]
Order Id : N de Pedido.
Producto Id : N de Producto.
Ambos campos son Primary Key, con lo que no puede haber una combinacin de ambos
campos que sea igual.
OrderId ProductId
1 A
1 B
1 C
2 A
3 C
ROLLUP
Se usa para presentar resmenes de datos. A de usarse junto con la clausula group by, lo que
hace es realizar un resumen de los campos incluidos en el rollup.
SELECT PRODUCTID, ORDERID,
SUM(QUANTITY) AS CANTIDAD_TOTAL
FROM [ORDER DETAILS]
GROUP BY PRODUCTID, ORDERID
WITH ROLLUP
ORDER BY PRODUCTID, ORDERID
[61]
Capacitacin Informtica y Extensin Profesional
CUBE
Al igual que Rollup realiza resmenes de campos agrupados. Pero en este caso muestra un
resumen con cada combinacin posible de los campos agrupados.
GROUPING
[62]
Capacitacin Informtica y Extensin Profesional
COMPUTE
Vemos que
muestra la
columna con la
suma total de
todas las
cantidades.
[63]
Capacitacin Informtica y Extensin Profesional
COMPUTE BY
Hace un resumen similiar al realizado mediante Cube o Rollup. Realiza grupos del campo
indicado, y muestra el resultado de la funcin indicada en una columna aparte por cada
grupo que haya. Su formato es Compute Funcin (campo) By Campo
NOTA: Los campos por los que van despus de la clausula By deben ir incluidos en la
clausula ORDER BY y adems en el mismo orden en el que aparecen.
SELECT PRODUCTID, ORDERID, QUANTITY
FROM [ORDER DETAILS]
ORDER BY PRODUCTID, ORDERID
COMPUTE SUM(QUANTITY) BY PRODUCTID
[64]
Capacitacin Informtica y Extensin Profesional
[65]
Capacitacin Informtica y Extensin Profesional
[66]
Capacitacin Informtica y Extensin Profesional
Establecemos las
claves principales.
Para ello, nos
posicionamos
sobre el campo
que queramos y
pulsamos el icono
de la llave.
Nos
posicionamos
sobre el campo
clave y hacemos
clic sobre, el, sin
soltar
arrastramos
hasta el campo
con el que
queremos
establecer la
relacin.
[67]
Capacitacin Informtica y Extensin Profesional
Despus de
pulsar aceptar,
estar establecida
la relacin.
Pulsamos el
icono de guardar
para guardarla.
[68]
Capacitacin Informtica y Extensin Profesional
PROCEDIMIENTOS ALMACENADOS
Sintaxis:
Ejemplo 1
Ejemplo 2
Sintaxis:
Create Procedure Nombre @Variable tipo = Valor
As
Instrucciones
Donde Valor es el valor que le damos por defecto, este valor puede almacenar
comodines (como % que equivale a *).
Ejemplo 1
Create Procedure numemp @ndept smallint = 10
As
Select dept_no, count(*) as [num empleados]
From emp
Where dept_no = @ndept
Group by dept_no
[69]
Capacitacin Informtica y Extensin Profesional
Ejemplo 2
Sacara el salario, el oficio y la comisin de todos los que tengan apellido Jimnez, sino
pusisemos parmetro, por defecto sacara los que tuviesen apellido Rey.
Ejemplo 3
Select oficio, salario, comision from emp where apellido like '%' + @papellido + '%'; Exec
salariooficio s
Sacara oficio, salario y comisin de los empleados que tuviesen una s en su apellido.
Sintaxis de declaracin
Declare @nombre tipo_dato
Sintaxis de asignacin directa
Set @nombre = valor
Sintaxis de asignacin mediante consulta
Select @nombre = campo from tabla
Sintaxis
Create Procedure Nombre @Variable tipodedato Output
Instrucciones
Print @Variable
Ejemplo 1:
[70]
Capacitacin Informtica y Extensin Profesional
Ejemplo 2:
[71]
Capacitacin Informtica y Extensin Profesional
Si tenemos una tabla de clientes, y otra de informes, por ej. cada vez que se produzca una
baja en clientes, almacenamos el nombre y apellidos del cliente en informe para
posteriormente hacer una estadstica con los clientes borrados.
Tenemos la tabla de nominas, cada vez que un usuario acceda a ella, el trigger se activa y
almacena su nombre en otra tabla.
ELIMINACIN EN CASCADA
Vamos a ver un ejemplo de creacin de un trigger para cuando borremos un departamento
se actualice la tabla empleados borrando todos aquellos cuyo departamento sea el borrado.
Entramos en el diseo de la tabla dept...
...y pulsamos el icono de
desencadenadores.
Como se ve en la sintaxis, le
indicamos que es lo que va a
hacer en el trigger detrs del
For.
[72]
Capacitacin Informtica y Extensin Profesional
Con lo que si por ej. borramos el departamento 20 de la tabla dept, este departamento se
almacenar en la tabla Deleted, una vez borrado, se desencadena el trigger, y borrara de la
tabla empleados, todos los empleados cuyo n de departamento, coincida con el que se ha
borrado y almacenado en la tabla deleted. Si borrasemos 4 departamentos con una misma
orden, se activara el trigger con cada departamento borrado.
Como hemos visto en el ejemplo anterior, para borrar existe la tabla de sistema deleted
donde almacena los registros borrados, al igual que para insertar almacena los registros
insertados en la tabla inserted, pero para modificar no existe ninguna tabla update, lo que
hace en realidad es insertar en la tabla deleted el registro antes de ser modificado y en la
tabla inserted el registro ya modificado, porque entiende que se ha borrado un registro y se
ha insertado otro.
Con lo cul para crear un trigger que se active con un update, trabajaremos con las tablas
deleted e inserted.
Ejemplo Update:
[73]
Capacitacin Informtica y Extensin Profesional
Con lo que este ejemplo lo que hara es que cuando modificamos un registro en la tabla dept,
se activa el trigger, va a la tabla insert y busca los registros cuyo n de depto. Coincida con
En este ejemplo inserto un nuevo empleado y lo que hago es mostrar el empleado insertado
desde la tabla inserted.
Create Trigger
Insertar_Emp
On Emp
for Insert
As
Select * from
Inserted
[74]
Capacitacin Informtica y Extensin Profesional
Ejemplo General
El siguiente ejemplo almacenar en una tabla que crearemos un registro con datos de
cada fila que borremos, modifiquemos o insertemos.
Este registro contendr
N de empleado.
Usuario que realiz la consulta de accin.
Fecha de la consulta de accin.
Tipo de operacin realizada.
1 Creamos la tabla
2 Creamos el trigger de
borrado en la tabla de
empleados.
[75]
Capacitacin Informtica y Extensin Profesional
[76]
Capacitacin Informtica y Extensin Profesional
SP_HELPDB
Muestra todas las bases de datos del servidor, con su propietario, tamao hora de creacin
etc. SP_HELPDB
SP_SPACEUSED
Muestra el espacio usado de la base de datos que estamos usando actualmente.
USE EJEMPLO
Exec SP_SPACEUSED
[77]
Capacitacin Informtica y Extensin Profesional
Son los formados por archivos NDF, donde como hemos visto antes, se almacenan copias de
seguridad, vistas etc.
Para crear un grupo de archivo secundario seguiremos los siguientes pasos:
1. Modificamos la base de datos para aadirle el grupo de archivos secundario, para
ello usaremos Add FileGroup
Alter Database Base de datos
Add FileGroup Grupodearchivosecundario
SP_HELPFILE
[78]
Capacitacin Informtica y Extensin Profesional
Con Add File, podemos aadir un nuevo archivo NDF al archivo secundario de la base
de datos elegido. Sintaxis:
o EmptyFile: Indica que el tamao del archivo reducido, pase a otros archivos
secundarios del mismo grupo.
o TruncateOnly: Indica que el tamao reducido de la base de datos pasa al
sistema operativo. Si no ponemos ninguna opcin esta es la opcin por defecto
o NoTruncate: Indica que el tamao reducido de la base de datos no pasa al
sistema operativo.
[79]
Capacitacin Informtica y Extensin Profesional
SHRINKDATABASE
Sintaxis:
Opciones:
o EmptyFile: Indica que el tamao del archivo reducido, pase a otros archivos
secundarios del mismo grupo.
o TruncateOnly: Indica que el tamao reducido de la base de datos pasa al sistema
operativo. Si no ponemos ninguna opcin esta es la opcin por defecto
o NoTruncate: Indica que el tamao reducido de la base de datos no pasa al
sistema operativo.
Ejemplo:
Administrador Corporativo Eliges una Tabla Procedimientos almacenados que empiecen por
sp. Para crear un nuevo tipo de dato se usa sp_addtype
Para eliminarla
sintaxis parcial
CHECK
[81]
Capacitacin Informtica y Extensin Profesional
Sintaxis parcial
[Constraint nombrerestriccion)
chech ( Expresion )
PRIMARY KEY
Sintaxis parcial
[ Constraint NombreRestic ]
primary key [Clustered | NonClustered ] columnas,)
ALTER TABLE
EMP ADD
CONSTRAINT PK_EMP
PRIMARY KEY NONCLUSTERED (EMP_NO)
UNIQUE
- Permite un valor nulo
- Permite varias en una tabla
- Formadas por una o mas columnas
- Exigida con un ndice nico
Sintaxis parcial
[Constraint nombreRestriccion ]
Unique [Clustered | non Clustered ] (Columnas,...)
ALTER TABLE
EMP ADD
CONSTRAINT U_APELLIDO
UNIQUE NONCLUSTERED (APELLIDO)
[82]
Capacitacin Informtica y Extensin Profesional
FOREIGN KEY
Sintaxis parcial
[Constraint nombreRest ]
Foreign key (Columna,...)
References tablaRef (Columna,)
Sintaxis parcial
[Constraint NombreRestriccion)
[Foreign Key ] (Columna)
References TablaRef (Columnas,)
[On Delete {Cascade | No Action}]
[On Update {Cascade | No Action}]
NO Action es la predeterminada
Products Orders
PK ProductId PK OrderId
FK ProductId
Con cascade si borras , borrara lo que este asociado a ella en la otra tabla , pero con No Action
no te dejara borrarlo ya que esta asociado a otra tabla la cual tiene la clave principal. . Con
cascade puedes borrar ProductId de products, lo cual borrara productId
de orders , con No Action no lo podras borrar
[83]
Capacitacin Informtica y Extensin Profesional
DESHABILITACION DE RESTRICCIONES
Sintaxis parcial
Alter Table
[WITH CHECK | WITH NOCHECK] Add
Constrain restriccion
{ Foreign key (Columna,)
References TablaRef (Columna,)
{ CHECK (Condicion)
USE NORTHWIND
ALTER TABLE
EMPLOYEES WITH
NOCHECK
ADD
CONSTRAINT FK_EMPLOYEES_EMPLOYEES
FOREIGN KEY (REPORTSTU)
REFERENCES EMPLOYEES(EMPLOYEEID)
ALTER TABLE
EMP2 WITH
NOCHECK ADD
CONSTRAINT FK_EMP_DIR
FOREIGN KEY (DIR)
REFERENCES EMP2(EMP_NO)
USE NORTHWIND
ALTER TABLE EMPLOYEES
NOCHECK CONSTRAINT FK_EMPLOYEES_EMPLOYEES
Con esto introduces los datos y vuelves a habilitar la restriccin
[84]
Capacitacin Informtica y Extensin Profesional
Sintaxis
use northwind
GO
CREATE DEFAULT Telefono_default AS '(00)000-0000' GO
use northwind
EXEC sp_helpconstraint products
Para eliminar varios objetos de la base de datos con una sola sentencia
[85]
Capacitacin Informtica y Extensin Profesional
REGLAS
Sintaxis
CREATE RULE NOMBREREGLA
AS CONDICIN
USE HOSPITAL
CREATE RULE FUNCION_RULE AS
@FUNCION IN('INTERINO','ENFERMERO','ENFERMERA') GO
EXEC SP_BINDRULE FUNCION_RULE,'PLANTILLA.FUNCION'
USE NORTHWIND
GO
CREATE RULE REGIONCODE_RULE
AS
@REGIONCODE >=1000 AND @REGIONCODE <=100
GO
EXEC SP_BINDRULE
REGIONCODE_RULE,'CUSTOMERS.REGION' O tambin
USE NORTHWIND
GO
CREATE RULE REGIONCODE_RULE
AS
@REGIONCODE LIKE [0-9][0-9 ][ 0-9] GO
EXEC SP_BINDRULE REGIONCODE_RULE,'CUSTOMERS.REGION'
[86]
Capacitacin Informtica y Extensin Profesional
Advertencia: al cambiar cualquier parte del nombre de un objeto pueden dejar de ser
vlidas secuencias de comandos y procedimientos almacenados.
El object ha cambiado su nombre por 'Funcion_Regla'.
[87]
Capacitacin Informtica y Extensin Profesional
PERMISOS Y USUARIOS
[88]
Capacitacin Informtica y Extensin Profesional
Tenemos los inicios de sesion, Funciones predefinidas por el sistema y tienen alcance
sobre toda las bases de datos del servidor.
Por ejemplo, Database Creator ofrece permisos sobre crear nuevas bases de datos en el servidor.
[89]
Capacitacin Informtica y Extensin Profesional
Funciones del
Servidor
Poderes para los
usuarios, sus
funciones y sus
capacidades,
privilegios sobre
todas las bases o el
servidor. Nos
muestra una
pequea
descripcin de
cada una al pulsar
sobre ellas.
[90]
Capacitacin Informtica y Extensin Profesional
Le damos al usuario poderes sobre la funcin Db_datareader sobre la base de datos Hospital.
Para ver los permisos nos vamos a la base de datos Hospital, seleccionamos Funciones.
[91]
Capacitacin Informtica y Extensin Profesional
Seleccionamos al
usuario y pulsamos en
los permisos
Revocado
Con Acceso
Denegado
[92]
Capacitacin Informtica y Extensin Profesional
Escribimos el nombre de
nuestro nuevo usuario y su
contrasea para poder
concectar.
Intentar hacer un Select, en este caso me permite realizar la consulta, porque tengo
permisos de tipo Select.
SELECT * FROM DEPT
[93]
Capacitacin Informtica y Extensin Profesional
Ahora vamos a
conceder ms
permisos al
usuario Pepe, lo
vamos a incluir en
la funcin
db_datawriter para
que adems pueda
realizar consultas
de accin sobre la
tabla (Insert,
Update y Delete)
(1 filas afectadas)
(1 filas afectadas)
[94]
Capacitacin Informtica y Extensin Profesional
Creacin de un grupo de funciones para un grupo de usuarios con las mismas caractersticas.
Seleccionamos una
tabla, pulsamos sobre
Funciones con el botn
derecho y
seleccionamos: Nueva
funcin de base de
datos.
Escribimos el nombre de
nuestra nueva Funcin, no
le damos todava los
usuarios ni los permisos,
esto es solamente para
crearla.
[95]
Capacitacin Informtica y Extensin Profesional
[96]
Capacitacin Informtica y Extensin Profesional
Los permisos que tiene el usuario siguen actuando, y adems hereda los permisos que tiene
de la Funcin Becarios. Los permisos siguen funcionando a no ser que se le deniegue
explicitamente el acceso a un permiso sobre la funcin, entonces el usuario no puede
ejecutar la orden si est dentro de la funcin.
En este caso el usuario PEPE tiene los permisos de Select y consultas de accin sobre la base
de datos Hospital. Pero el usuario est dentro de la funcin Becarios y le hemos denegado el
acceso a realizar un Select sobre la tabla Plantilla.
Al realizar el Select sobre la tabla plantilla tiene los permisos denegados por ser miembro de
la funcin Becarios. Se le niega el acceso expresamente sobre acciones en una tabla y no
importa los permisos que tenga el propio usuario.
[97]
Capacitacin Informtica y Extensin Profesional
USUARIO PEPE
FUNCION BECARIOS
[98]
Capacitacin Informtica y Extensin Profesional
SEGURIDAD
Cuando un usuario se conecta a un servidor, lo hace a travs de una cuenta facilitada por el
administrador de la base de datos. Esta cuenta tiene una serie de permisos que el
administrador da, estos permisos pueden ser de restriccin a determinadas tablas, o por
ejemplo que un usuario pueda solo insertar, o seleccionar en determinadas tablas.
Existen dos formas de entrar a la base de datos, bien mediante el usuario de windows 2000,
mediante el usuario de la base de datos.
Mediante el usuario de windows, facilitamos al equipo desde el que nos conectamos, los
recursos del servidor de sql server, pudiendo incluso bloquear el equipo desde el que se
conecta el usuario.
Para que un usuario tenga acceso a una base de datos, despus de crearle una cuenta de
inicio de sesin, y asocirsela a una base de datos, hemos de darle permisos para que pueda
acceder a esa base de datos. Posteriormente, mediante funciones le indicaremos que es lo
que puede hacer en esa base de datos. Puede tener permisos para una base de datos o para
todo el servidor.
FUNCIONES
Agrupamos usuarios y sobre estos usuarios daremos permisos a ese grupo de usuarios. Las
funciones de usuario, se usan para establecer los permisos que un grupo de usuario tendr
sobre una determinada base de datos.
Una vez creado el usuario, y asignada la base de datos, podemos asociar este usuario a la
funcin que queramos para controlar los permisos que tiene sobre la base de datos
asignada.
CREAR UN USUARIO
Para crear un usuario y poder usarlo, hemos de establecer todos los pasos descritos en los
puntos anteriores.
Estos pasos, los realizaremos todos en el analizador de consultas:
[99]
Capacitacin Informtica y Extensin Profesional
SP_ADDLOGGIN
Crea una cuenta de inicio para un usuario y lo asigna a una base de datos.
Sintaxis:
SP_DROPLOGIN
Borra una cuenta de inicio de un usuario, siempre y cuando el usuario no est
conectado y no tenga permisos sobre ninguna base de datos (si los tiene hemos
de revocarlos antes de borrar la cuenta de inicio y el usuario)Sintaxis:
SP_DROPLOGIN 'Pepe'
Inicio de sesin quitado.
SP_GRANTDBACCESS
Use Hospital
GO
SP_GRANTDBACCESS 'Pepe'
Concedido a la base de datos acceso a 'Pepe'.
[100]
Capacitacin Informtica y Extensin Profesional
Para establecer los permisos de la funcin que hemos creado, usaremos el comando
GRANT. Sintaxis:
GRANT Permisos
ON Tabla / Objeto
To Funcin / Usuarios
DENY SELECT ON
Emp
TO Becarios
REVOKE Permisos
On Tabla
To Funcin
REVOKE UPDATE On
Emp
to Becarios
Si despus de
ejecutar todos
estos comandos
hacemos doble
click sobre la
funcin y vemos
los permisos.
[102]
Capacitacin Informtica y Extensin Profesional
Una vez realizados estos pasos, si entramos en el analizador de consultas con el usuario
Pepe, si intentamos realizar una consulta no permitida, nos advertir mediante un mensaje
que no podemos realizar la consulta:
Una vez tengamos la funcin sin usuarios asignados, podremos borrarla, para borrarla
usaremos el procedimiento almacenado de sistema SP_DROPROLE. Sintaxis: SP_DROPROLE
Funcin
En este caso sera:
EXEC SP_DROPROLE Becarios
Funcin quitada.
[103]
Capacitacin Informtica y Extensin Profesional
Otro mtodo que tenemos para poder ofrecer permisos es con la opcin
With Grant Option
Con esta opcin despus de la sentencia de conceder derechos, permito al usuario al que estoy
concediendo permisos pueda conceder permisos a su vez sobre los privilegios que se le han
otorgado.
Sintaxis:
Grant Select, Insert, Update, Delete
On Tabla / Vista
To Usuario / Funcion
With Grant Option
Ejemplo:
Un administrador concede permisos a Pepe para poder hacer selecciones sobre la tabla
Emp.
Usuario Administrador
Grant Select
On Emp
To Pepe
With Grant Option
Este usuario podr a su vez conceder permisos a otro usuario sobre sus privilegios, es
decir, sobre la tabla emp y solamente con Select.
Usuario Pepe
Grant Select
On Emp
To Luisa
La cadena termina aqu, ya que Pepe no ha concedido permisos a Luisa para que pueda
conceder permisos a su vez.
Si el administrador revocase los permisos Select a Pepe, estos permisos se revocan a su vez
sobre el usuario Luisa, ya que no tiene permisos de nadie ms para ver la Tabla.
Otra opcin es que el usuario Pepe conceda permisos a Luisa pero solamente sobre unos
determinados campos.
Esto se puede utilizar tambin pero sera ms conveniente utilizar una Vista.
[104]
Capacitacin Informtica y Extensin Profesional
IMPLEMENTACIN DE VISTAS
Las vistas son consultas ya realizadas, pueden ser de una sola tabla o de varias. Muy tiles si
por ejemplo queremos que un usuario solo tenga acceso a unas determinadas columnas de
una tabla pero no a otras, para eso crearemos una vista con las columnasque puede ver. Las
vistas tienen la propiedad que si cambiamos el nombre de las tablas o columnas a las que hace
referencia, automticamente se cambian en esta.
CREATE VIEW
Crea una vista. Sintaxis:
Create View NombreVista
As
Sentencia Sql
Ejemplo:
Crea una vista llamada VistaEmpleados que contiene n de empleado, apellido, fecha de alta,
y nombre de departamento de las tablas Empleados y Departamento.
[105]
Capacitacin Informtica y Extensin Profesional
Si despus de esto, modificamos los datos de las tablas aceptadas por la vista...
Volvemos a ver los datos de la vista y vemos que tambin han cambiado, ya que la Vista
no es una copia de los datos si no una consulta realizada sobre los datos originales...
Tambin se pueden realizar consultas usando campos de tablas mezclados con campos
de vistas.
Ejemplo:
Tambin se puede realizar una vista con datos de una consulta de una tabla y una vista.
[106]
Capacitacin Informtica y Extensin Profesional
DROP VIEW
Borra una Vista. Sintaxis:
Drop View NombreVista
Ejemplo:
Drop View todos
SP_HelpText
Muestra la consulta que realiza la vista. Sintaxis:
SP_HelpText Vista
Ejemplo
SP_HelpText VistaEmpleados
SP_Depends
Muestra las tablas, campos e incluso vistas de las que depende una vista. Sintaxis:
SP_Depends Vista
Ejemplo:
SP_Depends VistaEmpUnionHospital
[107]
Capacitacin Informtica y Extensin Profesional
Ejemplo:
sp_helptext apellidos
Los comentarios de objeto han sido cifrados.
Crea una vista cuyos datos a los que hace referencia, no se pueden modificar o borrar, para
que los resultados de la vista no se vean afectados. Esto es muy prctico en caso de que por
ejemplo hagamos una vista con una consulta que usa where.
Sintaxis:
Create View NombreVista
As
Sentencia Sql
With Check Option
Ejemplo:
CREATE VIEW VENDEDORES AS
SELECT * FROM EMP WHERE OFICIO='VENTAS' WITH CHECK OPTION
Con esta opcin no podremos actualizar los campos que tenemos en el Where de la Vista,
pero la tabla si que podemos modificarla, con lo cual ofrecemos permisos sobre la vista al
usuario y no le damos permisos de ningn tipo sobre la tabla, que el usuario trabaje sobre
las vistas.
[108]
Capacitacin Informtica y Extensin Profesional
TRANSACCIONES
IF @del_error <> 0
PRINT 'Hay error en el DELETE' PRINT
@ins_error
IF @ins_error <> 0
PRINT 'Hay error en el INSERT' PRINT
[109]
Capacitacin Informtica y Extensin Profesional
@ins_error
ROLLBACK TRAN END
GO
[110]
Capacitacin Informtica y Extensin Profesional
DECLARE TABLE
Mediante esta sentencia, se pueden crear tablas temporales en memoria, y
posteriormente manipularlas como si fueran tablas normales. Sintaxis:
Declare @Tabla Table
(Campo1 tipo, Campo2 tipo, Campo3 tipo...)
Estas tablas temporales solamente sirven para el momento de la ejecucin, si se intentan
utilizar en otro momento el sistema no las reconocer.
FUNCIONES DE USUARIO
Una funcin de usuario, se crea con el fin de automatizar una consulta que se realiza a menudo.
Pueden usar uno o ms parmetros de entrada y devuelven un valor o varios resultados. Existen
dos tipos de funciones:
Escalares
Devuelven un solo valor. Sintaxis:
Create Function NombreFuncin (@Parmetro1 tipo, @Parmetro 2 tipo...)
Returns Tipo
As
Begin
Sentencias
End
Ejemplo:
[111]
Capacitacin Informtica y Extensin Profesional
[112]
Capacitacin Informtica y Extensin Profesional
TABLA
Ejemplo 1:
En este caso introducimos como valor Ventas, y vemos como obtenemos todos los
empleados del departamento indicado.
[113]
Capacitacin Informtica y Extensin Profesional
Ejemplo 2:
DROP FUNCTION
Ejemplo:
[114]
Capacitacin Informtica y Extensin Profesional
Como vemos en el ejemplo al crear las tablas con dependencias, hemos de indicar cul
es su propietario.
Si intentamos borrar o modificar la tabla nos mostrar un error. Drop Table Emp
Ejercicios:
1. Crear una funcin que pasndole una fecha y un separador a elegir nos debe cambiar
el separador de la fecha que le estamos pasando por el separador elegido, ejemplo
pasndole la fecha 01/12/2001 y el separador : obtendremos 01:12:2001. hemos
de tener en cuenta que la fecha que le pasemos no tiene porque tener el separador /.
Para probar que la funcin es correcta, seleccionaremos todas las fechas de
alta de la tabla Empleados y le pasaremos el separador :
Al declarar la funcin usamos convert para convertir el da, mes o ao a caracter, ya que
si intentamos concatenar nmeros con carcteres da error porque piensa que
intentamos sumar.
Resultado
----------
17*12*1980
11*12*1976
22*2*1981
22*2*1981
2*4*1981
[115]
Capacitacin Informtica y Extensin Profesional
2. Crear una funcin que pasndole el parmetro Completo Seleccione el apellido junto
su nmero de empleado en una columna y en otra el departamento y pasndole
Apellido Seleccione el apellido y el departamento.
[116]
Capacitacin Informtica y Extensin Profesional
3. Crear una funcin que dependiendo de los datos que le enviemos, nos devolver un
informe sobre los empleados. Los parmetros que le podemos enviar a la funcin son: N
Departamento, N Empleado, Fecha u Oficio. Dependiendo del dato, mostraremos unos
datos u otros.
[117]
Capacitacin Informtica y Extensin Profesional
+ ltrim(cast(oficio as nvarchar(15)))
+ ' se di de alta el '
+ cast(day(fecha_alt) as char(2)) + ' de '
+ ltrim(cast(datename(month,fecha_alt) as nvarchar(15)))
+ ' de '
+ cast(year(fecha_alt) as char(4))
,'EMPLEADO SIN NOMBRE') as
[DATOS EMPLEADOS] from emp
where apellido like @Param
END
end
Return
end
[118]
Capacitacin Informtica y Extensin Profesional
INDICES
Es una estructura auxiliar que sirve para optimizar las consultas. Mediante esta estructura, al
realizar una consulta SQL Server realizar menos operaciones para devolver los resultados y
la consulta se realizar mas rpidamente ya que los datos estn estructurados de forma que
sea mas sencillo localizarlos.
Algo muy similar a los Indices creados por Sql Server, es el ndice de un libro, en una pgina
indica en que pgina del libro est cada captulo, y adems podemos saber tambin, que
apartados hay dentro de un captulo y en que pgina estn. En el caso de una base de datos,
todos los registros de esta, se almacenan en pginas, despus se crean unos ndices que
indican en que pgina de datos est cada registro y por encima de estos ndices, se crean
otros subndices que almacenan la cabecera de cada ndice. Adems se creara una cabecera
principal que almacenara a su vez la cabecera de estos subndices.
o Cada registro de cada tabla, se almacena en una pgina de datos estas pginas tienen un
tamao de 8 kb. A un grupo de ocho pginas de datos se le llama Extensin.
o Las filas no se almacenan en un orden concreto y no hay un orden detallado de la
secuencia de las pginas de datos.
o No existe una lista que almacene la estructura de las pginas de datos.
o Cada vez que se inserta un nuevo registro en una pgina de datos llena, esta se fracciona
creandose otra pgina de datos.
Los indices abrevian la recuperacin de los datos, sin ndices tendramos que recorrer
todas las pginas de datos hasta encontrar las filas que cumplen la consulta, sobre todo
aceleran las consultas que combinen varias tablas y agrupen u ordenen datos.
[119]
Capacitacin Informtica y Extensin Profesional
- Si los datos estan sin ordenar se llaman montn. Un montn va a ser un grupo de
pginas y cada pgina tiene 8Kb.
- Si no tengo indices en la tabla recorro toda la tabla, con lo cual tengo que realizar
muchas idas y salidas de datos en las pginas.
- Con un indice busca los datos con un orden lgico interno, sin necesidad de buscar en
todas las pginas.
- Una pgina solo puede tener datos de una tabla.
- Cuando creamos un indice incrementamos el tamao de la base de datos.
[120]
Capacitacin Informtica y Extensin Profesional
[121]
Capacitacin Informtica y Extensin Profesional
La bsqueda comienza por la raiz, compara el valor a buscar H con el dato A, selecciona si el
dato que busca es mayor o menor que el que compara. Como el dato A es menor, continua
con el dato P. Como el dato P es mayor al dato H, vuelve y ya sabe en que pgina del indice
debe buscar el dato. En la pgina de indices repite el mismo proceso, compara con el dato A,
compara con el dato E y compara con el dato I, como el dato I es mayor al dato H, vuelve y
sabe que el dato que encuentra est en la pgina del dato E. Busca en la pgina E hasta
encontrar el dato.
Con este sistema solamente recorre dos pginas, teniendo las pginas sin indices recorrera
todos los datos hasta dar con la H, devolviendo los datos de la consulta.
[122]
Capacitacin Informtica y Extensin Profesional
Ejemplo para calcular de forma teorica el tamao que puede ocupar un indice en una
tabla:
Queremos hacer un indice a partir de una tabla en la que cada tipo de dato en
la columna de tiene un tamao fijo de 5 bytes. Por ejemplo varchar(5). CREAR
CLAVE AGRUPADA 5 BYTES LONGITUD FIJA
La Hoja del indice ocupar 12 bytes porque el ndice incluye informacin adicional, una
clave interna y unica para cada dato que tiene el indice.
Dependiendo del dato, aade de 5 a 8 bytes ms en cada pgina de indice. Ahora sabemos
cuantas filas ocupan y el tamao de cada pgina.
Cada pgina de indice tiene un tamao fijo de 8096 bytes. Cada fila del indice ocupa 12
bytes.
Haciendo este clculo, sabemos cuantas filas de datos va a contener cada pgina de
indice.
8096 bytes / 12 bytes = 674 filas en cada indice, en el momento que pongamos 675
datos, la pgina se dividir.
Cada una de las pginas va a generar una fila en las pginas de indice, habr que dividir
las 10000 pginas por las 674 filas y sabremos cuantas pginas de indices hay.
Se va a generar otro nivel que es nivel 2 que es raiz, porque el nivel raiz solamente
va a tener 15 filas, pero tiene espacio para 674.
Nuestro archivo de datos se configura asi, si tenemos 10000 pginas y dividimos por 16
pginas de indice, sale un 1 por ciento que ocupa de espacio el indice, a partir de 3% se
supera el limite de coste de un indice, entonces hay que plantearse si se deben utilizar
indices en la tabla o no.
[123]
Capacitacin Informtica y Extensin Profesional
- No Agrupados:
[124]
Capacitacin Informtica y Extensin Profesional
- Sirven para buscar valores en otras columnas que no estn agrupadas por ningn tipo
de indices.
- Se pueden crear tantos indices no agrupados como se deseen, pero solamente
puede haber un nico indice agrupado.
[125]
Capacitacin Informtica y Extensin Profesional
CREATE INDEX
Crea ndices igual que con el administrador corporativo de SQL Server. Para ejecutar esta
instruccin es imprescindible ser el propietario de la tabla. No se pueden crear ndices de
vistas.
Para los indices agrupados se utilizar el Prefijo CL_ antes del nombre del indice.
Create Clustered
Index CL_Emp
On Emp(emp_no) asc
Para los indices no agrupados se usar el Prefijo NonCL_ antes del nombre del indice.
Create NonClustered
[126]
Capacitacin Informtica y Extensin Profesional
Index NonCL_Apellido
On Emp(Apellido)
FILLFACTOR
Si no decimos nada, las hojas de indices se llenan completamente cada vez que aadimos
sobre la base de datos.
Si una hoja de indice est llena, la hoja de indice se fragmenta.
Fillfactor es una instruccin que nos permite dejar un espacio porcentual en cada pgina
para las posibles inserciones, de esta forma se evitan las fragmentaciones de pgina y de
indices. Solamente se fragmentarn cuando hayamos rellenado el espacio que hayamos
puesto con Fillfactor.
Si ponemos Fillfactor, dejamos un 70% de espacio libre en las hojas de indices. Valor
predeterminado es 0. (Si no se pone nada)
La fragmentacin aumenta espacio y adems aumentan los saltos entre hojas. Sintaxis:
Create Clustered
Index CL_Emp On
Emp(emp_no) With
Fillfactor=70
Sp_helpindex Tabla
- Dice el nombre del indice, la descripcin y la columna a la que est asociado.
Sp_helpindex emp
Las extensiones son las pginas que se han fragmentado despus de crear el indice.
Drop Index
Borra ndices
Drop Index Tabla.Nombre_Indice
[128]