Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

sql
postgresql
psql

What are database schema in PostgreSQL?

Abel Lifaefi Mbula

Overview

In a database, a schema is an object container. Objects can be tables, data types, functions, or operators. There are many reasons for using schemas in a database cluster. Let's see some of them.

  • Schemas allow many users to use one database without interfering with each other.
  • Schemas organize database objects into logical groups to make them more manageable.
Database, schema, table, view and index

Note: A schema can be compared to a directory (at the OS level) except that it cannot be nested. It can also be seen as a namespace.

Working with schema

Every new database contains a default schema called public. To see it, use the command below:

\dn;
Showing the schemas

When we create a table (CREATE TABLE myTable(...)), we create it in the public schema (CREATE TABLE public.myTable(...)).

Basic operations

Let's see how to create a new schema. The syntax looks like this:

CREATE SCHEMA schema_name;

Next, let's see how to delete a schema. There are two options to consider here: empty schema (no object in the schema) and non-empty schema. If it is empty, we use DROP like this:

DROP SCHEMA schema_name;

In case the schema is not empty, we add CASCADE at the end of the syntax above:

CREATE SCHEMA schema_name CASCADE;

Exercises

Let's create new schemas below.

-- create two schemas for universities
CREATE SCHEMA unigom;
CREATE SCHEMA unikis;

-- view schemas
\dn;
Creating the schemas
  • Line 1–2: We create unigom and unikis schemas.
  • Line 6: We list all available schemas.

Next, let's create tables in each of those schemas.

CREATE TABLE unigom.student (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(45),
    department VARCHAR(40),
    startDate DATE
);

CREATE TABLE unikis.lecture (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(45),
    speciality VARCHAR(40),
    startDate DATE
);

\dt unigom.*;
\dt unikis.*;
Creating tables in schemas

Using qualified name, we create the student table in unigom schema (line 1) and the lecture table in unikis schema (line 8).

Note: A qualified name consists of the schema name and table name separated by a dot.

Quiz

In the widget below, create the lecture table in unigom schema and the student table in the public schema.

-- your code goes here...
Creating tables in schemas

Let's move the student table from the public schema to unikis.

ALTER TABLE student
    SET SCHEMA unikis;

-- list tables in unikis schema
\dt unikis.*
create move a tables to another schema

Wrap up

Just like we have directories in our system to organize files, schemas let us organize tables in a database. The following are the main points to remember:

  • CREATE SCHEMA / DROP SCHEMA: Create a new schema / remove a schema.
  • Use object qualified name to write or access an object in a given schema.
  • ALTER TABLE ... SET SCHEMA ...: Move a table to another schema.

RELATED TAGS

sql
postgresql
psql
RELATED COURSES

View all Courses

Keep Exploring