DB2 - Exemplos simples - CREATE TABLE



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - CREATE TABLE

Tables are logical objects in Db2 that stores data.
Tables are made up of columns and rows, like a spreadsheet.
The rows of a table do not have a specified order.
However, the columns of the table have the order that is specified when the table created.
A column in a table is associated with a specific data type e.g., character string, numeric, or temporal.
A column always stores values of the same type. A table can have one or more columns.
Typically, a table contains multiple columns.
To create a new table, you use the CREATE TABLE statement.
The following shows the simplified syntax of the CREATE TABLE statement:

As tabelas são objetos lógicos no Db2 que armazenam dados.
As tabelas são compostas por colunas e linhas, como uma planilha.
As linhas de uma tabela não têm uma ordem especificada.
No entanto, as colunas da tabela têm a ordem especificada quando a tabela é criada.
Uma coluna em uma tabela está associada a um tipo de dado específico, por exemplo, string de caracteres, numérico ou temporal.
Uma coluna sempre armazena valores do mesmo tipo.
Uma tabela pode ter uma ou mais colunas.
Normalmente, uma tabela contém várias colunas.
Para criar uma nova tabela, você usa a instrução CREATE TABLE.
O seguinte mostra a sintaxe simplificada da instrução CREATE TABLE:

    CREATE TABLE [schema_name.]table_name (
           column_1 data_type NOT NULL,
           column_2 data_type DEFAULT value,
           column_3 data_type CHECK(expression),
           ...,
           table_constraints
    );

In this syntax:

  • First, specify the name of the table that you want to create.
    The name of the table must be unique within the schema.
    You can optionally specify the schema to which the table belongs.
  • Second, specify a list of columns of the table.
    Each column is associated with a specific data type and may have constraint such as NOT NULLand CHECK constraint.
  • Third, specify the table constraint such as PRIMARY KEY, FOREIGN KEY and CHECK constraints.

Nesta sintaxe:

  • Primeiro, especifique o nome da tabela que você deseja criar.
    O nome da tabela deve ser exclusivo no esquema.
    Você pode, opcionalmente, especificar o esquema ao qual a tabela pertence.
  • Em segundo lugar, especifique uma lista de colunas da tabela.
    Cada coluna está associada a um tipo de dados específico e pode ter restrições como NOT NULL e restrição CHECK.
  • Em terceiro lugar, especificar a restrição de tabela, como PRIMARY KEY, FOREIGN KEY e restrições CHECK.

The following example uses the CREATE TABLE statement to create a new table named stores:
O exemplo a seguir usa a CREATE TABLEinstrução para criar uma nova tabela chamada stores:

    CREATE TABLE stores(
           store_id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
           store_name VARCHAR(150) NOT NULL,
           address_line_1 VARCHAR(255) NOT NULL,
           address_line_2 VARCHAR(100),
           city_id INT NOT NULL,
           state_id INT NOT NULL,
           zip_code VARCHAR(6),
           PRIMARY KEY (store_id)
    );

In this stores table:

  • The store_id column is an integer column.
    The GENERATED BY DEFAULT AS IDENTITY clause marks the store_id column as an identity column so that when you insert a new row into the stores table, Db2 will automatically generate a sequential integer for the store_id column.
    The NOT NULL constraint ensures that the store_id will not accept any NULL value.
  • The store_name is a varying character (VARCHAR) column with a maximum length of 150.
    It has a NOT NULL constraint that will enforce non-null values.
  • The address_line_1 is also a varying character column with a maximum length of 255 and does not accept NULL.
  • The address_line_2 is a varying character column with a maximum length of 100. The address_line_2 is a nullable column so it can store NULL values.
  • The city_id and state_id are integer columns. They accept NULL values.
  • The zip_code column is a varying character column with a maximum length of 6.
    It is a nullable column.
  • The store_id is the primary key column of the stores table specified by the PRIMARY KEY constraint at the end of the statement.
    It means that the store_id will store unique values that identify all rows of the table.

