Using DDL Statements to Create and Manage Tables

Bem, existem diversos tipos de objetos no Banco de Dados Oracle. Não vou listar todos aqui, apenas o que são interessantes para o exame, que não são muitos, mas são os mais importantes para um desenvolvedor. Que são:

  • Table
  • Views
  • Synonyms
  • Indexes
  • Sequences
  • Users
  • Roles
  • Constraints
  • Vamos ver rapidamente uma breve definição desses objetos.

    Table – É a estrutura na qual armazenamos todos os nossos dados, na qual já conhecemos muito bem.A estrutura é composta por linhas e colunas e cada coluna tem o seu tipo de dados.

    Index – Este é um objeto feito para acelerar a pesquisa em um dada tabela. Bem similar a um índice de um livro, que ao invés de pesquisar algo no livro inteiro vamos olhar no index que diz a página exata onde se encontra essa informação.

    View – Nada mais é que apenas um SELECT nomeado salvo. Então ao invés de executar um SELECT em uma tabela podemos fazer isso no VIEW que pode simplificar todo o processo ou esconder algo.

    Sequence – Serve para gerar números em sequencia que nunca se repitam.

    Synonym – Vimos anteriormente algo chamado de Alias que servia para nomear uma coluna ou uma tabela em um SELECT por exemplo. Um Synonym nada mais é que um Alias para uma TABLE ou VIEW.

    Constraint Lógica definida na tabela. Podemos definir regras de negócio e restringir o que pode ser feito e como pode ser feito. Veremos mais em detalhes mais adiante.

    User – O usuário que detém vários objetos, como alguns que já foram mencionados acima.

    Roles – São privilégios que podem ser liberados a um dado usuário.

    Schema

    Bem, com respeito ao esquema algumas pessoas se perdem um pouco na sua definição e se confundem com outros banco de dados. No Oracle o usuário nada mais é que um usuário que se conecta ao banco de dados com um nome de usuário e uma senha. E o Schema é a coleção de objetos que esse usuário possui. O Schema tem o mesmo nome do usuário. Se criamos um usuário USUARIO será criado também um schema com o nome USUARIO que irá ter todos os objetos desse usuário, como tabelas, views e etc.

    Vejamos um exemplo para melhorar a visualização disso. Bem, em vários exemplos estamos utilizando o usuário HR que tem um schema com o mesmo nome HR. Nesse schema, o usuário possui vários objetos, como a tabela EMPLOYEES que já utilizamos várias vezes aqui. É importante ressaltar também que o identificador dessa tabela nunca é apenas o nome da tabela, e sim o nome do usuário ou schema seguido de um ponto e o nome do objeto, no caso da tabela EMPLOYEES é HR.EMPLOYEES. Não precisamos colocar o HR. nos nossos exemplos pois já estamos conectado com o usuário HR. Mas se tivéssemos conectado com outro usuário seria necessário informar o HR. antes do nome da tabela.

    Ao criamos objetos que pertencem a algum schema devemos ter alguns cuidados e seguirmos alguns regras, que são estas:

  • Deve ter entre 1 e 30 carácteres
  • Não deve usar palavras reservadas (Ex SELECT)
  • Deve começar com uma letra
  • Só pode conter letras, números e os seguintes carácteres: _,$ e #.
  • Uma observação é que tudo que criamos em letras minúsculas serão convertidas para maiúsculas. Mas com o uso de aspas duplas (“”) podemos quebrar todas essas regras com exceção do tamanho máximo de de 30 carácteres. Mas sempre que nos referimos a esse objeto devemos sempre incluir as aspas duplas.

    Bem, vimos agora o que é um schema e que vários objetos devem pertencer a um schema, mas isso nem sempre é verdade pois nem todos os objetos pertencem a um schema, os objetos do banco de dados são então de duas categorias, objetos do schema e objetos que não são de schema. Objetos do schema são aquelas que são pertencidos por um usuário, exemplos disso são: tabelas, constraints, views, indexes, sequências e synonym. Agora existem outros objetos que não pertencem a nenhum esquema e sim ao banco de dados em sí que podem ser: usuários, roles e public synonym.

    Namespace

    Vimos anteriormente que o identificador único de um objeto seria o schema.nome. Mas certos objetos em schemas diferentes poderiam ter o mesmo nome, pois o seu identificador único seria diferente, schema1.nome # schema2.nome, Mas isso nem sempre é verdade, pois dentro de um mesmo schema existem objetos diferentes que podem e não podem ter o mesmo nome. Para um entendimento completo devemos entender o namespace, que são grupos tipos de objetos, veja uma ilustração demonstrando os diferentes namespace.

    NAMESPACE

    NAMESPACE

    Objetos no mesmo namescpace devem ter nomes diferentes, mas objetos em namespace diferentes podem ter o mesmo nome, mesmo sendo no mesmo schema, um exemplo disso seria uma tabela e uma constraint com o mesmo nome mesmo pertencendo ao mesmo schema, vejam que isso é possível pois estão em namespaces diferentes.

    Datatype

    Bem, antes de vermos como criamos uma tabela no banco de dados, vejamos os tipos de dados diferentes que podemos utilizar para as colunas das tabelas, vamos dividir em carácteres, números e datas.

    Carácteres

    CHAR(n) – Tipo de dados com tamanho fixo, ou seja, caso adicionemos menos carácteres que n, seja adicionados espaços em branco até completar o tamanho n

    VARCHAR2(n) – Mesma coisa que o CHAR mas com tamanho variável, caso o tamanho dos carácteres que seja incluído nessa coluna seja menor do que n o espaço não será utilizado.

    NVARCHAR2(n) – Mesma coisa que VARCHAR2 mas os dados são armazenados em UNICODE.

    Numérico

    Number(n,m) – Dados numéricos onde a quantidade de dígitos será pelo argumento n e m será a quantidade que dos dígitos n ficará atrás do ponto decimal. São opcionais, caso não seja especificado n será o máximo, ou seja 38, e m será 0. O m pode ser de -84 até 127, caso seja negativo significa quantos dígitos significativos a esquerda do ponto decimal será arredondado.

    Integer – Mesma coisa que o Number mas com escala 0.

    Date

    Date – Além das informações de dia, mês, ano, hora e segundos armazena também o século e pode ir de primeiro de janeiro de 4712 AEC (a.C.) até 31 de dezembro de 9999 EC (d.C.)

    Timestamp(n) – Mesma coisa que DATE mas adiciona as frações de segundos que tem precisão n que pode ir de 1 até 9, é opcional e caso seja omitido será considerado o valor 6.

    Timstamp(n) With Time Zone – Mesma coisa que o Timestamp mas armazena também a informação do fuso horário.

    Timstamp(n) With Local Time Zone – Diferentemente do Timestamp acima, ele não armazena o fuso horário, mas quando é retornado para o usuário é apresentado no fuso horário da sessão.

    Interval Year(n) to Month – Armazena dados em período de anos e meses, muito útil para armazenar a diferença entre duas datas. n é usado para informar o número de dígitos do ano, que pode ir de 1 até 9, o padrão é 2 que é assumido quando é omitido.

    Interval Day(n1) to Second(n2) – Armazena um período de dias e segundos. Tanto n1 e n2 é a precisão. São valores de 0 a 9 e o valor padrão de n1 é 2 e n2 é 6.

    Large Objects (LOBs)

    BLOB – Abreviação de Binary Large Object. Usado para armazenar grande informação, como vídeos. O tamanaho é praticamente ilimitado, calculado utilizando algumas variáveis do sistema.

    CLOB – Utilizado para armazenar textos muito grandes.

    NCLOB – Mesma coisa que CLOB, mas utilizado o conjunto de carácteres UNICODE.

    BFILE – Nada mais é que apenas um apontador para um arquivo no sistemas de arquivos, o tamanho deste arquivo é limitado a 4GB.

    Bem, vamos terminando este post por aqui para não ficar longo demais, mas no próximo dou continuidade, até lá!

    Anúncios

    Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

    Marcado com: , , , , , , , , , , , , , , , , , ,
    Publicado em Sem categoria

    Deixe um comentário

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

    Foto do Google

    Você está comentando utilizando sua conta Google. Sair /  Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

    Conectando a %s

    Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

    Esse Blog é reconhecido pela
    Certificações
    Sou articulista

    Clique para seguir este blog e receber notificações via email de novos posts.

    Tércio Costa

    Tércio Costa

    Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

    Links Pessoais

    Serviços verificados

    Visualizar Perfil Completo →

    Total de Visualizações da Página
    • 138.077 Visualizações
    %d blogueiros gostam disto: