You are on page 1of 10

USE [Halita] GO CREATE TABLE [dbo].

[teste10]( [codigo] [int] IDENTITY(100,1) NOT NULL, [nome] [nchar](10) NULL, [valor] int NULL, ) CREATE TABLE [dbo].[teste7]( [codigo] [int] IDENTITY(100,1) NOT NULL, [nome] [nchar](10) NULL CONSTRAINT unique7 unique ) --Tabelas temporrias Create table #TabelaSeSimples ( cod int primary key, nome varchar(100)null ) Create table ##TabelaSeGlobal ( cod int primary key not null, nome varchar(100)null ) --Regras CREATE TABLE [dbo].[Tab_Regras]( [codigo] [int] IDENTITY(100,1) NOT NULL, [nome] [nchar](10) NULL, valor money NULL) create rule id_chk as @id between 0 and 1000; sp_bindrule id_chk, 'Tab_Regras.valor'; --Sinonimos pesquisar - igual a "alias" - apelidos Declare @v1 int set @v1 = 0 while @v1 < 10 begin select @v1 = (@v1 + 1) select @v1 as Linha end create procedure parmSimples @idParm int as select codigo, nome from produto where codigo = @idparm go exec parmSimples @idparm = 202 --Funes: select suser_name() select x = substring('abcdefghijlm',2,3)--bcd select raiz = sqrt(49)--7 SELECT LEN(nome) FROM produto -- conta string select mid(nome,1,1) from produto

select hoje = convert(char(10),getdate(),103)--15/05/2012 - data da consulta select data = month('08/01/2007')--08 select data = year('08/01/2007')--2007 select data = day('08/01/2007')--1 SELECT DATEDIFF(day,'2012-01-29','2012-01-30') AS DiffDate --Diferena de 1 dia entre as datas select select select select select select data data data data data data = = = = = = CONVERT(VARCHAR(19),GETDATE()) CONVERT(VARCHAR(10),GETDATE(),10) CONVERT(VARCHAR(10),GETDATE(),110) CONVERT(VARCHAR(11),GETDATE(),6) CONVERT(VARCHAR(11),GETDATE(),106) CONVERT(VARCHAR(24),GETDATE(),113)

--Estudar DATEADD(datepart,number,date) - Soma 6 dias apos o dia de HOJE SELECT DATEADD(day,6,getdate()) AS OrderPayDate select DATEPART(yyyy,getdate()) --Pega ano select DATEPART(mm,getdate())--Pega mes select DATEPART(dd,getdate())--Pega dia SELECT GETDATE() AS CurrentDateTime --Dia e Hora declare @v datetime set @v = getdate() select @v --Verificar como usar ******* SELECT now() -- Estdar SELECT CURDATE() SELECT CURTIME() select mid(nome,1,1) from produto SELECT LOWER(nome) FROM produto SELECT UPPER(nome) FROM produto

SELECT AVG(valor) AS o FROM teste10 -- Calcula a media do campo informado SELECT COUNT(*) FROM produto -- contato total de linhas SELECT max(valor) FROM teste10 -- maximo SELECT min(valor) FROM teste10 --minimo SELECT sum(valor) FROM teste10 --soma SELECT nome, SUM(valor) FROM teste10 GROUP BY nome --Faz a soma dos valores agrupando por nome, Ex: soma todos os harison, depois soma todos os pereiras, depois soma todos os bila SELECT nome, SUM(valor) FROM teste10 GROUP BY nome HAVING SUM(valor)<20 -Soma todos os valores agrupando pelo nome com a condio(having de todos os valores serem menores de 20)

