Hãy sẵn sàng để xây dựng cơ sở dữ liệu của bạn trong MS SQL Server! Khám phá tất cả các kiểu dữ liệu SQL Server có sẵn và các trường hợp sử dụng của chúng bằng cách đi sâu vào bài viết này.

Bạn đang xem : kiểu dữ liệu trong máy chủ sql

Kiểu dữ liệu SQL Server xác định những gì có thể được lưu trữ trong cột, biến cục bộ, biểu thức hoặc tham số. Điều cần thiết là phải chọn đúng loại dữ liệu. Cuối cùng. lựa chọn kiểu dữ liệu của bạn ảnh hưởng đến toàn bộ cơ sở dữ liệu. Đọc tiếp để tìm hiểu về tất cả các kiểu dữ liệu có sẵn trong MS SQL Server.

Trong bài viết này, chúng tôi sẽ đề cập chi tiết đến các danh mục loại dữ liệu số, văn bản và ngày và giờ. Chúng ta sẽ xem xét cú pháp, kích thước bộ nhớ và các trường hợp sử dụng điển hình của chúng. Chúng tôi cũng sẽ đề cập đến các kiểu dữ liệu ít phổ biến hơn có sẵn trong MS SQL Server.

Bài viết của chúng tôi về Các kiểu dữ liệu trong SQL cũng cung cấp tổng quan chung về các kiểu dữ liệu SQL Chuẩn.

Hãy bắt đầu!

Các kiểu dữ liệu số trong SQL Server

Trong toán học, tất cả các số được chia thành các bộ, chẳng hạn như số tự nhiên, số nguyên, số hữu tỉ, số thực và số ảo. Các kiểu dữ liệu của SQL Server được tạo dựa trên các bộ số đó. Chúng cho phép bạn giới hạn một cột ở một kiểu dữ liệu số cụ thể.

Từ hình trên, bạn có thể suy ra rằng kiểu dữ liệu FLOAT REAL bao bọc tất cả các kiểu dữ liệu khác. Và bạn không sai! Có thể lưu trữ một số nguyên hoặc một số hữu tỉ trong kiểu dữ liệu FLOAT hoặc REAL (nhưng không phải theo chiều ngược lại). Tuy nhiên, hãy nhớ nguyên tắc đặc quyền ít nhất; đối với ví dụ cụ thể của chúng tôi, điều đó có thể có nghĩa là nếu bạn chỉ muốn lưu trữ số nguyên trong một cột, bạn nên sử dụng kiểu dữ liệu số nguyên. Bạn không muốn sử dụng các tập hợp số hữu tỉ hoặc số thực để lưu trữ các số đơn giản hơn như số nguyên.

Lưu ý rằng kiểu dữ liệu BIT được chỉ định cho tập hợp các số tự nhiên. Kiểu dữ liệu này chỉ có thể lưu trữ hai số tự nhiên, tức là 0 và 1, và các giá trị NULL . Chúng ta sẽ giải quyết vấn đề đó sau.

Bây giờ, hãy xem xét một số kiểu dữ liệu số phổ biến nhất.

Kiểu dữ liệu số nguyên

Các kiểu dữ liệu số nguyên cho phép bạn lưu trữ các số nguyên, chẳng hạn như -17, -5, 0, 3, 56, 278, v.v. Nếu bạn cố gắng lưu trữ 123,57 ở kiểu dữ liệu số nguyên, các số sau dấu thập phân sẽ bị cắt bỏ; chỉ số 123 sẽ được lưu.

INT

Kiểu dữ liệu INT chỉ có thể lưu trữ các số không có chữ số thập phân. Nhưng nó bị giới hạn về các giá trị mà nó có thể lưu trữ: chỉ các giá trị từ -2,147,483,648 đến 2,147,483,647 hoặc từ -231 đến 231-1.

Kích thước lưu trữ của kiểu dữ liệu INT là 4 byte (32 bit).

Loại dữ liệu này thường được sử dụng để lưu trữ số lượng, số lượng hoặc ID. Ví dụ: bạn có thể sử dụng INT để lưu trữ số lượng sản phẩm trong kho:

TẠO BẢNG Kho (
    ProductId INT,
    ProductName VARCHAR,
    ProductCount INT
);

ProductIdProductNameProductCount

1Pen200

2Ruler150

3Crayon350

Trong ví dụ trên, chúng tôi đã sử dụng INT để lưu trữ dữ liệu số lượng (cột ProductCount ) và dữ liệu ID (cột ProductId ).

ĐIỂM LỚN

Kiểu dữ liệu BIGINT rất giống với INT , nhưng nó cho phép phạm vi giá trị lớn hơn: từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 hoặc từ -263 đến 263-1. Do đó, kích thước lưu trữ của nó là 8 byte (64 bit).

Bạn có thể tự hỏi tại sao bất kỳ ai cũng cần những con số lớn như vậy. Phạm vi 4 tỷ được cung cấp bởi INT dường như đủ cho hầu hết các trường hợp sử dụng. Tuy nhiên, khi dữ liệu phát triển từng ngày, chúng ta cần không gian lưu trữ, tệp nhật ký và số nhận dạng ngày càng lớn hơn. Đó là nơi xuất hiện kiểu dữ liệu BIGINT .

