Treinamento de SQL Básico

38
SQL Básico Igor Alves

description

Treinamento de SQL Básico focado em SQL Server.

Transcript of Treinamento de SQL Básico

Page 1: Treinamento de SQL Básico

SQL BásicoIgor Alves

Page 2: Treinamento de SQL Básico

Agenda

• O que é SQL• Tipos de Consultas SQL• Manipulando Tabelas• Estrutura de uma Consulta SQL• Condição no Where• Funções de Agregações• Funções de Agrupamento• Junções• Subconsultas• View• Comando Insert, Update e Delete• Commit e Rollback• Grant e Rovoke• Triggers• Stored Procedure

2

Page 3: Treinamento de SQL Básico

O Que é SQL?

3

Page 4: Treinamento de SQL Básico

Tipos de Consultas SQL

Data Definition Language

DDL

Data Control Language

DCL

Data Manipulation

LanguageDML

SQL – Structured Query Language

Define o Esquema

Manipula o Esquema

Assegura o Esquema

4

Page 5: Treinamento de SQL Básico

Manipulando Tabelas

Para a manipulação de tabelas existem alguns comandos específicos.

• Create Table– Constraint

• Chave Primária• Chave Estrangeira

• Alter Table• Drop Table• Truncate Table

5

Page 6: Treinamento de SQL Básico

Manipulando Tabelas

O comando Create Table é utilizado para criar uma tabela no banco de dados.

Exemplo:

Create Table Departamento

(Cod Interger Not Null,

Nome Varchar(20) Not Null,

Constraint pkdepart Primary Key (Cod)

)

6

Page 7: Treinamento de SQL Básico

Manipulando Tabelas

Exemplo:

Create Table Empregados

(Cod Interger Not Null,

Nome Varchar(20) Not Null,

Endereco Varchar (30),

Funcao Varchar (30) Not Null,

Coddepart Int Not Null,

Salario Decimal(10,2) Not Null,

Constraint pkempregado Primary Key (Cod), Constraint fkdepart Foreign Key (Coddepart) References departamento(Cod)

)

7

Page 8: Treinamento de SQL Básico

Manipulando Tabelas

O comando Alter Table é utilizado para alterar a estrutura de uma tabela no banco de dados.

Exemplo:

• Alter Table Empregados Add Column (DTNasc Datetime Not Null);

• Alter Table Empregados Modify Column (Endereco Varchar(40));

• Alter Table Empregados Drop Endereco Cascade;• Alter Table Empregados Drop Endereco Restrict;• Alter Table Empregados Drop Column Endereco;

8

Page 9: Treinamento de SQL Básico

Manipulando Tabelas

O Comando Drop Table apaga a tabela do banco de dados.

Exemplo:

Drop Table Empregados;

O Comando Truncate apaga os dados da tabela.

Exemplo:

Truncate Table Empregados;

9

Page 10: Treinamento de SQL Básico

Estrutura de Consultas SQL

Para se consultar uma informação em um banco de dados é utlizado o comando SELECT da linguagem SQL. Esse comando tem uma estrurura bem definida.

SELECT <lista de atributos e funções>FROM <lista de tabelas>WHERE <condições>GROUP BY <atributos de agrupamento> HAVING <condição de agrupamento>ORDER BY <list de atributos>;

OBS: A clausula Order By pode ser utilizada para uma ordenação crescente (ASC) ou decrescente(DESC).

10

Page 11: Treinamento de SQL Básico

Estrutura de Consultas SQL

SELECT

CASE

WHEN STATUSLAN = 0 THEN ‘Em Aberto’

WHEN STATUSLAN = 1 THEN ‘Baixado’

ELSE ‘Cancelado’

END STATUSLAN

FROM TITULOS

11

Page 12: Treinamento de SQL Básico

Estrutura de Consultas SQL

NO LOCK

SELECT

COD

FROM EMPREGADOS WITH(NO LOCK)

12

Page 13: Treinamento de SQL Básico

Condições no Where

A clausula WHERE das consultas sql tem uma serie de operadores que facilitam a definição das condições do comando SELECT a ser executado, São elas:

• Operadores de Comparação (=,<,>)• Between• Like / Not Like• IN / Not IN• IS Null / IS Not Null• And e Or

13

Page 14: Treinamento de SQL Básico

Condições no Where

Operadores de Comparação:

= igual a

> maior que

< menor que

>= maior que ou igual a

<= menor que ou igual a

<> diferente

Exemplos:

1. Select * From Empregados Where salario > 1000;

2. Select * From Empregados Where salario = 720;

3. Select * From Empregados Where salario <> 720;

14

Page 15: Treinamento de SQL Básico

Condições no Where

