Вы находитесь на странице: 1из 14

FICHA 0008

CURSO : TALLER DE BASE DE DATOS


DOCENTE : JOSELITO E. SANTA CRUZ DIAZ
FECHA : _______/________/________

El objetivo es el aprendizaje que el alumno aprenda sobre el lenguaje de DML


(Lenguaje de Manipulación de Datos) de SQL server

1. Definiciones de DML.

Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un


lenguaje proporcionado por los sistemas gestores de bases de datos que permite
a los usuarios de la misma llevar a cabo las tareas de consulta o modificación de
los datos contenidos en las Bases de Datos del Sistema Gestor de Bases de Datos.

También se puede definir como un conjunto de comandos que nos permite


insertar, modificar y eliminar registros, así como ordenar, filtrar y extraer
información de una base de datos.

1.1. Comandos.
1.1.1. SENTENCIA INSERT. Utilizado para cargar lotes de datos en la base de
datos en una única operación.

Sintaxis

INSERT INTO tabla ([ ‘columna1’], [‘columna2’], ...) VALUES ([ ‘valor1’], [‘valor2’], ...)

1.1.2. SENTENCIA UPDATE. Utilizado para modificar los valores de los campos
y registros especificados.

Sintaxis

UPDATE tabla SET campo1 = 'nuevo valor campo1' WHERE campo2 = 'N';
1.1.3. SENTENCIA DELETE. Utilizado para eliminar registros de una tabla de
una base de datos.

Sintaxis

DELETE FROM 'tabla' WHERE 'columna1' = 'valor1'

1.1.4. SENTENCIA SELECT. Utilizado para consultar registros de la base de


datos que satisfagan un criterio determinado.

Sintaxis

SELECT * FROM 'tabla'

1.2. Cláusulas. Las cláusulas son condiciones de modificación utilizadas para


definir los datos que desea seleccionar o manipular.
1.2.1. From. Utilizada para especificar la tabla de la cual se van a seleccionar
los registros.
1.2.2. Where. Utilizada para especificar las condiciones que deben reunir los
registros que se van a seleccionar.
1.2.3. Group by. Utilizada para separar los registros seleccionados en grupos
específicos.
1.2.4. Having. Utilizada para expresar la condición que debe satisfacer cada
grupo.
1.2.5. Order by. Utilizada para ordenar los registros seleccionados de acuerdo
con un orden específico.
1.3. Operadores aritméticos

Operador Uso
+ Suma
- Resta
* Multiplicación
/ División
** Exponente
% Modulo
1.4. Operadores lógicos

Operador Uso
AND Es el “y” lógico. Evalúa dos condiciones y devuelve un valor de
verdad sólo si ambas son ciertas.
OR Es el “o” lógico. Evalúa dos condiciones y devuelve un valor de
verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
XOR
IS
IMP
EQV
1.5. Operadores de comparación

Operador Uso
= Cuando se quiere comparar el valor almacenado en un campo sea
igual que un valor o cadena estipulada
< Cuando se quiere comparar el valor almacenado en un campo sea
Menor que un valor estipulado
> Cuando se quiere comparar el valor almacenado en un campo sea
Mayor que un valor estipulado
<> Cuando se quiere comparar el valor almacenado en un campo sea
diferente de un valor estipulado
<= Cuando se quiere comparar el valor almacenado en un campo sea
Menor igual que un valor estipulado
>= Cuando se quiere comparar el valor almacenado en un campo sea
Mayor igual que un valor estipulado
BETWEEN Intervalo
EXISTS TRUE si una subconsulta contiene filas
LIKE Comparación
IN Especificar
1.6. Funciones de agregado. Las funciones de agregado se usan dentro de
una cláusula SELECT en grupos de registros para devolver un único valor
que se aplica a un grupo de registros.

COMANDO Descripción
AVG Utilizada para calcular el promedio de los valores de un campo
determinado
COUNT Utilizada para devolver el número de registros de la selección
SUM Utilizada para devolver la suma de todos los valores de un campo
determinado
MAX Utilizada para devolver el valor más alto de un campo especificado
MIN Utilizada para devolver el valor más bajo de un campo
especificado

1.7. Predicados. El predicado se incluye entre la cláusula y el primer nombre


