SQL BásicoIgor Alves
AgendaO que é SQLTipos de Consultas SQLManipulando TabelasEstrutura de uma Consulta SQLCondição no WhereFunções de AgregaçõesFunções de AgrupamentoJunçõesSubconsultasViewComando Insert, Update e DeleteCommit e RollbackGrant e RovokeTriggersStored Procedure2
O Que é SQL?3
Tipos de Consultas SQLSQL – Structured Query LanguageData Definition LanguageDDLData Control LanguageDCLData ManipulationLanguageDMLDefine o EsquemaManipula o Esquema Assegura o Esquema4
Manipulando TabelasPara a manipulação de tabelas existem alguns comandos específicos.Create TableConstraintChave PrimáriaChave EstrangeiraAlter TableDrop TableTruncate Table5
Manipulando TabelasO comando Create Table é utilizado para criar uma tabela no banco de dados.Exemplo:Create TableDepartamento		(Cod		Interger Not Null,          	 Nome 	                Varchar(20) NotNull,ConstraintpkdepartPrimary Key (Cod))6
Manipulando TabelasExemplo:Create TableEmpregados		(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,ConstraintpkempregadoPrimary Key (Cod),ConstraintfkdepartForeign Key  (Coddepart) 	 References departamento(Cod) ) 7
Manipulando TabelasO 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 DropEnderecoCascade;Alter Table Empregados DropEnderecoRestrict;Alter Table Empregados Drop Column Endereco;8
Manipulando TabelasO Comando DropTable 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 SQLPara 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 OrderBy pode ser utilizada para uma ordenação crescente (ASC) ou decrescente(DESC).10
Estrutura de Consultas SQLSELECTCASEWHEN STATUSLAN = 0 THEN ‘Em Aberto’WHEN STATUSLAN = 1 THEN ‘Baixado’ELSE ‘Cancelado’ENDSTATUSLANFROM TITULOS11
Estrutura de Consultas SQLNO LOCKSELECTCODFROM EMPREGADOS WITH(NO LOCK)12
Condições no WhereA 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 (=,<,>)BetweenLike / Not LikeIN / Not INIS Null / IS Not NullAnd e Or13
Condições no WhereOperadores de Comparação:=	igual a >	maior que<menor que>=	maior que ou igual a<=	menor que ou igual a<>	diferenteExemplos:Select * From Empregados Where salario > 1000;Select * From Empregados Where salario = 720;Select * From Empregados Where salario <> 720; 14
Condições no WhereOs 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:Select * From Empregados Where salario Between 600 and 720;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 WhereOs 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:Select * From Empregados Where nome like ‘%E%’;Select * From Empregados Where nome like ‘E%’;Select * From Empregados Where nome like ‘%E’;16
Condições no WhereOs 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:Select * From Empregados Where salario In (600,650,720);Select * From Empregados Where salario Not In (600,650,720);17
Condições no WhereOs 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:Select * From Empregados Where salario IS Null;Select * From Empregados Where salario IS Not Null;18
Condições no WhereOs 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:Select * From Empregados Where salario IS Null and funcao = ‘Trainee’;Select * From Empregados Where salario IS Null and (funcao = ‘Trainee’ or funcao = ‘Estagiário’);19
Função de AgregamentoEssas funções tem a finalidade de agregar os dados a serem retornados numa consulta SQL, São elas:CountExemplo: Select count(*) From Empregados;Exemplo: Select count(salario) From Empregados;Max / MinExemplo: Select max(salario) From Empregados;Exemplo: Select min(salario)  From Empregados;Sum/AvgExemplo: Select sum(Salario) From Empregados;Exemplo: Select avg(Salario)  From Empregados;20
Função de AgrupamentoEssa 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) > 60021
Junções22
JunçõesExemplos: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
SubConsultasO uso de subconsultas se faz quando é necessaria a utilização de uma consulta como restrição da consulta resultado. Exemplo:SelectNomeFrom EmpregadosWhereSalario = (Selectmax(salario) From Empregados);24
VIEWPor Que o uso de View?Create View Consultor_Trainee (Nome,Salario,Departamento) AsSelectEmpregados.Nome, Empregados.Salario,     Departamento.NomeFrom  Empregados Inner Join Departamento On  (Empregados.Coddepart = Departamento.Cod)WhereEmpregados.Funcao IN (‘Trainee’,’Consultor’);25
InsertO comando Insert é utilizado para inserir dados nas tabelas do banco utilizado.Estrutura:Insert Intotabela (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
UpdateO comando Update é utilizado para alterar os dados de uma tabela do banco utilizado.Estrutura:UpdatetabelaSet <atribuições>Where <Condição>Exemplos:Update EmpregadosSet Funcao = ‘Consultor’Where Funcao = ‘Trainee’Update EmpregadosSet Funcao = ‘Consultor’, Salario = Salario + 500Where Funcao = ‘Trainee’27
DeleteO comando Delete é utilizado para apagar dados de uma tabela do banco utilizado.Estrutura:Delete FromtabelaWhere <Condição>Exemplo:Delete From EmpregadosWhere Funcao = ‘Trainee’;28
Commit e RollbackCommit: 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 Empregados		Where Funcao = ‘Trainee’;Rollback29
GrantPermissão de comandos DDLGRANT {comando} TO {usuário}      Permissão de objetoGRANT {comando} ON {object} TO {usuário} [ WITH GRANT OPTION]GRANT (exemplos)Grant Alter tables To igor;Grant select, insert, update, deleteOn empregados To igor;Grant All On empregados To igor; 30
RevokeREVOKE {comando} ON {object} FROM {usuário}Revoke (exemplos)Revoke deleteOn empregadosFrom igor;Revoke All On empregados From igor; 31
TriggersTriggers 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
TriggersEstrutura de uma trigger:Create Trigger Nome_da_TriggerOn TabelaFor | 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_EmpregadosOnEmpregados InsteadOfInsertAsDeclare@Nome Varchar(20), @EnderecoVarchar(30),              @FuncaoVarchar(30), @CoddepartInt,@Salario              Decimal(10,2)Select@Nome = Nome,@Endereco = Endereco,  @Funcao = Funcao,@Coddepart = Coddepart,  @Salario = SalarioFrominsertedInsertInto Empregados(Cod,Nome,Endereco,Funcao,Coddepart,Salario) values ((Selectmax(Cod)+1 From Empregados),    @Nome,@Endereco,@Funcao,@Coddepart,@Salario)34
Stored ProcedureA 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 ProcedureExemplo:Criando uma Stored Procedure:Create Proceduresp_insereUsuario	@CPF DECIMAL(11,0),	@NOME VARCHAR(30),	@EMAIL VARCHAR(30)AsINSERT INTOUSUARIO                 (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úvidasContatos:               E-Mail: igor.alvez@gmail.comLinkedin: http://www.linkedin.com/in/igoralves37
ReferenciasSQL Magazine – Introdução a Stored Procedure:http://www.devmedia.com.br/post-2213-Introducao-as-Stored-Procedure-com-SQL-Server-2000-2005.html38

Treinamento de SQL Básico

  • 1.
  • 2.
    AgendaO que éSQLTipos de Consultas SQLManipulando TabelasEstrutura de uma Consulta SQLCondição no WhereFunções de AgregaçõesFunções de AgrupamentoJunçõesSubconsultasViewComando Insert, Update e DeleteCommit e RollbackGrant e RovokeTriggersStored Procedure2
  • 3.
  • 4.
    Tipos de ConsultasSQLSQL – Structured Query LanguageData Definition LanguageDDLData Control LanguageDCLData ManipulationLanguageDMLDefine o EsquemaManipula o Esquema Assegura o Esquema4
  • 5.
    Manipulando TabelasPara amanipulação de tabelas existem alguns comandos específicos.Create TableConstraintChave PrimáriaChave EstrangeiraAlter TableDrop TableTruncate Table5
  • 6.
    Manipulando TabelasO comandoCreate Table é utilizado para criar uma tabela no banco de dados.Exemplo:Create TableDepartamento (Cod Interger Not Null, Nome Varchar(20) NotNull,ConstraintpkdepartPrimary Key (Cod))6
  • 7.
    Manipulando TabelasExemplo:Create TableEmpregados (Cod IntergerNot Null, Nome Varchar(20) Not Null,Endereco Varchar (30), Funcao Varchar (30) Not Null, Coddepart Int Not Null, Salario Decimal(10,2) Not Null,ConstraintpkempregadoPrimary Key (Cod),ConstraintfkdepartForeign Key (Coddepart) References departamento(Cod) ) 7
  • 8.
    Manipulando TabelasO comandoAlter 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 DropEnderecoCascade;Alter Table Empregados DropEnderecoRestrict;Alter Table Empregados Drop Column Endereco;8
  • 9.
    Manipulando TabelasO ComandoDropTable apaga a tabela do banco de dados.Exemplo:Drop Table Empregados;O Comando Truncate apaga os dados da tabela.Exemplo:Truncate Table Empregados;9
  • 10.
    Estrutura de ConsultasSQLPara 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 OrderBy pode ser utilizada para uma ordenação crescente (ASC) ou decrescente(DESC).10
  • 11.
    Estrutura de ConsultasSQLSELECTCASEWHEN STATUSLAN = 0 THEN ‘Em Aberto’WHEN STATUSLAN = 1 THEN ‘Baixado’ELSE ‘Cancelado’ENDSTATUSLANFROM TITULOS11
  • 12.
    Estrutura de ConsultasSQLNO LOCKSELECTCODFROM EMPREGADOS WITH(NO LOCK)12
  • 13.
    Condições no WhereAclausula 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 (=,<,>)BetweenLike / Not LikeIN / Not INIS Null / IS Not NullAnd e Or13
  • 14.
    Condições no WhereOperadoresde Comparação:= igual a > maior que<menor que>= maior que ou igual a<= menor que ou igual a<> diferenteExemplos:Select * From Empregados Where salario > 1000;Select * From Empregados Where salario = 720;Select * From Empregados Where salario <> 720; 14
  • 15.
    Condições no WhereOscomandos Between e Not Between são utilizados na clausula Where quando é necessario utilizar uma faixa de valores para uma restrição, como demonstrado abaixo:Select * From Empregados Where salario Between 600 and 720;Select * From Empregados Where salario Not Between 600 and 720;OBS: Os valores extremos da faixa de valores estão inclusos no resultado.15
  • 16.
    Condições no WhereOscomandos 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:Select * From Empregados Where nome like ‘%E%’;Select * From Empregados Where nome like ‘E%’;Select * From Empregados Where nome like ‘%E’;16
  • 17.
    Condições no WhereOscomandos IN e Not IN são utilizados na clausula Where quando é necessario utilizar uma faixa de valores definida pelo usuário, como demonstrado abaixo:Select * From Empregados Where salario In (600,650,720);Select * From Empregados Where salario Not In (600,650,720);17
  • 18.
    Condições no WhereOscomandos IS Null e IS Not Null são utilizados quando deseja-se determinar se a condição é nula ou não, como demonstrado abaixo:Select * From Empregados Where salario IS Null;Select * From Empregados Where salario IS Not Null;18
  • 19.
    Condições no WhereOscomandos 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:Select * From Empregados Where salario IS Null and funcao = ‘Trainee’;Select * From Empregados Where salario IS Null and (funcao = ‘Trainee’ or funcao = ‘Estagiário’);19
  • 20.
    Função de AgregamentoEssasfunções tem a finalidade de agregar os dados a serem retornados numa consulta SQL, São elas:CountExemplo: Select count(*) From Empregados;Exemplo: Select count(salario) From Empregados;Max / MinExemplo: Select max(salario) From Empregados;Exemplo: Select min(salario) From Empregados;Sum/AvgExemplo: Select sum(Salario) From Empregados;Exemplo: Select avg(Salario) From Empregados;20
  • 21.
    Função de AgrupamentoEssafunçã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) > 60021
  • 22.
  • 23.
    JunçõesExemplos: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
  • 24.
    SubConsultasO uso desubconsultas se faz quando é necessaria a utilização de uma consulta como restrição da consulta resultado. Exemplo:SelectNomeFrom EmpregadosWhereSalario = (Selectmax(salario) From Empregados);24
  • 25.
    VIEWPor Que ouso de View?Create View Consultor_Trainee (Nome,Salario,Departamento) AsSelectEmpregados.Nome, Empregados.Salario, Departamento.NomeFrom Empregados Inner Join Departamento On (Empregados.Coddepart = Departamento.Cod)WhereEmpregados.Funcao IN (‘Trainee’,’Consultor’);25
  • 26.
    InsertO comando Inserté utilizado para inserir dados nas tabelas do banco utilizado.Estrutura:Insert Intotabela (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
  • 27.
    UpdateO comando Updateé utilizado para alterar os dados de uma tabela do banco utilizado.Estrutura:UpdatetabelaSet <atribuições>Where <Condição>Exemplos:Update EmpregadosSet Funcao = ‘Consultor’Where Funcao = ‘Trainee’Update EmpregadosSet Funcao = ‘Consultor’, Salario = Salario + 500Where Funcao = ‘Trainee’27
  • 28.
    DeleteO comando Deleteé utilizado para apagar dados de uma tabela do banco utilizado.Estrutura:Delete FromtabelaWhere <Condição>Exemplo:Delete From EmpregadosWhere Funcao = ‘Trainee’;28
  • 29.
    Commit e RollbackCommit: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 Empregados Where Funcao = ‘Trainee’;Rollback29
  • 30.
    GrantPermissão de comandosDDLGRANT {comando} TO {usuário} Permissão de objetoGRANT {comando} ON {object} TO {usuário} [ WITH GRANT OPTION]GRANT (exemplos)Grant Alter tables To igor;Grant select, insert, update, deleteOn empregados To igor;Grant All On empregados To igor; 30
  • 31.
    RevokeREVOKE {comando} ON{object} FROM {usuário}Revoke (exemplos)Revoke deleteOn empregadosFrom igor;Revoke All On empregados From igor; 31
  • 32.
    TriggersTriggers ou Gatilhossã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
  • 33.
    TriggersEstrutura de umatrigger:Create Trigger Nome_da_TriggerOn TabelaFor | 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
  • 34.
    TriggersExemplo:Create Trigger Tg_EmpregadosOnEmpregadosInsteadOfInsertAsDeclare@Nome Varchar(20), @EnderecoVarchar(30), @FuncaoVarchar(30), @CoddepartInt,@Salario Decimal(10,2)Select@Nome = Nome,@Endereco = Endereco, @Funcao = Funcao,@Coddepart = Coddepart, @Salario = SalarioFrominsertedInsertInto Empregados(Cod,Nome,Endereco,Funcao,Coddepart,Salario) values ((Selectmax(Cod)+1 From Empregados), @Nome,@Endereco,@Funcao,@Coddepart,@Salario)34
  • 35.
    Stored ProcedureA StoredProcedure é 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
  • 36.
    Stored ProcedureExemplo:Criando umaStored Procedure:Create Proceduresp_insereUsuario @CPF DECIMAL(11,0), @NOME VARCHAR(30), @EMAIL VARCHAR(30)AsINSERT INTOUSUARIO (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
  • 37.
    DúvidasContatos: E-Mail: igor.alvez@gmail.comLinkedin: http://www.linkedin.com/in/igoralves37
  • 38.
    ReferenciasSQL Magazine –Introdução a Stored Procedure:http://www.devmedia.com.br/post-2213-Introducao-as-Stored-Procedure-com-SQL-Server-2000-2005.html38