java如何使用Spring的NamedParameterJdbcTemplate在MySQL数据库中创建和删除表? 1 年,11 月 Questions & Answers 827 我知道如何使用^{}在MySQL表中插入、更新和删除数据。但是如何创建和删除表呢
# 1 楼答案 您可以创建一个表,或者删除一个表,就像执行DML语句一样。。。SQL语句作为字符串传递给数据库引擎 我怀疑您要问的是,是否可以在SQL语句中提供一个标识符(例如一个表名),方法是在执行准备好的语句时将其作为绑定占位符的值。e、 g CREATE TABLE ? (mycol INT) 或者 CREATE TABLE :my_table_name (mycol INT) 简而言之,这是不可能做到的 语句中的标识符(例如表名)必须与SQL文本中的一样出现。就像关键字SELECT和FROM必须出现在SQL文本中一样,不能通过绑定占位符作为值提供 我们可以在SELECT语句中演示该限制,尝试将表或视图的名称作为绑定占位符提供。不管是位置?还是命名占位符 这不管用: SELECT t.col c FROM ? t LIMIT 1 这不管用: SELECT 2 AS :col_alias FROM :v_table_name LIMIT 1 如果您了解SQL优化器在准备和执行语句时执行的操作,那么关于标识符的限制是有意义的 此限制适用于SELECT语句。以及DML语句(插入、更新、删除)和DDL语句(创建、更改、删除) 执行DDL语句的另一个潜在问题将导致隐式提交。我们需要注意这一点,以便在交易环境中正确处理这一点 如果需要执行动态DDL语句,为标识符提供变量,有两种基本方法: 1)将SQL文本动态构造为字符串,以便表名(和其他标识符)是SQL文本的一部分,而不是绑定占位符 2)创建一个将执行该语句的存储过程,并调用该存储过程。存储过程的参数可以作为绑定占位符传递
# 1 楼答案
您可以创建一个表,或者删除一个表,就像执行DML语句一样。。。SQL语句作为字符串传递给数据库引擎
我怀疑您要问的是,是否可以在SQL语句中提供一个标识符(例如一个表名),方法是在执行准备好的语句时将其作为绑定占位符的值。e、 g
或者
简而言之,这是不可能做到的
语句中的标识符(例如表名)必须与SQL文本中的一样出现。就像关键字
SELECT
和FROM
必须出现在SQL文本中一样,不能通过绑定占位符作为值提供我们可以在SELECT语句中演示该限制,尝试将表或视图的名称作为绑定占位符提供。不管是位置
?
还是命名占位符这不管用:
这不管用:
如果您了解SQL优化器在准备和执行语句时执行的操作,那么关于标识符的限制是有意义的
此限制适用于SELECT语句。以及DML语句(插入、更新、删除)和DDL语句(创建、更改、删除)
执行DDL语句的另一个潜在问题将导致隐式提交。我们需要注意这一点,以便在交易环境中正确处理这一点
如果需要执行动态DDL语句,为标识符提供变量,有两种基本方法:
1)将SQL文本动态构造为字符串,以便表名(和其他标识符)是SQL文本的一部分,而不是绑定占位符
2)创建一个将执行该语句的存储过程,并调用该存储过程。存储过程的参数可以作为绑定占位符传递