#9
Aqui vamos conhecer apenas as linguagens internas do Oracle e como elas funcionam.
- Ela é desenvolvida e controlada por organismos internacionais.
- SQL é uma linguagem set-oriented (Orientada a Conjuntos).
- A linguagem possui apenas 16 comandos, mas, na prática, a codificação SQL as vezes é extremamente complicada
- Os 16 comandos são separados em 4 tipos: DML, DDL, DCL, TCL
Se você reparar as siglas são bem parecidas, então vamos decorar essas siglas.
Vamos dividir elas em 2 grupos para ficar mais fácil decorar.
Primeiro grupo
- DML e DDL, eles são bem parecidos e fácil de lembrar. A primeira sigla é para Manipulação de dados e a segunda é Definição de dados. Então vamos definir esse grupo como Manipulação e Definição de dados.
Segundo Grupo
- DCL e TCL, esse grupo também é bem parecido e fácil de lembrar, é só trocar a primeira letra. Esse grupo é referente a instruções de Controle. A primeira sigla controla a permissão sobre os Dados e a segunda sigla controla as transações DML efetuadas. Então vamos definir esse grupo como Controle de Dados e Transações.
Agora ficou mais fácil lembrar todos os comandos oferecidos pelo SQL. A segunda parte é decorar as instruções, mas se você lembrar desses grupos que criamos fica mais fácil lembrar dos comandos.
* DML (Data Manipulation Language) - Linguagem de manipulação de dados.
- Possui 5 Comandos
- Esses são os comandos mais usados em banco de dados.
- Comandos (também podem ser chamadas de instrução):
- SELECT
- INSERT
- UPDATE
- DELETE
- MERGE - Essa instrução é a menos usada, com ela é possível executar várias instruções do DML dentro de uma única instrução MERGE.
* DDL (Data Definition Language) - Linguagem de definição de dados
- Possui 6 Comandos
- Esses comandos são usados para trabalhar com a estrutura e organização do banco de dados e das tabelas.
- Comandos (também podem ser chamadas de instrução):
- CREATE
- ALTER
- DROP
- RENAME
- TRUNCATE
- COMMENT
* DCL (Data Control Language) - Linguagem de Controle de Dados
- Possui 2 Comandos
- Esses comandos são utilizados para gerenciar a parte de segurança do banco de dados, com esses comandos é possível Dar e Retirar permissões de usuários.
- Comandos (também podem ser chamados de instrução):
- GRANT - Esse comando fornece o acesso ou privilégios aos usuários sobre os objetos do banco de dados.
- REVOKE - Esse comando remove o acesso ou privilégios aos usuários sobre os objetos do banco de dados.
* TCL (Transaction Control Language) - Linguagem de Controle de Transações
- Possui 3 Comandos
- São intruções para controle das transações DML, com ele é possível desfazer ou confirmar uma transação realizada.
- Comandos (também podem ser chamadas de instrução):
- COMMIT - Esse comando confirma uma transação realizada, essa confirmação é irreversível. (Transação: INSERT, UPDATE, DELETE)
- ROLLBACK - Esse comando é usado para desfazer uma transação realizada. (Transação: INSERT, UPDATE, DELETE)
- SAVEPOINT - Esse comando define um ponto de restauração, com ele você cria um ponto de referência e caso ocorra um ROLLBACK a ação retorna até o SAVEPOINT criado.
Mais à frente vou explicar cada um desses comandos do SQL, então não se preocupem.
A única linguagem de uso inevitável em um banco de dados é a SQL (Structured Query Language, ou Linguagem de Consulta Estruturada).
A SQL é a linguagem responsável por realizar toda a comunicação com o banco de dados, mas, ela não pode ser usada sozinha, pois, ela não possui os recursos reais para desenvolver interfaces de usuário e não possui as estruturas procedurais para manipular linhas individualmente.
Resumindo: SQL é a linguagem usada para comunicar com o banco de dados, mas ela não consegue fazer essa comunicação sozinha, ela precisa de outras linguagens que ofereçam suporte a essa comunicação.
As outras 2 linguagens disponíveis dentro do banco de dados Oracle é a PL/SQL e Java, e essas 2 linguagens preenchem a lacuna deixada pela SQL.
Vamos conhecer PL/SQL, essa é uma linguagem de terceira geração (3GL) e ela é de propriedade da Oracle.
A PL/SQL possui os recursos e construções procedurais de praxe, como ramificações condicionais com base no loop iterativo e o if-then-else.
Com ela é possível interatigir de forma dinâmica com instruções SQL e executar várias ações de CRUD baseadas no resultado das SQLs.
Vamos conhecer Java, essa linguagem também vem internamente no Oracle, com ela também é possível executar instruções SQL e executar várias ações de CRUD baseadas no resultado das SQLs.
Para se tornar um DBA Oracle é obrigatório conhecer as linguagens SQL e PL/SQL, o conhecimento em Java é raramente obrigatório, a partir da versão 9i o uso de Java ficou menos comum, pois se tornou possível executar servlets e EJBs na camada intermediária do servidor.
No Oracle o componente Intermedia e Text, são escritos em java e um DBA normalmente irá precisar ativar o Java no banco de dados, mas o DBA não vai precisar de depurar ou ajustar o código Java, desta forma, o DBA não irá precisar de conhecimentos avançados em Java.
Observação:
Muitas pessoas questionam porque o comando TRUNCATE não pertence ao grupo DML já que ele executa a mesma ação do DELETE. Então vamos a explicação do porque o TRUNCATE é um DDL de corpo e alma.
A função do comando TRUNCATE é de excluir todas as linhas de uma tabela, ele não aceita o uso da condição WHERE que limita e restringe a instrução, o comando DELETE permite o uso da instrução WHERE. Outra diferença entre o comando TRUNCATE e DELETE é que quando é usado o TRUNCATE ele também altera a estrutura da tabela, se a tabela possui uma coluna auto-incremento o cursor que aponta para esse indice é alterado e volta para o inicio, com o uso do comando DELETE mesmo excluindo todos os registros o cursor continua apontando para o último indice que estava cadastrado.
O uso do comando TRUNCATE é bem mais rápido do que o uso do comando DELETE, pois, o comando TRUNCATE não usa o espaço de TableSpace do UNDO ou Redo Log, desta forma se você usar o TRUNCATE as informações não podem mais ser recuperadas pois não existe a opção de ROLLBACK para instrução TRUNCATE, ao contrário do comando DELETE que ao ser executado copia os dados para a TableSpace do UNDO e registra as informações no Redo Log antes de serem exluídos, e se usar o comando ROLLBACK os dados podem ser recuperados.
Outra situação importante que ao usar o comando TRUNCATE nenhuma TRIGGER é executada, usando o comando DELETE todas as TRIGGER referentes ao delete são disparadas.
Se a tabela possuir alguma restrição a chave estrangeira o comando TRUNCATE ou o comando DELETE não iram funcionar, até que esta restrição seja retirada.
Resumindo:
O TRUNCATE também altera a estrutura da tabela então é um DDL, o DELETE tem acesso somente as linhas então é um DML. Se você usar o TRUNCATE os dados são perdidos definitivamente. Você não pode limitar a quantidade de linhas a serem excluídas usando o TRUNCATE, com ele é tudo ou nada. Então usem esse comando somente quando for muito essencial, se não use apenas o DELETE.
Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.
Abraço e bons estudos.
Comentários
Postar um comentário