Está en la página 1de 38

SQL

Diagrama de Base de Datos

SQL

DEMO

SQL

Creacin de Base de Datos con Script

CREATE DATABASE PREVENTA ON PRIMARY (NAME=PERUDATA1, FILENAME="C:\TALLERESVB\PREVENTA1.MDF", SIZE=10MB, MAXSIZE=50MB) LOG ON (NAME=PERULOG1, FILENAME="C:\TALLERESVB\PREVENTALOG1.LDF", SIZE=5MB, MAXSIZE=15MB)

SQL

Creacin de Tablas
CREATE TABLE VENDEDOR ( codVen varchar(5) NOT NULL, nomCompVen varchar(40) NULL, direVen varchar(50) NULL, telefonoVen varchar(12) NULL, fechaNaVen smalldatetime NULL, tasaComi numeric(8,2) NOT NULL, estadoVen int NULL )

CREATE TABLE FACTURA ( numeroFac codVen varchar(5) NULL, codCli estadoFac int NULL , fechaFac numeric(8,2) NULL )

varchar(8) NOT NULL, varchar(5) NULL, smalldatetime NULL, dsto

SQL

Creacin de llaves Primarias y Forneas

ALTER TABLE FACTURA ADD PRIMARY KEY (numeroFac) ALTER TABLE VENDEDOR ADD PRIMARY KEY (codVen)

ALTER TABLE FACTURA ADD FOREIGN KEY (codVen) REFERENCES VENDEDOR

SQL

Comandos para Manipular Base de datos desde el Analizador de Consultas.


exec sp_help
Presenta informacin acerca de un objeto de la base de datos (cualquier objeto de la tabla sysobjects), de un tipo de datos definido por el usuario o de un tipo de datos

exec sp_helpUser muestra la


informacin de usuario que inicio la sesin. exec sp_helpServer muestra la informacin de Servidor que inicio la sesin.

exec sp_databases Muestra las base de datos que tenga el servidor activo.

SQL

DEMO

SQL

Funciones Estndar Bsicas de SQL


Creacin de Base de Datos de Ejemplo

CREATE DATABASE EJEMPLO Use EJEMPLO Go create table trabajador (cod_tra varchar(5), ap_tra varchar(15), am_tra varchar(15), nom_tra varchar(15), fecha_na smallDateTime, CREATE TABLE parte1 ( id_num int IDENTITY(1,1), nombre varchar (20),

SQL

Funciones Estndar Bsicas de SQL


Carga Datos Para el ejemplo
insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00001',' De la Madrid','Gutierrez ',' MariCielo',convert(smalldateTime,'01/11/1980'),980,'F') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00002','Hurtado ','CORONEL','NILDA',convert(smalldateTime,'10/10/1976'),980,'F') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00003','paredes ','MARTINEZ','EDITH',convert(smalldateTime,'10/10/1976'),1500,'F') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00004','CUYA','CAMARA','LUIS',convert(smalldateTime,'10/10/1980'),1200,'M') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00005',' UBILLUS','MARQUEZ','MIGUEL ANGEL',convert(smalldateTime,'05/01/1976'),980,'M') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00006','LIZARRAGA ','DEL OLMO','NUPCIA MASSIEL',convert(smalldateTime,'05/10/1980'),1300,'F') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00007',' AGUIRRE ','RIVADENEIRA','VANNIA',convert(smalldateTime,'05/10/1975'),1200,'F') insert into trabajador(cod_tra,ap_tra,am_tra,nom_tra,fecha_na,sueldo,genero_tra) values ('00008','JUAREZ','LAZO','GINO',convert(smalldateTime,'05/10/1975'),1200,'M')

SQL

Funciones Estndar Bsicas de SQL E.1 GetDate()


Muestra la Fecha y hora del sistema

PRINT getDate()
Parte
Year Month Day of year

Abrev
yy mm dy

Valor
1753-9999 1-12 1-366

Day Week Weekday Hour Minute Second milisecond

