Oi! Seja bem-vindo!
Como incluir dados de teste no SQL? Hoje estudaremos uma excelente técnica para fazer esse tipo de tarefa que ajuda muito com seus testes de performance e funcionalidade de quaisquer aplicativos que você esteja gerenciando!
Como incluir dados de teste no SQL Server
Desde o último artigo, quando falei sobre como gerar dados aleatórios, recebi pedidos para exemplificar como incluir dados de teste no SQL na prática. Então fiz esse vídeo mostrando a você um script bem legal que já utilizo a anos para essa finalidade. Veja abaixo:
------------------------------------------------------- -- Como incluir dados de teste no SQL Server ------------------------------------------------------- use master if db_id('curso') is not null drop database curso go create database curso go use curso go create table produtos ( id smallint not null identity(1,1) constraint pk_produtos primary key, nm varchar(100), vl numeric(10,2) ) insert into produtos (nm, vl) values ('Mouse Gammer 25 botões', 200), ('Teclado Gammer 350 teclas', 300), ('Monitor 32 Pol Full HD', 700), ('HD SSD 1TB', 1800) create table clientes ( id smallint not null identity(1,1) constraint pk_clientes primary key, nm varchar(100) not null ) insert into clientes (nm) values ('Ari Tuba'), ('Dolores Fortes'), ('José João Maria Antunes'), ('Souza da Silva') create table vendas ( id int not null identity(1, 1) constraint pk_vendas primary key, dt date not null, id_produto smallint not null constraint fk_vendas_produtos foreign key references produtos(id), id_cliente smallint null constraint fk_vendas_clientes foreign key references clientes(id), qt int constraint ck_vendas_qt check (qt > 0), vl_unitario numeric (10,2), vl_venda as qt * vl_unitario ) -- CTE recursiva: Incluir 100 vendas aleatoriamente ;with cte_seq as ( select 1 as nr_cont union all select nr_cont + 1 from cte_seq where nr_cont < 100 ) insert into vendas (dt, id_produto, id_cliente, qt, vl_unitario) select dateadd(day, -(abs(checksum(newid())) % 3651), getdate()), -- data aleatória nos últimos 10 anos produto.id, clientes.id, 1 + (abs(checksum(newid())) % 15) nr_quantidade, -- quantidade aleatória de 1 a 15 produto.vl vl_unitario from cte_seq left join (select top 1 id, vl from produtos order by newid()) produto on 1=1 -- produto aleatório left join (select top 1 id from clientes order by newid()) clientes on 1=1 -- cliente aleatório option (maxrecursion 0) select * from vendas -- Limpar dados de teste: drop table vendas, produtos, clientes use master drop database curso
CONCLUSÃO
Não sei porque gosto tanto de CTE (common table expression) para fazer esse tipo de coisa… Sempre que uso esse script acho tão legal… 🙂 Que besta né… pareço criança que acabou de ganhar um brinquedo kkkkkkkk
Espero que tenha gostado do artigo, nos vemos no próximo!
Abraço do seu amigo Josué