SELECT nome, SUM(valor) as Valor FROM teste10 GROUP BY nome order by nome asc --Soma todos os valores agrupando pleo nome, ordenando de forma acendente pelo nome SELECT nome, SUM(valor) as Valor FROM teste10 GROUP BY nome order by nome desc --Soma todos os valores agrupando pleo nome, ordenando de forma descendente pelo nome --****verificar SELECT FIRST(valor) FROM teste10 SELECT last(valor) FROM teste10 --****verificar SELECT (Now(),'YYYY-MM-DD') as PerDate SELECT ROUND(column_name,decimals) FROM table_name SELECT left(nome,3) FROM produto --Pega os 3 primeiros SELECT right(nome,3) FROM produto --Pega os 3 ultimos SELECT ltrim(nome) FROM produto --Tira espaos a esquerda SELECT rtrim(nome) FROM produto --Tira espaos a direita SELECT replace(nome,'a','#') FROM produto --String completa, string a procurar, string a substituir SELECT replicate(nome,'2') FROM produto --Repete a string conforme a quantidade especificada no paremetroex: 2 --SELECT replicate(Ltrim(rtrim(nome)),'2') FROM produto SELECT SUBSTRING(nome,0,6) FROM produto --Retorna a string conforme o parametro inicia + a quantidade de caracteres. Ex: 0 inicial at 6 caracteres, da string do primeiro parametro SELECT power(valor,2) FROM teste10 -- elevado a potencia do valor passado como segundo parmetro: SELECT nome FROM produto WHERE nome <> 'harison' --Seleciona todos os nomes diferente de 'Harison' SELECT top 5 nome, valor FROM teste10 --seleciona os 10 primeiros

SELECT DISTINCT nome, valor FROM teste10 --Distinct- pega apenas um valor, neste caso pegou o menor SELECT nome, valor FROM teste10 --Comparativo a distinct SELECT nome FROM teste10 WHERE nome <> 'harison' -- Seleciona todos os nomes diferentes de 'Harison' SELECT nome, valor FROM teste10 ORDER BY nome ASC --Seleciona todos os nomes e valores ordenando por nome em acendencia -Menor para maior SELECT nome, valor FROM teste10 ORDER BY nome DESC--Seleciona todos os nomes e valores ordenando por nome em descdencia - Maior para menor INSERT INTO produto VALUES ('insert') --Insert na tabela produto UPDATE produto SET nome = 'Update' WHERE codigo = 414

SELECT nome FROM produto WHERE nome LIKE 'h%'--Seleciona todos os nomes que comece com a letra 'h' SELECT nome FROM produto WHERE nome LIKE '%n '--Seleciona todos os nomes que termine com a letra 'n' - Cuidado com os espaos no final SELECT nome FROM produto WHERE nome LIKE '%il%'--Seleciona todos os nomes que tem as letras il, tanto no meio como no inicio, como no fim SELECT nome FROM produto WHERE nome LIKE '[hb]%'--Nomes Iniciados com a letra H ou B SELECT nome FROM produto WHERE nome LIKE 'h[^a]%'--nomes iniciados com a letra h, que no contem a letra a na segunda posio SELECT * todos os SELECT * todos os FROM produto WHERE nome IN ('harison','pereira')--Seleciona nomes que contenha FROM produto WHERE nome not IN ('harison','pereira')--Seleciona nomes que NO contenha

SELECT codigo FROM produto WHERE codigo BETWEEN 100 AND 400 --Seleciona todos dos os codigos de 100 ate 400 SELECT codigo FROM produto WHERE codigo not BETWEEN 100 AND 400 --No Seleciona todos dos os codigos de 100 ate 400 SELECT nome FROM produto AS alias_name SELECT nome FROM produto WHERE nome != 'harison' SELECT nome FROM produto WHERE nome <> 'harison' SELECT nome FROM produto WHERE nome is not null --No Nullo SELECT nome FROM produto WHERE nome is null -- nulo SELECT nome FROM produto WHERE not exists(select nome from teste10)-Seleciona todos os nomes quando existir na sub consulta SELECT nome FROM produto WHERE exists(select nome from teste10)-- No Seleciona os nomes quando existir na sub consulta SELECT nome, codigo FROM produto WHERE codigo = 102 AND CONTAINS(nome, 'har') --****Verificar ANY, SOME, ALL SELECT valor FROM teste10 WHERE valor > 10 and valor > 5 SELECT valor FROM teste10 WHERE valor > all(10,5) --No tem preferencia, apresenta todas as linhas que encaixarem na condio select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from contato as c

