SQL (Structured Query Language) é uma linguagem padronizada para definir e manipular dados em um banco de dados relacional. De acordo com o modelo relacional de dados, o banco de dados é percebido como um conjunto de tabelas, os relacionamentos são representado por valores nas tabelas e os dados são recuperados especificando uma tabela de resultados que pode ser derivada de um ou mais tabelas de base. As consultas assumem a forma de uma linguagem de comando que permite que você selecionar, inserir, atualizar, encontrar a localização dos dados e assim por diante.
Em Delphi: TQuery
Se você usar o SQL em seus aplicativos, familiarizar-se-á com o TQuery componente. O Delphi permite que seus aplicativos usem a sintaxe SQL diretamente através do componente TQuery para acessar dados das tabelas Paradox e dBase (usando SQL local - subconjunto do SQL padrão ANSI), Bancos de dados no Local InterBase Server e Bancos de dados no banco de dados remoto servidores.
O Delphi também suporta consultas heterogêneas em mais de um servidor ou tipo de tabela (por exemplo, dados de uma tabela Oracle e uma tabela Paradox) .TQuery possui uma propriedade chamada
O TQuery encapsula uma ou mais instruções SQL, as executa e fornece métodos pelos quais podemos manipular os resultados. As consultas podem ser divididas em duas categorias: aquelas que produzem conjuntos de resultados (como um SELECT ) e aqueles que não o fazem (como um ATUALIZARou INSERIR declaração). Use TQuery. Abra para executar uma consulta que produz um conjunto de resultados; use TQuery. ExecSQL para executar consultas que não produzem conjuntos de resultados.
As instruções SQL podem ser estático ou dinâmico, ou seja, eles podem ser definidos no tempo de design ou incluir parâmetros (TQuery. Params) que variam em tempo de execução. O uso de consultas parametrizadas é muito flexível, pois é possível alterar a visualização e o acesso de um usuário a dados em tempo real em tempo de execução.
Todas as instruções SQL executáveis devem ser preparadas antes de poderem ser executadas. O resultado da preparação é a forma executável ou operacional da declaração. O método de preparação de uma instrução SQL e a persistência de sua forma operacional distinguem o SQL estático do SQL dinâmico. No momento do design, uma consulta é preparada e executada automaticamente quando você define o inquerir Propriedade ativa do componente para True. No tempo de execução, uma consulta é preparada com uma chamada para Preparar e executada quando o aplicativo chama os métodos Open ou ExecSQL do componente.
Um TQuery pode retornar dois tipos de conjuntos de resultados: "viver"como no componente TTable (os usuários podem editar dados com controles de dados e, quando ocorre uma chamada para postagem, as alterações são enviadas ao banco de dados)"somente leitura"apenas para fins de exibição. Para solicitar um conjunto de resultados ao vivo, defina a propriedade RequestLive de um componente de consulta como True e esteja ciente de que a instrução SQL deve atender a alguns requisitos específicos (sem ORDER BY, SUM, AVG etc.)
Uma consulta se comporta de várias maneiras, como um filtro de tabela e, de certa forma, uma consulta é ainda mais poderosa que um filtro, pois permite acessar:
- mais de uma tabela por vez ("ingressar" no SQL)
- um subconjunto especificado de linhas e colunas de suas tabelas subjacentes, em vez de sempre retornar todas elas
Exemplo Simples
Agora vamos ver um pouco de SQL em ação. Embora possamos usar o Assistente de Formulário de Banco de Dados para criar alguns exemplos SQL para este exemplo, faremos isso manualmente, passo a passo:
1. Coloque um componente TQuery, TDataSource, TDBGrid, TEdit e TButton no formulário principal.
2. Defina a propriedade DataSet do componente TDataSource como Query1.
3. Defina a propriedade DataSource do componente TDBGrid como DataSource1.
4. Defina a propriedade DatabaseName do componente TQuery como DBDEMOS.
5. Clique duas vezes na propriedade SQL de um TQuery para atribuir a instrução SQL a ele.
6. Para fazer com que a grade exiba dados em tempo de design, altere a propriedade Active do componente TQuery para True.
A grade exibe dados da tabela Employee.db em três colunas (Nome, Sobrenome, Salário), mesmo que Employee.db possui 7 campos e o conjunto de resultados é restrito aos registros em que o Nome começa com 'R'.
7. Agora atribua o seguinte código ao evento OnClick do Button1.
procedimento TForm1.Button1Click (Remetente: TObject); início Query1.Close;{feche a consulta}// atribui nova expressão SQL Query1.SQL.Clear; Query1.SQL.Add ('Select EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Salary>' + Edit1.Text); Query1.RequestLive: = true; Query1.Open; {consulta aberta + exibição de dados}fim;
8. Execute seu aplicativo. Quando você clica no botão (desde que a Edição 1 tenha um valor de moeda válido), a grade exibirá o Campos EmpNo, FirstName e LastName para todos os registros onde o salário é maior que a moeda especificada valor.
Neste exemplo, criamos uma instrução SQL estática simples com conjunto de resultados ao vivo (não alteramos nenhum registro exibido) apenas para fins de exibição.