Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng MySQL  _______0_______1 hành động tham chiếu cho khóa ngoại để xóa dữ liệu khỏi nhiều bảng có liên quan

Trong hướng dẫn trước, bạn đã học cách xóa dữ liệu khỏi nhiều bảng có liên quan bằng cách sử dụng một câu lệnh

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
2. Tuy nhiên, MySQL cung cấp một cách hiệu quả hơn được gọi là hành động tham chiếu

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1 cho khóa ngoại cho phép bạn xóa dữ liệu khỏi bảng con một cách tự động khi bạn xóa dữ liệu khỏi bảng cha

MySQL CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );Code language: SQL (Structured Query Language) (sql)1 ví dụ

Hãy cùng xem một ví dụ về việc sử dụng MySQL

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1

Giả sử rằng chúng ta có hai bảng.

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6 và

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7. Trong mô hình cơ sở dữ liệu này, mỗi tòa nhà có một hoặc nhiều phòng. Tuy nhiên, mỗi phòng thuộc về một tòa nhà duy nhất. Một căn phòng sẽ không tồn tại nếu không có một tòa nhà

Mối quan hệ giữa các bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6 và

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7 là quan hệ một-nhiều (1. N) như được minh họa trong sơ đồ cơ sở dữ liệu sau

Làm cách nào để loại bỏ một mối quan hệ trong mysql?
Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Khi bạn xóa một hàng khỏi bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6, bạn cũng muốn xóa tất cả các hàng trong bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7 tham chiếu đến hàng trong bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6. Ví dụ: khi bạn xóa một hàng có số tòa nhà. 2 trong bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6 như truy vấn sau

DELETE FROM buildings WHERE building_no = 2;

Code language: SQL (Structured Query Language) (sql)

Bạn cũng muốn các hàng trong bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7 đề cập đến tòa nhà số 2 cũng sẽ bị xóa

Sau đây là các bước minh họa cách hoạt động của tác vụ tham chiếu

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1

Bước 1. Tạo bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)

Bước 2. Tạo bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7

CREATE TABLE rooms ( room_no INT PRIMARY KEY AUTO_INCREMENT, room_name VARCHAR(255) NOT NULL, building_no INT NOT NULL, FOREIGN KEY (building_no) REFERENCES buildings (building_no) ON DELETE CASCADE );

Code language: SQL (Structured Query Language) (sql)

Lưu ý rằng mệnh đề

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1 ở cuối định nghĩa ràng buộc khóa ngoại

Bước 3. Chèn các hàng vào bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6

INSERT INTO buildings(building_name,address) VALUES('ACME Headquaters','3950 North 1st Street CA 95134'), ('ACME Sales','5000 North 1st Street CA 95134');

Code language: SQL (Structured Query Language) (sql)

Bước 4. Truy vấn dữ liệu từ bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6

SELECT * FROM buildings;

Code language: SQL (Structured Query Language) (sql)
Làm cách nào để loại bỏ một mối quan hệ trong mysql?
Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Chúng ta có hai hàng trong bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6.

Bước 5. Chèn các hàng vào bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7

INSERT INTO rooms(room_name,building_no) VALUES('Amazon',1), ('War Room',1), ('Office of CEO',1), ('Marketing',2), ('Showroom',2);

Code language: SQL (Structured Query Language) (sql)

Bước 6. Truy vấn dữ liệu từ bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7

SELECT * FROM rooms;

Code language: SQL (Structured Query Language) (sql)
Làm cách nào để loại bỏ một mối quan hệ trong mysql?
Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Chúng tôi có ba phòng thuộc tòa nhà số 1 và hai phòng thuộc tòa nhà số 2.

Bước 7. Xóa tòa nhà có số tòa nhà. 2

DELETE FROM buildings WHERE building_no = 2;

Code language: SQL (Structured Query Language) (sql)

Bước 8. Truy vấn dữ liệu từ bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
7

SELECT * FROM rooms;

Code language: SQL (Structured Query Language) (sql)
Làm cách nào để loại bỏ một mối quan hệ trong mysql?
Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Như bạn có thể thấy, tất cả các hàng tham chiếu đến 

INSERT INTO buildings(building_name,address) VALUES('ACME Headquaters','3950 North 1st Street CA 95134'), ('ACME Sales','5000 North 1st Street CA 95134');

Code language: SQL (Structured Query Language) (sql)
5 2 đã tự động bị xóa.

Lưu ý rằng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1  chỉ hoạt động với các bảng có công cụ lưu trữ hỗ trợ khóa ngoại e. g. , InnoDB

Một số loại bảng không hỗ trợ khóa ngoại như MyISAM, vì vậy bạn nên chọn công cụ lưu trữ thích hợp cho các bảng mà bạn định sử dụng MySQL

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1  hành động tham khảo

Mẹo để tìm các bảng bị ảnh hưởng bởi MySQL CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );Code language: SQL (Structured Query Language) (sql)1 hành động

Đôi khi, rất hữu ích khi biết bảng nào bị ảnh hưởng bởi hành động tham chiếu

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1 khi bạn xóa dữ liệu khỏi bảng. Bạn có thể truy vấn dữ liệu này từ

SELECT * FROM buildings;

Code language: SQL (Structured Query Language) (sql)
0 trong cơ sở dữ liệu

SELECT * FROM buildings;

Code language: SQL (Structured Query Language) (sql)
1  như sau

USE information_schema; SELECT table_name FROM referential_constraints WHERE constraint_schema = 'database_name' AND referenced_table_name = 'parent_table' AND delete_rule = 'CASCADE'

Code language: SQL (Structured Query Language) (sql)

Ví dụ: để tìm các bảng được liên kết với bảng

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
6 bằng quy tắc xóa

SELECT * FROM buildings;

Code language: SQL (Structured Query Language) (sql)
3  trong cơ sở dữ liệu

SELECT * FROM buildings;

Code language: SQL (Structured Query Language) (sql)
4, bạn sử dụng truy vấn sau

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
0
Làm cách nào để loại bỏ một mối quan hệ trong mysql?
Làm cách nào để loại bỏ một mối quan hệ trong mysql?

Trong hướng dẫn này, bạn đã học cách sử dụng MySQL

CREATE TABLE buildings ( building_no INT PRIMARY KEY AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL );

Code language: SQL (Structured Query Language) (sql)
1  hành động tham chiếu cho khóa ngoại để tự động xóa dữ liệu khỏi bảng con khi bạn xóa dữ liệu khỏi bảng cha.

Làm cách nào để xóa một quan hệ trong MySQL?

Nhấp chuột phải vào đường quan hệ giữa hai bảng rồi nhấp vào Xóa .

Làm cách nào để loại bỏ ràng buộc trong MySQL?

Trong MySQL, không có DROP CONSTRAINT , thay vào đó bạn phải sử dụng DROP FOREIGN KEY . THAY ĐỔI BẢNG `table_name` DROP FOREIGN KEY `id_name_fk`; .

Lệnh drop trong MySQL là gì?

Câu lệnh DROP TABLE cho phép xóa bảng khỏi cơ sở dữ liệu MySQL . Câu lệnh này xóa toàn bộ cấu trúc cũng như nội dung của bảng.

Làm cách nào để xóa khóa ngoại trong MySQL?

Bỏ các ràng buộc khóa ngoại . ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol; Nếu mệnh đề FOREIGN KEY đã xác định một tên Ràng buộc khi bạn tạo ràng buộc, bạn có thể tham khảo tên đó để bỏ .