Administrar SQL Server y Lenguaje SQL

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:

Transcript of Administrar SQL Server y Lenguaje SQL

Page 1: Administrar SQL Server y Lenguaje SQL

Semana 1: Administrar SQL Server y Lenguaje SQL

1.1.- MS SQL Server 2000Microsoft 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:

Page 2: Administrar SQL Server y Lenguaje SQL

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:

Page 3: Administrar SQL Server y Lenguaje SQL
Page 4: Administrar SQL Server y Lenguaje SQL

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.

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 . Este icono se mostrara en la barra de tareas al costado del reloj.

En caso de no estar encendido el servicio debemos irnos a INICIO- PROGRAMAS - MICROSOFT SQL SERVER - 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.

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.

CREAR BASE DE DATOS.- 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

Page 5: Administrar SQL Server y Lenguaje SQL

miren que salen varias opciones y nosotros debemos escoger TABLA clic derecho NUEVA TABLA

aquí estamos definiendo los campos que tendra esa tabla, se pone el nombre del campo, 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.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

Page 6: Administrar SQL Server y Lenguaje SQL

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.- En esta parte podemos relacionar las tablas

Seleccionamos La base de datos con la cual vamos a trabajar luego Diagrama y NUEVO DIAGRAMA, después de esto nos saldra un asistente.

El asistente nos pedira que agreguemos las tablas las cual queremos relacionar

Page 7: Administrar SQL Server y Lenguaje SQL

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, 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 , el nombre que se ha puesto, etc. A lo cual damos aceptar.

IMPORTAR y EXPORTAR DATOS.- Otra de las herramientas que tiene el administrador corporativo del SQL server es el de importar datos y exportarlosPor ejemplo tenemos una base de datos y queremos exportarlo a Access.Escogemos la base de datos clic derecho TODAS LAS TAREAS y EXPORTAR DATOS

Page 8: Administrar SQL Server y Lenguaje SQL

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.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.Luego damos siguiente y escogemos Copiar Tablas de ahí nos saldra otra pantalla en la cual debemos marcar que tablas

Page 9: Administrar SQL Server y Lenguaje SQL

queremos exportar, siguiente y de ahi Finalizar a lo cual nos saldra un mensaje indicando el resultado.

NOTA: Debemos de tener en cuenta que la base de datos debe estar creada (vacia), Si queremos exportar a excel en destino debemos escoger Microsoft Excel 8.0 o si queremos exportarla aun documento de texto escogemos Archivo de TextoPara 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.

Generar SCRIPT

Un script es un codigo en este caso un codigo para crear 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, 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.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, tablas , etc.

BACKUP Y RESTAURAR BASE DE DATOS.- Para realizar una copia de seguridad debemos hacer lo siguinte:

Page 10: Administrar SQL Server y Lenguaje SQL

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 (...) para escoger la ruta donde queremos guardar el backupLuego damos aceptar.aceptar y nos debe salir un mensaje que todo salio bien.

Restaurar

Page 11: Administrar SQL Server y Lenguaje SQL

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, si en caso tienen nombre distintos debemos modificar algunas cosas.

Page 12: Administrar SQL Server y Lenguaje SQL

• Analizador de Consultas.- Esta es una herramienta en el cual podremos crear base de datos, tablas, 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- PROGRAMAS- MICROSOFT SQL SERVER – ANALIZADOR DE CONSULTASEn servidor escogemos la PC a la cual queremos conectarnos si ponemos punto significa que nos estamos conectando a la PC local, marcamos la opcion INICIAR SQL si esta detenido escogemos la autenticación si es sql en usuario ponemos SA Y ACEPTAR.Después de esto nos saldrá una pantalla en blanco en la cual

podremos escribir codigo sql para crear base de datos, tablas ,vistas, etc.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.

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.

Lenguaje de Definición de datosEjemplos:Tenemos la base de Datos BDBANCO y tenemos las sgtes tablas:create table banco(codban varchar(4) not null primary key,

nomban varchar(30) not null)gocreate 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(1) not null,codban varchar(4) not null,foreign key(codban) references banco(codban)on delete cascadeon 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

Page 13: Administrar SQL Server y Lenguaje SQL

--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.gocreate table movimiento(nromov int identity(100001,1) primary key not null,

tipomov varchar(1) not null,fechamov datetime not null,monto numeric(8,2) not null)

