Cách xóa dữ liệu trong SQL
Trong Ngôn ngữ truy vấn có cấu trúc , thường được gọi là SQL , câu lệnhDELETE
là một trong những hoạt động mạnh mẽ nhất có sẵn cho user . Như tên của nó, các hoạt động DELETE
xóa không phục hồi được một hoặc nhiều hàng dữ liệu khỏi bảng database . Là một khía cạnh cơ bản của quản lý dữ liệu, điều quan trọng là user SQL phải hiểu cách hoạt động của câu lệnh DELETE
. Hướng dẫn này sẽ trình bày cách sử dụng cú pháp DELETE
của SQL để xóa dữ liệu khỏi một hoặc nhiều bảng. Nó cũng sẽ giải thích cách SQL xử lý các hoạt động DELETE
xung đột với các ràng buộc foreign keys .
Yêu cầu
Để làm theo hướng dẫn này, bạn cần một máy tính chạy một số loại hệ quản trị database quan hệ (RDBMS) sử dụng SQL. Các hướng dẫn và ví dụ trong hướng dẫn này đã được kiểm nghiệm bằng cách sử dụng môi trường sau:
- Server chạy Ubuntu 20.04, với user không phải root có quyền quản trị và firewall được cấu hình bằng UFW, như được mô tả trong hướng dẫn cài đặt server ban đầu của ta cho Ubuntu 20.04 .
- MySQL được cài đặt và bảo mật trên server , như được nêu trong Cách cài đặt MySQL trên Ubuntu 20.04 . Hướng dẫn này đã được xác minh với user MySQL không phải root, được tạo bằng quy trình được mô tả trong Bước 3 .
Lưu ý : Xin lưu ý nhiều RDBMS sử dụng các triển khai SQL duy nhất của riêng họ. Mặc dù các lệnh được nêu trong hướng dẫn này sẽ hoạt động trên hầu hết các RDBMS, nhưng cú pháp hoặc kết quả chính xác có thể khác nếu bạn kiểm tra chúng trên một hệ thống không phải MySQL.
Bạn cũng cần một database và bảng được tải với một số dữ liệu mẫu mà bạn có thể sử dụng để thực hành xóa dữ liệu. Ta khuyến khích bạn đọc phần Kết nối với MySQL và Cài đặt Database Mẫu sau đây để biết chi tiết về cách tạo database và hai bảng mà hướng dẫn này sẽ sử dụng trong các ví dụ xuyên suốt.
Kết nối với MySQL và cài đặt database mẫu
Nếu hệ thống database SQL của bạn chạy trên một server từ xa, hãy SSH vào server của bạn từ máy local của bạn:
- ssh sammy@your_server_ip
Sau đó, mở dấu nhắc server MySQL, thay thế sammy
bằng tên account user MySQL của bạn:
- mysql -u sammy -p
Tạo database có tên deleteDB
:
- CREATE DATABASE deleteDB;
Nếu database được tạo thành công, bạn sẽ nhận được kết quả như sau:
OutputQuery OK, 1 row affected (0.01 sec)
Để chọn database deleteDB
, hãy chạy câu lệnh USE
sau:
- USE deleteDB;
OutputDatabase changed
Sau khi chọn database deleteDB
, hãy tạo một vài bảng bên trong nó. Ví dụ, hãy tưởng tượng rằng bạn và một số người bạn của bạn bắt đầu một câu lạc bộ, trong đó các thành viên có thể chia sẻ thiết bị âm nhạc với nhau. Để giúp bạn theo dõi các thành viên câu lạc bộ và thiết bị của họ, bạn quyết định tạo một vài bảng. Bảng đầu tiên sẽ có bốn cột sau:
-
memberID
: mã số nhận dạng của từng thành viên câu lạc bộ, được thể hiện bằng kiểu dữ liệuint
. Cột này cũng sẽ đóng role là khóa chính của bảng -
name
:name
mỗi thành viên, được thể hiện bằng kiểu dữ liệuvarchar
với tối đa 30 ký tự -
homeBorough
: cột này sẽ lưu trữ khu vực mà mỗi thành viên sinh sống, được thể hiện bằng kiểu dữ liệuvarchar
nhưng chỉ có tối đa 15 ký tự -
email
: địa chỉ email mà mỗi thành viên có thể được liên hệ, được thể hiện bằng kiểu dữ liệuvarchar
với tối đa 30 ký tự
Tạo một bảng có tên clubMembers
có bốn cột sau:
- CREATE TABLE clubMembers (
- memberID int PRIMARY KEY,
- name varchar(30),
- homeBorough varchar(15),
- email varchar(30)
- );
Bảng tiếp theo sẽ có các cột sau:
-
equipmentID
: một mã định danh duy nhất cho từng thiết bị. Các giá trị trong cột này sẽ thuộc kiểu dữ liệuint
. Giống nhưmemberID
cột trongclubMembers
bảng, cột này sẽ đóng role là khóa chính của bảng -
equipmentType
: loại nhạc cụ hoặc công cụ mà mỗi hàng đại diện (ví dụ:guitar
,mixer
,amplifier
, v.v.). Các giá trị này sẽ được thể hiện bằng kiểu dữ liệuvarchar
với tối đa 30 ký tự -
brand
: thương hiệu production từng bộ phận của thiết bị, được thể hiện lại bằng cách sử dụng kiểu dữ liệuvarchar
với tối đa 30 ký tự -
ownerID
: cột này sẽ chứa số ID của thành viên câu lạc bộ sở hữu trang bị, được biểu thị dưới dạng số nguyên.
Để đảm bảo các cột ownerID chỉ chứa các giá trị đại diện cho số thành viên ID hợp lệ, bạn có thể tạo một ràng buộc khoá ngoại tham chiếu đến các clubMember
bảng của memberID
cột. Ràng buộc foreign keys là một cách để thể hiện mối quan hệ giữa hai bảng. Khóa ngoại thực hiện điều này bằng cách yêu cầu các giá trị trong cột mà nó áp dụng phải đã tồn tại trong cột mà nó tham chiếu. Trong ví dụ sau, ràng buộc foreign keys yêu cầu bất kỳ giá trị nào được thêm vào cột ownerID
phải tồn tại trong cột memberID
.
Tạo một bảng với các cột này và ràng buộc này có tên là clubEquipment
:
- CREATE TABLE clubEquipment (
- equipmentID int PRIMARY KEY,
- equipmentType varchar(30),
- brand varchar(15),
- ownerID int,
- CONSTRAINT fk_ownerID
- FOREIGN KEY (ownerID) REFERENCES clubMembers(memberID)
- );
Lưu ý ví dụ này cung cấp tên cho ràng buộc foreign keys , fk_ownerID
. MySQL sẽ tự động tạo tên cho bất kỳ ràng buộc nào bạn thêm vào, nhưng việc xác định một ràng buộc ở đây sẽ hữu ích khi ta cần tham chiếu đến ràng buộc này sau này.
Tiếp theo, chạy INSERT INTO
sau để tải bảng clubMembers
với sáu hàng dữ liệu mẫu:
- INSERT INTO clubMembers
- VALUES
- (1, 'Rosetta', 'Manhattan', 'hightower@example.com'),
- (2, 'Linda', 'Staten Island', 'lyndell@example.com'),
- (3, 'Labi', 'Brooklyn', 'siffre@example.com'),
- (4, 'Bettye', 'Queens', 'lavette@example.com'),
- (5, 'Phoebe', 'Bronx', 'snow@example.com'),
- (6, 'Mariya', 'Brooklyn', 'takeuchi@example.com');
Sau đó, chạy một INSERT INTO
để tải bảng clubEquipment
với 20 hàng dữ liệu mẫu:
- INSERT INTO clubEquipment
- VALUES
- (1, 'electric guitar', 'Gilled', 6),
- (2, 'trumpet', 'Yemehe', 5),
- (3, 'drum kit', 'Purl', 3),
- (4, 'mixer', 'Bearinger', 3),
- (5, 'microphone', 'Sure', 1),
- (6, 'bass guitar', 'Fandar', 4),
- (7, 'acoustic guitar', 'Marten', 6),
- (8, 'synthesizer', 'Korgi', 4),
- (9, 'guitar amplifier', 'Vax', 4),
- (10, 'keytar', 'Poland', 3),
- (11, 'acoustic/electric bass', 'Pepiphone', 2),
- (12, 'trombone', 'Cann', 2),
- (13, 'mandolin', 'Rouge', 1),
- (14, 'electric guitar', 'Vax', 6),
- (15, 'accordion', 'Nonher', 5),
- (16, 'electric organ', 'Spammond', 1),
- (17, 'bass guitar', 'Peabey', 1),
- (18, 'guitar amplifier', 'Fandar', 3),
- (19, 'cello', 'Yemehe', 2),
- (20, 'PA system', 'Mockville', 5);
Như vậy, bạn đã sẵn sàng làm theo phần còn lại của hướng dẫn và bắt đầu tìm hiểu về cách xóa dữ liệu bằng SQL.
Xóa dữ liệu khỏi một bảng
Cú pháp chung để xóa dữ liệu trong SQL trông giống như sau:
- DELETE FROM table_name
- WHERE conditions_apply;
Cảnh báo : Phần quan trọng của cú pháp này là WHERE
, vì đây là WHERE
đề cho phép bạn chỉ định chính xác những hàng dữ liệu nào sẽ bị xóa. Nếu không có nó, một lệnh như DELETE FROM table_name ;
sẽ thực thi chính xác, nhưng nó sẽ xóa mọi hàng dữ liệu khỏi bảng.
Lưu ý thao tác DELETE
thành công là không phục hồi được . Nếu bạn định chạy một file mà không biết chính xác dữ liệu nào sẽ xóa, có khả năng bạn vô tình xóa nhầm các bản ghi. Một cách để giúp đảm bảo bạn không vô tình xóa nhầm dữ liệu là trước tiên đưa ra một truy vấn SELECT
để xem dữ liệu nào sẽ được trả về bởi WHERE
của hoạt động DELETE
.
Để minh họa, giả sử bạn muốn xóa mọi bản ghi liên quan đến thiết bị âm nhạc do thương hiệu Korgi production . Tuy nhiên, để an toàn, trước tiên bạn quyết định viết một truy vấn để xem chính xác profile thiết bị nào liệt kê Korgi
trong cột brand
của họ.
Để tìm nhạc cụ nào trong bảng của bạn do Korg production , bạn có thể chạy truy vấn sau. Lưu ý không giống như truy vấn SELECT
hoặc hoạt động INSERT INTO
, hoạt động DELETE
không cho phép bạn chỉ định các cột riêng lẻ, vì chúng nhằm xóa toàn bộ các hàng dữ liệu. Để bắt chước hành vi này, truy vấn này theo sau từ khóa SELECT
với dấu hoa thị ( *
), đây là cách viết tắt của SQL và đại diện cho “mọi cột”:
- SELECT * FROM clubEquipment
- WHERE brand = 'Korgi';
Truy vấn này trả về mọi cột từ bảng clubEquipment
, nhưng chỉ trả về các hàng có cột brand
chứa giá trị Korgi
:
Output+-------------+---------------+-------+---------+ | equipmentID | equipmentType | brand | ownerID | +-------------+---------------+-------+---------+ | 8 | synthesizer | Korgi | 4 | +-------------+---------------+-------+---------+ 1 row in set (0.00 sec)
Để xóa hàng này, bạn sẽ chạy một thao tác DELETE
có WHERE
đề FROM
và WHERE
giống với SELECT
trước đó:
- DELETE FROM clubEquipment
- WHERE brand = 'Korgi';
OutputQuery OK, 1 row affected (0.01 sec)
Đầu ra này cho biết thao tác DELETE
chỉ ảnh hưởng đến một hàng duy nhất. Tuy nhiên, bạn có thể xóa nhiều hàng dữ liệu với bất kỳ WHERE
nào trả về nhiều hơn một hàng.
Sau đây SELECT
truy vấn trả về mọi kỷ lục trong clubEquipment
bảng mà equipmentType
cột chứa từ electric
:
- SELECT * FROM clubEquipment
- WHERE equipmentType LIKE '%electric%';
Output+-------------+------------------------+-----------+---------+ | equipmentID | equipmentType | brand | ownerID | +-------------+------------------------+-----------+---------+ | 1 | electric guitar | Gilled | 6 | | 11 | acoustic/electric bass | Pepiphone | 2 | | 14 | electric guitar | Vax | 6 | | 16 | electric organ | Spammond | 1 | +-------------+------------------------+-----------+---------+ 4 rows in set (0.00 sec)
, để xóa bốn bản ghi này, hãy viết lại thao tác truy vấn này nhưng thay thế SELECT *
bằng DELETE
:
- DELETE FROM clubEquipment
- WHERE equipmentType LIKE '%electric%';
OutputQuery OK, 4 rows affected (0.00 sec)
Bạn cũng có thể sử dụng truy vấn con để trả lại và xóa các tập hợp kết quả chi tiết hơn. Truy vấn con là một hoạt động truy vấn hoàn chỉnh - nghĩa là, một câu lệnh SQL bắt đầu bằng SELECT
và bao gồm mệnh đề FROM
- được nhúng trong một hoạt động khác, theo sau mệnh đề FROM
của chính hoạt động xung quanh.
Ví dụ: giả sử bạn muốn xóa bất kỳ thiết bị nào được liệt kê trong bảng Thiết bị câu clubEquipment
thuộc sở hữu của bất kỳ thành viên nào có tên bắt đầu bằng chữ cái “L.” Trước tiên, bạn có thể truy vấn dữ liệu này bằng một câu lệnh như sau:
- SELECT *
- FROM clubEquipment
- WHERE ownerID IN
- (SELECT memberID FROM clubMembers
- WHERE name LIKE 'L%');
Thao tác này trả về mọi hàng từ bảng clubEquipment
có cột ownerID
xuất hiện trong các giá trị được trả về bởi truy vấn con bắt đầu từ dòng thứ tư. Truy vấn con này trả về memberID of any record whose
giá trị tên` bắt đầu bằng “L”:
Output+-------------+------------------+-----------+---------+ | equipmentID | equipmentType | brand | ownerID | +-------------+------------------+-----------+---------+ | 12 | trombone | Cann | 2 | | 19 | cello | Yemehe | 2 | | 3 | drum kit | Purl | 3 | | 4 | mixer | Bearinger | 3 | | 10 | keytar | Poland | 3 | | 18 | guitar amplifier | Fandar | 3 | +-------------+------------------+-----------+---------+ 6 rows in set (0.00 sec)
Sau đó, bạn có thể xóa dữ liệu này bằng câu lệnh DELETE
sau:
- DELETE FROM clubEquipment
- WHERE ownerID IN
- (SELECT memberID FROM clubMembers
- WHERE name LIKE 'L%');
OutputQuery OK, 6 rows affected (0.01 sec)
Xóa dữ liệu khỏi nhiều bảng
Bạn có thể xóa dữ liệu khỏi nhiều bảng trong một thao tác bằng cách thêm mệnh đề JOIN
.
Mệnh đề JOIN
được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng thành một kết quả truy vấn duy nhất. Họ làm điều này bằng cách tìm một cột liên quan giữa các bảng và sắp xếp kết quả một cách thích hợp trong kết quả .
Cú pháp của thao tác DELETE
bao gồm mệnh đề JOIN
trông giống như sau:
- DELETE table_1, table_2
- FROM table_1 JOIN table_2
- ON table_2.related_column = table_1.related_column
- WHERE conditions_apply;
Lưu ý vì mệnh đề JOIN
so sánh nội dung của nhiều hơn một bảng, nên cú pháp ví dụ này chỉ định bảng để chọn từng cột bằng cách đặt trước tên của cột với tên của bảng và dấu chấm. Đây được gọi là tham chiếu cột đủ điều kiện . Bạn có thể chỉ định bảng nào nên chọn cột như thế này cho bất kỳ thao tác nào, mặc dù không cần thiết khi chỉ chọn từ một bảng như ta đã làm trong các ví dụ trước.
Để minh họa việc xóa dữ liệu bằng điều khoản JOIN
, giả sử câu lạc bộ của bạn quyết định giới hạn những nhãn hiệu thiết bị âm nhạc mà thành viên có thể chia sẻ. Chạy câu lệnh sau để tạo một bảng có tên là Thương hiệu prohibitedBrands
trong đó bạn sẽ liệt kê những nhãn hiệu không còn được chấp nhận cho câu lạc bộ. Bảng này chỉ có hai cột, cả hai đều sử dụng kiểu dữ liệu varchar
, để chứa tên của từng thương hiệu và quốc gia mà họ hoạt động:
- CREATE TABLE prohibitedBrands (
- brandName varchar(30),
- homeCountry varchar(30)
- );
Sau đó tải bảng mới này với một số dữ liệu mẫu:
- INSERT INTO prohibitedBrands
- VALUES
- ('Fandar', 'USA'),
- ('Givson', 'USA'),
- ('Muug', 'USA'),
- ('Peabey', 'USA'),
- ('Yemehe', 'Japan');
Sau đó, câu lạc bộ quyết định xóa bất cứ profile thiết bị từ clubEquipment
bảng có nhãn hiệu xuất hiện trong prohibitedBrands
bảng và có trụ sở tại USA .
Bạn có thể truy vấn dữ liệu này bằng một thao tác như SELECT
sau đây. Thao tác này gia nhập clubEquipment
và prohibitedBrands
bảng với nhau, chỉ trả lại hàng mà brand
và brandName
cột chia sẻ một giá trị chung. WHERE
tinh chỉnh thêm bộ kết quả này bằng cách loại trừ bất kỳ thương hiệu nào có cột homeCountry
không bao gồm USA
dưới dạng giá trị của nó:
- SELECT *
- FROM clubEquipment JOIN prohibitedBrands
- ON clubEquipment.brand = prohibitedBrands.brandName
- WHERE homeCountry = 'USA';
Output+-------------+---------------+--------+---------+-----------+-------------+ | equipmentID | equipmentType | brand | ownerID | brandName | homeCountry | +-------------+---------------+--------+---------+-----------+-------------+ | 6 | bass guitar | Fandar | 4 | Fandar | USA | | 17 | bass guitar | Peabey | 1 | Peabey | USA | +-------------+---------------+--------+---------+-----------+-------------+ 2 rows in set (0.00 sec)
Đó là tất cả thông tin ta đang tìm kiếm; cụ thể là từng thương hiệu có trụ sở tại USA trong bảng Thương hiệu prohibitedBrands
cũng xuất hiện trong bảng clubEquipment
bộ clubEquipment
.
Để xóa các thương hiệu này khỏi bảng prohbitedBrands
và các thiết bị liên quan khỏi clubEquipment
, hãy viết lại SELECT
trước đó nhưng thay thế SELECT *
bằng DELETE
theo sau là tên của cả hai bảng:
- DELETE clubEquipment, prohibitedBrands
- FROM clubEquipment JOIN prohibitedBrands
- ON clubEquipment.brand = prohibitedBrands.brandName
- WHERE homeCountry = 'USA';
OutputQuery OK, 4 rows affected (0.01 sec)
Kết quả kết quả này cho biết thao tác đã xóa bốn hàng dữ liệu: hai hàng từ clubEquipment
và hai hàng từ prohibitedBrands
clubEquipment
. Nếu bạn chỉ muốn xóa các bản ghi khỏi bảng clubEquipment
và duy trì tất cả các bản ghi trong bảng prohibitedBrands
clubEquipment
, bạn sẽ chỉ liệt kê clubEquipment
sau từ khóa DELETE
và ngược lại.
Thay đổi hành vi DELETE
foreign keys
Theo mặc định, bất kỳ câu lệnh DELETE
nào gây ra xung đột với foreign keys sẽ không thành công.
Nhớ lại phần Kết nối với MySQL và Cài đặt Database Mẫu của Yêu cầu rằng cột ownerID
của bảng clubEquipment
là foreign keys tham chiếu đến cột ownerID
của clubEquipment
. Điều này nghĩa là bất kỳ giá trị nào được nhập vào cột ownerID
phải tồn tại trong cột memberID
.
Nếu bạn cố gắng xóa một hàng dữ liệu khỏi bảng clubMembers
có giá trị memberID
được sử dụng ở bất kỳ vị trí nào trong cột ownerID
, nó sẽ gây ra lỗi:
- DELETE FROM clubMembers
- WHERE memberID = 6;
OutputERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Bạn có thể tránh lỗi này bằng cách đầu tiên loại bỏ bất kỳ hàng trong bảng con ( clubEquipment
trong ví dụ này), nơi các giá trị chính nước ngoài tồn tại trong bảng cha ( clubMembers
).
Ngoài ra, bạn có thể thay đổi hành vi này bằng cách thay thế ràng buộc foreign keys hiện có bằng một ràng buộc xử lý các hoạt động DELETE
cách khác.
Lưu ý : Không phải mọi hệ thống hoặc công cụ quản lý database đều cho phép bạn thêm hoặc xóa một ràng buộc khỏi một bảng hiện có như được nêu trong các đoạn sau. Nếu bạn đang sử dụng RDBMS không phải MySQL, bạn nên tham khảo tài liệu chính thức của nó để hiểu nó có những hạn chế nào đối với việc quản lý các ràng buộc.
Để thay thế ràng buộc hiện tại, trước tiên bạn phải loại bỏ nó bằng một ALTER TABLE
. Nhớ lại rằng trong câu CREATE TABLE
cho clubEquipment
, ta đã định nghĩa fk_ownerID
làm tên cho ràng buộc foreign keys của bảng:
- ALTER TABLE clubEquipment
- DROP FOREIGN KEY fk_ownerID;
OutputQuery OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
Sau đó, tạo một ràng buộc foreign keys mới được cấu hình để xử lý các hoạt động DELETE
theo cách phù hợp với trường hợp sử dụng nhất định. Ngoài cài đặt mặc định cấm các câu lệnh DELETE
vi phạm foreign keys , có hai tùy chọn khác có sẵn trên hầu hết các RDBMS:
-
ON DELETE SET NULL
: Tùy chọn này sẽ cho phép bạn xóa các bản ghi khỏi bảng mẹ và sẽ đặt lại bất kỳ giá trị nào trong bảng con tham chiếu chúng làNULL
. -
ON DELETE CASCADE
: Khi bạn xóa một hàng trong bảng mẹ, tùy chọn này sẽ khiến SQL tự động xóa bất kỳ bản ghi nào tham chiếu đến nó trong bảng con.
Đối với mục đích của ví dụ này, ON DELETE SET NULL
không có ý nghĩa. Nếu một thành viên rời khỏi câu lạc bộ và thu âm của họ được lấy ra từ các clubMembers
bảng, thiết bị của họ không còn có sẵn cho các thành viên còn lại và do đó cần được loại bỏ từ clubEquipment
bảng. Do đó, tùy chọn ON DELETE CASCADE
có ý nghĩa hơn đối với mục đích của ta .
Để thêm một ràng buộc foreign keys tuân theo hành vi ON DELETE CASCADE
, hãy chạy ALTER TABLE
sau. Điều này tạo ra một ràng buộc mới có tên newfk_ownerID
sao chép định nghĩa foreign keys trước đó, nhưng bao gồm tùy chọn ON DELETE CASCADE
:
- ALTER TABLE clubEquipment
- ADD CONSTRAINT newfk_ownerID
- FOREIGN KEY (ownerID)
- REFERENCES clubMembers(memberID)
- ON DELETE CASCADE;
OutputQuery OK, 7 rows affected (0.07 sec) Records: 7 Duplicates: 0 Warnings: 0
Kết quả này cho biết nó đã ảnh hưởng đến tất cả bảy hàng còn lại trong bảng clubEquipment
bộ clubEquipment
.
Lưu ý : Thay vì thay đổi định nghĩa của bảng để thay đổi cách foreign keys xử lý các hoạt động DELETE
, bạn có thể xác định hành vi này ngay từ đầu trong câu CREATE TABLE
như sau:
- CREATE TABLE clubEquipment (
- equipmentID int PRIMARY KEY,
- equipmentType varchar(30),
- brand varchar(15),
- ownerID int,
- CONSTRAINT fk_ownerID
- FOREIGN KEY (ownerID) REFERENCES clubMembers(memberID)
- ON DELETE CASCADE
- );
Sau đó, bạn có thể xóa bất kỳ bản ghi nào khỏi bảng clubMembers
và bất kỳ hàng nào trong bảng clubEquipment
tham chiếu đến nó cũng sẽ bị xóa:
- DELETE FROM clubMembers
- WHERE memberID = 6;
OutputQuery OK, 1 row affected (0.00 sec)
Mặc dù kết quả này cho biết nó chỉ ảnh hưởng đến một hàng, nhưng nó cũng sẽ xóa mọi bản ghi thiết bị trong bảng clubEquipment
bộ thiết bị liệt kê giá trị ownerID
của chúng là 6
.
Kết luận
Bằng cách đọc hướng dẫn này, bạn đã học cách xóa dữ liệu khỏi một hoặc nhiều bảng bằng cách sử dụng câu lệnh DELETE
. Bạn cũng đã học cách SQL xử lý các hoạt động DELETE
xung đột với các ràng buộc foreign keys và cách thay đổi hành vi mặc định đó.
Các lệnh được nêu ở đây sẽ hoạt động trên bất kỳ hệ quản trị database nào sử dụng SQL. Lưu ý mọi database SQL sử dụng cách triển khai ngôn ngữ duy nhất của riêng nó, vì vậy bạn nên tham khảo tài liệu chính thức của DBMS để có mô tả đầy đủ hơn về cách nó xử lý câu DELETE
và những tùy chọn nào có sẵn cho nó.
Nếu bạn muốn tìm hiểu thêm về cách làm việc với SQL, ta khuyến khích bạn xem các hướng dẫn khác trong loạt bài này về Cách sử dụng SQL .
Các tin liên quan