Os comandos Between e Not Between são utilizados na clausula Where quando é necessario utilizar uma faixa de valores para uma restrição, como demonstrado abaixo:

1. Select * From Empregados Where salario Between 600 and 720;

2. Select * From Empregados Where salario Not Between 600 and 720;

OBS: Os valores extremos da faixa de valores estão inclusos no resultado.

15

Page 16: Treinamento de SQL Básico

Condições no Where

Os comandos Like e Not Like são utilizados na clausula Where quando é necessario utilizar uma faixa de valores para campos dos tipos caracter e datatime para uma restrição, como demonstrado abaixo:

1. Select * From Empregados Where nome like ‘%E%’;

2. Select * From Empregados Where nome like ‘E%’;

3. Select * From Empregados Where nome like ‘%E’;

16

Page 17: Treinamento de SQL Básico

Condições no Where

Os comandos IN e Not IN são utilizados na clausula Where quando é necessario utilizar uma faixa de valores definida pelo usuário, como demonstrado abaixo:

1. Select * From Empregados Where salario In (600,650,720);

2. Select * From Empregados Where salario Not In (600,650,720);

17

Page 18: Treinamento de SQL Básico

Condições no Where

Os comandos IS Null e IS Not Null são utilizados quando deseja-se determinar se a condição é nula ou não, como demonstrado abaixo:

1. Select * From Empregados Where salario IS Null;

2. Select * From Empregados Where salario IS Not Null;

18

Page 19: Treinamento de SQL Básico

Condições no Where

Os comandos AND(Todas as restrições são validas) e OR(Pelo menos uma das restrições é valida) são utilizado para definir mais de uma restrição ou caso queira que a restrição varie conforme um determinado valor, como demonstrado abaixo:

1. Select * From Empregados Where salario IS Null and funcao = ‘Trainee’;

2. Select * From Empregados Where salario IS Null and (funcao = ‘Trainee’ or funcao = ‘Estagiário’);

19

Page 20: Treinamento de SQL Básico

Função de Agregamento

Essas funções tem a finalidade de agregar os dados a serem retornados numa consulta SQL, São elas:

• Count– Exemplo: Select count(*) From Empregados;– Exemplo: Select count(salario) From Empregados;

• Max / Min– Exemplo: Select max(salario) From Empregados;– Exemplo: Select min(salario) From Empregados;

• Sum/Avg– Exemplo: Select sum(Salario) From Empregados;– Exemplo: Select avg(Salario) From Empregados;

20

Page 21: Treinamento de SQL Básico

Função de Agrupamento

Essa função tem a finalidade de agrupar os dados a serem retornados numa consulta SQL, Como demonstrado abaixo:

Select Distinct Funcao,Sum(Salario)

From Empregados

Where Cidade = ‘Salvador’

Group By Funcao

Having SUM(Salario) > 600

21

Page 22: Treinamento de SQL Básico

Junções

22

Page 23: Treinamento de SQL Básico

Junções

Exemplos:Select Empregados.nome, Empregados.funcao From (Empregados Inner Join departamento On

Empregados.coddepart = departamento.cod )

Where departamento.nome = ‘Consultoria’;

Equivalente a :

Select Empregados.nome, Empregados.funcao From Empregados,departamento

Where Empregados.coddepart = departamento.cod ) And departamento.nome = ‘Consultoria’;

23

Page 24: Treinamento de SQL Básico

SubConsultas

O uso de subconsultas se faz quando é necessaria a utilização de uma consulta como restrição da consulta resultado.

Exemplo:

Select

Nome

From Empregados

Where

Salario = (Select max(salario) From Empregados);

24

Page 25: Treinamento de SQL Básico

VIEW

Por Que o uso de View?

Create View Consultor_Trainee (Nome,Salario,Departamento) As

Select Empregados.Nome, Empregados.Salario,

Departamento.NomeFrom

Empregados Inner Join Departamento On (Empregados.Coddepart = Departamento.Cod)

Where

Empregados.Funcao IN (‘Trainee’,’Consultor’);

25

Page 26: Treinamento de SQL Básico

Insert

O comando Insert é utilizado para inserir dados nas tabelas do banco utilizado.

Estrutura:Insert Into tabela (atributo1, atributo2, ..., atributon) Values (valor1, valor2, ..., valorn)

Exemplos:• Insert Into

Empregados(Cod,Nome,Funcao,Salario,Coddepart)

Values (1,’Nelson’,’Estagiário’,600,1);

• Insert Into Empregados(Cod,Nome,Funcao,Salario,Coddepart)