Để cung cấp một số nhận dạng duy nhất cho mỗi mục nhập tệp nhật ký, chúng tôi có thể yêu cầu các số lớn hơn 2 tỷ. Do đó, chúng tôi sẽ sử dụng kiểu dữ liệu BIGINT . Ngoài ra, phạm vi của INT có thể không đủ khi thực hiện các phép tính trên các số lớn – ví dụ: để biết 240 là bao nhiêu, chúng ta cần BIGINT .

TẠO BẢNG LogFileEntries (
    EntryId BIGINT,
    EntryDateTime DATETIME
);

EntryIdEntryDateTime

52375517892021-07-09 06: 19: 30.045

52375517902021-07-09 06: 19: 30.088

52375517912021-07-09 06: 19: 31.007

SMALLINT

Kiểu dữ liệu SMALLINT tương tự như INT , nhưng nó lưu trữ một phạm vi giá trị nhỏ hơn: từ -32,768 đến 32,767 hoặc từ -215 đến 215-1. Do đó, kích thước lưu trữ của nó là 2 byte (16 bit).

Tại sao bạn chọn phạm vi nhỏ hơn nếu phạm vi INT là tối ưu cho bất kỳ trường hợp sử dụng nào? Nếu bạn biết giá trị cột của mình sẽ không vượt quá 32,767, thì SMALLINT sẽ tiết kiệm một số dung lượng lưu trữ.

Ví dụ: số lượng sinh viên đăng ký vào một lớp học chắc chắn sẽ không bao giờ đạt 32,767! Vì vậy, bạn có thể sử dụng kiểu dữ liệu SMALLINT cho cột này:

TẠO Lớp BẢNG (
    ClassId INT,
    ClassProfile VARCHAR,
    NumberOfStudents SMALLINT
);

ClassIdClassProfileNumberOfStudents

34 Sinh học55

35 Ngữ văn43

36 Vật lý học54

Chúng tôi đã sử dụng kiểu dữ liệu INT cho ID lớp và kiểu dữ liệu SMALLINT cho số lượng sinh viên.

Các kiểu dữ liệu thập phân

Các kiểu dữ liệu thập phân ( DECIMAL NUMERIC ) lưu trữ các số hữu tỉ. Nếu bạn muốn một cột có thể lưu trữ các số có dấu thập phân, chẳng hạn như -12,56 hoặc 768,4564, thì đây là cách để thực hiện.

QUYẾT ĐỊNH

Kiểu dữ liệu DECIMAL cho phép bạn lưu trữ các giá trị bằng các chữ số sau dấu thập phân. Kích thước bộ nhớ của nó tùy thuộc vào độ chính xác mà bạn xác định.

Độ chính xác là gì? Đây là tổng số chữ số ở cả hai bên của dấu thập phân. Ví dụ: độ chính xác của số 64876.3428798 là 12 (5 chữ số ở bên trái dấu thập phân + 7 chữ số ở bên phải dấu thập phân). Tỷ lệ là số chữ số sau dấu thập phân, trong ví dụ này là 7.

Cú pháp của kiểu dữ liệu DECIMAL là:

thập phân (độ chính xác [, tỷ lệ])

Đối số độ chính xác và tỷ lệ là tùy chọn. Ví dụ: decimal (5, 2) có thể lưu trữ các số như -653,87 hoặc 143,55. Tuy nhiên, các số như 2,34 hoặc 23,4 cũng có thể được lưu trữ dưới dạng decimal (5, 2) vì chúng không vượt quá giới hạn đặt ra về độ chính xác và tỷ lệ.

Khi xác định DECIMAL , bạn có thể xác định độ chính xác và tỷ lệ của nó. Tuy nhiên, điều này không bắt buộc. Các giá trị mặc định cho độ chính xác và tỷ lệ lần lượt là 18 và 0.

Như đã đề cập trước đây, kích thước lưu trữ của kiểu dữ liệu DECIMAL phụ thuộc vào độ chính xác của nó. Các giá trị có thể có bao gồm:

Kích thước lưu trữ chính xác

1 – 95 byte

10 – 199 byte

20 – 2813 byte

29 – 3817 byte

Độ chính xác tối đa là 38 cho phép lưu trữ các giá trị từ -1038 + 1 đến 1038-1.

Chúng tôi sử dụng kiểu dữ liệu DECIMAL để lưu trữ các giá trị của các kích thước như chiều dài, chiều rộng hoặc chiều sâu. Nó cũng có thể lưu trữ các giá trị tiền tệ, mặc dù có một loại dữ liệu đặc biệt để lưu trữ những giá trị này mà chúng ta sẽ thảo luận sau.

TẠO Hộp BẢNG (
    BoxId INT,
    BoxSize CHAR (1),
    BoxLengthCm DECIMAL (4, 1),
    BoxWidthCm DECIMAL (4, 1),
    BoxDepthCm DECIMAL (4, 1)
);

BoxIdBoxSizeBoxLengthCmBoxWidthCmBoxDepthCm

1S50.560.075.5

2M58.666.880,9

3L71.477.590.5

Kích thước hộp hiếm khi là số nguyên; do đó, kiểu dữ liệu DECIMAL được sử dụng cho thứ nguyên và kiểu dữ liệu INT được sử dụng cho ID.

CON SỐ

Kiểu dữ liệu NUMERIC có thể được sử dụng thay thế cho nhau với kiểu dữ liệu DECIMAL . Nó có các đối số giống nhau (độ chính xác và tỷ lệ), cùng kích thước bộ nhớ (phụ thuộc vào độ chính xác) và cùng chức năng với DECIMAL .

Hãy xem một ví dụ sử dụng NUMERIC :

TẠO BẢNG Marathon (
    MarathonId INT,
    VARCHAR quốc gia,
    Khoảng cách Km NUMERIC (3, 1)
);

MarathonIdCountryDistanceKm

Xem Thêm  Trình tạo số ngẫu nhiên trong JavaScript - trình tạo số ngẫu nhiên trong js

1USA45,5

2France56,7

3Canada33,5

Ở đây, kiểu dữ liệu NUMERIC (3, 1) hạn chế các giá trị của cột DistanceKm ở độ chính xác là 3 và tỷ lệ là 1.

Kiểu dữ liệu dấu chấm động

Các kiểu dữ liệu dấu chấm động được sử dụng để biểu thị các giá trị gần đúng. Giống như các kiểu dữ liệu thập phân, chúng cho phép các chữ số sau dấu thập phân.

NỔI

Kiểu dữ liệu FLOAT cho phép lưu trữ các giá trị gần đúng với phần định trị được chỉ định của số dấu phẩy động. Phần định trị của dấu phẩy động biểu thị số chữ số có nghĩa; ví dụ: số 0,05678 có 4 chữ số có nghĩa (các số không ở đầu hoặc ở cuối không có nghĩa). Phần định trị được sử dụng để xác định kích thước bộ nhớ.

Giá trị Mantissa

1 – 244 byte

25 – 538 byte

Cú pháp cho kiểu dữ liệu này là …

float [(n)] 

… trong đó n là đối số phần định trị tùy chọn (giá trị mặc định là 53).

Bạn có thể sử dụng FLOAT kiểu dữ liệu khi bạn có thể cho phép các giá trị được lưu trữ gần đúng; ví dụ: giá trị 59.475134 có thể gần đúng với 59.475 theo định nghĩa của bạn về FLOAT .

TẠO BẢNG SquareRoots (
    Id INT,
    Số INT,
    SquareRootOfNumber FLOAT (3),
    MorePreciseSquareRoot FLOAT (7)
);

IdNumberSquareRootOfNumberMorePreciseSquareRoot

1103.163.162278

2113.323.316625

3123.463.464102

Tại đây, các kiểu dữ liệu FLOAT hiển thị các giá trị phần định trị khác nhau để biểu diễn căn bậc hai của các số đã cho.

THỰC

Kiểu dữ liệu REAL là từ đồng nghĩa với FLOAT (24) . Nó có các thuộc tính và chức năng giống như kiểu dữ liệu FLOAT . Sự khác biệt giữa chúng là REAL định dạng dấu phẩy động chính xác đơn FLOAT dấu phẩy động chính xác kép định dạng điểm . Nếu bạn muốn tiết kiệm dung lượng lưu trữ, bạn có thể sử dụng REAL thay vì FLOAT (24 trở xuống) . Ví dụ: bạn có thể sử dụng REAL thay vì FLOAT (10) . Kiểu dữ liệu FLOAT chiếm 8 byte bộ nhớ, gấp đôi so với kiểu dữ liệu REAL sử dụng.

Các kiểu dữ liệu số này rất cần thiết vì chúng lưu trữ lương, giá, số tiền, số lượng và các loại dữ liệu tương tự. Chúng cũng được sử dụng để tính toán. Để hiểu rõ hơn về các kiểu dữ liệu số, hãy xem bài viết của chúng tôi về Hiểu kiểu dữ liệu số trong SQL .

Các kiểu dữ liệu văn bản trong SQL Server

Kiểu dữ liệu văn bản của SQL Server được sử dụng để lưu trữ các chữ cái, từ, chuỗi phức tạp, câu, v.v.

Hãy nhớ rằng, dạng chuẩn hóa đầu tiên (1NF) của chuẩn hóa cơ sở dữ liệu nói rằng các trường phải lưu trữ các giá trị nguyên tử. Ví dụ: thay vì lưu trữ tên dưới dạng Richard Black , chúng ta nên lưu trữ nó dưới dạng tên đầu tiên Richard và họ Black . Nhưng chúng tôi có thể lưu trữ các chuỗi dài hơn mà vẫn còn nguyên tử. Ví dụ, một tiêu đề sách có thể khá dài, nhưng nó là một giá trị nguyên tử; nó không thể được chia thành các phần nhỏ hơn.

Có nhiều kiểu dữ liệu khác nhau để lưu trữ các chữ cái, từ hoặc chuỗi dài hơn có sẵn trong SQL Server:

Kiểu dữ liệu TEXT NTEXT lần lượt lưu trữ dữ liệu không phải Unicode và Unicode. Kiểu dữ liệu CHAR VARCHAR chỉ lưu trữ các ký tự được mã hóa bằng UTF-8 (mã hóa tất cả các ký tự và số thông thường bằng 8 bit). Kiểu dữ liệu NCHAR NVARCHAR chỉ lưu trữ các ký tự được mã hóa bằng UTF-16 (mã hóa các ký tự và số bằng 16 bit).

Nói chung, các loại NCHAR , NVARCHAR NTEXT lưu trữ dữ liệu Unicode, trong khi CHAR , Loại VARCHAR TEXT lưu trữ dữ liệu không phải Unicode.

Hãy xem xét tất cả các loại dữ liệu mà bạn có thể sử dụng để lưu trữ dữ liệu văn bản của mình.

VARCHAR

