-
Notifications
You must be signed in to change notification settings - Fork 0
/
site_(2.2).sql
196 lines (161 loc) · 5.25 KB
/
site_(2.2).sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
create database site;
use site;
-- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- tables:
create table usuario (
user_codigo int primary key auto_increment,
user_nome varchar (100) not null,
user_senha varchar (10),
user_nivel int (11)
);
create table produtos (
prod_codigo int primary key auto_increment,
prod_nome varchar (100) not null,
prod_preco float,
prod_unidade_medida int (11),
prod_cod_barras varchar (13),
prod_departamento int (11),
prod_estoque decimal (15,4)
);
create table unidade_medida (
uni_codigo int primary key auto_increment,
uni_nome varchar (100) not null
);
create table departamentos (
dep_codigo int primary key auto_increment,
dep_nome varchar (100) not null
);
create table itens_venda (
iven_codigo int primary key auto_increment,
iven_valor decimal (15,4),
iven_desconto decimal (15,4),
iven_total decimal (15,4),
iven_produto int (11),
iven_fk_venda int (11)
-- foreign key (
);
create table vendas (
ven_codigo int primary key auto_increment,
ven_data date,
ven_total decimal (15,4),
ven_cliente int (11),
ven_status tinyint(1)
);
create table cliente (
cli_codigo int primary key auto_increment,
cli_nome varchar (100) not null,
cli_endereco varchar (60),
cli_cpf decimal (10,0),
cli_tel decimal (10,0),
cli_bairro varchar (60),
cli_num_casa varchar (10),
cli_fk_cidade_codigo int (11)
);
create table cidade (
cid_codigo int primary key auto_increment,
cid_nome varchar (100) not null,
cid_fk_estado int (11)
);
create table estados (
est_codigo int primary key auto_increment,
est_nome varchar (100) not null
);
create table recebimento (
rec_codigo int primary key auto_increment,
rec_data date,
rec_valor decimal (15,4),
rec_fk_codigo_venda int (11),
rec_fk_codigo_formapag int(11)
);
create table forma_pagamento (
fpag_codigo int primary key auto_increment,
fpag_nome varchar (30) not null
);
-- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- alter table
alter table produtos
add constraint fk_unidade_medida
foreign key (prod_unidade_medida)
references unidade_medida (uni_codigo)
on delete no action
on update no action;
alter table produtos
add constraint fk_departamento
foreign key (prod_departamento)
references departamentos (dep_codigo)
on delete no action
on update no action;
alter table vendas
add constraint fk_clientes
foreign key (ven_cliente)
references cliente (cli_codigo)
on delete no action
on update no action;
alter table recebimento
add constraint fk_venda
foreign key (rec_fk_codigo_venda)
references vendas (ven_codigo)
on delete no action
on update no action;
alter table recebimento
add constraint fk_forma_pagamento
foreign key (rec_fk_codigo_formapag)
references forma_pagamento (fpag_codigo)
on delete no action
on update no action;
alter table itens_venda
add constraint fk_produtos
foreign key (iven_produto)
references produtos (prod_codigo)
on delete no action
on update no action;
alter table itens_venda
add constraint fk_vendas
foreign key (iven_fk_venda)
references vendas (ven_codigo)
on delete no action
on update no action;
alter table cliente
add constraint fk_cidade
foreign key (cli_fk_cidade_codigo)
references cidade (cid_codigo)
on delete no action
on update no action;
alter table cidade
add constraint fk_estado
foreign key (cid_fk_estado)
references estados (est_codigo)
on delete no action
on update no action;
-- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Inserts:
insert into cliente(cli_nome, cli_endereco) value ('Erlon','rua A');
insert into estados(est_nome) value ('SERGIPE');
INSERT INTO cidade (cid_nome, cid_fk_estado) VALUES ('Salvador', 1);
INSERT INTO cidade (cid_nome, cid_fk_estado) VALUES ('Feira de Santana', 1);
insert into departamentos(dep_nome) value('Alimentos'),('Limpeza');
insert into unidade_medida(uni_nome) value('KG'),('LT'),('UN'),('MT');
insert into produtos(prod_nome,prod_preco,prod_unidade_medida,prod_cod_barras,prod_departamento,prod_estoque)
value('Arroz Tio João',6.99,1,'7896352141',1,50);
select * from departamento;
select * from produtos
inner join departamentos on (dep_codigo = prod_departamento);
update cliente
set cli_fk_cidade_codigo = 1
where cli_codigo = 1;
select * from cliente;
-- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Functions:
DELIMITER $$
CREATE FUNCTION qt_cidades(estados VARCHAR(50))
RETURNS INT
BEGIN
DECLARE num_cidades INT;
SELECT COUNT(*) INTO num_cidades FROM cidade
INNER JOIN estados ON (est_codigo = cid_fk_estado)
WHERE est_nome = estados;
RETURN num_cidades;
END$$
DELIMITER ;
SELECT qt_cidades('Sergipe');
SELECT qt_cidades('Bahia');