SQL中如何使用IF语句

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

需要明确的是:检查表是否存在取决于系统表。
取决于系统:
MySQL: sql SELECT COUNT() FROM information_schema.tables WHERE table_schema='your_db' AND table_name='your_table';
检查返回值是否为0。
大小写取决于配置,Linux 默认区分。

PostgreSQL: sql SELECT EXISTS (SELECT 1 FROM pg_catalog.pg_class c WHERE c.relname='your_table' AND c.relkind='r');
返回 true 意味着它存在。
默认情况下,表名是小写的。
您可以使用引号明确指定区分大小写。
SQL服务器: sql IF OBJECT_ID('your_table', 'U') IS NOT NULL PRINT '表存在。
';
如果存在则返回 1 ,如果不存在则返回 0。
甲骨文: sql SELECT COUNT() FROM user_tables WHERE table_name='YOUR_TABLE_NAME';
表名默认为大写。
搜索时只需使用大写字母。
SQLite: sql SELECT name FROM sqlite_master WHERE type='table' AND name='your_table';
结果为空或存在。

存储过程的动态判断以MySQL为例: sql 分隔符 // 创建过程 check_and_create_table(IN db_name VARCHAR(2 5 5 ), IN table_name VARCHAR(2 5 5 )) 开始 DECLARE table_exists INT; SELECT COUNT() INTO table_exists FROM information_schema.tables WHERE table_schema=db_name AND table_name=table_name; IF table_exists=0 那么 SET @sql=CONCAT('创建表', db_name, '.', table_name, '(id INT PRIMARY KEY, name VARCHAR(2 5 5 ))'); 从 @sql 准备 stmt; 执行命令; 解除分配准备 stmt; 结束如果; 结束 // DELIMITER;
关键是使用PREPARE和EXECUTE来执行动态SQL。

案例问题:
以小写字母创建表格
使用 LOWER() 或 UPPER() 进行查询
PostgreSQL 将表名括在引号中
MySQL更改了“lower_case_table_names”参数
ORM框架有预构建的函数,但最低级别仍然检查系统表。
由您决定哪一个最适合您。

oracle中判断语句怎么写?

IF/ELSE 存储过程。
2 008 年,Oracle正式推荐DECODE。
不要使用 IF/ELSE。

建表时指定主键。