del campo a recuperar, los posibles predicados son:
1.7.1. ALL (se puede usar * en su reemplazo): Devuelve todos los campos de
la tabla
Sintaxis
SELECT ALL FROM Tabla;
SELECT * FROM Tabla;
1.7.2. TOP: Devuelve un determinado número de registros de la tabla.
Sintaxis
SELECT TOP N campo1, campo2 FROM Tabla ORDER BY campo DESC;

Si no se incluye la cláusula ORDER BY, la consulta devolverá un


conjunto arbitrario de 25 registros de la tabla Estudiantes. El
predicado TOP no elige entre valores iguales.

SELECT TOP N PERCENT campo1, campo2 FROM Estudiantes ORDER


BY campo DESC;
Se puede utilizar la palabra reservada PERCENT para devolver un
cierto porcentaje de registros que caen al principio o al final de un rango
especificado por la cláusula ORDER BY.

1.7.3. DISTINCT. Omite los registros que contienen datos duplicados en los
campos seleccionados. Para que los valores de cada campo listado en la
instrucción SELECT se incluyan en la consulta deben ser únicos.

Sintaxis

SELECT DISTINCT campo1 FROM Tabla;

Con otras palabras, el predicado DISTINCT devuelve aquellos registros


cuyos campos indicados en la cláusula SELECT posean un contenido
diferente. El resultado de una consulta que utiliza DISTINCT no es
actualizable y no refleja los cambios subsiguientes realizados por otros
usuarios.
1.8. Creamos una base de datos aplicando el lenguaje DDL para aplicar
sentencias DML.
1.8.1. Creación de la base de datos(DDL)

create database BD_PRODUCTO


ON PRIMARY(
name='BD_PRODUCTO.MDF',
FILENAME='D:\BDPRODUCTO\BD_PRODUCTO.MDF',
SIZE=10mb,
Maxsize=Unlimited,
FILEGROWTH=65536
)LOG ON(
name='BD_PRODUCTO.LDF',
FILENAME='D:\BDPRODUCTO\BD_PRODUCTO.LDF',
SIZE=10mb,
Maxsize=Unlimited,
FILEGROWTH=65536
)

USE BD_PRODUCTO
CREATE TABLE PRODUCTO(
Producto_id int primary key,
Pro_descripcion varchar(100),
Pro_presentacion varchar(50),
Pro_precio_compra money,
Pro_precio_venta money,
Pro_stock numeric(4,2),
Pro_estado char(1)
)
CREATE TABLE MARCA(
Marca_id int primary key,
Mar_descripcion varchar(50),
Mar_estado char(1)
)

CREATE TABLE CATEGORIA(


Categoria_id int primary key,
Cat_descripcion varchar(50),
Cat_estado char(1)
)

alter table PRODUCTO ADD Marca_id int

ALTER TABLE PRODUCTO


ADD CONSTRAINT FK_MARCA_PRODUCTO
FOREIGN KEY (Marca_id) REFERENCES MARCA (Marca_id)
go

alter table PRODUCTO ADD Categoria_id int

ALTER TABLE PRODUCTO


ADD CONSTRAINT FK_CATEGORIA_PRODUCTO
FOREIGN KEY (Categoria_id) REFERENCES CATEGORIA (Categoria_id)
Go

1.8.2. Llenado de registros a la base de datos (DML)


1.8.2.1. Llenando registros a la tabla CATEGORIA

insert into CATEGORIA(Categoria_id,Cat_descripcion,Cat_estado)


values(1,'LACTEOS','A')
insert into CATEGORIA(Categoria_id,Cat_descripcion,Cat_estado)
values(2,'LICORES','A')
insert into CATEGORIA(Categoria_id,Cat_descripcion,Cat_estado)
values(3,'BEBIDAS GASIFICADAS','A')
insert into CATEGORIA(Categoria_id,Cat_descripcion,Cat_estado)
values(4,'VIVERES','A')
insert into CATEGORIA(Categoria_id,Cat_descripcion,Cat_estado)
values(5,'HIDRATANTES','A')

TAMBIEN SE PUEDE REALIZAR DE UNA FORMA CORTA COMO SE


