Kiểu dữ liệu trong MySQL cho biết loại dữ liệu mà cột lưu trữ, từ đó có thể truy vấn, tính toán theo giá trị của dữ liệu. MySQL có các loại [kiểu dữ liệu] cơ bản sau:
Kiểu dữ liệu số nguyên trong MySQL
KiểuĐộ dài [byte]Giá trị lưu trữTINYINT1-128 đên 128 [số nguyên có dấu] hoặc 0 ... 255 [số nguyên không dấu]SMALLINT2-32768 ... 32767 [số nguyên có dấu] hoặc 0 ... 65535 [số nguyên không dấu]MEDIUMINT3-8388608 ... 8388607 [số nguyên có dấu] hoặc 0 ... 16777215 [số nguyên không dấu]INT4-2147483648 ... 2147483647 [số nguyên có dấu] hoặc 0 ... 4294967295 [số nguyên không dấu]BIGINT8-9223372036854775808 ... 9223372036854775807 [số nguyên có dấu] hoặc 0 ... 18446744073709551615 [số nguyên không dấu]Kiểu dữ liệu số thực dấu chấm động trong MySQL
KiểuĐộ dài [byte]Giá trị lưu trữFLOAT4-3.402823466E+38 ... -1.175494351E-38 [có dấu] hoặc 1.175494351E-38 ... 3.402823466E+38 [không dấu]DOUBLE8-1.7976931348623157E+ 308 ... -2.2250738585072014E- 308[có dấu] hoặc 0 và 2.2250738585072014E-308 ... 1.7976931348623157E+ 308 [không dấu]DOUBLE và FLOAT là kiểu biểu diễn số thực dấu chấm động [gần chính xác số thực], float dùng 4 byte còn double có độ chính xác gấp đôi [dùng 8 byte]. Ngoài ra MySQL cho phép dùng cú pháp DOUBLE[M,D] và FLOAT[M,D] với M là phần số nguyên [số chữ số] và D là phần thập phân - số chữ số sau dấu chấm
Kiểu dữ liệu số thực dấu chấm cố định DECIMAL trong MySQL
DECIMAL : Số thực dấu chấm cố định đó là số thực nhưng số con số sau dấu chấm - phần thập phân là cố định, ví dụ các số có hai số phần thập phân, trong các phép toán nó không làm tròn [biểu diễn gần đúng] như float, double nên nó chính xác hơn [ví dụ nếu float thì 0.1 + 0.2 có thể là 0.300000001 còn với DECIMAL nó sẽ là 0.30]. Trong MySQL các số dạng này biểu diễn bởi kiểu dữ liệu DECIMAL và NUMERIC, nó được biểu diễn cho các số chính xác như tiền tệ. MySQL cũng dùng cú pháp DECIMAL[M,D] để xác định rõ phần nguyên và thập phân.
Kiểu dữ liệu DATE, TIME, DATETIME, TIMESTAMP, YEAR trong MySQL
KiểuMô tảĐịnh dạng hiện thịGiá trị lưu trữDATETIMELưu trữ đủ thông tin năm-tháng-ngày-giờ-phút-giâyYYYY-MM-DD HH:MM:SS'1000-01-01 00:00:00' đến '9999-12-31 23:59:59'DATELưu trữ đủ thông tin năm-tháng-ngàyYYYY-MM-DD'1000-01-01 00:00:00' đến '9999-12-31 23:59:59'TIMESTAMPLưu trữ thời gian [năm-tháng-ngày-giờ-phút-giây] của timezone hiện tại được convert về UTC. Khi truy vấn đọc thì tự động convert về timezone hiện tại[timezone hiện tại thường là timezone của Server]. Như vậy cùng một giá trị TIMESTAMP, nhưng tùy thuộc vào timezone của server mà giá trị đọc được có thể khác nhau.YYYY-MM-DD HH:MM:SS'1970-01-01 00:00:01' UTC đến '2038-01-19 03:14:07' UTCYEARSử dụng 1 byte để lưu trữ nămYYYY1901 tới 2155 và giá trị 0000Kiểu dữ liệu chuỗi ký tự trong MySQL
Lưu trữ dữ liệu chuỗi MySQL có các kiểu dữ liệu: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET
Ví dụ, khi bạn lên Facebook để đăng ký tài khoản. Hệ thống yêu cầu cung cấp: Họ tên, ngày sinh, giới tính, số điện thoại,…. Sau khi bấm nút đăng ký, những thông tin đó được lưu vào hệ thống [tức là lưu vào cơ sở dữ liệu], thì những thông tin được lưu trong cơ sở dữ liệu đó được gọi là DỮ LIỆU.
Kiểu dữ liệu là gì?
Kiểu dữ liệu tức là KIỂU của DỮ LIỆU
Nhắc lại ví dụ trên, chúng ta có một mẫu dữ liệu đăng ký tài khoản như sau
HỌ TÊNNGÀY SINHGIỚI TÍNHSỐ ĐIỆN THOẠINguyễn Thanh Nhân11-11-1989Nam9999999999- Dữ liệu ở cột HỌ TÊN có dạng chuỗi ký tự, nên người ta gọi cột HỌ TÊN có kiểu dữ liệu là kiểu chuỗi
- Dữ liệu ở cột NGÀY SINH có dạng ngày tháng, nên người ta gọi cột NGÀY SINH có kiểu dữ liệu là kiểu ngày tháng
- Dữ liệu ở cột GIỚI TÍNH có dạng chuỗi ký tự, nên người ta gọi cột GIỚI TÍNH có kiểu dữ liệu là kiểu chuỗi
- Dữ liệu ở cột SỐ ĐIỆN THOẠI có dạng số nguyên, nên người ta gọi cột SỐ ĐIỆN THOẠI có kiểu dữ liệu là kiểu số nguyên
Trong MySQL, các kiểu dữ liệu được thay thế bởi một cái tên tiếng Anh
[Ví dụ: Kiểu chuỗi thì gọi là VARCHAR, kiểu ngày tháng thì gọi là DATE, kiểu số nguyên thì gọi là INT]
Trong MySQL, kiểu dữ liệu được chia làm ba loại chính: kiểu số, kiểu văn bản, kiểu ngày tháng