sqldroptable的简单介绍

本篇文章给大家谈谈sqldroptable,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

第三十八章 SQL命令 DROP TABLE

删除表及其数据(可选)。

DROP TABLE 命令删除一个表及其对应的持久化类定义。如果该表是其架构中的最后一项,则删除该表也会删除该架构及其相应的持久化类包。

默认情况下, DROP TABLE 同时删除表定义和表数据(如果存在)。 %NODELDATA 关键字允许指定删除表定义,但不能指定删除表的数据。

DROP TABLE 删除与该表关联的所有索引和触发器。

要删除表格,必须满足以下条件:

可以使用 $SYSTEM.SQL.Schema.DropTable() 方法删除当前名称空间中的表。可以指定SQL表名。与 DROP TABLE 不同,此方法可以删除未使用 [DdlAllowed] 定义的表。第二个参数指定是否也应该删除表数据;默认情况下,不删除数据。

可以使用 $SYSTEM.OBJ.Delete() 方法删除当前名称空间中的一个或多个表。必须指定投影表的永久类名(而不是SQL表名)。可以使用通配符指定多个类名。第二个参数指定是否也应该删除表数据;默认情况下,不删除数据。

DROP TABLE 命令是特权操作。用户必须具有 %DROP_TABLE 管理权限才能执行 DROP TABLE 。否则将导致 SQLCODE-99 错误,因为 %msg 用户没有 %DROP_TABLE 权限。如果拥有适当的授予权限,则可以使用 GRANT 命令分配 %DROP_TABLE 权限。

即使 DROP TABLE 操作同时删除了表和表数据,用户也不必具有指定表的 DELETE OBJECT 权限。

在嵌入式SQL中,可以使用 $SYSTEM.Security.Login() 方法以具有适当权限的用户身份登录:

必须具有 %Service_Login:Use 权限才能调用 $SYSTEM.Security.Login 方法。

DROP TABLE 不能用于通过薯信隐定义持久类创建的表,除非表类定义包括 [DdlAllowed] 。否则,操作将失败,并出现 SQLCODE-300 错误,同时未为类 ‘Schema.tablename’启用%msg DDL 。

删除表不会删除该表的对象权限。例如,授予用户在该表上插入、更新或删除数据的权限。

由于这些原因,通常建议在删除表之前使用REVOKE命令撤消表中的对象权限。

默认情况下, DROP TABLE 删除表定义和表数据。此表数据删除是原子操作;如果 DROP TABLE 遇到无法删除的数据(例如,具有引用约束的行),则任何已执行的数据删除都会自动回滚,结果是不会删除表数据。

可以使用 $SYSTEM.SQL.Util.SetOption() 方法 DDLDropTabDelData 选项设置表数据删除的系统范围默认值。要确定当前设置,请调用 $SYSTEM.SQL.CurrentSettings() ,显示 Does DDL DROP TABLE delete the table's data? setting .

默认值为 1 (“是”)。这是此选项的推荐设置。如果希望 DROP TABLE 在删除表定义时不删除表数据,请将此选项设置为0(“否”)。

可以在每个表的基础上覆盖数据删除。删除表时,可以使用 %NODELDATA 选项指定 DROP TABLE ,以坦搜防止自动删除表数据。如果系统范围的默认值设置为不删除表数据,则可以通过使用 %DELDATA 选项指定 DROP TABLE 来逐个表删除数据。

在大多数情况下, DROP TABLE 使用高效的终止范围操作自动删除表的数据。以下情况阻止使用 KILL EXTEND :表有引用它的外键;投影表的类是持久类的子类;类不使用默认存储;有 ForEach = "row/object "触发器;有引用非默认流字段全局位置的流字段。如果其中任何一个适用, DROP TABLE 将使用效率较低的 DELETE RECORD 操作删除表的数据。

可数厅以使用 TRUNCATE TABLE 命令删除表的数据,而不删除表定义。

