resumo sql
TRANSCRIPT
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 temporriasCreate table #TabelaSeSimples(cod int primary key, nome varchar(100)null)Create table ##TabelaSeGlobal(cod int primary key not null,nome varchar(100)null)--RegrasCREATE 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 intset @v1 = 0while @v1 < 10begin select @v1 = (@v1 + 1)select @v1 as Linhaend
create procedure parmSimples @idParm intasselect codigo, nome from produto where codigo = @idparmgo
exec parmSimples @idparm = 202
--Funes:select suser_name()select x = substring('abcdefghijlm',2,3)--bcdselect raiz = sqrt(49)--7SELECT 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 consultaselect data = month('08/01/2007')--08select data = year('08/01/2007')--2007select data = day('08/01/2007')--1SELECT DATEDIFF(day,'2012-01-29','2012-01-30') AS DiffDate --Diferena de 1 dia entre as datas
select data = CONVERT(VARCHAR(19),GETDATE())select data = CONVERT(VARCHAR(10),GETDATE(),10)select data = CONVERT(VARCHAR(10),GETDATE(),110)select data = CONVERT(VARCHAR(11),GETDATE(),6)select data = CONVERT(VARCHAR(11),GETDATE(),106)select data = CONVERT(VARCHAR(24),GETDATE(),113)
--Estudar DATEADD(datepart,number,date) - Soma 6 dias apos o dia de HOJESELECT DATEADD(day,6,getdate()) AS OrderPayDate
select DATEPART(yyyy,getdate()) --Pega anoselect DATEPART(mm,getdate())--Pega messelect 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() -- EstdarSELECT CURDATE()SELECT CURTIME()select mid(nome,1,1) from produto
SELECT LOWER(nome) FROM produtoSELECT UPPER(nome) FROM produto
SELECT AVG(valor) AS o FROM teste10 -- Calcula a media do campo informadoSELECT COUNT(*) FROM produto -- contato total de linhas
SELECT max(valor) FROM teste10 -- maximoSELECT min(valor) FROM teste10 --minimoSELECT sum(valor) FROM teste10 --soma
SELECT nome, SUM(valor) FROM teste10GROUP 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) 10 and valor > 5
SELECT valor FROM teste10WHERE valor > all(10,5)
--No tem preferencia, apresenta todas as linhas que encaixarem na condioselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from contato as cinner join funcionario as fon c.contatoid = f.funcionarioidorder 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 cleft join funcionario as fon c.contatoid = f.funcionarioidorder 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 cright join funcionario as fon c.contatoid = f.funcionarioidorder 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 cfull join funcionario as fon c.contatoid = f.funcionarioidorder by f.funcionarioSobreNome
--Menos nivel de comparaoselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as finner join contato as con c.contatoid = f.funcionarioidorder by f.funcionarioSobreNome
select * from contatoselect * from funcionario
--Where sempre depois do ONselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as finner join contato as con c.contatoid = f.funcionarioidwhere c.cidade = 'Itapevi'order by f.funcionarioSobreNome
--Varios Joins com Wuereselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as finner join contato as con c.contatoid = f.funcionarioidinner join mercadoria as mon c.contatoid = m.mercadoriaidwhere c.cidade = 'Itapevi'order by f.funcionarioSobreNome
--Mesma regraselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as ffull outer join contato as con c.contatoid = f.funcionarioidorder by f.funcionarioSobreNome
select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as fright outer join contato as con c.contatoid = f.funcionarioidorder by f.funcionarioSobreNome
select c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as fleft outer join contato as con c.contatoid = f.funcionarioidorder by f.funcionarioSobreNome
---Cross Join Pega tudo, tudo junto, tudo misturado, sem condioselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as fcross join contato as corder by f.funcionarioSobreNome
/* Selecina todos as linhasPara 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 funcionariounionselect contatoid, contatoNome from contato
--Com resultados duplicadosSelect funcionarioid, funcionarioNome from funcionariounion all select contatoid, contatoNome from contato
/* Diferena de valores entre as consultasPara 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 funcionarioexceptselect contatoid, contatoNome from contato
/* Selciona osvalores iguais entre as consultasPara 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 funcionariointersectselect contatoid, contatoNome from contato
Select count(*) from funcionario --5 LinhasSelect * 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 funcionarioselect 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 mercadoriaselect funcionarioid, funcionarionome from funcionario where funcionarioid in (select mercadoriaid from mercadoria)
--ESTUDARselect funcionarioid, funcionarionome from funcionario where funcionarioid >= any (select contatoid from contato) select funcionarioid, funcionarionome from funcionario where funcionarioid >= some (select contatoid from contato)select funcionarioid, funcionarionome from funcionario where funcionarioid = any (select contatoid from contato) select funcionarioid, funcionarionome from funcionario where funcionarioid in(select count(*) from contato)
--Correlacionadaselect 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 - Procedurewith 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 transactioncommit transactionrollback transaction
--Inserindo varias linhas da tabelainsert cliente select ClienteNome, ClienteConta from cliente
--Inserindo quanquer valor de retorno do select em uma tabela temporaria.select * into #NovaTabela from mercadoriaselect * 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 condioinsert top (2) into cliente select ClienteNome, ClienteConta from cliente where ClienteNome = 'Harison'
/**truncate table - Excluir todos as linhas da tabela sem where Begin transactionTruncate TABLE clienteselect * from clienterollback transaction*/
select * from clienteupdate cliente set clienteNome = 'Harison' where clienteId = 3update 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 nulldrop view testandoView;
create view testandoView2--with encryptionasselect c.contatoid, f.funcionarioNome, f.funcionarioSobrenome from funcionario as finner join contato as con c.contatoid = f.funcionarioidwhere c.cidade = 'Itapevi'--order by f.funcionarioSobreNome
--select * from testandoViewselect * from testandoView2
--Proceduresalter procedure teste1@FuncionarioName nvarchar(50),@FuncionarioSobreNome nvarchar(50)asselect * from funcionario where FuncionarioNome = @FuncionarioName;
exec teste1 @FuncionarioName = 'harison', @FuncionarioSobreNome ='carvalho';
--Procedure com retornoalter procedure teste1@mercadoriaNome nvarchar(50),@mercadoriaValorRevenda money outputasset @mercadoriaValorRevenda = (select mercadoriaValorRevenda from mercadoria where MercadoriaNome = @MercadoriaNome);
declare @mercadoriaNome nvarchar(50), @mercadoriaValorRevenda moneyset @mercadoriaNome = 'lapis'exec teste1 @mercadoriaNome,@mercadoriaValorRevenda output;
--select @mercadoriaValorRevenda
if @mercadoriaValorRevenda 0begin
set @mercadoriaValorRevenda = @mercadoriaValorRevenda - (@mercadoriaValorRevenda * 0.20)print 'Valor com Desconto - 'print @mercadoriaValorRevenda endelse--print 'falso'select * from mercadoria
--Proceduresalter procedure teste1@FuncionarioName nvarchar(50),@FuncionarioSobreNome nvarchar(50)asselect * from funcionario where FuncionarioNome = @FuncionarioName;
exec teste1 @FuncionarioName = 'harison', @FuncionarioSobreNome ='carvalho';
--Funcao--verificaralter function exemploFuncaoRetorno(@mercadoriaid int)returns int asbegin Declare @ret int;set @ret = (select MercadoriaPreo from mercadoria where mercadoriaid = @mercadoriaid);if(@ret is not null)return @retelseset @ret = 1return @ret end
declare @mercadoriaid intset @mercadoriaid = 2
select exemploFuncaoRetorno()as valor
select * from mercadoria --Funcao de datealter function data(@data datetime) returns int asbegin return datepart(weekday, @data)end;
select data('2002/02/01') as Data
--Trigger
alter Trigger ModificaTabela on clienteafter insertasraiserror('ddd',16,10)
insert into cliente(clienteNome, clienteConta) values ('H10',10)
select * from cliente