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

Cách kiểm tra xem một bảng đã tồn tại chưa trước khi tạo nó trong MySQL

Trong MySQL, bạn có thể sử dụng IF NOT EXISTS mệnh đề của CREATE TABLE để kiểm tra xem một bảng cùng tên đã tồn tại trong cơ sở dữ liệu hay chưa.

Nếu bảng không tồn tại, nó sẽ được tạo. Nếu nó đã tồn tại, nó sẽ không được tạo.

Ví dụ

Nó diễn ra như thế này:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Ở đâu t1 là tên bảng và mọi thứ nằm giữa dấu ngoặc đơn là định nghĩa bảng (tức là cột, v.v.).

Trong trường hợp đó, bảng sẽ chỉ được tạo nếu chưa có một bảng nào được gọi là t1 .

Kiểm tra để đảm bảo rằng Bảng Hiện đã Tồn tại

Chúng ta có thể sử dụng sys.table_exists() thủ tục để kiểm tra xem bảng hiện có tồn tại hay không:

CALL sys.table_exists('test', 't1', @table_type); 
SELECT @table_type;

Kết quả:

+-------------+
| @table_type |
+-------------+
| BASE TABLE  |
+-------------+

Đây, test là tên của cơ sở dữ liệu và t1 là tên của bảng mà tôi đang kiểm tra sự tồn tại của nó.

Trong trường hợp này, kết quả là BASE TABLE có nghĩa là bảng tồn tại.

Đây chỉ là một trong nhiều cách để kiểm tra xem một bảng có tồn tại trong MySQL hay không.

Cố gắng tạo lại bảng

Bây giờ nếu chúng ta cố gắng tạo lại bảng đó:

CREATE TABLE IF NOT EXISTS t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Chúng tôi không gặp lỗi:

Query OK, 0 rows affected, 1 warning (0.00 sec)

Nhưng chúng tôi nhận được một cảnh báo.

Vì vậy, hãy kiểm tra cảnh báo:

SHOW WARNINGS;

Kết quả:

+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1050 | Table 't1' already exists |
+-------+------+---------------------------+

Như mong đợi, nó cho chúng ta biết rằng bảng đã tồn tại.

Không có IF NOT EXISTS Mệnh đề

Dưới đây là những gì sẽ xảy ra khi chúng tôi không sử dụng IF NOT EXISTS khi cố gắng tạo một bảng đã tồn tại:

CREATE TABLE t1 (
  c1 INT,
  c2 VARCHAR(10)
);

Lần này chúng tôi gặp lỗi:

ERROR 1050 (42S01): Table 't1' already exists

Điều quan trọng cần lưu ý là IF NOT EXISTS mệnh đề không kiểm tra cấu trúc / định nghĩa bảng. Nó chỉ đơn giản là kiểm tra xem không có bảng nào có cùng tên mà chúng tôi đang cố gắng cung cấp cho bảng mà chúng tôi đang tạo.

Nói cách khác, chỉ vì một bảng có tên đó đã tồn tại, điều đó không có nghĩa là bảng đó có định nghĩa chính xác.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt Innotop để giám sát hiệu suất máy chủ MySQL

  2. thêm cột vào bảng mysql nếu nó không tồn tại

  3. Sử dụng Đếm để tìm số lần xuất hiện

  4. Thêm nhiều cột SAU một cột cụ thể trong MySQL

  5. MySQL là gì:Tổng quan