Kiểu dữ liệu VARCHAR lưu trữ dữ liệu chuỗi có kích thước thay đổi. Yêu cầu lưu trữ của nó phụ thuộc vào số lượng ký tự. Tuy nhiên, bạn có thể xác định giới hạn trên của kích thước chuỗi bằng cách sử dụng đối số tùy chọn, như được hiển thị bên dưới:

varchar [(n | max)] 

Giá trị của n xác định kích thước chuỗi tính bằng byte và có thể nằm trong khoảng từ 1 đến 8000. Bạn cũng có thể sử dụng giá trị max thay vì giá trị n; varchar (max) cho biết kích thước bộ nhớ tối đa là 2 GB.

Kích thước lưu trữ của kiểu dữ liệu VARCHAR là n byte + 2 byte.

Chúng tôi có thể sử dụng kiểu dữ liệu VARCHAR để lưu trữ tên, địa chỉ, mô tả, v.v. Nói chung, bất kỳ giá trị nào không vượt quá 8000 byte (khi xác định n) hoặc 2 GB (khi xác định max ) có thể được lưu trữ trong kiểu dữ liệu VARCHAR .

Hãy xem xét một ví dụ sử dụng kiểu dữ liệu VARCHAR :

TẠO BẢNG Trang web Khách hàng (
    CustomerId INT,
    FirstName VARCHAR (10),
    LastName VARCHAR (20),
    Gửi email tới VARCHAR (30)
);

CustomerIdFirstNameLastNameEmail

44AliceJohnsa.johns@email.com

45BobAndersonbobanderson@email.com

Ở trên, chúng tôi sử dụng ba ví dụ về VARCHAR:

  • Cột FirstName sử dụng VARCHAR (10) và có thể lưu trữ các giá trị lên đến 10 ký tự; không thể lưu các giá trị như Constantine dưới dạng tên vì tên đó vượt quá giới hạn 10 ký tự.
  • Cột LastName sử dụng VARCHAR (20) và có thể lưu trữ các giá trị lên đến 20 ký tự.
  • Cột Email sử dụng VARCHAR (30) và có thể lưu trữ lên đến 30 ký tự; sẽ không thể lưu trữ giá trị “Constantine.langston1990@email.com” vì nó dài hơn 30 ký tự.

CHAR

Kiểu dữ liệu CHAR lưu trữ dữ liệu có kích thước cố định. Như với kiểu dữ liệu VARCHAR :

  • Kích thước bộ nhớ của nó phụ thuộc vào số lượng ký tự được lưu trữ.
  • Kích thước chuỗi được xác định bằng byte.

Cú pháp CHAR là …

char [(n)] 

… trong đó đối số n tùy chọn là kích thước chuỗi tính bằng byte. Nó có thể nằm trong khoảng từ 1 đến 8000.

Sự khác biệt giữa kiểu dữ liệu VARCHAR CHAR là kích thước của VARCHAR có thể thay đổi và CHAR của kích thước luôn luôn giống nhau. Nếu bạn xác định một cột là CHAR (1000) nhưng nhập giá trị 10 ký tự, cơ sở dữ liệu sẽ đệm các ký tự còn lại bằng khoảng trống để đạt đến giới hạn 1000. Mặt khác, trường VARCHAR chỉ lưu trữ các ký tự được chèn vào; nó không thêm bất cứ thứ gì để đạt được kích thước xác định của nó. Do đó, VARCHAR có thể tiết kiệm dung lượng lưu trữ.

Các trường hợp sử dụng

CHAR tương tự như các trường hợp sử dụng cho VARCHAR . Điều duy nhất bạn nên xem xét là kích thước cố định. Nếu kích thước của các chuỗi được lưu trữ trong cột sẽ khác nhau, tốt hơn nên sử dụng VARCHAR .

VĂN BẢN

Kiểu dữ liệu TEXT lưu trữ dữ liệu không phải Unicode có độ dài thay đổi. Nó có thể lưu trữ các chuỗi ký tự có độ rộng thay đổi lên đến 2.147.483.647 ký tự. Kích thước tối đa của nó là 2 GB. Kích thước bộ nhớ của nó là 4 byte + số ký tự được lưu trữ.

Cú pháp đơn giản là TEXT ; nó không có bất kỳ đối số nào.

Chúng tôi có thể sử dụng kiểu dữ liệu này để lưu trữ bất kỳ dữ liệu văn bản nào; tuy nhiên, CHAR VARCHAR thường được ưu tiên hơn, vì chúng cho phép loại dữ liệu tùy chỉnh nhiều hơn.

NVARCHAR

Kiểu dữ liệu NVARCHAR lưu trữ dữ liệu chuỗi có kích thước thay đổi. Kích thước lưu trữ của nó phụ thuộc vào số lượng ký tự được lưu trữ. Cú pháp là:

nvarchar [(n | max)] 

Đối số là tùy chọn và xác định kích thước chuỗi theo cặp byte (n). Bạn có thể sử dụng giá trị max thay vì giá trị n; điều này đặt kích thước bộ nhớ thành tối đa là 2 GB.

Xem Thêm  JavaScript Basics: Learn JavaScript Here! - học jquery

Kích thước bộ nhớ là 2 * n byte + 2 byte.

Chúng tôi có thể sử dụng kiểu dữ liệu NVARCHAR để lưu trữ tên, địa chỉ, mô tả hoặc dữ liệu chuỗi khác được mã hóa bằng UTF-16.

Hãy tóm tắt sự khác biệt giữa các kiểu dữ liệu VARCHAR NVARCHAR :