dd wk dw hh mi ss ms

1-31 0-51 1-7 0-23 0-59 0-59 0-999

SQL

DATEPART(Abreviatura, expression de fecha)


E.2 Mostrar el ao de cada una de las fechas de nacimiento de los trabajadores

SELECT ANNO=DATEPART(YY,fecha_na) from trabajador

DATENAME(Abreviatura, Expresin de Fecha)


E.3 Mostrar el nombre del da de la semana que naci cada trabajador

SELECT DIASEMANA=DATENAME(DW,fecha_na) from trabajador

SQL

Funciones
CONVERT(datetime, expression) Convierte a tipo datetime CONVERT(varchar, expression) Convierte a tipo Varchar

CONVERT(char, expresin)

Convierte a tipo Char

E.4 Mostrar los datos de los empleados que nacieron en 5 de Octubre de 1975
SELECT * from trabajador where fecha_na=convert(datetime,'5/10/1975')

E.5 Mostrar los datos de los Trabajadores que nacieron en el ao de 1980


SELECT * from trabajador where datepart(yy,fecha_na)=convert(integer,'1980')

SQL

DATEDIFF
DATEDIFF(parte,fecha1,fecha2) Devuelve la diferencia segn el parmetro parte entre dos fechas.

DATEDIFF(parte,fecha1,fecha2)
E.6 Mostrar nombre y edad de cada uno de los trabajadores.
select nom_tra,edad=round(DATEDIFF(dd,fecha_na,getdate())/365.25,0) from trabajador

SQL

DATEADD

DATEADD(parte,n,fecha)
Agrega una cantidad n a la parte de una fecha.

E.7 Mostrar la fecha de nacimiento agregada en 3 das.

select fecha_na,DateAdd(dd,3,fecha_na) from trabajador

SQL

Otras funciones
Lower(ExpresinCaracter) Upper(ExprecinCaracter) Ltrim(ExpresinCaracter) Convierte a minsculas Convierte a maysculas Elimina los espacios en blanco por la izquierda

Rtrim(ExpresinCaracter)

Elimina los espacios en blanco por la derecha

Replicate(expresinCaracter,n) Space(n) Str(ExpN)

Repite n veces la expresinCaracter Retorna n espacios en blanco Convierte la ExpN expresin numerica a carcter

CHARINDEX()

Averigua la posicin del la subcadena buscada en la cadena a evaluar


Extrae una expresin de una cadena a partir de una posicin.

SUBSTRING()

SQL

Es una herramienta para:

SQL
Peticin SQL

Organizar Gestionar Recuperar Datos Almacenados en una base de datos

Sistema de Gestin de Base de Datos

Base de datos

Informacin

SQL

Script y Carga Datos para ejemplos de comandos Select SQL


create table traba (cod_tra varchar(5), ap_tra varchar(15), am_tra varchar(15), nom_tra varchar(15), fecha_na smallDateTime, sueldo decimal(8,2), genero_tra char, area_tra varchar(30))

insert into traba values ('00001','DE LA MADRID','GUTIERREZ','MARICIELO',convert(smalldateTime,'01/11/1980'),980,'F',' CONTABILIDAD') insert into traba values ('00002','HURTADO','CORONEL','NILDA',convert(smalldateTime,'10/10/1976'),980 ,'F','CONTABILIDAD') insert into traba values

SQL

Comando Select -SQL


Obtiene filas de la base de datos y permite realizar la seleccin de una o varias filas o columnas de una o varias tablas. La sintaxis completa de la instruccin SELECT es compleja, aunque las clusulas principales se pueden resumir del modo siguiente:

SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]

SQL

Comando Select
E.8 Mostrar a todos los Registros de la tabla Traba
select * from traba

E.9 Enviar a la tabla varios todos los registros de la tabla Traba select * into varios from traba

E.10 Presentar a los apellidos de los trabajadores


select ap_tra,am_tra from traba

