Module - 2: Data Types in PostgreSQL


Lesson 1: PostgreSQL Datatypes 


 Understanding Data Types in PostgreSQL

Data types within PostgreSQL are pivotal in defining the characteristics and storage format of information within a database. This lesson aims to familiarise users with the diverse range of data types available in PostgreSQL and their varied applications.


 1. Categorization of Datatypes

Key Points:

 Primitive Types:

PostgreSQL encompasses fundamental data types that serve as building blocks for database structure and data manipulation.

- Integers: These data types include INT, SMALLINT, and BIGINT, catering to different ranges of whole numbers.

- Floating-Point Numbers: Represented by FLOAT and DOUBLE PRECISION, used for numbers with decimal points.

- Characters and Booleans: Character data types such as CHAR and VARCHAR are used for storing textual data, and BOOLEAN is used for logical states.

 Structured Types:

PostgreSQL extends its data type support to structured or composite types that handle more complex data.

- Arrays: Allows storing collections of items of similar data types within a single column.

- JSON: Storing semi-structured or flexible data in JSON format directly within the database.

- Geometric Types: Handles geometric data like points, lines, and polygons, facilitating spatial operations.

 User-Defined Types:

PostgreSQL allows users to create custom data types to meet specific application requirements.

- Custom Type Creation: Exploring the ability to define and create data types tailored to unique use cases or specialized data structures.

Understanding the categorization of data types in PostgreSQL provides a foundational understanding of how data is stored, manipulated, and retrieved within the database. This knowledge forms the basis for efficient database design and query optimization, empowering users to handle diverse data effectively within PostgreSQL environments.



Lesson 2: Boolean and Character Types in PostgreSQL

PostgreSQL, known for its versatility, provides an array of data types to manage different kinds of data effectively. This lesson dives into the specifics of Boolean and Character data types and explores their usage within the PostgreSQL database system.

 1. Boolean Data Type

The Boolean data type within PostgreSQL is designed to handle logical states, representing 'true' or 'false' values, fundamental for logical evaluations and decision-making processes.

Key Points:

 Syntax and Usage:

- Declaration: Introduction to declaring BOOLEAN data type columns within tables.

- Representation: Understanding how PostgreSQL represents true/false values within the BOOLEAN data type.



- 'true' and 'false': Explanation of the two logical states the BOOLEAN data type can hold.

- NULL Handling: Discuss the handling of unknown or NULL values within BOOLEAN columns.

 Query Examples:

Illustrative examples showcasing the utilization of BOOLEAN data types within SQL queries for data manipulation and retrieval.



-- Creating a table with a BOOLEAN column

