There are different areas in our world with information system and each of them require effectiveness, stability and desirable rapidly speed of working. But it's impossible to process data in the one format, sometimes we need to use text, numeric data or even a bunch of mixed information. For that people have developed, types of data and in the various examples of DBMS, they have distinguished. We will consider all of them for MySQL system and choosing appropriate data for different cases.
How to choose type?
In the official documentation you can see a bunch of different information, but we can categorise all data for parameters: type, speed of using data, taken storage and accuracy of contain values. Each of set data have their configuration. When deciding on the appropriate data type, it's advisable to opt for the most compact option capable of accommodating your specific data requirements. This approach not only conserves storage space but also enhances overall system performance.
In cases where data length varies, such as with product descriptions, it is recommended to employ a variable—length data type like VARCHAR. For exceptionally large data, such as video files, employing a binary data type like LONGBLOB is the optimal choice.
Moreover, when dealing with data that necessitates frequent searching or sorting, it is crucial to select a data type optimized for these operations. For instance, the CHAR data type outperforms VARCHAR when comparing strings efficiently.
One of the most commonly used type of data, represent various set of range. First it's integer, have 5 type of using range from tiny to big.
We can make it by using several commands:
CREATE TABLE t1 (c1 TINYINT, c2 BIGINT);
Then entering needed data to your table by the command below:
INSERT INTO t1 (c1, c2) VALUES(127, 256);
After that we need to make sure how data look in the table. If you want to use range without minus numbers, then indicate UNSIGNED option.
SELECT c1, c2 FROM t1;
The form or mask of the table we can check by the typing that command:
Highlight! Don't forget to replace t1 for your table name!
The UNSIGNED attribute offers two primary advantages:
- Expanded Value Range: When employing the UNSIGNED attribute with numeric columns, you can accommodate a broader spectrum of values in comparison to their signed counterparts. For instance, an UNSIGNED TINYINT column permits values from 0 to 255, whereas a signed TINYINT column confines values to —128 to 127;
- Enhanced Performance: Employing UNSIGNED numeric columns can enhance the efficiency of specific operations, like sorting and searching. This enhancement stems from the fact that UNSIGNED numeric columns require fewer bits for representation compared to their signed counterparts.
Nevertheless, there are some considerations to bear in mind when utilizing the UNSIGNED attribute:
- Potential Overflow: Attempting to insert a value larger than the allowable range into an UNSIGNED numeric column will lead to overflow, resulting in the truncation of the value. For instance, inserting 256 into an UNSIGNED TINYINT column will cause an overflow, reducing the value to 0;
- Compatibility: It's crucial to note that not all database systems support the UNSIGNED attribute. If you require compatibility with multiple database systems, it is advisable to avoid using the UNSIGNED attribute.
In the DBMS for using that option enter:
ALTER TABLE t1 ADD COLUMN c3 INT UNSIGNED;
Consider these scenarios as examples of when to employ each data type.
- Portraying coordinates of a point on a screen;
- Expressing room temperature;
- Indicating the distance between two cities.
- Calculating financial results;
- Recording results from scientific computations;
- Tracking the positions of objects within a 3D gaming environment.
- Managing currency values;
- Handling measurements in engineering and scientific contexts;
- Expressing percentages accurately.
- Storing Status Codes;
- Storing Enumeration Values;
- Storing Foreign Keys.
In the MySQL we can use string types for store text data, but sometimes we don't know, how much space of length they will be. Therefore, there are two types of storage data variable and fixed. One specific string type in MySQL is CHAR, which falls into the fixed—length category. When you define a CHAR column in a database table, you specify its length, indicating how many characters it can hold. For instance, if you create a CHAR column with a length of 10, it will always store exactly 10 characters, even if you enter less than that.
ALTER TABLE t1 ADD COLUMN string1 CHAR(10);
Then check the result of entering command:
- VARCHAR, in contrast to CHAR, is a string type in MySQL known for its variable—length characteristic. While you designate a maximum length for a VARCHAR column during its creation, the actual length of the column can change based on the data it holds. To exemplify, consider this SQL statement, which establishes a table featuring a VARCHAR column capable of holding a maximum of 100 characters. The system set up at the same way as any type described above.
- TINYTEXT: Tailored for relatively concise text entries, TINYTEXT accommodates up to 255 characters. It finds its utility in scenarios where succinct textual descriptions or names are involved.
- TEXT: Designed to accommodate more substantial text content, TEXT accommodates a maximum of 65,535 characters. It is frequently chosen for housing extended text passages, such as articles, comments, or documents.
- MEDIUMTEXT: Suited for even larger textual datasets, MEDIUMTEXT can manage up to 16,777,215 characters. This type is a fitting choice for storing extensive textual content, including lengthy documents and comprehensive textual information.
- LONGTEXT: Remarkably expansive, LONGTEXT is the most capacious variable—length string type in MySQL, accommodating up to 4,294,967,295 characters. Its application is ideal for handling exceedingly long textual data, encompassing extensive documents or vast datasets.
The inherent flexibility of variable string types manifests in their efficient utilization of storage space, dynamically adapting to accommodate text of varying lengths. This adaptability renders them invaluable for diverse applications where text content exhibits substantial variations in length.
MySQL includes binary data types specifically designed for storing binary data, such as images, audio clips, and video files, in their raw, unencoded, and uncompressed form. Below, you'll find a concise overview of these binary types:
- TINYBLOB: Tailored for binary fields of up to 255 bytes in length.
- BLOB: Designed to accommodate binary fields with a maximum length of 65,535 bytes.
- MEDIUMBLOB: Suited for binary fields stretching up to 16,777,215 bytes.
- LONGBLOB: Ideal for handling binary fields of substantial size, reaching up to 4,294,967,295 bytes.
MySQL also provides other data types with distinct functions:
- ENUM: Reserved for storing a value selected from a predefined list of options. For example, it can be utilized to record the various colors available for a product.
- SET: Reserved for holding a collection of values chosen from a predefined list. For instance, it can be employed to document the different features associated with a product.
- BOOLEAN: Specifically for storing Boolean values, representing either TRUE or FALSE.
- NULL: Utilized for storing a NULL value, signifying that the value is unknown or undefined.
These diverse data types empower database designers to effectively manage a wide range of data, from binary content to enumerated choices and logical flags.
MySQL offers a rich array of data types to handle a wide variety of data effectively. The choice of data type should align with the specific data characteristics and system requirements, ensuring efficient storage and retrieval of data in diverse applications.