MySQL là hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay và được sử dụng rộng rãi trong các ứng dụng web, di động, để sử dụng tốt MySQL bạn cần hiểu rõ các kiểu dữ liệu mà nó hỗ trợ. Trong bài viết này, InterData.vn sẽ giới thiệu cho các bạn khái niệm MySQL, các kiểu dữ liệu trong MySQL là gì? Bài viết sẽ giúp các bạn nắm vững những kiến thức cơ bản khi bắt đầu sử dụng MySQL ngay bên dưới đây!
Khám phá MySQL là gì?
MySQL là một hệ thống Relational Database Management System (RDBMS) là quản lý cơ sở dữ liệu nguồn mở. MySQL hoạt động theo mô hình client-server, một dịch vụ tạo và quản lý cơ sở dữ liệu bằng cách quản lý các mối quan hệ giữa các cơ sở dữ liệu.
MySQL được ứng dụng rộng rãi không chỉ trong các doanh nghiệp tiêu biểu như Facebook, Google, YouTube, Twitter hay Yahoo! mà còn đang ngày càng được sử dụng trong các hệ thống lưu trữ dữ liệu quan trọng khác. Đặc biệt, MySQL hiện đang tương thích trên nhiều nền tảng máy tính quan trọng như Linux, macOS, Microsoft Windows và Ubuntu.
Ted Codd, một nhà khoa học máy tính xuất sắc người Anh (19/8/1923 – 18/4/2003), đã đặt nền móng cho mô hình quản lý cơ sở dữ liệu quan hệ. Ông là người sáng tạo SQL khi đang làm việc tại IBM vào đầu những năm 1970. Đến năm 1974, SQL đã làm cho các ngôn ngữ khác như ISAM và VISAM trở nên lỗi thời và không còn phổ biến nữa.
Nếu bạn gặp các thương hiệu bao gồm SQL, chẳng hạn như PostgreSQL, Microsoft SQL Server, thì đây thường là những thương hiệu sử dụng cú pháp SQL. MySQL được viết bằng C và C++. Phần mềm quản lý cơ sở dữ liệu được viết bằng ngôn ngữ lập trình nhưng luôn sử dụng SQL làm ngôn ngữ chính để tương tác với cơ sở dữ liệu.
Các kiểu dữ liệu trong MySQL
Các kiểu dữ liệu SQL xác định các loại giá trị có thể được lưu trữ trong các cột của bảng. Ví dụ: Nếu ta muốn một cột chỉ lưu trữ các giá trị số nguyên thì ta có thể xác định kiểu dữ liệu của nó là int.
Đối với QA, việc thu thập và hiểu các loại dữ liệu giúp xác định data test phù hợp và tạo ra các trường hợp thử nghiệm Normal/Abnormal đầy đủ và chính xác hơn.
Các kiểu dữ liệu số trong MySQL
Kiểu dữ liệu số (Numeric Data Types) trong lập trình thường được chia thành hai loại chính: dữ liệu số nguyên và dữ liệu số thực. Mỗi loại đều có đặc điểm và mục đích sử dụng riêng, phù hợp với nhu cầu xử lý dữ liệu số cụ thể.
Kiểu dữ liệu số nguyên
Các kiểu số nguyên tiêu chuẩn của MySQL là INTEGER hoặc INT và SMALLINT. Ngoài ra, MySQL còn hỗ trợ các kiểu số nguyên khác như TINYINT, MEDIUMINT, BIGINT. Mỗi loại dữ liệu đều có các giá trị lưu trữ khác nhau.
SMALLINT
- Độ dài (số byte): 2
- Giá trị lưu trữ (có dấu): -32768 – 32767
- Giá trị lưu trữ (không dấu): 0 – 65535
TINYINT
- Độ dài (số byte): 1
- Giá trị lưu trữ (có dấu): -128 – 127
- Giá trị lưu trữ (không dấu): 0 – 255
MEDIUMINT
- Độ dài (số byte): 3
- Giá trị lưu trữ (có dấu): -8388608 – 8388607
- Giá trị lưu trữ (không dấu): 0 – 16777215
INT
- Độ dài (số byte): 4
- Giá trị lưu trữ (có dấu): -2147483648 – 2147483647
- Giá trị lưu trữ (không dấu): 0 – 4294967295
BIGINT
- Độ dài (số byte): 8
- Giá trị lưu trữ (có dấu): -9223372036854775808 – 92233720368 54775807
- Giá trị lưu trữ (không dấu): 0 – 184467440737 09551615
Kiểu dữ liệu số thực
Các kiểu dữ liệu FLOAT và DOUBLE gần đúng với giá trị thực. MySQL sử dụng 4 byte để lưu trữ dữ liệu FLOAT và 8 byte để lưu trữ kiểu dữ liệu DOUBLE.
FLOAT(M,D)
- (M) là độ dài phần nguyên
- (D) là độ dài phần thập phân
- Độ dài (số byte): 4
- Giá trị lưu trữ (có dấu): -3.402823466E+38 – -1.175494351E-38
- Giá trị lưu trữ (không dấu): 1.175494351E-38 – 3.402823466E+38
DOUBLE(M,D)
- (M) là độ dài phần nguyên
- (D) là độ dài phần thập phân
- Độ dài (số byte): 8
- Giá trị lưu trữ (có dấu): -1.7976931348623157E+ 308 – -2.2250738585072014E- 308
- Giá trị lưu trữ (không dấu): 0 and 2.2250738585072014E- 308 – 1.7976931348623157E+ 308
Kiểu dữ liệu DECIMAL và NUMERIC
Trong MySQL, kiểu DECIMAL và NUMERIC lưu trữ dữ liệu số chính xác ở định dạng nhị phân. Kiểu dữ liệu này thường được sử dụng cho dữ liệu tiền tệ và đơn giá.
Ví dụ: Decimal(5,2): nghĩa là lưu được 5 chữ số, trong đó có 2 chữ số thập phân.
Kiểu dữ liệu Ngày và giờ
Các loại dữ liệu ngày và giờ phổ biến bao gồm DATE, TIME, DATETIME, TIMESTAMP và YEAR.
Kiểu dữ liệu DATE
Áp dụng khi bạn chỉ muốn lưu trữ thông tin về ngày tháng.
- Định dạng hiển thị: YYYY-MM-DD
- Phạm vi thời gian: ‘1000-01-01 00:00:00’ to ‘9999-12-31’
Kiểu dữ liệu DATETIME
Được sử dụng khi bạn cần giá trị để lưu trữ thông tin ngày và giờ.
- Định dạng hiển thị: YYYY-MM-DD HH:MM:SS
- Phạm vi thời gian: ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’
Kiểu dữ liệu TIMESTAMP
Sử dụng khi bạn cần giá trị lưu trữ thời gian.
- Định dạng hiển thị: HH:MM:SS
- Phạm vi thời gian: ‘-838:59:59’ to ‘838:59:59’
LƯU Ý: Phần thời gian có thể lớn, vì loại THỜI GIAN có thể mô tả không chỉ thời gian trong ngày (chỉ có thể tối đa 24 giờ) mà còn cả thời gian đã trôi qua hoặc khoảng thời gian giữa hai sự kiện. sự kiện (có thể lớn hơn 24h hoặc thậm chí có giá trị âm).
Sự khác biệt quan trọng giữa DATETIME và TIMESTAMP nằm ở cách giá trị TIMESTAMP được chuyển đổi từ múi giờ hiện tại sang UTC khi lưu trữ, và ngược lại từ UTC về múi giờ hiện tại khi truy xuất. Trong khi đó, với kiểu dữ liệu DATETIME, không có sự thay đổi nào xảy ra.
Kiểu dữ liệu YEAR
Kiểu dữ liệu YEAR được sử dụng 1-byte để mô tả giá trị.
YEAR(2)
- Xác định rõ ràng rằng chiều rộng của hiển thị sẽ là 2 ký tự
- Xác định rõ ràng rằng chiều rộng của hiển thị sẽ là 2 ký tự
- Phạm vi: ‘0’ to ’99’
YEAR(4)
- Xác định rõ ràng rằng chiều rộng hiển thị được đặt là 4 ký tự. Nếu không, mặc định sẽ là 4 ký tự
- Định dạng hiển thị: YYYY
- Phạm vi: ‘1901’ to ‘2155’
Các kiểu dữ liệu chuỗi trong MySQL
Các kiểu dữ liệu String bao gồm:
- CHAR
- VARCHAR
- BINARY
- VARBINARY
- BLOB
- TEXT
- ENUM
- SET
Kiểu dữ liệu CHAR và VARCHAR
Kiểu dữ liệu CHAR và VARCHAR tương tự nhau nhưng được lưu trữ và truy xuất khác nhau. Chúng cũng khác nhau về độ dài tối đa và liệu các khoảng trắng ở đầu (gọi là trailing spaces) có được giữ nguyên hay không.
CHAR
- Hiển thị được định dạng sao cho khoảng trắng ở phía cuối câu (Trailing spaces) đã được loại bỏ.
- Phạm vi các ký tự: ‘0’ to ‘255’
VARCHAR
- Kiểu hiển thị: Tương tự như cách dữ liệu được nhập và lưu trữ
- Phạm vi các ký tự: ‘0’ to ‘65535’
Kiểu dữ liệu BINARY và VARBINARY
Các loại dữ liệu BINARY và VARBINARY có sự tương đồng với CHAR và VARCHAR, chỉ khác biệt ở chỗ chúng lưu trữ chuỗi nhị phân thay vì chuỗi không nhị phân.
BINARY
- Định dạng hiển thị: Chứa các chuỗi nhị phân (Binary Strings)
- Phạm vi các ký tự: ‘0’ to ‘255’
VARBINARY
- Định dạng hiển thị: Chứa các chuỗi nhị phân (Binary Strings)
- Phạm vi các ký tự: ‘0’ to ‘65535’
Kiểu dữ liệu BLOB và TEXT
BLOB
Là một đối tượng nhị phân lớn (Binary Large OBject) có thể chứa một lượng lớn dữ liệu. Giá trị được lưu trữ là một chuỗi nhị phân. Có 4 loại BLOB dựa trên dung lượng lưu trữ tối đa:
- TINYBLOB – 255 byte (Chiều dài tối đa là 255 ký tự)
- BLOB – 65535 byte
- MEDIUMBLOB có dung lượng tối đa là 16,777,215 byte (tương đương với 16,777,215 ký tự)
- LONGBLOB có dung lượng lớn hơn, lên đến 4,294,967,295 byte (tương đương với 4,294,967,295 ký tự)
TEXT
Lưu trữ một giá trị dưới dạng chuỗi ký tự được mã hóa (character set). Có 4 loại TEXT tương ứng với 4 loại BLOB:
- TINYTEXT (Chiều dài tối đa là 255 ký tự)
- TEXT
- MEDIUMTEXT có thể chứa tối đa 16,777,215 ký tự
- LONGTEXT có khả năng lưu trữ đến 4,294,967,295 ký tự.
Kiểu dữ liệu ENUM
Khi ta xác định một trường thuộc loại này, nó lưu trữ các giá trị dưới dạng chuỗi, nhưng các giá trị chuỗi phải thuộc danh sách được phép liệt kê khi tạo bảng MySQL.
- Có thể liệt kê tối đa 65535 giá trị trong danh sách ENUM.
- Nếu giá trị được chèn không có trong danh sách thì giá trị null sẽ được chèn vào.
- Các giá trị được sắp xếp theo thứ tự bạn nhập chúng.
Ví dụ: nếu chúng ta muốn một trường chỉ chấp nhận một trong các giá trị “A” hoặc “B” hoặc “C”, chúng ta phải xác định loại ENUM cho trường đó như sau: ENUM(‘A’, ‘B’ , ‘C’ ). Và chỉ những giá trị này (hoặc NULL) mới có thể xuất hiện trong trường.
Kiểu dữ liệu SET
Giống như ENUM, nhưng cột có thể không chứa giá trị hoặc có thể chứa nhiều chuỗi có trong SET
Có thể liệt kê tối đa 64 giá trị trong danh sách SET.
Các thuật ngữ thường gặp trong MySQL
Dưới đây là các thuật ngữ trong MySQL bạn thường gặp phải.
MySQL Server
Khi máy tính hoặc hệ thống máy tính cài đặt phần mềm MySQL server để lưu trữ dữ liệu, các máy khách có thể dễ dàng truy cập và quản lý thông tin. Dữ liệu được tổ chức trong các bảng và tồn tại mối liên kết giữa chúng. MySQL server không chỉ nhanh chóng mà còn đảm bảo tính an toàn cao.
MySQL là một ứng dụng do Oracle Corporation phát triển, phân phối, hỗ trợ và đặc biệt là miễn phí sử dụng.
MySQL Client
MySQL Client không nhất thiết phải cài đặt phần mềm MySQL của Oracle, mà thường là bất kỳ phần mềm nào có thể truy vấn MySQL server và nhận lại kết quả. Đoạn mã PHP script trên máy tính hoặc trên cùng một server có thể được sử dụng để kết nối với cơ sở dữ liệu MySQL database. Phpmyadmin cũng là một ứng dụng MySQL Client có giao diện user.
Một số công cụ mã nguồn mở miễn phí cho MySQL bao gồm:
- MySQL Workbench hỗ trợ trên các hệ điều hành Mac, Windows và Linux
- Sequel Pro (dùng cho Mac)
- HeidiSQL (dùng được cho Windows; chạy trên Mac hoặc Linux bằng WINE emulator)
- PhpMyAdmin (dùng cho web app)
- Open source (mã nguồn mở)
Open source có nghĩa là bất kỳ ai cũng có thể sử dụng, chỉnh sửa, cài đặt và tùy chỉnh phần mềm theo nhu cầu của mình. Tuy nhiên, những gì bạn có thể làm còn phụ thuộc vào GPL (GNU Public License). Nếu bạn cần hỗ trợ cao cấp hoặc nhiều chủ quyền hơn, bạn phải đăng ký phiên bản thương mại.
Mô hình Client-server (máy khách)
Client là máy tính được cài đặt và chạy phần mềm MySQL. Bất cứ khi nào client cần truy cập dữ liệu, chúng sẽ kết nối với server – phương thức hoạt động này là mô hình “client-server”.
Database (cơ sở dữ liệu)
Cơ sở dữ liệu – Database là tập hợp dữ liệu có cùng cấu trúc. Database là nơi dữ liệu được lưu trữ và sắp xếp. Dữ liệu sẽ được đặt trong một tập dữ liệu chung, được tổ chức và sắp xếp giống như một bảng tính. Mỗi “bảng” đều liên quan với nhau theo một logic nhất định.
SQL
MySQL thường xuyên bị nhầm lẫn với SQL và nhiều người hiểu lầm rằng hai khái niệm này là giống nhau. Tóm lại, MySQL chỉ là một hệ thống quản lý cơ sở dữ liệu, trong khi SQL là ngôn ngữ dùng để giao tiếp giữa máy chủ và máy khách trên hệ thống. SQL thường được áp dụng để thực hiện các tác vụ sau:
- Data Query: Yêu cầu trích xuất thông tin từ kho dữ liệu có sẵn
- Data Manipulation: Thêm, xóa, chỉnh sửa dữ liệu.
- Data Identity: Xác định và phân loại dữ liệu, xem xét vị trí của chúng trong database.
- Data Access Control: Cấp hoặc hạn chế quyền truy cập của người dùng để bảo vệ dữ liệu.
Lĩnh vực công nghệ và dữ liệu đã ưa chuộng việc sử dụng MySQL suốt nhiều năm, đây là một kỹ năng không thể thiếu đối với các chuyên gia lập trình. Qua những thông tin về MySQL là gì? Các kiểu dữ liệu trong MySOL được Interdata.vn chia sẻ trên đây chắc hẳn mọi người đều có những hiểu biết nhất định về phần mềm này.