Banco de dados e SQL

Banco de dados e SQL

(Parte 4 de 8)

Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de comandos de controle como Grant e Revoke.

A Linguagem SQL tem como grandes virtudes sua capacidade de gerenciar índices, sem a necessidade de controle individualizado de índice corrente, algo muito comum nas linguagens de manipulação de dados do tipo registro a registro. Outra característica muito importante disponível em SQL é sua capacidade de construção de visões, que são formas de visualizarmos os dados na forma de listagens independente das tabelas e organização lógica dos dados.

Outra característica interessante na linguagem SQL é a capacidade que dispomos de cancelar uma série de atualizações ou de as gravarmos, depois de iniciarmos uma seqüência de atualizações. Os comandos Commit e Rollback são responsáveis por estas facilidades.

Devemos notar que a linguagem SQL consegue implementar estas soluções, somente pelo fato de estar baseada em Banco de Dados, que garantem por si mesmo a integridade das relações existentes entre as tabelas e seus índices.

O Ambiente SQL Dispomos na Ibero de dois softwares destinados a linguagem SQL o ISQL e o WinSQL.

O ISQL faz parte do pacote Ideo e permite construirmos Banco de Dados e tabelas diretamente pelo interpretador SQL, bem como acessarmos as Bases de Dados construídas no Ideo. O ISQL pode gerar Banco de Dados em seu ambiente proprietário (Watcom, hoje pertencente a Symantech) ou ainda nos consagrados Banco de Dados Oracle, SyBase, Ingres (Computer Associates), DB/2 (IBM) e Informix. Devido as origens do Ideo, o Banco de Dados SQL Server da Microsoft não é suportado, pois este Banco de Dados originou-se na microinformática e somente recentemente a Sapiens migrou seu software dos Ambientes Mainframe e Unix.

Já o WinSQL é um ambiente inteiramente gráfico (ao contrário do ISQL que guarda fortes características do ambiente em Mainframe onde se originou), destinado ao apredinzado, portanto somente pode criar Banco de Dados em seu formato proprietário.

Os comandos do WinSQL por serem visuais, não necessitam de maior esclarecimento além daqueles já contidos no Help. Já o ISQL apesar de possuir um Help bastante completo necessita, em nosso entender, de alguns esclarecimentos iniciais.

Uma série de comandos do interpretador, que funciona de forma análoga àquela existente no dBase modo interativo, podem ser utilizados pelo usuário. Não obstante alguns comandos tenham nome idêntico a alguns comandos do DOS, devemos notar que muitas vezes sua sintaxe é bastante diversa daquele sistema operacional. Vamos destacar os seguintes comandos:

\EDIT - Carrega o editor de bloco de notas do windows, o qual serve para a criação de arquivos para serem executados no Ideo. Ex: \edit teste.sql

\CD - Mostra o diretório onde serão gravados os arquivos *.sql, *.dic *.dat.

