Bài 04. Các kiểu dữ liệu trong MySQL

Học Mysql 11/01/2017 07:00 1081
Khai báo kiêu dữ liệu là việc làm cần thiết và bắt buộc khi tạo bảng. Bằng việc khai báo đúng kiểu dữ liệu sẽ giúp cho người phát triển sẽ dễ dàng hơn trong việc xử lý và sẽ tránh khỏi những ngoại lệ trong quá trình phát triển và khắc phục lỗi ứng dụng.

Khi lưu dữ liệu của người dùng trong MySQL chúng ta cũng phải định nghĩa kiểu dữ liệu cho nó. Ví dụ khi ngày tháng thì ta sẽ lưu một số nên kiểu của nó là INT, DateTime còn khi lưu tên thì ta sẽ lưu kiểu chuỗi varchar. Tùy vào mỗi loại mà chúng ta sẽ chọn các kiểu dữ liệu cho phù hợp.

Trong mỗi Table sẽ chứa nhiều cột (column) và mỗi cột chúng ta phải xác định kiểu dữ liệu cho nó. Như ở ví dụ trên thì cột ngay_tao sẽ là kiểu INT và cột ten thì kiểu varchar. Mỗi loại dữ liệu sẽ có một số đặc điểm sau:

  • Kiểu dữ liệu (varcharinttext)
  • Chiều dài tối đa
  • Có thể lập được loại chỉ mục (indexes) nào

1. Kiểu dữ liệu số (Numeric Data Types)

Trong MySQL có các kiểu dữ liệu dạng số như số nguyên (nguyên âm, nguyên dương). Ngoài ra MySQL còn hỗ trợ lưu trữ kiểu dữ liệu dạng BIT. Ban không thể lưu trữ dạng chuỗi cho các kiểu dữ liệu này. Sau đây là danh sách tất cả các kiểu dữ liệu dạng số trong MySQL. 

Kiểu dữ liệuMô tả
TINYINT Kích thước rất nhỏ
SMALLINT Kích thước nhỏ
MEDIUMINT Kích thước vừa
INT Kích thước chuẩn
BIGINT Kích thước lớn
DECIMAL Số cố định
FLOAT Số có dấu chấm động
DOUBLE Số có dấu chấm động lớn hơn
BIT Kiểu BIT

2. Kiểu chuỗi (String)

Với kiểu chuỗi thì ta có thể lưu trữ với loại dữ liệu là những chữ cái (chuỗi) hay thậm chí là những con số, trường hợp này những con số đó nó sẽ hiểu là một chữ cái bình thường. Với kiểu chuỗi bạn có thể sử dụng một số thao tác trên nó như lệnh LIKE, FullText Search, so sánh bằng ... Sau đây là danh sách các kiểu dữ liệu dạng chuỗi (string) trong MySQL

Kiểu dữ liệuMô tả
CHAR Có chiều dài cố định và không ở dạng nhị phân
VARCHAR Có chiều dài và ta phải xác định chiều dài cho nó, không ở dạng nhị phần
BINARY Chuỗi nhị phân có độ dài cố định
VARBINARY Chuỗi nhị phân có độ dài thay đổi
TINYBLOB BLOB rất nhỏ
BLOB BLOB nhỏ
MEDIUMBLOB BLOB vừa
LONGBLOB BLOB lớn
TINYTEXT Chuỗi không nhị phân rất nhỏ
TEXT Chuỗi không nhị phân nhỏ
MEDIUMTEXT Chuỗi không nhị phân trung bình
LONGTEXT Chuỗi không nhị phân lớn
ENUM enumeration
SET Bộ

3. Kiểu ngày tháng(Date &  DateTime)

MySQL cũng cung cấp các kiểu dữ liệu liên quan đến ngày tháng nhằm giúp ta truy vấn dễ dàng hơn. Khi lưu ở dạng này bạn có thể truy vấn dữ liệu theo ngày, theo tháng, theo năm, hay thậm chi là ngày tháng năm và việc này không thể truy vấn với các kiểu dữ liệu số hay kiểu chuỗi.

Nếu bạn muốn lưu trữ năm thì chọn kiểu Date, lưu trữ có thêm giờ phút giây thì Datetime và lưu trữ chỉ giờ phút giây thì chọn time. Ngoài ra có thêm kiểu timestamp lưu trữ thời gian  record đó được thêm. Sau đây là danh sách các kiểu dữ liệu trong MYSQL:

Kiểu dữ liệuMô tả
DATE Kiểu ngày tháng, định dạng YYYY-MM-DD
TIME Kiểu thời gian, định dạng HH:MM:SS
DATETIME Kiểu ngày tháng có thời gian, định dạng YYYY-MM-DD HH:MM:SS
TIMESTAMP Kiểu ngày tháng có thời gian, định dạng YYYY-MM-DD HH:MM:SS
YEAR Kiểu năm, định dạng YYYY

4. Các loại dữ liệu không gian (Spatial)

Khi làm việc với các ứng dụng web thì các loại dữ liệu trên kia là quá đủ rồi, bạn không cần phải tìm hiểu các kiểu dữ liệu dưới đây làm gì. Tuy nhiên tôi vẫn liệt kê ra để các bạn tham khảo cho biết.

MySQL có hỗ trợ nhiều loại kiểu dữ liệu không gian liên quan đến đối tượng điểm, tọa độ và địa lý sau:

Kiểu dữ liệuMô tả
GEOMETRY Giá trị không gian của bất kì loại nào
POINT  Một cặp điểm tọa độ X:Y
LINESTRING Một đường cong
POLYGON Một đa giác
GEOMETRYCOLLECTION Một dãy các GEOMETRY
MULTILINESTRING Một dãy các đường cong
MULTIPOINT Một day các điểm
MULTIPOLYGON Một dãy các đa giác

Lưu ý:

Việc xác định kiểu dữ liệu là rất quan trọng và không nên xem thường nó. Nó sẽ quyết định thao tác xử lý của bạn trong quá trình phát triển ứng dụng.

Tuy nhiên trong một vài trường hợp một số column trong bảng có thể định nghĩa một loại dữ liệu bất kỳ nhưng cũng đồng thời cũng có thể định nghĩa một loại dữ liệu khác mà bản thân nó không làm ảnh hưởng tới cái chung.

Ví dụ: Trong News có trường create_at kiểu Datetime, tuy nhiên bạn cũng có thể lưu trữ cột này với kiểu dữ liệu là int(10).

5. Tổng kết

Trên là danh sách các kiểu dữ liệu trong MySQL thông dụng mà chúng ta hay sử dụng khi xây dựng các ứng dụng website. Khi thiết lập kiểu dữ liệu cho các trường bạn cũng nên chú ý tới độ dài của column. Các hệ quản trị CSDL nói chung và MySQL nói riêng đều có các kiểu dữ liệu cơ bản này.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.