有人能告诉我两者之间是否有任何区别
DROP IF EXISTS [TABLE_NAME]
Run Code Online (Sandbox Code Playgroud)
DROP [TABLE_NAME]
Run Code Online (Sandbox Code Playgroud)
我问这个是因为我在我的MVC Web应用程序中使用JDBC模板.如果我使用DROP [TABLE_NAME]
错误表示表存在.如果我用DROP IF EXISTS [TABLE_NAME]
它说错误的SQL语法.有人可以帮忙吗?
如果我想像这样删除我的数据库中的所有表,它会处理外键约束吗?如果没有,我该如何处理?
GO
IF OBJECT_ID('dbo.[Course]','U') IS NOT NULL
DROP TABLE dbo.[Course]
GO
IF OBJECT_ID('dbo.[Student]','U') IS NOT NULL
DROP TABLE dbo.[Student]
Run Code Online (Sandbox Code Playgroud) sql-server constraints foreign-keys drop-table database-table
如何在一个命令中从一个数据库中删除多个表.就像是,
> use test;
> drop table a,b,c;
Run Code Online (Sandbox Code Playgroud)
其中a,b,c是数据库测试中的表.
在MySQL中我想删除一个表.
我尝试了很多东西,但我不断收到错误,表名bericht
不能删除.这是我得到的错误:
#1217 - 无法删除或更新父行:外键约束失败
我该如何删除此表?
我想使用SQLAlchemy删除一个表.
由于我一遍又一遍地测试,我想删除表,my_users
以便每次都可以从头开始.
到目前为止,我使用SQLAlchemy通过engine.execute()方法执行原始SQL :
sql = text('DROP TABLE IF EXISTS my_users;')
result = engine.execute(sql)
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一些标准的方法可以这样做.我唯一能找到的是drop_all()
,但它删除了所有结构,而不仅仅是一个特定的表:
Base.metadata.drop_all(engine) # all tables are deleted
Run Code Online (Sandbox Code Playgroud)
例如,给出这个非常基本的例子.它包含一个带有单个表的SQLite基础结构my_users
,我在其中添加了一些内容.
from sqlalchemy import create_engine, Column, Integer, String, text
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite://', echo=False)
Base = declarative_base()
class User(Base):
__tablename__ = "my_users"
id = Column(Integer, primary_key=True)
name = Column(String)
def __init__(self, name):
self.name = name
# Create all the tables in the database which …
Run Code Online (Sandbox Code Playgroud) 在我正在关注的教程和我看到的更多地方,onUpgrade - > drop table if exists,然后重新创建表.
这样做的目的是什么?
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL, " +
KEY_HOTNESS + " TEXT NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); …
Run Code Online (Sandbox Code Playgroud) 我想从数据库中删除所有表,但不删除数据库本身.可能吗 ?我只是寻找比删除数据库更短的方法并再次创建它.谢谢 !
我的问题很简单,但在创建此交易后我仍然怀疑.如果我执行以下代码:
BEGIN TRANSACTION
DROP TABLE Table_Name
Run Code Online (Sandbox Code Playgroud)
我可以执行恢复丢弃表的ROLLBACK TRANSACTION吗?我问,因为我不知道'对象浏览器'中发生了什么,我没有发现任何关于这个主题的问题,所以我认为这可能是一个有用的问题.
所以我在我的DBAdapter类中有一个问题,它只是在我尝试打开数据库时崩溃:从LogCat我想问题是在onUpgrade函数中:
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w("SingleDBAdapter", "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
onCreate(db);
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
07-28 11:32:49.443: E/Database(1244): Failure 1 (near "122": syntax error) on 0x2435b0 when preparing 'DROP TABLE IF EXISTS 122'.
07-28 11:32:49.463: D/AndroidRuntime(1244): Shutting down VM
07-28 11:32:49.463: W/dalvikvm(1244): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
07-28 11:32:49.473: E/AndroidRuntime(1244): FATAL EXCEPTION: …
Run Code Online (Sandbox Code Playgroud) 我有名称以"TBL_*"开头的表,但我不能通过单个命令删除所有表.
我怎么能放下这张桌子?
drop-table ×10
sql ×6
mysql ×3
sqlite ×3
android ×2
database ×2
constraints ×1
foreign-keys ×1
oracle ×1
php ×1
python ×1
sql-server ×1
sqlalchemy ×1
transactions ×1