DROP TABLE 语句获取表的独占表级锁。这可以防止其他进程在表删除过程中修改表定义或表数据。这个表级锁足以删除表定义和表数据; DROP TABLE 不会获得表数据的每一行的锁。此锁在 DROP TABLE 操作结束时自动释放。

默认情况下,如果在引用尝试删除的表的另一个表上定义了任何外键约束,则不能删除该表。在删除它们引用的表之前,必须删除所有引用的外键约束。在尝试 DROP TABLE 操作之前未删除这些外键约束会导致 SQLCODE-320 错误。

此默认行为与限制关键字选项一致。外键约束不支持 CASCADE 关键字选项。

要更改此默认外键约束行为,请参考 SET OPTION 命令的 COMPILEMODE=NOCHECK 选项。

删除表会自动清除所有相关的高速缓存查询,并清除 %SYS.PTools.StatsSQL 生成的查询信息。删除表会自动清除任何相关查询的所有SQL运行时统计信息(SQL Stats)信息。

要确定当前命名空间中是否存在指定表,请使用 $SYSTEM.SQL.Schema.TableExists() 方法。

默认情况下,如果尝试删除不存在的表, DROP TABLE 会发出 SQLCODE-30 错误。这是推荐的设置。要确定当前设置,请调用 $SYSTEM.SQL.CurrentSettings() ,它显示允许DDL删除不存在的表或视图设置。默认值为 0 (“否”)。如果此选项设置为 1 (“是”),则不存在的表的 DROP TABLE 不执行任何操作,也不会发出错误消息。

在管理门户、系统管理、配置、SQL和对象设置中,通过选中忽略冗余DDL语句复选框,可以在系统范围内设置此选项(以及其他类似的创建、更改和删除选项)。

下面的嵌入式SQL示例创建名为 SQLUser.MyEmployees 的表,然后将其删除。此示例指定在删除该表时不删除与该表关联的任何数据:

举例说明在SQL中,DELETE语句与DROP TABLE的区别

区别一、语法不同:

1、DROP TABLE语法

DROP TABLE table_name

2、DELETE语法

DELETE FROM 表名称 WHERE 列名称 = 值

区别二、参数不同

1、table_name;是要删除的表名。

2、DELETE ;用于删除表中的行。

区别三、注释不同

1、DROP TABLE不能用于除去由FOREIGN KEY约束引用的表。必须先除去引用的FOREIGN KEY约束或引用的表。

表所有者可以除去任何数据库内的表。除去粗饥表时,表上的规则或默认值将解除绑定,任何与表关联的约束或触发器将自动除去。如果重新创建表,必须重新绑定适当的规则和默认值,重新创建任何触发器并添加必要的约束。

在系统表上不能使用DROP TABLE语句。

如果删除表内的所有行(DELETE tablename)或使用TRUNCATE TABLE语句,则表将一直存在到被除去。

2、DELETE删除所有行;可以在不删除表的情况下删除顷羡所有的行。这意味着表的结构、属性和索引都是完整的:

DELETE FROM table_name或者:DELETE * FROM table_name。

区别四、使用用法不同

1、drop主要用于删除结构

例如删除数据库:dropdatabaseXX,删除表droptableXX。字段也是结构的一种,也可以使用drop了;对的,但是改变了表结构要先alter方法。例如,要删除student表上的age字段的信息,可以这样写:altertablestudentdropage

2、delete主要用于删除数据

举个例子,要删除student表上名字为‘张三’的所有信息:delete*fromstudentwherename=‘张三’。这种情况下用delete,由此可见delete常用于删除数据。岩乎返

sql一次性drop多张表

1 可以一次性drop多张表

2 在SQL中,可以使用一个DROP语句一次性删除多个表。

语法为:DROP TABLE table_name1, table_name2, ...;

3 除了DROP语句芹颂燃外,还有其他一些SQL语句可以嫌虚一次性操作多个表,例如ALTER TABLE和CREATE TABLE等。

但需要注意的是,一次性操作多樱老个表可能会增加程序的复杂度和出错率,因此在使用时需要谨慎。

[img]

关于sqldroptable和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表