Está en la página 1de 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 anlisis de datos de los sitios Web de mayor tamao 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 efica!.
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

!ara entrar debemos irnos al menu "#"$"%& !'%('AMAS & M"$'%S%)* SQL SE'+E' , A-M"#"S*'A-%' $%'!%'A*"+%

y nos debe salir la siguiente pantalla:

en la cual nos saldr. la consola con los servidores de SQL Server /ue se unen por grupos y cada grupo puede tener varios servidores en este caso solo tenemos un grupo y tenemos tambien un solo servidor /ue toma el nombre de la pc estos se crearon autom.ticamente al instalar SQL Server Si /uisi0ramos a1adir un nuevo servidor nos vamos al grupo 2acemos clic derec2o #3E+% 'E("S*'% -E SE'+"-%' SQL SE'+E'

#os saldra el sgte asistente:

$omo se muestra en las figuras saldra un asistente para despu0s escoger el nombre de la pc a la cual nos /ueremos conectar luego escogemos el modo de autenticaci4n si es con la autenticaci4n de 5indo5s o de s/l en este caso escogemos SQL luego escogemos el usuario administrador por defecto /ue es SA de a26 siguiente y finali7ar $on eso 2emos creado una nueva cuenta de servidor 8%jo /ue podemos tener varias cuentas si lo deseamos9 #%*A: -ebemos tener en cuenta /ue el servicio de SQL este activo para eso debemos asegurarnos /ue le icono del SQL este en color verde Este icono se mostrara en la barra de tareas al costado del reloj

En caso de no estar encendido el servicio debemos irnos a "#"$"%& !'%('AMAS & M"$'%S%)* SQL SE'+E' & A-M"#"S*'A-%' -E SE'+"$"%S En servidor se mostrara el nombre de la !$ con al cual deseamos trabajar y en servicios debemos asegurarnos /ue este SQL Server #o olvidar /ue el icono debe tomar un color verde /ue indica /ue el servicio esta activo de otra forma no se podra trabajar con la base de datos

CREAR BASE DE DATOS.- !ara crear una base de datos escogemos la carpeta base de datos clic derec2o y #3E+A :ASE -E -A*%S de a26 ponemos el nombre de la base de datos y listo

3na ve7 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 :-$%M!'A

miren /ue salen varias opciones y nosotros debemos escoger *A:LA clic derec2o #3E+A *A:LA

a/u6 estamos definiendo los campos /ue tendra esa tabla, se pone el nombre del campo, se escoge el tipo la longitud y marcamos si /ueremos permitir valores nulos caso contrario lo desmarcamos Si /ueremos establecer clave principal a algun campo lo seleccionamos y 2acemos clic en el icono de la llave o sino clic derec2o y establecer clave principal 3na ve7 terminado de definir los campos de la tabla lo guardamos y el ponemos un nombre 8Se guarda 2aciendo clic en el icono de guardar o simplemente cerrando la ventana9 3na ve7 cerrada la tabla si 2ubiera /ue 2acer alguna modificaci4n seleccionamos la tabla clic derec2o -"SE;A' *A:LA

!ara llenar datos a la tabla $lic derec2o a la tabla Abrir *abla y -E+%L+E' *%-AS LAS )"LAS

!ara llenar datos en SQL Server es muy similar a Access solo llenamos los datos y si en caso /ueremos eliminar alguno 2acemos clic derec2o y Eliminar o en todo caso si /ueremos despla7ar la fila la seleccionamos y la arrastramos DIAGRAMAS.- En esta parte podemos relacionar las tablas Seleccionamos La base de datos con la cual vamos a trabajar luego -iagrama y #3E+% -"A('AMA, despu0s de esto nos saldra un asistente

El asistente nos pedira /ue agreguemos las tablas las cual /ueremos relacionar

!ara