Definir campos calculados E.11 Mostrar el apellido Paterno, nombre y pago AFP que representa el 13% del sueldo
select ap_tra,nom_tra,afp=sueldo*0.13 from traba

SQL

Comando Select
Clusula Where E.12 Mostrar los registros con todos sus campos, que sean del rea de Sistemas.
select * from traba where area_tra='SISTEMAS'

E.13 Presentar apellidos y nombres de los que ganen mas de 1000 soles
select ap_tra,am_tra,nom_tra from traba where sueldo>1000

Clusula Between

PERMITE ESPECIFICAR UN RANGO DE VALORES

E.14 Mostrar los apellido paterno, nombre y sueldo de los trabajadores que ganen entre 900 y 1000 soles
select ap_tra,nom_tra,sueldo from traba where sueldo between 900 and 1000

SQL

Comando Select

Clusula IN PERMITE ESPECIFICAR UN LISTADO DE VALORES

E.15 Presentar apellido paterno, nombre y rea para los trabajadores de Contabilidad y sistemas
select ap_tra,nom_tra,area_tra from traba where area_tra IN('CONTABILIDAD','SISTEMAS')

SQL

Comando Select

Clusula LIKE PERMITE ESPECIFICAR CRITERIOS CON


PARAMETROS SOBRE UN CAMPO.

% _ [] [^]

Sustituye a un grupo de caracteres Sustituye un carcter simple Algn carcter de los especificado en un campo Algn carcter menos el especificado en el rango

Ejemplos where nombre Like L% La primera letra ser la letra L where nombre like [LU]A% la primera letra del nombre puede ser L o U y la segunda ser A where nombre like [^L]A% la primera letra del nombre no deber ser L, la segunda ser A

SQL

Comando Select

E.16 Mostrar nombre y fecha de nacimiento de los empleados que cuyo nombre empiece con la letra M
select nom_tra,fecha_na from traba where nom_tra like 'M%'

E.17 Mostrar apellidos y nombres de los empleados que la primera letra de su apellido paterno sea H oU oP
select AP_TRA,NOM_TRA from traba where AP_TRA like '[HUP]%'

SQL

Comando Select
E.18 Mostrar los datos de los empleados que su apellidos paterno no empieza con H o U o P
select * from traba where AP_TRA like '[^HUP]%'

E.19 Mostrar a los empleados que en la segunda letra del apellido paterno se la letra A
select * from traba where ap_tra like '_A%'

SQL

Comando Select
Clusula ORDER BY PERMITE ORDENAR POR
UN CAMPO, ASCENDENTE ASC o DESCENDENTE DESC

E.20 Mostrar los datos de los empleados ordenados por sueldo ascendentemente
select * from traba order by sueldo asc

E.21 Mostrar los datos de los empleados ordenados por sueldo descendentemente
select * from traba order by sueldo desc

SQL

Comando Select Clusula TOP N, extrae N registros de la parte superior de la estructura.


E.22 Muestra a los tres primeros trabajadores que tienen sueldos mayores
select top 3 * from traba order by sueldo desc

SQL

Comando Select Clusula DISTINCT, Especifica que slo pueden


aparecer filas exclusivas en el conjunto de resultados.

E.23 Mostrar los nombres de las areas de los


trabajadores sin usar Distinct
SELECT AREA_TRA FROM TRABA

E.24 Mostrar los nombres de las reas de los trabajadores usando Distinct
SELECT DISTINCT AREA_TRA FROM TRABA

SQL

Comando Select Funciones utilizadas dentro de Select - SQL

SQL

Comando Select
E.25 Sumar los sueldos de los trabajadores
select totalSueldos=sum(sueldo) from traba

E.26 Hallar el Sueldo Mximo y el Sueldo Mnimo


select sueldoMax=MAX(sueldo),sueldoMin=MIN(sueldo) from traba

E.27 Hallar el sueldo promedio de los trabajadores de sistemas


Select SueldoPromSist=AVG(sueldo) from traba where area_tra='SISTEMAS'

