Tóm Tắt
Exact numerics
Số nguyên ( integer ) – bigint, int, smallint và tinyint
Các kiểu tài liệu này dùng để tàng trữ những giá trị sô nguyên. Tuy nhiên, chúng có một số ít đặc thù khác nhau ( theo miêu tả ở bảng so sánh bên đưới ). Do đó, khi phong cách thiết kế CSDL, tất cả chúng ta cần phải vận dụng thực tiễn vào để chọn kiểu tài liệu tương thích nhất .
Ví dụ : tất cả chúng ta có một bảng tài liệu lưu thông tin. Đối tượng là con người. Có thuộc tính lưu tuổi. Áp dụng trong thực tiễn, tất cả chúng ta thấy được, gần như là không có 1 con người nào có số tuổi lớn hơn 255. Do đó, tất cả chúng ta chỉ cần kiểu tài liệu tinyint là quá đủ trong trường hợp này .
Kiểu dữ liệu | Khoảng giá trị | Kích thước |
bigint | $-9,223,372,036,854,775,808 \rightarrow 9,223,372,036,854,775,807$
($-2^{63} \rightarrow 2^{63}$ |
8 bytes |
int | $-2,147,483,648 \rightarrow 2,147,483,647$ ( USD – 2 ^ { 31 } \ rightarrow 2 ^ { 31 } $ ) |
4bytes |
smallint | $-32,768 \rightarrow 32,767$ ( USD – 2 ^ { 15 } \ rightarrow 2 ^ { 15 } $ ) |
2 bytes |
tinyint | $0 \rightarrow 255$ | 1 byte |
Dữ liệu số ( numeric data type ) – decimal và numeric
Dữ liệu số, dùng để tàng trữ số thực. Tuy nhiên size phần nguyên và phần thập phân được cố định và thắt chặt .
Ví dụ : Chúng ta có một bảng tài liệu lưu điểm số của những bạn học viên. Điểm số lưu ở thông số 10, làm tròn 2 chữ số thập phân. Nghĩa là tất cả chúng ta chỉ cần lưu điểm như : 5 ; 7.5 ; 9.25 .. vv Trong những trường hợp này, tất cả chúng ta hoàn toàn có thể sử dụng tài liệu kiểu số .
- Cú pháp: decimal[(p, [,s])] và numeric[p, [,s]] (decimal và numeric có thể dùng thay thế cho nhau).
- Tham số p (precision): Tổng chữ số dùng để lưu trữ giá trị (gồm cả phần nguyên và phần thập phân).Giá trị của p sẽ nằm trong đoạn [1, 38] và nó nhận 18 làm giá trị mặc định
- Tham số s (scale): Số chữ số lưu phần thập phân. Giá trị của tham số này nằm trong đoạn [0, p]. Nghĩa là $0 \leq s \leq p$. Giá trị mặc định của nó là 0
Theo ví dụ trên, tất cả chúng ta có điểm 1 học viên hoàn toàn có thể từ $ 0.00 \ rightarrow 10.00 $ vậy tài liệu hoàn toàn có thể có nhiều nhất 4 chữ số và cần 2 chữ số cho phần thập phân. Lúc này, tất cả chúng ta thử nghiệm 1 đoạn truy vấn nhỏ để hiểu rõ .
123456 |
DECLARE@numdecimal(4,2) SET@num=9.959 SELECT@num — Kết quả : 9.96 |
Theo khai báo, tất cả chúng ta chỉ sử dụng 2 chữ số để lưu phần thập phân. Do đó, khi tài liệu lớn hơn, mạng lưới hệ thống sẽ tự làm tròn và lấy đúng 2 chữ số thập phân .
1234567 |
DECLARE@numdecimal(4,2) SET@num=100 SELECT@num — Kết quả : Arithmetic overflow error converting numeric to data type numeric . |
Trong ví dụ này, dù ta không sử dụng phần thập phân, tuy nhiên theo khai báo ta đã lấy 2 trên tổng số 4 số để tàng trữ phần thập phân. Do đó, chỉ với 2 chữ số, tất cả chúng ta không hề tàng trữ được giá trị 100 .
Precision | Kích thước |
1-9 | 5 bytes |
10-19 | 9 bytes |
20-28 | 13 bytes |
28-38 | 17 bytes |
Dữ liệu tiền tệ — money và smallmoney
Dùng để trình diễn một giá trị về tiền tệ .
Kiểu dữ liệu | Khoảng giá trị | Kích thước |
money | $-922,337,203,685,477.5808 \rightarrow 922,337,203,685,477.5807$ | 8 bytes |
smallmoney | $- 214,748.3648 \rightarrow 214,748.3647$ | 4 bytes |
bit
Một số kiểu bit hoàn toàn có thể nhận một trong những giá trị : 1, 0, NULL .
SQLServer Database Engine có chính sách tối ưu hóa việc tàng trữ những cột có kiểu giá trị bit. Nó sẽ gộp những cột có kiểu giá trị bit lại để tàng trữ chung. Do đó, nếu có từ 1 -> 8 cột kiểu bit sẽ cần 1 bytes để tàng trữ, 9-16 cột sẽ cần 2 bytes …
Approximate numerics
Là các kiểu dữ liệu để lưu trữ số thực. Các kiểu dữ liệu này sử dụng phương pháp floating point để biểu diễn một số thực. Approximate-number data types bao gồm real và float. Nhưng thực chất, real chính là float(24).
- Cú pháp: float[(n)]
- Tham số n: Kích thước của biến, tương tự float và double trong ngôn ngữ C. Tham số n có giá trị nằm trong đoạn [1, 53] và giá trị mặc định của n là 53.
Giá trị n | Precision | Kích thước |
1-24 | 7 chữ số | 4 bytes |
25-53 | 15 chữ số | 8 bytes |
time
Dùng để màn biểu diễn một khoảng chừng thời hạn trong ngày trên định dạng 24 giờ .
- Cú pháp: time[(fractional second scale)]
- Tham số fractional second scale: Số thập phân của giây. Giá trị này nằm trong đoạn [1, 7] và có giá trị mặc định là 7.
- Khoảng dữ liệu: 00:00:00.0000000 đến 23:59:59.9999999
Dùng để trình diễn một ngày .
- Cú pháp: date
- Định dạng mặc định: YYYY-MM-DD
- Khoảng giá trị: 0001-01-01 đến 9999-12-31
Biểu diễn ngày và giờ. Giá trị giờ được trình diễn dưới định dạng 24 giờ. Có thể trình diễn cụ thể đến phần nghìn của giây ( 3 chữ số thập phân cho giá trị giây ) .
Khoảng giá trị ngày | January 1, 1753 $\rightarrow$ December 31, 9999 |
Khoảng giá trị giờ | 00:00:00 $\rightarrow$ 23:59:59.997 |
Khoảng giá trị từng phần tử |
|
Kích thước |
Biểu diễn ngày và giờ. Giá trị giờ được trình diễn dưới định dạng 24 giờ. Có thể màn biểu diễn cụ thể đến phút. Giá trị giây mặc định 00 và không kèm phần thập phân .
Khoảng giá trị ngày | January 1, 1753 $\rightarrow$ December 31, 9999 |
Khoảng giá trị giờ | 00:00:00 $\rightarrow$ 23:59:59.997 |
Khoảng giá trị từng phần tử |
|
Kích thước | 4 bytes |
Biểu diễn ngày và giờ. Giá trị giờ được màn biểu diễn dưới định dạng 24 giờ. Tương tự kiểu tài liệu datetime. Nhưng được lan rộng ra hơn về khoảng chừng giá trị những thành phần. Cũng như hoàn toàn có thể trình diễn chi tiết cụ thể hơn phần thập phân của giây .
- Cú pháp: datetime2[(fractional seconds precision)]
- Tham số fractional seconds precision: Mô tả độ chính xác của giá trị giây. Giá trị của tham số nằm trong đoạn [0-7]. Giá trị mặc định của tham số là 7
Khoảng giá trị ngày | 0001-01-01 $\rightarrow$ 9999-12-31 |
Khoảng giá trị giờ | 00:00:00 $\rightarrow$ 23:59:59.9999999 |
Khoảng giá trị từng phần tử |
|
Kích thước |
|
Kiểu tài liệu datetimeoffset nằm ngoài seri bài viết này. Bạn hoàn toàn có thể tìm hiểu thêm thêm tại trang tài liệu của Microsoft .
Character strings
Các loại kiểu tài liệu này dùng để tàng trữ những tài liệu dạng chuỗi. Bao gồm những kiểu :
char
- Cú pháp: char[(n)]
- Tham số n: Kích thước của chuỗi, tính bằng bytes. Giá trị của n nằm trong đoạn [1, 8000].
- Đặc điểm: kích thước của dữ liệu có kiểu char luôn được cố định. Nghĩa là khi bạn khai báo chiều dài của dữ liệu là 3 bytes, bạn chỉ lưu 1 chuỗi kí tự gồm 2 ký tự ‘ab’ thì byte thứ 3 vẫn được padding cho đủ (dù nó không chứa gì cả).
123456 |
DECLARE@my_strCHAR(3) SET@my_str=’ ab ‘ SELECTDATALENGTH(@my_str),LEN(@my_str) — Kết quả : 3 – 2 |
varchar
- Cú pháp: varchar([n|max])
- Tham số n: Kích thước [tối đa] của chuỗi, tính bằng bytes. Giá trị của n nằm trong đoạn [1, 8000].
- Giá trị max: là một hằng số, có giá trị $2^{31} -1$ (bytes) = 2GB
- Đặc điểm: tham số n chỉ mang ý nghĩa giá trị tối đa của chuỗi được lưu trữ. Kích thước dữ liệu bằng với chiều dài của chuỗi dữ liệu.
123456 |
DECLARE@my_strVARCHAR(3) SET@my_str=’ ab ‘ SELECTDATALENGTH(@my_str),LEN(@my_str) –Kếtquả:2-2 |
text
Dùng để lưu trữ các chuỗi dữ liệu không chữa các kí tự unicode. Có thể xem kiểu text tương đương khả năng lưu trữ với varchar(max).
Unicode character strings
Các loại kiểu tài liệu này dùng để tàng trữ những chuỗi tài liệu chứa những ký tự unicode. Bao gồm những kiểu :
nchar
- Cú pháp: nchar[(n)]
- Tham số n: Kích thước của chuỗi, tính bằng bytes. Giá trị của n nằm trong đoạn [1, 4000]
- Đặc điểm: nchar sử dụng đến 2bytes để lưu trữ 1 ký tự. Do đó, kích thước dữ liệu luôn gấp đôi giá trị n.
nvarchar
- Cú pháp: nvarchar[(n|max)]
- Tham số n: kích thước của chuỗi. Giá trị n nằm trong đoạn [1, 4000]
- Đặc điểm: nvarchar sử dụng đến 2bytes để lưu trữ 1 ký tự. Do đó, kích thước của dữ liệu luôn gấp đôi kích thước thực của chuỗi.
ntext
Dùng để lưu trữ các chuỗi chứa kí tự unicode. Kích thước tối đa $2^{30}-1$ bytes. Kích thước dữ liệu sẽ gấp 2 lần chiều dài của chuỗi dữ liệu.
Các kiểu tài liệu khác
Ngoài những kiểu tài liệu cơ bản trên, SQLServer còn cung ứng cho tất cả chúng ta rất nhiều kiểu tài liệu đặc biệt quan trọng. Tuy nhiên, những kiểu tài liệu này nằm ngoài khoanh vùng phạm vi của loạt bài viết tiếp nối. Do đó, mình chỉ để link đến tài liệu của Microsoft cho những bạn tìm hiểu thêm .
Binary strings
Bao gồm những kiểu tài liệu :
Other data types
Bao gồm những kiểu tài liệu :
Source: https://final-blade.com
Category: Kiến thức Internet