SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite - Xóa dữ liệu

DELETE câu lệnh có thể được sử dụng để xóa dữ liệu trong bảng.

WHERE mệnh đề có thể được sử dụng để chỉ định chính xác hàng nào sẽ bị xóa.

Bạn có thể xóa tất cả các hàng, một số hàng hoặc không có hàng nào, tùy thuộc vào các điều kiện lọc được áp dụng bởi WHERE mệnh đề.

Xóa đơn giản

Trước tiên, hãy tìm một nghệ sĩ để xóa:

sqlite> SELECT * FROM Artists;
ArtistId  ArtistName            Bio                                     
--------  --------------------  ----------------------------------------
1         Joe Satriani                                                  
2         Steve Vai                                                     
3         The Tea Party                                                 
4         Noiseworks                                                    
5         Wayne Jury                                                    
6         Mr Percival                                                   
7         Iron Maiden                                                   
8         Atmasphere            Australian jazz band centred around poly
9         Ian Moss                                                      
10        Magnum                                                        
11        Strapping Young Lad                                           
12        Slayer                                                        
13        Primus                                                        
14        Pat Metheny                                                   
15        Frank Gambale                                                 
16        Mothers of Invention                                          
17        The Wiggles                                                   

Được rồi, hãy xóa số nghệ sĩ 12 (Kẻ giết người).

Đây là câu lệnh xóa đơn giản xóa bản ghi đó khỏi Artists bảng:

DELETE FROM Artists
WHERE ArtistId = 12;

Vì vậy, sau khi chạy, chúng tôi có thể xác minh rằng bản ghi trên thực tế đã bị xóa bằng SELECT tuyên bố:

sqlite> SELECT * FROM Artists WHERE ArtistId = 12;
sqlite>                                                                     

(Không có kết quả).

Xóa dữ liệu có ràng buộc khóa ngoại

Nếu bạn cố gắng xóa một bản ghi được tham chiếu bởi khóa ngoại, bạn sẽ gặp lỗi. Trước tiên, bạn cần xóa bản ghi khóa ngoại trước khi xóa bản ghi khóa chính.

Ví dụ:ID nghệ sĩ 17 (từ Artists bảng) tình cờ được tham chiếu bởi hai bản ghi trong Album bảng (xem ArtistId cột):

sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
AlbumId   AlbumName             ReleaseDate   ArtistId    
--------  --------------------  ------------  ------------
5         Yummy Yummy           1994          17          
13        Big Red Car           1995          17          

Vì vậy, nếu chúng tôi cố gắng xóa nghệ sĩ 17 từ bảng Nghệ sĩ (chứa khóa chính), chúng tôi sẽ gặp lỗi.

Đây là câu lệnh xóa:

DELETE FROM Artists
WHERE ArtistId = 17;

Và đây là kết quả:

sqlite> DELETE FROM Artists
   ...> WHERE ArtistId = 17;
Error: FOREIGN KEY constraint failed
sqlite> 

Vì vậy, chúng ta cần xóa các bản ghi khóa ngoại trước khi xóa khóa chính.

Nếu bạn không nhận được ràng buộc NGOẠI KHÓA, không thành công thông báo, bạn có thể cần bật kiểm tra ràng buộc khóa ngoại. Chạy PRAGMA foreign_keys = ON; để bật kiểm tra ràng buộc khóa ngoại.

Xóa các bản ghi được liên kết

Vì vậy, hãy xóa các bản ghi được liên kết trong Album trước khi thử lại câu lệnh xóa ở trên.

DELETE FROM Albums
WHERE ArtistId = 17;

Kiểm tra xem chúng đã bị xóa chưa:

sqlite> SELECT * FROM Albums WHERE ArtistId = 17;
sqlite> 

(Không có kết quả).

Bây giờ, hãy thử lại câu lệnh xóa ban đầu:

DELETE FROM Artists
WHERE ArtistId = 17;

Có vẻ hứa hẹn - không có lỗi:

sqlite> DELETE FROM Artists
   ...> WHERE ArtistId = 17;
sqlite> 	

Và một SELECT tuyên bố xác nhận việc xóa:

sqlite> SELECT * FROM Artists WHERE ArtistId = 17;
sqlite> 

Không có kết quả.

Xóa tất cả các Hàng

Bạn có thể xóa tất cả các hàng trong bảng bằng cách bỏ qua WHERE mệnh đề.

Chúng tôi có một bàn dự phòng ( Albums1 ), vì vậy hãy thử nó trên cái đó.

Đầu tiên, hãy kiểm tra xem nó có thực sự chứa dữ liệu không:

sqlite> SELECT * FROM Albums1;
AlbumId   AlbumName             Year          ArtistId    
--------  --------------------  ------------  ------------
1         Killers               1981          7           
2         Powerslave            1984          7           
3         Surfing with the Ali  1987          1           
4         Heavy as a Really He  1995          11          
5         Yummy Yummy           1994          17          
6         Out of the Loop       2007          6           
7         Suck on This          1989          13          
8         Pork Soda             1993          13          
9         Sailing the Seas of   1991          13          
10        Flying in a Blue Dre  1989          1           
11        Black Swans and Worm  2010          1           
12        Somewhere in Time     1986          7           
13        Big Red Car           1995          17          

Nó có. Vì vậy, hãy tiếp tục và xóa tất cả:

DELETE FROM Albums1;

Bây giờ chúng ta hãy kiểm tra lại nội dung của nó:

sqlite> SELECT * FROM Albums1;
sqlite> 

(Không có kết quả).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận ngày thứ Hai đầu tiên của năm trong SQLite

  2. trong SQLite

  3. Cập nhật ứng dụng và cơ sở dữ liệu Android SQLite

  4. Cách tạo ứng dụng quốc tế hóa ngoại tuyến:Sử dụng cơ sở dữ liệu Sqlite

  5. Trả về các hàng có chứa ký tự chữ và số trong SQLite