After executing the CREATE TABLE statement, you will find the stores table appears in the database catalog.
The stores table is empty once created.
You can view its content by using the following SELECT statement.

Nesta tabela stores:

  • A coluna store_id é uma coluna inteira.
    A cláusula GENERATED BY DEFAULT AS IDENTITY marca a coluna store_id como uma coluna de identidade para que, ao inserir uma nova linha na tabela stores, o Db2 gere automaticamente um inteiro sequencial para a coluna store_id.
    A restrição NOT NULL garante que o store_id não aceitará nenhum valor NULL.
  • O store_name é uma coluna VARCHAR de character ( ) variável com comprimento máximo de 150.
    Ele tem uma restrição NOT NULL que impõe valores não nulos.
  • O address_line_1 também é uma coluna de caracteres variáveis com comprimento máximo de 255 e não aceita NULL.
  • O address_line_2 é uma coluna de caracteres variáveis com um comprimento máximo de 100.
    O address_line_2 é uma coluna anulável, portanto, pode armazenar valores NULL.
  • O city_ide state_id são colunas inteiras.
    Eles aceitam valores NULL.
  • A coluna zip_code é uma coluna de caracteres variáveis com um comprimento máximo de 6.
    É uma coluna anulável.
  • O store_id é a coluna de chave primária da tabela stores especificada pela restrição PRIMARY KEY no final da instrução.
    Isso significa que o store_id armazenará valores exclusivos que identificam todas as linhas da tabela.

Depois de executar a instrução CREATE TABLE, você encontrará que a tabela stores aparece no catálogo do banco de dados.
A tabela stores está vazia depois de criada.
Você pode visualizar seu conteúdo usando a declaração SELECT.

Example 1 - Exemplo 1:

Create a table TB_TAB1 in database DB_DB1 and tablespace TS_TS1 with the following specifications with the column level constraints and with the implicit constraint names.
Crie uma tabela TB_TAB1 no banco de dados DB_DB1 e espaço de tabela TS_TS1 com as seguintes especificações com as restrições de nível de coluna e com os nomes de restrição implícitos.

Column Name Data Type Length Constraint Remarks
TAB1_COL1 Integer Primary Key
Chave primária
TAB1_COL2 Integer Not Null
TAB1_COL3 Varchar 5 foreign key to the ZIP column of the ZIPCODE table- if a row in the ZIPCODE table is deleted, any rows with the same zip code are to be deleted from the TAB1 table
chave estrangeira para a coluna ZIP da tabela ZIPCODE - se uma linha na tabela ZIPCODE for excluída, todas as linhas com o mesmo CEP devem ser excluídas da tabela TAB1
TAB1_COL4 Date Current date should be inserted by default
A data atual deve ser inserida por padrão
TAB1_COL5 Char 20 Unique
TAB1_COL6 Integer Should accept the values which are less than 100. Null value is allowed.

Let see how to code a CREATE TABLE statement below.
Vamos ver como codificar uma instrução CREATE TABLE abaixo.

    CREATE TABLE TB_TAB1
        (TAB1_COL1 INTEGER NOT NULL PRIMARY KEY,
         TAB1_COL2 INTEGER NOT NULL,
         TAB1_COL3 VARCHAR(5) REFERENCES ZIPCODE(ZIP)
                   ON DELETE CASCADE,
         TAB1_COL4 DATE WITH DEFAULT,
         TAB1_COL5 CHAR(20) NOT NULL UNIQUE,
         TAB1_COL6 INTEGER CHECK(TAB1_COL6 < 100))
                   IN DB_DB1.TS_TS1;

Explanation:

  • TAB1_COL1 INTEGER NOT NULL PRIMARY KEY: When you define a column as Primary Key, it should be defined with "Not Null" (The primary key column should not contain Null values).
  • TAB1_COL5 CHAR (20) NOT NULL UNIQUE: When you define a column with the unique constraint, it should be defined with "Not Null" (The unique constraint column should not contain Null values).
  • TAB1_COL4 DATE WITH DEFAULT: During insert if you do not provide a value for this column, then the default value of "Current Date" for the "Date" variable will be inserted.

