Dưới đây là bốn cách để kiểm tra xem một bảng có tồn tại trong cơ sở dữ liệu MariaDB hay không.
information_schema.TABLES
Bảng
information_schema.TABLES
bảng chứa thông tin về các loại không phải TEMPORARY
khác nhau các bảng (ngoại trừ các bảng từ cơ sở dữ liệu Lược đồ Thông tin) và các dạng xem trên máy chủ.
Dưới đây là một ví dụ về truy vấn bảng này:
SELECT
TABLE_SCHEMA,
TABLE_NAME,
TABLE_TYPE
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
Kết quả:
+--------------+------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | +--------------+------------+------------+ | PetHouse | pets | BASE TABLE | +--------------+------------+------------+
Ở đây, tôi đã trả lại bảng cơ sở có tên là Pets
từ cơ sở dữ liệu có tên PetHouse
. 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 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets'
);
Kết quả:
1
Hoặc chúng ta có thể đếm:
SELECT COUNT(TABLE_NAME)
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA LIKE 'PetHouse' AND
TABLE_TYPE LIKE 'BASE TABLE' AND
TABLE_NAME = 'Pets';
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 một cơ sở dữ liệu 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_pethouse LIKE 'Pets';
Kết quả:
+--------------------+------------+ | Tables_in_pethouse | Table_type | +--------------------+------------+ | Pets | BASE TABLE | +--------------------+------------+
Trong trường hợp này, tên cơ sở dữ liệu là pethouse
và vì vậy cột đầu tiên là Tables_in_pethouse
.
SHOW TABLE STATUS
Lệnh
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 PetHouse
WHERE Name = 'Pets';
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 | Max_index_length | Temporary | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+ | Pets | InnoDB | 10 | Dynamic | 8 | 2048 | 16384 | 0 | 32768 | 0 | NULL | 2021-04-01 15:42:43 | NULL | NULL | utf8mb4_general_ci | NULL | | | 0 | N | +------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+------------------+-----------+
mariadb-show
Khách hàng
Một cách khác để làm điều đó là với mariadb-show
tính thiết thực.
Để sử dụng tùy chọn này, hãy mở cửa sổ dòng lệnh / dòng lệnh và chạy như sau (thay thế pethouse
với cơ sở dữ liệu mà bạn quan tâm):
mariadb-show pethouse;
Kết quả:
+---------------+ | Tables | +---------------+ | Owners | | PetTypes | | Pets | | vownercount | | vpetcount | | vpetsowners | | vpetstypes | | vpettypecount | +---------------+
Điều này 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à bạn 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ị.
Ứng dụng khách cũng có thể được chạy dưới dạng mysqlshow
:
mysqlshow pethouse;
Tiện ích này chấp nhận một số tùy chọn, chẳng hạn như --user
(để bạn có thể chuyển tên người dùng), --password
(để bạn có thể chuyển mật khẩu), v.v.
Xem tài liệu của MariaDB để biết danh sách đầy đủ các tùy chọn.
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.
Hãy xem Cách tạo bảng Chỉ khi nó không tồn tại trong MariaDB để làm ví dụ.