José Antônio da Cunha •29/06/2017 •José Antônio - CEFET-RN Copyright 1996-99 © Dale Carnegie & Associates, Inc. •1 Crie a tabela: TipoCli CREATE Editora GO Use Editora Go Create table TipoCli ( Cod_Tipo int Not Null primary key, Nome_Tipo Varchar(100) Not Null Unique) •29/06/2017 •José Antônio - CEFET-RN •2 Inclua os seguintes tipos: Tipo de cliente 1 2 3 4 •29/06/2017 •José Antônio - CEFET-RN Descrição Diamante Ouro Preferencial Especial •3 Crie a tabela: Cliente Create Table Cliente ( Cod_Cli int IDENTITY Not Null, Tipo_Cli int Not Null, Nome_Cli Varchar(100) Not Null, Sexo_Cli char(01) Not Null Constraint df_cli1 Default ‘F’, Renda_Cli decimal(12,2) Not Null Constraint df_cli2 Default 0, RG_Cli char(12), Constraint pk_Cli Primary Key (Cod_Cli), Constraint fk_Cli Foreign Key (Tipo_Cli) references TipoCli(Cod_Tipo), Constraint ch_Cli1 Check(Sexo_Cli IN (‘F’, ‘M’)), Constraint ch_Cli2 Check(Renda_Cli >=0)) •29/06/2017 •José Antônio - CEFET-RN •4 Inclusão de Dados Cod_Cli Cod_Tipo Nome_Cli Sexo_Cli Renda_Cli RG_Cli 1 1 Olga Cristina Silva F 6000 45868253 2 1 João Carlos Dantas M 5000 12345678 3 1 Daniel Souza Leão M 6000 14856969 4 1 Helena Leão F 3500 76556935 5 2 Roberta Cunha F 5500 52368987 6 2 Renata Medeiros F 2500 25896356 •29/06/2017 •José Antônio - CEFET-RN •5 Leitura de Dados •Lendo todas as colunas e todas as linhas SELECT ALL * FROM Cliente Ou SELECT * FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •6 Leitura de Dados •Escolhendo as colunas a serem lidas SELECT ALL Nome_Cli, Renda_Cli FROM Cliente Ou SELECT Nome_Cli, Renda_Cli FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •7 Leitura de Dados •Modificando dados apenas para leitura SELECT Nome_Cli, Renda_Cli, Renda_Cli * 1.1 FROM Cliente •Ao executar este comando, note que a terceira coluna que mostra o resultado da multiplicação ficou sem um título. •29/06/2017 •José Antônio - CEFET-RN •8 Leitura de Dados •Lendo dados usando alias SELECT Nome = Nome_Cli, Renda = Renda_Cli, [10% de aumento] = Renda_Cli * 1.1 FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •9 Leitura de Dados •Lendo dados usando alias SELECT Nome_Cli Renda_Cli AS Nome, AS Renda, Renda_Cli * 1.1 AS [10% aumento] FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •10 Leitura de Dados •Lendo dados usando alias SELECT Nome_Cli Renda_Cli Nome, Renda, Renda_Cli * 1.1 [10% aumento] FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •11 Leitura de Dados •Apresentando dados repetidos apenas uma vez SELECT DISTINCT Tipo_Cli FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •12 Leitura de Dados •Escolhendo as linhas a serem lidas SELECT * FROM Cliente Where Renda_Cli >= 5000 SELECT Nome = Nome_Cli, Renda = Renda_Cli, [10% de aumento] = Renda_Cli * 1.1 FROM Cliente WHERE Renda_Cli >= 5000 •29/06/2017 •José Antônio - CEFET-RN •13 Leitura de Dados •Criando uma tabela permanente com dados de outra tabela. SELECT * INTO ClienteAntigo FROM Cliente SELECT Cod_Cli, Nome_Cli, Renda_Cli INTO ClienteAntigo FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •14 Leitura de Dados •Criando uma tabela permanente com dados de outra tabela. SELECT Cod_Cli, Nome_Cli, Renda_Cli, Renda_Cli * 1.1 as [10% de Aumento] INTO ClienteAntigo FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •15 Leitura de Dados •Criando uma tabela temporária com dados de outra tabela. SELECT * INTO #Cli FROM Cliente SELECT * INTO ##Cli FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •16 Leitura de Dados •Tabelas temporárias - comentários •(#) – uma cerquilha significa que a tabela criada com o comando SELECT INTO poderá ser lida apenas da conexão que a criou. •(##) duas cerquilha significa que a tabela criada com o comando SELECT INTO poderá ser lida de qualquer conexão. •Tanto a tabela temporária local, como a tabela global só existirão enquanto a sessão que as criou estiver aberta. •29/06/2017 •José Antônio - CEFET-RN •17 Alteração dos Dados •Escolhendo as colunas a serem alteradas UPDATE Cliente set Renda_Cli = Renda_Cli * 1.2 FROM Cliente UPDATE Cliente set Renda_Cli = Renda_Cli * 1.2 •29/06/2017 •José Antônio - CEFET-RN •18 Alteração dos Dados •Escolhendo as linhas a serem alteradas UPDATE Cliente set Renda_Cli = Renda_Cli * 1.2 Where Cod_Cli = 1 •29/06/2017 •José Antônio - CEFET-RN •19 Alteração dos Dados •Escolhendo mais de uma colunas de uma vez UPDATE Cliente set Nome_Cli = ‘João Carlos da Silva’, Renda_Cli = Renda_Cli * 1.2 Where Cod_Cli = 2 •29/06/2017 •José Antônio - CEFET-RN •20 Exclusão dos Dados •Excluindo todas as linhas de uma tabela DELETE Cliente Ou DELETE FROM Cliente TRUNCATE TABLE Cliente --Não é registrado no log •29/06/2017 •José Antônio - CEFET-RN •21 Exclusão dos Dados •Escolhendo as linhas a serem excluídas DELETE Cliente Where Cod_Cli = 1 Ou DELETE FROM Cliente Where Cod_Cli = 2 •29/06/2017 •José Antônio - CEFET-RN •22 A cláusula WHERE •É utilizada para restringir as linhas que serão afetadas pelos comandos SELECT, UPDATE e DELETE. Select * FROM Cliente WHERE Cod_Cli = 1 Select * FROM Cliente WHERE Cod_Cli <> 2 Select * FROM Cliente WHERE Cod_Cli !> 2 •29/06/2017 •José Antônio - CEFET-RN •23 A cláusula WHERE •A Cláusula Where com os operadores lógicos •Mostre todos os clientes que têm o Cod_Tipo igual a 1 e uma renda maior ou igual a 6 mil reais. •SELECT * FROM Cliente •Where Cod_Tipo = 1 AND Renda_Cli >= 6000 •29/06/2017 •José Antônio - CEFET-RN •24 A cláusula WHERE •A Cláusula Where com os operadores lógicos •Mostre todos os clientes que têm o Cod_Tipo igual a 1 ou uma renda maior ou igual a 6 mil reais. SELECT * FROM Cliente Where Cod_Tipo = 1 OR Renda_Cli >= 6000 •29/06/2017 •José Antônio - CEFET-RN •25 A cláusula WHERE •A Cláusula Where com os operadores lógicos •Mostre todos os clientes do sexo feminino. Eles devem ser do Tipo 1 ou devem ter uma renda maior ou igual a 6 mil reais. SELECT * FROM Cliente Where Sexo_Cli = ‘F’ AND (Cod_Tipo = 1 OR Renda_Cli >= 6000) •29/06/2017 •José Antônio - CEFET-RN •26 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes começam com qualquer caractere e terminam com a palavra “Leão”. SELECT * FROM Cliente Where Nome_Cli Like ‘%Leão’ •29/06/2017 •José Antônio - CEFET-RN •27 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes contenham, no início, no meio ou no fim, a palavra ‘’Souza”. SELECT * FROM Cliente Where Nome_Cli Like ‘%Souza%”’ •29/06/2017 •José Antônio - CEFET-RN •28 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes não contenham, no início, no meio ou no fim, a palavra ‘’Souza”. SELECT * FROM Cliente Where Nome_Cli Like ‘%[^Souza]%”’ SELECT * FROM Cliente Where Nome_Cli Not Like ‘%Souza%’ •29/06/2017 •José Antônio - CEFET-RN •29 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes apresentam na quinta e sexta posição as letras “el” e termine com qualquer caractere. SELECT * FROM Cliente Where Nome_Cli Like ‘____el%’ •29/06/2017 •José Antônio - CEFET-RN •30 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes apresentam apenas seis letras iniciais. SELECT * FROM Cliente Where Nome_Cli Like ‘______’ •29/06/2017 •José Antônio - CEFET-RN •31 A cláusula WHERE •A Cláusula Where com os operadores “Like” e “Not Like” •Mostre todos os clientes cujos nomes tenham as seguintes características: a primeira letra pode ser qualquer dígito entre “A” e “D” e os outros caracteres podem ser qualquer um. SELECT * FROM Cliente Where Nome_Cli Like ‘[A_D]%’ •29/06/2017 •José Antônio - CEFET-RN •32 A cláusula WHERE •A Cláusula Where com os operadores “Is Null” e “Is Not Null” •Mostre apenas os cliente que não têm RG. SELECT * FROM Cliente Where RG_Cli IS NULL •Mostre apenas os cliente que têm RG. SELECT * FROM Cliente Where RG_Cli IS Not NULL •29/06/2017 •José Antônio - CEFET-RN •33 A cláusula WHERE •A Cláusula Where com os operadores “Between” e “Not Between” •Mostre todos os clientes que tenham uma renda entre 5 e 6 mil reais. SELECT * FROM Cliente Where Renda_Cli >= 5000 And Renda_Cli <= 6000 SELECT * FROM Cliente Where Renda_Cli BETWEEN 5000 And 6000 •29/06/2017 •José Antônio - CEFET-RN •34 A cláusula WHERE •A Cláusula Where com os operadores “Between” e “Not Between” •Mostre todos os clientes que tenham uma renda menor do que 5 ou maior do que 6 mil reais. SELECT * FROM Cliente Where Renda_Cli < 5000 And Renda_Cli > 6000 SELECT * FROM Cliente Where Renda_Cli NOT BETWEEN 5000 And 6000 •29/06/2017 •José Antônio - CEFET-RN •35 Exibindo Dados Ordenados •Order By Asc/Desc •Mostre os dados da tabela cliente, ordenando-os de forma crescente pelo nome dos clientes. SELECT * FROM Cliente Order By Nome_Cli Ou SELECT * FROM Cliente Order By Nome_Cli ASC •29/06/2017 •José Antônio - CEFET-RN •36 Exibindo Dados Ordenados •Order By Asc/Desc •Mostre os dados da tabela cliente, ordenando-os de forma decrescente pelo nome dos clientes. SELECT * FROM Cliente Order By Nome_Cli DESC •29/06/2017 •José Antônio - CEFET-RN •37 Exibindo Dados Ordenados •Order By Asc/Desc •Mostre os dados da tabela cliente, ordenando-os de forma crescente pelo código do tipo e de forma decrescente pela renda do cliente. •SELECTCod_Tipo, Renda_Cli, Nome_Cli •FROM Cliente •Order By Cod_Tipo ASC, Renda_Cli DESC •29/06/2017 •José Antônio - CEFET-RN •38 Exibindo Dados Ordenados •Top n •Mostre os dois primeiros registros da tabela cliente. SELECT TOP 2 * FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •39 Exibindo Dados Ordenados •Top n •Selecione os cinco primeiros clientes, ordenando-os de forma crescente pela renda de cada um, ou seja, apresenta os cinco primeiros clientes que têm a menor renda. SELECT TOP 5 Renda_Cli, Nome_Cli FROM Cliente Order By Renda_Cli ASC •29/06/2017 •José Antônio - CEFET-RN •40 Exibindo Dados Ordenados •Top n With Ties Utilizando a cláusula WITH TIES, o SQL Server mostra as cinco linhas determinadas pela cláusula Top 5 e mostra também todas as outras linhas que tiverem a Renda_Cli igual ao valor da quinta linha. SELECT TOP 5 WITH TIES Renda_Cli, Nome_Cli FROM Cliente Order By Renda_Cli DESC •29/06/2017 •José Antônio - CEFET-RN •41 Exibindo Dados Ordenados •Top n Percent A cláusula PERCENT indica que deve ser retornado um valor percentual de quantidade de linhas. Se for especificado, por exemplo, TOP 50 PERCENT, siginifica que o SQL Server deve retornar 50% das linhas inseridas na tabela. SELECT TOP 50 percent * FROM Cliente •29/06/2017 •José Antônio - CEFET-RN •42 Exibindo Dados Ordenados •Top n Percent O comando seguinte ordena de forma crescente os dados de acordo com a coluna Renda_Cli da tabela Cliente e apresenta apenas 40% das linhas da tabela. SELECT TOP 40 percent Renda_Cli, Nome_Cli FROM Cliente Order by Renda_Cli •29/06/2017 •José Antônio - CEFET-RN •43 Exibindo Dados Ordenados •Top n Percent O comando seguinte apresenta 30% das linhas da tabela Cliente, ordenada de forma crescente, e por causa da cláusula WITH TIES apresenta também todas as linhas cujo valor da coluna Renda_Cli, empata com o valor da última linha apresentada pelos 30%. •SELECT TOP 30 percent With Ties Renda_Cli, Nome_Cli FROM Cliente •Order by Renda_Cli •29/06/2017 •José Antônio - CEFET-RN •44 Fim •29/06/2017 •José Antônio - CEFET-RN •45