Hướng dẫn what is the delete command in mysql? - lệnh xóa trong mysql là gì?


Câu lệnh Xóa MySQL

Tuyên bố

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
3 được sử dụng để xóa các bản ghi hiện có trong bảng.

Xóa cú pháp

Xóa khỏi bảng_name nơi điều kiện;

Lưu ý: Hãy cẩn thận khi xóa hồ sơ trong bảng! Lưu ý mệnh đề

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
4 trong tuyên bố
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
3. Điều khoản
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
6 chỉ định (các) bản ghi nào sẽ bị xóa. Nếu bạn bỏ qua mệnh đề
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
6, tất cả các bản ghi trong bảng sẽ bị xóa!
Be careful when deleting records in a table! Notice the
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
4 clause in the
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
3 statement. The
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
6 clause specifies which record(s) should be deleted. If you omit the
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
6 clause, all records in the table will be deleted!


Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu Northwind:

ID khách hàngTên khách hàngTên Liên lạcĐịa chỉ nhàThành phốMã bưu điệnQuốc gia
1 Alfreds FutterkisteMaria AndersObere str. 57Berlin12209 nước Đức
2 Ana Trujillo Emparedados Y HeladosAna TrujilloAvda. de la constitución 2222México D.F.05021 Mexico
3 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023 Mexico
4 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312Xung quanh sừngThomas Hardy120 Hanover sq.
5 LondonWA1 1DPVương quốc AnhBerglunds SnabbköpChristina BerglundBerguvsvägen 8



Luleå

S-958 22

Thụy Điển

SQL Xóa ví dụ

Câu lệnh SQL sau đây xóa khách hàng "Alfreds Futterkiste" từ bảng "Khách hàng":

ID khách hàngTên khách hàngTên Liên lạcĐịa chỉ nhàThành phốMã bưu điệnQuốc gia
2 Ana Trujillo Emparedados Y HeladosAna TrujilloAvda. de la constitución 2222México D.F.05021 Mexico
3 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023 Mexico
4 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312Xung quanh sừngThomas Hardy120 Hanover sq.
5 LondonWA1 1DPVương quốc AnhBerglunds SnabbköpChristina BerglundBerguvsvägen 8


Luleå

S-958 22

Thụy Điển

Thụy Điển

SQL Xóa ví dụ




    • Khám phá
    • Hợp tác
    • Hình dung
    • Liên kết

  • Giá cả

POPSQL

    Khám phá

    Hợp tác

    Hình dung

    Liên kết