VARCHARNVARCHAR

  • Lưu trữ dữ liệu không phải Unicode; phù hợp với các ký tự tiêu chuẩn trong bảng chữ cái tiếng Anh
  • Lưu trữ dữ liệu Unicode; phù hợp với dữ liệu đa ngôn ngữ (ví dụ: ký tự tiếng Nhật hoặc tiếng Trung).
  • Sử dụng 1 byte cho mỗi ký tự.
  • Có thể đại diện cho tối đa 28 (256) ký tự
  • Không thể lưu trữ các ký tự không phải Latinh (ví dụ: tiếng Trung hoặc tiếng Ả Rập) trừ khi chúng được cài đặt cơ sở dữ liệu của bạn hỗ trợ .
  • Sử dụng 2 byte cho mỗi ký tự.
  • Tốn nhiều dung lượng lưu trữ hơn.
  • Có thể thể hiện tối đa 216 (65536) ký tự.
  • Cho phép dữ liệu đa ngôn ngữ.
  • Giá trị tối đa là VARCHAR (8000) .
  • Giá trị tối đa là NVARCHAR (4000) .
  • Sử dụng mã hóa UTF-8 theo mặc định.
  • Sử dụng mã hóa UTF-16 theo mặc định.
  • Lưu trữ dữ liệu ASCII: dữ liệu đầu vào luôn được mã hóa trước rồi mới được lưu trữ.
  • Lưu trữ dữ liệu Unicode và không cần chuyển đổi.

NCHAR

Kiểu dữ liệu NCHAR NVARCHAR tương tự với cặp kiểu dữ liệu CHAR VARCHAR . Sự khác biệt giữa NCHAR NVARCHAR NCHAR có kích thước cố định như CHAR, trong khi NVARCHAR có thể thay đổi. < / p>

Chữ N trong tên của các kiểu dữ liệu này là viết tắt của độ dài chuỗi theo cặp byte, không phải số ký tự.

NTEXT

Kiểu dữ liệu NTEXT lưu trữ các chuỗi Unicode có độ dài thay đổi lên đến 1.073.741.823 ký tự. Kích thước bộ nhớ của nó gấp đôi độ dài của chuỗi được lưu trữ và dung lượng tối đa là 2 GB.

Cú pháp đơn giản là NTEXT ; nó không có bất kỳ đối số. Chúng tôi có thể sử dụng nó để lưu trữ bất kỳ dữ liệu văn bản nào.

Tóm tắt các kiểu dữ liệu văn bản trong MS SQL Server

Hãy tóm tắt tất cả các kiểu dữ liệu văn bản được thảo luận trong phần này.

Các kiểu dữ liệu NCHAR , NVARCHAR NTEXT lưu trữ dữ liệu Unicode; các loại CHAR , VARCHAR TEXT lưu trữ dữ liệu không phải Unicode. Trong SQL Server, CHAR VARCHAR sử dụng mã hóa UTF-8, trong khi NCHAR NVARCHAR sử dụng mã hóa UTF-16.

Điểm rút ra cho phần này là Unicode cho phép lưu trữ các ngôn ngữ như tiếng Nhật hoặc tiếng Trung , trong khi không phải Unicode có thể lưu trữ các bảng chữ cái Latinh . Ngày nay, hầu hết các hệ điều hành sử dụng dữ liệu Unicode để đảm bảo các tính năng đa ngôn ngữ trên các bảng chữ cái (hoặc hệ thống chữ viết). Tuy nhiên, nếu bạn biết mình sẽ chỉ cần lưu trữ các ngôn ngữ bảng chữ cái Latinh như tiếng Anh, thì bạn có thể sử dụng dữ liệu không phải Unicode, tốn ít dung lượng lưu trữ hơn.

Các kiểu dữ liệu ngày và giờ trong SQL Server

Có một số loại dữ liệu cho phép bạn lưu trữ ngày, giờ hoặc ngày và giờ dưới dạng giá trị nguyên tử.

Sơ đồ trên trình bày sự phân chia đơn giản của các kiểu dữ liệu ngày và giờ có sẵn trong SQL Server.

Hãy xem xét từng cái.

NGÀY

Kiểu dữ liệu DATE chỉ lưu trữ các giá trị ngày. Nó có kích thước lưu trữ cố định là 3 byte. Cú pháp đơn giản là DATE , không có đối số. Định dạng mặc định là yyyy-mm-dd.

Hãy xem ví dụ về DATE :

TẠO BẢNG PublicHolidays2021 (
    Đặt tên VARCHAR (100),
    Ngày DATE
);

Tên ngày

Ngày đầu năm mới2021-01-01

Lễ tạ ơn2021-11-25

Ngày lễ giáng sinh 2021-12-24

Bạn có thể sử dụng hàm FORMAT () để xác định một định dạng ngày khác:

CHỌN ĐỊNH DẠNG (getdate (), 'MMM dd, yyyy') làm MyDate
ĐI

Hàm GETDATE () trả về ngày và giờ hiện tại. Kết quả của truy vấn ở trên sẽ là “Ngày 10 tháng 7 năm 2021”.

Sử dụng DATE ở bất cứ nơi nào bạn muốn chỉ lưu trữ ngày, ví dụ: để lưu trữ các ngày lễ của đất nước bạn.

THỜI GIAN

Kiểu dữ liệu TIME chỉ có thể lưu trữ các giá trị thời gian. Nó có kích thước lưu trữ cố định là 5 byte và độ chính xác phân số lên đến 100 nano giây. Cú pháp của nó là:

