Академический Документы
Профессиональный Документы
Культура Документы
--16 ELIMINE LOS REGISTROSA LOS QUE VIVEN EN INDEPENDENCIA Y CUYO TELEFONO SEA "329653"
DELETE FROM AGENDA WHERE distrito='INDEPENDENCIA' AND telefono='3279653'
--17 OBTENER CUANTOS USUARIOS D DE INDEPENDENCIA TIENE REGISTROS EN LA AGENDA
SELECT * FROM AGENDA WHERE distrito='INDEPENDENCIA'
SENTENCIA DELETE
USO DEL (IDENTITY) SOLO PARA TIPO DE DATO INT
--1. SI EXISTE LA BASE DE DATOS (BD_SESION) ELIMINELA DEL SERVIDOR
IF DB_ID ('BD_SESION') IS NOT NULL
USE MASTER
DROP DATABASE BD_SESION
--2. Implementamos la Base de Datos BD_SESION con los siguientes parmetros:
--Ubicacin C:\TAREA SQL\BD_SESION
--Archivo Primario
: 5MB/ 7MB /40MB
--Archivo Secundario
: 5MB/ 16% /30MB
--Archivo Transaccion
: 2MB/ 11% /37MB
CREATE DATABASE BD_SESION
ON PRIMARY
(NAME=BD_SESION_PRI,
FILENAME='C:\TAREA SQL\BD_SESION\BD_SESION_PRI.mdf',
SIZE=5MB,
FILEGROWTH=7MB,
MAXSIZE=40MB
),
(NAME=BD_SESION_SEC,
FILENAME='C:\TAREA SQL\BD_SESION\BD_SESION_SEC.ndf',
SIZE=5MB,
FILEGROWTH=16%,
MAXSIZE=30MB
)
LOG ON
(NAME=BDSESION_LOG,
FILENAME='C:\TAREA SQL\BD_SESION\BD_SESION_LOG.ldf',
SIZE=2MB,
FILEGROWTH=11%,
MAXSIZE=37MB
)
GO
--3. ACTIVAR LA BD_SESION
USE BD_SESION
--4. Elimine la USUARIOS tabla si existe:
IF OBJECT_ID('USUARIOS')IS NOT NULL
DROP TABLE USUARIOS
--10.
Implementarque
llave
Primaria
a USUARIOS
--Observamos
solo
se muestra
1 registro.
--19. Ahora Eliminemos los Registros cuyo nombre sea Pamela y su contrasea sea chapitas
ALTER
TABLE
USUARIOS
-----1era
forma
de declarar el Delete con (FROM)
ADD PRIMARY KEY (cod_usuarios)
DELETE FROM USUARIOS
--11. Obtener las LLaves Primarias de la tabla AGENDA con sysobjects
WHERE* nombre='PAMELA'
AND
clave='chapitas'
SELECT
FROM SYSOBJECTS
WHERE
TYPE='K'
--13.
Veamos
el contenido
de laUSUARIOS
tabla: ya no se encuentra el codigo 6
SELECT
COUNT(*)
FROM
--que es del usuario neyvi.
SELECT * FROM USUARIOS
DB_INSTITUTO
--ACTIVAR EL BD INSTITUTO
USE INSTITUTO
--LISTAR LAS COLUMNAS CURSOS
EXEC sp_columns CURSOS
--LISTAR LAS COLUMNAS INSTRUCTORES
EXEC sp_columns INSTRUCTORES
DESARROLLANDO LA DB INSTITUTO
--PREGUNTA_4:
--LISTAR EL CODIGO, NOMBRE DEL CURSO, NOMBRE DEL INSTRUCTOR Y SU CODIGO CORRESPONDIENTE
--DE TODOS LOS CURSOS Y TODOS LOS INSTRUCTORES PERSONALIZANDO LAS CABECERAS
-----1ERA FORMA: CON LOS NOMBRES COMPLETOS DE LA TABLA
SELECT CURSOS.cod_Curso,
CURSOS.nom_curso,
INSTRUCTORES.nom_Instructor,
INSTRUCTORES.cod_Instructor
FROM INSTRUCTORES FULL JOIN CURSOS
ON INSTRUCTORES.cod_Instructor=CURSOS.cod_Instructor
-----2DA FORMA: USO DEL ALIAS Y USO DEL JOIN ABREVIADO
SELECT C.cod_Curso,
C.nom_curso,
I.nom_Instructor,
I.cod_Instructor
FROM INSTRUCTORES FULL JOIN CURSOS
ON I.cod_Instructor=C.cod_Instructor
--PREGUNTA_5:
--OBTENER EL CODIGO, EL NOMBRE DEL INSTRUCTOR Y EL CURSO QUE DICTA
--LA DOCENTE NICOLE
-----1ERA FORMA: CON LOS NOMBRES COMPLETOS DE LA TABLA
SELECT INSTRUCTORES.cod_Instructor,
INSTRUCTORES.nom_Instructor,
CURSOS.nom_curso
FROM INSTRUCTORES INNER JOIN CURSOS
ON INSTRUCTORES.cod_Instructor=CURSOS.cod_Instructor
WHERE nom_Instructor='NICOLE'
-----2DA FORMA: USO DEL ALIAS Y USO DEL JOIN ABREVIADO
SELECT I.cod_Instructor,
I.nom_Instructor,
C.nom_curso
FROM INSTRUCTORES I INNER JOIN CURSOS C
ON I.cod_Instructor=C.cod_Instructor
WHERE nom_Instructor='NICOLE'
--PREGUNTA_6:
--MOSTRAR TODOS LOS REGISTROS DE LOS INSTRUCTORES QUE NO ENSEAN NINGUN CURSO
-----1ERA FORMA: CON LOS NOMBRES COMPLETOS DE LA TABLA
SELECT INSTRUCTORES.nom_Instructor, CURSO.nom_curso
fROM CURSOS C FULL JOIN INSTRUCTORES I
ON INSTRUCTORES.cod_Instructor=CURSOS.cod_Instructor
where CURSOS.nom_curso IN (NULL)
-----2DA FORMA: USO DEL ALIAS Y USO DEL JOIN ABREVIADO
SELECT I.nom_Instructor, C.nom_curso
fROM CURSOS C FULL JOIN INSTRUCTORES I
ON I.cod_Instructor=C.cod_Instructor
where C.nom_curso IN (NULL)
--PREGUNTA_7:
--CUANTOS INSTRUCTORES NO ENSEAN NINGUN CURSO
-----1ERA FORMA: CON LOS NOMBRES COMPLETOS DE LA TABLA
-----2DA FORMA: USO DEL ALIAS Y USO DEL JOIN ABREVIADO
SELECT INSTRUCTORES.cod_Instructor,INSTRUCTORES.nom_Instructor,CURSOS.nom_curso
FROM CURSOS INNER JOIN
INSTRUCTORES ON CURSOS.cod_Instructor = INSTRUCTORES.cod_Instructor
WHERE INSTRUCTORES.cod_Instructor<>NULL
SELECT CURSOS.cod_Curso,CURSOS.nom_curso, INSTRUCTORES.nom_Instructor,
CURSOS.cod_Instructor(SL)
FROM CURSOS INNER JOIN
INSTRUCTORES
ON CURSOS.cod_Instructor =INSTRUCTORES.cod_Instructor
10
WHERE CURSOS.cod_Instructor= IS NULL
use Northwind
NORTHWIND
--------------------------------------------------------------------------------INSTRUCCIN SELECT-------------------------------------------------------------------
11
--LISTAR LAS COLUMNAS (City, CompanyName, ContactName, Country, Region) DE TODOS LOS CLIENTES
--QUE NO TENGAN CAPTURADO NADA EN EL CAMPO (Region) DE LA TABLA LOS CLIENTES
SELECT City, CompanyName, ContactName, Country, Region FROM CLIENTES
WHERE Region IS NULL
--LISTAR LAS COLUMNAS (City, CompanyName, ContactName, Country, Region) DE TODOS LOS CLIENTES
--QUE NO TENGAN REGISTROS EN EL CAMPO (Region) DE LA TABLA LOS CLIENTES
SELECT City, CompanyName, ContactName, Country, Region FROM CLIENTES
WHERE Region IS NULL
--LISTAR LOS CAMPOS (OrderID, ProductID, Quantity)
--Y OBTENER LOS 5 PRIMEROS REGISTROS DE LA TABLA DETALLES DE PEDIDO
SELECT TOP 5 OrderID, ProductID, Quantity FROM "DETALLES DE PEDIDO"
--LISTAR LOS CAMPOS (OrderID, ProductID, Quantity)
--Y OBTENER LOS 5 PRIMEROS REGISTROS DE LA TABLA (DETALLES DE PEDIDO),
--ORDENADOS DESDE LA MAS ALTA CANTIDAD
SELECT TOP 5 OrderID, ProductID, Quantity FROM "DETALLES DE PEDIDO"
ORDER BY Quantity DESC
------------------AGRUPANDO DATOS----------------------LISTAR LAS COLUMNAS DE LA TABLA (HISTORIAL DE ORDENES)
exec sp_columns "HISTORIAL DE ORDENES"
SELECT * FROM SYS.objects WHERE TYPE='U'
--LISTAR LOS REGISTROS DE LA TABLA (HISTORIAL DE ORDENES)
SELECT * FROM "HISTORIAL DE PEDIDOS"
--MOSTRAR LOS REGISTROS DE LA TABLA HISTORIAL DE ORDENES
--PERSONALIZANDO LA CABECERA (CODIGO DEL PRODUCTO, CODIGO DE PEDIDO, CANTIDAD)
SELECT
ProductID [CODIGO DEL PRODUCTO],
OrderId[CODIGO DEL PEDIDO],
Quantity[CANTIDAD]
FROM"HISTORIAL DE PEDIDOS"
--LISTAR SOLO LOS CODIGOS DE PRODUCTO SIN QUE SE REPITAN
SELECT DISTINCT ProductID FROM "HISTORIAL DE PEDIDOS"
--AGRUPAR SOLO LOS CODIGOS DE PRODUCTO SIN QUE SE REPITAN (GROUP BY)
SELECT ProductID FROM [HISTORIAL DE PEDIDOS]
GROUP BY ProductID
--MOSTRAR LA CANTIDAD TOTAL POR PRODUCTO, QUE SOLO VISUALIZE:
--EL PRODUCTO Y SU CANTIDAD TOTAL --> PRIMERO AGRUPAMOS, Y SUMAMOS SUS CANTIDADES
SELECT ProductID AS 'CODIGO DEL PRODUCTO',
SUM(Quantity)AS 'CANTIDAD SOCIAL'
FROM [HISTORIAL DE PEDIDOS]
GROUP BY ProductID
--LISTAR LOS REGISTROS DE LAS COLUMNAS (ProductID, Quantity),
--CUYO CODIGO DE PRODUCTO SEA 2
SELECT ProductID,Quantity FROM [HISTORIAL DE PEDIDOS]
WHERE ProductID='2'
--MOSTRAR LA CANTIDAD TOTAL DEL PRODUCTO (2),
--VISUALIZE: EL PRODUCTO Y SU CANTIDAD TOTAL
SELECT ProductID,SUM(Quantity) AS 'CANTIDAD DE TOTAL'
FROM [HISTORIAL DE PEDIDOS]
WHERE ProductID='2'
GROUP BY ProductID
13
/*
IMPORTANTE:
1. La clusula WHERE se aplica primero a las filas individuales de la tabla o tablas.
Por tanto solo se obtiene las filas que cumplen las condiciones de la clusula WHERE.
2. Clusula HAVING es como una clusula WHERE, pero que solo se aplica a los grupos en
su totalidad (es decir, a las filas del conjunto de resultados que representa los grupos)
*/
--MOSTRAR TODOS LOS PRODUCTOS QUE TENGAN MAYOR CANTIDAD TOTAL DE 30
select productID,sum(Quantity)[TOTAL]
from [HISTORIAL DE PEDIDOS]
group by ProductID
having sum(Quantity)>=30
--OBTENER LA CANTIDAD (TOTAL DE PRODUCTOS) REGISTRADOS EN HISTORIAL DE
PEDIDOS
------> USO DEL OPERADOR (WITH CUBE Y WITH ROLLUP), AMBOS PERMITEN
------>HALLAR TOTALES, CON LA CLAUSULA GROUP BY
-----1ERA FORMA (WITH ROLLUP)
select ProductID,sum(Quantity) from [HISTORIAL DE PEDIDOS]
group by ProductID
with rollup
-----2DA FORMA (WITH CUBE)
select ProductID,sum(Quantity)[TOTALES]
from [HISTORIAL DE PEDIDOS]
group by ProductID
with cube
--OBTENER LA CANTIDAD (TOTAL DE ORDENES DEL PEDIDO)
--REGISTRADOS EN HISTORIAL DE PEDIDOS
-----1ERA FORMA (WITH ROLLUP)
select OrderId,sum(Quantity)[TOTAL]
from [HISTORIAL DE PEDIDOS]
group by OrderId
with rollup
-----2DA FORMA (WITH CUBE)
select OrderId,sum(Quantity)[TOTAL]
from [HISTORIAL DE PEDIDOS]
group by OrderId
with cube
14
PRACTICA CALIFICADA
----------------------------PRACTICA CALIFICADA----------------------------------------------------------------------------------------------------------PREGUNTA_1:
--RETORNAR LAS COLUMNAS: IdCLIENTE, NombreCompaia y Pais, (CustomerID, CompanyName, Country)
--DE LA TABLA CLIENTES, QUE SOLO RESIDAN EN ALEMANIA(GERMANY)
select CustomerID, CompanyName, Country from CLIENTES
where Country = 'GERMANY'
--PREGUNTA_2:
--CUANTOS CLIENTES SON DE ALEMANIA
select count(*)from CLIENTES
where Country='GERMANY'
--PREGUNTA_3:
--RETORNAR LAS COLUMNAS: IdCLIENTE, NombreCompaia y Pais,
--DE LA TABLA CLIENTES QUE SOLO RESIDAN EN ALEMANIA O FRANCIA
select CustomerID, CompanyName, Country from CLIENTES
where Country='GERMANY'or Country='FRANCE'
--PREGUNTA_4:
--CUANTOS CLIENTES SON DE ALEMANIA O FRANCIA
select count(*)from CLIENTES
where Country='GERMANY'or Country='FRANCE'
--PREGUNTA_5:
--OBTENER SOLO LAS FILAS DE LOS PRODUCTOS DONDE EL ID_PROVEEDOR(SupplierID) SEA 1
--Y ADEMAS TENGA COMO ID_CATEGORIA(CategoryID) IGUAL A 1
select SupplierID,CategoryID from PRODUCTOS
where SupplierID ='1'and CategoryID='1'
--PREGUNTA_6:
--CUANTOS PROVEEDORES CON ID 1 Y CATEGORIA 1
--EXISTEN EN LA TABLA PRODUCTOS
select count(*)from PRODUCTOS
where SupplierID ='1'and CategoryID='1'
--PREGUNTA_7:
--OBTENER TODOS LOS REGISTROS CON PRECIO(UnitPrice) MAYOR A 20
--Y CON IdProveedor(SupplierID) IGUAL A 2, DE LA TABLA PRODUCTOS
select * from PRODUCTOS
where UnitPrice>=20 and SupplierID='2'
--PREGUNTA_8:
--CUANTAS FILAS CON PRECIO(UnitPrice) MAYOR A 20
--Y CON IdProveedor(SupplierID) IGUAL A 2
--EXISTEN EN LA TABLA PRODUCTOS
select count(*) from PRODUCTOS
where UnitPrice>=20 and SupplierID='2'
--PREGUNTA_9:
--OBTENER TODAS LAS FILAS DONDE LOS PRODUCTOS PERTENEZCAN
--A LAS CATEGORIAS(CategoryID) 1, 2 O 3, DE LA TABLA PRODUCTOS
----1ERA FORMA ---> USO DEL (IN)
select * from PRODUCTOS
where CategoryID in('1','2','3')
15
16
17 AL 21
---------EJERICICIOS CON GROUP BY-----------------------------PREGUNTA_17:
--OBTENER EL NUMERO DE PEDIDOS ATENDIDOS POR CADA EMPLEADO,
--EL RESULTADO SE PRESENTA AGRUPADO POR EMPLEADO Y
--ORDENADO POR EL NUMERO DE PEDIDOS EN FORMA DESCENDENTE
select EmployeeID,count(*)[NUMERO DE PEDIDOS] from PEDIDO
group by EmployeeID
order by count(*)desc
--PREGUNTA_18:
--OBTENER EL IDPEDIDO, EL NUMERO DE ARTICULOS EN CADA PEDIDO
--Y EL MONTO DE CADA PEDIDO
select OrderID,
sum(Quantity)[NUMERO DE ARTICULO], sum(UnitPrice*Quantity) as 'SUBTOTAL'
from [DETALLES DE PEDIDO]
group by OrderID
--PREGUNTA_19:
--OBTENER EL NMERO DE CLIENTES (DIFERENTES)
--ATENDIDO POR CADA EMPLEADO
select count(distinct(CustomerID))[NUMERO DE CLIENTES]
from PEDIDO
group by EmployeeID
--PREGUNTA_20:
--OBTENER LA CATEGORIA, EL PROMEDIO DE PRECIOS
--Y EL NUMERO DE ARTICULOS POR CATEGORIA
---------EJERICICIOS CON HAVING---------------------------select CategoryID, avg(UnitPrice) [PROMEDIO PRECIOS], sum(UnitsInStock)[CATIDAD POR CATEGORIA]
from PRODUCTOS
group by CategoryID
order by (CategoryID)asc
--PREGUNTA_21:
--OBTENER LOS CAMPOS IDPEDIDO, EL NUMERO DE PEDIDOS POR EMPLEADO.
--SOLO DE AQUELLOS EMPLEADOS QUE TENGAN MAS DE 100 PEDIDOS
select EmployeeID,count(*) as 'NUMERO DE PEDIDOS'
from PEDIDO
group by EmployeeID
having count(*)>100 and count(*) >100
17
EJERCICIOS DE BD CINE
-------------------------------------------------------EJERCICIOS 1:
------------------------------------------------1. MODIFICAR EL PRECIO DE SUPER VIP POR S/1350.00
UPDATE TARIFA
SET PRECIO=1350
WHERE CLASE='SPUER VIP'
SELECT * FROM TARIFA
--2. REBAJAR EL IMPUESTO DE CLASE ECONMICA POR S/5.20
UPDATE TARIFA
SET IMPUESTO=5.2
WHERE COD_TARIFA=4
SELECT * FROM TARIFA
--3. CAMBIAR EL PRECIO Y EL IMPUESTO PARA LA CLASE:
--NACIONAL POR S/780.45 Y S/6.24 RESPECTIVAMENTE
UPDATE TARIFA
SET PRECIO=788.45, IMPUESTO=6.24
WHERE COD_TARIFA=3
SELECT * FROM TARIFA
----------EJERCICIOS 2:-----------1.--HACER UNA CONSULTA QUE PERMITA MOSTRAR LOS
--2 ULTIMOS REGISTROS DE LA TABLA TARIFA
select TOP 50 PERCENT* from TARIFA
ORDER BY COD_TARIFA DESC
--2.--HACER UNA CONSULTA QUE PERMITA MOSTRAR EL
--80% DE LOS REGISTROS DE LA TABLA TARIFA
--ORDENADOS POR PRECIO
SELECT TOP 88 PERCENT * FROM TARIFA
ORDER BY PRECIO ASC
--3.--HACER UNA CONSULTA QUE PERMITA MOSTRAR LOS 3
--EL ULTIMO REGISTRO DE LA TABLA TARIFA
SELECT TOP 75 PERCENT * FROM TARIFA
ORDER BY COD_TARIFA DESC
--4.--HACER UNA CONSULTA QUE PERMITA MOSTRAR LOS
--EL 15% DE LOS REGISTROS DE LA TABLA TARIFA
--ORDENADOS DESDE EL ULTIMO REGISTRO
SELECT TOP 15 PERCENT * FROM TARIFA
ORDER BY COD_TARIFA DESC
--5.--HACER UNA CONSULTA QUE PERMITA MOSTRAR LA CLASE, PRECIO
--E IMPUESTO DEL 50% DE LOS PRIMEROS REGISTROS DE LA TABLA TARIFA
--ORDENADOS DESDE EL MAS BARATO AL MAS CARO
SELECT TOP 50 PERCENT CLASE,PRECIO,IMPUESTO FROM TARIFA
ORDER BY PRECIO ASC
--6.--HACER UNA CONSULTA QUE PERMITA MOSTRAR EL CODIGO, CLASE Y PRECIO
--DE LOS 3 PRIMEROS REGISTROS DE LA TABLA TARIFA ORDENADOS
--DESDE EL MAS CARO AL MAS BARATO TAMBIEN DEBERA IMPRIMIR
--LAS COLUMNAS PERSONALIZADAS POR (CODIGO - TIPO DE ASIENTO - PRECIO S/.)
18 COD_TARIFA[CODIGO],CLASE[TIPO DE ASIENTO],PRECIO[PRECIO S/.] FROM TARIFA
SELECT
ORDER BY PRECIO DESC
SENTENCIA IF -ELSE
--1. Implemente la (basedatos_10) por defecto.
fecha de creacin.
if exists (select * from sys.databases where name =
'basedatos_10')
select database_id,name,create_date from sys.databases where name
='basedatos_10'
--3. Mostrar las bases de datos del servidor creadas en el 2016 y ordenados de forma
alfabtica segn la fecha de creacin.
select * from sys.databases where create_date>= '2016-01-01' and
create_date<='2016-12-31'
order by create_date asc
19
--As mismo se crearn las tablas Distritos y Usuario con restricciones Directas.
if not exists (select *from sys.databases where name = 'basedatos_12')
create database basedatos_12
ON PRIMARY
(
name= basedatos_12_PRI,
filename='C:\TRABAJOS SQL\basedatos_11\basedatos_12_PRI.mdf',
size=5mb,
filegrowth=2%,
maxsize= unlimited
),
(
name= basedatos_12_SEC,
filename='C:\TRABAJOS SQL\basedatos_11\basedatos_12_SEC.ndf',
size=6mb,
filegrowth=20mb,
maxsize= unlimited
)
log on
(
name=basedatos_12_LOG,
filename='C:\TRABAJOS SQL\basedatos_11\basedatos_12_LOG.ldf',
size=2mb,
filegrowth=5%,
maxsize=unlimited
)
go
Create Table DISTRITOS1
(
cod_distrito
char(6) not null PRIMARY KEY,
nom_distrito
varchar(20) not null
)
go
Create Table USUARIO1
(
cod_usua
nom_usua
apepater_usua
apemater_usua
fec_nac_usua
fec_reg_usua
dni_usua
telefono_usua
celular_usua
cod_dist_usua
)20
GO
end
if exists (select * from sys.databases where name= 'BASEDATOS_06' AND NOT EXISTS (SELECT *FROM
SYS.DATABASES WHERE name = 'BASEDATOS_07'))
begin
PRINT 'SI EXISTE LA BASEDATOS_06'
PRINT 'NO EXISTE LA BASEDATOS_07'
end
ELSE IF exists (select * from sys.databases where name= 'BASEDATOS_07' AND NOT EXISTS (SELECT *FROM
SYS.DATABASES WHERE name= 'BASEDATOS_06'))
begin
21
end
if exists (select * from sys.databases where name= 'BASEDATOS_06' AND NOT EXISTS (SELECT *FROM
SYS.DATABASES WHERE name = 'BASEDATOS_07'))
begin
PRINT 'SI EXISTE LA BASEDATOS_06'
PRINT 'NO EXISTE LA BASEDATOS_07'
end
ELSE IF exists (select * from sys.databases where name= 'BASEDATOS_07' AND NOT EXISTS (SELECT *FROM
SYS.DATABASES WHERE name= 'BASEDATOS_06'))
begin
22
end
else
print 'NO EXISTEN NINGUNA DE LAS 2 BASES DE DATOS'
--8. UTILIZANDO LA SENTENCIA IF ELSE, ELIMINAR (BASEDATOS_07) Y VERIFICAR SU
23