Giá cả


    POPSQL

    DELETE FROM products WHERE product_id=1;

    Hợp tác

    Để xóa các hàng trong bảng MySQL, hãy sử dụng câu lệnh DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias] [PARTITION (partition_name [, partition_name] ...)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]8:

    Điều khoản

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6 là tùy chọn, nhưng bạn thường muốn nó, trừ khi bạn thực sự muốn xóa từng hàng khỏi bảng.

    Để xóa các hàng trong bảng MySQL, hãy sử dụng câu lệnh DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias] [PARTITION (partition_name [, partition_name] ...)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]8:

    Điều khoản

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6 là tùy chọn, nhưng bạn thường muốn nó, trừ khi bạn thực sự muốn xóa từng hàng khỏi bảng.

    13.2.2 & NBSP; Xóa tuyên bố

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 là một câu lệnh DML loại bỏ các hàng khỏi bảng.

    Một câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 có thể bắt đầu với mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    2 để xác định các biểu thức bảng phổ biến có thể truy cập trong
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3. Xem phần & nbsp; 13.2.15, với (biểu thức bảng phổ biến).

    Cú pháp bảng đơn

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]

    Câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 xóa các hàng từ
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    5 và trả về số lượng hàng bị xóa. Để kiểm tra số lượng các hàng đã bị xóa, hãy gọi hàm
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    6 được mô tả trong Phần & NBSP; 12.16, các chức năng thông tin của Hồi giáo.

    Mệnh đề chính

    Các điều kiện trong mệnh đề

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6 tùy chọn xác định các hàng nào sẽ xóa. Không có mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6, tất cả các hàng bị xóa.

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    9 là một biểu thức đánh giá đúng cho mỗi hàng sẽ bị xóa. Nó được chỉ định như được mô tả trong Phần & NBSP; 13.2.10, Câu lệnh Chọn.

    Nếu mệnh đề

    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    0 được chỉ định, các hàng sẽ bị xóa theo thứ tự được chỉ định. Điều khoản
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    1 đặt giới hạn về số lượng hàng có thể bị xóa. Các mệnh đề này áp dụng cho các xóa bảng đơn, nhưng không phải là xóa nhiều bảng.

    Cú pháp nhiều bàn

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]

    Đặc quyền

    Bạn cần đặc quyền

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 trên bảng để xóa các hàng khỏi nó. Bạn chỉ cần đặc quyền
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    3 cho bất kỳ cột nào chỉ được đọc, chẳng hạn như các cột được đặt tên trong mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6.

    Màn biểu diễn

    Khi bạn không cần biết số lượng hàng bị xóa, câu lệnh

    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    5 là một cách nhanh hơn để trống một bảng so với câu lệnh
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 không có mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6. Không giống như
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3,
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    5 không thể được sử dụng trong giao dịch hoặc nếu bạn có khóa trên bàn. Xem Phần & NBSP; 13.1.37, Tuyên bố bảng cắt ngắn và Phần & NBSP; 13.3.6, Bảng khóa và mở khóa Bảng câu lệnh.

    Tốc độ xóa các hoạt động cũng có thể bị ảnh hưởng bởi các yếu tố được thảo luận trong Phần & NBSP; 8.2.5.3, Tối ưu hóa các câu lệnh xóa.

    Để đảm bảo rằng một câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 đã cho không mất quá nhiều thời gian, mệnh đề
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    1 dành riêng cho MySQL cho
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 Chỉ định số lượng hàng tối đa bị xóa. Nếu số lượng hàng để xóa lớn hơn giới hạn, hãy lặp lại câu lệnh
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 cho đến khi số lượng hàng bị ảnh hưởng nhỏ hơn giá trị
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    1.

    Subqueries

    Bạn không thể xóa khỏi bảng và chọn từ cùng một bảng trong một truy vấn con.

    Hỗ trợ bảng phân vùng

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 Hỗ trợ lựa chọn phân vùng rõ ràng bằng mệnh đề
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    6, lấy danh sách các tên được phân tách bằng dấu phẩy của một hoặc nhiều phân vùng hoặc phân vùng (hoặc cả hai) để chọn các hàng bị bỏ. Các phân vùng không bao gồm trong danh sách bị bỏ qua. Đưa ra một bảng được phân vùng
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    7 với một phân vùng có tên
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    8, thực thi câu lệnh
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    9 có tác dụng tương tự trên bảng khi thực thi
    RENAME TABLE t TO t_old, t_copy TO t;
    0; Trong cả hai trường hợp, tất cả các hàng trong phân vùng
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    8 đều bị loại bỏ.

    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    6 có thể được sử dụng cùng với điều kiện
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6, trong trường hợp đó điều kiện chỉ được kiểm tra trên các hàng trong các phân vùng được liệt kê. Ví dụ:
    RENAME TABLE t TO t_old, t_copy TO t;
    4 chỉ xóa các hàng từ phân vùng
    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    8 mà điều kiện
    RENAME TABLE t TO t_old, t_copy TO t;
    6 là đúng; Hàng trong bất kỳ phân vùng nào khác không được kiểm tra và do đó không bị ảnh hưởng bởi
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3.

    Điều khoản

    INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    6 cũng có thể được sử dụng trong các câu lệnh
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 nhiều bảng. Bạn có thể sử dụng tối đa một tùy chọn như vậy cho mỗi bảng có tên trong tùy chọn
    DROP TABLE t_old;
    0.

    Để biết thêm thông tin và ví dụ, xem Phần & NBSP; 24.5, Lựa chọn phân vùng.

    Cột tự động

    Nếu bạn xóa hàng chứa giá trị tối đa cho cột

    DROP TABLE t_old;
    1, giá trị không được sử dụng lại cho bảng
    DROP TABLE t_old;
    2 hoặc
    DROP TABLE t_old;
    3. Nếu bạn xóa tất cả các hàng trong bảng với xóa từ
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    5 (không có mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6) trong chế độ
    DROP TABLE t_old;
    6, chuỗi bắt đầu lại cho tất cả các công cụ lưu trữ ngoại trừ
    DROP TABLE t_old;
    3 và
    DROP TABLE t_old;
    2. Có một số ngoại lệ đối với hành vi này đối với các bảng
    DROP TABLE t_old;
    3, như đã thảo luận trong Phần & NBSP; 15.6.1.6, Xử lý Auto_increment trong Innodb.DELETE FROM
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    5
    (without a
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6 clause) in
    DROP TABLE t_old;
    6 mode, the sequence starts over for all storage engines except
    DROP TABLE t_old;
    3 and
    DROP TABLE t_old;
    2. There are some exceptions to this behavior for
    DROP TABLE t_old;
    3 tables, as discussed in Section 15.6.1.6, “AUTO_INCREMENT Handling in InnoDB”.

    Đối với các bảng

    DROP TABLE t_old;
    2, bạn có thể chỉ định cột thứ cấp
    DROP TABLE t_old;
    1 trong phím nhiều cột. Trong trường hợp này, việc tái sử dụng các giá trị bị xóa khỏi đầu chuỗi xảy ra ngay cả đối với các bảng
    DROP TABLE t_old;
    2. Xem Phần & NBSP; 3.6.9, Sử dụng Auto_increment.

    Sửa đổi

    Tuyên bố

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 hỗ trợ các công cụ sửa đổi sau:

    • Nếu bạn chỉ định công cụ sửa đổi

      DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      4, máy chủ sẽ trì hoãn việc thực thi
      DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
          [PARTITION (partition_name [, partition_name] ...)]
          [WHERE where_condition]
          [ORDER BY ...]
          [LIMIT row_count]
      3 cho đến khi không có máy khách nào khác đọc từ bảng. Điều này chỉ ảnh hưởng đến các công cụ lưu trữ chỉ sử dụng khóa cấp bảng (chẳng hạn như
      DROP TABLE t_old;
      2,
      DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      7 và
      DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      8).

    • Đối với các bảng

      DROP TABLE t_old;
      2, nếu bạn sử dụng công cụ sửa đổi
      DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      0, công cụ lưu trữ không hợp nhất các chỉ số chỉ số trong quá trình xóa, điều này có thể tăng tốc một số loại hoạt động xóa.

    • Công cụ sửa đổi

      DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      1 khiến MYSQL bỏ qua các lỗi không thể tin được trong quá trình xóa hàng. (Lỗi gặp phải trong giai đoạn phân tích cú pháp được xử lý theo cách thông thường.) Các lỗi bị bỏ qua do sử dụng
      DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
      WHERE t1.id=t2.id AND t2.id=t3.id;
      1 được trả về dưới dạng cảnh báo. Để biết thêm thông tin, hãy xem ảnh hưởng của việc bỏ qua đối với việc thực thi tuyên bố.

    Thứ tự xóa

    Nếu câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 bao gồm mệnh đề
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    0, các hàng sẽ bị xóa theo thứ tự được chỉ định bởi mệnh đề. Điều này hữu ích chủ yếu kết hợp với
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    1. Ví dụ: câu lệnh sau đây tìm thấy các hàng khớp với mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6, sắp xếp chúng bằng
    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    7 và xóa cái đầu tiên (lâu đời nhất):

    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;

    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    0 cũng giúp xóa các hàng theo thứ tự cần thiết để tránh vi phạm toàn vẹn tham chiếu.

    Bàn innodb

    Nếu bạn đang xóa nhiều hàng từ một bảng lớn, bạn có thể vượt quá kích thước bảng khóa cho bảng

    DROP TABLE t_old;
    3. Để tránh vấn đề này, hoặc đơn giản là để giảm thiểu thời gian mà bảng vẫn bị khóa, chiến lược sau (hoàn toàn không sử dụng
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3) có thể hữu ích:

    1. Chọn các hàng không bị xóa vào một bảng trống có cùng cấu trúc với bảng gốc:not to be deleted into an empty table that has the same structure as the original table:

      INSERT INTO t_copy SELECT * FROM t WHERE ... ;
    2. Sử dụng

      DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
      1 để di chuyển bảng nguyên tử ra khỏi đường và đổi tên bản sao thành tên gốc:

      RENAME TABLE t TO t_old, t_copy TO t;
    3. Thả bảng ban đầu:

      DROP TABLE t_old;

    Không có phiên nào khác có thể truy cập các bảng liên quan trong khi

    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    1 thực thi, vì vậy hoạt động đổi tên không phải chịu các vấn đề đồng thời. Xem Phần & NBSP; 13.1.36, Tuyên bố Đổi tên Bảng.

    Bàn myisam

    Trong các bảng

    DROP TABLE t_old;
    2, các hàng bị xóa được duy trì trong danh sách được liên kết và các hoạt động
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    4 tiếp theo tái sử dụng các vị trí hàng cũ. Để đòi lại không gian không sử dụng và giảm kích thước tệp, hãy sử dụng câu lệnh
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    5 hoặc tiện ích Myisamchk để tổ chức lại các bảng.
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    5 dễ sử dụng hơn, nhưng Myisamchk nhanh hơn. Xem phần & nbsp; 13.7.3.4, Tối ưu hóa bảng câu lệnh bảng, và phần & nbsp; 4.6.4, Myisamchk-tiện ích bảo trì bảng myisam.myisamchk utility to reorganize tables.
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    5 is easier to use, but myisamchk is faster. See Section 13.7.3.4, “OPTIMIZE TABLE Statement”, and Section 4.6.4, “myisamchk — MyISAM Table-Maintenance Utility”.

    Công cụ sửa đổi

    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    0 có ảnh hưởng đến việc liệu lá chỉ mục được hợp nhất để xóa các hoạt động hay không.
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    8 hữu ích nhất cho các ứng dụng trong đó các giá trị chỉ mục cho các hàng bị xóa được thay thế bằng các giá trị chỉ mục tương tự từ các hàng được chèn vào sau. Trong trường hợp này, các lỗ hổng còn lại bởi các giá trị bị xóa được sử dụng lại.

    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    8 không hữu ích khi các giá trị bị xóa dẫn đến các khối chỉ mục bị thiếu hụt một loạt các giá trị chỉ mục mà các chèn mới lại xảy ra. Trong trường hợp này, việc sử dụng
    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    0 có thể dẫn đến không gian lãng phí trong chỉ số vẫn chưa được xác định. Dưới đây là một ví dụ về một kịch bản như vậy:

    1. Tạo một bảng chứa cột

      DROP TABLE t_old;
      1 được lập chỉ mục.

    2. Chèn nhiều hàng vào bàn. Mỗi phần chèn kết quả trong một giá trị chỉ mục được thêm vào cấp cao của chỉ mục.

    3. Xóa một khối các hàng ở đầu thấp của phạm vi cột bằng cách sử dụng

      DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
      8.

    Trong kịch bản này, các khối chỉ mục được liên kết với các giá trị chỉ mục đã bị xóa trở nên thiếu hụt nhưng không được hợp nhất với các khối chỉ mục khác do sử dụng

    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    0. Chúng vẫn bị thiếu khi chèn mới xảy ra, bởi vì các hàng mới không có giá trị chỉ mục trong phạm vi bị xóa. Hơn nữa, chúng vẫn được lấp đầy ngay cả khi sau đó bạn sử dụng
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 mà không cần
    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;
    0, trừ khi một số giá trị chỉ số bị xóa xảy ra trong các khối chỉ mục trong hoặc liền kề với các khối bị thiếu. Để đòi lại không gian chỉ số không sử dụng trong những trường hợp này, hãy sử dụng
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    5.

    Nếu bạn định xóa nhiều hàng khỏi bảng, có thể sử dụng

    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    8 nhanh hơn, sau đó là
    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
    5. Điều này xây dựng lại chỉ mục thay vì thực hiện nhiều hoạt động hợp nhất khối chỉ mục.

    Xóa đa bàn

    Bạn có thể chỉ định nhiều bảng trong câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 để xóa các hàng khỏi một hoặc nhiều bảng tùy thuộc vào điều kiện trong mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    6. Bạn không thể sử dụng
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    11 hoặc
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    1 trong
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 nhiều bảng. Điều khoản
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    14 liệt kê các bảng liên quan đến tham gia, như được mô tả trong Phần & NBSP; 13.2.10.2, Điều khoản tham gia.

    Đối với cú pháp nhiều bảng đầu tiên, chỉ các hàng khớp từ các bảng được liệt kê trước mệnh đề

    DROP TABLE t_old;
    0 bị xóa. Đối với cú pháp nhiều bảng thứ hai, chỉ khớp các hàng từ các bảng được liệt kê trong mệnh đề
    DROP TABLE t_old;
    0 (trước mệnh đề
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    17) bị xóa. Hiệu ứng là bạn có thể xóa các hàng từ nhiều bảng cùng một lúc và có thêm các bảng chỉ được sử dụng để tìm kiếm:

    DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;

    Hoặc:

    DELETE FROM t1, t2 USING t1 INNER JOIN t2 INNER JOIN t3
    WHERE t1.id=t2.id AND t2.id=t3.id;

    Các câu lệnh này sử dụng cả ba bảng khi tìm kiếm các hàng để xóa, nhưng chỉ xóa các hàng khớp chỉ từ các bảng

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    18 và
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    19.

    Các ví dụ trước sử dụng

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    20, nhưng các câu lệnh
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 nhiều bảng có thể sử dụng các loại tham gia khác được phép trong các câu lệnh
    DELETE FROM somelog WHERE user = 'jcole'
    ORDER BY timestamp_column LIMIT 1;
    3, chẳng hạn như
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    23. Ví dụ: để xóa các hàng tồn tại trong
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    18 không phù hợp trong
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    19, hãy sử dụng
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    23:

    DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

    Cú pháp cho phép

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    27 sau mỗi
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    5 để tương thích với quyền truy cập.Access.

    Nếu bạn sử dụng câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 nhiều bảng liên quan đến các bảng
    DROP TABLE t_old;
    3 có các ràng buộc chính của nước ngoài, trình tối ưu hóa MySQL có thể xử lý các bảng theo thứ tự khác với mối quan hệ cha mẹ/trẻ em của họ. Trong trường hợp này, tuyên bố thất bại và quay trở lại. Thay vào đó, bạn nên xóa khỏi một bảng và dựa vào các khả năng
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    31 mà
    DROP TABLE t_old;
    3 cung cấp để khiến các bảng khác được sửa đổi phù hợp.

    Ghi chú

    Nếu bạn khai báo bí danh cho một bảng, bạn phải sử dụng bí danh khi đề cập đến bảng:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    0

    Bí danh bảng trong một bảng nhiều bảng

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 chỉ nên được khai báo trong phần
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    14 của câu lệnh. Ở những nơi khác, tài liệu tham khảo bí danh được cho phép nhưng không phải là khai báo bí danh.

    Chính xác:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    1

    Không đúng:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    2

    Bí danh bảng cũng được hỗ trợ cho các câu lệnh

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    3 bảng bắt đầu bằng MySQL 8.0.16. (Lỗi #89410, lỗi #27455809)

    Các lệnh xóa là gì?

    Xóa lệnh là lệnh thao tác dữ liệu được sử dụng để xóa các bản ghi khỏi bảng.Tất cả các hồ sơ có thể bị xóa trong một lần hoặc một tập hợp các bản ghi có thể bị xóa dựa trên một điều kiện.a data manipulation command which is used to remove records from a table. All records may be removed in one go, or a set of records may be deleted based on a condition.

    Làm cách nào để xóa một hàng trong mysql?

    Để xóa các hàng trong bảng MySQL, hãy sử dụng xóa khỏi câu lệnh: Xóa khỏi các sản phẩm trong đó sản phẩm_id = 1;Mệnh đề WHERE là tùy chọn, nhưng bạn thường muốn nó, trừ khi bạn thực sự muốn xóa từng hàng khỏi bảng.use the DELETE FROM statement: DELETE FROM products WHERE product_id=1; The WHERE clause is optional, but you'll usually want it, unless you really want to delete every row from the table.

    Làm cách nào để xóa một bảng trong mysql?

    Câu lệnh bảng cắt ngắn được sử dụng để xóa tất cả các bản ghi khỏi bảng trong MySQL.Nó thực hiện chức năng tương tự như một câu lệnh xóa mà không có mệnh đề WHERE.CẢNH BÁO: Nếu bạn cắt ngắn một bảng, câu lệnh bảng cắt ngắn không thể được quay lại.

    Cú pháp xóa là gì?

    Xóa cú pháp xóa khỏi bảng_name nơi điều kiện;Lưu ý: Hãy cẩn thận khi xóa hồ sơ trong bảng!Lưu ý mệnh đề WHERE trong câu lệnh Xóa.Mệnh đề WHERE chỉ định (các) bản ghi nào sẽ bị xóa.DELETE FROM table_name WHERE condition; Note: Be careful when deleting records in a table! Notice the WHERE clause in the DELETE statement. The WHERE clause specifies which record(s) should be deleted.