Dưới đây là năm cách để kiểm tra xem một bảng có tồn tại trong cơ sở dữ liệu MySQL hay không.
table_exists()
Thủ tục
Trong MySQL, sys.table_exists()
thủ tục được lưu trữ kiểm tra xem một bảng nhất định có tồn tại như một bảng thông thường hay không, một TEMPORARY
bảng hoặc một khung nhìn. Thủ tục trả về loại bảng trong OUT
tham số.
Ví dụ:
CALL sys.table_exists('Music', 'Albums', @table_type);
SELECT @table_type;
Kết quả:
+-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+
Lưu ý rằng nếu tồn tại cả bảng tạm thời và bảng vĩnh viễn với tên đã cho, thì TEMPORARY
được trả lại.
information_schema.TABLES
Bảng
Một cách khác để kiểm tra xem bảng có tồn tại hay không là truy vấn information_schema.TABLES
bảng:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists';
Kết quả:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | Music | Artists | BASE TABLE | +--------------+------------+------------+
Trong trường hợp này, tôi đã trả lại bảng cơ sở có tên Artists
từ cơ sở dữ liệu có tên music
. Truy vấn điều này mà không lọc kết quả theo TABLE_SCHEMA
trả về các bảng cơ sở từ tất cả các cơ sở dữ liệu. Truy vấn nó mà không lọc theo TABLE_TYPE
trả về tất cả các loại bảng.
Nếu chúng tôi không cần tất cả thông tin đó, chúng tôi có thể làm điều này:
SELECT EXISTS (
SELECT
TABLE_NAME
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists'
);
Kết quả:
1
Hoặc chúng ta có thể đếm:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'music' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Artists';
Kết quả:
+-------------------+ | COUNT(TABLE_NAME) | +-------------------+ | 1 | +-------------------+
SHOW TABLES
Lệnh
SHOW TABLES
lệnh liệt kê không phải TEMPORARY
bảng, trình tự và dạng xem trong cơ sở dữ liệu MySQL nhất định. Chúng ta có thể sử dụng WHERE
mệnh đề để thu hẹp nó thành một loại nhất định.
Chúng tôi cũng có thể sử dụng FULL
công cụ sửa đổi để trả về cột thứ hai hiển thị kiểu:
SHOW FULL TABLES
WHERE Table_Type LIKE 'BASE TABLE'
AND Tables_in_music LIKE 'Albums';
Kết quả:
+-----------------+------------+ | Tables_in_music | Table_type | +-----------------+------------+ | Albums | BASE TABLE | +-----------------+------------+
Trong trường hợp này, tên cơ sở dữ liệu là music
và vì vậy cột đầu tiên là Tables_in_music
.
SHOW TABLE STATUS
Lệnh
Trong MySQL, SHOW TABLE STATUS
tương tự như lệnh SHOW TABLES
nhưng cung cấp thêm thông tin về mỗi lệnh (non-TEMPORARY
) bảng.
Ví dụ:
SHOW TABLE STATUS
FROM Music
WHERE Name = 'Albums';
Kết quả:
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+ | Albums | InnoDB | 10 | Dynamic | 20 | 819 | 16384 | 0 | 32768 | 0 | 21 | 2021-11-13 12:56:02 | 2021-11-13 12:56:13 | NULL | utf8mb4_0900_ai_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
mysqlshow
Khách hàng
Một cách khác để kiểm tra các bảng trong cơ sở dữ liệu MySQL là sử dụng mysqlshow
khách hàng.
Để sử dụng tiện ích này, hãy mở cửa sổ dòng lệnh / cửa sổ dòng lệnh và chạy như sau:
mysqlshow --user root --password music;
Đảm bảo thay thế music
với cơ sở dữ liệu mà bạn quan tâm và root
với người dùng thích hợp. --password
bit dẫn đến việc người dùng được nhắc nhập mật khẩu.
Kết quả:
Enter password: Database: music +----------------+ | Tables | +----------------+ | Albums | | Artists | | Genres | | valbumsartists | | valbumsgenres | | vallalbums | | vallartists | | vallgenres | +----------------+
mysqlshow
máy khách trả về các dạng xem và bảng.
Đầu ra chỉ hiển thị tên của các cơ sở dữ liệu, bảng hoặc cột mà người dùng có một số đặc quyền.
Nếu không có cơ sở dữ liệu nào được cung cấp thì tất cả các cơ sở dữ liệu phù hợp sẽ được hiển thị. Nếu không có bảng nào được đưa ra, thì tất cả các bảng phù hợp trong cơ sở dữ liệu sẽ được hiển thị. Nếu không có cột nào được đưa ra, thì tất cả các cột và loại cột phù hợp trong bảng sẽ được hiển thị.
Kiểm tra xem một bảng đã tồn tại chưa trước khi tạo nó
Nếu bạn cần tạo bảng nếu nó không tồn tại, bạn có thể sử dụng IF NOT EXISTS
mệnh đề của CREATE TABLE
tuyên bố. 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.
Xem Cách kiểm tra xem một bảng đã tồn tại chưa trước khi tạo bảng trong MySQL để làm ví dụ.