Treinamento de SQL Básico

Post on 17-Dec-2014

18.119 views 6 download

Tags:

description

Treinamento de SQL Básico focado em SQL Server.

Transcript of Treinamento de SQL Básico

SQL BásicoIgor Alves

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

O Que é SQL?

3

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

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

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

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

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

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

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

Estrutura de Consultas SQL

SELECT

CASE

WHEN STATUSLAN = 0 THEN ‘Em Aberto’

WHEN STATUSLAN = 1 THEN ‘Baixado’

ELSE ‘Cancelado’

END STATUSLAN

FROM TITULOS

11

Estrutura de Consultas SQL

NO LOCK

SELECT

COD

FROM EMPREGADOS WITH(NO LOCK)

12

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

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

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

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

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

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

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

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

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

Junções

22

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

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

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

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

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

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

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

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

Revoke

Revoke (exemplos)

Revoke delete On empregados From igor;

Revoke All On empregados From igor;

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

31

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

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

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

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

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 = 'igor.alvez@gmail.com';36

Dúvidas

Contatos: E-Mail: igor.alvez@gmail.com

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

37

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