T-SQL COM
    MICROSOFT SQL
       SERVER 2012
EXPRESS NA PRÁTICA
                       RODRIGO RIBEIRO GONÇALVES
    ESTA APRESENTAÇÃO É MATERIAL DE APOIO DO LIVRO
      HOMÔNIMO, LANÇADO PELA EDITORA ÉRICA, 2013
RODRIGO RIBEIRO GONÇALVES

• Graduado em Sistema de Informação
• Pós-graduado em Gerenciamento de Projetos
• Microsoft Certified Professional
• Microsoft Certified Trainer
• Autor publicado pela Editora Érica
• http://www.linkedin.com/pub/rodrigo-ribeiro-gon%C3%A7alves/11/9a0/372
• http://tsqlmaster.blogspot.com.br/
CAPÍTULO I
A ORIGEM DO SQL



• Desenvolvido no anos de 1970 nos laboratórios da IBM
    •   Donald Chamberlin
    •   Raymond Boyce
• Criado para trabalhar com o System R, um dos primeiros sistemas de banco de dados
  computadorizados, criado por Edward Codd, autor de "A Relational Model of Data for Large Shared Data
  Banks”, livro que definiu os pilares da teoria de banco de dados
O Microsoft sql server 2012 express



• Versão limitada, porém gratuita, destinada ao estudo e ao desenvolvimento
• Pode ser baixado de
    http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx.
EXERCÍCIOS DE FIXAÇÃO

1.   Quem criou a linguagem SQL?
2.   Quem criou as teorias relacionais que fundamentam os SGBDs modernos?
3.   Que empresa criou o T-SQL?
4.   Quais são as edições do SQL SERVER 2012?
5.   Quais as principais limitações de cada edição?
6.   O que quer dizer a sigla SQL?
7.   Quais são os dois modos de autenticação no SQL SERVER 2012?
CAPÍTULO II
Conheça o management studio
Para abrir scripts .SQL no Management Studio, clique em FileOpenFile.
ABERTURA DE UMA NOVA JANELA DE QUERY
SYSTEM DATABASES

• MASTER
• MODEL
• MSDB
• TEMPDB
EXERCÍCIOS DE FIXAÇÃO


1.   Como é possível abrir um arquivo de scripts através do SSMS?
2.   Qual o nome dos bancos de dados de sistema do SQL SERVER?
3.   Para que serve o banco de dados master?
4.   Para que serve o banco de dados model?
5.   O que é o Object Explorer?
CAPÍTULO III
PRIMEIRO SCRIPT
VARIÁVEIS E TIPOS DE DADOS
CONCATENAÇÃO DE STRINGS

DECLARE @HELLO VARCHAR(100)


SET @HELLO = 'Hello World! T-SQL na prática'


.....
OPERADORES ARITMÉTICOS

      Operação        Operador

      Adição              +
      Subtração           -
      Multiplicação       *
      Divisão             /
      Mod                 %
COMPARADORES LÓGICOS

            Operador   Definição
            =          Igual a
            >          Maior que
            <          Menor que
            >=         Maior que
            <=         Menor que
            <>         Diferente que
USO DO WHILE




WHILE @COUNT < 10
……
DATAS NO SQL SERVER




FUNÇÕES GETDATE() E CURRENT_TIMESTAMP...COMO USÁ-LAS?
CONVERSÃO DE DADOS COM CAST E CONVERT


DECLARE
   @VALOR INT


SET @VALOR = 1000


