/*

 Base de dados - criar	CREATE DATABASE [nome da base de dados]
 Tabela - criar		CREATE TABLE
 Tabela - alterar 	ALTER TABLE
 Tabela - agrupar	SELECT * FROM tabela1 JOIN tabela2 ON tabela1.FK = tabela2.PK
 Dados - inserir	INSERT INTO tabela(atributo, atributo,...) VALUES ('valor',999, ...)
 Dados - apagar		DELETE tabela
 Dados - contar		COUNT(tabela)
 Dados - filtro		WHERE 		campo = VALOR
					campo like 'c%' 	- com a letra "C" no comeo
					campo like '%c' 	- com a letra "C" no final
					campo like '%c%' 	- com a letra "C" em qualquer parte do campo

 Dados - mostrar	SELECT * FROM tabela
 Dados - somar		SUM (tabela)

*/

/*
-- Definindo campos nas tabelas

int 		- numero inteiro
char		- usa todos os caracteres reservados
varchar		- usa somente os caracteres usados, idenpendente dos caracteres reservados
nvarchar	- pode ser armazenados at 2TB de informao
text		- podemos escrever qualquer tipo de texto at 256 caracteres
datetime	- defime campo formatado como data
float		- numero flutuante com definies de casas depois da vrgula

*/

-- Aula - 27/02/2008
-- CRIANDO TABELAS E CHAVES PRIMARIAS
use master

create database [FMU]
go

use FMU
go

create table
FORNECEDOR
	(
	cod_fornecedor		integer 	not null	Identity(1,1),
	fornecedor		varchar(250)	not null,
	cgc			bigint		not null,
	endereco		varchar(500)	not null,
	endereco_complemento	varchar(250)	null	
	primary key(cod_fornecedor)
	)
go

create table
PRODUTO
	(
	nr_produto		varchar(30)	not null,
	nome			varchar(250)	not null
	primary key (nr_produto)
	)
go

create table
PEDIDO
	(
	nr_pedido		integer		not null,
	data_emissao		datetime	not null,
	cod_fornecedor		integer		not null
	primary key (nr_pedido)
	)
go

create table
ITEM
	(
	cod_item		integer		not null	Identity(1,1),
	nr_pedido		integer		not null,
	nr_produto		varchar(30)	not null,
	quantidade		integer		not null,
	preco_unitario		float(2)	not null
	primary key (cod_item)
	)
go

-- Aula - 05/03/2008
-- CRIANDO CHAVER ESTRANGEIRAS ( FK )

alter table		
ITEM		add
 constraint	[fk_produto_item] 		-- Nome padro: [ FK_TabelaPai_TabelaFilha ]
 foreign key 	(nr_produto)
 references	PRODUTO(nr_produto),

 constraint	[fk_pedido_item]		-- Insero da segunda referncia usando o mesmo ALTER TABLE
 foreign key	(nr_pedido)
 references	PEDIDO(nr_pedido)
GO

alter table
PEDIDO		add
 constraint	[fk_fornecedor_pedido]
 foreign key	(cod_fornecedor)
 references	FORNECEDOR(cod_fornecedor)
GO

-- INSERINDO DADOS NA TABELA PRODUTO
insert into 	PRODUTO	( nr_produto,nome ) values 	( '033A', 'PHOTOPAINT' )
insert into 	PRODUTO	( nr_produto,nome ) values 	( '002M', 'COREL' )
insert into 	PRODUTO	( nr_produto,nome ) values 	( '145J', 'WORD' )
insert into 	PRODUTO	( nr_produto,nome ) values 	( '083P', 'ESTOQUE' )
insert into 	PRODUTO	( nr_produto,nome ) values 	( '029K', 'EXCEL' )
go

-- INSERINDO DADOS NA TABELA FORNECEDOR
insert into 	FORNECEDOR ( fornecedor, cgc, endereco, endereco_complemento )	VALUES ('CASA SOFTWARE', '824288880', 'LAPA', '777')
insert into 	FORNECEDOR ( fornecedor, cgc, endereco, endereco_complemento )	VALUES ('BRASILSOFTWARE', '804799970', 'ITU', '49')
insert into 	FORNECEDOR ( fornecedor, cgc, endereco, endereco_complemento )	VALUES ('COMPUTERLAND', '793225323', 'FEIJ', '122')
go

-- INSERINDO DADOS NA TABELA PEDIDO
insert into 	PEDIDO ( nr_pedido, data_emissao, cod_fornecedor ) values 	( 3, '01/20/2008', 1 )
insert into 	PEDIDO ( nr_pedido, data_emissao, cod_fornecedor ) values 	( 4, '01/27/2008', 2 )
insert into 	PEDIDO ( nr_pedido, data_emissao, cod_fornecedor ) values 	( 5, '01/27/2008', 3 )
insert into 	PEDIDO ( nr_pedido, data_emissao, cod_fornecedor ) values 	( 6, '02/14/2008', 2 )
go

-- INSERINDO DADOS NA TABELA ITEM
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 3, '033A',  4,  130 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 3, '002M',  1,  499 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 3, '145J', 13,  256 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 4, '002M',  2,  450 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 4, '083P', 10,   85 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 5, '033A', 50,  110 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 5, '145J', 50,  110 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 6, '029K', 15, 2000 )
insert into 	ITEM ( nr_pedido, nr_produto, quantidade, preco_unitario )	VALUES ( 6, '083P', 10,   87 ) 
go

/*
Faa a seleo de
Nr Pedido | Data | Nome Fornecedor | Produto | Qtde | Valor | Valor Item
*/
select 	pedido.nr_pedido as 'Nr Pedido',
	convert(varchar(10), pedido.data_emissao, 103) as Data,
	fornecedor.fornecedor as 'Nome Fornecedor',
	produto.nome as Produto,
	item.quantidade as Qtde,
	item.preco_unitario as Valor,
	item.preco_unitario*quantidade as 'Total Item'
from 	pedido
join	fornecedor	on	pedido.cod_fornecedor = fornecedor.cod_fornecedor
join	item		on	pedido.nr_pedido = item.nr_pedido
join	produto		on	item.nr_produto = produto.nr_produto


/*
Faa a seleo de
Nr Pedido | Data | Valor Total Pedido
*/
select 	distinct 
	pedido.nr_pedido as 'Nr Pedido',
	convert(varchar(10), pedido.data_emissao, 103) as Data,
	sum(item.preco_unitario*quantidade) as 'Valor Total Pedido'
from 	pedido
join	item		on	pedido.nr_pedido = item.nr_pedido
group by	pedido.nr_pedido, pedido.data_emissao