Permite alterar para determinado diretório (\CD DADO, fará com que o diretório corrente passe a ser C:\DADO, caso o diretório corrente fosse a raiz. Permite retornar ao diretório de nível inferior (\CD ..).

Atenção este comando não é análogo ao Change Dir do DOS, na medida em que não permite a mudança direta de um subnível do diretório X para um diretório Y por exemplo.

\DEFAULT <drive> - permite alterarmos o drive corrente.

Ex: \DEFAULT F:

\INCLUDE - Executa arquivos *.sql. O arquivo .sql deverá conter uma série de instruções SQL.

Ex: \include teste.sql

@< file > ; - Também executa arquivos *.sql.

Ex: @teste.sql;

- Finaliza a sessão do ISQL. ou ( \QUIT )

COMMIT; - Confirma a transação.

ROLLBACK; - Desfaz a transação.

SHOW <tabela>; - Mostra os nomes das tabelas existentes em determinado banco de dados.

Ex: SHOW tables;

SHOW FIELDS FOR <tabela>; - Mostra os campos de determinada tabela.

Ex: SHOW FIELDS FOR ATOR;

SHOW INDEXES FOR <tabela>; - Lista de indices da tabela.

SHOW RELATIONSHIPS FOR <tabela>; - Lista de relacionamentos da tabela.

LIST <tabela> ; - Lista conteúdo da tabela.

Estudo Dirigido

Consideramos a linguagem SQL eminentemente prática, desta forma criamos um exmplo completo e propomos um exercício análogo, para tornar o estudante apto a manipular a linguagem SQL de maneira prática, em conformidade a filosofia eminentemente prática da Linguagem SQL.

O exemplo apresentado nesta apostila já está disponível para sua utilização do diretório \IDEO\SQL, bastando para isso você copiar este exemplo para seu diretório e iniciar os testes de forma simultânea a sua apresentação pelo professor.

É conveniente que você procure montar o exercício clássico (mundo), de forma a testar todos os conhecimentos adquiridos. Para tanto analise cuidadosamente o exercício proposto a seguir, e construa as relações, tabelas e queries adequadas ao final de cada exemplo.

Exercício: Elabore Banco de Dados Mundo que contenha as seguintes tabelas: Continente, País e Cidade. Observe que uma cidade deverá pertencer exclusivamente a um país e que cada país deverá estar cadastrado no continente onde se localizar sua área mais importante. Assim não obstante grande parte do território russo fazer parte Ásia, a Rússia será considerada fazendo parte da Europa. Assim teríamos basicamente uma relação do tipo:

Cidade --> País --> Continente

PARTE I - Comandos de Modificações do Esquema e Criação de Banco de Dados

Comando Create Este comando permite a criação de tabelas no banco de dados ou mesmo de sua criação.

Sintaxe: CREATE DATABASE < nome_db >; onde: nome_db - indica o nome do Banco de Dados a ser criado.

Sintaxe:

CREATE TABLE < nome_tabela > ( nome_atributo1 < tipo > [ NOT NULL ], nome_atributo2 < tipo > [ NOT NULL ], nome_atributoN < tipo > [ NOT NULL ] ) ;

nome_table-indicaonomedatabelaasercriada.
tipo-indicaadefiniçãodotipodeatributo(integer(n),char(n),
real(n,m), date).

onde: nome_atributo - indica o nome do campo a ser criado na tabela. n- número de dígitos ou de caracteres m- número de casas decimais

Agora vamos criar uma tabela. Use o editor para salvar em um arquivo ou digite na linha de comando do ISQL. CREATE DATABASETRABALHO;

O comando acima criou um Banco de Dados, porém este na verdade não passa de uma abertura no diretório, pois não conta com nenhuma tabela.

Agora criaremos as tabelas que estarão contidas no Banco de Dados TRABALHO.

A primeira Tabela será a de Departamentos (DEPT). Esta tabela conterá além dos campos também sua chave primária, suas chaves estrangeiras e também seus índices. A segunda tabela será a de Empregados (EMP), que também será criada.

Não devemos esquecer de primeiramente abrirmos o Banco de Dados. Diferentemente do que ocorre em alguns aplicativos, em SQL o fato de criarmos um Banco de Dados, não significa que o banco recém criado já está preparado para utilização. A instrução a seguir, providencia a abertura do Banco de Dados criado.

Agora estamos prontos para criarmos as tabelas necessárias. Lembramos aos Estudantes, que o Arquivo TABS.SQL, contém todas as instruções necessárias para criação do Banco de Dados Trabalho e de suas tabelas. Já o Arquivo DADOS.SQL irá popular estas tabelas. Para efeitos didáticos, criamos as tabelas de forma que sua população, em outras palavras os dados, sejam facilmente referenciáveis pelos estudantes. Assim sendo, na tabela de departamentos, contamos com 5 departamentos, cada um deles tendo seu gerente. Todos os “gerentes” tem nomes de cantoras brasileiras (Gal Costa, Marina Lima, etc), todos os “operários” tem nomes de jogadores de futebol, todas as vendedoras tem nomes de jogadoras de volei, todas as balconistas tem nome de jogadoras de basquete e o presidente da empresa exemplo, tem o mesmo nome do presidente do Brasil. Desta forma os testes devem resultar em grupos bastante definidos. Assim se você estiver listando Gerentes e aparecer um homônimo da Ana Paula (jogadora de volei), verifique sua query atentamente, pois muito provavelmente a mesma estará errada.

A seguir código necessário a criação da tabela Departamento e seu índice:

(DepNumeinteger(4) notnull,
DepNomechar(20) notnull,
DepLocachar(20) notnull,

create table Dept DepOrca integer(12,2), primary key (DepNume) ); create unique index DepNum on Dept (DepNume asc);

Note-se que a chave primária já está definida juntamente com o registro da tabela. A criação do índice, que por razões óbvias deve ser criado após a tabela, naturalmente é um comando totalmente independente do primeiro create, que serviu para criar a tabela e suas característica básicas.

(Parte 4 de 8)

Comentários