Olá pessoal, boa tarde…
Após um domingo de fortes chuvas aqui na região de São Roque, hoje segunda-feira uma linda tarde, com temperatura agradável e um lindo céu azul.
Seja bem-vindo, em mais um post da sessão Short Scripts, o primeiro post desta sessão em 2023 e o de número 47 em seu total.
Mantendo a tradição estou retornando com mais um conjunto dos “curtos ou pequenos” scripts catalogados e armazenados em minha biblioteca pessoal de códigos relacionados ao Microsoft SQL Server e sua fantástica linguagem de desenvolvimento Transact-SQL.
Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, vou pagar a minha mais uma vez hoje, feita no encerramento do post anterior publicado no mês de setembro de 2022, se por acaso você ainda não acessou o mesmo, calma, fique tranquilo, tudo vai dar certo, no encerramento deste post você terá a sua disposição a relação das últimas cinco publicações relacionadas aos Short Scripts.
Vamos caminhar mais um pouco então……..
O post de hoje
Para este post, vou compartilhar um conjunto diversificado de scripts que foram catalogados nos últimos meses, que podem ser implementados em diferentes ambientes banco de dados no Microsoft SQL Server.
Os exemplos de código aqui compartilhados se relacionam com os seguintes assuntos:
● Cláusula Default Values,
● Cláusula Having,
● Comando Begin Transaction,
● Comando Commit,
● Comando Create Database,
● Comando Create Table,
● Comando Group By,
● Comando Group By Grouping Sets,
● Comando Insert,
● Comando Order By,
● Comando Order By OffSet,
● Comando Order By OffSet Fecth First,
● Comando Order By OffSet Fecth Next,
● Comando Rollback,
● Comando Select,
● Comando Select Values,
● Comando Top,
● Comando Top Percent,
● Comando Use,
● Função de Agregação Count(),
● Função de Agregação Max(),
● Função de Agregação Min(),
● Função de Sistema System_User(),
● Operador de busca aproximada Like,
● Operador lógico condicional Between,
● Operador lógico condicional In,
● Operador lógico condicional Not In,
● Variável de Sistema @@SPID, e
● Visão de Gerenciamento Dinâmico sys.dm_exec_sessions.
Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Fevereiro 2023.
Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, tenha todo cuidado possível para evitar maiores problemas.
Fique à vontade para compartilhar, comentar e melhorar cada um destes códigos.
Short Scripts
-- Short Script 1 - Obtendo informações sobre as sessões em execução --
Select @@SPID As 'System Process', -- variável de sistema
SYSTEM_USER As 'Login Name',
User As 'User Name'
Go
-- Short Script 2 - Consultando a visão de sistema sys.dm_exec_sessions para obter informações sobre as sessões --
Select Top 5 -- Determinar a quantidade de linhas a serem apresentadas em tela
session_id As 'Id',
login_name As 'Nome do Login',
login_time As 'Hora de Acesso',
program_name As 'Programa utilizado',
status As 'Status da Sessão',
language As 'Linguagem do Login ou Usuário'
From sys.dm_exec_sessions
Order By login_time Desc -- Ordenando os dados em ordem decrescente através da coluna login_time
Go
-- Short Scripts 3 - Trabalhando com blocos de transação --
-- Brincando com Transações --
Create Table TabelaValoresPadroes
(Codigo BigInt Identity(2,2),
Texto Varchar(Max) Default 'Este é um teste de escrita',
Data DateTime2 Default GetDate()+5)
Go
-- Inserindo uma massa de dados na TabelaValoresPadroes --
Insert Into TabelaValoresPadroes Default Values -- Especificando valores padrões
Go 10000
-- Consultando 10% do volume de linhas inseridas --
Select Top 10 Percent Codigo, Texto, Data From TabelaValoresPadroes
Order By Codigo Desc
Go
-- Manipular transações --
-- Abrindo um bloco de Transação --
Begin Transaction Tran1
Delete From TabelaValoresPadroes
Where Codigo >=1200 And Codigo <=3200
Go
-- Consultando a faixa de dados removida anteriormente --
Select Codigo, Texto, Data From TabelaValoresPadroes
Where Codigo >=1200 And Codigo <=3200
Go
-- Abrir uma nova query --
-- Desfazendo a operação de Delete --
Rollback Transaction Tran1
Go
-- Confirmando a operação da Transação Tran1 --
Commit Transaction Tran1
Go
-- Short Script 4 - Ordenando valores inteiro em Ordem Decrescente --
Select Numeros From (Values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) As Valores (Numeros)
Order By Numeros Desc
Go
-- Short Script 5 - Ordenando Valores caracteres em Ordem Crescente através de Codigo, apresentando somente as duas primeiras linhas de registro --
Select Codigo As 'Código', Descricao As 'Descrição'
From (Values (1,'Arroz'),(2,'Feijão'),(3,'Bolacha'),
(4,'Fruta'),(5,'Legumes'),(6,'Molho')) As Produtos (Codigo, Descricao)
Order By Codigo Asc
OffSet 0 Rows -- Estabelece o novo conjunto de linhas ou posição inicial --
Fetch First 2 Rows Only -- Determina a quantidade de linhas retornadas em tela logo após posição inicial definida --
Go
-- Short Script 6 - Ordenando Valores caracteres em Ordem Crescente através de Codigo, apresentando as linhas a partir do segundo registro --
Select Codigo, Descricao From (Values (1,'Arroz'),(2,'Feijão'),(3,'Bolacha'),
(4,'Fruta'),(5,'Legumes'),(6,'Molho')) As Produtos (Codigo, Descricao)
Order By Codigo Asc
OffSet 1 Row -- Estabelece o novo conjunto de linhas ou posição inicial --
Go
-- Short Script 7 - Realizando agrupamento de dados subgrupos através do cláusula Grouping Sets --
-- Criando a Tabela OrdemProducao --
Create Table OrdemProducao
(NumProducao Int Not Null,
Data Date Not Null,
CodFuncionario Int Not Null,
Setor Varchar(2) Not Null,
Quantidade Int Not Null
)
Go
-- Adicionando Chave Primária na Tabela OrdemProducao --
Alter Table OrdemProducao
Add Constraint [PK_OrdemProducao_NumProducao] Primary Key Clustered (NumProducao)
Go
-- Inserindo dados na Tabela OrdemProducao --
Insert Into OrdemProducao (NumProducao, Data, CodFuncionario, Setor, Quantidade)
Values
(1000, '20091001',1,'A',20),
(1001, '20091002',2,'B',30),
(1002, '20091003',3,'D',15),
(1003, '20091005',2,'D',12),
(2000, '20100210',4,'C',40),
(2001, '20100211',4,'C',35),
(2002, '20100312',2,'A',22),
(2004, '20100414',2,'B',12),
(3005, '20110601',1,'C',50),
(3006, '20110602',3,'B',60)
Go
Insert Into OrdemProducao (NumProducao, Data, CodFuncionario, Setor, Quantidade)
Values
(10000, '20091001',1,'A',20),
(10001, '20091002',2,'B',30),
(10002, '20091003',3,'D',15),
(10003, '20091005',2,'D',12),
(20000, '20100210',4,'C',40),
(20001, '20100211',4,'C',35),
(20002, '20100312',2,'A',22),
(20004, '20100414',2,'B',12),
(30005, '20110601',1,'C',50),
(30006, '20110602',3,'B',60)
Go
-- Aplicando o Grouping Sets (Setor, CodFuncionario e AnoProducao) na Tabela OrdemProducao --
Select Setor, CodFuncionario, YEAR(Data) As 'Ano de Produção', SUM(Quantidade) As Soma
from dbo.OrdemProducao
Group By GROUPING Sets
(
(Setor, CodFuncionario, YEAR(DATA))
)
Go
-- Aplicando o Grouping Sets (Setor, CodFuncionario e AnoProducao + AnoProd) na Tabela OrdemProducao --
Select Setor, CodFuncionario, YEAR(Data) As 'Ano de Produção', SUM(Quantidade) As Soma
from dbo.OrdemProducao
Group By GROUPING Sets
(
(Setor, CodFuncionario, YEAR(DATA)),
(YEAR(Data))
)
Go
Muito bem, missão mais que cumprida!
Uma super e especial relação de short scripts acaba de ser compartilhada, mesmo sendo denominados shorts entre aspas “curtos ou pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.
Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.
Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.
Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.
Links
Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:
Agradecimento
Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença, desejo e espero que você possa ter encontrado algo que lhe ajudou.
Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no próximo post.
Tenha uma ótima semana.
Abraços.