MUESTRA A CONTINUACION:
insert into CATEGORIA values(1,'LACTEOS','A')
insert into CATEGORIA values(2,'LICORES','A')
insert into CATEGORIA values (3,'BEBIDAS GASIFICADAS','A')
insert into CATEGORIA values(4,'VIVERES','A')
insert into CATEGORIA values(5,'HIDRATANTES','A')
1.8.2.2. Llenando registros a la tabla MARCA

INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)


VALUES(1,'COCA COLA','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(2,'TABERNERO','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(3,'GLORIA','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(4,'LAIVE','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(5,'INCA KOLA','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(6,'P&G','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(7,'ALICORP','A')
INSERT INTO MARCA(Marca_id,Mar_descripcion,Mar_estado)
VALUES(8,'UNION','A')
1.8.2.3. Llenando registros a la tabla PRODUCTO

INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(1,'INKA KOLA','1/2 L',1.7,2.0,30,'A',1,3)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(2,'YOGURT FRESA','1 L',5.2,6.0,16,'A',3,1)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(3,'YOGURT LUCUMA','1/2 L',2.4,3.0,45,'A',4,1)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(4,'FIDEO DON VICTORIO ESPAGUETI','1/2 K',1.9,2.5,52,'A',7,4)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(5,'ACEITE PRIMOR','1/2 L',7.8,8.0,14,'A',6,4)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(6,'VINO FRESCO','650 ML',18.3,20.0,24,'A',8,2)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(7,'VINO SEMI SECO','650 ML',6.45,8.0,14,'A',2,2)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(8,'SPORADE','650 ML',1.65,2.0,26,'A',1,5)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(9,'MALTIN POWER','1 L',1.55,2.0,23,'A',6,5)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(10,'INKA KOLA','3 L',6.3,7.0,10,'A',1,3)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(11,'PEPSI','1/2 L',1.45,2.0,14,'A',6,3)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(12,'MERMELADA','1/2 K',4.75,5.0,17,'A',3,4)
INSERT INTO
PRODUCTO(Producto_id,Pro_descripcion,Pro_presentacion,Pro_precio_compra,Pro_preci
o_venta,Pro_stock,Pro_estado,Marca_id,Categoria_id)
VALUES(13,'AGUA MINERAL SAN CARLOS','1/2 L',0.8,1.0,28,'A',6,5)

1.9. Consultas básicas con la cláusula FROM


1.9.1. Realizar una consulta que permita mostrar todos los registros que de la
tabla categoría.

Solución:

SELECT * FROM CATEGORIA

1.9.2. Realizar una consulta que permita mostrar todos los registros que de la
tabla marca.
Solución:

SELECT * FROM MARCA

1.9.3. Realizar una consulta que permita mostrar todos los registros que de la
tabla producto.
Solución:
SELECT * FROM PRODUCTO
1.10. Consultas básicas con predicados.
1.10.1. Realizar una consulta que permita mostrar los tres primeros productos.

SELECT TOP 3 Pro_descripcion FROM PRODUCTO

1.10.2. Realizar una consulta que permita mostrar el 90 % de los registros de los
productos.
SELECT TOP 90 PERCENT Pro_descripcion FROM PRODUCTO
1.10.3. Realizar una consulta que permita no mostrar los nombres de los
productos que se repitan.

SELECT Distinct Pro_descripcion FROM PRODUCTO

1.11. Consultas básicas con SELECT, con encabezados (Alias), concatenar,


cálculos y funciones de agregado.
1.11.1. Realizar una consulta que permita mostrar la utilidad de cada producto.

select Pro_descripcion,Pro_presentacion,(Pro_precio_venta-Pro_precio_compra) as
Utilidad from PRODUCTO

1.11.2. Realizar una consulta que permita concatenar la descripción y la


presentación del producto.

select Pro_descripcion + ' ' +Pro_presentacion as Descripcion_producto from PRODUCTO

1.11.3. Realizar una consulta que permita sumar todos los stocks de los
productos

select sum(Pro_stock) as TOTAL_STOCK FROM PRODUCTO

1.11.4. Realizar una consulta que permita determinar cuántos registros tiene la
tabla producto.

select COUNT(Producto_id) as TOTAL_REGISTRO FROM PRODUCTO

1.11.5. Realizar una consulta que permita calcular el precio promedio de todos
los precios de venta.

select AVG(Pro_precio_venta) as PRECIO_PROMEDIO FROM PRODUCTO

1.11.6. Realizar una consulta que permita calcular la inversión de cada producto.

Select Pro_descripcion,Pro_presentacion,(Pro_stock * Pro_precio_compra) as


Invertido from PRODUCTO

1.11.7. Realizar una consulta que permita calcular la inversión total de todos los
productos.

select sum(Pro_stock * Pro_precio_compra) as Total_Invertido from PRODUCTO


1.11.8. Realizar una consulta que permita mostrar el mayor precio de venta de
todos los productos.

select max(Pro_precio_venta) as El_Mayor_Precio_venta from PRODUCTO

1.11.9. Realizar una consulta que permita mostrar el menor precio de compra de
todos los productos.

select min(Pro_precio_compra) as El_Menor_Precio_compra from PRODUCTO

1.11.10. Realizar una consulta que permita mostrar el menor stock de todos los
productos.

select min(Pro_stock) as El_Menor_stock from PRODUCTO

1.11.11. Realizar una consulta que permita mostrar el mayor stock de todos los
productos.

select max(Pro_stock) as El_Mayor_stock from PRODUCTO

1.11.12. Realizar una consulta que permita calcular el total de ganancia que se
obtendrá al vender todos los productos.

select sum(Pro_stock * Pro_precio_venta)-sum(Pro_stock * Pro_precio_compra) as


Total_Ganancia from PRODUCTO

Otra forma es:

select sum((Pro_precio_venta-Pro_precio_compra)*Pro_stock) as Total_Ganancia from


PRODUCTO

1.12. Consultas básicas con Order by.


1.12.1. Realizar una consulta que permita mostrar la descripción y la
presentación del producto y ordenar en orden alfabético A-
Z(Ascendente).

SELECT Pro_descripcion,Pro_presentacion FROM PRODUCTO


order by Pro_descripcion asc
1.12.2. Realizar una consulta que permita mostrar la descripción y la
presentación del producto y ordenar en orden alfabético Z-
A(Descendente).

SELECT Pro_descripcion,Pro_presentacion FROM PRODUCTO


order by Pro_descripcion desc
1.12.3. Realizar una consulta que permita mostrar la descripción y la
presentación del producto y ordenar en ordenar de menor a mayor por
precio de venta.

SELECT Pro_descripcion,Pro_presentacion,Pro_precio_venta FROM PRODUCTO


order by Pro_precio_venta asc

1.12.4. Realizar una consulta que permita mostrar la descripción y la


presentación del producto y ordenar en ordenar de mayor a menor por
precio de compra.

SELECT Pro_descripcion,Pro_presentacion,Pro_precio_compra FROM PRODUCTO


order by Pro_precio_compra desc

1.13. Consultas básicas con Group by.


1.13.1. Realizar una consulta que permita agrupar por descripción los productos.

SELECT Pro_descripcion FROM PRODUCTO


group by Pro_descripcion

1.13.2. Realizar una consulta que permita agrupar por precio de venta los
productos.

SELECT Pro_precio_venta FROM PRODUCTO


group by Pro_precio_venta

1.13.3. Realizar una consulta que permita agrupar por stock los productos.

SELECT Pro_stock FROM PRODUCTO


group by Pro_stock

1.13.4. Realizar una consulta que permita agrupar por estado los productos.

SELECT Pro_estado FROM PRODUCTO


group by Pro_estado
1.14. Consultas básicas con Where.
1.14.1. Realizar una consulta que permita mostrar todos los productos que los
stocks sean menores que 30.

SELECT * FROM PRODUCTO


WHERE Pro_stock<30

1.14.2. Realizar una consulta que permita mostrar todos los productos que
tengan stock mayores iguales que 30

SELECT * FROM PRODUCTO


WHERE Pro_stock>=30

1.14.3. Realizar una consulta que permita mostrar los productos cuya marca sea
coca cola.

SELECT P.Pro_descripcion,P.Pro_presentacion,M.Mar_descripcion
FROM PRODUCTO as P,MARCA as M
WHERE P.Marca_id=M.Marca_id and m.Mar_descripcion='COCA COLA'

1.14.4. Realizar una consulta que permita mostrar los productos cuya categoría
sea licores

SELECT P.Pro_descripcion,P.Pro_presentacion,C.Cat_descripcion
FROM PRODUCTO AS P,CATEGORIA AS C
WHERE P.Categoria_id=C.Categoria_id AND C.Cat_descripcion='LICORES'

1.14.5. Realizar una consulta que permita mostrar todos los productos que
pertenezcan a una categoría y mostrar su descripción de la categoría.

SELECT P.Pro_descripcion,C.Cat_descripcion
FROM PRODUCTO AS P,CATEGORIA AS C
WHERE P.Categoria_id=C.Categoria_id AND C.Cat_descripcion='LACTEOS'

1.14.6. Realizar una consulta que me permita ingresar la marca y mostrar los
productos que pertenecen a dicha marca.

SELECT P.Pro_descripcion
FROM PRODUCTO as P,MARCA as M
WHERE P.Marca_id=M.Marca_id and m.Mar_descripcion='ALICORP'
1.14.7. Realizar una consulta que permita mostrar todos los productos cuyo stock
sea diferente de 30.

SELECT * FROM PRODUCTO


WHERE Pro_stock<>30

1.14.8. Realizar una consulta que permita mostrar los productos cuyo stock sea
30.

SELECT * FROM PRODUCTO


WHERE Pro_stock=30

1.14.9. Realizar una consulta que me permita no mostrar los productos cuyo
stock es 30

SELECT * FROM PRODUCTO


WHERE NOT Pro_stock=30

1.14.10. Realizar una consulta que me permita mostrar los productos que cuya
descripción sea INKA KOLA.

SELECT * FROM PRODUCTO


WHERE Pro_descripcion='INKA KOLA'

1.14.11. Realizar una consulta que me permita mostrar todos los productos que
tengan estados A.

SELECT * FROM PRODUCTO


WHERE Pro_estado='A'

1.15. Consultas básicas de Modificación de datos UPDATE


1.15.1. Realizar una consulta que me permita modificar los estados del producto
de “A” a “D”.

1.15.2. Realizar una consulta que me permita modificar los estados de los dos
últimos registros a un estado “N” que significa es producto nuevo.
1.15.3. Realizar una consulta que permita modificar los estados de los 6 primeros
registros de mis productos por “A”
1.15.4. Realizar una consulta que me permita modificar el stock de los productos
que tengan 30 a un stock 70.
1.15.5. Realizar una consulta que me permita modificar la Presentación de los
productos que sea “1/2 L” a “650 ml”.
1.15.6. Realizar una consulta que permita mostrar un precio máximo que se
calcula mediante el 60% del precio de compra y modificar a los precios
de venta.
1.16. Consultas de eliminación de registros DELETE
1.16.1. Registrar dos nuevos registros de productos cuyo estado sea “P” significa
producto pendiente y “F” significa producto faltante y eliminar el registro
cuyo estado es “F”
1.16.2. Registrar dos nuevos registros de productos cuyo stock sea - 3 y 10
eliminar el registro cuyo stock es negativo.
1.17. Consultas con más de una clausula y uso de encabezados, Funciones
de agregados, Predicados, Operadores aritméticos, Comparación,
lógicos.
1.17.1. Realizar una consulta que me permita mostrar los productos que tengan
un stock de 20 y 30 a demás debe ordenarme en forma ascendente por
descripción y nombre y agruparme por categoría.
1.17.2. Realizar una consulta que me permita contar cuantos productos tienen la
misma categoría y ordenarlos de forma descendente además su estado
debe ser “A”.
1.17.3. Realizar una consulta que me permita calcular el promedio de los precios
de ventas que este entre 0 y 3
1.17.4. Realizar una consulta que permita mostrar la descripción de la categoría
y su stock por categoría además debe ordenarse de forma ascendente.
1.17.5. Realizar una consulta que me permita calcular el total de inversión que
se tiene por categoría y ordenarlo por la categoría de mayor monto.
1.17.6. Realizar una consulta que me permita calcular el total de inversión que
se tiene por marca y ordenarlo por la marca.
1.17.7. Realizar una consulta que me permita mostrar el total de stock por
categoría, siempre en cuando el estado del producto sea “D” o “A
“ordenarlo por nombre.

Вам также может понравиться