inner join funcionario as f on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome --Preferencia Maior para tabela da esquerda, tabela de cima --Apresenta todas as linhas da tabela esquerda, tabela de cima, mesmo que no comparando com nada. select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from contato as c left join funcionario as f on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome --Preferencia Maior para tabela da direira, tabela debaixo --Apresenta todas as linhas da tabela direira, tabela debaixo, mesmo que no comparando com nada. select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from contato as c right join funcionario as f on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome --No tem Preferencia --Apresenta todas as linhas da tabela direira, como da tabela da esquerda, mesmo que no tendo com o que comparar. select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from contato as c full join funcionario as f on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome --Menos nivel de comparao select c.contatoid, f.funcionarioNome, from funcionario as f inner join contato as c on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome select * from contato select * from funcionario --Where sempre depois do ON select c.contatoid, f.funcionarioNome, from funcionario as f inner join contato as c on c.contatoid = f.funcionarioid where c.cidade = 'Itapevi' order by f.funcionarioSobreNome --Varios Joins com Wuere select c.contatoid, f.funcionarioNome, from funcionario as f inner join contato as c on c.contatoid = f.funcionarioid inner join mercadoria as m on c.contatoid = m.mercadoriaid where c.cidade = 'Itapevi' f.funcionarioSobrenome f.funcionarioSobrenome

f.funcionarioSobrenome

order by f.funcionarioSobreNome --Mesma regra select c.contatoid, f.funcionarioNome, from funcionario as f full outer join contato as c on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome select c.contatoid, f.funcionarioNome, from funcionario as f right outer join contato as c on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome select c.contatoid, f.funcionarioNome, from funcionario as f left outer join contato as c on c.contatoid = f.funcionarioid order by f.funcionarioSobreNome f.funcionarioSobrenome

f.funcionarioSobrenome

f.funcionarioSobrenome

---Cross Join Pega tudo, tudo junto, tudo misturado, sem condio select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as f cross join contato as c order by f.funcionarioSobreNome /* Selecina todos as linhas Para usar o UNION necessario: -Tipos de dados semelhantes -O mesmo Numero de Colunas -Mesma ordem de colunas na lista de seleo de cada consulta -Excluir resultados duplicados */ Select funcionarioid, funcionarioNome from funcionario union select contatoid, contatoNome from contato --Com resultados duplicados Select funcionarioid, funcionarioNome from funcionario union all select contatoid, contatoNome from contato /* Diferena de valores entre as consultas Para usar o excep necessario: -Tipos de dados semelhantes -O mesmo Numero de Colunas -Mesma ordem de colunas na lista de seleo de cada consulta -Excluir resultados duplicados */ Select funcionarioid, funcionarioNome from funcionario except select contatoid, contatoNome from contato /* Selciona osvalores iguais entre as consultas Para usar o intersect necessario:

-Tipos de dados semelhantes -O mesmo Numero de Colunas -Mesma ordem de colunas na lista de seleo de cada consulta -Excluir resultados duplicados */ Select funcionarioid, funcionarioNome from funcionario intersect select contatoid, contatoNome from contato Select count(*) from funcionario --5 Linhas Select * from funcionario TABLESAMPLE System(30 percent); Select * from funcionario TABLESAMPLE System(3 ROWS); --Subquerys select funcionarioid, funcionarionome from funcionario where funcionarioid = (select count(*) from funcionario)--exemplos ilustrativo - pegar o ultimos funcionario select top 1 funcionarioid, funcionarionome from funcionario order by funcionarioid desc --outra forma select funcionarioid, funcionarionome, (select sum(mercadoriapreo) from mercadoria) as [Valor das Mercadorias] from funcionario --Pega todos os funcionarios que tiverem o mesmo codido da mercadoria select funcionarioid, funcionarionome from funcionario where funcionarioid in (select mercadoriaid from mercadoria) --ESTUDAR select funcionarioid, funcionarionome from funcionario funcionarioid >= any (select contatoid from contato) select funcionarioid, funcionarionome from funcionario funcionarioid >= some (select contatoid from contato) select funcionarioid, funcionarionome from funcionario funcionarioid = any (select contatoid from contato) select funcionarioid, funcionarionome from funcionario funcionarioid in(select count(*) from contato) where where where where

--Correlacionada select funcionarioid, funcionarionome from funcionario f1 where funcionarioid = (select Mercadoriaid from mercadoria m where m.Mercadoriaid = f1.funcionarioid ) --Funciona como TRUE ou Falso - NOT EXISTS ou EXISTS - Se a query tiver resultado(exists) retorna valor true, seleciona a 1 query, se o resultado for false, no imprime nada. select funcionarioid, funcionarionome from funcionario where not exists(select contatonome from contato where contatonome = '') select funcionarioid, funcionarionome from funcionario where exists(select contatonome from contato) select funcionarioid, funcionarionome from funcionario where not exists(select contatonome from contato)