thời gian [(thang giây phân số)]

Đối số tùy chọn chỉ định tỷ lệ phân số thứ hai. Bạn có thể sử dụng một giá trị từ 0 đến 7 để xác định các thang phân số thứ hai khác nhau. Giá trị mặc định là time (7) , lưu trữ độ chính xác tối đa là 100 nano giây (hh: mm: ss.nnnnnnn).

Khi nào bạn cần giây phân số? Nhớ bảng LogFileEntries trong phần BIGINT ? (Chúng tôi đã sửa đổi một chút bên dưới.) Để ghi lại chính xác tất cả dữ liệu, chúng tôi cần sử dụng giây phân số:

TẠO BẢNG LogFileEntries (
    EntryId BIGINT,
    EntryDate DATE,
    EntryTime TIME (4)
);

EntryIdEntryDateEntryTime

52375517892021-07-0906: 19: 30.0455

52375517902021-07-0906: 19: 30.0887

52375517912021-07-0906: 19: 31.0075

Định dạng mặc định của kiểu dữ liệu TIME là hh: mm: ss. Bạn có thể sử dụng hàm FORMAT để đặt định dạng ưa thích của mình.

CHỌN ĐỊNH DẠNG (getdate (), 'hh: mm') làm MyTime
ĐI

Hàm GETDATE () trả về ngày và giờ hiện tại. Vì vậy, kết quả của truy vấn ở trên có thể là “18:35”.

Sử dụng kiểu dữ liệu TIME ở bất cứ đâu bạn chỉ muốn lưu trữ các giá trị thời gian, ví dụ: để lưu trữ lịch học.

DATETIME

Kiểu dữ liệu DATETIME lưu trữ ngày và giờ dựa trên đồng hồ 24 giờ. Kích thước bộ nhớ của nó là 8 byte và cú pháp của nó chỉ đơn giản là DATETIME .

Loại dữ liệu này chỉ lưu trữ ba giây phân số, tức là yyyy-mm-dd hh: mm: ss.nnn. Định dạng mặc định của kiểu dữ liệu datetime là yyyy-mm-dd hh: mm: ss.

Hãy xem ví dụ về kiểu dữ liệu DATETIME :

TẠO BẢNG UltramarathonRunners (
    RunnerId INT,
    Bắt đầu DATETIME,
    Kết thúc DATETIME
);

RunnerIdStartEnd

23762021-07-10 10: 00: 01.0232021-07-12 00: 44: 25.093

23772021-07-10 10: 00: 02.1042021-07-11 23: 59: 11.123

23782021-07-10 10: 00: 01.0762021-07-12 01: 14: 34.006

Một lần nữa, bạn có thể sử dụng hàm FORMAT () để đặt định dạng tùy chỉnh:

CHỌN ĐỊNH DẠNG (getdate (), 'MMM dd, yyyy hh: ss') làm MyDateTime
ĐI

Đầu ra của truy vấn này sẽ là “19:15 ngày 10 tháng 7 năm 2021”.

Sử dụng DATETIME ở bất cứ đâu bạn muốn lưu trữ các giá trị ngày và giờ cùng nhau, ví dụ: để biết lịch trình sự kiện.

DATETIME2

DATETIME2 là phần mở rộng của kiểu dữ liệu DATETIME . Chúng khá giống nhau, ngoại trừ DATETIME2 :

  • Có phạm vi ngày lớn hơn:
      Phạm vi ngày của

    • DATETIME là ngày 1 tháng 1 năm 1753 CN đến ngày 31 tháng 12 năm 9999.
    • Phạm vi ngày của DATETIME2 là ngày 1,1 tháng 1 CN đến ngày 31 tháng 12 năm 9999.
  • Có thể lưu trữ tối đa 7 giây phân số: yyyy-mm-dd hh: mm: ss.nnnnnnn.
  • Sử dụng một đối số để đặt độ chính xác của giây phân số.
  • Có cú pháp DATETIME2 [(độ chính xác phân số giây)] ,
  • Có kích thước bộ nhớ thay đổi từ 6 đến 8 byte, tùy theo độ chính xác do người dùng đặt.

Bạn nên sử dụng DATETIME2 để ghi dữ liệu, vì nó cho phép độ chính xác cao hơn.

DATETIMEOFFSET

DATETIMEOFFSET tương tự như kiểu dữ liệu DATETIME2 ; tính năng bổ sung của nó là nó bao gồm thông tin múi giờ (như sự khác biệt với thời gian Giờ Phối hợp Quốc tế (UTC)). Kích thước bộ nhớ của nó là 10 byte.

Cú pháp là:

DATETIMEOFFSET [(độ chính xác phân số giây)] 

Đối số tùy chọn tuân theo các quy tắc giống như DATETIME2 .

Định dạng mặc định của DATETIMEOFFSET là:

YYYY-MM-DD hh: mm: ss [.nnnnnnn] [{+ | -} hh: mm] 

Và định dạng có thể được sửa đổi bằng cách sử dụng FORMAT () .

Ngày nay, nhiều sự kiện diễn ra trực tuyến với mọi người từ khắp nơi trên thế giới tham gia. Vì vậy, điều quan trọng là cung cấp ngày và giờ chính xác của sự kiện cho từng múi giờ. Đây là lúc DATETIMEOFFSET trở nên hữu ích.

SMALLDATETIME

SMALLDATETIME tương tự như DATETIME . Sự khác biệt là độ chính xác là một phút; nó không lưu trữ giây hoặc giây phân số. Kích thước bộ nhớ là 4 byte.

