Hướng dẫn check table exists in mysql - bảng kiểm tra tồn tại trong mysql
Có một số vấn đề cần lưu ý với câu trả lời ở đây: Show
1) 7 không bao gồm các bảng tạm thời.2) Sử dụng bất kỳ loại truy vấn 8 nào, tức là 9, sẽ buộc trả về kết quả cho máy khách, đó là hành vi không mong muốn để kiểm tra xem bảng có tồn tại phía máy chủ, từ trong một quy trình được lưu trữ cũng trả về kết quả.3) Như một số người dùng đã đề cập, bạn phải cẩn thận với cách bạn sử dụng 0.Nếu bạn làm điều gì đó như:
Bạn sẽ không nhận được kết quả dự kiến nếu bảng có hàng bằng không. Dưới đây là một quy trình được lưu trữ sẽ hoạt động cho tất cả các bảng (thậm chí là tạm thời). Nó có thể được sử dụng như:
Mật mã:
Làm thế nào để bạn kiểm tra rằng bảng đã tồn tại? Cách kiểm tra xem một bảng đã tồn tại trước khi tạo nó trong ....Kiểm tra xem bảng bây giờ có tồn tại không. Chúng ta có thể sử dụng thủ tục sys.table_exists () để kiểm tra xem bảng có tồn tại không: gọi sys.table_exists ('test', 't1', @table_type); Chọn @Table_Type; .... Example:
Result: +-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+ Cố gắng tạo lại bảng. .... Bảng /* p_table_name is required p_database_name is optional if NULL is given for p_database_name, then it defaults to the currently selected database p_does_table_exist The @variable to save the result to This procedure attempts to SELECT NULL FROM `p_database_name`.`p_table_name` LIMIT 0; If [SQLSTATE '42S02'] is raised, then SET p_does_table_exist = 0 Else SET p_does_table_exist = 1 Info on SQLSTATE '42S02' at: https://dev.mysql.com/doc/refman/5.7/en/server-error-reference.html#error_er_no_such_table */ DELIMITER $$ DROP PROCEDURE IF EXISTS DoesTableExist $$ CREATE PROCEDURE DoesTableExist ( IN p_table_name VARCHAR(64), IN p_database_name VARCHAR(64), OUT p_does_table_exist TINYINT(1) UNSIGNED ) BEGIN /* 793441 is used in this procedure for ensuring that user variables have unique names */ DECLARE EXIT HANDLER FOR SQLSTATE '42S02' BEGIN SET p_does_table_exist = 0 ; END ; IF p_table_name IS NULL THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DoesTableExist received NULL for p_table_name.'; END IF; /* redirect resultset to a dummy variable */ SET @test_select_sql_793441 = CONCAT( "SET @dummy_var_793441 = (" " SELECT" " NULL" " FROM ", IF( p_database_name IS NULL, "", CONCAT( "`", REPLACE(p_database_name, "`", "``"), "`." ) ), "`", REPLACE(p_table_name, "`", "``"), "`" " LIMIT 0" ")" ) ; PREPARE _sql_statement FROM @test_select_sql_793441 ; SET @test_select_sql_793441 = NULL ; EXECUTE _sql_statement ; DEALLOCATE PREPARE _sql_statement ; SET p_does_table_exist = 1 ; END $$ DELIMITER ; 6Một cách khác để kiểm tra xem một bảng tồn tại là truy vấn bảng 6:
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ở gọi là 8 từ cơ sở dữ liệu được gọi là 9. Truy vấn điều này mà không cần lọc kết quả bằng 0 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 bằng 1 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:
Kết quả: 1 Hoặc chúng ta có thể nhận được số lượng:
Kết quả: 0Lệnh CALL sys.table_exists('Music', 'Albums', @table_type); SELECT @table_type;2Lệnh 2 liệt kê các bảng, chuỗi, trình tự và lượt xem không phải là cơ sở dữ liệu MySQL nhất định. Chúng ta có thể sử dụng mệnh đề 5 để thu hẹp nó thành một loại đã cho.Chúng tôi cũng có thể sử dụng công cụ sửa đổi 6 để trả về cột thứ hai hiển thị loại: 1Kết quả: 2Lệnh 2Lệnh CALL sys.table_exists('Music', 'Albums', @table_type); SELECT @table_type;2 liệt kê các bảng, chuỗi, trình tự và lượt xem không phải là cơ sở dữ liệu MySQL nhất định. Chúng ta có thể sử dụng mệnh đề CALL sys.table_exists('Music', 'Albums', @table_type); SELECT @table_type;5 để thu hẹp nó thành một loại đã cho.Chúng tôi cũng có thể sử dụng công cụ sửa đổi 6 để trả về cột thứ hai hiển thị loại:Example: 3Kết quả: 4Lệnh CALL sys.table_exists('Music', 'Albums', @table_type); SELECT @table_type;2Lệnh 2 liệt kê các bảng, chuỗi, trình tự và lượt xem không phải là cơ sở dữ liệu MySQL nhất định. Chúng ta có thể sử dụng mệnh đề 5 để thu hẹp nó thành một loại đã cho.Chúng tôi cũng có thể sử dụng công cụ sửa đổi 6 để trả về cột thứ hai hiển thị loại: 5Trong trường hợp này, tên cơ sở dữ liệu là 9, và do đó cột đầu tiên là 8.Result: 6Lệnh 9Trong MySQL, lệnh 9 tương tự như lệnh 2 nhưng cung cấp thông tin rộng rãi hơn & nbsp; về mỗi bảng (không phải -____ 23).Máy khách +-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+3 Một cách khác để kiểm tra các bảng trong cơ sở dữ liệu MySQL là sử dụng máy khách +-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+3.Để sử dụng tiện ích này, hãy mở một cửa sổ dấu nhắc/thiết bị đầu cuối dòng lệnh và chạy như sau: Hãy chắc chắn thay thế 9 bằng cơ sở dữ liệu mà bạn quan tâm và +-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+6 với người dùng hiện hành. +-------------+ | @table_type | +-------------+ | BASE TABLE | +-------------+7 bit dẫn đến người dùng được nhắc nhận mật khẩu. Làm thế nào bạn sẽ kiểm tra xem một bảng tồn tại trong mysql?4.26 Quy trình Table_Exists (). Kiểm tra xem một bảng nhất định có tồn tại dưới dạng bảng thông thường, bảng tạm thời hay chế độ xem hay không. Quy trình trả về loại bảng trong một tham số ra. Nếu cả một bảng tạm thời và một bảng vĩnh viễn tồn tại với tên đã cho, tạm thời sẽ được trả về.table_exists() Procedure. Tests whether a given table exists as a regular table, a TEMPORARY table, or a view. The procedure returns the table type in an OUT parameter. If both a temporary and a permanent table exist with the given name, TEMPORARY is returned.
Làm thế nào để bạn kiểm tra rằng bảng đã tồn tại?Cách kiểm tra xem một bảng đã tồn tại trước khi tạo nó trong ..... Kiểm tra xem bảng bây giờ có tồn tại không. Chúng ta có thể sử dụng thủ tục sys.table_exists () để kiểm tra xem bảng có tồn tại không: gọi sys.table_exists ('test', 't1', @table_type); Chọn @Table_Type; .... Cố gắng tạo lại bảng. .... Không có điều khoản nếu không tồn tại .. Làm thế nào để bạn kiểm tra xem một bảng tồn tại trong một lược đồ?Làm thế nào để kiểm tra xem một bảng (hoặc chế độ xem) có tồn tại hay không và người dùng hiện tại có quyền truy cập vào nó không?Chọn tồn tại (chọn từ thông tin_schema.tables trong đó Table_schema = 'Schema_name' và Table_Name = 'Table_Name');Lược đồ thông tin chủ yếu hữu ích để giữ di động trên các phiên bản chính và trên các RDBM khác nhau.SELECT EXISTS ( SELECT FROM information_schema. tables WHERE table_schema = 'schema_name' AND table_name = 'table_name' ); The information schema is mainly useful to stay portable across major versions and across different RDBMS.
Làm thế nào để bạn kiểm tra xem một bảng tồn tại trong SQL Python?Chọn TableName từ sqlite_master trong đó loại = 'bảng' và tablename = 'student';Sau đó, sử dụng phương thức fetchall () trên biến đó để tạo danh sách các bảng chứa tên của mẫu được tìm thấy.Nếu danh sách trống thì bảng không tồn tại trong cơ sở dữ liệu. |