Managing constraints | Sử dụng Constraints trong SQL

Ràng buộc (constraints) trong SQL được sử dụng để đảm bảo tính toàn vẹn và nhất quán của dữ liệu trong cơ sở dữ liệu. Dưới đây là các loại ràng buộc phổ biến và cách quản lý chúng.

Managing constraints | Sử dụng Constraints trong SQL

1. Các Loại Ràng Buộc (Constraints)

  • PRIMARY KEY: Đảm bảo mỗi hàng trong bảng là duy nhất và không null.
  • FOREIGN KEY: Đảm bảo tính toàn vẹn tham chiếu giữa hai bảng.
  • UNIQUE: Đảm bảo tất cả các giá trị trong một cột là duy nhất.
  • NOT NULL: Đảm bảo cột không chứa giá trị null.
  • CHECK: Đảm bảo các giá trị trong cột thỏa mãn một điều kiện cụ thể.

2. Tạo Ràng Buộc Khi Tạo Bảng

PRIMARY KEY:

CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
email VARCHAR2(100) UNIQUE,
hire_date DATE,
job_id VARCHAR2(10),
salary NUMBER
);

FOREIGN KEY:

CREATE TABLE orders (
order_id NUMBER PRIMARY KEY,
customer_id NUMBER,
order_date DATE,
CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

UNIQUE:

CREATE TABLE users (
user_id NUMBER PRIMARY KEY,
username VARCHAR2(50) UNIQUE,
email VARCHAR2(100) UNIQUE
);

NOT NULL:

CREATE TABLE products (
product_id NUMBER PRIMARY KEY,
product_name VARCHAR2(100) NOT NULL,
price NUMBER NOT NULL
);

CHECK:

CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
salary NUMBER,
CONSTRAINT chk_salary CHECK (salary > 0)
);

3. Thêm Ràng Buộc Vào Bảng Đã Tồn Tại

PRIMARY KEY:

ALTER TABLE employees
ADD CONSTRAINT pk_employee PRIMARY KEY (employee_id);

FOREIGN KEY:

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

UNIQUE:

ALTER TABLE users
ADD CONSTRAINT uq_username UNIQUE (username);

NOT NULL:

ALTER TABLE products
MODIFY product_name NOT NULL;

CHECK:

ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary > 0);

4. Xóa Ràng Buộc

PRIMARY KEY:

ALTER TABLE employees
DROP CONSTRAINT pk_employee;

FOREIGN KEY:

ALTER TABLE orders
DROP CONSTRAINT fk_customer;

UNIQUE:

ALTER TABLE users
DROP CONSTRAINT uq_username;

CHECK:

ALTER TABLE employees
DROP CONSTRAINT chk_salary;

5. Đặt Tên Cho Ràng Buộc

Đặt tên cho ràng buộc giúp dễ dàng quản lý và sửa đổi. Ví dụ:

CREATE TABLE employees (
employee_id NUMBER,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
salary NUMBER,
CONSTRAINT pk_employee PRIMARY KEY (employee_id),
CONSTRAINT chk_salary CHECK (salary > 0)
);

VÍ DỤ:

Tạo bảng với các ràng buộc:

CREATE TABLE departments (
department_id NUMBER,
department_name VARCHAR2(50) NOT NULL,
location VARCHAR2(50),
CONSTRAINT pk_department PRIMARY KEY (department_id),
CONSTRAINT uq_department_name UNIQUE (department_name)
);

CREATE TABLE employees (
employee_id NUMBER,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
department_id NUMBER,
salary NUMBER,
CONSTRAINT pk_employee PRIMARY KEY (employee_id),
CONSTRAINT fk_department FOREIGN KEY (department_id) REFERENCES departments(department_id),
CONSTRAINT chk_salary CHECK (salary > 0)
);

Thêm ràng buộc vào bảng đã tồn tại:

ALTER TABLE employees
ADD CONSTRAINT chk_salary CHECK (salary > 0);

Xóa ràng buộc:

ALTER TABLE employees
DROP CONSTRAINT chk_salary;

Chúc anh em thành công.

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận