hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MySQL
Các kiểu ràng buộc dữ liệu (constraint) trong MySQL

Các kiểu ràng buộc dữ liệu (constraint) trong MySQL

  • 07-07-2025
  • Toanngo92
  • 0 Comments

Mục lục

  • 1. Ràng buộc NOT NULL
    • ✅ Mục đích:
    • Ví dụ:
  • 2. Ràng buộc DEFAULT
    • ✅ Mục đích:
    • Ví dụ:
  • 3. Ràng buộc CHECK (chỉ từ MySQL 8.0.16 trở lên)
    • ✅ Mục đích:
    • Ví dụ:
  • 4. Ràng buộc ENUM
    • ✅ Mục đích:
    • Ví dụ:
  • 5. Ràng buộc SET
    • ✅ Mục đích:
    • Ví dụ:
  • 6. Ràng buộc UNIQUE (tổng kết lại)
    • ✅ Mục đích:
  • 7. Tổ hợp nhiều ràng buộc
  • 8. Tổng Kết Tính Năng Của Các Constraint
  • 📘 Kết Luận

1. Ràng buộc NOT NULL

✅ Mục đích:

Không cho phép cột nhận giá trị NULL. Đây là ràng buộc phổ biến nhất.

Ví dụ:

CREATE TABLE Users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
);

Nếu bạn cố gắng chèn bản ghi không có email, MySQL sẽ báo lỗi.


2. Ràng buộc DEFAULT

✅ Mục đích:

Cung cấp giá trị mặc định nếu người dùng không chỉ định giá trị cho cột.

Ví dụ:

CREATE TABLE Products (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    status VARCHAR(20) DEFAULT 'available'
);
INSERT INTO Products (id, name) VALUES (1, 'Túi xách');
-- status sẽ tự động là 'available'

3. Ràng buộc CHECK (chỉ từ MySQL 8.0.16 trở lên)

✅ Mục đích:

Ràng buộc logic, bắt buộc dữ liệu phải thỏa điều kiện.

Ví dụ:

CREATE TABLE Orders (
    id INT PRIMARY KEY,
    quantity INT,
    CHECK (quantity > 0)
);

Nếu bạn dùng phiên bản MySQL < 8.0.16, hãy dùng TRIGGER để thay thế (như đã trình bày ở phần trước).


4. Ràng buộc ENUM

✅ Mục đích:

Chỉ cho phép chọn một giá trị từ danh sách cố định.

Ví dụ:

CREATE TABLE Customers (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    gender ENUM('male', 'female', 'other') NOT NULL
);
INSERT INTO Customers VALUES (1, 'Alice', 'female');  -- ✅ hợp lệ
INSERT INTO Customers VALUES (2, 'Bob', 'unknown');   -- ❌ lỗi!

ENUM thường dùng cho giới tính, trạng thái đơn hàng, vai trò người dùng…


5. Ràng buộc SET

✅ Mục đích:

Cho phép lưu nhiều giá trị được chọn từ một tập hợp cố định.

Ví dụ:

CREATE TABLE Users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    hobbies SET('music', 'sports', 'reading', 'travel')
);
INSERT INTO Users VALUES (1, 'Toan', 'music,reading');

Một SET có thể chứa nhiều giá trị cách nhau bởi dấu phẩy, nhưng tổng số phần tử không được vượt quá 64.


6. Ràng buộc UNIQUE (tổng kết lại)

✅ Mục đích:

Đảm bảo cột (hoặc nhóm cột) không chứa giá trị trùng lặp.

CREATE TABLE Employees (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);

Có thể tạo nhiều cột UNIQUE, nhưng chỉ có một khóa chính (PRIMARY KEY) trong bảng.


7. Tổ hợp nhiều ràng buộc

Bạn có thể kết hợp nhiều ràng buộc trong một cột:

CREATE TABLE Members (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    age INT CHECK (age >= 18),
    role ENUM('admin', 'member') DEFAULT 'member'
);

8. Tổng Kết Tính Năng Của Các Constraint

Ràng buộcMục đích chínhHỗ trợ phiên bản MySQL
NOT NULLKhông cho phép NULL✅ Mọi phiên bản
DEFAULTThiết lập giá trị mặc định✅ Mọi phiên bản
CHECKGiới hạn giá trị theo điều kiện✅ Từ MySQL 8.0.16 trở lên
UNIQUEĐảm bảo không trùng lặp giá trị✅ Mọi phiên bản
ENUMChọn một giá trị từ danh sách cố định✅ Mọi phiên bản
SETChọn nhiều giá trị từ danh sách cố định✅ Mọi phiên bản

📘 Kết Luận

Ràng buộc dữ liệu (constraints) là xương sống trong thiết kế cơ sở dữ liệu, giúp:

  • Đảm bảo dữ liệu nhập vào luôn đúng định dạng.
  • Bảo vệ toàn vẹn dữ liệu (integrity).
  • Giảm bớt lỗi logic trong ứng dụng.

Bài viết liên quan:

Khóa Ngoại (FOREIGN KEY) Trong MySQL
Thiết Lập Tăng Tự Động (AUTO_INCREMENT), định danh duy nhất toàn cục (UUID) Trong MySQL
Tìm Hiểu Ràng Buộc UNIQUE Trong MySQL
Tìm Hiểu Khóa Chính (Primary Key) Trong MySQL
Các câu lệnh DDL trong MySQL
Data Types (kiểu dữ liệu) trong MySQL
Storage Engines/table types (công cụ lưu trữ) trong MySQL
Khởi tạo và quản trị database trong MySQL
Phân loại các kiểu câu lệnh SQL trong MySQL
Cài đặt và sử dụng Mysql Server Mac Os

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Các kiểu ràng buộc dữ liệu (constraint) trong MySQL

Khóa Ngoại (FOREIGN KEY) Trong MySQL

Thiết Lập Tăng Tự Động (AUTO_INCREMENT), định danh duy nhất toàn cục (UUID) Trong MySQL

Cấu trúc dữ liệu Tree

Mô hình mẫu trên giấy (nguyên mẫu giấy) – Paper Prototyping

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×