Values(1,’Nelson’,’Estagiário’,600,(Select min(cod) From

Departamento);26

Page 27: Treinamento de SQL Básico

Update

O comando Update é utilizado para alterar os dados de uma tabela do banco utilizado.

Estrutura:Update tabela Set <atribuições> Where <Condição>

Exemplos:

Update Empregados

Set Funcao = ‘Consultor’

Where Funcao = ‘Trainee’

Update Empregados

Set Funcao = ‘Consultor’, Salario = Salario + 500

Where Funcao = ‘Trainee’

27

Page 28: Treinamento de SQL Básico

Delete

O comando Delete é utilizado para apagar dados de uma tabela do banco utilizado.

Estrutura:Delete From tabela Where <Condição>

Exemplo:

Delete From Empregados

Where Funcao = ‘Trainee’;

28

Page 29: Treinamento de SQL Básico

Commit e Rollback

Commit: Usado para confirmar uma transação.

RollBack: Usado para desfazer uma transação.

OBS: No SQL Server para se utilizar os comandos Commit e RollBack é necessário a abertura de transação com o comando Begin Tran.

Exemplo:Begin Tran

Delete From EmpregadosWhere Funcao = ‘Trainee’;

Rollback

29

Page 30: Treinamento de SQL Básico

Grant

GRANT (exemplos)

Grant Alter tables To igor;

Grant select, insert, update, delete On empregados To igor;

Grant All On empregados To igor;

Permissão de comandos DDL

GRANT {comando} TO {usuário}

Permissão de objeto

GRANT {comando} ON {object} TO {usuário} [ WITH GRANT OPTION]

30

Page 31: Treinamento de SQL Básico

Revoke

Revoke (exemplos)

Revoke delete On empregados From igor;

Revoke All On empregados From igor;

REVOKE {comando} ON {object} FROM {usuário}

31

Page 32: Treinamento de SQL Básico

Triggers

Triggers ou Gatilhos são procedimentos disparados através do uso dos comandos: Insert,Update ou Delete.

No SQL Server Existem algumas condições que determinam o momento que a triggers será executada, são elas:

• After – Executa a trigger caso o comando executado tenha sido realizado com sucesso.

• For – Executa a triggers em conjunto com o comando.

• Instead Of – Executa a triggers no lugar do comando.

32

Page 33: Treinamento de SQL Básico

Triggers

Estrutura de uma trigger:

Create Trigger Nome_da_TriggerOn Tabela

For | Alter | Instead Of { insert,update, delete} As instruções SQL;

Para se alterar o código de uma Trigger utiliza-se o comando:

Alter Trigger.

Para excluir uma Trigger utiliza-se o comando Drop Trigger.

33

Page 34: Treinamento de SQL Básico

TriggersExemplo:

Create Trigger Tg_Empregados On Empregados Instead Of Insert As

Declare @Nome Varchar(20), @Endereco Varchar(30),

@Funcao Varchar(30), @Coddepart Int,@Salario

Decimal(10,2)

Select @Nome = Nome,@Endereco = Endereco,

@Funcao = Funcao,@Coddepart = Coddepart,

@Salario = Salario

From inserted

Insert Into Empregados(Cod,Nome,Endereco,Funcao,Coddepart,Salario) values ((Select max(Cod)+1 From Empregados),

@Nome,@Endereco,@Funcao,@Coddepart,@Salario)34

Page 35: Treinamento de SQL Básico

Stored Procedure

A Stored Procedure é Um procedimento armazenado (Stored Procedure), é uma coleção de instruções implementadas com linguagem T-SQL (Transact-Sql, no SQL Server 2000/2005), que, uma vez armazenadas ou salvas, ficam dentro do servidor de forma pré-compilada, aguardando que um usuário do banco de dados faça sua execução.(SQL Magazine – Introdução a Stored Procedure)

35

Page 36: Treinamento de SQL Básico

Stored Procedure

Exemplo:

Criando uma Stored Procedure:

Create Procedure sp_insereUsuario

@CPF DECIMAL(11,0),

@NOME VARCHAR(30),

@EMAIL VARCHAR(30)

As

INSERT INTO USUARIO

(CPF,NOME,EMAIL,DT_CADASTRO)

VALUES (@CPF,@NOME,@EMAIL, GETDATE());

Executando uma Stored Procedure:

EXEC sp_insereUsuario

@CPF = '03478956212', @NOME = 'Igor',

@EMAIL = '[email protected]';36

Page 37: Treinamento de SQL Básico

Dúvidas

Contatos: E-Mail: [email protected]

Linkedin: http://www.linkedin.com/in/igoralves

37

Page 38: Treinamento de SQL Básico

Referencias

SQL Magazine – Introdução a Stored Procedure:http://www.devmedia.com.br/post-2213-Introducao-as-Stored-Procedure-com-SQL-Server-2000-2005.html

38