w3resource

How to add Columns in PostgreSQL?


Adding a Column in PostgreSQL

The ALTER TABLE command in PostgreSQL allows you to modify the structure of an existing table. One of the common use cases is adding a new column to a table. This guide explains the syntax, provides examples, and discusses best practices for using the ALTER TABLE ADD COLUMN command.

Syntax:

ALTER TABLE table_name
ADD COLUMN column_name data_type [constraints];

Explanation:

  • table_name: The name of the table where the column will be added.
  • column_name: The name of the new column.
  • data_type: The data type of the new column (e.g., INTEGER, VARCHAR, DATE).
  • constraints (optional): Constraints like NOT NULL, UNIQUE, or DEFAULT.

Example 1: Adding a Simple Column

Scenario: Add a new column email to the employees table.

Code:

-- Add a column named 'email' with VARCHAR data type
ALTER TABLE employees
ADD COLUMN email VARCHAR(255);

Explanation:

  • The ALTER TABLE command targets the employees table.
  • The new column email of type VARCHAR(255) is added without constraints.

Example 2: Adding a Column with Constraints

Scenario: Add a hire_date column with a default value.

Code:

-- Add a column 'hire_date' with a default value of CURRENT_DATE
ALTER TABLE employees
ADD COLUMN hire_date DATE DEFAULT CURRENT_DATE;

Explanation:

  • The hire_date column stores date values.
  • The DEFAULT constraint sets the current date as the default for new rows.
  • Example 3: Adding Multiple Columns

    Scenario: Add department and salary columns in a single command.

    Code:

    -- Add two new columns: 'department' and 'salary'
    ALTER TABLE employees
    ADD COLUMN department VARCHAR(100),
    ADD COLUMN salary NUMERIC(10, 2);
    

    Explanation:

    • Multiple ADD COLUMN statements are used, separated by commas.
    • department is a text column, and salary is a numeric column with two decimal places.

    Example 4: Adding a Column and Setting Values

    Scenario: Add an active column and update its values for existing rows.

    Code:

    -- Add a column 'active' with a BOOLEAN data type
    ALTER TABLE employees
    ADD COLUMN active BOOLEAN DEFAULT TRUE;
    
    -- Update the 'active' column for existing rows
    UPDATE employees
    SET active = FALSE
    WHERE termination_date IS NOT NULL;
    

    Explanation:

    • The active column is added with a default value of TRUE.
    • Existing rows are updated to set active to FALSE for terminated employees.

    Checking Table Structure:

    Use the \d command in psql to verify the structure of the modified table:

    -- Display the structure of the 'employees' table

    \d employees;
    

    Best Practices:

      1. Backup Data: Always back up your database before making structural changes.

      2. Add Default Values: Use DEFAULT values to prevent NULL issues.

      3. Specify Constraints: Define constraints like NOT NULL or UNIQUE to ensure data integrity.

      4. Test Changes: Apply changes in a staging environment before production.

    Common Errors and Solutions

      1. Duplicate Column Name: Ensure the new column name doesn't conflict with existing ones.

      2. Data Type Issues: Choose the correct data type to avoid mismatches.

      3. Constraint Violations: Ensure existing rows comply with constraints before adding the column.

    All PostgreSQL Questions, Answers, and Code Snippets Collection.



Become a Patron!

Follow us on Facebook and Twitter for latest update.