--Identity(100001,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.alter table banco add ciudad varchar(15) default 'lima'--Modificar el campo nomcli de la tabla cuentaalter table cuenta alter column nomcli varchar(50)--Agregar una restriccion al campo fecaper y poner la fecha actual x defectoalter table cuenta add constraint resfechaaper default getdate() for fecaper--Agregar una restriccion a la tabla cuenta al campo tipocta que solo acepte S o Dalter table cuenta add constraint restipocta check(tipocta like '[s,d]')--Eliinar el campo dircli de cuentaalter table cuenta drop column dirclialter table movimiento add constraint restipomov check(tipomov like '[D,R]')--Agregar un campo nrocta a Movimiento que sea clave foramea es decir va a jalar los ----datos de nrocta de la tabla cuentaalter table movimiento add nrocta int foreign key(nrocta) references cuenta(nrocta)on update cascadeon delete cascadeNota: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 1000alter table movimiento add constraint resmonto check(monto between 0 and 1000)

MAnipulacion de DatosEjemplo: Tomando la base de datos del ejemplo Anterior BDBANCO llenemos datos

--Esta es una forma de llenar datos poniendo los campos y los valoresinsert into banco (codban,nomban) values('b','latino') --Esta es mas sencilla no se pone los campos solo los valoresinsert into banco values('a','wiese',default)insert into banco values('c','credito',default)insert into banco values('d','continental','piura')goinsert into cuenta values(10001,'ana suarez','01/01/2001',100.20,'s','a')insert into cuenta values(10002,'luis salas',default,500.00,'s','a')insert into cuenta values(10003,'pedro chang','04/10/1998',750.50,'d','c')goinsert into movimiento values('d',default,140,10001)insert into movimiento values('d',default,90,10001)

Page 14: Administrar SQL Server y Lenguaje SQL

insert into movimiento values('r','01/10/2002',123,10001)insert into movimiento values('r','11/03/2002',200,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.

Page 15: Administrar SQL Server y Lenguaje SQL

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,nomalu varchar(50),diralu varchar(50),numlocal

varchar(2))

go

create table curso(codcur varchar(4),nomcur varchar(50),precur numeric(8,2))

go

create table nota(codalu int,codcur varchar(4),np int,nf int,susti int,prom int)

go

Page 16: Administrar SQL Server y Lenguaje SQL

--lenguaje de manipulacion de datos

--sentencia insert

insert into alumno (codalu,nomalu,diralu,numlocal)values(1001,'juan perez','jr arica

1234','01')

insert into alumno (codalu,nomalu,diralu,numlocal)values(1002,'miguel solis','jr tarma

123','01')

insert into alumno (codalu,nomalu,diralu,numlocal)values(1003,'ana salas','jr peru

3454','02')

insert into alumno (codalu,nomalu,diralu,numlocal)values(1004,'nadia chu','jr lima

1221','02')

insert into alumno (codalu,nomalu,diralu,numlocal)values(1005,'mario espinoza','jr

piura 334','03')

go

insert into curso values('mate','matematica',43.20)

insert into curso values('lp-1','lenguaje de programacion i',50.00)

insert into curso values('lp-2','lengaaa',55.50)

go

insert into nota (codalu,codcur,np,nf)values(1001,'mate',12,09)

insert into nota (codalu,codcur,np,nf)values(1001,'lp-1',05,12)

insert into nota (codalu,codcur,np,nf)values(1001,'lp-2',15,16)

insert into nota (codalu,codcur,np,nf)values(1002,'mate',14,12)

insert into nota (codalu,codcur,np,nf)values(1002,'lp-1',20,12)

insert into nota (codalu,codcur,np,nf)values(1003,'mate',17,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

Page 17: Administrar SQL Server y Lenguaje SQL

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,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,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,prom,codcur from nota order by prom desc,codalu

Page 18: Administrar SQL Server y Lenguaje SQL

--8 mostrar los 3 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 3 codalu,prom,codcur from nota order by prom desc,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','02')

--11 mostrar las notas cuyo promedio sea 12,14,15 o 16

select * from nota where prom in(12,14,15,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,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

--15 visualiza 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

Page 19: Administrar SQL Server y Lenguaje SQL

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,dateadd(dd,10,fechamat) as fecha_inicio from alumno--mostrar el nombre del alumno el año,y el mes en que se matricularonselect 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 que han pasado desde que se matriculoselect 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 matriculaselect nomalu,fechamat,datename(dw,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 actualselect 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),1) from alumnoselect substring(nomalu,charindex(' ',nomalu) + 1 ,len(nomalu)) from alumnoselect upper(left(datename(mm,fechamat),3)) from alumnoselect cast(right(year(fechamat),2) as varchar(2)) from alumno

--ahora juntamos todo y el rsultado seria:select alumno.*,right(convert(varchar(4),codalu),1) + substring(nomalu,charindex(' ' ,nomalu)+1,1) +left(nomalu,2) + upper(left(datename(mm,fechamat),3)) + right(cast(year(fechamat) as varchar(4)),2) from alumno

--USO DEL CASE WHEN THEN

SELECT NOTA.*,OBS = CASEWHEN PROM <=10 THEN 'DESAPROBADO'WHEN PROM >10 THEN 'APROBADO'ENDFROM NOTA

Crear Vistas: Crea una tabla virtual que representa los datos de una o más tablas de una forma alternativa. CREATE VIEW debe ser la primera instrucción en una secuencia de consultas.Ejemplo:

Page 20: Administrar SQL Server y Lenguaje SQL

CREATE VIEW titles_viewAS SELECT title, type, price, pubdateFROM titlesSe 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 eliminar se pone DROP VIEW Nombre de la Vista

Crear Indices.-Crea un índice de una vista o una tabla dada.Ejemplo:CREATE UNIQUE INDEX titles_ind ON titles (title,type)Aqui se esta creando un indice llamado titles_ind indicando que el campo title y type no se podran repetir.Para borrar un indice seria DROP INDEX TITLES.TITLES_IND (Va el nombre de la tabla. El nombre del indice)

Page 21: Administrar SQL Server y Lenguaje SQL