0 Shares 1181 Views 1 Comments
00:00:00
18 Aug

Kiểu dữ liệu MySQL

facebook-profile-picture
2 Tháng Bảy, 2017

Để tìm hiểu về hệ quản trị cơ sở dữ liệu MySQL, việc đầu tiên bạn cần là hiểu được những kiểu dữ liệu trong MySQL. Bây giờ chúng ta sẽ tìm hiểu về các kiểu dữ liệu có trong MySQL để gán cho field trong table.

Kiểu chuỗi văn bản

MySQL có 7 kiểu dành cho dữ liệu kiểu chuỗi văn bản:

  • char
  • varchar
  • tinytext
  • text
  • mediumtext
  • longtext
  • enum

CHAR

Cách sử dụng: char(length).

Length có giá trị tối đa là 255. Giả sử bạn sử dụng khai báo char(10) thì bạn chỉ được phép nhập vào tối đa 10 ký tự.

VARCHAR

Cách sử dụng: varchar(length).

Kiểu này cũng gần giống như kiểu char có độ dài tối đa cũng là 255. Điểm khác biệt của varchar là nếu dữ liệu nhập vào ít hơn giá trị length thì những ô dữ liệu chưa sử dụng sẽ bị loại bỏ. Đối với char những ô dữ liệu chưa sữ dụng sẽ được chèn dấu trống (space).

Sử dụng CHAR hay VARCHAR

Có sự khác nhau trong việc sử dụng CHARVARCHAR.

Ví dụ bạn tạo một field là Họ và Tên và độ dài dự tính là 150. Có những trường hợp tên và họ ngắn hơn 150 ký tự, như vậy còn trống những ký tự không dùng đến. Trong trường hợp này bạn nên sử dụng kiểu VARCHAR(150).

Trường hợp field là Mã Sản Phẩm, và bạn quy ước độ dài mã sản phẩm là 6 ký tự ví dụ SP0001. Trong trường hợp này các ô đều được nhập theo chuẩn định trước là 6 ký tự nên không việc gì bạn phải sử dụng VARCHAR để MySQL phải theo dỗi độ dài của các ô mỗi khi nhập. Bạn chỉ cần sử dung CHAR(6).

TINYTEXT

Cách sử dụng: text

Cho phép độ dài tối đa là 65,535 ký tự. Có thể tạo index trên 255 ký tự đầu.

MEDIUMTEXT

Cách sử dụng: mediumtext

Cho phép độ dài tối đa là 16,777,215 ký tự. Có thể tạo index trên 255 ký tự đầu.

LONGTEXT

Cách sử dụng: longtext

Cho phép độ dài tối đa là 4,294,967,295 ký tự. Có thể tạo index trên 255 ký tự đầu. Tuy nhiên loại này không thông dụng vì MySQL chỉ hỗ trợ chuỗi 16 triệu bytes.

ENUM

Cách sử dụng: enum(‘value1′,’value2′,’value3’,…)(default ‘value’)

Với enum bạn có thể giới hạn các giá trị được định sẵn cho một field. Cho phép bạn định trước tối đa 65.535 giá trị.

Thông thường người ta dùng kiểu này cho field chứa giá trị Yes hoặc No.

SET

Cách sử dụng: set(‘value1′,’value2′,’value3’,…)(default ‘value’)

Kiểu này định nghĩa một tập hợp hàng loạt các giá trị định trước. Tuy nhiên, cách này ít được dùng bởi vì nó phá vỡ cấu trúc thiết kế CSDL (một field có quá nhiều kiểu).

Kiểu dữ liệu số

MySQL có tất cả 7 kiểu số. Lưu ý rằng các kiểu sau đây là giống nhau: int/integer, double/double precision/real, decimal/numeric.

  • int/integer
  • tinyint
  • mediumint
  • bigint
  • float
  • double/double precision/real
  • decimal/numeric

Đối với tất cả kiểu số, giá trị lớn nhất cho phép là 255. Đối với một số kiểu cho phép bạn thể hiện các số 0 đứng đầu. Ví dụ bạn có một field có độ dài là 5 thì số 99 trong ô dữ liệu sẽ được thể hiện 00099. Field số còn được định nghĩa là có dấu (signed) hoặc không dấu (unsigned). Mặc định là có.

INT/INTEGER

Cách sử dụng: int(display size) [unsigned] [zerofill]

Nếu bạn dùng không dấu thì giá trị của field cho phép là từ 0 đến 4.294.967.295. Nếu dùng có dấu thì giá trị từ -2.147.483.648 đến 2.147.483.647. Kiểu INT sẽ sử dụng auto_increment ( tự động theo chiều tăng) để định nghĩa khóa chính của table.

TINYINT

Cách sử dụng: tinyint(display size) [unsigned] [zerofill]

Nếu không dấu, tinyint sẽ chứa các giá trị nguyên từ 0 đến 255. Nếu có dấu thì từ -128 đến 127.

MEDIUMINT

Cách sử dụng: medium(display size) [unsigned] [zerofill]

Nếu không dấu, medium sẽ chứa các giá trị nguyên từ 0 đến 1.677.215. Nếu có dấu thì từ -8.388.608 đến 8.388.607.

BIGINT

Cách sử dụng: bigint(display size) [unsigned] [zerofill]

Nếu không dấu, bigint sẽ chứa các giá trị nguyên từ 0 đến 18.446.744.073.709.551.615. Nếu có dấu thì từ -9.223.372.036.854.775.808  đến 9.223.372.036.854.775.807.

FLOAT

Cách sử dụng: float[(M,D)] [zerofill]

Cho phép giá trị từ -3.402823466E+38 đến -1.175494351E-38, số 0, và 1.175494351E-38 đến 3.402823466E+38.

DOUBLE/DOUBLE PRECISION/REAL

Cách sử dụng: double[(M,D)] [zerofill]

Cho phép giá trị từ -1.7976931348623157E+ 308 đến -2.2250738585072014E- 308, số 0, và 2.2250738585072014E- 308 đến 1.7976931348623157E+ 308.

Kiểu dữ liệu ngày giờ

MySQL có 5 dạng ngày giờ:

  • date_time
  • datetime_year
  • timestamp
  • time
  • year

Ngày giờ trong MySQL rất uyển chuyển, nó có thể chấp nhận kiểu chuỗi hoặc số .

Ví dụ:

create table date_test(

id int unsigned auto_increment,

a_date date

);

Sau đó dùng insert để đưa giá trị ngày vào a_date:

insert into date_test(a_date) values (’00-08-02′);

insert into date_test(a_date) values (‘2017-08-02’);

insert into date_test(a_date) values (‘20170802’);

MySQL có hỗ trợ một số hàm giúp bạn trong việc rút trích dữ liệu dạng ngày.

DATE

Cách sử dụng: date

Định dạng của ngày như sau: YYY-MM-DD. Có giá trị cho phép từ 1000-01-01 đên 9999-12-31.

DATETIME

Cách sử dụng: datetime[null | not null][default]

Định dạng của ngày giờ như sau: YYYY-MM-DD HH:MM:SS. Có giá trị cho phép từ 1000-01-01 00:00:00 đến 9999-12-31 23:59:59.

TIMESTAMP

Cách sử dụng: timestamp(size)

Đây là kiểu dữ liệu ghi nhận tự động giờ sửa đổi gần nhất đối với một record, bất cứ khi nào nó được tạo ra, hoặc cập nhật. Size của nó có thể định nghĩa trong khoảng từ 2 đến 14. Bảng sau trình bày các size. Giá trị mặc định là 14.

Size Định dạng
2 YY
4 YYMM
6 YYMMDD
8 YYYYMMDD
10 YYMMDDHHMM
12 YYMMDDHHMMSS
14 YYYYMMDDHHMMSS

TIME

Cách sử dụng: time

Lưu trữ dạng giờ theo định dạng HH:MM:SS và có giá trị từ -838:59:59 đến 838:59:59. Lý do mà giá trị này lớn như vậy là để nó có thể chứa được các kết quả tính toán giờ giấc.

YEAR

Cách sử dụng: year[(214)]

Chứa dữ liệu dạng năm. Nếu sử dụng hai ký tự để biểu thị năm thì biểu diễn được giá trị từ 1970 đến 2069, nên nhớ 70 đến 99 biểu thị từ 1970 đên 1999, còn 01 đến 69 biểu thị từ 2001 đến 2069.

Dùng 4 ký tự thì biểu diễn được từ 1901 đến 2155.

One Response

  1. Pingback: Tạo và quản lý cơ sở dữ liệu bằng phpMyadmin

Leave a Comment

Your email address will not be published.