Cú pháp của nó là SMALLDATETIME – không có đối số. Định dạng mặc định là yyyy-mm-dd hh: mm: ss, có thể được thay đổi bằng cách sử dụng FORMAT () .

Hãy xem ví dụ về kiểu dữ liệu SMALLDATETIME :

TẠO BẢNG Sự kiện (
    EventId INT,
    Đặt tên VARCHAR (100),
    Bắt đầu SMALLDATETIME,
    Kết thúc SMALLDATETIME
);

EventIdNameStartEnd

1001Earth Conference2021-08-15 16: 30: 002021-08-15 21:30:00

1002SQL Course2021-09-20 17: 00: 002021-09-20 22:30:00

1003Fair for Modern Art2021-09-30 10: 45: 002021-09-30 20:00:00

SMALLDATETIME được sử dụng ở đây để tiết kiệm dung lượng lưu trữ; chúng tôi không quan tâm đến phần thứ hai và phần thứ hai của thời gian bắt đầu và kết thúc của những sự kiện này. Tất cả những gì cần biết chỉ là ngày (yyyy-mm-dd) và thời gian (hh: mm) . Do đó, SMALLDATETIME đáp ứng các yêu cầu mà không sử dụng hết dung lượng bộ nhớ một cách không cần thiết.

Tóm tắt các kiểu dữ liệu ngày và giờ trong MS SQL Server

Hãy tóm tắt các loại dữ liệu ngày và giờ được thảo luận ở đây. Chúng tôi sẽ sử dụng ngày 20-12-2020 và thời gian 11: 15: 20.0000586 làm ví dụ.

Kiểu dữ liệu Định dạng giá trị mặc địnhVí dụ

DATEyyyy-mm-dd2020-12-20

TIMEhh: mm: ss.nnnnnnn11: 15: 20.0000586

DATETIMEyyyy-mm-dd hh: mm: ss.nnn2020-12-20 11: 15: 20.000

DATETIME2yyyy-mm-dd hh: mm: ss.nnnnnnn2020-12-20 11: 15: 20.0000586

DATETIMEOFFSETYYYY-MM-DD hh: mm: ss [.nnnnnnn] [{+ | -} hh: mm] 2020-12-20 11: 15: 20.0000586 -10: 00

SMALLDATETIMEyyyy-mm-dd hh: mm: ss2020-12-20 11:15:20

Kiểu dữ liệu BIT trong SQL Server

Trong SQL Server, BIT tương đương với kiểu dữ liệu BOOLEAN . Nó có thể lưu trữ giá trị của 1 , 0 hoặc NULL . Do đó, kích thước bộ nhớ của nó là 1 byte.

Giá trị 1 tương ứng với TRUE ; 0 tương ứng với FALSE . Các giá trị chuỗi TRUE FALSE có thể dễ dàng chuyển đổi thành kiểu dữ liệu BIT . Trên thực tế, bất kỳ giá trị nào khác 0 đều được chuyển đổi thành giá trị BIT của 1 , trong khi giá trị 0 được chuyển đổi thành Giá trị BIT bằng 0.

Ví dụ điển hình về việc sử dụng BIT là khi một cột cần có giá trị TRUE hoặc FALSE.

Tạo kiểu dữ liệu của riêng bạn với T-SQL

Bạn cũng có thể tạo kiểu dữ liệu của riêng mình trong SQL Server; chúng đôi khi được gọi là các loại bí danh. Mọi kiểu tùy chỉnh đều dựa trên kiểu dữ liệu SQL Server hiện có, nhưng bạn có thể tùy chỉnh kiểu cho một mục đích sử dụng cụ thể. Để tùy chỉnh kiểu dữ liệu, bạn sử dụng câu lệnh CREATE TYPE :

TẠO id LOẠI TỪ INT NOT NULL UNIQUE; 

Câu lệnh trên tạo kiểu dữ liệu ID (bí danh); nó là kiểu INT với các hạn chế bổ sung là NOT NULL UNIQUE . Đây là một ví dụ khác:

TẠO mã zip LOẠI TỪ VARCHAR (50); 

Điều này tạo raLoại dữ liệu zipCode (bí danh), là loại VARCHAR có kích thước lưu trữ là 52 byte.

Các kiểu dữ liệu SQL Server khác

Chúng ta đã thảo luận về các kiểu dữ liệu được sử dụng phổ biến nhất hiện có trong SQL Server. Tuy nhiên, có rất nhiều loại khác mà bạn nên biết về. Tốt nhất là bạn nên hiểu tất cả các công cụ bạn có trong tay.

