Updated March 14, 2023
Introduction to SQL BIGINT
BIGINT is a data type in standard query language (SQL) that is used to store exact number values. It is used to store values that exceed the upper bound supported by the INT data type. BIGINT data type ranges from -2 ^63 to 2^63-1 i.e (-9, 223, 372, 036, 854, 775, 808) to (9, 223, 372, 036, 854, 775, 807) for signed numeric values. In case of unsigned values it ranges from 2^64-1 i.e (18, 446, 744, 073, 709, 551, 615). BIGINT data type represents large range integers, and hence its storage size is 8 bytes.
Syntax:
BIGINT;
BIGINT is a data type, and hence whenever we have to use it in any SQL query like CREATE, CONVERT or CAST, just use the keyword BIGINT.
Examples of SQL BIGINT
Given below are the examples of SQL BIGINT:
Example #1
SQL query to illustrate the creation of a BIGINT type field in a table.
In order to illustrate the usage and range of BIGINT data types, let us see a few examples on a dummy table. Here is a CREATE TABLE statement for the account_details table containing details such as a very large account_number, account holder’s age and amount in the account. We have used three different types of numeric data types to illustrate the basic difference between them.
Code:
CREATE TABLE Account_details (
account_number BIGINT,
age SMALLINT,
amount INT
);
Output:
The table has been successfully created. In this table, since the account_numbers are large in size, we have used BIGINT for it; the age of a person cannot be a large figure like 2000 or 3000; hence we have kept SMALLINT data type for this field and finally, the amount is an INT type field.
The next task is to insert a few records in it to work with.
Here is an introductory INSERT statement.
Code:
INSERT INTO public.account_details(
account_number, age, amount)
VALUES (9223372036854775805,67,4512345);
Output:
Since all the numeric values were well within the range specified for them, let’s try a few examples where the values to be inserted are not within the permitted range.
Example #2
SQL queries to illustrate upper and lower bounds of various number data types.
Code:
INSERT INTO public.account_details(
account_number, age, amount)
VALUES (9223372,67,9223372036854775805);
Output:
In this example, when we tried inserting a BIGINT value in an INT data type, the server prompted an error, as shown in the image.
Code:
INSERT INTO public.account_details(
account_number, age, amount)
VALUES (9223372036854775810,67,4512345);
Output:
Similar to the previous illustration, we tried inserting a numeric value just a few numbers ahead of BIGINT upper bound. The server throws an error. Hence, we should note that when using INT or BIGINT data types, one should keep in mind their specific ranges.
Example #3
SQL query to illustrate BIGINT range overflow while performing mathematical operations and methods to hand it.
In order to illustrate range overflow while performing aggregate operations on numeric values, let us insert a few more records in the account details table using the following INSERT statement.
Code:
INSERT INTO public.account_details(
account_number, age, amount)
VALUES (9223372036854775806,32,45123),
(9223372036854775801,52,2147403648);
Output:
The new rows have been successfully inserted.
Now we are all set to try a few examples.
a. Find the total sum of the amount present in all the accounts.
Code:
SELECT SUM(amount)
FROM account_details;
Output:
In this example, we have compared results obtained from an aggregate query in PostgreSQL and SQL server databases. In PostgreSQL, the result was automatically converted to BIGINT from INT in case of range overflow.
Output:
But when we execute the same query in an SQL server, there is no automatic transition to a bigger data type. Instead, the server throws the error as shown in the image.
Now you must be wondering how we should handle such situations in SQL server. First, we can use the CAST function to cast or convert the values to BIGINT, DECIMAL or NUMERIC data type from INT data type as shown below.
Code:
SELECT SUM(CAST(amount AS BIGINT))
FROM account_details;
Output:
Code:
SELECT SUM(CAST(amount AS DECIMAL))
FROM account_details;
Output:
b. Find the total sum of the account_numbers present in the database table.
Code:
SELECT SUM(account_number)
FROM account_details;
Output:
Similar to the previous example, in POSTGRESQL, there is a smooth transition from BIGINT to NUMERIC data type in case of range overflow. But in the SQL server case, their server throws a range overflow error, as shown below.
Output:
The server could not accommodate the new value when we tried explicit casting of BIGINT data type to NUMERIC data type.
Code:
SELECT SUM(CAST(account_number AS NUMERIC))
FROM account_details;
Output:
Conclusion
In this article, we saw BIGINT data type, a numeric data type in SQL. It has a storage size of 8 bits and ranges from -2 ^63 to 2^63-1 in most database servers.
Recommended Articles
We hope that this EDUCBA information on “SQL BIGINT” was beneficial to you. You can view EDUCBA’s recommended articles for more information.