You are on page 1of 21

Semana 1: Administrar SQL Server y Lenguaje SQL 1.1.

- MS SQL Server 2000

Microsoft SQL Server 2000 es un conjunto de componentes que trabajan juntos para cubrir las necesidades de almacenamiento y análisis de datos de los sitios Web de mayor tamaño y de sistemas de procesamiento de datos corporativos. Los temas de la arquitectura de SQL Server describen cómo trabajan juntos los diferentes componentes para administrar datos de un modo eficaz.
En otras palabras es el mejor manejador de base de datos de Microsoft Entre sus componentes tenemos el: •

Administrador Corporativo .- Herramienta para crear y administrar
base de datos asi como acceso de usuarios, procedimientos almacenados, restricciones, etc.

Para entrar debemos irnos al menu INICIO- PROGRAMAS - MICROSOFT SQL SERVER – ADMINISTRADOR CORPORATIVO

y nos debe salir la siguiente pantalla:

en la cual nos saldrá la consola con los servidores de SQL Server que se unen por grupos y cada grupo puede tener varios servidores en este caso solo tenemos un grupo y tenemos tambien un solo servidor que toma el nombre de la pc. estos se crearon automáticamente al instalar SQL Server Si quisiéramos añadir un nuevo servidor nos vamos al grupo hacemos clic derecho NUEVO REGISTRO DE SERVIDOR SQL SERVER

Nos saldra el sgte asistente:

.

Con eso hemos creado una nueva cuenta de servidor (Ojo que podemos tener varias cuentas si lo deseamos) NOTA: Debemos tener en cuenta que el servicio de SQL este activo para eso debemos asegurarnos que le icono del SQL este en color verde ..Como se muestra en las figuras saldra un asistente para después escoger el nombre de la pc a la cual nos queremos conectar luego escogemos el modo de autenticación si es con la autenticación de windows o de sql en este caso escogemos SQL luego escogemos el usuario administrador por defecto que es SA de ahí siguiente y finalizar.ADMINISTRADOR DE SERVICIOS En servidor se mostrara el nombre de la PC con al cual deseamos trabajar y en servicios debemos asegurarnos que este SQL Server.Para crear una base de datos escogemos la carpeta base de datos clic derecho y NUEVA BASE DE DATOS de ahí ponemos el nombre de la base de datos y listo Una vez creada la base de datos podemos crear tablas dentro de ella En este caso se vamos a crear un tabla dentro de la base de datos BDCOMPRA .PROGRAMAS MICROSOFT SQL SERVER . En caso de no estar encendido el servicio debemos irnos a INICIO. Este icono se mostrara en la barra de tareas al costado del reloj. CREAR BASE DE DATOS. No olvidar que el icono debe tomar un color verde que indica que el servicio esta activo de otra forma no se podra trabajar con la base de datos.

se escoge el tipo la longitud y marcamos si queremos permitir valores nulos caso contrario lo desmarcamos. Si queremos establecer clave principal a algun campo lo seleccionamos y hacemos clic en el icono de la llave o sino clic derecho y establecer clave principal.miren que salen varias opciones y nosotros debemos escoger TABLA clic derecho NUEVA TABLA aquí estamos definiendo los campos que tendra esa tabla. Una vez terminado de definir los campos de la tabla lo guardamos y el ponemos un nombre (Se guarda haciendo clic en el icono de guardar o simplemente cerrando la ventana) Una vez cerrada la tabla si hubiera que hacer alguna modificación seleccionamos la tabla clic derecho DISEÑAR TABLA Para llenar datos a la tabla Clic derecho a la tabla Abrir Tabla y DEVOLVER TODAS LAS FILAS . se pone el nombre del campo.

El asistente nos pedira que agreguemos las tablas las cual queremos relacionar .Para llenar datos en SQL Server es muy similar a Access solo llenamos los datos y si en caso queremos eliminar alguno hacemos clic derecho y Eliminar o en todo caso si queremos desplazar la fila la seleccionamos y la arrastramos DIAGRAMAS. después de esto nos saldra un asistente..En esta parte podemos relacionar las tablas Seleccionamos La base de datos con la cual vamos a trabajar luego Diagrama y NUEVO DIAGRAMA.

