Thứ Tư, 20 tháng 2, 2019

Hàm làm tròn số ROUND, FLOOR, CEIL + Kiểu số lưu vào database


1.1.1- Các kiểu số nguyên

Các kiểu số nguyên tiêu chuẩn của SQL như INTEGER (or INT) và SMALLINT đều được hỗ trợ bởi MySQL. Và các mở rộng tiêu chuẩn, MySQL cũng hỗ trợ các kiểu số nguyên khác như TINYINTMEDIUMINT, và BIGINT. Bảng dưới đây sẽ liệt kê các kiểu và không gian lưu trữ đòi hỏi và phạm vi của chúng (Giá trị nhỏ nhất, lớn nhất cho kiểu số nguyên có dấu, và không dấu).
Kiểu dữ liệuĐộ dài
(số byte)
Giá trị nhỏ nhất
(Có dấu)
Giá trị lớn nhất
(Có dấu)
Giá trị nhỏ nhất
(Không dấu)
Giá trị lớn nhất
(Không dấu)
TINYINT1-1281270255
SMALLINT2-3276832767065535
MEDIUMINT3-83886088388607 to016777215
INT4-2147483648214748364704294967295
BIGINT8-922337203685477580892233720368
54775807
0184467440737
09551615

1.1.2- Kiểu dấu chấm động (Floating-Point Types)

Kiểu dữ liệu FLOAT và DOUBLE mô tả gần đúng các giá trị số thực. MySQL sử dụng 4 byte để lưu trữ dữ liệu FLOAT và 8 bytedành cho kiểu dữ liệu DOUBLE.
TypesDescription
FLOAT(M,D)Một số chấm động (floating-point number) không thể không có dấu (unsigned). Bạn có thể định nghĩa độ dài phần nguyên (M) và độ dài phần thập phân (D). Điều này không bắt buộc và mặc định là 10,2, ở đây 10 là độ dài phần nguyên còn 2 là số số thập phân. Phần thập phân có thể sử dụng 24 vị trí cho một số FLOAT.
DOUBLE(M,D)Một số chấm động DOUBLE (Độ chính xác gấp 2) cũng không thể không có dấu (unsigned). Bạn có thể định nghĩa độ dài phần nguyên (M) và độ dài phần thập phân (D). Điều này không bắt buộc và mặc định là 16,4, ở đó 16 là độ dài phần nguyên còn 4 là độ dài phần thập phân. Phần thập phân có thể sử dụng tới 53 vị trí cho một số DOUBLEREAL là một từ đồng nghĩa với DOUBLE.
Following table shows the required storage and range (maximum and minimum value for signed and unsigned integer) for each floating-point type.
Kiểu dữ liệuĐộ dài
(Số Bytes)
Giá trị nhỏ nhất
(Có dấu)
Giá trị lớn nhất
(Có dấu)
Giá trị nhỏ nhất
(Không dấu)
Giá trị lớn nhất
(Không dấu)
FLOAT4-3.402823466E+38 -1.175494351E-38 1.175494351E-38 3.402823466E+38
DOUBLE8-1.7976931348623
157E+ 308
-2.22507385850720
14E- 308
0, and
2.22507385850720
14E- 308 
1.797693134862315
7E+ 308

1.1.3- Kiểu dấu chấm cố định (Fixed-Point Types)

Kiểu dấu chấm cố định (Fixed-Point data type) được sử dụng để bảo vệ độ chính xác (precision), ví dụ như với dữ liệu tiền tệ. TrongMySQL kiểu DECIMAL và NUMERIC lưu trữ chính xác các dữ liệu số. MySQL 5.6 lưu trữ giá trị DECIMAL theo định dạng nhị phân.
Trong SQL chuẩn, cú pháp DECIMAL(5,2) nghĩa là độ chính xác (precision) là 5, và 2 là phần thập phân (scale), nghĩa là nó có thể lưu trữ một giá trị có 5 chữ số trong đó có 2 số thập phân. Vì vậy giá trị lưu trữ sẽ là -999.99 tới 999.99.  Cú pháp DECIMAL(M)tương đương với DECIMAL(M,0). Tương tự DECIMAL tương đương với DECIMAL(M,0) ở đây M mặc định là 10.

Độ dài tối đa các con số cho DECIMAL là 65.

1.1.4- Kiểu dữ liệu Bit (Bit Value Types)

Kiểu dữ liệu BIT được sử dụng để lưu trữ trường giá trị bit. Kiểu BIT(N) có thể lưu trữ N giá trị bitN có phạm vi từ 1 tới 64. Để chỉ định giá trị các bit, có thể sử dụng b'value'value là dẫy các số nhị phân  0 hoặc 1. Ví dụ b'111' mô tả số 7, và b'10000000' mô tả số 128.

1.1.5- Kiểu số và thuộc tính

MySQL hỗ trợ một mở rộng cho việc tùy chọn chỉ định độ dài hiển thị là một số nguyên trong dấu ngoặc ngay sau từ khóa kiểu dữ liệu.
KiểuMô tả
TYPE(N)Tại đây N là một số nguyên hiển thị chiều rộng cho kiểu độ dài lên đến N chữ số.
ZEROFILLCác khoảng đệm (padding) được thay thế bởi số 0. Ví dụ với cột kiểu INT(3) ZEROFILL, 7 sẽ hiển thị là 007.
  • TODO - Example

1.2- Các kiểu Date and Time

Các kiểu dữ liệu ngày tháng và thời gian đại diện bao gồm DATETIMEDATETIMETIMESTAMP, and YEAR. Mỗi kiểu có một phạm vi hợp lệ.

1.2.1- Kiểu dữ liệu DATETIME, DATE, và TIMESTAMP

Kiểu dữ liệuMô tảĐịnh dạng hiển thịPhạm vi
DATETIMESử dụng khi bạn cần giá trị lưu trữ cả hai thông tin ngày tháng và thời gian.YYYY-MM-DD HH:MM:SS'1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
DATESử dụng khi bạn muốn lưu trữ chỉ thông tin ngày tháng.YYYY-MM-DD'1000-01-01' to '9999-12-31'.
TIMESTAMPLưu trữ cả hai thông tin ngày tháng và thời gian. Giá trị này sẽ được chuyển đổi từ múi giờ hiện tại sang UTC trong khi lưu trữ, và sẽ chuyển trở lại múi giờ hiện tại khi lấy dữ liệu ra.YYYY-MM-DD HH:MM:SS'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC

1.2.2- Kiểu dữ liệu TIME

MySQL lấy và hiển thị thời gian theo định dạng ''HH:MM:SS' (hoặc định dạng 'HHH:MM:SS' đối với các giá trị giờ lớn). Giá trị của TIME có thể trong khoảng '-838:59:59' tới '838:59:59'. Phần thời gian có thể lớn bởi vì kiểu TIME có thể không chỉ mô tả thời gian của một ngày (Vốn chỉ có tối đa 24 giờ), mà nó có thể là thời gian trôi qua hoặc khoảng thời gian giữa hai sự kiện (Cái mà có thể lớn hơn 24h thậm trí có giá trị âm).

Link: https://o7planning.org/vi/10321/du-lieu-va-cau-truc-trong-mysql

#-----------------------------------------------------------------------------------#
**** round:
http://ngoton.it/ham-lam-tron-so-round-floor-ceil-nhat-ky-lap-trinh-chapter-7/

Không có nhận xét nào:

Đăng nhận xét