Oii Telmo, como você está?
Peço desculpas pela demora em obter um retorno.
A maioria dos bancos de dados relacionais utiliza a linguagem SQL (Structured Query Language). A linguagem possui comandos estruturados como mostrados abaixo:
SELECT id, nome FROM tabela WHERE id >= 10;
INSERT INTO tabela VALUES (1, 'joao');
UPDATE tabela SET nome = 'Pedro' WHERE id = 2
Podemos afirmar que a linguagem SQL não é estruturada.
E o que quero dizer com não estruturada?
Uma linguagem estruturada é aquela que possui comandos de desvios. Por exemplo:
var X as string
x = 1
while x > 1
x += 1
end
Não importa a linguagem usada acima. Mas podemos notar que é uma linguagem estruturada porque possui loopings e comandos de repetição.
Normalmente estas linguagens possui uma estrutura com:
- Declaração de variáveis;
- Funções ou procedures;
- Comandos orientados a objetos;
- Estruturas de desvio (IF, CASE, etc...);
- Estruturas de repetições (WHILE, FOR, etc...).
Se observarmos a sintaxe nativa ANSI da linguagem SQL não existem nenhum destes elementos mencionados anteriormente.
Logo podemos afirmar que a linguagem SQL não possui uma estrutura como um linguagem e programação de desenvolvimento. É o padrão ANSI que é seguido por quase a totalidade dos bancos.
Porém bancos de dados como Oracle, SQL Server ou MYSQL, além de suportarem o padrão ANSI de SQL, possuem, cada uma delas, uma linguagem própria estruturada que suporta comandos de SQL.
Estas linguagens não são fiscalizadas pelo padrão ANSI e por isso, cada um possui a sua própria sintaxe.
Mas todas elas mesclam estruturas com comandos SQL.
- No caso do SQL Server, da Microsoft, temos a linguagem T-SQL. Veja abaixo um exemplo:
USE AdventureWorks2012;
GO
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
SELECT MAX(ListPrice) FROM Production.Product
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear';
CREATE TABLE dept_temp AS SELECT * FROM departments;
DECLARE
dept_no NUMBER(4) := 270;
BEGIN
DELETE FROM dept_temp WHERE department_id = dept_no;
IF SQL%FOUND THEN -- delete succeeded
INSERT INTO dept_temp VALUES (270, 'Personnel', 200, 1700);
END IF;
END;
- O MYSQL possui sua própria linguagem estruturada, mas sem um nome comercial. Veja um exemplo:
DELIMITER $$
CREATE PROCEDURE LoadCalendars(
startDate DATE,
day INT
)
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE dt DATE DEFAULT startDate;
WHILE counter <= day DO
CALL InsertCalendar(dt);
SET counter = counter + 1;
SET dt = DATE_ADD(dt,INTERVAL 1 day);
END WHILE;
END$$
DELIMITER ;
Aqui na Alura oferecemos alguns cursos sobre estas linguagens, destacando:
Lembrando que você deve conhecer a linguagem SQL antes de fazer esses cursos acima.
Agora. Qual a importância do conhecimento destas linguagens no desenvolvimento do BackEnd?
Você deve entender que a execução destes scripts estruturados ocorrem diretamente no banco de dados. Ou seja: Se eu quero executar uma query (Comando SELECT) em uma tabela, percorrer todas a linhas e para cada linha efetuar um INSERT em uma outra tabela, se eu desenvolver isso em T-SQL, PL/SQL ou no MYSQL (Vai depender do banco de dados usado por você) a performance disto será "absurda" . Isso porque está sendo tudo executado a nível de banco de dados.
Se você , usando um JAVA, ou um C#, ou uma outra linguagem qualquer, caso você queira executar a mesma query jogando seu resultado em um Datatable em memória, depois fazer um looping, usando a sua linguagem de programação, onde em cada interação você efetua um INSERT, neste cenário, você vai ter que fazer uma conexão e se comunicar com o banco muitas vezes através de protocolo TCP/IP (Ou HTTP) trocando mensagens entre seu BACK END e o banco de dados. Isso será extremamente lento.
Logo caso performance seja importante basta seu programa BACK END em Java, C#, ou outra linguagem, se conectar no banco e apenas executar o script que foi desenvolvido na linguagem estruturada do banco de dados até ele finalizar.
Espero que isso tenha esclarecido suas dúvidas.
E qualquer dúvida fico a disposição.
Grande abraço e bons estudos!