A lo cual damos aceptar. etc.Para relacionar las tablas lo primero que se debe de tener en cuenta es que tablas se van a relacionar. en este caso vamos a relacionar la tabla cliente con facturacabe ya que en la tabla facturacabe se jala el codigo del cliente. IMPORTAR y EXPORTAR DATOS. entonces lo que debemos hacer es escoger la tabla cliente(ya que de aquí se van a jalar los codigos) exactamente escogemos el campo del cual vamos a jalar los datos en este caso codcli y lo vamos a arrastrar y dejar encima de la tabla facturacabe exactamente encima del campo codcli que esta en facturacabe de ahí se mostrara una ventana indicando la relación que se ha creado . Escogemos la base de datos clic derecho TODAS LAS TAREAS y EXPORTAR DATOS . el nombre que se ha puesto.Otra de las herramientas que tiene el administrador corporativo del SQL server es el de importar datos y exportarlos Por ejemplo tenemos una base de datos y queremos exportarlo a Access..

Nos saldra un asistente: Aquí debemos escoger el origen de datos que en este caso seria SQL Server (Proveedor Microsoft OLE DB para SQL Server) Luego escogemos el servidor donde se encuentra la base de datos y escogemos la autenticación si es sql debemos poner el usuario SA. Luego damos siguiente y escogemos Copiar Tablas de ahí nos saldra otra pantalla en la cual debemos marcar que tablas . Por ultimo en base de datos escogemos la base de datos la cual se va a exportar Después de escoger el origen ahora escogemos el destino en este caso es Microsoft Access. en nombre de archivo escogemos la base de datos de access que debe estar vacia para exportar los datos hasta alla.

BACKUP Y RESTAURAR BASE DE DATOS. Si queremos exportar a excel en destino debemos escoger Microsoft Excel 8. Generar SCRIPT Un script es un codigo en este caso un codigo para crear base de datos. Sql Server respondera mostrando una ventana en la cual nos pedira guardar ese script a lo cual debemos escoger en donde queremos guardarlo y que nombre le ponemos. NOTA: Debemos de tener en cuenta que la base de datos debe estar creada (vacia).queremos exportar. etc.0 o si queremos exportarla aun documento de texto escogemos Archivo de Texto Para Importar es igual no olvidar que en origen se escoge de donde se va a jalar los datos y en destino a donde se va a copiar los datos..Para realizar una copia de seguridad debemos hacer lo siguinte: . siguiente y de ahi Finalizar a lo cual nos saldra un mensaje indicando el resultado. tablas . Lo que se graba es un archivo similar a un archivo de texto que tiene extensión SQL el cual se podra abrir con el analizador de consultas y tendra codigo que creara base de datos. Para esto escogemos la base de datos clic derecho Todas las Tareas y escogemos Generar Secuencia de Comandos SQL Hacemos clic en el boton MOSTRAR TODO y luego marcamos INCLUIR TODOS LOS OBJETOS y damos aceptar.

aceptar y nos debe salir un mensaje que todo salio bien..Escogemos la base de datos clic derecho TODAS LAS TAREAS luego escogemos COPIA DE SEGURIDAD DE LA BASE DE DATOS Una vez que sale esta ventana hacemos clic en AGREGAR Luego en donde dice nombre de archivo ponemos la ruta donde queremos guardar la copia de seguridad o en todo caso hacemos clic en el boton (. Restaurar ..) para escoger la ruta donde queremos guardar el backup Luego damos aceptar.

si en caso tienen nombre distintos debemos modificar algunas cosas. .Para restaurar la base de datos debemos escoger la base de datos en la cual queremos restaurar clic derecho TODAS LAS TAREAS y RESTAURAR BASE DE DATOS. Al salir esta pantalla escogemos DESDE DISPOSITIVO y después hacemos clic en el boton DISPOSITIVOS Luego hacemos clic en Agregar y nos saldra esta pantalla en donde debemos escoger el backup que queremos restaurar y le damos aceptar luego debemos irnos a OPCIONES y marcar Forzar restauracion NOTA: Para restaurar la base de datos debe tener el mismo nombre de la base de datos de la cual se hizo el backup.