relacionar las tablas lo primero /ue se debe de tener en cuenta es /ue tablas se van a relacionar, en este caso vamos a relacionar la tabla cliente con facturacabe ya /ue en la tabla facturacabe se jala el codigo del cliente, entonces lo /ue debemos 2acer es escoger la tabla cliente8ya /ue de a/u6 se van a jalar los codigos9 e<actamente 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 e<actamente encima del campo codcli /ue esta en facturacabe de a26 se mostrara una ventana indicando la relaci4n /ue se 2a creado , el nombre /ue se 2a puesto, etc A lo cual damos aceptar IMPORTAR y EXPORTAR DATOS.- %tra de las 2erramientas /ue tiene el administrador corporativo del SQL server es el de importar datos y e<portarlos !or ejemplo tenemos una base de datos y /ueremos e<portarlo a Access Escogemos la base de datos clic derec2o *%-AS LAS *A'EAS y E=!%'*A' -A*%S

#os saldra un asistente: A/u6 debemos escoger el origen de datos /ue en este caso seria SQL Server 8!roveedor Microsoft %LE -: para SQL Server9 Luego escogemos el servidor donde se encuentra la base de datos y escogemos la autenticaci4n si es s/l debemos poner el usuario SA !or ultimo en base de datos escogemos la base de datos la cual se va a e<portar

-espu0s de escoger el origen a2ora escogemos el destino en este caso es Microsoft Access, en nombre de arc2ivo escogemos la base de datos de access /ue debe estar vacia para e<portar los datos 2asta alla Luego damos siguiente y escogemos $opiar *ablas de a26 nos saldra otra pantalla en la cual debemos marcar /ue tablas

/ueremos e<portar, siguiente y de a2i )inali7ar a lo cual nos saldra un mensaje indicando el resultado #%*A: -ebemos de tener en cuenta /ue la base de datos debe estar creada 8vacia9, Si /ueremos e<portar a e<cel en destino debemos escoger Microsoft E<cel > ? o si /ueremos e<portarla aun documento de te<to escogemos Arc2ivo de *e<to !ara "mportar es igual no olvidar /ue en origen se escoge de donde se va a jalar los datos y en destino a donde se va a copiar los datos Generar SCRIPT

