0% found this document useful (0 votes)
74 views

Tarea Video2

The document contains the script for creating tables in a database called tiendabd. It creates tables for articles, categories, purchase details, sale details, purchases, people, roles, users and sales. It also defines primary keys, foreign keys and default values. At the end it requests to create triggers for updates and deletes on the sale details table and create a cursor to delete a person's history by entering their idpersona.

Uploaded by

kiyipi123
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
74 views

Tarea Video2

The document contains the script for creating tables in a database called tiendabd. It creates tables for articles, categories, purchase details, sale details, purchases, people, roles, users and sales. It also defines primary keys, foreign keys and default values. At the end it requests to create triggers for updates and deletes on the sale details table and create a cursor to delete a person's history by entering their idpersona.

Uploaded by

kiyipi123
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Script para la bd

USE [tiendabd]

GO

/****** Object:  Table [dbo].[articulo]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[articulo](

[idarticulo] [int] IDENTITY(1,1) NOT NULL,

[idcategoria] [int] NOT NULL,

[codigo] [varchar](50) NULL,

[nombre] [varchar](100) NOT NULL,

[precio_venta] [decimal](11, 2) NOT NULL,

[stock] [int] NOT NULL,

[descripcion] [varchar](256) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idarticulo] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY],

UNIQUE NONCLUSTERED 

[nombre] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[categoria]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[categoria](

[idcategoria] [int] IDENTITY(1,1) NOT NULL,

[nombre] [varchar](50) NOT NULL,

[descripcion] [varchar](256) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idcategoria] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY],

UNIQUE NONCLUSTERED 

[nombre] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO
/****** Object:  Table [dbo].[detalle_ingreso]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[detalle_ingreso](

[iddetalle_ingreso] [int] IDENTITY(1,1) NOT NULL,

[idingreso] [int] NOT NULL,

[idarticulo] [int] NOT NULL,

[cantidad] [int] NOT NULL,

[precio] [decimal](11, 2) NOT NULL,

PRIMARY KEY CLUSTERED 

[iddetalle_ingreso] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[detalle_venta]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[detalle_venta](

[iddetalle_venta] [int] IDENTITY(1,1) NOT NULL,

[idventa] [int] NOT NULL,


[idarticulo] [int] NOT NULL,

[cantidad] [int] NOT NULL,

[precio] [decimal](11, 2) NOT NULL,

[descuento] [decimal](11, 2) NOT NULL,

PRIMARY KEY CLUSTERED 

[iddetalle_venta] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[ingreso]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[ingreso](

[idingreso] [int] IDENTITY(1,1) NOT NULL,

[idproveedor] [int] NOT NULL,

[idusuario] [int] NOT NULL,

[tipo_comprobante] [varchar](20) NOT NULL,

[serie_comprobante] [varchar](7) NULL,

[num_comprobante] [varchar](10) NOT NULL,

[fecha] [datetime] NOT NULL,

[impuesto] [decimal](4, 2) NOT NULL,

[total] [decimal](11, 2) NOT NULL,


[estado] [varchar](20) NOT NULL,

PRIMARY KEY CLUSTERED 

[idingreso] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[persona]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[persona](

[idpersona] [int] IDENTITY(1,1) NOT NULL,

[tipo_persona] [varchar](20) NOT NULL,

[nombre] [varchar](100) NOT NULL,

[tipo_documento] [varchar](20) NULL,

[num_documento] [varchar](20) NULL,

[direccion] [varchar](70) NULL,

[telefono] [varchar](20) NULL,

[email] [varchar](50) NULL,

PRIMARY KEY CLUSTERED 

[idpersona] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[rol]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[rol](

[idrol] [int] IDENTITY(1,1) NOT NULL,

[nombre] [varchar](30) NOT NULL,

[descripcion] [varchar](100) NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idrol] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[usuario]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO
CREATE TABLE [dbo].[usuario](

[idusuario] [int] IDENTITY(1,1) NOT NULL,

[idrol] [int] NOT NULL,

[nombre] [varchar](100) NOT NULL,

[tipo_documento] [varchar](20) NULL,

[num_documento] [varchar](20) NULL,

[direccion] [varchar](70) NULL,

[telefono] [varchar](20) NULL,

[email] [varchar](50) NOT NULL,

[estado] [bit] NULL,

PRIMARY KEY CLUSTERED 

[idusuario] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

/****** Object:  Table [dbo].[venta]    Script Date: 22/06/2020 19:15:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[venta](

[idventa] [int] IDENTITY(1,1) NOT NULL,

[idcliente] [int] NOT NULL,

[idusuario] [int] NOT NULL,


[tipo_comprobante] [varchar](20) NOT NULL,

[serie_comprobante] [varchar](7) NULL,

[num_comprobante] [varchar](10) NOT NULL,

[fecha_hora] [datetime] NOT NULL,

[impuesto] [decimal](4, 2) NOT NULL,

[total] [decimal](11, 2) NOT NULL,

[estado] [varchar](20) NOT NULL,

PRIMARY KEY CLUSTERED 

[idventa] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,


ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY =
OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[articulo] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[categoria] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[rol] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[usuario] ADD  DEFAULT ((1)) FOR [estado]

GO

ALTER TABLE [dbo].[articulo]  WITH CHECK ADD FOREIGN KEY([idcategoria])

REFERENCES [dbo].[categoria] ([idcategoria])

GO

ALTER TABLE [dbo].[detalle_ingreso]  WITH CHECK ADD FOREIGN KEY([idarticulo])


REFERENCES [dbo].[articulo] ([idarticulo])

GO

ALTER TABLE [dbo].[detalle_ingreso]  WITH CHECK ADD FOREIGN KEY([idingreso])

REFERENCES [dbo].[ingreso] ([idingreso])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[detalle_venta]  WITH CHECK ADD FOREIGN KEY([idarticulo])

REFERENCES [dbo].[articulo] ([idarticulo])

GO

ALTER TABLE [dbo].[detalle_venta]  WITH CHECK ADD FOREIGN KEY([idventa])

REFERENCES [dbo].[venta] ([idventa])

ON DELETE CASCADE

GO

ALTER TABLE [dbo].[ingreso]  WITH CHECK ADD FOREIGN KEY([idproveedor])

REFERENCES [dbo].[persona] ([idpersona])

GO

ALTER TABLE [dbo].[ingreso]  WITH CHECK ADD FOREIGN KEY([idusuario])

REFERENCES [dbo].[usuario] ([idusuario])

GO

ALTER TABLE [dbo].[usuario]  WITH CHECK ADD FOREIGN KEY([idrol])

REFERENCES [dbo].[rol] ([idrol])

GO

ALTER TABLE [dbo].[venta]  WITH CHECK ADD FOREIGN KEY([idcliente])

REFERENCES [dbo].[persona] ([idpersona])

GO

ALTER TABLE [dbo].[venta]  WITH CHECK ADD FOREIGN KEY([idusuario])


REFERENCES [dbo].[usuario] ([idusuario])

GO

REalizar un video subirlo a la plataforma de Youtube o GoogleDrive explicando y demostrando como utilizar las
funcionesy vistas.

Realizar dos trigger uno para update y otro para delete cuando se ejecutar sobre la tabla detalleventa.

tRIGGER QUE RECALCULA EL CAMPO TOTAL DE LA TABLA VENTA CUANDO SE EJECUTA UN INSERT EN DETALLE_VENTA
CREATE TRIGGER RECALCULAR_TOTAL
ON DETALLE_VENTA
AFTER INSERT
AS
DECLARE @IDVENTA INT
DECLARE @TOTALACTAULIZADO DECIMAL(11,2)
SET @IDVENTA = (SELECT IDVENTA FROM INSERTED)
SET @TOTALACTAULIZADO = (SELECT SUM(DV.SUBTOTAL)
FROM DETALLE_VENTA DV
WHERE DV.IDVENTA=@IDVENTA)
UPDATE VENTA SET TOTAL=@TOTALACTAULIZADO WHERE IDVENTA=@IDVENTA
Create trigger actualizardetalle_venta

On detalle_venta

For update as

Begin

Select * from deleted

Select * from inserted

end
Realizar dos trigger uno para update y otro para delete cuando se ejecutar sobre la tabla detalleventa.

- Realizar un cursor que elimine el historial de una persona ingresando el idpersona

--CURSORES

-- Permite recorrer fila tras fila

-- A continuacion se explica la estructura de un cursor

--1. Se declara la varible/s a recorrer. Estan deben ser del mismo tipo de dato q la consulta

DECLARE @NOM AS NVARCHAR(100)

DECLARE @CORREO AS NVARCHAR(50)

--2. Se declara el nombre del cursor y se vincula a la consulta a ejecutar

DECLARE PLANILLA CURSOR FOR

SELECT NOMBRE,EMAIL FROM PERSONA

--3. Se abre el cursos invocando el nombre del mismo

OPEN PLANILLA

--4. Se llama a la primera fila con sus respectivos valores


FETCH NEXT FROM PLANILLA INTO @NOM,@CORREO

--5. Inicia el bucle While

WHILE @@fetch_status = 0

BEGIN

PRINT 'Hola '+@NOM+ ' Como estas? tu correo es '+@CORREO

--Se pasa a la siguiente fila a recorrer

FETCH NEXT FROM PLANILLA INTO @NOM,@CORREO

END

--6. Se cierra el cursor

CLOSE PLANILLA

--7. Se desaloja al cursor

DEALLOCATE PLANILLA

[6:53 p. m., 26/6/2020] Ing Tito Romero: --Cursor que indica la ultima compra de un cliente
--1. Se declara la varible/s a recorrer. Estan deben ser del mismo tipo de dato q la consulta
DECLARE @ID AS INT
DECLARE @NOM AS NVARCHAR(100)
--2. Se declara el nombre del cursor y se vincula a la consulta(BASE) a ejecutar
DECLARE PLANILLA CURSOR FOR
SELECT P.IDPERSONA,P.NOMBRE
FROM PERSONA P
--3. Se abre el cursos invocando el nombre del mismo
OPEN PLANILLA
--4. Se llama a la primera fila con sus respectivos valores
FETCH NEXT FROM PLANILLA INTO @ID,@NOM
--5. Inicia el bucle While
WHILE @@fetch_status = 0
BEGIN
DECLARE @FECHA NVARCHAR(30)
DECLARE @TOTAL DECIMAL(11,2)
SET @FECHA = (SELECT TOP 1 V.FECHA_HORA
FROM VENTA V
WHERE V.IDCLIENTE=@ID
ORDER BY V.FECHA_HORA DESC)
SET @TOTAL = (SELECT TOP 1 V.TOTAL
FROM VENTA V
WHERE V.IDCLIENTE=@ID
ORDER BY V.FECHA_HORA DESC)
PRINT 'Hola '+@NOM+ ' tu ultima compra fue en '+@FECHA+' y su consumo fue de '+CAST(@TOTAL AS NVARCHAR)+'
Bs.'
--Se pasa a la siguiente fila a recorrer
FETCH NEXT FROM PLANILLA INTO @ID,@NOM
END
--6. Se cierra el cursor
CLOSE PLANILLA
--7. Se desaloja al cursor
DEALLOCATE PLANILLA

eliminar todo el historial de la persona 3

delete from detalle_venta where idventa=1005


delete from detalle_venta where idventa=1007
delete from venta where idventa=1005
delete from venta where idventa=1007
delete from persona where idpersona=3

You might also like