select funcionarioid, funcionarionome from funcionario where exists(select contatonome from contato) --Prametros - Procedure with procPar(contagem, nome) as ( select count(*)as contagem, funcionarioNome as Nome from funcionario group by funcionarioNome ) select contagem, nome from procpar order by nome asc begin transaction commit transaction rollback transaction --Inserindo varias linhas da tabela insert cliente select ClienteNome, ClienteConta from cliente --Inserindo quanquer valor de retorno do select em uma tabela temporaria. select * into #NovaTabela from mercadoria select * from #NovaTabela insert top (10) into cliente select ClienteNome, ClienteConta from cliente where ClienteNome = 'Harison' select * from cliente --select count(*)from cliente where clienteNome = 'roany' --DELETE top (60) from cliente where clienteNome = 'roany' --select count(*)from cliente where clienteNome = 'harison' --DELETE top (3) from cliente where clienteNome = 'harison' -- Fiz o count, resultado 74, quero apagar apenas 70, select count(*)from cliente -- Inserindo apenas duas linhas com essa condio insert top (2) into cliente select ClienteNome, ClienteConta from cliente where ClienteNome = 'Harison' /**truncate table - Excluir todos as linhas da tabela sem where Begin transaction Truncate TABLE cliente select * from cliente rollback transaction */ select * from cliente update cliente set clienteNome = 'Harison' where clienteId = 3 update top (1) cliente set clienteNome = 'Pereira' where clienteId > 1 and clienteId < 4 --Criando View - Tabela temporaria para apresentar os dados de varias consultas if object_id('testandoView','V')is not null drop view testandoView;

create view testandoView2 --with encryption as select c.contatoid, f.funcionarioNome, from funcionario as f inner join contato as c on c.contatoid = f.funcionarioid where c.cidade = 'Itapevi' --order by f.funcionarioSobreNome --select * from testandoView select * from testandoView2

f.funcionarioSobrenome

--Procedures alter procedure teste1 @FuncionarioName nvarchar(50), @FuncionarioSobreNome nvarchar(50) as select * from funcionario where FuncionarioNome = @FuncionarioName; exec teste1 @FuncionarioName = 'harison', @FuncionarioSobreNome ='carvalho'; --Procedure com retorno alter procedure teste1 @mercadoriaNome nvarchar(50), @mercadoriaValorRevenda money output as set @mercadoriaValorRevenda = (select mercadoriaValorRevenda from mercadoria where MercadoriaNome = @MercadoriaNome); declare @mercadoriaNome nvarchar(50), @mercadoriaValorRevenda money set @mercadoriaNome = 'lapis' exec teste1 @mercadoriaNome,@mercadoriaValorRevenda output; --select @mercadoriaValorRevenda if @mercadoriaValorRevenda <> 0 begin set @mercadoriaValorRevenda = @mercadoriaValorRevenda (@mercadoriaValorRevenda * 0.20) print 'Valor com Desconto - ' print @mercadoriaValorRevenda end else --print 'falso' select * from mercadoria --Procedures alter procedure teste1 @FuncionarioName nvarchar(50), @FuncionarioSobreNome nvarchar(50)

as select * from funcionario where FuncionarioNome = @FuncionarioName; exec teste1 @FuncionarioName = 'harison', @FuncionarioSobreNome ='carvalho';

--Funcao --verificar alter function exemploFuncaoRetorno(@mercadoriaid int)returns int as begin Declare @ret int; set @ret = (select MercadoriaPreo from mercadoria where mercadoriaid = @mercadoriaid); if(@ret is not null) return @ret else set @ret = 1 return @ret end declare @mercadoriaid int set @mercadoriaid = 2 select exemploFuncaoRetorno()as valor select * from mercadoria --Funcao de date alter function data(@data datetime) returns int as begin return datepart(weekday, @data) end; select data('2002/02/01') as Data --Trigger alter Trigger ModificaTabela on cliente after insert as raiserror('ddd',16,10) insert into cliente(clienteNome, clienteConta) values ('H10',10) select * from cliente

You might also like