Para ver los objetos que hay en el SQL Server presionamos F8 (Examinador de objetos) y nos saldra una ventana parecida a la del administrador corporativo.Esta es una herramienta en el cual podremos crear base de datos. Después de esto nos saldrá una pantalla en blanco en la cual podremos escribir codigo sql para crear base de datos. etc.• Analizador de Consultas. foreign key(codban) references banco(codban) on delete cascade on update cascade --Foreign key es para crear un clave foranea es decir Codban es una clave foranea que va a ser jalada de la tabla banco del campo codban . etc mendiante codigo sql (Lenguaje SQL podriamos hacer lo mismo que hemos hecho con el administrador corporativo pero con puro codigo) Para entrar debemos irnos a INICIO. tablas. Lo primero que debemos de tener en cuenta es de seleccionar la base de datos con la cual se va a trabajar. o en todo caso lo podemos hacer con codigo sql con la instrucción USE que ya veremos mas adelante. marcamos la opcion INICIAR SQL si esta detenido escogemos la autenticación si es sql en usuario ponemos SA Y ACEPTAR. nomcli varchar(70) not null. nomban varchar(30) not null) go create table cuenta(nrocta int primary key not null. saldoaper numeric(8. codban varchar(4) not null. dircli varchar(40) not null. Lenguaje de Definición de datos Ejemplos: Tenemos la base de Datos BDBANCO y tenemos las sgtes tablas: create table banco(codban varchar(4) not null primary key.2) not null.PROGRAMASMICROSOFT SQL SERVER – ANALIZADOR DE CONSULTAS En servidor escogemos la PC a la cual queremos conectarnos si ponemos punto significa que nos estamos conectando a la PC local. tipocta varchar(1) not null.vistas. tablas . fecaper datetime not null.

d]') --Eliinar el campo dircli de cuenta alter table cuenta drop column dircli alter table movimiento add constraint restipomov check(tipomov like '[D.'d'.default) insert into banco values('d'.500.90.'continental'.default.'04/10/1998'.'ana suarez'.--Se pone on delete cascade y on update cascade para eliminar y actualizar en cascada es --decir si se elimina un banco se eliminaran las cuentas de ese banco.'s'.'wiese'.50.default) insert into banco values('c'.00.'credito'.750.default.1) quiere decir que es autonumerico empieza del 100001 y va avanzar de 1 en 1 --Agregar un campo Ciudad a la tabla banco que tenga Lima como valor x defecto. fechamov datetime not null.'pedro chang'.'luis salas'.'a') insert into cuenta values(10003.'piura') go insert into cuenta values(10001.100.10001) insert into movimiento values('d'.'a') insert into cuenta values(10002.2) not null) --Identity(100001.default. go create table movimiento(nromov int identity(100001.10001) . alter table banco add ciudad varchar(15) default 'lima' --Modificar el campo nomcli de la tabla cuenta alter table cuenta alter column nomcli varchar(50) --Agregar una restriccion al campo fecaper y poner la fecha actual x defecto alter table cuenta add constraint resfechaaper default getdate() for fecaper --Agregar una restriccion a la tabla cuenta al campo tipocta que solo acepte S o D alter table cuenta add constraint restipocta check(tipocta like '[s. tipomov varchar(1) not null.140.R]') --Agregar un campo nrocta a Movimiento que sea clave foramea es decir va a jalar los ----datos de nrocta de la tabla cuenta alter table movimiento add nrocta int foreign key(nrocta) references cuenta(nrocta) on update cascade on delete cascade Nota:Si el campo nrocta ya hubiera existido y solo queremos crear el constraint que haga la relacion con la tabla cuenta la sentencia seria asi: alter table movimiento add constraint pkNro foreign key(nrocta) references cuenta(nrocta) --Agregar una restriccion al campo monto que solo acepte numeros del 0 al 1000 alter table movimiento add constraint resmonto check(monto between 0 and 1000) MAnipulacion de Datos Ejemplo: Tomando la base de datos del ejemplo Anterior BDBANCO llenemos datos --Esta es una forma de llenar datos poniendo los campos y los valores insert into banco (codban.nomban) values('b'.1) primary key not null.'01/01/2001'.'c') go insert into movimiento values('d'.'latino') --Esta es mas sencilla no se pone los campos solo los valores insert into banco values('a'.20.'s'. monto numeric(8.

200. .10001) insert into movimiento values('r'.'01/10/2002'.123.10002) NOTA: Observen que en algunos campos se pone DEFAULT y esto se debe a que al campo se le ha puesto una restricción para que tome un valor x defecto ademas en la tabla movimiento no se esta llenando el campo nromov y esto se debe a que ese campo es autonumerico.'11/03/2002'.insert into movimiento values('r'.

Practica dirigida DDL y DML --lenguaje de definicion de datos --use activa la base de datos --en este caso se activa la base de datos master use master --go continua con la line de abajo go --sysdatabases es una tabla del sistema y en el campo name se almacena --el nombre de las bases de datos que han sido creadas --exists devuelve true si cumple la condicion o false si no cumple if exists(select name from sysdatabases where name='bdidat') bejín --drop database elimina la base de datos drop database bdidat end go --create database crea una base de datos create database bdidat go --se activa la base de datos bdidat use bdidat go --create table crea una tabla create table alumno(codalu int.prom int) go .codcur varchar(4).nomalu varchar(50).diralu varchar(50).numlocal varchar(2)) go create table curso(codcur varchar(4).susti int.2)) go create table nota(codalu int.precur numeric(8.np int.nomcur varchar(50).nf int.

diralu.nomalu.np.09) insert into nota (codalu.'jr piura 334'.'lp-1'.'01') insert into alumno (codalu.--lenguaje de manipulacion de datos --sentencia insert insert into alumno (codalu.'mario espinoza'.codcur.'ana salas'.'jr arica 1234'.diralu.'jr tarma 123'.numlocal)values(1002.12.nf)values(1002.nomalu.17.numlocal)values(1003.numlocal)values(1005.'mate'.12) insert into nota (codalu.codcur.'lengaaa'.'matematica'.'lp-1'.12) insert into nota (codalu.np.20) insert into curso values('lp-1'.nf)values(1001.14.'nadia chu'.numlocal)values(1004.np.nf)values(1002.nomalu.'lp-2'.'jr peru 3454'.'02') insert into alumno (codalu.50.np.43.'02') insert into alumno (codalu.'lenguaje de programacion i'.00) insert into curso values('lp-2'.nf)values(1001.nf)values(1001.numlocal)values(1001.diralu.'miguel solis'.'01') insert into alumno (codalu.20.'juan perez'.nomalu.'03') go insert into curso values('mate'.50) go insert into nota (codalu.'mate'.np.nomalu.15) go --sentencia update --modificar el nombre del curso lp-2 update curso set nomcur='lenguaje de programacion ii' where codcur='lp-2' --actualizar los promedios de las notas update nota set prom=(np+nf)/2 --el alumno 1001 en el examen sustitutorio de matematica saco 12 actualizar su nota .15.'mate'.codcur.16) insert into nota (codalu.codcur.05.codcur.diralu.codcur.12) insert into nota (codalu.'jr lima 1221'.nf)values(1003.55.np.diralu.

codcur from nota order by prom desc.codalu .min(prom) as nota_menor from nota --7 mostrar el codigo del alumno.promedio y el codigo del curso de los alumnos y ordenar el promedio en forma descendente y el codigo del alumno en forma ascendente select codalu.update nota set susti=12 where codalu=1001 and codcur='mate' --reemplazar la nota menor con la nota del susti update nota set nf = susti where codalu=1001 and codcur='mate' --volver a calcular el promedio update nota set prom=(np+nf)/2 where codalu=1001 and codcur='mate' go --sentencia delete --eliminar todos los alumnos jalados en el promedio final delete from nota where prom<=11 --eliminar a todos los alumnos que esten jalados y que sean del curso de matematica delete from nota where prom<=10 and codcur='mate' --sentencia select select * from nota --1 visualiza el promedio y el codigo de los alumnos aprobados select prom.prom.codalu from nota where prom>10 --2 visualiza el codigo de los alumnos que no han dado examen sustitutorio select codalu from nota where susti is null --3 visualiza el codigo de los alumnos que no han dado examen sustitutorio sin repetir el codigo select distinct codalu from nota where susti is null --4 visualiza el codigo de los alumno que han dado examen susti sin repetir el codigo select distinct codalu from nota where susti is not null --5 visualiza las notas que tengan como promedio 12 y 15 select * from nota where prom between 12 and 15 --6 mostrar la nota mas alta y mas baja select max(prom) as nota_mayor.

codalu --otra forma select nomalu.nota where alumno.codcur .promedio y el codigo del curso de los alumnos y ordenar el promedio en forma descendente y el codigo del alumno en forma ascendente) select top 3 codalu.codcur=nota.prom from alumno.codalu inner join curso on nota.nomcur.15 o 16 select * from nota where prom in(12.susti.nomcur.susti.nf susti y su promedio select nomalu.codalu=nota.codalu and curso.np.16) --12 mostrar cuantos alumnos hay select count(*) as total from alumno --13 mostrar el precio promedio de los cursos select avg(precur) from curso --14 visualiza el nombre del alumno.prom from alumno inner join nota on alumno.codalu --15 visualiza el nombre del alumno.codcur --otra forma select nomalu.np.nf.codalu=nota.'02') --11 mostrar las notas cuyo promedio sea 12.prom from alumno inner join nota on alumno.codigo del curso.el nombre del curso y el promedio select nomalu.nota where alumno.15.codcur=curso.prom from alumno.codalu=nota.codcur.codcur.14.--8 mostrar los 3 primeros puestos (codigo del alumno.np.codalu=nota.14.curso.codalu --9 mostrar los registros de los alumno que vivan en jiron arica select * from alumno where diralu like 'jr arica%' --10 mostrar los alumnos que pertenecen al local 01 o 02 select * from alumno where numlocal in('01'.codcur from nota order by prom desc.prom.nf.

nomalu) + 1 . select left(convert(varchar(4).fechamat) as mes from alumno --mostrar el nombre del alumno la fecha de matricula y la cantidad de dias que han pasado desde que se matriculo select nomalu.len(nomalu)) from alumno select upper(left(datename(mm.fechamat) as dia.datepart(mm.day(getdate()).fechamat.right(convert(varchar(4).nomalu)+1.1) + substring(nomalu.fechamat.3)) from alumno select cast(right(year(fechamat).charindex(' '.2) as varchar(2)) from alumno --ahora juntamos todo y el rsultado seria: select alumno.datename(dw.*.y el mes en que se matricularon select nomalu.fechamat).codalu).3)) + right(cast(year(fechamat) as varchar(4)).month(getdate()).datediff(dd.*.dateadd(dd.fechamat) as anio.Practica dirigida Funciones en SQL SERVER --funciones de fecha --mostrar el nombre del alumno la fecha de matricula y la fecha de inicio de clases(10 dias despues de la matricula) select nomalu.fechamat) as fecha_inicio from alumno --mostrar el nombre del alumno el año.fechamat) as mes from alumno --mostrar el mes el dia y el año de la fecha actual y la fecha actual select year(getdate()).getdate()) as cantidias from alumno --mostrar el nombre del alumno la fecha de matricula el nombre del dia y el nombre del mes de la matricula select nomalu.2) from alumno --USO DEL CASE WHEN THEN SELECT NOTA.datename(mm.fechamat).datepart(yy.fechamat.2) + upper(left(datename(mm.charindex(' ' .1) from alumno select substring(nomalu.codalu). CREATE VIEW debe ser la primera instrucción en una secuencia de consultas.10. Ejemplo: .fechamat.1) + left(nomalu.getdate() --autogenerar el codigo con el ultimo digito del codalu + el primer carater del apellido+ los 2 primeros caracteres del nombre + los tres primeros cararcateres del mes + los 2 ultimos caracteres del año. OBS = CASE WHEN PROM <=10 THEN 'DESAPROBADO' WHEN PROM >10 THEN 'APROBADO' END FROM NOTA Crear Vistas: Crea una tabla virtual que representa los datos de una o más tablas de una forma alternativa.

El nombre del indice) . Para eliminar se pone DROP VIEW Nombre de la Vista Crear Indices. pubdate FROM titles Se ha creado una vista llamada titles_view con algunos campos de la tabla titles. a esta vista se le puede hacer los mismos procesos que a una tabla. Para borrar un indice seria DROP INDEX TITLES.CREATE VIEW titles_view AS SELECT title. type.-Crea un índice de una vista o una tabla dada.type) Aqui se esta creando un indice llamado titles_ind indicando que el campo title y type no se podran repetir.TITLES_IND (Va el nombre de la tabla. Ejemplo: CREATE UNIQUE INDEX titles_ind ON titles (title. price.