Explicação:

  • TAB1_COL1 INTEGER NOT NULL PRIMARY KEY: Quando você define uma coluna como uma chave primária, ela deve ser definida como "Not Null" (a coluna da chave primária não deve conter valores nulos).
  • TAB1_COL5 CHAR (20) NOT NULL UNIQUE: Quando você define uma coluna com a restrição única, ela deve ser definida como "Not Null" (A coluna da restrição única não deve conter valores Nulos).
  • TAB1_COL4 DATE WITH DEFAULT: Durante a inserção, se você não fornecer um valor para esta coluna, o valor padrão de "Current Date" para a variável "Date" será inserido.

Example 2 - Exemplo 2:

Create a table TB_TAB1 in database DB_DB1 and tablespace TS_TS1 with the following specifications with the table level constraints by naming the constraints exclusively. Crie uma tabela TB_TAB1 no banco de dados DB_DB1 e espaço de tabela TS_TS1 com as seguintes especificações com as restrições de nível de tabela, nomeando as restrições exclusivamente.

Column Name Data Type Length Constraint Remarks
TAB1_COL1 Integer Primary Key
Chave primária
TAB1_COL2 Integer Not Null
TAB1_COL3 Varchar 5 foreign key to the ZIP column of the ZIPCODE table- if a row in the ZIPCODE table is deleted, any rows with the same zip code are to be deleted from the TAB1 table
chave estrangeira para a coluna ZIP da tabela ZIPCODE - se uma linha na tabela ZIPCODE for excluída, todas as linhas com o mesmo CEP devem ser excluídas da tabela TAB1
TAB1_COL4 Date Current date should be inserted by default
A data atual deve ser inserida por padrão
TAB1_COL5 Char 20 Unique
TAB1_COL6 Integer Should accept the values which are less than 100. Null value is allowed.
Deve aceitar os valores que são menores que 100. Valor nulo é permitido.

Let see how to code a CREATE TABLE statement below.
Vamos ver como codificar uma instrução CREATE TABLE abaixo

    CREATE TABLE TB_TAB1
          (TAB1_COL1 INTEGER NOT NULL,
           TAB1_COL2 INTEGER NOT NULL,
           TAB1_COL3 VARCHAR(5),
           TAB1_COL4 DATE WITH DEFAULT,
           TAB1_COL5 CHAR(20) NOT NULL,
           TAB1_COL6 INTEGER NOT NULL,
               CONSTRAINT TAB1_COL1_PK PRIMARY KEY(TAB1_COL1),
               CONSTRAINT TAB1_COL3_FK FOREIGN KEY(TAB1_COL3)
           REFERENCES ZIPCODE(ZIP),
               CONSTRAINT TAB1_COL5_COL6_UK UNIQUE(TAB1_COL5,TAB1_COL6),
               CONSTRAINT TAB1_COL6_CK CHECK(TAB1_COL6 < 100))
           IN DB_DB1.TS_TS1;

Explanation - Explicação:

CONSTRAINT TAB1_COL5_COL6_UK UNIQUE(TAB1_COL5,TAB1_COL6):
As the two columns TAB1_COL5 and TAB1_COL6 need to have unique constraints, you have combined and created this constraint and these two columns are defined with NOT NULL clause.

CONSTRAINT TAB1_COL5_COL6_UK UNIQUE (TAB1_COL5, TAB1_COL6):
Como as duas colunas TAB1_COL5 e TAB1_COL6 precisam ter restrições exclusivas, você combinou e criou esta restrição e essas duas colunas são definidas com a cláusula NOT NULL.

Example 3 - Exemplo 3:

Create a table TB_TAB1 in a database DB_DB1 and in a table space TS_TS1, which exactly behaves like the table TB_TAB2.
Crie uma tabela TB_TAB1 em um banco de dados DB_DB1 e em um espaço de tabela TS_TS1, que se comporta exatamente como a tabela TB_TAB2.

    CREATE TABLE TB_TAB1 LIKE TB_TAB2
           IN DB_DB1.TS_TS1;