- vừa được xem lúc

Kiểu dữ liệu trong postgresSQL (Data Types)

0 0 29

Người đăng: Xuân Huy

Theo Viblo Asia

Sau khi đã hiểu postgresSQL là gì và cài đặt nó, thì ở bài viết này mình sẽ giới thiệu đến anh em các kiểu dữ liệu(Data types) trong postgresSQL nhé.

Numberic Types (Kiểu số)

Kiểu dữ liệu kiểu số trong postgresSQL có những kiểu sau, anh em xem bảng dưới này nhé:

Loại Kích cỡ Khoảng
smallint 2 bytes -32768 đến +32768
integer 4 bytes -2147483648 đến +2147483648
bigint 8 bytes -9223372036854775808 đến +9223372036854775808
decimal variable đây là loại dữ liệu động nên có thể có đến 131072 chữ số trước dấu thập phân và 16383 chữ số sau dấu thập phân
numeric variable đây là loại dữ liệu động nên có thể có đến 131072 chữ số trước dấu thập phân và 16383 chữ số sau dấu thập phân
real 4 bytes kiểu dữ liệu số thực, có độ chính xác lên đến 6 chữ số thập phân
double precission 8 bytes kiểu dữ liệu số thực, có độ chính xác lên đến 15 chữ số thập phân
smallserial 2 bytes 1 đến 32767
serial 4 bytes 1 đến 2147483647
bigserial 8 bytes 1 đến 9223372036854775807

Umm, ở đây có gì lưu ý không nhỉ, anh em không xa lạ gì với những kiểu dữ liệu trên đúng không nào. Ở đây mình sẽ có lưu ý một chút giữa 1 số loại trên.

Kiểu numeric, với thằng này khi sử dụng anh em sẽ có 3 cách sử dụng như sau:

NUMERIC(percision, scale)

NUMERIC(percision)

NUMERIC

Ở cách khai báo trên chúng ta sẽ có 2 tham số là percision(độ chính xác tối đa) và scale(tỉ lệ tối đa), hiểu đơn giản như này. Ví dụ chúng ta có số 374.2341 vậy theo con số này thì percision=7 và scale=4 và trong số nguyên thì dĩ nhiên scale sẽ bằng 0.

Tiếp theo là sự khác biệt giữa 2 thằng numeric và double precission:

Ở ví dụ này mình sẽ sử dụng câu lệnh sau nhé:

SELECT x, round(x::numeric) AS num_round, round(x::double precision) AS dbl_round FROM generate_series(-3.5, 3.5, 1) as x;

Mình giải thích một chút câu query trên cho bạn nào chưa rõ nhé: chúng ta sẽ sử dụng hàm generate_series hàm này sẽ truyền vào 3 tham số lần lượt là: số bắt đầu, số kết thúc, và đơn vị. Câu lệnh trên nó sẽ gen ra các số từ -3.5 đến 3.5 với mỗi số cách nhau 1 đơn vị, hàm round mình sẽ dùng để làm tròn, trước khi làm tròn thì mình sẽ dùng cú pháp :: như trên để ép kiểu về 2 dạng trên, từ đó chúng ta có thể so sánh sự khác nhau giữa 2 kiểu dữ liệu trên.

Như kết quả ở trên anh em thấy, 2 loại dữ liệu numeric và double percission có sự khác biệt khi làm tròn đúng không nào. Theo như kết quả trên thì thằng numeric sẽ làm tròn theo nguyên tắc nếu số thập phân tại vị trí cần làm tròn >=0.5 thì sẽ được làm tròn lên và <0.5 thì sẽ được làm tròn xuống, còn đối với thằng double percission thì nó sẽ theo nguyên tắc làm tròn đến số chẵn gần nhất. Ví dụ 3.5 thì thằng double percission sẽ làm tròn lên 4 bởi vì 4 sẽ gần 3.5 hơn là 2 và với 2.5 thì nó sẽ làm tròn xuống 2 vì 2 sẽ gần 2.5 hơn là 4. Với ví dụ trên thì anh em nên lưu ý khi sử dụng các kiểu dữ liệu trên nhé, để tránh sai sót về mặt dữ liệu.

Hôm nay tới đây thôi, nay mình hơi lười, ngày mai sẽ viết tiếp anh em nhé....😁😁 Nhớ ủng hộ mình bằng 1 vote để mình có thêm động lực 😚😚

Monetary Types

Character Types

Binary Data Types

Date/Time Types

Boolean Type

Enumerated Types

Network Address Types

Bit String Types

Text Search Types

UUID Type

XML Types

JSON Types

Arrays

Composite Types

Range Types

Domain Types

Object Identifier Types

pg_lsn Types

Pseudo-Types

Bình luận

Bài viết tương tự

- vừa được xem lúc

002: Hiểu về Index để tăng performance với PostgreSQL P1

Bài viết nằm trong series Performance optimization với PostgreSQL. Từ bài này sẽ liên quan nhiều đến practice nên các bạn chuẩn bị env và data trước.

0 0 500

- vừa được xem lúc

003: Hiểu về Index để tăng performance với PostgreSQL P2

Bài viết nằm trong series Performance optimization với PostgreSQL. . . B-Tree index.

0 0 527

- vừa được xem lúc

004: Hiểu về Index để tăng performance với PostgreSQL P3

Bài viết nằm trong series Performance optimization với PostgreSQL. . 1) What. Trước khi đi vào chi tiết, cùng xem lại nhiệm vụ, tính chất của hash function:.

0 0 120

- vừa được xem lúc

Hiểu về Join để tăng performance với PostgreSQL

Bài viết nằm trong series Performance optimization với PostgreSQL. Chúng ta biết có 4 loại join cơ bản sau:. . .

0 0 186

- vừa được xem lúc

006: Partitioning data với PostgreSQL P1

Bài viết nằm trong series Performance optimization với PostgreSQL. 1) Horizontal & Vertical partitioning.

0 0 71

- vừa được xem lúc

007: Partitioning data với PostgreSQL P2

Bài viết nằm trong series Performance optimization với PostgreSQL. . . Partition by list.

0 0 87