Hướng dẫn casade delete trong mysql
Trong bài này chúng ta sẽ tìm hiểu lệnh Delete trong SQL Server. Delete được dùng để xóa một hoặc nhiều dòng dữ liệu trong bảng, thường kết hợp với lệnh Where để lọc dữ liệu. Show
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Giới thiệu lệnh Delete trong SQL ServerHầu như ứng dụng nào cũng có tính năng xóa dữ liệu. Ví dụ trong ứng dụng quản lý nhân viên sẽ có chức năng thêm / xóa / sửa.
Cú pháp của nó trong SQL Server như sau: DELETE FROM table_name WHERE condition; Nếu bạn không truyền vào condition thì nó sẽ xóa toàn bộ dữ liệu của bảng. Vì vậy bạn nên test kỹ câu lệnh Delete trước khi thực hiện câu truy vấn. Thông thường ta hay xóa theo khóa chính Primary Key. Ví dụ muốn xóa nhân viên có mã số sinh viên là SV002, đây thường là khóa chính của table SINHVIEN. Bài viết này được đăng tại [free tuts .net] Trường hợp xóa dữ liệu mà có ràng buộc khóa ngoại thì bạn phải xóa toàn bộ dữ liệu của bảng con có khóa ngoại trùng với khóa chính của nó đã nhé. Ví dụ bạn muốn xóa phòng ban PB001 thì bước đầu tiên phải xóa toàn bộ nhân viên trong phòng, hoặc chuyển sang phòng ban khác để tránh bị thất lạc dữ liệu. Nếu muốn đơn giản hơn thì sử dụng option 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 ); 2. Cách sử dụng Delete trong SQL ServerChúng ta sẽ tiếp tục sử dụng table Employees làm ví dụ mẫu nhé. Cấu trúc của nó như sau: Lời khuyên: Bạn nên backup lại dữ liệu trước khi kiểm thử câu lệnh Delete nhé, bởi vì nó sẽ xóa vĩnh viễn và bạn không thể phục hồi được. Giả sử mình muốn xóa tất
cả nhân viên nằm trong phòng ban có mã DELETE FROM employees WHERE officeCode = 4; Xóa nhân viên có mã số DELETE FROM employees WHERE employeeNumber = 200; Xóa tất cả nhân viên trong bảng employees. Lệnh cuối này nó gần giống như lệnh 3. Delete kết hợp Limit trong SQL ServerMột điều khá đặc biệt mà ít người chú ý đến đó là bạn có thể kết hợp lệnh Order By và Limit để tạo ra khoảng giới hạn cần xóa. Cú pháp như sau: DELETE FROM table LIMIT row_count; Và để sắp xếp thì ta sẽ thêm câu lệnh Order By. DELETE FROM table_name ORDER BY c1, c2, ... LIMIT row_count; Ví dụ: Xóa 10 nhân viên đầu tiên và danh sách được sắp xếp theo tên nhân viên. DELETE FROM customers ORDER BY customerName LIMIT 10; Hoặc xóa 20 nhân viên đầu tiên sắp xếp theo employeeNumber. DELETE FROM customers ORDER BY employeeNumber LIMIT 20; Rất đơn giản phải không các bạn? Như vậy là mình đã hướng dẫn xong cách sử dụng lệnh Delete trong SQL Server. Đây là lệnh khá là quan trọng, bởi nó được sử dụng ở hầu hết các ứng dụng để đưa vào tính năng xóa dữ liệu. Link video hướng dẫn videoTạo bảng Cơ sở dữ liệuSau khi chọn cơ sở dữ liệu (database) để thao tác:
Cấu trúc:
Phân tích cấu trúc:IF NOT EXISTS => Đoạn này là điều kiện chỉ tạo bảng khi chưa có bảng nào trong cơ sở dữ liệu có tên như vậy (tránh trùng). table_name => Tên của bảng. column_name => Tên của cột. data_type => Kiểu dữ liệu của cột. Ví dụ: INT, VARCHAR,... default_value => giá trị mặc định được gán khi khởi tạo hàng mà không có giá trị nào được gán. column constraints => Ràng buộc mức cột. Ví dụ: NOT NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE, AUTO_INCREMENT,... table constraint => Ràng buộc mức bảng, nó tạo ra ràng buộc cho nhiều cột. Ví dụ: (Cũng như cột trừ NOT NULL). table_type => Xác định kiểu bảng dữ liệu khi lưu trữ, để nhắm cho những mục đích lưu trữ khác nhau. Ví dụ: MyISAM, InnoDB, BerkeleyDB, (BDB), MERGE, HEAP... Ví dụ 1:
Phân tích ví dụ:demo_table_1 => Là tên của bảng. follower, following => Là tên của các cột. INT => Kiểu dữ liệu số nguyên (4 bytes) NOT NULL => Là ràng buộc giá trị (value) của cột không được NULL. PRIMARY KEY => Là ràng buộc khóa chính. InnoDB => Kiểu lưu trữ hỗ trợ giao dịch an toàn, hỗ trợ khóa ngoài. Ví dụ 2:
Phân tích ví dụ: (Phân tích thêm một số thứ chưa có ở ví dụ trên)VARCHAR => Kiểu dữ liệu chuổi ký tự. AUTO_INCREMENT => Ràng buộc tự động tăng giá trị so với giá trị có hàng có trước trong bảng. UNIQUE => Ràng buộc giá trị mỗi hàng là duy nhất không trùng nhau. CONSTRAINT fk_follower => Đặt tên cho ràng buộc phía trước nó là: fk_follower. Giúp cho việc thông báo lỗi liên quan đến các ràng buộc, hay khi thao tác với các ràng buộc. FOREIGN KEY => Ràng buộc khóa ngoài. REFERENCES demo_table_1 (follower) => Tạo một số ràng buộc liên quan đến khóa ngoài tại cột follower của bảng demo_table_1. ON DELETE RESTRICT => Không cho xóa hàng khi còn có tham chiếu tới. ON UPDATE CASCADE => Khi dữ liệu bảng được tham chiếu thay đổi sẽ tự động cập nhật dữ liệu cho bảng tham chiếu tới. Ở Ví dụ này là khi thay đổi follower tại bảng demo_table_1 thì follower trên bảng demo_table sẽ được cập nhật. Để hiển thị thông tin về bảng:
Ví dụ:
Kết quả:
Insert dữ liệu vào bảngCấu trúc
Ví dụ:
Kết quả:
Xóa bảngCấu trúc:
Ví dụ:
Update bảngCấu trúc:
Ví dụ:
Xóa bảng:
Video: Cảm ơn mọi người đã đọc bài viết. Nếu có bất kỳ ý kiến hay góp ý gì hãy để lại bình luận ở dưới. |