3n script es un codigo en este caso un codigo para crear base de datos !ara esto escogemos la base de datos clic derec2o *odas las *areas y escogemos (enerar Secuencia de $omandos SQL Hacemos clic en el boton M%S*'A' *%-% y luego marcamos "#$L3"' *%-%S L%S %:@E*%S y damos aceptar, S/l Server respondera mostrando una ventana en la cual nos pedira guardar ese script a lo cual debemos escoger en donde /ueremos guardarlo y /ue nombre le ponemos Lo /ue se graba es un arc2ivo similar a un arc2ivo de te<to /ue tiene e<tensi4n SQL el cual se podra abrir con el anali7ador de consultas y tendra codigo /ue creara base de datos, tablas , etc BACK P ! RESTA RAR BASE DE DATOS.- !ara reali7ar una copia de seguridad debemos 2acer lo siguinte:

Escogemos la base de datos clic derec2o *%-AS LAS *A'EAS luego escogemos $%!"A -E SE(3'"-A- -E LA :ASE -E -A*%S 3na ve7 /ue sale esta ventana 2acemos clic en A('E(A'

Luego en donde dice nombre de arc2ivo ponemos la ruta donde /ueremos guardar la copia de seguridad o en todo caso 2acemos clic en el boton 8 9 para escoger la ruta donde /ueremos guardar el bacAup Luego damos aceptar aceptar y nos debe salir un mensaje /ue todo salio bien Resta"rar

!ara restaurar la base de datos debemos escoger la base de datos en la cual /ueremos restaurar clic derec2o *%-AS LAS *A'EAS y 'ES*A3'A' :ASE -E -A*%S Al salir esta pantalla escogemos -ES-E -"S!%S"*"+% y despu0s 2acemos clic en el boton -"S!%S"*"+%S

Luego 2acemos clic en Agregar y nos saldra esta pantalla en donde debemos escoger el bacAup /ue /ueremos restaurar y le damos aceptar luego debemos irnos a %!$"%#ES y marcar )or7ar restauracion

#%*A: !ara restaurar la base de datos debe tener el mismo nombre de la base de datos de la cual se 2i7o el bacAup, si en caso tienen nombre distintos debemos modificar algunas cosas

Ana#i$ador de Cons"#tas.Esta es una 2erramienta en el cual podremos crear base de datos, tablas, etc mendiante codigo s/l 8Lenguaje SQL podriamos 2acer lo mismo /ue 2emos 2ec2o con el administrador corporativo pero con puro codigo9 !ara entrar debemos irnos a "#"$"%& !'%('AMAS& M"$'%S%)* SQL SE'+E' , A#AL"BA-%' -E $%#S3L*AS En servidor escogemos la !$ a la cual /ueremos conectarnos si ponemos punto significa /ue nos estamos conectando a la !$ local, marcamos la opcion "#"$"A' SQL si esta detenido escogemos la autenticaci4n si es s/l en usuario ponemos SA C A$E!*A' -espu0s de esto nos saldr. una pantalla en blanco en la cual podremos escribir codigo s/l para crear base de datos, tablas ,vistas, etc Lo primero /ue 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 2acer con codigo s/l con la instrucci4n 3SE /ue ya veremos mas adelante !ara ver los objetos /ue 2ay en el SQL Server presionamos )> 8E<aminador de objetos9 y nos saldra una ventana parecida a la del administrador corporativo Lenguaje de -efinici4n de datos

E%emp#os&
*enemos la base de -atos :-:A#$% y tenemos las sgtes tablas: create table banco(codban varchar(4) not null primary key, nomban varchar(30) not null) go create table cuenta(nrocta int primary key not null, nomcli varchar(70) not null, dircli varchar(40) not null, fecaper datetime not null, saldoaper numeric(8,2) not null, tipocta varchar( ) not null, codban varchar(4) not null, foreign key(codban) references banco(codban) on delete cascade on update cascade !!"oreign key es para crear un clave foranea es decir #odban es una clave foranea $ue va a ser %alada de la tabla banco del campo codban

!!&e pone on delete cascade y on update cascade para eliminar y actuali'ar en cascada es !!decir si se elimina un banco se eliminaran las cuentas de ese banco( go create table movimiento(nromov int identity( 0000 , ) primary key not null, tipomov varchar( ) not null, fechamov datetime not null, monto numeric(8,2) not null) !!)dentity( 0000 , ) $uiere decir $ue es autonumerico empie'a del 0000 y va avan'ar de en !!*gregar un campo #iudad a la tabla banco $ue tenga +ima como valor , defecto( alter table banco add ciudad varchar( -) default .lima. !!/odificar el campo nomcli de la tabla cuenta alter table cuenta alter column nomcli varchar(-0) !!*gregar una restriccion al campo fecaper y poner la fecha actual , defecto alter table cuenta add constraint resfechaaper default getdate() for fecaper !!*gregar una restriccion a la tabla cuenta al campo tipocta $ue solo acepte & o 0 alter table cuenta add constraint restipocta check(tipocta like .1s,d2.) !!3liinar el campo dircli de cuenta alter table cuenta drop column dircli alter table movimiento add constraint restipomov check(tipomov like .10,42.) !!*gregar un campo nrocta a /ovimiento $ue sea clave foramea es decir va a %alar 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:&i el campo nrocta ya hubiera e,istido y solo $ueremos crear el constraint $ue haga la relacion con la tabla cuenta la sentencia seria asi5 alter table movimiento add constraint pk6ro foreign key(nrocta) references cuenta(nrocta) !!*gregar una restriccion al campo monto $ue solo acepte numeros del 0 al 000 alter table movimiento add constraint resmonto check(monto bet7een 0 and 000) MAnipulacion de -atos Ejemplo: *omando la base de datos del ejemplo Anterior :-:A#$% llenemos datos !!3sta es una forma de llenar datos poniendo los campos y los valores insert into banco (codban,nomban) values(.b.,.latino.) !!3sta es mas sencilla no se pone los campos solo los valores insert into banco values(.a.,.7iese.,default) insert into banco values(.c.,.credito.,default) insert into banco values(.d.,.continental.,.piura.) go insert into cuenta values( 000 ,.ana suare'.,.0 80 8200 ., 00(20,.s.,.a.) insert into cuenta values( 0002,.luis salas.,default,-00(00,.s.,.a.) insert into cuenta values( 0003,.pedro chang.,.048 08 998.,7-0(-0,.d.,.c.) go insert into movimiento values(.d.,default, 40, 000 ) insert into movimiento values(.d.,default,90, 000 )

insert into movimiento values(.r.,.0 8 082002., 23, 000 ) insert into movimiento values(.r.,. 80382002.,200, 0002) #%*A: %bserven /ue en algunos campos se pone -E)A3L* y esto se debe a /ue al campo se le 2a puesto una restricci4n para /ue tome un valor < defecto ademas en la tabla movimiento no se esta llenando el campo nromov y esto se debe a /ue ese campo es autonumerico

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') bejn --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 nomalu varchar(!") diralu varchar(!") numlocal

varchar(#)) go create table curso(codcur varchar($) nomcur varchar(!") precur numeric(% #)) go create table nota(codalu int codcur varchar($) np int nf int susti int prom int) go

--lenguaje de manipulacion de datos --sentencia insert insert into alumno (codalu nomalu diralu numlocal)values(&""& 'juan pere'' 'jr arica &#($' '"&') insert into alumno (codalu nomalu diralu numlocal)values(&""# 'miguel solis' 'jr tarma &#(' '"&') insert into alumno (codalu nomalu diralu numlocal)values(&""( 'ana salas' 'jr peru ($!$' '"#') insert into alumno (codalu nomalu diralu numlocal)values(&""$ 'nadia chu' 'jr lima &##&' '"#') insert into alumno (codalu nomalu diralu numlocal)values(&""! 'mario espino'a' 'jr piura (($' '"(') go insert into curso values('mate' 'matematica' $()#") insert into curso values('lp-&' 'lenguaje de programacion i' !")"") insert into curso values('lp-#' 'lengaaa' !!)!") go insert into nota (codalu codcur np nf)values(&""& 'mate' &# "*) insert into nota (codalu codcur np nf)values(&""& 'lp-&' "! &#) insert into nota (codalu codcur np nf)values(&""& 'lp-#' &! &+) insert into nota (codalu codcur np nf)values(&""# 'mate' &$ &#) insert into nota (codalu codcur np nf)values(&""# 'lp-&' #" &#) insert into nota (codalu codcur np nf)values(&""( 'mate' &, &!) go --sentencia update --modificar el nombre del curso lp-# update curso set nomcur='lenguaje de programacion ii' where codcur='lp-#' --actuali'ar los promedios de las notas update nota set prom=(np-nf).# --el alumno &""& en el examen sustitutorio de matematica saco &# actuali'ar su nota

update nota set susti=&# where codalu=&""& and codcur='mate' --reempla'ar la nota menor con la nota del susti update nota set nf = susti where codalu=&""& and codcur='mate' --volver a calcular el promedio update nota set prom=(np-nf).# where codalu=&""& and codcur='mate' go --sentencia delete --eliminar todos los alumnos jalados en el promedio final delete from nota where prom/=&& --eliminar a todos los alumnos que esten jalados y que sean del curso de matematica delete from nota where prom/=&" and codcur='mate' --sentencia select select 0 from nota --& visuali'a el promedio y el codigo de los alumnos aprobados select prom codalu from nota where prom1&" --# visuali'a el codigo de los alumnos que no han dado examen sustitutorio select codalu from nota where susti is null --( visuali'a el codigo de los alumnos que no han dado examen sustitutorio sin repetir el codigo select distinct codalu from nota where susti is null --$ visuali'a el codigo de los alumno que han dado examen susti sin repetir el codigo select distinct codalu from nota where susti is not null --! visuali'a las notas que tengan como promedio &# y &! select 0 from nota where prom between &# and &! --+ mostrar la nota mas alta y mas baja select max(prom) as nota2mayor min(prom) as nota2menor from nota --, 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 prom codcur from nota order by prom desc codalu

--% mostrar los ( primeros puestos (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 top ( codalu prom codcur from nota order by prom desc codalu --* mostrar los registros de los alumno que vivan en jiron arica select 0 from alumno where diralu li3e 'jr arica4' --&" mostrar los alumnos que pertenecen al local "& o "# select 0 from alumno where numlocal in('"&' '"#') --&& mostrar las notas cuyo promedio sea &# &$ &! o &+ select 0 from nota where prom in(&# &$ &! &+) --&# mostrar cuantos alumnos hay select count(0) as total from alumno --&( mostrar el precio promedio de los cursos select avg(precur) from curso --&$ visuali'a el nombre del alumno codigo del curso np nf susti y su promedio select nomalu codcur np nf susti prom from alumno inner join nota on alumno)codalu=nota)codalu --otra forma select nomalu codcur np nf susti prom from alumno nota where alumno)codalu=nota)codalu --&! visuali'a el nombre del alumno el nombre del curso y el promedio select nomalu nomcur prom from alumno inner join nota on

alumno)codalu=nota)codalu inner join curso on nota)codcur=curso)codcur --otra forma select nomalu nomcur prom from alumno curso nota where alumno)codalu=nota)codalu and

curso)codcur=nota)codcur

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( 0 dias despues de la matricula) select nomalu,fechamat,dateadd(dd, 0,fechamat) as fecha:inicio from alumno !!mostrar el nombre del alumno el a;o,y el mes en $ue se matricularon select nomalu,datepart(yy,fechamat) as anio,datepart(mm,fechamat) as mes from alumno !!mostrar el nombre del alumno la fecha de matricula y la cantidad de dias $ue han pasado desde $ue se matriculo select nomalu,fechamat,datediff(dd,fechamat,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,fechamat,datename(d7,fechamat) as dia,datename(mm,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()),month(getdate()),day(getdate()),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( select left(convert(varchar(4),codalu), ) from alumno select substring(nomalu,charinde,(. .,nomalu) < ,len(nomalu)) from alumno select upper(left(datename(mm,fechamat),3)) from alumno select cast(right(year(fechamat),2) as varchar(2)) from alumno !!ahora %untamos todo y el rsultado seria5 select alumno(=,right(convert(varchar(4),codalu), ) < substring(nomalu,charinde,(. . ,nomalu)< , ) < left(nomalu,2) < upper(left(datename(mm,fechamat),3)) < right(cast(year(fechamat) as varchar(4)),2) from alumno -- SO DE' CASE ()E* T)E* SELE$* #%*A D, %:S E $ASE FHE# !'%M GE1? *HE# H-ESA!'%:A-%H FHE# !'%M I1? *HE# HA!'%:A-%H E#)'%M #%*A Crear +istas& $rea una tabla virtual /ue representa los datos de una o m.s tablas de una forma alternativa $'EA*E +"EF debe ser la primera instrucci4n en una secuencia de consultas Ejemplo:

$'EA*E +"EF titlesJvie5 AS SELE$* title, type, price, pubdate )'%M titles Se 2a creado una vista llamada titlesJvie5 con algunos campos de la tabla titles, a esta vista se le puede 2acer los mismos procesos /ue a una tabla !ara eliminar se pone -'%! +"EF #ombre de la +ista Crear Indi,es.-$rea un 6ndice de una vista o una tabla dada Ejemplo: $'EA*E 3#"Q3E "#-E= titlesJind %# titles 8title,type9 A/ui se esta creando un indice llamado titlesJind indicando /ue el campo title y type no se podran repetir !ara borrar un indice seria -'%! "#-E= *"*LES *"*LESJ"#- 8+a el nombre de la tabla El nombre del indice9

También podría gustarte