Chúng ta hãy xem xét ngắn gọn các kiểu dữ liệu khác được cung cấp trong SQL Server.

  • Danh mục loại dữ liệu Số chính xác :
    • MONEY – Được sử dụng để đạt được độ chính xác tốt nhất với các giá trị tiền tệ.
    • SMALLMONEY – Giống như MONEY , nhưng yêu cầu ít dung lượng lưu trữ hơn.
    • TINYINT INT chỉ cho phép các giá trị từ 0 đến 255.
  • Danh mục kiểu dữ liệu Chuỗi nhị phân :
    • BINARY – Lưu trữ dữ liệu nhị phân có độ dài cố định.
    • VARBINARY – Lưu trữ dữ liệu nhị phân có độ dài thay đổi.
    • IMAGE – Lưu trữ dữ liệu nhị phân có độ dài thay đổi.
  • Các loại dữ liệu khác:
    • CURSOR – Được sử dụng cho các biến hoặc các tham số đầu ra của thủ tục được lưu trữ có chứa tham chiếu đến con trỏ.
    • ROWVERSION – Lưu trữ các phiên bản hàng trong bảng.
    • HIERARCHYID – Đại diện cho các vị trí trong một hệ thống phân cấp nhất định.
    • UNIQUEIDENTIFIER – Xác định duy nhất một cột hoặc biến cục bộ.
    • SQL_VARIANT – Khi được sử dụng trong một cột, kiểu này cho phép cột lưu trữ các kiểu dữ liệu khác nhau. Nó cũng được sử dụng trong các tham số, biến và giá trị trả về của một số hàm do người dùng xác định và các thủ tục được lưu trữ.
    • XML – Lưu trữ dữ liệu XML. Nó có thể được sử dụng với một cột hoặc một biến.
    • TABLE – Lưu trữ tạm thời một tập hợp các hàng được trả về bởi một
    • GEOMETRY – Lưu trữ dữ liệu hình học. Đây là một trong những kiểu dữ liệu không gian của SQL Server.
    • GEOGRAPHY – Lưu trữ dữ liệu địa lý. Cũng là một trong những kiểu không gian của SQL Server.

Để biết thêm thông tin về các loại dữ liệu T-SQL, hãy xem tài liệu của Microsoft.

Tất cả các kiểu dữ liệu MS SQL Server trong một Nutshell

Đó là tất cả! Chúng tôi đã xem qua tất cả các loại dữ liệu có sẵn trong SQL Server, so sánh chúng và tìm ý tưởng về nơi áp dụng từng loại.

Các danh mục kiểu dữ liệu cơ bản – chẳng hạn như số, văn bản và ngày và giờ – được sử dụng hàng ngày. Bạn nên có chúng trong tầm tay của bạn. Tuy nhiên, các kiểu dữ liệu ít phổ biến hơn cũng rất quan trọng; chúng có thể không được sử dụng thường xuyên, nhưng chúng có thể rất hữu ích trong một số trường hợp nhất định!

Khi bạn tạo cơ sở dữ liệu, điều quan trọng là phải chọn đúng loại dữ liệu. Đừng bỏ lỡ phần theo dõi của chúng tôi về Tạo cấu trúc cơ sở dữ liệu nếu bạn muốn tìm hiểu thêm về cách xây dựng cơ sở dữ liệu và chọn loại dữ liệu. Để xem trước, hãy xem bài viết về bản nhạc này .

Để nâng cao kiến ​​thức của bạn về các kiểu dữ liệu MS SQL Server, bạn cũng có thể muốn thử khóa học của chúng tôi về Kiểu dữ liệu trong SQL .

Chúc bạn thành công!


Xem thêm những thông tin liên quan đến chủ đề kiểu dữ liệu trong máy chủ sql

SQL-08: Đổi tên cột và kiểu dữ liệu bằng lệnh ALTER TABLE

  • Tác giả: thân triệu
  • Ngày đăng: 2018-01-10
  • Đánh giá: 4 ⭐ ( 7971 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong nội dung bài này chúng ta sẽ thực hiện thao tác đổi tên kiểu dữ liệu và tên cột trong bảng sử dụng lệnh ALTER TABLE MODIFY và ALTER TABLE ALTER COLUMN. Hướng dẫn SQL cơ bản và nâng cao. triệu thân channel-let’s grow together. Bài học thực hiện trên SQL Server và MySQL Workbench.

Các Kiểu Dữ Liệu Trong SQL Server : Cập Nhật Cực Đầy Đủ Và Chi Tiết Nhất

  • Tác giả: hostingviet.vn
  • Đánh giá: 3 ⭐ ( 6589 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Các kiểu dữ liệu ANSI SQL tương đương

  • Tác giả: support.microsoft.com
  • Đánh giá: 4 ⭐ ( 6861 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Sự khác biệt giữa kiểu dữ liệu Float và Decimal trong Sql là gì?

  • Tác giả: vi.helpr.me
  • Đánh giá: 3 ⭐ ( 1993 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Những kiểu dữ liệu trong MySQL bạn cần biết

  • Tác giả: vietnix.vn
  • Đánh giá: 3 ⭐ ( 9446 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Những kiểu dữ liệu trong MySQL hiện nay. Trong MySQL có ba kiểu dữ liệu chính: kiểu dữ liệu chuỗi (String), kiểu dữ liệu số và ngày giờ.

Bài 5: Kiểu Dữ Liệu Trong Sql Server, Gồm Những Loại Nào

  • Tác giả: cokiemtruyenky.vn
  • Đánh giá: 3 ⭐ ( 1268 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Biết kiểu dữ liệu của SQL giúp bạn dễ dàng làm chủ chúng trong quá trình truy vấn hay sử dụng, Chia sẻ sau sẽ mang đến cho bạn thông tin hữu ích về các kiểu dữ liệu trong SQL

Các kiểu dữ liệu trong SQL Server P1

  • Tác giả: gnv.edu.vn
  • Đánh giá: 5 ⭐ ( 9597 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Giải thích chi tiết các kiểu dữ liệu trong SQL Server kèm hình ảnh minh họa và ví dụ chi tiết, giúp bạn hiểu rõ hơn về các kiểu dữ liệu thông dụng.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Bootstrap Container Fluid - thùng chứa chất lỏng bootstrap 4

By ads_php