CREATE TABLE example_table (


    active BOOLEAN


-- Inserting data with BOOLEAN values

INSERT INTO example_table (active) VALUES (true), (false), (NULL);

-- Retrieving data with BOOLEAN conditions

SELECT  FROM example_table WHERE active = true;


 2. Character Data Types

PostgreSQL encompasses character data types, primarily CHAR and VARCHAR, designed for storing textual data efficiently.

Key Points:


- Fixed vs. Variable Length: Differentiating between CHAR, which stores fixed-length strings, and VARCHAR, which stores variable-length strings.

- Character Length: Specifying character length and understanding the storage implications for both types.


Demonstrating the application of CHAR and VARCHAR within table creation and data insertion scenarios.



-- Creating a table with CHAR and VARCHAR columns

CREATE TABLE user_data (


    username VARCHAR (50),

    password CHAR (8)


-- Inserting data into the user_data table

INSERT INTO user_data (username, password) VALUES ('user123', 'passw0rd');


Understanding the nuances of Boolean for logical evaluation and the differentiation between fixed and variable character data types is essential for efficient database schema design and data management in PostgreSQL. Practice with these types and experimenting with different scenarios will solidify their application within real-world database operations.



 Lesson 3: Numeric Datatypes in PostgreSQL

PostgreSQL boasts a diverse array of numeric data types, each tailored to handle specific numerical data with precision and efficiency. This lesson elucidates the various numeric data types available and their optimal use within the PostgreSQL database system.

 1. Numeric Types Overview

PostgreSQL offers a spectrum of numeric types, including integers, floating-point, and arbitrary precision types, each designed for distinct numerical representations.

Key Points:

 Numeric Types:

- Integers, Floating-Point, and Arbitrary Precision: An overview of the three main categories of numeric types and their representations.


 Range and Precision:

- Range Considerations: Understanding the range limitations of each numeric type.

- Precision Implications: Exploring the precision levels achievable with different numeric types.

 Use Cases:

- Scenarios for Preferable Types: Highlighting scenarios or applications where specific numeric types are more suitable or efficient.

 2. Numeric Data Type Usage

 In PostgreSQL, numeric data types offer versatility in handling numerical values with varying precision and range. This section delves deeper into the usage and characteristics of various numeric data types available in PostgreSQL.

Key Points:

 Integer Types:

- INT, SMALLINT, BIGINT: Introduction to integer types, emphasizing their storage, range, and appropriate use cases.

 Floating-Point Types:

- FLOAT and DOUBLE PRECISION: Understanding floating-point types, focusing on precision considerations and suitable application scenarios.

 Arbitrary Precision Types:

- NUMERIC and DECIMAL: Exploring arbitrary precision types for precise calculations, discussing their usage and advantages in handling high-precision numeric data.



-- Creating a table with numeric data types

CREATE TABLE product_prices (


    price DECIMAL(10, 2),

    stock_quantity INT


-- Inserting data into product_prices table

INSERT INTO product_prices (price, stock_quantity) VALUES (49.99, 100);


Understanding the nuances of the various numeric data types within PostgreSQL is crucial for efficient data storage, retrieval, and calculations. Exploring the range, precision, and appropriate usage of these types ensures optimal data representation and manipulation within the database system. Practice with different numeric types and scenarios will solidify their application in real-world database operations.



 Lesson 4: Date, Time, and JSON Types in PostgreSQL

PostgreSQL offers specialized data types designed to efficiently manage date, time, intervals, and JSON data. This lesson delves into the specifics of these types and their applications within the PostgreSQL database system.

 1. Date and Time Types

Key Points:

 DATE Type:

- Purpose: Stores date values without any associated time information.

- Usage: Ideal for situations where only date information is required, such as birthdates or event dates.


- Function: Stores date and time values with timezone support.

- Versatility: Suitable for scenarios needing precise timestamps, including transactions and system logs.

 TIME Type:

- Objective: Stores time values without any date information.

- Usage: Useful for instances where only time-related data is necessary, such as tracking working hours.

 Interval Types:

- Representation: Represents a duration or time span, allowing calculations or manipulation of time intervals.



-- Creating a table with date and time columns

CREATE TABLE user_activity (



    last_activity_date DATE


-- Inserting data into user_activity table

INSERT INTO user_activity (login_time, last_activity_date) VALUES ('2023-12-15 08:30:00+00', '2023-12-15');


 2. JSON Data Type

Key Points:

 JSON Type:

- Storage: Allows direct storage of JSON data within PostgreSQL columns.

- Flexibility: Offers flexibility for handling semi-structured or nested data.

 Querying JSON:

- Functionalities: PostgreSQL provides basic querying operations to interact with JSON data stored in columns.



-- Creating a table with a JSON column

CREATE TABLE user_preferences (


    preferences JSON


-- Inserting JSON data into user_preferences table

INSERT INTO user_preferences (preferences) VALUES ('{"theme": "dark", "notifications": true}');


Understanding these specialized data types in PostgreSQL empowers efficient schema design and precise data manipulation. Experimentation and practical application of these types within various scenarios will solidify their utilization in real-world PostgreSQL databases.