E.28 Hallar cuantos trabajadores existen en el rea de Contabilidad


Select totalConta=count(*) from traba where area_tra='CONTABILIDAD'

SQL

Comando Select
Clusulas GROUP BY, HAVING Group by agrupa registros bajo campos y Having grupos evalua condiciones de los

E.29 Hallar la suma de los sueldos para cada una de las reas de los trabajadores
Select area_tra,TotalSueldoArea=sum(sueldo) from traba group by area_tra

SQL

Comando Select

E.30 mostrar a las reas que cuyo acumulado de sueldos exceda los 3000 soles.
Select area_tra,TotalSueldoArea=sum(sueldo) from traba group by area_tra having sum(sueldo)>3000

SQL

Comando Insert Into

Agrega una nueva fila a una tabla


INSERT INTO <nombre de tabla> (campo1,campo2,campo3, campo4 . . .) VALUES( valor para campo1, valor para campo2, valor para campo3, valor para campo4)
insert into traba values ('00011','LA RUA','RIO','ABNER',convert(smalldateTime,'28/08/1976'),1800,'M','LOGISTICA')

SQL

Comando Update Permite actualizar datos a una determinada tabla bajo condiciones de evaluacin
UPDATE <nombre de tabla> SET <campo a actualizar>=<valor a dar>, <campo a actualizar>=<valor a dar> WHERE < condicin> E.31 crea una copia de la tabla traba y asignarle el nombre de CoTraba para los ejemplos de Update y Delete From
select * into coTraba from traba select * from coTraba

SQL

Comando Update

E.32 Reemplazar a todos los apellidos paternos y maternos a minscula.


Update coTraba set ap_tra=lower(ap_tra),am_tra=lower(am_tra)

E.33 Reemplazar al rea de SISTEMAS por COMPUTO


Update coTraba set area_tra='COMPUTO' WHERE area_tra='SISTEMAS'

SQL

Comando Delete From

Este Comando Permite eliminar Registros de una de las tablas de la base de datos bajo criterios de evaluacin. Formato:

Delete From <nombre de Tabla> Where <condicin>

SQL

Comando Delete From Ejemplos E.34 Eliminar Los registros que cuya rea sea Logstica
delete from traba where area_tra='LOGISTICA'

E.35 Elimina a Todos los Registros de la Tabla


delete from traba

Nota: Tener cuidado al ejecutar este comando, para ello deber tener una copia de la tabla.

SQL

Script para la Tabla Libro - Practica


CREATE TABLE LIBRO ( CODLIB VARCHAR(5) PRIMARY KEY, TITULOLIB VARCHAR(40), AUTORLIB VARCHAR(30), EDITOLIB VARCHAR(15), AREALIB VARCHAR(15), PRECIOLIB NUMERIC(8,2), NHOJASLIB INT, ANOLIB INT

INSERT INTO LIBRO VALUES('1000','VISUAL FOX','RUBEN IGLESIAS','RAMA','LPROG',60,489,1997) INSERT INTO LIBRO VALUES('1001','POWER BUILDER 6.','RAMIRO HOOL','UNI','LPROG',80,410,1999) INSERT INTO LIBRO VALUES('1002','ANALISIS Y DISEO DE SIST.','LUIS CUYA','PRINTICE HALL','ANALISIS',100,913,1997) INSERT INTO LIBRO VALUES('1003','POWER BUILDER 6.','WILLIAM B. HEYS','QUE','LPROG',150,843,1999) INSERT INTO LIBRO VALUES('1004','VISUAL BASIC','CESAR BUSTAMANTE','GRAPPERU','LPROG',35,390,1997) INSERT INTO LIBRO VALUES('1005','VISUAL FOX PRO','LES & JHON PINTER','MC GRAWHILL','LPROG',25,567,1997) INSERT INTO LIBRO VALUES('1006','GUIA C++','JULIO VASQUEZ

SQL

DEMO