Most commonly used SQL Server Data Types
In our previous blog, we have discussed the various SQL Server Data Types categories.
In this blog, we are going to discuss the very first category i.e., Exact Numeric Data Types.
I. Exact Numeric Data Types: - are those that use integer data. An integer is a number with no fractional part; it can be positive, negative or zero.
The following table lists the Exact Numeric Data Types in SQL Server with minimum and maximum range value: -
Things to Remember:
1. If we convert string value ‘true’ or ‘false’ to bit data type, then ‘true’ is converted to 1 and ‘false’ is converted to 0. But, if we take string value other than ‘true’ or ‘false’ then it may result in throwing an error “Conversion failed when converting the varchar value 'abc' to data type bit.”
select CONVERT(bit,'true') as Out1, CONVERT(bit,'false') as Out2
select CONVERT(bit,'abc') as Out3, CONVERT(bit,'vr') as Out4
2. If we convert any number either +ve or -ve except zero to bit data type is result to 1.
select CONVERT(bit,45) as Out5, CONVERT(bit,-84) as Out6
3. If we convert ‘money’ data type value to any ‘int’ data type (i.e., int, bigint, tinyint, smallint, decimal, numeric) value, then only the real part of monetary unit is considered.
declare @myaccountmoney money='546.23'
select CONVERT(numeric,@myaccountmoney) as outM1,
CONVERT(decimal,@myaccountmoney) as outM2
4. Storage space or the number of digits it may hold is a very important thing. You may understand this by reading the next two lines. If you unknowingly convert a ‘decimal’ type number to ‘int’ type number then the extra digits will be truncated, which is not good. This result in heavy data lost.
5. Choosing right data type for each column reduce backup time, improve SQL Server performance and improve the execution time for queries, views, joins.
Now the question comes to our mind. How to use these Data Type?
Let’s understand and learn how to use these data types in some real situation. The Situation is something like - where we have to create a table for banks to maintain every person record who purchase an item using internet banking.
(Note: It is just an example.)
For this, we will create a table, i.e., tbl_ExactNumericDataType. In which, values are inserted into each column in respect to their column data type. After inserting the record successfully. We’ll also learn how to return or view those inserted records using select statement. Just follow the below mentioned steps.
Step-1: Open a New Query window in the SQL Management Studio instance.
Step-2: Create a table using create statement. As you can see in the create statement - I have used all the data type just to get an idea - How and where to use each and every type?
create table tbl_ExactNumericsDataType
Step-3: Just press Execute button or F5 key to run that creates statement query. I am hoping you have written the exact query that I have mentioned. Once clicking the execute button you will get a message “Command(s) completed successfully.”
Step-4: Now you need to insert a record based on the column type. No problem, just copy the below code that I have created for you. Before copying, I would strongly encourage you to understand each and every column value. Now, Execute the insert query. You will get the message “(1 row(s) affected).” It implies that you are doing things in a right way.
insert into tbl_ExactNumericsDataType(CustomerID,CountryCode,AccountNumber,AccountBalance,
Step-5: Lastly, View the inserted record by executing the select query.
select * from tbl_ExactNumericsDataType
More Explanation On Table Column: -
1. CustomerId: Is the most important column in every table. Because to maintain the uniqueness of a table, some column need to be marked as a primary key column. And a column with “int” data type is treated as the safest.
2. CountryCode: At present there are 193 countries. And our type “tinyint” ranges from 0-255.
3. AccountNumber: Account number ranges from 8-16 digit as I’m not so sure. So, for this situation, we’ll have to use “bigint” data type whose range is best to suit this situation. This type can also be used in total pageviews or website count.
4. AccountBalance: To represent currency or money value we use “money” data type. “money” data type contains real and integer value and can store up to. -2^63 to +2^63 range value.
5. InvoiceNumber: “numeric” data type where precision can be raised from 1 to 38 on both sides of the decimal.
6. ProductCode: “smallint” data type is used in this case as Product code can be in 100’s or 1000’s but not more than that.
7. EncryptedPassword: “decimal” data type is similar to “numeric” data type both with same range precision.
8. AccountWallet: Again to store money or currency value we’ll use “smallmoney” data type, but this time not in the long range.
9. ExistStatus: Status can be 0 or 1. Same value are supported by bit data type. Here 0 means account is not working where 1 means an account is working.
Lastly, I always force coders to act smart while working with different data types. It’s not a good practice to use high precision data type every time.
By this, we learn how and where to use Exact Numeric Data Type in SQL Server.
For any query, comment us below.
Previous - Most commonly used SQL Server Data Types #1
Related Questions: -
Q-1 Does numeric and decimal data type in SQL Server can be used interchangeably?
C) Numeric is not a data type
D) Decimal is not a data type
Explanation: Because they have the fixed precision with scale number. When maximum precision is used, valid values are from the range -10^38 to +10^38.
Q-2 Write the correct storage space for following data type:
Ans. The storage space for following data types are:
I) “money” takes 8 bytes.
II) “int” takes 4 bytes.
III) “tinyint” takes 1 bytes.
IV) “smallmoney” 4 bytes.
Q-3 What happen when we convert money to decimal data type?
Declare @accountBalance money;
Print Cast(@accountBalance as decimal);
Choose the correct alternative for the given query:
Click imagination hunt to read latest blogs.
Keep learning and sharing...