sql中怎么判断表存在 判断表是否存在的sql写法汇总

MySQL 使用 information_schema.tables 来搜索表。
SELECT COUNT() FROM information_schema.tables WHERE table_schema='your_db' AND table_name='your_table'; 如果结果大于0,则存在。
注意 lower_case_table_names 配置,Windows 默认不区分大小写。

PostgreSQL 使用 pg_catalog.pg_class+EXISTS。
SELECT EXISTS(SELECT 1 FROM pg_catalog.pg_class c WHERE c.relname='your_table' AND c.relkind='r'); 返回 true 表示存在。
默认情况下,表名是小写的。
查询时使用小写分隔符或双引号。

SQL Server 使用 OBJECT_ID。
IF OBJECT_ID('your_table', 'U') IS NOT NULL PRINT '存在'; 如果存在则返回 1 ,如果不存在则返回 0。

Oracle 使用 user_tables 视图。
SELECT COUNT() FROM user_tables WHERE table_name='YOUR_TABLE'; 如果结果大于0,则存在。
默认情况下,表名大写。
执行查询时使用大写转换或 UPPER()。

SQLite 使用 sqlite_master。
选择名称 FROM sqlite_master WHERE type='table' AND name='your_table'; 如果结果不为空则存在。

存储过程的动态判断以MySQL为例: 平方米 分隔符 // 创建过程 check_and_create_table(IN db_name VARCHAR(2 5 5 ), IN table_name VARCHAR(2 5 5 )) 开始 DECLARE table_exists INT; SELECT COUNT() IN table_exists FROM information_schema.tables WHERE table_schema=db_name AND table_name=table_name; 如果表存在 = 0 那么 SET @sql = CONCAT('CREATE TABLE ', db_name, '.', table_name, '(id INT PRIMARY KEY, name VARCHAR(2 5 5 ))'); 从 @sql 准备 stmt; 运行命令; 解除分配准备 stmt; 结束如果; 结束 // DELIMITER;
调用:CALL check_and_create_table('your_db', 'your_table'); 请注意动态 SQL 用法 PREPARE/EXECUTE/DEALLOCATE。

处理区分大小写:
创建表格时使用小写字母。

MySQL 使用 LOWER/UPPER 函数。

PostgreSQL 使用双引号分隔符。

修改MySQL参数lower_case_table_names。

ORM或客户端API也可用,但较低级别仍然是系统表查询。

自己掂量一下。

查看mysql数据库是否包含某个表

直接检查:
SQL 使用 mydb. 从 information_schema.TABLES 中选择 TABLE_NAME,其中 TABLE_SCHEMA='mydb' AND TABLE_NAME='mytable';
或者:
SQL 使用 mydb. 显示类似“mytable”的表;
Navicat 操作:
1 .连接服务器 2 .提取mydb 3 . 单击表目录查看结果。

SQL中查询某个表是否存在的几种方法

在创建表之前,需要检查该表是否存在。
说白了,就是避免重复断字的名字。

ifexists 是一种常见的方法。
我上周刚做一个项目并使用了这个。

另一种方法是先尝试查询表。
例如: SQL SELECT FROM User_TagTbl
如果报错,说明该表不存在。
简陋。

或者检查系统视图。
例如,MySQL 包括: SQL SELECT FROM information_schema.tables WHERE table_name = 'User_TagTbl'
如果没有找到数据,则说明该表不存在。
这种方法比较可靠。

但是,频繁删除表可能会出现问题。
就我个人而言,我喜欢先检查一下。
这是第一位的。