Professional Documents
Culture Documents
04-Cac Kieu Bang Du Lieu
04-Cac Kieu Bang Du Lieu
Các kiểu lưu trữ khác nhau của MySQL được thiết kế cho
các ca sử dụng khác nhau
Các kiểu bảng dữ liệu MySQL
mysql> SHOW ENGINES \G
*************************** 1. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL XA: NULL Savepoints: NULL
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO XA: NO Savepoints: NO
*************************** 3. row ***************************
Engine: MyISAM
Support: YES
Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO XA: NO Savepoints: NO
…
Các kiểu lưu trữ hỗ trợ bởi MySQL 5.5
InnoDB:
Hỗ trợ giao dịch (ACID compliant) commit, rollback.
Hỗ trợ khóa mức dòng (row-level locking), tăng hiệu năng
và đa người dùng
Hỗ trợ toàn ràng buộc tham thiếu khóa ngoài FOREIGN
KEY. InnoDB là kiểu lưu trữ ngầm định trong MySQL 5.5.5
MyISAM:
Được sử dụng phổ biến cho Web, kho dữ liệu (data
warehousing), là kiểu lưu trữ ngầm định trong phiên bản
trước MySQL 5.5.5
Memory:
Lưu tất cả dữ liệu trong RAM, cho truy cập cực nhanh (Có
tên gọi trước HEAP).
Các kiểu lưu trữ hỗ trợ bởi MySQL 5.5
Merge:
Cung cấp khả năng nhóm một chuỗi các bảng MyISAM
giống nhau và tham chiếu tới như một đối tượng
Federated:
Cung cấp khả năng tạo một CSDL Logic từ nhiều servers
vật lý. Thuận lợi cho môi trường dữ liệu phân tán
CSV:
Lưu dữ liệu dưới dạng văn bản, sử dụng định dạng dữ liệu
phân chia bởi dấu ‘,’. Giúp trao đổi dữ liệu dễ dàng giữa các
ứng dụng
Third party engine
TokuDB
ScaleDB
Ví dụ:
CREATE TABLE table1 (item1 INT)
ENGINE = INNODB
Nếu bỏ lựa chọn ENGINE, MySQL server sẽ sử dụng
engine dựa trên cấu hình
ALTER TABLE t2 ENGINE = MYISAM;
Một CSDL có thể chứa nhiều bảng với các kiểu khác
nhau
MyISAM
Storage limits 256TB Transactions No Locking granularity Table
Clustered
No Data caches No Index caches Yes
indexes
Cluster database
Compressed data Yes[a] Encrypted data[b] Yes No
support
INT/
Signed: -2147483648 to Unsigned: 0 to
INTEGE 4 bytes
2147483647 4294967295
R
Signed: - Unsigned: 0 to
BIGINT 9223372036854775808 to 18446744073709551 8 bytes
9223372036854775807 615
*Lưu ý: Kiểu BOOLEAN tương ứng với TINYINT(1)
Kiểu số (numeric)
-3.402823466E+38 to -1.175494351E-38 0
FLOAT 4 bytes
1.175494351E-38 to 3.402823466E+38
1.7976931348623157E+308 to -
DOUBLE
2.2250738585072014E-308 0
[PRECISION] 8 bytes
2.2250738585072014E-308 to
/REAL
1.7976931348623157E+308
DEC/
DECIMAL/
Phụ thuộc vào khi định nghĩa cột Depends
NUMERIC/
FIXED
Các kiểu xâu ký tự
Kiểu ký tự
CHAR (<length>) [BINARY | ASCII | UNICODE]
VARCHAR (<length>) [BINARY]
Kiểu nhị phân
TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB
Kiểu văn bản (text)
TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT
Kiểu liệt kê
{ENUM | SET} (<value> [{, <value>}...])
Các kiểu xâu ký tự
Kiểu dữ liệu CHAR có độ dài cố định và lưu
trữ đến 255 Ký tự.
Nếu số ký tự trong cột có thể thay đổi, nên
dùng kiểu VARCHAR
Các tùy chọn sau có thể sử dụng với kiểu ký
tự
BINARY: Lưu sử dụng nhị phân
ASCII: sử dụng tập ký tự latin1 cho cột
UNICODE: Sử dụng tập ký tự ucs2 cho cột
Kiểu nhị phân
Được thiết kế để lưu trữ số lượng dữ liệu lớn
ví dụ: ảnh, file (image base64)
Kiểu xâu ký tự
YYYY-MM-DD
DATETIME 1000-01-01 00:00:00 through 9999
HH:MM:SS
Các cột TIMESTAMP đóng vai trò đặc biệt khi chúng
được tự động cập nhật khi các bản ghi được thêm
mới hay cập nhật với thời gian lần cuối thay đổi
Giá trị cột được xác định tùy theo thuộc tính lựa
chọn:
TIMESTAMP [DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP]
(Default) The column is automatically updated both when a new record is created and for each
change in a record. The specification in square brackets [] is optional.
TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Time is set on the column when a new record is added, but column is left unchanged thereafter.
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
The column is set to zero on creation but updated with current time on subsequent changes.
TIMESTAMP DEFAULT 'yyyy-mm-dd hh:mm:ss' ON UPDATE CURRENT_TIMESTAMP
When created, column is set to given time; but current time is stored on subsequent updates.
Lệnh tạo bảng dữ liệu
CSDL Sakila
http://dev.mysql.com/doc/sakila/en/sakila.html
Ví dụ