PRINT 'VALOR É ' + CAST(....
EXERCÍCIOS DE FIXAÇÃO

1. Qual o comando para declarar variáveis no T-SQL?
2. Qual o operador para realizar concatenação de Strings no T-SQL?
3. Qual o operador aritmético de subtração no T-SQL?
4. Escreva um trecho de código realizando a multiplicação entre duas variáveis do tipo
   REAL, uma delas com o valor de 8 e a outra com o valor de 9.
5. Adicione ao script da questão anterior um comentário de várias linhas com o
   enunciado da questão anterior.
CAPÍTULO IV
CRIAÇÃO DE UM BANCO DE DADOS




CREATE DATABASE ProjetoTSQL
ARQUIVOS MDF E LDF
CREATE TABLE


USE ProjetoTSQL


CREATE TABLE Clientes(
...
CHAVE PRIMÁRIA




ALTER TABLE CLIENTES
ADD ...
INSERÇÃO DE REGISTROS COM O INSERT


INSERT INTO Clientes(Nome
      ,Endereço
      ,Telefone
      ,Email
      ,DataNascimento)
...
CONSULTA A REGISTROS COM SELECT



SELECT
   Codigo
   ,Nome
   ,...
FILTRO DE CONSULTAS COM WHERE



SELECT
    Codigo
    ,Nome
    ,...
OPERADOR AND




WHERE
   Codigo > 1
   ....
ATUALIZAÇÃO COM O COMANDO UPDATE



UPDATE
       Clientes
....
ISNULL E COALESCE




SELECT
     ISNULL(…
TABELAS TEMPORÁRIAS




CREATE TABLE #Clientes
EXERCÍCIOS DE FIXAÇÃO



1.Crie um banco de dados denominado ProjetoCapitulo4.
2.Dentro do banco de dados ProjetoCapitulo4, crie uma tabela chamada usuários com os seguintes campos e tipos de dados:
• Código, Iiteiro, sequencial e chave primária
• Nome, cadeira caracteres com no máximo 200 caracteres
• Login, cadeira caracteres com no máximo dez caracteres
• Senha, cadeira caracteres com no máximo seis caracteres
1.Altere a tabela usuários adicionando um campo denominado DataCriacao com a data de criação do registro, com a data atual como valor padrão .
2.Insira o seguinte grupo de dados na tabela usuários (TABELA ABAIXO).
3.Atualize o registro com login "rodrigo" e altere a senha para "54321“.
4.Exclua o registro com o login "daniel“.
5.Exclua todos os registros da tabela, de tal forma que o próximo registro a ser inserido tenha o campo código com o valor um.
6.Crie uma tabela temporária com a mesma estrutura da tabela usuários.
7.Exclua o banco de dados ProjetoCapitulo4.


                                                Nome       Login     Senha
                                                Rodrigo    rodrigo       132435
                                                Daniel     daniel        989876
                                                Carolina   carol         192837
CAPÍTULO V
CHAVE ESTRANGEIRA



CREATE TABLE Vendas(
   Codigo INT IDENTITY(1,1)
        PRIMARY KEY
   ,Cliente INT
        REFERENCES ....
CHAVE ESTRANGEIRA COM ALTER TABLE




ALTER TABLE Vendas ADD CONSTRAINT fkProdutos
FOREIGN KEY....
DIAGRAMAS DE BANCO DE DADOS
INNER JOIN



...
FROM
    Clientes C
INNER JOIN Vendas
….
LEFT JOIN




....
FROM
     Clientes C
LEFT JOIN Vendas…
RIGHT JOIN



...
FROM
    VENDAS v
RIGHT JOIN Produtos
...
USO DO COUNT E FUNÇÕES DE AGREGAÇÃO




SELECT
   Count(*) ...
EXERCÍCIOS DE FIXAÇÃO
1. Crie um banco de dados ProjetoCapitulo5.

2. No banco de dados ProjetoCapitulo5 crie uma tabela Clientes com os seguintes campos
    Código, inteiro, sequencial e chave primária
    Nome, cadeira de caracteres com no máximo 200 caracteres

3.   Crie uma tabela chamada Pedidos com os seguintes campos:
•    Código, inteiro, sequencial e chave primária
•    DataPedido, Data, valor padrão data atual
•    Cliente, inteiro, chave estrangeira da tabela clientes
•    Valor, numérico com duas casas depois da vírgula

4. Insira três registros na tabela clientes com nomes diferentes e dois pedidos para os dois
primeiros clientes.
5. Faça uma query listando todos os clientes e o número de pedidos para cada cliente mesmo
que não tenham pedido nenhum.
CAPÍTULO VI
CRIAÇÃO DE VIEWS




CREATE VIEW vwClientesAtivos
AS
...
CRIAÇÃO DE TRIGGERS




CREATE Trigger UpdateProdutos ON Produtos
FOR UPDATE AS
...
QUERY COM SQL DINÂMICO


DECLARE
    @DATAINI DATETIME
    ,@DATAFIM DATETIME

SELECT
    @DATAINI='20121221'
    ,@DATAFIM='20121222'


SELECT
    Codigo
    ,Cliente....
CRIAÇÃO DE PROCEDURES



CREATE PROC SP_PRODUTOS_CAROS
AS
.....
CRIAÇÃO DE FUNÇÕES




CREATE FUNCTION dbo.fnPar(@Valor INT)
RETURNS BIT
BEGIN
.....
USO DE FUNÇÕES PARA MANIPULAÇÃO DE
STRINGS




•   SUBSTRING
•   RIGHT
•   LEFT
•   LEN
FUNÇÕES DE MANIPULAÇÃO DE DATAS




•   DAY
•   MONTH
•   YEAR
•   DATEADD
•   DATEDIFF

O QUE SÃO E COMO USÁ-LAS?
EXERCÍCIOS DE FIXAÇÃO
1. Crie um banco de dados Capitulo6.
2. Crie uma tabela com o nome de Produtos no banco de dados Capitulo6 com os seguintes
    campos:
3. Código, inteiro, sequencial e chave ´primária
4. Nome, cadeia de caracteres com no máximo 200 carcateres
5. DataNascimento, Data
6. DataAtualizacao, Data
7. Insira ao menos dez registros com nomes diferentes, e destes dez somente dois com data de
    nascimento inferior a 01/10/1980.
8. Crie uma view denominada vwClientes1980, listando todos os clientes que nasceram em
    entre 01/01/1980 e 12/12/1989.
9. Crie uma procedure que percorre os registros da tabela Clientes linha a linha, atualizando o
    campo DataAtualizacao com a data atual.
10. Crie uma função que recebe como argumento um parâmetro Data e calcula a idade baseada
    no parâmetro.
11. Crie uma query que lista todos os clientes da tabela Clientes e usa a função criada
    anteriormente para determinar a idade do cliente.
12. Crie uma query listando os primeiros cinco caracteres do campo nome dos clientes.
13. Exclua o banco de dados Capitulo6.
CAPÍTULO VII
ACESSANDO TABELAS DE SISTEMA




sys.objects
Sys.columns
CRIAÇÃO DE ÍNDICES




CREATE INDEX IXNomeCliente ...
ACESSO AO EXECUTION PLAN
O COMANDO BACKUP DATABASE




BACKUP DATABASE ProjetoTSQL...
O COMANDO BACKUP DATABASE




BACKUP DATABASE ProjetoTSQL...
RESTAURAÇÃO DE UM BACKUP




RESTORE DATABASE [ProjetoTSQL]…
EXERCÍCIOS DE FIXAÇÃO


1. Para que serve a view Sys.Objects e quais as principais colunas?
2. Para que server a view Sys.Columns e quais os principais campos?
3. Abra uma nova janela de query, crie uma tabela temporária chamada #Tabelas com os
   seguintes campos:
4. Tabela, cadeia de caracteres com no máximo 100 caracteres
5. Coluna, cadeia de caracteres com no máximo 100 caracteres
6. Crie um script com um cursor que percorre todas as tabelas do banco de dados e cada uma
   de suas colunas e insere tudo na tabela temporária criada anteriormente.
7. Agora, crie um banco de dados Capitulo7 e faça um backup full desse banco de dados na
   pasta temp do seu computador.
8. Restaure o banco de dados com o backup criado na questão anterior.
9. Exclua o banco de dados criado anteriormente.
FIM

T-SQL na prática com SQL SERVER Express 2012

  • 1.
    T-SQL COM MICROSOFT SQL SERVER 2012 EXPRESS NA PRÁTICA RODRIGO RIBEIRO GONÇALVES ESTA APRESENTAÇÃO É MATERIAL DE APOIO DO LIVRO HOMÔNIMO, LANÇADO PELA EDITORA ÉRICA, 2013
  • 2.
    RODRIGO RIBEIRO GONÇALVES •Graduado em Sistema de Informação • Pós-graduado em Gerenciamento de Projetos • Microsoft Certified Professional • Microsoft Certified Trainer • Autor publicado pela Editora Érica • http://www.linkedin.com/pub/rodrigo-ribeiro-gon%C3%A7alves/11/9a0/372 • http://tsqlmaster.blogspot.com.br/
  • 3.
  • 4.
    A ORIGEM DOSQL • Desenvolvido no anos de 1970 nos laboratórios da IBM • Donald Chamberlin • Raymond Boyce • Criado para trabalhar com o System R, um dos primeiros sistemas de banco de dados computadorizados, criado por Edward Codd, autor de "A Relational Model of Data for Large Shared Data Banks”, livro que definiu os pilares da teoria de banco de dados
  • 5.
    O Microsoft sqlserver 2012 express • Versão limitada, porém gratuita, destinada ao estudo e ao desenvolvimento • Pode ser baixado de http://www.microsoft.com/sqlserver/en/us/editions/2012-editions/express.aspx.
  • 6.
    EXERCÍCIOS DE FIXAÇÃO 1. Quem criou a linguagem SQL? 2. Quem criou as teorias relacionais que fundamentam os SGBDs modernos? 3. Que empresa criou o T-SQL? 4. Quais são as edições do SQL SERVER 2012? 5. Quais as principais limitações de cada edição? 6. O que quer dizer a sigla SQL? 7. Quais são os dois modos de autenticação no SQL SERVER 2012?
  • 7.
  • 8.
    Conheça o managementstudio Para abrir scripts .SQL no Management Studio, clique em FileOpenFile.
  • 9.
    ABERTURA DE UMANOVA JANELA DE QUERY
  • 10.
    SYSTEM DATABASES • MASTER •MODEL • MSDB • TEMPDB
  • 11.
    EXERCÍCIOS DE FIXAÇÃO 1. Como é possível abrir um arquivo de scripts através do SSMS? 2. Qual o nome dos bancos de dados de sistema do SQL SERVER? 3. Para que serve o banco de dados master? 4. Para que serve o banco de dados model? 5. O que é o Object Explorer?
  • 12.
  • 13.
  • 14.
  • 15.
    CONCATENAÇÃO DE STRINGS DECLARE@HELLO VARCHAR(100) SET @HELLO = 'Hello World! T-SQL na prática' .....
  • 16.
    OPERADORES ARITMÉTICOS Operação Operador Adição + Subtração - Multiplicação * Divisão / Mod %
  • 17.
    COMPARADORES LÓGICOS Operador Definição = Igual a > Maior que < Menor que >= Maior que <= Menor que <> Diferente que
  • 18.
    USO DO WHILE WHILE@COUNT < 10 ……
  • 19.
    DATAS NO SQLSERVER FUNÇÕES GETDATE() E CURRENT_TIMESTAMP...COMO USÁ-LAS?
  • 20.
    CONVERSÃO DE DADOSCOM CAST E CONVERT DECLARE @VALOR INT SET @VALOR = 1000 PRINT 'VALOR É ' + CAST(....
  • 21.
    EXERCÍCIOS DE FIXAÇÃO 1.Qual o comando para declarar variáveis no T-SQL? 2. Qual o operador para realizar concatenação de Strings no T-SQL? 3. Qual o operador aritmético de subtração no T-SQL? 4. Escreva um trecho de código realizando a multiplicação entre duas variáveis do tipo REAL, uma delas com o valor de 8 e a outra com o valor de 9. 5. Adicione ao script da questão anterior um comentário de várias linhas com o enunciado da questão anterior.
  • 22.
  • 23.
    CRIAÇÃO DE UMBANCO DE DADOS CREATE DATABASE ProjetoTSQL
  • 24.
  • 25.
  • 26.
  • 27.
    INSERÇÃO DE REGISTROSCOM O INSERT INSERT INTO Clientes(Nome ,Endereço ,Telefone ,Email ,DataNascimento) ...
  • 28.
    CONSULTA A REGISTROSCOM SELECT SELECT Codigo ,Nome ,...
  • 29.
    FILTRO DE CONSULTASCOM WHERE SELECT Codigo ,Nome ,...
  • 30.
    OPERADOR AND WHERE Codigo > 1 ....
  • 31.
    ATUALIZAÇÃO COM OCOMANDO UPDATE UPDATE Clientes ....
  • 32.
  • 33.
  • 34.
    EXERCÍCIOS DE FIXAÇÃO 1.Crieum banco de dados denominado ProjetoCapitulo4. 2.Dentro do banco de dados ProjetoCapitulo4, crie uma tabela chamada usuários com os seguintes campos e tipos de dados: • Código, Iiteiro, sequencial e chave primária • Nome, cadeira caracteres com no máximo 200 caracteres • Login, cadeira caracteres com no máximo dez caracteres • Senha, cadeira caracteres com no máximo seis caracteres 1.Altere a tabela usuários adicionando um campo denominado DataCriacao com a data de criação do registro, com a data atual como valor padrão . 2.Insira o seguinte grupo de dados na tabela usuários (TABELA ABAIXO). 3.Atualize o registro com login "rodrigo" e altere a senha para "54321“. 4.Exclua o registro com o login "daniel“. 5.Exclua todos os registros da tabela, de tal forma que o próximo registro a ser inserido tenha o campo código com o valor um. 6.Crie uma tabela temporária com a mesma estrutura da tabela usuários. 7.Exclua o banco de dados ProjetoCapitulo4. Nome Login Senha Rodrigo rodrigo 132435 Daniel daniel 989876 Carolina carol 192837
  • 35.
  • 36.
    CHAVE ESTRANGEIRA CREATE TABLEVendas( Codigo INT IDENTITY(1,1) PRIMARY KEY ,Cliente INT REFERENCES ....
  • 37.
    CHAVE ESTRANGEIRA COMALTER TABLE ALTER TABLE Vendas ADD CONSTRAINT fkProdutos FOREIGN KEY....
  • 38.
  • 39.
    INNER JOIN ... FROM Clientes C INNER JOIN Vendas ….
  • 40.
    LEFT JOIN .... FROM Clientes C LEFT JOIN Vendas…
  • 41.
    RIGHT JOIN ... FROM VENDAS v RIGHT JOIN Produtos ...
  • 42.
    USO DO COUNTE FUNÇÕES DE AGREGAÇÃO SELECT Count(*) ...
  • 43.
    EXERCÍCIOS DE FIXAÇÃO 1.Crie um banco de dados ProjetoCapitulo5. 2. No banco de dados ProjetoCapitulo5 crie uma tabela Clientes com os seguintes campos Código, inteiro, sequencial e chave primária Nome, cadeira de caracteres com no máximo 200 caracteres 3. Crie uma tabela chamada Pedidos com os seguintes campos: • Código, inteiro, sequencial e chave primária • DataPedido, Data, valor padrão data atual • Cliente, inteiro, chave estrangeira da tabela clientes • Valor, numérico com duas casas depois da vírgula 4. Insira três registros na tabela clientes com nomes diferentes e dois pedidos para os dois primeiros clientes. 5. Faça uma query listando todos os clientes e o número de pedidos para cada cliente mesmo que não tenham pedido nenhum.
  • 44.
  • 45.
    CRIAÇÃO DE VIEWS CREATEVIEW vwClientesAtivos AS ...
  • 46.
    CRIAÇÃO DE TRIGGERS CREATETrigger UpdateProdutos ON Produtos FOR UPDATE AS ...
  • 47.
    QUERY COM SQLDINÂMICO DECLARE @DATAINI DATETIME ,@DATAFIM DATETIME SELECT @DATAINI='20121221' ,@DATAFIM='20121222' SELECT Codigo ,Cliente....
  • 48.
    CRIAÇÃO DE PROCEDURES CREATEPROC SP_PRODUTOS_CAROS AS .....
  • 49.
    CRIAÇÃO DE FUNÇÕES CREATEFUNCTION dbo.fnPar(@Valor INT) RETURNS BIT BEGIN .....
  • 50.
    USO DE FUNÇÕESPARA MANIPULAÇÃO DE STRINGS • SUBSTRING • RIGHT • LEFT • LEN
  • 51.
    FUNÇÕES DE MANIPULAÇÃODE DATAS • DAY • MONTH • YEAR • DATEADD • DATEDIFF O QUE SÃO E COMO USÁ-LAS?
  • 52.
    EXERCÍCIOS DE FIXAÇÃO 1.Crie um banco de dados Capitulo6. 2. Crie uma tabela com o nome de Produtos no banco de dados Capitulo6 com os seguintes campos: 3. Código, inteiro, sequencial e chave ´primária 4. Nome, cadeia de caracteres com no máximo 200 carcateres 5. DataNascimento, Data 6. DataAtualizacao, Data 7. Insira ao menos dez registros com nomes diferentes, e destes dez somente dois com data de nascimento inferior a 01/10/1980. 8. Crie uma view denominada vwClientes1980, listando todos os clientes que nasceram em entre 01/01/1980 e 12/12/1989. 9. Crie uma procedure que percorre os registros da tabela Clientes linha a linha, atualizando o campo DataAtualizacao com a data atual. 10. Crie uma função que recebe como argumento um parâmetro Data e calcula a idade baseada no parâmetro. 11. Crie uma query que lista todos os clientes da tabela Clientes e usa a função criada anteriormente para determinar a idade do cliente. 12. Crie uma query listando os primeiros cinco caracteres do campo nome dos clientes. 13. Exclua o banco de dados Capitulo6.
  • 53.
  • 54.
    ACESSANDO TABELAS DESISTEMA sys.objects Sys.columns
  • 55.
    CRIAÇÃO DE ÍNDICES CREATEINDEX IXNomeCliente ...
  • 56.
  • 57.
    O COMANDO BACKUPDATABASE BACKUP DATABASE ProjetoTSQL...
  • 58.
    O COMANDO BACKUPDATABASE BACKUP DATABASE ProjetoTSQL...
  • 59.
    RESTAURAÇÃO DE UMBACKUP RESTORE DATABASE [ProjetoTSQL]…
  • 60.
    EXERCÍCIOS DE FIXAÇÃO 1.Para que serve a view Sys.Objects e quais as principais colunas? 2. Para que server a view Sys.Columns e quais os principais campos? 3. Abra uma nova janela de query, crie uma tabela temporária chamada #Tabelas com os seguintes campos: 4. Tabela, cadeia de caracteres com no máximo 100 caracteres 5. Coluna, cadeia de caracteres com no máximo 100 caracteres 6. Crie um script com um cursor que percorre todas as tabelas do banco de dados e cada uma de suas colunas e insere tudo na tabela temporária criada anteriormente. 7. Agora, crie um banco de dados Capitulo7 e faça um backup full desse banco de dados na pasta temp do seu computador. 8. Restaure o banco de dados com o backup criado na questão anterior. 9. Exclua o banco de dados criado anteriormente.
  • 61.